diff --git a/CleanSpec.mk b/CleanSpec.mk
index c274a6c..be13c30 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -51,6 +51,7 @@
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libjni_latinime_intermediates)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libjni_latinime_intermediates)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libjni_latinime_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libjni_latinime_intermediates)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/dictionaries/cs_wordlist.combined.gz b/dictionaries/cs_wordlist.combined.gz
index 7829d65..94ba863 100644
--- a/dictionaries/cs_wordlist.combined.gz
+++ b/dictionaries/cs_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/da_wordlist.combined.gz b/dictionaries/da_wordlist.combined.gz
index e714019..b4baf62 100644
--- a/dictionaries/da_wordlist.combined.gz
+++ b/dictionaries/da_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/de_wordlist.combined.gz b/dictionaries/de_wordlist.combined.gz
index 6a4bd44..400718d 100644
--- a/dictionaries/de_wordlist.combined.gz
+++ b/dictionaries/de_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/el_wordlist.combined.gz b/dictionaries/el_wordlist.combined.gz
index 74effa3..599734c 100644
--- a/dictionaries/el_wordlist.combined.gz
+++ b/dictionaries/el_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_GB_wordlist.combined.gz b/dictionaries/en_GB_wordlist.combined.gz
index 50647b8..bf637e9 100644
--- a/dictionaries/en_GB_wordlist.combined.gz
+++ b/dictionaries/en_GB_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_US_wordlist.combined.gz b/dictionaries/en_US_wordlist.combined.gz
index 19f9ab4..9ea04b1 100644
--- a/dictionaries/en_US_wordlist.combined.gz
+++ b/dictionaries/en_US_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/en_emoji.combined.gz b/dictionaries/en_emoji.combined.gz
index 0fc009d..4d9cf1b 100644
--- a/dictionaries/en_emoji.combined.gz
+++ b/dictionaries/en_emoji.combined.gz
Binary files differ
diff --git a/dictionaries/en_wordlist.combined.gz b/dictionaries/en_wordlist.combined.gz
index 874a5de..87a8633 100644
--- a/dictionaries/en_wordlist.combined.gz
+++ b/dictionaries/en_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/es_wordlist.combined.gz b/dictionaries/es_wordlist.combined.gz
index 0a48b6d..8bb2102 100644
--- a/dictionaries/es_wordlist.combined.gz
+++ b/dictionaries/es_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/fi_wordlist.combined.gz b/dictionaries/fi_wordlist.combined.gz
index eefbfe5..b7332ad 100644
--- a/dictionaries/fi_wordlist.combined.gz
+++ b/dictionaries/fi_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/fr_emoji.combined.gz b/dictionaries/fr_emoji.combined.gz
index f292977..5c9c7a0 100644
--- a/dictionaries/fr_emoji.combined.gz
+++ b/dictionaries/fr_emoji.combined.gz
Binary files differ
diff --git a/dictionaries/fr_wordlist.combined.gz b/dictionaries/fr_wordlist.combined.gz
index 49dfd79..1b9fd73 100644
--- a/dictionaries/fr_wordlist.combined.gz
+++ b/dictionaries/fr_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/hr_wordlist.combined.gz b/dictionaries/hr_wordlist.combined.gz
index 864f676..9a2086f 100644
--- a/dictionaries/hr_wordlist.combined.gz
+++ b/dictionaries/hr_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/it_wordlist.combined.gz b/dictionaries/it_wordlist.combined.gz
index dfb1752..5a5cbdc 100644
--- a/dictionaries/it_wordlist.combined.gz
+++ b/dictionaries/it_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/iw_wordlist.combined.gz b/dictionaries/iw_wordlist.combined.gz
index 36b0478..13eab9f 100644
--- a/dictionaries/iw_wordlist.combined.gz
+++ b/dictionaries/iw_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/lt_wordlist.combined.gz b/dictionaries/lt_wordlist.combined.gz
index 029722d..961266b 100644
--- a/dictionaries/lt_wordlist.combined.gz
+++ b/dictionaries/lt_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/lv_wordlist.combined.gz b/dictionaries/lv_wordlist.combined.gz
index 41e1c28..ae906a9 100644
--- a/dictionaries/lv_wordlist.combined.gz
+++ b/dictionaries/lv_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/nb_wordlist.combined.gz b/dictionaries/nb_wordlist.combined.gz
index b699912..1c0f2cf 100644
--- a/dictionaries/nb_wordlist.combined.gz
+++ b/dictionaries/nb_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/nl_wordlist.combined.gz b/dictionaries/nl_wordlist.combined.gz
index 89c2388..37ba8ab 100644
--- a/dictionaries/nl_wordlist.combined.gz
+++ b/dictionaries/nl_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/pl_wordlist.combined.gz b/dictionaries/pl_wordlist.combined.gz
index 2b53f69..ba71a55 100644
--- a/dictionaries/pl_wordlist.combined.gz
+++ b/dictionaries/pl_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/pt_BR_wordlist.combined.gz b/dictionaries/pt_BR_wordlist.combined.gz
index 2d22447..02df1c1 100644
--- a/dictionaries/pt_BR_wordlist.combined.gz
+++ b/dictionaries/pt_BR_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/pt_PT_wordlist.combined.gz b/dictionaries/pt_PT_wordlist.combined.gz
index 1504165..bcd50ab 100644
--- a/dictionaries/pt_PT_wordlist.combined.gz
+++ b/dictionaries/pt_PT_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/ru_wordlist.combined.gz b/dictionaries/ru_wordlist.combined.gz
index 572314d..acde9bc 100644
--- a/dictionaries/ru_wordlist.combined.gz
+++ b/dictionaries/ru_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/sl_wordlist.combined.gz b/dictionaries/sl_wordlist.combined.gz
index 55e1bb1..a7240fe 100644
--- a/dictionaries/sl_wordlist.combined.gz
+++ b/dictionaries/sl_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/sr_wordlist.combined.gz b/dictionaries/sr_wordlist.combined.gz
index 8488a08..30ce996 100644
--- a/dictionaries/sr_wordlist.combined.gz
+++ b/dictionaries/sr_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/sv_wordlist.combined.gz b/dictionaries/sv_wordlist.combined.gz
index 6342520..b6ebab3 100644
--- a/dictionaries/sv_wordlist.combined.gz
+++ b/dictionaries/sv_wordlist.combined.gz
Binary files differ
diff --git a/dictionaries/tr_wordlist.combined.gz b/dictionaries/tr_wordlist.combined.gz
index 0251778..306cea1 100644
--- a/dictionaries/tr_wordlist.combined.gz
+++ b/dictionaries/tr_wordlist.combined.gz
Binary files differ
diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 031d62e..f37f6cc 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -18,7 +18,7 @@
         coreApp="true"
         package="com.android.inputmethod.latin">
 
-    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
@@ -32,9 +32,10 @@
     <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
 
     <application android:label="@string/english_ime_name"
-            android:icon="@mipmap/ic_launcher_keyboard"
+            android:icon="@drawable/ic_launcher_keyboard"
             android:killAfterRestore="false"
-            android:supportsRtl="true">
+            android:supportsRtl="true"
+            android:allowBackup="true">
 
         <service android:name="LatinIME"
                 android:label="@string/english_ime_name"
@@ -56,8 +57,9 @@
         </service>
 
         <activity android:name=".setup.SetupActivity"
+                android:theme="@style/platformActivityTheme"
                 android:label="@string/english_ime_name"
-                android:icon="@mipmap/ic_launcher_keyboard"
+                android:icon="@drawable/ic_launcher_keyboard"
                 android:launchMode="singleTask"
                 android:noHistory="true">
             <intent-filter>
@@ -67,6 +69,7 @@
         </activity>
 
         <activity android:name=".setup.SetupWizardActivity"
+                android:theme="@style/platformActivityTheme"
                 android:label="@string/english_ime_name"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
@@ -74,7 +77,7 @@
             </intent-filter>
         </activity>
 
-        <receiver android:name=".setup.LauncherIconVisibilityManager">
+        <receiver android:name="SystemBroadcastReceiver">
             <intent-filter>
                 <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
@@ -83,6 +86,7 @@
         </receiver>
 
         <activity android:name=".settings.SettingsActivity"
+                android:theme="@style/platformSettingsTheme"
                 android:label="@string/english_ime_settings"
                 android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
@@ -91,32 +95,27 @@
         </activity>
 
         <activity android:name=".spellcheck.SpellCheckerSettingsActivity"
+                  android:theme="@style/platformSettingsTheme"
                   android:label="@string/android_spell_checker_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
             </intent-filter>
         </activity>
 
-        <activity android:name=".settings.DebugSettingsActivity"
-                android:label="@string/english_ime_debug_settings">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
         <receiver android:name="SuggestionSpanPickedNotificationReceiver" android:enabled="true">
             <intent-filter>
                 <action android:name="android.text.style.SUGGESTION_PICKED" />
             </intent-filter>
         </receiver>
 
-        <receiver android:name=".personalization.DictionaryDecayBroadcastReciever">
+        <receiver android:name=".personalization.DictionaryDecayBroadcastReciever"
+            android:exported="false">
             <intent-filter>
                 <action android:name="com.android.inputmethod.latin.personalization.DICT_DECAY" />
             </intent-filter>
         </receiver>
 
-        <receiver android:name=".DictionaryPackInstallBroadcastReceiver">
+        <receiver android:name=".DictionaryPackInstallBroadcastReceiver" android:exported="false">
             <intent-filter>
                 <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT" />
             </intent-filter>
@@ -143,8 +142,8 @@
         </receiver>
 
         <activity android:name="com.android.inputmethod.dictionarypack.DictionarySettingsActivity"
+                android:theme="@style/platformSettingsTheme"
                 android:label="@string/dictionary_settings_title"
-                android:theme="@android:style/Theme.Holo"
                 android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
@@ -152,8 +151,8 @@
         </activity>
 
         <activity android:name="com.android.inputmethod.dictionarypack.DownloadOverMeteredDialog"
-                android:label="@string/dictionary_install_over_metered_network_prompt"
-                android:theme="@android:style/Theme.Holo">
+                android:theme="@style/platformActivityTheme"
+                android:label="@string/dictionary_install_over_metered_network_prompt">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
             </intent-filter>
diff --git a/java/proguard.flags b/java/proguard.flags
index c08a968..35b3ac3 100644
--- a/java/proguard.flags
+++ b/java/proguard.flags
@@ -14,3 +14,11 @@
 -keepclassmembers class * {
     native <methods>;
 }
+
+# Keep classes that are used as a parameter type of methods that are also marked as keep
+# to preserve changing those methods' signature.
+-keep class com.android.inputmethod.latin.AssetFileAddress
+-keep class com.android.inputmethod.latin.Dictionary
+-keep class com.android.inputmethod.latin.PrevWordsInfo
+-keep class com.android.inputmethod.latin.makedict.ProbabilityInfo
+-keep class com.android.inputmethod.latin.utils.LanguageModelParam
diff --git a/java/res/color/emoji_tab_label_color_gb.xml b/java/res/color/emoji_tab_label_color_gb.xml
deleted file mode 100644
index e1d2f71..0000000
--- a/java/res/color/emoji_tab_label_color_gb.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:color="@color/key_text_color_gb" />
-    <item
-        android:state_pressed="true"
-        android:color="@color/key_text_color_gb" />
-    <item
-        android:state_selected="true"
-        android:color="@color/key_text_color_gb" />
-    <item
-        android:color="@color/key_text_inactivated_color_gb" />
-</selector>
diff --git a/java/res/color/emoji_tab_label_color_holo.xml b/java/res/color/emoji_tab_label_color_holo.xml
deleted file mode 100644
index 373e931..0000000
--- a/java/res/color/emoji_tab_label_color_holo.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:color="@color/key_text_color_holo" />
-    <item
-        android:state_pressed="true"
-        android:color="@color/key_text_color_holo" />
-    <item
-        android:state_selected="true"
-        android:color="@color/key_text_color_holo" />
-    <item
-        android:color="@color/key_text_inactivated_color_holo" />
-</selector>
diff --git a/java/res/color/key_text_color_holo.xml b/java/res/color/key_text_color_holo.xml
deleted file mode 100644
index d034a94..0000000
--- a/java/res/color/key_text_color_holo.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_single="true" android:state_pressed="true"
-          android:color="@color/key_text_color_functional_holo" />
-    <item android:state_single="true"
-          android:color="@color/key_text_color_functional_holo" />
-
-    <!-- Action keys. -->
-    <item android:state_active="true" android:state_pressed="true"
-          android:color="@color/key_text_color_normal_holo" />
-    <item android:state_active="true"
-          android:color="@color/key_text_color_normal_holo" />
-
-    <!-- Toggle keys. Use checkable/checked state. -->
-    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
-          android:color="@color/key_text_color_normal_holo" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:color="@color/key_text_color_normal_holo" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:color="@color/key_text_color_normal_holo" />
-    <item android:state_checkable="true"
-          android:color="@color/key_text_color_normal_holo" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true"
-          android:color="@color/key_text_color_normal_holo" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:color="@color/key_text_color_normal_holo" />
-    <item android:color="@color/key_text_color_normal_holo" />
-</selector>
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png
new file mode 100644
index 0000000..bbdc411
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_light.9.png
new file mode 100644
index 0000000..854c849
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_active_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
new file mode 100644
index 0000000..33f7d80
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
new file mode 100644
index 0000000..7a7e982
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
deleted file mode 100644
index bc130ca..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index fa2cb85..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 4309989..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index 2d1acf2..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
deleted file mode 100644
index af5ea6b..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 3e25a98..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
deleted file mode 100644
index fc7ba2a..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
deleted file mode 100644
index 005c4e4..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
deleted file mode 100644
index 9a07acd..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
deleted file mode 100644
index be420a7..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
deleted file mode 100644
index 3e25180..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-hdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-hdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
deleted file mode 100644
index bad360f..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
new file mode 100644
index 0000000..5014c94
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_light.9.png
new file mode 100644
index 0000000..79594c8
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
deleted file mode 100644
index 49f5198..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
new file mode 100644
index 0000000..b1f5435
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_light.9.png
new file mode 100644
index 0000000..f0a89c5
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
new file mode 100644
index 0000000..31cd379
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
new file mode 100644
index 0000000..b8717e6
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
deleted file mode 100644
index e784edd..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
deleted file mode 100644
index a4731cf..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
new file mode 100644
index 0000000..be0812f
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
new file mode 100644
index 0000000..4209ef9
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
deleted file mode 100644
index 03e163c..0000000
--- a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-hdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
new file mode 100644
index 0000000..a36ca32
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
new file mode 100644
index 0000000..c6a474a
--- /dev/null
+++ b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_suggestion_pressed.9.png b/java/res/drawable-hdpi/btn_suggestion_pressed.9.png
deleted file mode 100644
index 7acceae..0000000
--- a/java/res/drawable-hdpi/btn_suggestion_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..9138cef
--- /dev/null
+++ b/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..345d05e
--- /dev/null
+++ b/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/tab_unselected.9.png b/java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-hdpi/tab_unselected.9.png
rename to java/res/drawable-hdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..1c937c9
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_lxx_dark.png
new file mode 100644
index 0000000..d24060c
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_lxx_light.png
new file mode 100644
index 0000000..98ab993
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..3508d24
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_lxx_dark.png
new file mode 100644
index 0000000..abbd973
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_lxx_light.png
new file mode 100644
index 0000000..89eac64
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_lxx_dark.png
new file mode 100644
index 0000000..7daf029
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_nature_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_nature_activated_lxx_light.png
new file mode 100644
index 0000000..1c24320
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_nature_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_lxx_dark.png
new file mode 100644
index 0000000..5e9e796
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_nature_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_nature_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_nature_normal_lxx_light.png
new file mode 100644
index 0000000..a567fdb
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_nature_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_lxx_dark.png
new file mode 100644
index 0000000..04d64f3
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_objects_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_objects_activated_lxx_light.png
new file mode 100644
index 0000000..01d68d5
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_objects_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_lxx_dark.png
new file mode 100644
index 0000000..a9d79f1
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_objects_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_objects_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_objects_normal_lxx_light.png
new file mode 100644
index 0000000..a040f0d
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_objects_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_light_activated.png b/java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_people_activated_lxx_dark.png
new file mode 100644
index 0000000..47e673a
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_people_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_people_activated_lxx_light.png
new file mode 100644
index 0000000..ad933ca
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_people_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_light_normal.png b/java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_people_normal_lxx_dark.png
new file mode 100644
index 0000000..a894c60
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_people_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_people_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_people_normal_lxx_light.png
new file mode 100644
index 0000000..2d8bdf8
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_people_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_light_activated.png b/java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_places_activated_lxx_dark.png
new file mode 100644
index 0000000..c9b81e1
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_places_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_places_activated_lxx_light.png
new file mode 100644
index 0000000..1c031c0
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_places_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_light_normal.png b/java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_places_normal_lxx_dark.png
new file mode 100644
index 0000000..36fbf91
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_places_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_places_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_places_normal_lxx_light.png
new file mode 100644
index 0000000..3bd317c
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_places_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_activated_lxx_dark.png
new file mode 100644
index 0000000..43d3f30
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_recents_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_recents_activated_lxx_light.png
new file mode 100644
index 0000000..3a6b3ac
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_recents_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_normal_lxx_dark.png
new file mode 100644
index 0000000..a07f606
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_recents_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recents_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_recents_normal_lxx_light.png
new file mode 100644
index 0000000..d86c1b9
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_recents_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-hdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_activated_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_lxx_dark.png
new file mode 100644
index 0000000..1c01e90
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_symbols_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_activated_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_symbols_activated_lxx_light.png
new file mode 100644
index 0000000..e57ad36
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_symbols_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-hdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_normal_lxx_dark.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_lxx_dark.png
new file mode 100644
index 0000000..1218d48
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_symbols_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_symbols_normal_lxx_light.png b/java/res/drawable-hdpi/ic_emoji_symbols_normal_lxx_light.png
new file mode 100644
index 0000000..35fc594
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_symbols_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_launcher_keyboard.png b/java/res/drawable-hdpi/ic_launcher_keyboard.png
new file mode 100644
index 0000000..7ae00ed
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_launcher_keyboard.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_subtype_mic_dark.png b/java/res/drawable-hdpi/ic_subtype_mic_dark.png
deleted file mode 100644
index eacbcd2..0000000
--- a/java/res/drawable-hdpi/ic_subtype_mic_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_background_gb.9.png b/java/res/drawable-hdpi/keyboard_background_gb.9.png
deleted file mode 100644
index fa3d449..0000000
--- a/java/res/drawable-hdpi/keyboard_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
index 50ed568..be39415 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..306e455
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_light.9.png
new file mode 100644
index 0000000..867f551
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..b3e6ee7
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_light.9.png
new file mode 100644
index 0000000..827f80f
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png
deleted file mode 100644
index baff809..0000000
--- a/java/res/drawable-hdpi/keyboard_popup_panel_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png
new file mode 100644
index 0000000..33d8087
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_light.9.png
new file mode 100644
index 0000000..9b6f1bd
--- /dev/null
+++ b/java/res/drawable-hdpi/keyboard_popup_panel_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png
deleted file mode 100644
index 7cab5a8..0000000
--- a/java/res/drawable-hdpi/keyboard_suggest_strip_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/suggestions_strip_divider.png b/java/res/drawable-hdpi/suggestions_strip_divider_holo.png
similarity index 100%
rename from java/res/drawable-hdpi/suggestions_strip_divider.png
rename to java/res/drawable-hdpi/suggestions_strip_divider_holo.png
Binary files differ
diff --git a/java/res/drawable-hdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_dark.png
new file mode 100644
index 0000000..e94f0b5
--- /dev/null
+++ b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_light.png
new file mode 100644
index 0000000..9b0f20d
--- /dev/null
+++ b/java/res/drawable-hdpi/suggestions_strip_divider_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..e0f99ca
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_light.png
new file mode 100644
index 0000000..120d066
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_delete_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_done_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_done_lxx_dark.png
new file mode 100644
index 0000000..f81130d
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_done_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_done_lxx_light.png
new file mode 100644
index 0000000..04eab59
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_done_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
deleted file mode 100644
index d75fcac..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_feedback_tab.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_go_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_go_lxx_dark.png
new file mode 100644
index 0000000..516a7f1
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_go_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_go_lxx_light.png
new file mode 100644
index 0000000..189d609
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_go_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..19c8b88
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_light.png
new file mode 100644
index 0000000..6f8c177
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_language_switch_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index 3c54694..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_next_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_next_lxx_dark.png
new file mode 100644
index 0000000..77f63ef
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_next_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_next_lxx_light.png
new file mode 100644
index 0000000..c27d0c6
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_next_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_previous_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..fa7034b
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_light.png
new file mode 100644
index 0000000..32ef358
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_previous_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..6ab33a7
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_return_lxx_light.png
new file mode 100644
index 0000000..9ab1a3f
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_return_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_search_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_search_lxx_dark.png
new file mode 100644
index 0000000..de117d3
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_search_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_search_lxx_light.png
new file mode 100644
index 0000000..ec70627
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_search_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_send_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_send_lxx_dark.png
new file mode 100644
index 0000000..52feef0
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_send_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_send_lxx_light.png
new file mode 100644
index 0000000..bbc5094
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_send_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
index 5af09ad..2ea4a74 100644
--- a/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
+++ b/java/res/drawable-hdpi/sym_keyboard_settings_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png
new file mode 100644
index 0000000..f17a773
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_light.png
new file mode 100644
index 0000000..4230aa1
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_settings_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..ef6b19e
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_light.png
new file mode 100644
index 0000000..657f65a
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..a9f6f56
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_light.png
new file mode 100644
index 0000000..acedd4b
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..2cfe1d4
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_light.png
new file mode 100644
index 0000000..2cfe1d4
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_smiley_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space.png b/java/res/drawable-hdpi/sym_keyboard_space.png
index 780733e..78cd6b7 100644
--- a/java/res/drawable-hdpi/sym_keyboard_space.png
+++ b/java/res/drawable-hdpi/sym_keyboard_space.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png b/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png
deleted file mode 100644
index c76f64b..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_space_led_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_space_led_holo.9.png b/java/res/drawable-hdpi/sym_keyboard_space_led_holo.9.png
deleted file mode 100644
index 34a1ebd..0000000
--- a/java/res/drawable-hdpi/sym_keyboard_space_led_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png
new file mode 100644
index 0000000..3231166
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_light.9.png
new file mode 100644
index 0000000..1256b8b
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_spacebar_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_tab_lxx_dark.png
new file mode 100644
index 0000000..eff70da
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_tab_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_tab_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_tab_lxx_light.png
new file mode 100644
index 0000000..a0c445e
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_tab_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..faf2276
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_light.png
new file mode 100644
index 0000000..26cbe56
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..ba733cf
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_light.png
new file mode 100644
index 0000000..fb8f5aa
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_voice_off_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwj_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_zwj_lxx_dark.png
new file mode 100644
index 0000000..a8424f0
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_zwj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwj_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_zwj_lxx_light.png
new file mode 100644
index 0000000..26b8317
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_zwj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwnj_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_zwnj_lxx_dark.png
new file mode 100644
index 0000000..9816ef5
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_zwnj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_zwnj_lxx_light.png b/java/res/drawable-hdpi/sym_keyboard_zwnj_lxx_light.png
new file mode 100644
index 0000000..0a5f927
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_zwnj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-hdpi/tab_selected.9.png b/java/res/drawable-hdpi/tab_selected.9.png
deleted file mode 100644
index 84e63df..0000000
--- a/java/res/drawable-hdpi/tab_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png
new file mode 100644
index 0000000..787ce45
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_light.9.png
new file mode 100644
index 0000000..e7a585b
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_active_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
new file mode 100644
index 0000000..7e34c6c
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
new file mode 100644
index 0000000..5a65133
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
deleted file mode 100644
index 49329f0..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index 8e9a349..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 46e9db0..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index ee60e48..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
deleted file mode 100644
index c6876f7..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 1f8f318..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
deleted file mode 100644
index 2bb7b64..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
deleted file mode 100644
index f5ce40c..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png
deleted file mode 100644
index ca73b92..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
deleted file mode 100644
index 73f2006..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png
deleted file mode 100644
index 12bc979..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-mdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-mdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
deleted file mode 100644
index 44bd414..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
new file mode 100644
index 0000000..bdf2e49
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_light.9.png
new file mode 100644
index 0000000..80cf6fa
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
deleted file mode 100644
index 43fdf5b..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
new file mode 100644
index 0000000..5b23e22
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_light.9.png
new file mode 100644
index 0000000..3323d2c
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
new file mode 100644
index 0000000..81c1d71
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
new file mode 100644
index 0000000..8fff67b
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
deleted file mode 100644
index 1c1f3d7..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
deleted file mode 100644
index dacb675..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
new file mode 100644
index 0000000..ca17d52
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
new file mode 100644
index 0000000..19aabf8
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
deleted file mode 100644
index 3daa69f..0000000
--- a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-mdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
new file mode 100644
index 0000000..1c2c101
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
new file mode 100644
index 0000000..edbaa83
--- /dev/null
+++ b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_suggestion_pressed.9.png b/java/res/drawable-mdpi/btn_suggestion_pressed.9.png
deleted file mode 100644
index 02b4e9a..0000000
--- a/java/res/drawable-mdpi/btn_suggestion_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..1731b46
--- /dev/null
+++ b/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..6354b99
--- /dev/null
+++ b/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/tab_unselected.9.png b/java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-mdpi/tab_unselected.9.png
rename to java/res/drawable-mdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..c7394e1
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_lxx_dark.png
new file mode 100644
index 0000000..6225b61
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_lxx_light.png
new file mode 100644
index 0000000..d089e6e
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..eb4dab4
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_lxx_dark.png
new file mode 100644
index 0000000..324e5e2
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_lxx_light.png
new file mode 100644
index 0000000..c2a5046
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_lxx_dark.png
new file mode 100644
index 0000000..848d0ce
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_nature_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_nature_activated_lxx_light.png
new file mode 100644
index 0000000..2e1674b
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_nature_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_lxx_dark.png
new file mode 100644
index 0000000..18d20be
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_nature_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_nature_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_nature_normal_lxx_light.png
new file mode 100644
index 0000000..7cf36c4
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_nature_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_lxx_dark.png
new file mode 100644
index 0000000..4006697
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_objects_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_objects_activated_lxx_light.png
new file mode 100644
index 0000000..d6ba913
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_objects_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_lxx_dark.png
new file mode 100644
index 0000000..ceeaa19
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_objects_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_objects_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_objects_normal_lxx_light.png
new file mode 100644
index 0000000..5eb839b
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_objects_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_light_activated.png b/java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_people_activated_lxx_dark.png
new file mode 100644
index 0000000..952b570
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_people_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_people_activated_lxx_light.png
new file mode 100644
index 0000000..d0d72db
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_people_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_light_normal.png b/java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_people_normal_lxx_dark.png
new file mode 100644
index 0000000..1f46b9b
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_people_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_people_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_people_normal_lxx_light.png
new file mode 100644
index 0000000..8b7c1a3
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_people_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_light_activated.png b/java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_places_activated_lxx_dark.png
new file mode 100644
index 0000000..fadb751
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_places_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_places_activated_lxx_light.png
new file mode 100644
index 0000000..5c0e40d
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_places_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_light_normal.png b/java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_places_normal_lxx_dark.png
new file mode 100644
index 0000000..5eed3d9
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_places_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_places_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_places_normal_lxx_light.png
new file mode 100644
index 0000000..fff7998
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_places_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_activated_lxx_dark.png
new file mode 100644
index 0000000..e6c8dc0
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_recents_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_recents_activated_lxx_light.png
new file mode 100644
index 0000000..25ac3f5
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_recents_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_normal_lxx_dark.png
new file mode 100644
index 0000000..e660891
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_recents_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recents_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_recents_normal_lxx_light.png
new file mode 100644
index 0000000..614d081
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_recents_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-mdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_activated_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_lxx_dark.png
new file mode 100644
index 0000000..5b71c5d
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_symbols_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_activated_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_symbols_activated_lxx_light.png
new file mode 100644
index 0000000..7249879
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_symbols_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-mdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_normal_lxx_dark.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_lxx_dark.png
new file mode 100644
index 0000000..f6db5e0
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_symbols_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_symbols_normal_lxx_light.png b/java/res/drawable-mdpi/ic_emoji_symbols_normal_lxx_light.png
new file mode 100644
index 0000000..5d7e9bf
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_symbols_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_launcher_keyboard.png b/java/res/drawable-mdpi/ic_launcher_keyboard.png
new file mode 100644
index 0000000..cc73f3b
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_launcher_keyboard.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_background_gb.9.png b/java/res/drawable-mdpi/keyboard_background_gb.9.png
deleted file mode 100644
index 4f81704..0000000
--- a/java/res/drawable-mdpi/keyboard_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
index 564f546..625490b 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..4f6731f
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_light.9.png
new file mode 100644
index 0000000..14da5f9
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..9bca991
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_light.9.png
new file mode 100644
index 0000000..14f4b5f
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png
deleted file mode 100644
index 0d9ab97..0000000
--- a/java/res/drawable-mdpi/keyboard_popup_panel_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png
new file mode 100644
index 0000000..71f16b0
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_light.9.png
new file mode 100644
index 0000000..323aefb
--- /dev/null
+++ b/java/res/drawable-mdpi/keyboard_popup_panel_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png
deleted file mode 100644
index fa6c0fe..0000000
--- a/java/res/drawable-mdpi/keyboard_suggest_strip_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/more_keys_divider.png b/java/res/drawable-mdpi/more_keys_divider.png
index a46284f..0f71c61 100644
--- a/java/res/drawable-mdpi/more_keys_divider.png
+++ b/java/res/drawable-mdpi/more_keys_divider.png
Binary files differ
diff --git a/java/res/drawable-mdpi/more_suggestions_divider.png b/java/res/drawable-mdpi/more_suggestions_divider.png
index a46284f..0f71c61 100644
--- a/java/res/drawable-mdpi/more_suggestions_divider.png
+++ b/java/res/drawable-mdpi/more_suggestions_divider.png
Binary files differ
diff --git a/java/res/drawable-mdpi/suggestions_strip_divider.png b/java/res/drawable-mdpi/suggestions_strip_divider_holo.png
similarity index 100%
rename from java/res/drawable-mdpi/suggestions_strip_divider.png
rename to java/res/drawable-mdpi/suggestions_strip_divider_holo.png
Binary files differ
diff --git a/java/res/drawable-mdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_dark.png
new file mode 100644
index 0000000..c06e73c
--- /dev/null
+++ b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_light.png
new file mode 100644
index 0000000..cc9d8ed
--- /dev/null
+++ b/java/res/drawable-mdpi/suggestions_strip_divider_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..cc44819
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_light.png
new file mode 100644
index 0000000..8afc817
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_delete_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_done_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_done_lxx_dark.png
new file mode 100644
index 0000000..8a63c11
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_done_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_done_lxx_light.png
new file mode 100644
index 0000000..930f971
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_done_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
deleted file mode 100644
index a10dc8f..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_feedback_tab.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_go_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_go_lxx_dark.png
new file mode 100644
index 0000000..8905172
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_go_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_go_lxx_light.png
new file mode 100644
index 0000000..f9975c3
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_go_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_label_mic_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_label_mic_holo_dark.png
deleted file mode 100644
index 537f39b..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_label_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..af60d43
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_light.png
new file mode 100644
index 0000000..a061a05
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_language_switch_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index 5e58866..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_mic_holo_light.png b/java/res/drawable-mdpi/sym_keyboard_mic_holo_light.png
deleted file mode 100644
index 84a63dc..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_mic_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_next_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_next_lxx_dark.png
new file mode 100644
index 0000000..bea9d6f
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_next_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_next_lxx_light.png
new file mode 100644
index 0000000..78773ab
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_next_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_previous_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..f02f66e
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_light.png
new file mode 100644
index 0000000..87db29b
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_previous_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..d060c89
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_return_lxx_light.png
new file mode 100644
index 0000000..bfc7d71
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_return_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_search_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_search_lxx_dark.png
new file mode 100644
index 0000000..722d402
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_search_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_search_lxx_light.png
new file mode 100644
index 0000000..05fbe83
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_search_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_send_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_send_lxx_dark.png
new file mode 100644
index 0000000..29dd9de
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_send_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_send_lxx_light.png
new file mode 100644
index 0000000..2de9b56
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_send_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
index 36c8c96..613f4dc 100644
--- a/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
+++ b/java/res/drawable-mdpi/sym_keyboard_settings_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png
new file mode 100644
index 0000000..24121de
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_light.png
new file mode 100644
index 0000000..a3546f3
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_settings_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..c700843
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_light.png
new file mode 100644
index 0000000..298cb95
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..503c384
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_light.png
new file mode 100644
index 0000000..a99b7f9
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..2258851
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_light.png
new file mode 100644
index 0000000..ff49d58
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_smiley_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space.png b/java/res/drawable-mdpi/sym_keyboard_space.png
index cbe4a88..6d03e63 100644
--- a/java/res/drawable-mdpi/sym_keyboard_space.png
+++ b/java/res/drawable-mdpi/sym_keyboard_space.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png b/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png
deleted file mode 100644
index 1c1ca2c..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_space_led_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_space_led_holo.9.png b/java/res/drawable-mdpi/sym_keyboard_space_led_holo.9.png
deleted file mode 100644
index abd8b74..0000000
--- a/java/res/drawable-mdpi/sym_keyboard_space_led_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png
new file mode 100644
index 0000000..b8e56da
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_light.9.png
new file mode 100644
index 0000000..281f830
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_spacebar_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_tab_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_tab_lxx_dark.png
new file mode 100644
index 0000000..a9cdae7
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_tab_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_tab_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_tab_lxx_light.png
new file mode 100644
index 0000000..89c687d
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_tab_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..ab7726a
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_light.png
new file mode 100644
index 0000000..3654864
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..7db32d4
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_light.png
new file mode 100644
index 0000000..bc61a69
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_voice_off_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwj_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_zwj_lxx_dark.png
new file mode 100644
index 0000000..4fbcb28
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_zwj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwj_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_zwj_lxx_light.png
new file mode 100644
index 0000000..af049b0
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_zwj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwnj_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_zwnj_lxx_dark.png
new file mode 100644
index 0000000..bcdc2a3
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_zwnj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_zwnj_lxx_light.png b/java/res/drawable-mdpi/sym_keyboard_zwnj_lxx_light.png
new file mode 100644
index 0000000..d8275bc
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_zwnj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-mdpi/tab_selected.9.png b/java/res/drawable-mdpi/tab_selected.9.png
deleted file mode 100644
index 4b00f35..0000000
--- a/java/res/drawable-mdpi/tab_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png
new file mode 100644
index 0000000..4726406
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_light.9.png
new file mode 100644
index 0000000..dca7a32
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
new file mode 100644
index 0000000..8063fcd
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
new file mode 100644
index 0000000..fa32a2c
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png
deleted file mode 100644
index d0090a3..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index a2f6ac0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
deleted file mode 100644
index 2baf7d9..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
deleted file mode 100644
index 6812f9e..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png
deleted file mode 100644
index a932249..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
deleted file mode 100644
index 16416f0..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png
deleted file mode 100644
index 3ca93fd..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png
deleted file mode 100644
index aa4f44f..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
deleted file mode 100644
index 4539255..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png
deleted file mode 100644
index 5683924..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png
deleted file mode 100644
index 026005d..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-xhdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png
deleted file mode 100644
index 38c5f24..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
new file mode 100644
index 0000000..8709e63
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_light.9.png
new file mode 100644
index 0000000..98edd37
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png
deleted file mode 100644
index f1223e5..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
new file mode 100644
index 0000000..ea002f5
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_light.9.png
new file mode 100644
index 0000000..5a95073
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
new file mode 100644
index 0000000..b1c9006
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
new file mode 100644
index 0000000..52a4ad0
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png
deleted file mode 100644
index ec35db5..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png
deleted file mode 100644
index bd30464..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
new file mode 100644
index 0000000..6ebc4e0
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
new file mode 100644
index 0000000..6392f6e
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png
deleted file mode 100644
index a3ff5d1..0000000
--- a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
new file mode 100644
index 0000000..f05f987
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
new file mode 100644
index 0000000..3e8cac2
--- /dev/null
+++ b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/btn_suggestion_pressed.9.png b/java/res/drawable-xhdpi/btn_suggestion_pressed.9.png
deleted file mode 100644
index 41e126a..0000000
--- a/java/res/drawable-xhdpi/btn_suggestion_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..11bc966
--- /dev/null
+++ b/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..5e8549b
--- /dev/null
+++ b/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/tab_unselected.9.png b/java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xhdpi/tab_unselected.9.png
rename to java/res/drawable-xhdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..997c9b7
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_lxx_dark.png
new file mode 100644
index 0000000..5ec557d
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_lxx_light.png
new file mode 100644
index 0000000..1c1017e
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..23a519c
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_lxx_dark.png
new file mode 100644
index 0000000..fc70324
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_lxx_light.png
new file mode 100644
index 0000000..8af5a16
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_lxx_dark.png
new file mode 100644
index 0000000..1e74d5b
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_nature_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_nature_activated_lxx_light.png
new file mode 100644
index 0000000..377065c
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_nature_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_lxx_dark.png
new file mode 100644
index 0000000..d687f8d
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_nature_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_nature_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_nature_normal_lxx_light.png
new file mode 100644
index 0000000..298f41d
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_nature_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_lxx_dark.png
new file mode 100644
index 0000000..182f2bf
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_objects_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_objects_activated_lxx_light.png
new file mode 100644
index 0000000..7c3a2d0
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_objects_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_lxx_dark.png
new file mode 100644
index 0000000..8a1faf4
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_objects_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_objects_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_objects_normal_lxx_light.png
new file mode 100644
index 0000000..50a1174
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_objects_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_lxx_dark.png
new file mode 100644
index 0000000..cf2aeb5
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_people_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_people_activated_lxx_light.png
new file mode 100644
index 0000000..3ecf9d0
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_people_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_lxx_dark.png
new file mode 100644
index 0000000..b0a448a
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_people_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_people_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_people_normal_lxx_light.png
new file mode 100644
index 0000000..d71bc1c
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_people_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_lxx_dark.png
new file mode 100644
index 0000000..33f4e0a
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_places_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_places_activated_lxx_light.png
new file mode 100644
index 0000000..194f493
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_places_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_lxx_dark.png
new file mode 100644
index 0000000..82d4ce6
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_places_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_places_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_places_normal_lxx_light.png
new file mode 100644
index 0000000..e1b90a9
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_places_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_activated_lxx_dark.png
new file mode 100644
index 0000000..3305737
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_recents_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_recents_activated_lxx_light.png
new file mode 100644
index 0000000..8c74847
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_recents_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_normal_lxx_dark.png
new file mode 100644
index 0000000..b9c1a659
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_recents_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recents_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_recents_normal_lxx_light.png
new file mode 100644
index 0000000..64e1c4d
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_recents_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-xhdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_activated_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_lxx_dark.png
new file mode 100644
index 0000000..35a06c5
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_activated_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_lxx_light.png
new file mode 100644
index 0000000..a64d375
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_symbols_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-xhdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_normal_lxx_dark.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_lxx_dark.png
new file mode 100644
index 0000000..ac80c79
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_symbols_normal_lxx_light.png b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_lxx_light.png
new file mode 100644
index 0000000..5d57423
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_symbols_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_launcher_keyboard.png b/java/res/drawable-xhdpi/ic_launcher_keyboard.png
new file mode 100644
index 0000000..f2ac50d
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_launcher_keyboard.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_subtype_mic_dark.png b/java/res/drawable-xhdpi/ic_subtype_mic_dark.png
deleted file mode 100644
index 17581ba..0000000
--- a/java/res/drawable-xhdpi/ic_subtype_mic_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_background_gb.9.png b/java/res/drawable-xhdpi/keyboard_background_gb.9.png
deleted file mode 100644
index 27b7a10..0000000
--- a/java/res/drawable-xhdpi/keyboard_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
index e8c65f6..c211d89 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..654ccd1
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_light.9.png
new file mode 100644
index 0000000..c566e3d
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..f5f613c
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_light.9.png
new file mode 100644
index 0000000..35aaa7d
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png
deleted file mode 100644
index 79f7ab0..0000000
--- a/java/res/drawable-xhdpi/keyboard_popup_panel_background_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png
new file mode 100644
index 0000000..cf5b5d3
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_light.9.png
new file mode 100644
index 0000000..324ee3a
--- /dev/null
+++ b/java/res/drawable-xhdpi/keyboard_popup_panel_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png b/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png
deleted file mode 100644
index 1b568df..0000000
--- a/java/res/drawable-xhdpi/keyboard_suggest_strip_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider.png b/java/res/drawable-xhdpi/suggestions_strip_divider_holo.png
similarity index 100%
rename from java/res/drawable-xhdpi/suggestions_strip_divider.png
rename to java/res/drawable-xhdpi/suggestions_strip_divider_holo.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_dark.png
new file mode 100644
index 0000000..275ec73
--- /dev/null
+++ b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_light.png
new file mode 100644
index 0000000..ee85744
--- /dev/null
+++ b/java/res/drawable-xhdpi/suggestions_strip_divider_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..3301915
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_light.png
new file mode 100644
index 0000000..a03c6b1
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_delete_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_done_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_done_lxx_dark.png
new file mode 100644
index 0000000..f25e3df
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_done_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_done_lxx_light.png
new file mode 100644
index 0000000..070fe8d
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_done_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
deleted file mode 100644
index 0650e01..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_feedback_tab.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_go_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_go_lxx_dark.png
new file mode 100644
index 0000000..6cd43cf
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_go_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_go_lxx_light.png
new file mode 100644
index 0000000..33bbe3c
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_go_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..fff13b6
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_light.png
new file mode 100644
index 0000000..c3c499b
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_language_switch_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index 566ba1f..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_next_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_next_lxx_dark.png
new file mode 100644
index 0000000..0476942
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_next_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_next_lxx_light.png
new file mode 100644
index 0000000..1733ca8
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_next_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..87f0d64
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_light.png
new file mode 100644
index 0000000..0c88c60
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_previous_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..5d6e6cb
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_light.png
new file mode 100644
index 0000000..85473bc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_return_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_search_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_search_lxx_dark.png
new file mode 100644
index 0000000..28a4bd3
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_search_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_search_lxx_light.png
new file mode 100644
index 0000000..a95d554
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_search_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_send_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_send_lxx_dark.png
new file mode 100644
index 0000000..4360a4e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_send_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_send_lxx_light.png
new file mode 100644
index 0000000..21b0ac0
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_send_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
index 99ee97d..15a9739 100644
--- a/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
+++ b/java/res/drawable-xhdpi/sym_keyboard_settings_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png
new file mode 100644
index 0000000..35e4023
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_light.png
new file mode 100644
index 0000000..73fafcc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_settings_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..e329cbc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_light.png
new file mode 100644
index 0000000..64fdb17
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..9a87d77
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_light.png
new file mode 100644
index 0000000..196046b
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..a1d4b22
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_light.png
new file mode 100644
index 0000000..df3eba7
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_smiley_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space.png b/java/res/drawable-xhdpi/sym_keyboard_space.png
index 66fc3e9..3691280 100644
--- a/java/res/drawable-xhdpi/sym_keyboard_space.png
+++ b/java/res/drawable-xhdpi/sym_keyboard_space.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png b/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png
deleted file mode 100644
index 6525fef..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_space_led_gb.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_space_led_holo.9.png b/java/res/drawable-xhdpi/sym_keyboard_space_led_holo.9.png
deleted file mode 100644
index ba4e9ec..0000000
--- a/java/res/drawable-xhdpi/sym_keyboard_space_led_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png
new file mode 100644
index 0000000..ab032dc
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_light.9.png
new file mode 100644
index 0000000..c1ed863
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_spacebar_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_tab_lxx_dark.png
new file mode 100644
index 0000000..134e1b8
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_tab_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_tab_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_tab_lxx_light.png
new file mode 100644
index 0000000..0aae982
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_tab_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..65fa6d6
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_light.png
new file mode 100644
index 0000000..1b0463b
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..ceddbac
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_light.png
new file mode 100644
index 0000000..f8fab89
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_voice_off_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwj_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_zwj_lxx_dark.png
new file mode 100644
index 0000000..d72cc32
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_zwj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwj_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_zwj_lxx_light.png
new file mode 100644
index 0000000..22bc617
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_zwj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwnj_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_zwnj_lxx_dark.png
new file mode 100644
index 0000000..044a33b
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_zwnj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_zwnj_lxx_light.png b/java/res/drawable-xhdpi/sym_keyboard_zwnj_lxx_light.png
new file mode 100644
index 0000000..bcfed2e
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_zwnj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/tab_selected.9.png b/java/res/drawable-xhdpi/tab_selected.9.png
deleted file mode 100644
index 95e5f43..0000000
--- a/java/res/drawable-xhdpi/tab_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_active_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_active_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png
new file mode 100644
index 0000000..f492397
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_light.9.png
new file mode 100644
index 0000000..1f5f922
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
new file mode 100644
index 0000000..65e455c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
new file mode 100644
index 0000000..0310143
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_active_pressed_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png
deleted file mode 100644
index 17f0a7a..0000000
--- a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
similarity index 100%
copy from java/res/drawable-xxhdpi/btn_keyboard_key_dark_active_klp.9.png
copy to java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_light_normal_holo.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_holo_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_off_holo.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
new file mode 100644
index 0000000..f2b5e4c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_light.9.png
new file mode 100644
index 0000000..265109d
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_normal_on_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
new file mode 100644
index 0000000..2166f62
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_light.9.png
new file mode 100644
index 0000000..7034621
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_normal_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
new file mode 100644
index 0000000..d1efb6e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
new file mode 100644
index 0000000..8a6583e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_popup_selected_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_ics_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_light_pressed_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_klp_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_off_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
new file mode 100644
index 0000000..b74d1ca
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
new file mode 100644
index 0000000..48ae93f
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_off_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_ics.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_ics_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/btn_keyboard_key_dark_pressed_on_klp.9.png
rename to java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_klp_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
new file mode 100644
index 0000000..0a6c2ea
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
new file mode 100644
index 0000000..65dc814
--- /dev/null
+++ b/java/res/drawable-xxhdpi/btn_keyboard_key_pressed_on_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..b13ee2b
--- /dev/null
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..c81e651
--- /dev/null
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/tab_unselected.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
similarity index 100%
rename from java/res/drawable-xxhdpi/tab_unselected.9.png
rename to java/res/drawable-xxhdpi/emoji_category_tab_unselected_holo_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..a217269
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_lxx_dark.png
new file mode 100644
index 0000000..732ed3b
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_lxx_light.png
new file mode 100644
index 0000000..fbefde4
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..dfa43cd
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_lxx_dark.png
new file mode 100644
index 0000000..dbe8eec
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_lxx_light.png
new file mode 100644
index 0000000..5dcb48d
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_nature_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_nature_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_lxx_dark.png
new file mode 100644
index 0000000..024b33a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_lxx_light.png
new file mode 100644
index 0000000..9232f9e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_nature_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_nature_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_nature_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_lxx_dark.png
new file mode 100644
index 0000000..598d3dd
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_nature_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_lxx_light.png
new file mode 100644
index 0000000..d39d146
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_nature_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_objects_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_objects_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_lxx_dark.png
new file mode 100644
index 0000000..20775e1
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_lxx_light.png
new file mode 100644
index 0000000..b893760
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_objects_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_objects_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_objects_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_lxx_dark.png
new file mode 100644
index 0000000..ec35112
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_objects_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_lxx_light.png
new file mode 100644
index 0000000..df769c5
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_objects_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_people_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_people_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_lxx_dark.png
new file mode 100644
index 0000000..9ca031a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_people_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_people_activated_lxx_light.png
new file mode 100644
index 0000000..6faad5c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_people_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_people_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_people_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_lxx_dark.png
new file mode 100644
index 0000000..ed71326
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_people_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_people_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_people_normal_lxx_light.png
new file mode 100644
index 0000000..a5516fa
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_people_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_places_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_places_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_lxx_dark.png
new file mode 100644
index 0000000..5131982
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_places_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_places_activated_lxx_light.png
new file mode 100644
index 0000000..8a4614d
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_places_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_places_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_places_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_lxx_dark.png
new file mode 100644
index 0000000..0dfbadd
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_places_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_places_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_places_normal_lxx_light.png
new file mode 100644
index 0000000..2f22dfb
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_places_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_recent_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_lxx_dark.png
new file mode 100644
index 0000000..28402b8
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_lxx_light.png
new file mode 100644
index 0000000..92da7f2
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_recent_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_lxx_dark.png
new file mode 100644
index 0000000..24561f9
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recents_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_lxx_light.png
new file mode 100644
index 0000000..96ff801
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_symbols_light_activated.png
rename to java/res/drawable-xxhdpi/ic_emoji_symbols_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_lxx_dark.png
new file mode 100644
index 0000000..73f720d
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_lxx_light.png
new file mode 100644
index 0000000..3bbec18
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_symbols_activated_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_symbols_light_normal.png
rename to java/res/drawable-xxhdpi/ic_emoji_symbols_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_lxx_dark.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_lxx_dark.png
new file mode 100644
index 0000000..938f3f3
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_lxx_light.png b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_lxx_light.png
new file mode 100644
index 0000000..b7f51eb
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_symbols_normal_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_launcher_keyboard.png b/java/res/drawable-xxhdpi/ic_launcher_keyboard.png
new file mode 100644
index 0000000..df386e8
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_launcher_keyboard.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_subtype_mic_dark.png b/java/res/drawable-xxhdpi/ic_subtype_mic_dark.png
deleted file mode 100644
index 811103a..0000000
--- a/java/res/drawable-xxhdpi/ic_subtype_mic_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
index 11eee94..fd2f9e5 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
new file mode 100644
index 0000000..f5215bc
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_light.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_light.9.png
new file mode 100644
index 0000000..b565ff0
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
index 2079e04..3ab7900 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
index c4178d9..99543a1 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
new file mode 100644
index 0000000..6d931ed
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_light.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_light.9.png
new file mode 100644
index 0000000..2c5ced9
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
index d3d8733..e9e3792 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
index d7ec8bc..6c1143a 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png
new file mode 100644
index 0000000..440b5bb
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_light.9.png b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_light.9.png
new file mode 100644
index 0000000..15915f7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/keyboard_popup_panel_background_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png
similarity index 100%
rename from java/res/drawable-xxhdpi/suggestions_strip_divider.png
rename to java/res/drawable-xxhdpi/suggestions_strip_divider_holo.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_dark.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_dark.png
new file mode 100644
index 0000000..6b414b7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_light.png b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_light.png
new file mode 100644
index 0000000..eccfff7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/suggestions_strip_divider_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png
new file mode 100644
index 0000000..1f37a02
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_light.png
new file mode 100644
index 0000000..76b3d72
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_delete_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_dark.png
new file mode 100644
index 0000000..ccd270e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_light.png
new file mode 100644
index 0000000..0347327
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_done_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_dark.png
new file mode 100644
index 0000000..0617c15
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_light.png
new file mode 100644
index 0000000..0c66a6b
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_go_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png
new file mode 100644
index 0000000..329158c
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_light.png
new file mode 100644
index 0000000..588bf6e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_language_switch_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_mic_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_mic_holo_dark.png
deleted file mode 100644
index f55af30..0000000
--- a/java/res/drawable-xxhdpi/sym_keyboard_mic_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_dark.png
new file mode 100644
index 0000000..43cde8d
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_light.png
new file mode 100644
index 0000000..392ed49
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_next_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_dark.png
new file mode 100644
index 0000000..193e34f
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_light.png
new file mode 100644
index 0000000..33e2e0b
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_previous_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png
new file mode 100644
index 0000000..8c34d11
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_light.png
new file mode 100644
index 0000000..a429d66
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_return_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_dark.png
new file mode 100644
index 0000000..a32b6c5
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_light.png
new file mode 100644
index 0000000..1b9952a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_search_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_dark.png
new file mode 100644
index 0000000..21a9e09
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_light.png
new file mode 100644
index 0000000..a886505
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_send_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
index 7041bb6..bf643e1 100644
--- a/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
+++ b/java/res/drawable-xxhdpi/sym_keyboard_settings_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png
new file mode 100644
index 0000000..a52764f
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_light.png
new file mode 100644
index 0000000..5464d4f
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_settings_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..316903e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_light.png
new file mode 100644
index 0000000..2da7b65
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..8c33ad8
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_light.png
new file mode 100644
index 0000000..b96bf10
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png
new file mode 100644
index 0000000..ea89a87
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_light.png
new file mode 100644
index 0000000..08d4f8a
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_smiley_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png
new file mode 100644
index 0000000..0339de3
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_light.9.png b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_light.9.png
new file mode 100644
index 0000000..b57cfb3
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_spacebar_lxx_light.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_tab_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_tab_lxx_dark.png
new file mode 100644
index 0000000..55de1b7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_tab_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_tab_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_tab_lxx_light.png
new file mode 100644
index 0000000..d320581
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_tab_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png
new file mode 100644
index 0000000..28ef257
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_light.png
new file mode 100644
index 0000000..1480ba9
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png
new file mode 100644
index 0000000..69591f4
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_light.png
new file mode 100644
index 0000000..61c92f0
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_voice_off_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwj_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_zwj_lxx_dark.png
new file mode 100644
index 0000000..f8bd0c7
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_zwj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwj_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_zwj_lxx_light.png
new file mode 100644
index 0000000..83411c8
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_zwj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwnj_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_zwnj_lxx_dark.png
new file mode 100644
index 0000000..b1372f6
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_zwnj_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_zwnj_lxx_light.png b/java/res/drawable-xxhdpi/sym_keyboard_zwnj_lxx_light.png
new file mode 100644
index 0000000..3aece2e
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_zwnj_lxx_light.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/tab_selected.9.png b/java/res/drawable-xxhdpi/tab_selected.9.png
deleted file mode 100644
index e5efc58..0000000
--- a/java/res/drawable-xxhdpi/tab_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable/btn_keyboard_key_functional_gb.xml b/java/res/drawable/btn_keyboard_key_functional_gb.xml
deleted file mode 100644
index 431359c..0000000
--- a/java/res/drawable/btn_keyboard_key_functional_gb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed" />
-    <item android:drawable="@drawable/btn_keyboard_key_dark_normal" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_ics.xml b/java/res/drawable/btn_keyboard_key_functional_ics.xml
index 847ca72..846bccc 100644
--- a/java/res/drawable/btn_keyboard_key_functional_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_ics.xml
@@ -17,6 +17,6 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- Functional keys. -->
     <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_ics" />
-    <item android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_klp.xml b/java/res/drawable/btn_keyboard_key_functional_klp.xml
index 0e17ed2..7b444f7 100644
--- a/java/res/drawable/btn_keyboard_key_functional_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_functional_klp.xml
@@ -17,6 +17,6 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- Functional keys. -->
     <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_klp" />
-    <item android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_dark" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml b/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
new file mode 100644
index 0000000..fd1dbb9
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_lxx_dark.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Functional keys. -->
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lxx_dark" />
+    <item android:drawable="@color/key_background_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_functional_lxx_light.xml b/java/res/drawable/btn_keyboard_key_functional_lxx_light.xml
new file mode 100644
index 0000000..e518ca1
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_functional_lxx_light.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Functional keys. -->
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lxx_light" />
+    <item android:drawable="@color/key_background_lxx_light" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_gb.xml b/java/res/drawable/btn_keyboard_key_gb.xml
deleted file mode 100644
index 3fc253e..0000000
--- a/java/res/drawable/btn_keyboard_key_gb.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_single="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed" />
-    <item android:state_single="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal" />
-
-    <!-- Action keys. -->
-    <item android:state_active="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed" />
-    <item android:state_active="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal" />
-
-    <!-- Toggle keys. Use checkable/checked state. -->
-    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_on" />
-    <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_off" />
-    <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_on" />
-    <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_off" />
-
-    <!-- Empty background keys. -->
-    <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
-
-    <!-- Normal keys. -->
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_light_pressed" />
-    <item android:drawable="@drawable/btn_keyboard_key_light_normal" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_ics.xml b/java/res/drawable/btn_keyboard_key_ics.xml
index 259bb9b..0bb098d 100644
--- a/java/res/drawable/btn_keyboard_key_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_ics.xml
@@ -15,34 +15,28 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_single="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_ics" />
-    <item android:state_single="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
-
     <!-- Action keys. -->
     <item android:state_active="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_ics" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_ics_dark" />
     <item android:state_active="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_active_ics" />
+          android:drawable="@drawable/btn_keyboard_key_active_ics_dark" />
 
     <!-- Toggle keys. Use checkable/checked state. -->
     <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_ics" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_on_ics_dark" />
     <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_ics" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_off_ics_dark" />
     <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_on_ics" />
+          android:drawable="@drawable/btn_keyboard_key_normal_on_ics_dark" />
     <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" />
+          android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
 
     <!-- Empty background keys. -->
     <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
+          android:drawable="@android:color/transparent" />
 
     <!-- Normal keys. -->
     <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_light_pressed_ics" />
-    <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_klp.xml b/java/res/drawable/btn_keyboard_key_klp.xml
index 16b5fa0..2a202a1 100644
--- a/java/res/drawable/btn_keyboard_key_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_klp.xml
@@ -15,34 +15,28 @@
 -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Functional keys. -->
-    <item android:state_single="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_klp" />
-    <item android:state_single="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
-
     <!-- Action keys. -->
     <item android:state_active="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_klp" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_klp_dark" />
     <item android:state_active="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_active_klp" />
+          android:drawable="@drawable/btn_keyboard_key_active_klp_dark" />
 
     <!-- Toggle keys. Use checkable/checked state. -->
     <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_klp" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_on_klp_dark" />
     <item android:state_checkable="true" android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_klp" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_off_klp_dark" />
     <item android:state_checkable="true" android:state_checked="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_on_klp" />
+          android:drawable="@drawable/btn_keyboard_key_normal_on_klp_dark" />
     <item android:state_checkable="true"
-          android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" />
+          android:drawable="@drawable/btn_keyboard_key_normal_off_holo_dark" />
 
     <!-- Empty background keys. -->
     <item android:state_empty="true"
-          android:drawable="@drawable/transparent" />
+          android:drawable="@android:color/transparent" />
 
     <!-- Normal keys. -->
     <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_light_pressed_klp" />
-    <item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+          android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_lxx_dark.xml b/java/res/drawable/btn_keyboard_key_lxx_dark.xml
new file mode 100644
index 0000000..bb1789a
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_lxx_dark.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Action keys. -->
+    <item android:state_active="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_active_pressed_lxx_dark" />
+    <item android:state_active="true"
+          android:drawable="@drawable/btn_keyboard_key_active_lxx_dark" />
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_on_lxx_dark" />
+    <item android:state_checkable="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_off_lxx_dark" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_on_lxx_dark" />
+    <item android:state_checkable="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_off_lxx_dark" />
+
+    <!-- Empty background keys. -->
+    <item android:state_empty="true"
+          android:drawable="@color/key_background_lxx_dark" />
+
+    <!-- Normal keys. -->
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lxx_dark" />
+    <item android:drawable="@color/key_background_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_lxx_light.xml b/java/res/drawable/btn_keyboard_key_lxx_light.xml
new file mode 100644
index 0000000..60fe02d
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_lxx_light.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Action keys. -->
+    <item android:state_active="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_active_pressed_lxx_light" />
+    <item android:state_active="true"
+          android:drawable="@drawable/btn_keyboard_key_active_lxx_light" />
+
+    <!-- Toggle keys. Use checkable/checked state. -->
+    <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_on_lxx_light" />
+    <item android:state_checkable="true" android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_off_lxx_light" />
+    <item android:state_checkable="true" android:state_checked="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_on_lxx_light" />
+    <item android:state_checkable="true"
+          android:drawable="@drawable/btn_keyboard_key_normal_off_lxx_light" />
+
+    <!-- Empty background keys. -->
+    <item android:state_empty="true"
+          android:drawable="@color/key_background_lxx_light" />
+
+    <!-- Normal keys. -->
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lxx_light" />
+    <item android:drawable="@color/key_background_lxx_light" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_gb.xml b/java/res/drawable/btn_keyboard_key_popup_gb.xml
deleted file mode 100644
index 9e3670d..0000000
--- a/java/res/drawable/btn_keyboard_key_popup_gb.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_light_popup_selected" />
-    <item android:drawable="@drawable/transparent" />
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_ics.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml
index 31b6131..17d646b 100644
--- a/java/res/drawable/btn_keyboard_key_popup_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_ics.xml
@@ -17,5 +17,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_popup_selected_ics" />
-    <item android:drawable="@drawable/transparent" />
+    <item android:drawable="@android:color/transparent" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_klp.xml b/java/res/drawable/btn_keyboard_key_popup_klp.xml
index 62cbca8..9dfc93a 100644
--- a/java/res/drawable/btn_keyboard_key_popup_klp.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_klp.xml
@@ -17,5 +17,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_popup_selected_klp" />
-    <item android:drawable="@drawable/transparent" />
+    <item android:drawable="@android:color/transparent" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
new file mode 100644
index 0000000..dee6457
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_popup_lxx_dark.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_popup_selected_lxx_dark" />
+    <item android:drawable="@android:color/transparent" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_ics.xml b/java/res/drawable/btn_keyboard_spacebar_ics.xml
new file mode 100644
index 0000000..229f7a9
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_ics.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_ics_light" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_klp.xml b/java/res/drawable/btn_keyboard_spacebar_klp.xml
new file mode 100644
index 0000000..9882f9a
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_klp.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_pressed_klp_light" />
+    <item android:drawable="@drawable/btn_keyboard_key_normal_holo_light" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml b/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
new file mode 100644
index 0000000..5c595d9
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_lxx_dark.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lxx_dark" />
+    <item android:drawable="@color/key_background_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/btn_keyboard_spacebar_lxx_light.xml b/java/res/drawable/btn_keyboard_spacebar_lxx_light.xml
new file mode 100644
index 0000000..acd19fd
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_spacebar_lxx_light.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@color/key_background_pressed_lxx_light" />
+    <item android:drawable="@color/key_background_lxx_light" />
+</selector>
diff --git a/java/res/drawable/btn_suggestion_gb.xml b/java/res/drawable/btn_suggestion_gb.xml
deleted file mode 100644
index cde12fe..0000000
--- a/java/res/drawable/btn_suggestion_gb.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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.
-*/
--->
-
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
->
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/btn_suggestion_pressed" />
-</selector>
diff --git a/java/res/drawable/btn_suggestion_lxx_dark.xml b/java/res/drawable/btn_suggestion_lxx_dark.xml
new file mode 100644
index 0000000..84a9120
--- /dev/null
+++ b/java/res/drawable/btn_suggestion_lxx_dark.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+>
+    <item
+        android:state_pressed="true"
+        android:drawable="@color/suggested_word_background_selected_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/btn_suggestion_lxx_light.xml b/java/res/drawable/btn_suggestion_lxx_light.xml
new file mode 100644
index 0000000..8dce195
--- /dev/null
+++ b/java/res/drawable/btn_suggestion_lxx_light.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+>
+    <item
+        android:state_pressed="true"
+        android:drawable="@color/suggested_word_background_selected_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_emoticons_holo_dark.xml b/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
new file mode 100644
index 0000000..59e2349
--- /dev/null
+++ b/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_emoticons_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_emoticons_lxx_dark.xml b/java/res/drawable/ic_emoji_emoticons_lxx_dark.xml
new file mode 100644
index 0000000..a8f167a
--- /dev/null
+++ b/java/res/drawable/ic_emoji_emoticons_lxx_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_lxx_dark" />
+    <item android:drawable="@drawable/ic_emoji_emoticons_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_emoticons_lxx_light.xml b/java/res/drawable/ic_emoji_emoticons_lxx_light.xml
new file mode 100644
index 0000000..e182090
--- /dev/null
+++ b/java/res/drawable/ic_emoji_emoticons_lxx_light.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_emoticons_activated_lxx_light" />
+    <item android:drawable="@drawable/ic_emoji_emoticons_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_nature_holo_dark.xml b/java/res/drawable/ic_emoji_nature_holo_dark.xml
new file mode 100644
index 0000000..b946295
--- /dev/null
+++ b/java/res/drawable/ic_emoji_nature_holo_dark.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_holo_dark" />
+    <item
+        android:drawable="@drawable/ic_emoji_nature_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_nature_light.xml b/java/res/drawable/ic_emoji_nature_light.xml
deleted file mode 100644
index 543409e..0000000
--- a/java/res/drawable/ic_emoji_nature_light.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_nature_light_activated" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_nature_light_activated" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_nature_light_activated" />
-    <item
-        android:drawable="@drawable/ic_emoji_nature_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_nature_lxx_dark.xml b/java/res/drawable/ic_emoji_nature_lxx_dark.xml
new file mode 100644
index 0000000..6f03e50
--- /dev/null
+++ b/java/res/drawable/ic_emoji_nature_lxx_dark.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_lxx_dark" />
+    <item
+        android:drawable="@drawable/ic_emoji_nature_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_nature_lxx_light.xml b/java/res/drawable/ic_emoji_nature_lxx_light.xml
new file mode 100644
index 0000000..47525ad
--- /dev/null
+++ b/java/res/drawable/ic_emoji_nature_lxx_light.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_nature_activated_lxx_light" />
+    <item
+        android:drawable="@drawable/ic_emoji_nature_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_objects_holo_dark.xml b/java/res/drawable/ic_emoji_objects_holo_dark.xml
new file mode 100644
index 0000000..266e81e
--- /dev/null
+++ b/java/res/drawable/ic_emoji_objects_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_objects_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_objects_light.xml b/java/res/drawable/ic_emoji_objects_light.xml
deleted file mode 100644
index 4096e69..0000000
--- a/java/res/drawable/ic_emoji_objects_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_objects_light_activated" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_objects_light_activated" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_objects_light_activated" />
-    <item android:drawable="@drawable/ic_emoji_objects_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_objects_lxx_dark.xml b/java/res/drawable/ic_emoji_objects_lxx_dark.xml
new file mode 100644
index 0000000..cf150f4
--- /dev/null
+++ b/java/res/drawable/ic_emoji_objects_lxx_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_lxx_dark" />
+    <item android:drawable="@drawable/ic_emoji_objects_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_objects_lxx_light.xml b/java/res/drawable/ic_emoji_objects_lxx_light.xml
new file mode 100644
index 0000000..be7f32f
--- /dev/null
+++ b/java/res/drawable/ic_emoji_objects_lxx_light.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_objects_activated_lxx_light" />
+    <item android:drawable="@drawable/ic_emoji_objects_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_people_holo_dark.xml b/java/res/drawable/ic_emoji_people_holo_dark.xml
new file mode 100644
index 0000000..15955d2
--- /dev/null
+++ b/java/res/drawable/ic_emoji_people_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_people_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_people_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_people_light.xml b/java/res/drawable/ic_emoji_people_light.xml
deleted file mode 100644
index ea9e406..0000000
--- a/java/res/drawable/ic_emoji_people_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_people_light_activated" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_people_light_activated" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_people_light_activated" />
-    <item android:drawable="@drawable/ic_emoji_people_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_people_lxx_dark.xml b/java/res/drawable/ic_emoji_people_lxx_dark.xml
new file mode 100644
index 0000000..f91b5c4
--- /dev/null
+++ b/java/res/drawable/ic_emoji_people_lxx_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_people_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_people_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_people_activated_lxx_dark" />
+    <item android:drawable="@drawable/ic_emoji_people_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_people_lxx_light.xml b/java/res/drawable/ic_emoji_people_lxx_light.xml
new file mode 100644
index 0000000..88394bf
--- /dev/null
+++ b/java/res/drawable/ic_emoji_people_lxx_light.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_people_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_people_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_people_activated_lxx_light" />
+    <item android:drawable="@drawable/ic_emoji_people_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_places_holo_dark.xml b/java/res/drawable/ic_emoji_places_holo_dark.xml
new file mode 100644
index 0000000..260bbd8
--- /dev/null
+++ b/java/res/drawable/ic_emoji_places_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_places_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_places_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_places_light.xml b/java/res/drawable/ic_emoji_places_light.xml
deleted file mode 100644
index 312cad9..0000000
--- a/java/res/drawable/ic_emoji_places_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_places_light_activated" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_places_light_activated" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_places_light_activated" />
-    <item android:drawable="@drawable/ic_emoji_places_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_places_lxx_dark.xml b/java/res/drawable/ic_emoji_places_lxx_dark.xml
new file mode 100644
index 0000000..ace0364
--- /dev/null
+++ b/java/res/drawable/ic_emoji_places_lxx_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_places_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_places_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_places_activated_lxx_dark" />
+    <item android:drawable="@drawable/ic_emoji_places_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_places_lxx_light.xml b/java/res/drawable/ic_emoji_places_lxx_light.xml
new file mode 100644
index 0000000..93d74f7
--- /dev/null
+++ b/java/res/drawable/ic_emoji_places_lxx_light.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_places_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_places_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_places_activated_lxx_light" />
+    <item android:drawable="@drawable/ic_emoji_places_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_recent_light.xml b/java/res/drawable/ic_emoji_recent_light.xml
deleted file mode 100644
index 8c2123f..0000000
--- a/java/res/drawable/ic_emoji_recent_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_recent_light_activated" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_recent_light_activated" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_recent_light_activated" />
-    <item android:drawable="@drawable/ic_emoji_recent_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_recents_holo_dark.xml b/java/res/drawable/ic_emoji_recents_holo_dark.xml
new file mode 100644
index 0000000..f14349f
--- /dev/null
+++ b/java/res/drawable/ic_emoji_recents_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_recents_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_recents_lxx_dark.xml b/java/res/drawable/ic_emoji_recents_lxx_dark.xml
new file mode 100644
index 0000000..50f0e08
--- /dev/null
+++ b/java/res/drawable/ic_emoji_recents_lxx_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_lxx_dark" />
+    <item android:drawable="@drawable/ic_emoji_recents_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_recents_lxx_light.xml b/java/res/drawable/ic_emoji_recents_lxx_light.xml
new file mode 100644
index 0000000..f06480c
--- /dev/null
+++ b/java/res/drawable/ic_emoji_recents_lxx_light.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_recents_activated_lxx_light" />
+    <item android:drawable="@drawable/ic_emoji_recents_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_holo_dark.xml b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
new file mode 100644
index 0000000..831d659
--- /dev/null
+++ b/java/res/drawable/ic_emoji_symbols_holo_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_symbols_normal_holo_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_light.xml b/java/res/drawable/ic_emoji_symbols_light.xml
deleted file mode 100644
index 79aaf0f..0000000
--- a/java/res/drawable/ic_emoji_symbols_light.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_symbols_light_activated" />
-    <item
-        android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_symbols_light_activated" />
-    <item
-        android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_symbols_light_activated" />
-    <item android:drawable="@drawable/ic_emoji_symbols_light_normal" />
-</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_lxx_dark.xml b/java/res/drawable/ic_emoji_symbols_lxx_dark.xml
new file mode 100644
index 0000000..d2dbc22
--- /dev/null
+++ b/java/res/drawable/ic_emoji_symbols_lxx_dark.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_lxx_dark" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_lxx_dark" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_lxx_dark" />
+    <item android:drawable="@drawable/ic_emoji_symbols_normal_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/ic_emoji_symbols_lxx_light.xml b/java/res/drawable/ic_emoji_symbols_lxx_light.xml
new file mode 100644
index 0000000..fb59399
--- /dev/null
+++ b/java/res/drawable/ic_emoji_symbols_lxx_light.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_focused="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_lxx_light" />
+    <item
+        android:state_pressed="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_lxx_light" />
+    <item
+        android:state_selected="true"
+        android:drawable="@drawable/ic_emoji_symbols_activated_lxx_light" />
+    <item android:drawable="@drawable/ic_emoji_symbols_normal_lxx_light" />
+</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_gb.xml b/java/res/drawable/keyboard_key_feedback_gb.xml
deleted file mode 100644
index 397e948..0000000
--- a/java/res/drawable/keyboard_key_feedback_gb.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <item latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_more_background" />
-    <item android:drawable="@drawable/keyboard_key_feedback_background" />
-</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_lxx_dark.xml b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
new file mode 100644
index 0000000..ab1109b
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- Left edge -->
+    <item latin:state_left_edge="true" latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
+    <item latin:state_left_edge="true"
+          android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
+
+    <!-- Right edge -->
+    <item latin:state_right_edge="true" latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
+    <item latin:state_right_edge="true"
+          android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
+
+    <item latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
+    <item android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
+</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_lxx_light.xml b/java/res/drawable/keyboard_key_feedback_lxx_light.xml
new file mode 100644
index 0000000..f4341c9
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_lxx_light.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- Left edge -->
+    <item latin:state_left_edge="true" latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_light" />
+    <item latin:state_left_edge="true"
+          android:drawable="@drawable/keyboard_key_feedback_background_lxx_light" />
+
+    <!-- Right edge -->
+    <item latin:state_right_edge="true" latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_light" />
+    <item latin:state_right_edge="true"
+          android:drawable="@drawable/keyboard_key_feedback_background_lxx_light" />
+
+    <item latin:state_has_morekeys="true"
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_light" />
+    <item android:drawable="@drawable/keyboard_key_feedback_background_lxx_light" />
+</selector>
diff --git a/java/res/drawable/transparent.xml b/java/res/drawable/transparent.xml
deleted file mode 100644
index 855cf2a..0000000
--- a/java/res/drawable/transparent.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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.
-*/
--->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle"
->
-    <solid
-        android:color="@android:color/transparent" />
-    <size
-        android:width="50dp"
-        android:height="40dp" />
-</shape>
diff --git a/java/res/layout/dictionary_line.xml b/java/res/layout/dictionary_line.xml
index 7268cd4..bb1843d 100644
--- a/java/res/layout/dictionary_line.xml
+++ b/java/res/layout/dictionary_line.xml
@@ -42,7 +42,7 @@
       android:orientation="vertical">
 
     <TextView
-        android:id="@+android:id/title"
+        android:id="@android:id/title"
         android:layout_marginLeft="5dip"
         android:layout_marginStart="5dip"
         android:layout_width="wrap_content"
@@ -59,7 +59,7 @@
         android:layout_marginLeft="5dip">
 
       <TextView
-          android:id="@+android:id/summary"
+          android:id="@android:id/summary"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
@@ -77,14 +77,14 @@
   </LinearLayout>
 
   <com.android.inputmethod.dictionarypack.ButtonSwitcher
-      android:id="@+android:id/wordlist_button_switcher"
+      android:id="@+id/wordlist_button_switcher"
       android:layout_weight="0"
       android:layout_marginStart="13dip"
       android:layout_marginLeft="13dip"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
     <Button
-        android:id="@+android:id/dict_install_button"
+        android:id="@+id/dict_install_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="right|center_vertical"
@@ -92,7 +92,7 @@
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/install_dict" />
     <Button
-        android:id="@+android:id/dict_cancel_button"
+        android:id="@+id/dict_cancel_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="right|center_vertical"
@@ -100,7 +100,7 @@
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/cancel_download_dict" />
     <Button
-        android:id="@+android:id/dict_delete_button"
+        android:id="@+id/dict_delete_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="right|center_vertical"
diff --git a/java/res/layout/emoji_keyboard_page.xml b/java/res/layout/emoji_keyboard_page.xml
index e0b752b..0d10861 100644
--- a/java/res/layout/emoji_keyboard_page.xml
+++ b/java/res/layout/emoji_keyboard_page.xml
@@ -18,16 +18,9 @@
 */
 -->
 
-<com.android.inputmethod.keyboard.internal.ScrollViewWithNotifier
+<com.android.inputmethod.keyboard.emoji.EmojiPageKeyboardView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/emoji_keyboard_scroller"
-    android:clipToPadding="false"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
->
-    <com.android.inputmethod.keyboard.internal.ScrollKeyboardView
-        android:id="@+id/emoji_keyboard_page"
-        android:layoutDirection="ltr"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content" />
-</com.android.inputmethod.keyboard.internal.ScrollViewWithNotifier>
+    android:id="@+id/emoji_keyboard_page"
+    android:layoutDirection="ltr"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content" />
diff --git a/java/res/layout/emoji_keyboard_tab_icon.xml b/java/res/layout/emoji_keyboard_tab_icon.xml
index 1609f6a..15f9c3a 100644
--- a/java/res/layout/emoji_keyboard_tab_icon.xml
+++ b/java/res/layout/emoji_keyboard_tab_icon.xml
@@ -18,10 +18,16 @@
 */
 -->
 
+<!-- Note: contentDescription will be added programatically in {@link EmojiPalettesView}. -->
+<!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+     We just need to ignore the system's audio and haptic feedback settings. -->
 <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="0dip"
     android:layout_weight="1.0"
     android:layout_height="wrap_content"
     android:gravity="center"
     android:scaleType="center"
+    android:contentDescription="@null"
+    android:hapticFeedbackEnabled="false"
+    android:soundEffectsEnabled="false"
 />
diff --git a/java/res/layout/emoji_keyboard_tab_label.xml b/java/res/layout/emoji_keyboard_tab_label.xml
deleted file mode 100644
index 62c552d..0000000
--- a/java/res/layout/emoji_keyboard_tab_label.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="0dip"
-    android:layout_weight="1.0"
-    android:layout_height="wrap_content"
-    android:gravity="center"
-/>
diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml
index 1c6da90..a6ea38b 100644
--- a/java/res/layout/emoji_palettes_view.xml
+++ b/java/res/layout/emoji_palettes_view.xml
@@ -18,7 +18,7 @@
 */
 -->
 
-<com.android.inputmethod.keyboard.EmojiPalettesView
+<com.android.inputmethod.keyboard.emoji.EmojiPalettesView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/emoji_keyboard_view"
     android:orientation="vertical"
@@ -29,7 +29,8 @@
     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/suggestions_strip_height"
+        android:layout_height="@dimen/config_suggestions_strip_height"
+        style="?attr/suggestionStripViewStyle"
     >
         <TabHost
             android:id="@+id/emoji_category_tabhost"
@@ -41,11 +42,7 @@
                 android:id="@android:id/tabs"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="@drawable/tab_selected"
-                android:divider="@null"
-                android:tabStripEnabled="true"
-                android:tabStripLeft="@drawable/tab_unselected"
-                android:tabStripRight="@drawable/tab_unselected" />
+                android:divider="@null" />
             <FrameLayout
                 android:id="@android:id/tabcontent"
                 android:layout_width="0dip"
@@ -61,27 +58,27 @@
                     android:visibility="gone" />
             </FrameLayout>
         </TabHost>
-        <View
-            android:layout_width="2dip"
-            android:layout_height="match_parent"
-            android:background="@drawable/suggestions_strip_divider" />
+        <include layout="@layout/suggestion_divider" />
+        <!-- TODO: Implement KeyView and replace this. -->
+        <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+             We just need to ignore the system's audio and haptic feedback settings. -->
         <ImageButton
             android:id="@+id/emoji_keyboard_delete"
             android:layout_width="0dip"
             android:layout_weight="12.5"
             android:layout_height="match_parent"
-            android:background="@color/emoji_key_background_color"
-            android:src="@drawable/sym_keyboard_delete_holo_dark" />
+            android:hapticFeedbackEnabled="false"
+            android:soundEffectsEnabled="false"
+            android:contentDescription="@string/spoken_description_delete" />
     </LinearLayout>
     <android.support.v4.view.ViewPager
         android:id="@+id/emoji_keyboard_pager"
         android:layout_width="match_parent"
         android:layout_height="wrap_content" />
-    <com.android.inputmethod.keyboard.EmojiCategoryPageIndicatorView
+    <com.android.inputmethod.keyboard.emoji.EmojiCategoryPageIndicatorView
         android:id="@+id/emoji_category_page_id_view"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/emoji_category_page_id_view_background" />
+        android:layout_height="2dip" />
     <LinearLayout
         android:id="@+id/emoji_action_bar"
         android:orientation="horizontal"
@@ -89,22 +86,47 @@
         android:layout_height="0dip"
         android:layout_weight="1"
     >
-        <ImageButton
-            android:id="@+id/emoji_keyboard_alphabet"
+        <!-- TODO: Implement a KeyView and replace this. -->
+        <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+             We just need to ignore the system's audio and haptic feedback settings. -->
+        <TextView
+            android:id="@+id/emoji_keyboard_alphabet_left"
             android:layout_width="0dip"
             android:layout_weight="0.15"
+            android:gravity="center"
             android:layout_height="match_parent"
-            android:src="@drawable/ic_ime_switcher_dark" />
-        <ImageButton
+            android:hapticFeedbackEnabled="false"
+            android:soundEffectsEnabled="false" />
+        <!-- TODO: Implement KeyView and replace this. -->
+        <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+             We just need to ignore the system's audio and haptic feedback settings. -->
+        <RelativeLayout
             android:id="@+id/emoji_keyboard_space"
             android:layout_width="0dip"
             android:layout_weight="0.70"
-            android:layout_height="match_parent" />
-        <ImageButton
-            android:id="@+id/emoji_keyboard_alphabet2"
+            android:layout_height="match_parent"
+            android:hapticFeedbackEnabled="false"
+            android:soundEffectsEnabled="false"
+            android:contentDescription="@string/spoken_description_space">
+            <!-- WORKAROUND: Show the spacebar icon as a bacground of this View. -->
+            <View
+                android:id="@+id/emoji_keyboard_space_icon"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="12dp"
+                android:layout_marginRight="12dp"
+                android:layout_centerInParent="true" />
+        </RelativeLayout>
+        <!-- TODO: Implement KeyView and replace this. -->
+        <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+             We just need to ignore the system's audio and haptic feedback settings. -->
+        <TextView
+            android:id="@+id/emoji_keyboard_alphabet_right"
             android:layout_width="0dip"
             android:layout_weight="0.15"
+            android:gravity="center"
             android:layout_height="match_parent"
-            android:src="@drawable/ic_ime_switcher_dark" />
+            android:hapticFeedbackEnabled="false"
+            android:soundEffectsEnabled="false" />
     </LinearLayout>
-</com.android.inputmethod.keyboard.EmojiPalettesView>
+</com.android.inputmethod.keyboard.emoji.EmojiPalettesView>
diff --git a/java/res/layout/hint_add_to_dictionary.xml b/java/res/layout/hint_add_to_dictionary.xml
deleted file mode 100644
index 68a9faf..0000000
--- a/java/res/layout/hint_add_to_dictionary.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?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.
-*/
--->
-
-<!-- This is derived from suggestion_word.xml without minWidth attribute and padding -->
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:textSize="@dimen/suggestion_text_size"
-    android:gravity="center"
-    android:paddingLeft="0dp"
-    android:paddingTop="0dp"
-    android:paddingRight="0dp"
-    android:paddingBottom="0dp"
-    android:focusable="false"
-    android:clickable="false"
-    android:singleLine="true"
-    android:ellipsize="none"
-    style="?attr/suggestionWordStyle" />
diff --git a/java/res/layout/input_view.xml b/java/res/layout/input_view.xml
index 1e7a384..ff0b403 100644
--- a/java/res/layout/input_view.xml
+++ b/java/res/layout/input_view.xml
@@ -41,10 +41,8 @@
             android:id="@+id/suggestion_strip_view"
             android:layoutDirection="ltr"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/suggestions_strip_height"
+            android:layout_height="@dimen/config_suggestions_strip_height"
             android:gravity="center_vertical"
-            android:paddingRight="@dimen/suggestions_strip_padding"
-            android:paddingLeft="@dimen/suggestions_strip_padding"
             style="?attr/suggestionStripViewStyle" />
 
         <!-- To ensure that key preview popup is correctly placed when the current system locale is
diff --git a/java/res/layout/key_preview_gb.xml b/java/res/layout/key_preview_gb.xml
deleted file mode 100644
index 2f2a321..0000000
--- a/java/res/layout/key_preview_gb.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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.
-*/
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:background="@drawable/keyboard_key_feedback_gb"
-    android:minWidth="32dp"
-    android:gravity="center"
-/>
diff --git a/java/res/layout/key_preview_ics.xml b/java/res/layout/key_preview_ics.xml
deleted file mode 100644
index 33b6947..0000000
--- a/java/res/layout/key_preview_ics.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:background="@drawable/keyboard_key_feedback_ics"
-    android:minWidth="32dp"
-    android:gravity="center"
-/>
diff --git a/java/res/layout/key_preview_klp.xml b/java/res/layout/key_preview_klp.xml
deleted file mode 100644
index 160aeb9..0000000
--- a/java/res/layout/key_preview_klp.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:background="@drawable/keyboard_key_feedback_klp"
-    android:minWidth="32dp"
-    android:gravity="center"
-/>
diff --git a/java/res/layout/more_keys_keyboard.xml b/java/res/layout/more_keys_keyboard.xml
index 6637117..f3795af 100644
--- a/java/res/layout/more_keys_keyboard.xml
+++ b/java/res/layout/more_keys_keyboard.xml
@@ -22,11 +22,9 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:orientation="horizontal"
-    style="?attr/moreKeysKeyboardContainerStyle"
+    android:orientation="vertical"
 >
     <com.android.inputmethod.keyboard.MoreKeysKeyboardView
-        xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
         android:id="@+id/more_keys_keyboard_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
diff --git a/java/res/layout/more_suggestions.xml b/java/res/layout/more_suggestions.xml
index 8659f07..0869992 100644
--- a/java/res/layout/more_suggestions.xml
+++ b/java/res/layout/more_suggestions.xml
@@ -22,16 +22,15 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:orientation="horizontal"
-    style="?attr/moreKeysKeyboardContainerStyle"
+    android:orientation="vertical"
 >
     <com.android.inputmethod.latin.suggestions.MoreSuggestionsView
         xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
         android:id="@+id/more_suggestions_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        latin:keyLetterSize="@dimen/suggestion_text_size"
-        latin:keyLabelSize="@dimen/suggestion_text_size"
-        latin:keyHintLetterRatio="@fraction/more_suggestions_info_ratio"
+        latin:keyLetterSize="@dimen/config_suggestion_text_size"
+        latin:keyLabelSize="@dimen/config_suggestion_text_size"
+        latin:keyHintLetterRatio="@fraction/config_more_suggestions_info_ratio"
         latin:keyHintLetterColor="@android:color/white" />
 </LinearLayout>
diff --git a/java/res/layout/research_feedback_activity.xml b/java/res/layout/research_feedback_activity.xml
deleted file mode 100644
index a6b8b8a..0000000
--- a/java/res/layout/research_feedback_activity.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<com.android.inputmethod.research.FeedbackLayout
-     xmlns:android="http://schemas.android.com/apk/res/android"
-     android:layout_width="match_parent"
-     android:layout_height="wrap_content"
-     android:orientation="vertical"
-     android:id="@+id/research_feedback_layout"
->
-
-    <fragment
-          android:id="@+id/research_feedback_fragment"
-          android:name="com.android.inputmethod.research.FeedbackFragment"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-    />
-</com.android.inputmethod.research.FeedbackLayout>
diff --git a/java/res/layout/research_feedback_fragment_layout.xml b/java/res/layout/research_feedback_fragment_layout.xml
deleted file mode 100644
index 505a1e8..0000000
--- a/java/res/layout/research_feedback_fragment_layout.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Adapted from frameworks/base/core/res/res/layout/alert_dialog_holo.xml.  We
-   want a dialog, but it must be its own activity so we can launch the soft
-   keyboard on it.  A regular dialog will not work since it would be launched from
-   the IME. -->
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android">
-    <LinearLayout
-         android:layout_width="match_parent"
-         android:layout_height="wrap_content"
-         android:layout_marginStart="8dip"
-         android:layout_marginEnd="8dip"
-         android:orientation="vertical">
-        <LinearLayout
-             android:layout_width="match_parent"
-             android:layout_height="wrap_content"
-             android:orientation="vertical">
-            <View android:layout_width="match_parent"
-                android:layout_height="2dip"
-                android:visibility="gone"
-                android:background="@android:color/holo_blue_light" />
-            <TextView
-                style="?android:attr/windowTitleStyle"
-                android:singleLine="true"
-                android:ellipsize="end"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:minHeight="64dip"
-                android:layout_marginLeft="16dip"
-                android:layout_marginRight="16dip"
-                android:gravity="center_vertical|left"
-                android:text="@string/research_feedback_dialog_title" />
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="2dip"
-                android:background="@android:color/holo_blue_light" />
-        </LinearLayout>
-
-        <EditText
-            android:id="@+id/research_feedback_contents"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:layout_gravity="fill_horizontal|center_vertical"
-            android:layout_marginLeft="8dip"
-            android:layout_marginRight="8dip"
-            android:layout_marginBottom="8dip"
-            android:layout_marginTop="8dip"
-            android:minLines="2"
-            android:scrollbars="vertical"
-            android:hint="@string/research_feedback_hint"
-            android:inputType="textMultiLine|textCapSentences">
-            <requestFocus />
-        </EditText>
-        <CheckBox
-            android:id="@+id/research_feedback_include_account_name"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:layout_marginLeft="16dip"
-            android:layout_marginRight="16dip"
-            android:layout_marginBottom="8dip"
-            android:checked="false"
-            android:text="@string/research_feedback_include_account_name_label" />
-        <CheckBox
-            android:id="@+id/research_feedback_include_recording_checkbox"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:layout_marginLeft="16dip"
-            android:layout_marginRight="16dip"
-            android:layout_marginBottom="8dip"
-            android:checked="false"
-            android:text="@string/research_feedback_include_recording_label" />
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:divider="?android:attr/dividerHorizontal"
-            android:showDividers="beginning"
-            android:dividerPadding="0dip">
-            <LinearLayout
-                style="?android:attr/buttonBarStyle"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                android:layoutDirection="locale"
-                android:measureWithLargestChild="true">
-                <Button
-                    android:id="@+id/research_feedback_cancel_button"
-                    android:layout_width="wrap_content"
-                    android:layout_gravity="left"
-                    android:layout_weight="1"
-                    android:maxLines="2"
-                    style="?android:attr/buttonBarButtonStyle"
-                    android:textSize="14sp"
-                    android:text="@string/research_feedback_cancel"
-                    android:layout_height="wrap_content" />
-                <Button
-                    android:id="@+id/research_feedback_send_button"
-                    android:layout_width="wrap_content"
-                    android:layout_gravity="right"
-                    android:layout_weight="1"
-                    android:maxLines="2"
-                    style="?android:attr/buttonBarButtonStyle"
-                    android:textSize="14sp"
-                    android:text="@string/research_feedback_send"
-                    android:layout_height="wrap_content" />
-            </LinearLayout>
-        </LinearLayout>
-    </LinearLayout>
-</ScrollView>
diff --git a/java/res/layout/research_feedback_layout.xml b/java/res/layout/research_feedback_layout.xml
deleted file mode 100644
index bacd191..0000000
--- a/java/res/layout/research_feedback_layout.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<LinearLayout
-     xmlns:android="http://schemas.android.com/apk/res/android"
-     android:layout_width="fill_parent"
-     android:layout_height="fill_parent"
-     android:orientation="vertical"
->
-
-    <EditText
-        android:id="@+id/research_feedback_contents"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_gravity="fill_horizontal|center_vertical"
-        android:layout_marginLeft="8dip"
-        android:layout_marginRight="8dip"
-        android:layout_marginBottom="8dip"
-        android:layout_marginTop="8dip"
-        android:lines="2"
-        android:hint="@string/research_feedback_hint"
-        android:inputType="textMultiLine"
-        android:imeOptions="flagNoFullscreen"
-        android:focusable="true"
-    >
-        <requestFocus />
-    </EditText>
-
-    <CheckBox
-        android:id="@+id/research_feedback_include_history"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_marginBottom="8dip"
-        android:checked="true"
-        android:text="@string/research_feedback_include_history_label"
-    />
-</LinearLayout>
diff --git a/java/res/layout/seek_bar_dialog.xml b/java/res/layout/seek_bar_dialog.xml
index a47e9a0..e723ad9 100644
--- a/java/res/layout/seek_bar_dialog.xml
+++ b/java/res/layout/seek_bar_dialog.xml
@@ -33,7 +33,7 @@
         <TextView android:id="@+id/seek_bar_dialog_value"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textSize="20dp"/>
+            android:textSize="20sp"/>
     </LinearLayout>
     <SeekBar
         android:id="@+id/seek_bar_dialog_bar"
diff --git a/java/res/layout/setup_steps_title.xml b/java/res/layout/setup_steps_title.xml
index e3694bf..9ee8693 100644
--- a/java/res/layout/setup_steps_title.xml
+++ b/java/res/layout/setup_steps_title.xml
@@ -21,7 +21,5 @@
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
     <TextView
         android:id="@+id/setup_title"
-        style="@style/setupTitleStyle"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentTop="true" />
+        style="@style/setupTitleStyle" />
 </merge>
diff --git a/java/res/layout/setup_welcome_title.xml b/java/res/layout/setup_welcome_title.xml
index af7053a..2c3b489 100644
--- a/java/res/layout/setup_welcome_title.xml
+++ b/java/res/layout/setup_welcome_title.xml
@@ -21,9 +21,7 @@
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
     <TextView
         android:id="@+id/setup_welcome_title"
-        style="@style/setupTitleStyle"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentTop="true" />
+        style="@style/setupTitleStyle" />
     <TextView
         android:id="@+id/setup_welcome_description"
         android:text="@string/setup_welcome_additional_description"
diff --git a/java/res/layout/suggestion_divider.xml b/java/res/layout/suggestion_divider.xml
index a8b78c0..dfea017 100644
--- a/java/res/layout/suggestion_divider.xml
+++ b/java/res/layout/suggestion_divider.xml
@@ -18,10 +18,17 @@
 */
 -->
 
+<!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+     We just need to ignore the system's audio and haptic feedback settings. -->
 <ImageView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="match_parent"
-    android:src="@drawable/suggestions_strip_divider"
     android:padding="0dp"
-    android:gravity="center" />
+    android:gravity="center"
+    android:contentDescription="@null"
+    android:clickable="false"
+    android:longClickable="false"
+    android:hapticFeedbackEnabled="false"
+    android:soundEffectsEnabled="false"
+    style="?attr/suggestionStripViewStyle" />
diff --git a/java/res/layout/suggestion_info.xml b/java/res/layout/suggestion_info.xml
deleted file mode 100644
index 0aa2600..0000000
--- a/java/res/layout/suggestion_info.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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.
-*/
--->
-
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:textSize="6dp"
-    android:textColor="@android:color/white"
-    style="?attr/suggestionWordStyle" />
diff --git a/java/res/layout/suggestion_word.xml b/java/res/layout/suggestion_word.xml
deleted file mode 100644
index c82a13c..0000000
--- a/java/res/layout/suggestion_word.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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.
-*/
--->
-
-<!-- Provide a haptic feedback by ourselves based on the keyboard settings.
-     We just need to ignore the system's haptic feedback settings. -->
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:minWidth="@dimen/suggestion_min_width"
-    android:textSize="@dimen/suggestion_text_size"
-    android:gravity="center"
-    android:paddingLeft="@dimen/suggestion_padding"
-    android:paddingTop="0dp"
-    android:paddingRight="@dimen/suggestion_padding"
-    android:paddingBottom="0dp"
-    android:hapticFeedbackEnabled="false"
-    android:focusable="false"
-    android:clickable="false"
-    android:singleLine="true"
-    android:ellipsize="none"
-    style="?attr/suggestionWordStyle" />
diff --git a/java/res/layout/suggestions_strip.xml b/java/res/layout/suggestions_strip.xml
index cbf31e6..4894779 100644
--- a/java/res/layout/suggestions_strip.xml
+++ b/java/res/layout/suggestions_strip.xml
@@ -19,12 +19,69 @@
 -->
 
 <merge
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+         We just need to ignore the system's audio and haptic feedback settings. -->
     <LinearLayout
         android:id="@+id/suggestions_strip"
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/config_suggestions_strip_horizontal_margin"
+        android:layout_marginRight="@dimen/config_suggestions_strip_horizontal_margin"
+        android:hapticFeedbackEnabled="false"
+        android:soundEffectsEnabled="false" />
+    <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+         We just need to ignore the system's audio and haptic feedback settings. -->
+    <LinearLayout
+        android:id="@+id/add_to_dictionary_strip"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/config_suggestions_strip_horizontal_margin"
+        android:layout_marginRight="@dimen/config_suggestions_strip_horizontal_margin"
+        android:hapticFeedbackEnabled="false"
+        android:soundEffectsEnabled="false">
+        <TextView
+            android:id="@+id/word_to_save"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            style="?attr/suggestionWordStyle" />
+        <include
+            layout="@layout/suggestion_divider" />
+        <TextView
+            android:id="@+id/hint_add_to_dictionary"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:textAlignment="viewStart"
+            style="?attr/suggestionWordStyle" />
+    </LinearLayout>
+    <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+         We just need to ignore the system's audio and haptic feedback settings. -->
+    <LinearLayout
+        android:id="@+id/important_notice_strip"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginLeft="@dimen/config_suggestions_strip_horizontal_margin"
+        android:layout_marginRight="@dimen/config_suggestions_strip_horizontal_margin"
+        android:hapticFeedbackEnabled="false"
+        android:soundEffectsEnabled="false" >
+        <TextView
+            android:id="@+id/important_notice_title"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:padding="6sp"
+            android:textSize="16sp"
+            style="?attr/suggestionWordStyle" />
+    </LinearLayout>
+    <ImageButton
+        android:id="@+id/suggestions_strip_voice_key"
+        android:layout_width="@dimen/config_suggestions_strip_edge_key_width"
+        android:layout_height="fill_parent"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_centerVertical="true"
+        android:contentDescription="@string/spoken_description_mic"
+        style="?attr/suggestionWordStyle" />
 </merge>
diff --git a/java/res/layout/user_dictionary_add_word.xml b/java/res/layout/user_dictionary_add_word.xml
index bbf9b1b..615fde5 100644
--- a/java/res/layout/user_dictionary_add_word.xml
+++ b/java/res/layout/user_dictionary_add_word.xml
@@ -52,48 +52,39 @@
         android:hint="@string/user_dict_settings_add_word_hint"
         android:imeOptions="flagNoFullscreen"
         android:inputType="textNoSuggestions"
-        android:maxLength="@integer/user_dictionary_max_word_length" >
+        android:maxLength="@integer/config_user_dictionary_max_word_length" >
 
         <requestFocus />
     </EditText>
 
     <LinearLayout
+        style="?android:attr/buttonBarStyle"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:divider="?android:attr/dividerHorizontal"
-        android:dividerPadding="0dip"
-        android:orientation="vertical"
-        android:showDividers="beginning" >
+        android:measureWithLargestChild="true"
+        android:orientation="horizontal" >
 
-        <LinearLayout
-            style="?android:attr/buttonBarStyle"
-            android:layout_width="match_parent"
+        <Button
+            style="?android:attr/buttonBarButtonStyle"
+            android:layout_width="0dip"
             android:layout_height="wrap_content"
-            android:measureWithLargestChild="true"
-            android:orientation="horizontal" >
+            android:layout_gravity="start"
+            android:layout_weight="1"
+            android:maxLines="2"
+            android:onClick="onClickCancel"
+            android:text="@string/cancel"
+            android:textSize="14sp" />
 
-            <Button
-                style="?android:attr/buttonBarButtonStyle"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_gravity="start"
-                android:layout_weight="1"
-                android:maxLines="2"
-                android:onClick="onClickCancel"
-                android:text="@string/cancel"
-                android:textSize="14sp" />
-
-            <Button
-                style="?android:attr/buttonBarButtonStyle"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_gravity="end"
-                android:layout_weight="1"
-                android:maxLines="2"
-                android:onClick="onClickConfirm"
-                android:text="@string/user_dict_settings_add_dialog_confirm"
-                android:textSize="14sp" />
-        </LinearLayout>
+        <Button
+            style="?android:attr/buttonBarButtonStyle"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_gravity="end"
+            android:layout_weight="1"
+            android:maxLines="2"
+            android:onClick="onClickConfirm"
+            android:text="@string/user_dict_settings_add_dialog_confirm"
+            android:textSize="14sp" />
     </LinearLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/java/res/layout/user_dictionary_add_word_fullscreen.xml b/java/res/layout/user_dictionary_add_word_fullscreen.xml
index 219485b..9bcb189 100644
--- a/java/res/layout/user_dictionary_add_word_fullscreen.xml
+++ b/java/res/layout/user_dictionary_add_word_fullscreen.xml
@@ -30,7 +30,7 @@
         android:hint="@string/user_dict_settings_add_word_hint"
         android:imeOptions="flagNoFullscreen"
         android:inputType="textNoSuggestions"
-        android:maxLength="@integer/user_dictionary_max_word_length" >
+        android:maxLength="@integer/config_user_dictionary_max_word_length" >
 
         <requestFocus />
     </EditText>
@@ -61,7 +61,7 @@
             android:hint="@string/user_dict_settings_add_shortcut_hint"
             android:imeOptions="flagNoFullscreen"
             android:inputType="textNoSuggestions"
-            android:maxLength="@integer/user_dictionary_max_word_length" />
+            android:maxLength="@integer/config_user_dictionary_max_word_length" />
 
         <TextView
             android:id="@+id/user_dictionary_add_locale_label"
diff --git a/java/res/layout/user_dictionary_item.xml b/java/res/layout/user_dictionary_item.xml
index 56bad77..b8d48b5 100644
--- a/java/res/layout/user_dictionary_item.xml
+++ b/java/res/layout/user_dictionary_item.xml
@@ -19,10 +19,11 @@
     android:background="?android:attr/selectableItemBackground"
     android:gravity="center_vertical"
     android:minHeight="?android:attr/listPreferredItemHeight"
-    android:paddingEnd="?android:attr/scrollbarSize" >
+    android:paddingEnd="?android:attr/scrollbarSize"
+    android:baselineAligned="false" >
 
     <RelativeLayout
-        android:layout_width="wrap_content"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:padding="6dip"
         android:layout_weight="1" >
diff --git a/java/res/mipmap-hdpi/ic_launcher_keyboard.png b/java/res/mipmap-hdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 36b1cca..0000000
--- a/java/res/mipmap-hdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/mipmap-mdpi/ic_launcher_keyboard.png b/java/res/mipmap-mdpi/ic_launcher_keyboard.png
deleted file mode 100644
index 67ef189..0000000
--- a/java/res/mipmap-mdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/mipmap-xhdpi/ic_launcher_keyboard.png b/java/res/mipmap-xhdpi/ic_launcher_keyboard.png
deleted file mode 100644
index b332083..0000000
--- a/java/res/mipmap-xhdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/mipmap-xxhdpi/ic_launcher_keyboard.png b/java/res/mipmap-xxhdpi/ic_launcher_keyboard.png
deleted file mode 100644
index acc424f..0000000
--- a/java/res/mipmap-xxhdpi/ic_launcher_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/java/res/raw/main_de.dict b/java/res/raw/main_de.dict
index 69796bb..3cbf710 100644
--- a/java/res/raw/main_de.dict
+++ b/java/res/raw/main_de.dict
Binary files differ
diff --git a/java/res/raw/main_en.dict b/java/res/raw/main_en.dict
index 09b6992..d631d6f 100644
--- a/java/res/raw/main_en.dict
+++ b/java/res/raw/main_en.dict
Binary files differ
diff --git a/java/res/raw/main_es.dict b/java/res/raw/main_es.dict
index 261ab8c..8c42fda 100644
--- a/java/res/raw/main_es.dict
+++ b/java/res/raw/main_es.dict
Binary files differ
diff --git a/java/res/raw/main_fr.dict b/java/res/raw/main_fr.dict
index 0e5a713..19532d9 100644
--- a/java/res/raw/main_fr.dict
+++ b/java/res/raw/main_fr.dict
Binary files differ
diff --git a/java/res/raw/main_it.dict b/java/res/raw/main_it.dict
index e161c24..ff11b97 100644
--- a/java/res/raw/main_it.dict
+++ b/java/res/raw/main_it.dict
Binary files differ
diff --git a/java/res/raw/main_pt_br.dict b/java/res/raw/main_pt_br.dict
index 21bbe7c..9fa5044 100644
--- a/java/res/raw/main_pt_br.dict
+++ b/java/res/raw/main_pt_br.dict
Binary files differ
diff --git a/java/res/raw/main_ru.dict b/java/res/raw/main_ru.dict
index 7dec624..0f08f17 100644
--- a/java/res/raw/main_ru.dict
+++ b/java/res/raw/main_ru.dict
Binary files differ
diff --git a/java/res/values-af/strings-action-keys.xml b/java/res/values-af/strings-action-keys.xml
index c5cd71a..c7ae3f7 100644
--- a/java/res/values-af/strings-action-keys.xml
+++ b/java/res/values-af/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Vorige"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Klaar"</string>
     <string name="label_send_key" msgid="482252074224462163">"Stuur"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Soek"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Laat wag"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Wag"</string>
 </resources>
diff --git a/java/res/values-af/strings-config-important-notice.xml b/java/res/values-af/strings-config-important-notice.xml
new file mode 100644
index 0000000..edd54d6
--- /dev/null
+++ b/java/res/values-af/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Leer uit jou kommunikasie en getikte data om voorstelle te verbeter"</string>
+</resources>
diff --git a/java/res/values-af/strings-letter-descriptions.xml b/java/res/values-af/strings-letter-descriptions.xml
new file mode 100644
index 0000000..1238a43
--- /dev/null
+++ b/java/res/values-af/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Vroulike rangtelwoordaanwyser"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikroteken"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Manlike rangtelwoordaanwyser"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Stemlose S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, gravis"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, akuut"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, kappie"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, deelteken"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, sirkel bo"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, koppelletter"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cédille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, gravis"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, akuut"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, kappie"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, deelteken"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, gravis"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, akuut"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, kappie"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, deelteken"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, gravis"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, akuut"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, kappie"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, deelteken"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, deurhaal"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, gravis"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, akuut"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, kappie"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, deelteken"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, akuut"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, deelteken"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, brevis"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, akuut"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, kappie"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, kol bo"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, deurhaal"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, brevis"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, kol bo"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, kappie"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, brevis"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, kol bo"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cédille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, kappie"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, deurhaal"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, brevis"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Kollose I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, koppelletter"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, kappie"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cédille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, akuut"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cédille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middelkol"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, deurhaal"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, akuut"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cédille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, voorafgegaan deur apostroof"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, brevis"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, dubbelakuut"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, koppelletter"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, akuut"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cédille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, akuut"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, kappie"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cédille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cédille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, deurhaal"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, brevis"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, sirkel bo"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, dubbelakuut"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, kappie"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, kappie"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, akuut"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, kol bo"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, onderstebo kappie"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Lang S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horing"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horing"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, komma onder"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, komma onder"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Sjwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, kol onder"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, haak bo"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, kappie en akuut"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, kappie en gravis"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, kappie en haak bo"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, kappie en tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, kappie en kol onder"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, brevis en akuut"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, brevis en gravis"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, brevis en haak bo"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, brevis en tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, brevis en kol onder"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, kol onder"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, haak bo"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, kappie en akuut"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, kappie en gravis"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, kappie en haak bo"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, kappie en tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, kappie en kol onder"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, haak bo"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, kol onder"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, kol onder"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, haak bo"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, kappie en akuut"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, kappie en gravis"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, kappie en haak bo"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, kappie en tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, kappie en kol onder"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horing en akuut"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horing en gravis"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horing en haak bo"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horing en tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horing en kol onder"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, kol onder"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, haak bo"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horing en akuut"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horing en gravis"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horing en haak bo"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horing en tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horing en kol onder"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, gravis"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, kol onder"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, haak bo"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Onderstebo uitroepteken"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Dubbele hoekaanhalingsteken na links"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Middelkol"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Boskrif-een"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Dubbele hoekaanhalingsteken na regs"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Onderstebo vraagteken"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Enkele linkeraanhalingsteken"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Enkele regteraanhalingsteken"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Enkele lae-9-aanhalingsteken"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Dubbele linkeraanhalingsteken"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Dubbele regteraanhalingsteken"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kruisie"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dubbelkruisie"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per-duisend-teken"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Aksent"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dubbelaksent"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Enkele hoekaanhalingsteken na links"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Enkele hoekaanhalingsteken na regs"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Boskrif-vier"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Klein Latynse boskrif-letter-n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso-teken"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Per adres"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Pyl na regs"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pyl na onder"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Leë versameling"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Vermeerdering"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Minder as of gelyk aan"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Meer as of gelyk aan"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Swart ster"</string>
+</resources>
diff --git a/java/res/values-af/strings-talkback-descriptions.xml b/java/res/values-af/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..3b6ba0a
--- /dev/null
+++ b/java/res/values-af/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Koppel \'n kopstuk om te hoor hoe wagwoordsleutels hardop gesê word."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Huidige teks is %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Geen teks is ingevoer nie"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> korrigeer <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> voer outokorrigering uit"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Onbekende karakter"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Meer simbole"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simbole"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Vee uit"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simbole"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letters"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Nommers"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Instellings"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Spasie"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Steminvoer"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emosiekone"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Keer terug"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Soek"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punt"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Verander taal"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Volgende"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Vorige"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift geaktiveer"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bokas-slot geaktiveer"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simboolmodus"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Meersimbole-modus"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Lettermodus"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Foonmodus"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Foonsimbool-modus"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Sleutelbord is versteek"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Wys tans <xliff:g id="KEYBOARD_MODE">%s</xliff:g>-sleutelbord"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum en tyd"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-pos"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"boodskappe"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"nommer"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"foon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teks"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"tyd"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Onlangse emosiekone"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Mense"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Voorwerpe"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natuur"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Plekke"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simbole"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emosiekone"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Hoofletter-<xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Hoofletter-I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Hoofletter-I, kol bo"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Onbekende simbool"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Onbekende emosiekoon"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatiewe karakters is beskikbaar"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatiewe karakters is toegemaak"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatiewe voorstelle is beskikbaar"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatiewe voorstelle is toegemaak"</string>
+</resources>
diff --git a/java/res/values-af/strings.xml b/java/res/values-af/strings.xml
index 045e97d..b7a27eb 100644
--- a/java/res/values-af/strings.xml
+++ b/java/res/values-af/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropsies"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Navorsing-loglêerbevele"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Soek kontakname op"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Speltoetser gebruik inskrywings uit jou kontaklys"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibreer met sleuteldruk"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Klank met sleuteldruk"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Opspring met sleuteldruk"</string>
-    <string name="general_category" msgid="1859088467017573195">"Algemeen"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Tekskorrigering"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Gebaar-tik"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Ander opsies"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Gevorderde instellings"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opsies vir kundiges"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skakel oor na die ander invoermetodes"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Taal-wisselsleutel dek ook ander invoermetodes"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Taal-wisselsleutel"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Stelsel se verstek"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Stel kontakname voor"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Gebruik name van kontakte vir voorstelle en korreksies"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Gepersonaliseerde voorstelle"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Verbeter <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dubbelspasie-punt"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dubbeltik op spasiebalk voeg \'n punt in, gevolg deur \'n spasie"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Outohoofletters"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Wys gebaarspoor"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamiese sweefvoorskou"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Sien die voorgestelde woord tydens gebare"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Gestoor"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Koppel \'n kopstuk om te hoor hoe wagwoordsleutels hardop gesê word."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Huidige teks is %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Geen teks ingevoer nie"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> korrigeer <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> voer outokorreksie uit"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Sleutelkode %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift aan (tik om te deaktiveer)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Kasslot aan (tik om te deaktiveer)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Vee uit"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simbole"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letters"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Nommers"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Instellings"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Oortjie"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Spasie"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Steminvoering"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Glimlag-gesiggie"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Soek"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punt"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Verander taal"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Volgende"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Vorige"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift geaktiveer"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Kasslot geaktiveer"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift gedeaktiveer"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Simboolmodus"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Lettermodus"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Foonmodus"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Foonsimbool-modus"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Sleutelbord versteek"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Wys <xliff:g id="MODE">%s</xliff:g>-sleutelbord"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datum en tyd"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-pos"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"boodskappe"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"nommer"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"foon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teks"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"tyd"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frasegebaar"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Voer spasies tydens gebare in deur na die spasiesleutel te gly"</string>
     <string name="voice_input" msgid="3583258583521397548">"Steminvoerinstellings"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Op hoofsleutelbord"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Op simbolesleutelbord"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Af"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofoon op hoofsleutelbord"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofoon op simbolesleutelbord"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Steminvoer is gedeaktiveer"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Geen steminvoermetodes geaktiveer nie. Gaan taal- en invoerinstellings na."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Stel invoermetodes op"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Invoertale"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Stuur terugvoer"</string>
     <string name="select_language" msgid="3693815588777926848">"Invoertale"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Raak weer om te stoor"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Woordeboek beskikbaar"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiveer gebruikerterugvoer"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Help om hierdie invoermetode-redigeerder te verbeter deur gebruikstatistiek en omvalverslae outomaties te stuur"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Sleutelbordtema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Engels (VK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spaans (VS)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engels (VK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engels (VS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spaans (VS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Tradisioneel)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engels (VK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engels (VS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spaans (VS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Tradisioneel)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cyrillies)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latyns)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Geen taal nie (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emosiekone"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Kleurskema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Wit"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blou"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Gepasmaakte invoerstyle"</string>
     <string name="add_style" msgid="6163126614514489951">"Voeg styl by"</string>
     <string name="add" msgid="8299699805688017798">"Voeg by"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Aktiveer"</string>
     <string name="not_now" msgid="6172462888202790482">"Nie nou nie"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Dieselfde invoerstyl bestaan ​​reeds: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Bruikbaarheidstudie-modus"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Vertraging van sleutellangdruk"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Sleuteldruk se vibrasie-tydsduur"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Sleuteldruk se klankvolume"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Lees eksterne woordeboeklêer"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Geen woordeboeklêers in die aflaaiselsvouer nie"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Kies \'n woordeboeklêer om te installeer"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Moet hierdie lêer regtig vir <xliff:g id="LOCALE_NAME">%s</xliff:g> geïnstalleer word?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Moet hierdie lêer regtig vir <xliff:g id="LANGUAGE_NAME">%s</xliff:g> geïnstalleer word?"</string>
     <string name="error" msgid="8940763624668513648">"Daar was \'n fout"</string>
     <string name="button_default" msgid="3988017840431881491">"Verstek"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Welkom by <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Verfris"</string>
     <string name="last_update" msgid="730467549913588780">"Laas opgedateer"</string>
     <string name="message_updating" msgid="4457761393932375219">"Kontroleer vir opdaterings"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Laai tans…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Laai tans…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Hoofwoordeboek"</string>
     <string name="cancel" msgid="6830980399865683324">"Kanselleer"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Instellings"</string>
     <string name="install_dict" msgid="180852772562189365">"Installeer"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Kanselleer"</string>
     <string name="delete_dict" msgid="756853268088330054">"Vee uit"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Die gekose taal op jou mobiele toestel het \'n beskikbare woordeboek.&lt;br/&gt; Ons beveel aan dat die <xliff:g id="LANGUAGE">%1$s</xliff:g>-woordeboek &lt;b&gt;afgelaai&lt;/b&gt; word om jou tikervaring te verbeter.&lt;br/&gt; &lt;br/&gt; Dit kan \'n minuut of twee neem om oor 3G af te laai. Heffings kan dalk geld as jy nie \'n &lt;b&gt;onbeperkte dataplan&lt;/b&gt; het nie.&lt;br/&gt; As jy onseker oor jou dataplan is, beveel ons aan dat jy \'n Wi-Fi-verbinding soek om outomaties te begin aflaai.&lt;br/&gt; &lt;br/&gt; Wenk: Jy kan woordeboeke aflaai en verwyder deur te gaan na &lt;b&gt;Taal en invoer&lt;/b&gt; in die &lt;b&gt;Instellings&lt;/b&gt;-kieslys van jou mobiele toestel."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Die gekose taal op jou mobiele toestel het \'n beskikbare woordeboek.&lt;br/&gt; Ons beveel aan dat die <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-woordeboek &lt;b&gt;afgelaai&lt;/b&gt; word om jou tikervaring te verbeter.&lt;br/&gt; &lt;br/&gt; Dit kan \'n minuut of twee duur om oor 3G af te laai. Heffings kan dalk geld as jy nie \'n &lt;b&gt;onbeperkte dataplan&lt;/b&gt; het nie.&lt;br/&gt; As jy onseker is oor watter dataplan jy het, beveel ons aan dat jy \'n Wi-Fi-verbinding soek om outomaties te begin aflaai.&lt;br/&gt; &lt;br/&gt; Wenk: Jy kan woordeboeke aflaai en verwyder deur te gaan na &lt;b&gt;Taal en invoer&lt;/b&gt; in die &lt;b&gt;Instellings&lt;/b&gt;-kieslys van jou mobiele toestel."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Laai nou af (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Laai oor Wi-Fi af"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"\'n Woordeboek is vir <xliff:g id="LANGUAGE">%1$s</xliff:g> beskikbaar"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"\'n Woordeboek is beskikbaar vir <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Druk om te hersien en af te laai"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Laai tans af: voorstelle vir <xliff:g id="LANGUAGE">%1$s</xliff:g> sal binnekort gereed wees."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Laai tans af: voorstelle vir <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sal binnekort gereed wees."</string>
     <string name="version_text" msgid="2715354215568469385">"Weergawe <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Voeg by"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Voeg by woordeboek"</string>
diff --git a/java/res/values-am/strings-action-keys.xml b/java/res/values-am/strings-action-keys.xml
index 1813a86..51c2538 100644
--- a/java/res/values-am/strings-action-keys.xml
+++ b/java/res/values-am/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"ቀዳሚ"</string>
     <string name="label_done_key" msgid="7564866296502630852">"ተደርጓል"</string>
     <string name="label_send_key" msgid="482252074224462163">"ላክ"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"ፈልግ"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"ቆም በል"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"ጠብቅ"</string>
 </resources>
diff --git a/java/res/values-am/strings-config-important-notice.xml b/java/res/values-am/strings-config-important-notice.xml
new file mode 100644
index 0000000..db537dc
--- /dev/null
+++ b/java/res/values-am/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"የአስተያየት ጥቆማዎችን ለማሻሻል ከእርስዎ ግንኙነቶች እና የተተየበ ውሂብ ይማሩ"</string>
+</resources>
diff --git a/java/res/values-am/strings-letter-descriptions.xml b/java/res/values-am/strings-letter-descriptions.xml
new file mode 100644
index 0000000..5c94869
--- /dev/null
+++ b/java/res/values-am/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"እንስት የደረጃ አመልካች"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"የማይክሮ ምልክት"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"ተባዕታይ የደረጃ አመልካች"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"ሻርፕ ኤስ"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"ኤ፣ ጭረት"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"ኤ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"ኤ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"ኤ፣ ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"ኤ፣ ባለሁለት ነጥብ"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"ኤ፣ ቀለበት ከላይ"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"ኤ፣ ኢ፣ ማሰሪያ"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"ሲ፣ ጭራ"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"ኢ፣ ጭረት"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"ኢ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"ኢ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"ኢ፣ ባለሁለት ነጥብ"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"አይ፣ ጭረት"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"አይ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"አይ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"አይ፣ ባለሁለት ነጥብ"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"ኤት"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"ኤን፣ ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"ኦ፣ ጭረት"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"ኦ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"ኦ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"ኦ፣ ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"ኦ፣ ባለሁለት ነጥብ"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"ኦ፣ ሰያፍ ሰረዝ"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"ዩ፣ ጭረት"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"ዩ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"ዩ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"ዩ፣ ባለሁለት ነጥብ"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"ዋይ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"ቶርን"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"ዋይ፣ ባለሁለት ነጥብ"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"ኤ፣ ማክሮን"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"ኤ፣ ቁንጽል"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"ኤ፣ ኦጎነክ"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"ሲ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"ሲ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"ሲ፣ ነጥብ ከላይ"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"ሲ፣ ካሮን"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"ዲ፣ ካሮን"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"ዲ፣ ሰያፍ ሰረዝ"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"ኢ፣ ማክሮን"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"ኢ፣ ቁንጽል"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"ኢ፣ ነጥብ ከላይ"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"ኢ፣ ኦጎነክ"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"ኢ፣ ካሮን"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"ጂ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"ጂ፣ ቁንጽል"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"ጂ፣ ነጥብ ከላይ"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"ጂ፣ ጭራ"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"ኤች፣ ድፋት"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"ኤች፣ ሰያፍ ሰረዝ"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"አይ፣ ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"አይ፣ ማክሮን"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"አይ፣ ቁንጽል"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"አይ፣ ኦጎነክ"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"ነጥብ አልባ አይ"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"አይ፣ ጄ፣ ማሰሪያ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"ጄ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"ኬ፣ ጭራ"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"ክራ"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"ኤል፣ ይዘት"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"ኤል፣ ጭራ"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"ኤል፣ ካሮን"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"ኤል፣ የመሃል ነጥብ"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"ኤል፣ ሰያፍ ሰረዝ"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"ኤን፣ ይዘት"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"ኤን፣ ጭራ"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"ኤን፣ ካሮን"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"ኤን፣ በትእምርተ ጭረት የተቀደመ"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"እንግ"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"ኦ፣ ማክሮን"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"ኦ፣ ቁንጽል"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"ኦ፣ ድርብ ይዘት"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"ኦ፣ ኢ፣ ማሰሪያ"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"አር፣ ይዘት"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"አር፣ ጭራ"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"አር፣ ካሮን"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"ኤስ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"ኤስ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"ኤስ፣ ጭራ"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"ኤስ፣ ካሮን"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"ቲ፣ ጭራ"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"ቲ፣ ካሮን"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"ቲ፣ ሰያፍ ሰረዝ"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"ዩ፣ ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"ዩ፣ ማክሮን"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"ዩ፣ ቁንጽል"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"ዩ፣ ቀለበት ከላይ"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"ዩ፣ ድርብ ይዘት"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"ዩ፣ ኦጎነክ"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"ደብልዩ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"ዋይ፣ ድፋት"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"ዜድ፣ ይዘት"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"ዜድ፣ ነጥብ ከላይ"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"ዜድ፣ ካሮን"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"ረጅም ኤስ"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"ኦ፣ ቀንድ"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"ዩ፣ ቀንድ"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"ኤስ፣ ኮማ ከታች"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"ቲ፣ ኮማ ከታች"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"ሽዋ"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"ኤ፣ ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"ኤ፣ መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"ኤ፣ ድፋት እና ይዘት"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"ኤ፣ ድፋት እና ጭረት"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"ኤ፣ ድፋት እና መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"ኤ፣ ድፋት እና ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"ኤ፣ ድፋት እና ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"ኤ፣ ቁንጽል እና ይዘት"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"ኤ፣ ቁንጽል እና ጭረት"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"ኤ፣ ቁንጽል እና መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"ኤ፣ ቁንጽል እና ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"ኤ፣ ቁንጽል እና ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"ኢ፣ ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"ኢ፣ መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"ኢ፣ ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"ኢ፣ ድፋት እና ይዘት"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"ኢ፣ ድፋት እና ጭረት"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"ኢ፣ ድፋት እና መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"ኢ፣ ድፋት እና ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"ኢ፣ ድፋት እና ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"አይ፣ መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"አይ፣ ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"ኦ፣ ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"ኦ፣ መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"ኦ፣ ድፋት እና ይዘት"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"ኦ፣ ድፋት እና ጭረት"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"ኦ፣ ድፋት እና መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"ኦ፣ ድፋት እና ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"ኦ፣ ድፋት እና ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"ኦ፣ ቀንድ እና ይዘት"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"ኦ፣ ቀንድ እና ጭረት"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"ኦ፣ ቀንድ እና መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"ኦ፣ ቀንድ እና ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"ኦ፣ ቀንድ እና ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"ዩ፣ ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"ዩ፣ መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"ዩ፣ ቀንድ እና ይዘት"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"ዩ፣ ቀንድ እና ጭረት"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"ዩ፣ ቀንድ እና መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"ዩ፣ ቀንድ እና ድፋትቅናት"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"ዩ፣ ቀንድ እና ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"ዋይ፣ ጭረት"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"ዋይ፣ ነጥብ ከታች"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"ዋይ፣ መንጠቆ ከላይ"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"ዋይ፣ ድፋትቅናት"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"የተገለበጠ ቃለ አጋኖ"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"ግራ ጠቋሚ ድርብ የማዕዘን ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"የመሃል ነጥብ"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"ራስጌ አደር አንድ"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"ቀኝ ጠቋሚ ድርብ የማዕዘን ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"የተገለበጠ የጥያቄ ምልክት"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"የግራ  ነጠላ ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"የቀኝ ነጠላ ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"ነጠላ ዝቅተኛ-9 ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"የግራ ድርብ ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"የቀኝ ድርብ ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"ሾተል"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"ድርብ ሾተል"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"የሺኛ ምልክት"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"ፕራይም"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"ድርብ ፕራይም"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"ነጠላ ግራ ጠቋሚ የማዕዘን ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"ነጠላ ቀኝ ጠቋሚ የማዕዘን ትዕምርተ ጥቅስ"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"ራስጌ አደር አራት"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"የራስጌ አደር ላቲን ንዑስ ሆሄ ኤን"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"የፔሶ ምልክት"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"ባለአደራ"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"የቀኝ ቀስት"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"የታች ቀስት"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"ባዶ ስብስብ"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"ጨምር"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"ያንሳል ወይም እክሉ ነው ከ"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"ይበልጣል ወይም እክሉ ነው ከ"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"ጥቁር ኮከብ"</string>
+</resources>
diff --git a/java/res/values-am/strings-talkback-descriptions.xml b/java/res/values-am/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..84c3cb0
--- /dev/null
+++ b/java/res/values-am/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"የይለፍ ቃል ቁልፎች ጮክ ተብለው ሲነገሩ ለመስማት የጆሮ ማዳመጫ ይሰኩ።"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"የአሁኑ ፅሁፍ %s ነው"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"ምንም ፅሁፍ አልገባም"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>ን ወደ <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> ያርመዋል"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> የራስ ሰር እርማት ያከናውናል"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"ያልታወቀ ቁምፊ"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"ቀይር"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"ተጨማሪ ምልክቶች"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"ምልክቶች"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"ሰርዝ"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"ምልክቶች"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"ደብዳቤዎች"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"ቁጥሮች"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"ቅንብሮች"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ትር"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"ባዶ ቦታ"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"የድምፅ ግቤት"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ኢሞጂ"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"ተመለስ"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"ፈልግ"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ነጥብ"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ቋንቋ ቀይር"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"ቀጣይ"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"ቀዳሚ"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"መቀያየሪያ ቁልፍ ነቅቷል"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"አብይ ፊደል ማድረጊያ ቁልፍ ነቅቷል"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"የምልክቶች ሁኔታ"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"የተጨማሪ ምልክቶች ሁነታ"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"የደብዳቤዎች ሁኔታ"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"የስልክ ሁኔታ"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"የስልክ ምልክቶች ሁኔታ"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"የቁልፍ ሰሌዳ ተደብቋል"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"የ<xliff:g id="KEYBOARD_MODE">%s</xliff:g> የቁልፍ ሰሌዳ በማሳየት ላይ"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ቀን"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ቀን እና ሰዓት"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ኢሜይል"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"መልዕክት መላላክ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"ቁጥር"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ስልክ"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ፅሁፍ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ጊዜ"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"ዩአርኤል"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"የቅርብ ጊዜዎቹ"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"ሰዎች"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ነገሮች"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ተፈጥሮ"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ቦታዎች"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"ምልክቶች"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ስሜት ገላጭ አዶዎች"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"አቢይ ሆሄ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"አቢይ ሆሄ አይ"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"አቢይ ሆሄ አይ፣ ነጥብ ከላይ"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"ያልታወቀ ምልክት"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"ያልታወቀ ስሜት ገላጭ ምስል"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"ተለዋጭ ቁምፊዎች ይገኛሉ"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"ተለዋጭ ቁምፊዎች ተሰናብተዋል"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ተለዋጭ የአስተያየት ጥቆማዎች ይገኛሉ"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"ተለዋጭ የአስተያየት ጥቆማዎች ተሰናብተዋል"</string>
+</resources>
diff --git a/java/res/values-am/strings.xml b/java/res/values-am/strings.xml
index 0b81034..7f5b322 100644
--- a/java/res/values-am/strings.xml
+++ b/java/res/values-am/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"ግቤት አማራጮች"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"የጥናት የምዝግብ ማስታወሻ ትዕዛዞች"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"የእውቅያ ስሞችን ተመልከት"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"ፊደል አራሚ ከእውቅያ ዝርዝርህ የገቡትን ይጠቀማል"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"በቁልፍመጫንጊዜ አንዝር"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"በቁልፍ መጫን ላይ የሚወጣ ድምፅ"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"ቁልፍ ጫን ላይ ብቅ ባይ"</string>
-    <string name="general_category" msgid="1859088467017573195">"አጠቃላይ"</string>
-    <string name="correction_category" msgid="2236750915056607613">"ፅሁፍ አስተካክል"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"በምልክት መተየብ"</string>
-    <string name="misc_category" msgid="6894192814868233453">"ሌሎች አማራጮች"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"የላቁ ቅንብሮች"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"ለብቁ ተጠቃሚዎች አማራጮች"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ወደ ሌሎች የግቤት ስልቶች ቀይር"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"የቋንቋ መቀየሪያ ቁልፍ ሌሎች የግቤት ስልቶችንም ይሸፍናል"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"የቋንቋ መቀየሪያ ቁልፍ"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"የስርዓት ነባሪ"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"የዕውቂያ ስም ጠቁም"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"ከዕውቂያዎች ለጥቆማዎች እና ማስተካከያዎች ስሞች ተጠቀም"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"ግላዊ የጥቆማ አስተያየቶች"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ን አሻሽል"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"የድርብ-ክፍተት ነጥብ"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"የክፍተት አሞሌው ላይ ሁለቴ መታ ማድረግ አንድ ነጥብ እና ክፍተት አስከትሎ ያስገባል"</string>
     <string name="auto_cap" msgid="1719746674854628252">"ራስ-ሰር አቢይ ማድረግ"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"ምልክት የሚሄድበት መንገድ አሳይ"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ተለዋዋጭ ተንሳፋፊ ቅድመ-እይታ"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ምልክት እየሰጡ ሳሉ በአስተያየት የተጠቆመው ቃል ይመልከቱ"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : ተቀምጧል"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"የይለፍቃል ቁልፎች ጮክ በለው ሲነገሩ ለመስማት የጆሮ ማዳመጫ ሰካ::"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"የአሁኑ ፅሁፍ %s ነው"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"ምንም ፅሁፍ አልገባም"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>ን ወደ <xliff:g id="CORRECTED">%3$s</xliff:g> ያርመዋል"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> ራስ-ሰር እርማትን ያከናውናል"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"የቁልፍ ኮድ%d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"ቀይር"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"ቅያር በርቷል (ለማሰናክል ንካ)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"አቢያት ማድረጊያ ቁልጥ በርቷል (ለማሰናክል ንካ)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"ሰርዝ"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"ምልክቶች"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"ደብዳቤዎች"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"ቁጥሮች"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"ቅንብሮች"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"ትር"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"ባዶ ቦታ"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"የድምፅ ግቤ ት"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"የፈገግታ ፊት"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"ተመለስ"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"ፍለጋ"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"ነጥብ"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"ቋንቋ ቀይር"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"ቀጣይ"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"ቀዳሚ"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"ቅያር ቁልፍ ነቅቷል"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"አቢያት ማድረጊያ ነቅቷል"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"ቅያር ተሰናክሏል"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"የምልክቶች ሁኔታ ላይ"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"የደብዳቤዎች ሁኔታ ላይ"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"የስልክ ሁኔታ ላይ"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"የስልክ ምልክቶች ሁኔታ ላይ"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"የቁልፍ ሰሌዳ ተደብቋል"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"የ<xliff:g id="MODE">%s</xliff:g> ቁልፍ ሰሌዳን በማሳየት ላይ"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"ቀን"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"ቀን እና ሰዓት"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"ኢሜይል"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"አላላክ"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"ቁጥር"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"ስልክ"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"ፅሁፍ"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ጊዜ"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"ዩ አር ኤል"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"የሐረግ ምልክት"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ምልክት በሚሰጡበት ጊዜ ወደ ክፍተት ቁልፉ በማንሸራተት ክፍተቶችን ያስገቡ"</string>
     <string name="voice_input" msgid="3583258583521397548">"የድምፅ ግቤት ቁልፍ"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"በዋናቁልፍ ሰሌዳ ላይ"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"በምልክቶች ቁልፍ ሰሌዳ ላይ"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"ውጪ"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ድምፅ ማጉያ በዋናው ቁልፍሰሌዳው ላይ"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"የድምፅ ማጉያ ምልክትበቁልፍ ሰሌዳላይ"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"የድምፅ ግቤት ቦዝኗል"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"ምንም የግቤት ስልቶች አልነቁም። የቋንቋ እና የግቤት ቅንብሮችን ይፈትሹ።"</string>
     <string name="configure_input_method" msgid="373356270290742459">"ግቤት ሜተዶችን አዋቀር"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"ቋንቋዎች አግቤት"</string>
     <string name="send_feedback" msgid="1780431884109392046">"ግብረ-መልስ ላክ"</string>
     <string name="select_language" msgid="3693815588777926848">"ቋንቋዎች አግቤት"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"ለማስቀመጥ እንደገና ንካ"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"መዝገበ ቃላት አለ"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"የተጠቃሚ ግብረ ምላሽ አንቃ"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"አጠቃቀም ስታስቲክስ እና የብልሽት ሪፖርቶችን በራስ-ሰር በመላክ ይህን ግቤት ስልት አርታዒ እንዲሻሻል ያግዙ።"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"የቁልፍ ሰሌዳ ገጽታ"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"እንግሊዘኛ (የታላቋ ብሪታንያ)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"እንግሊዘኛ (ዩ.ኤስ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"ስፓኒሽኛ (ዩኤስ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"እንግሊዘኛ (ዩናይትድ ኪንግደም) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"እንግሊዘኛ (አሜሪካ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"ስፓኒሽኛ (ዩኤስ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (ተለምዷዊ)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"እንግሊዝኛ (ዩኬ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"እንግሊዝኛ (አሜሪካ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ስፓኒሽ (አሜሪካ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ተለምዷዊ)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ሳይሪሊክ)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ላቲን)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"ምንም ቋንቋ (ፊደላት)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"ፊደላት (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"ፊደላት (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"ፊደላት (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"ፊደላት (ፒሲ)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"ኢሞጂ"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"የቀለም ዘዴ"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"ነጭ"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"ሰማያዊ"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"የተበጁ የግቤት ስታይሎች"</string>
     <string name="add_style" msgid="6163126614514489951">"ስታይል አክል"</string>
     <string name="add" msgid="8299699805688017798">"አክል"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"አንቃ"</string>
     <string name="not_now" msgid="6172462888202790482">"አሁን አልፈልግም"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ተመሳሳዩ የግብዓት ቅጥ አስቀድሞ አለ፦ <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"የተገልጋይነት ጥናት ሁነታ"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"የሰሌዳ ቁልፍ ጠቅታ በመጫን መዘግየት"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"የቁልፍ ጭነት ንዝረት ርዝመት"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"የቁልፍ ጭነት ድምጽ መጠን"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"ውጫዊ የመዝገበቃላት ፋይል አንብብ"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"በውርዶች አቃፊው ውስጥ ምንም የመዝገበ-ፋይሎች የሉም"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"የሚጭኑት የመዝገበ-ቃላት ፋይል ይምረጡ"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"እውን ይሄ ፋይል ለ<xliff:g id="LOCALE_NAME">%s</xliff:g> ይጫን?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"እውን ይሄ ፋይል ለ<xliff:g id="LANGUAGE_NAME">%s</xliff:g> ይጫን?"</string>
     <string name="error" msgid="8940763624668513648">"ስህተት ተከስቶ ነበር"</string>
     <string name="button_default" msgid="3988017840431881491">"ነባሪ"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"እንኳን ወደ <xliff:g id="APPLICATION_NAME">%s</xliff:g> በደህና መጡ"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"አድስ"</string>
     <string name="last_update" msgid="730467549913588780">"ለመጨረሻ ጊዜ የተዘመነው"</string>
     <string name="message_updating" msgid="4457761393932375219">"ዝማኔዎችን በመፈለግ ላይ"</string>
-    <string name="message_loading" msgid="8689096636874758814">"በመጫን ላይ..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"በመጫን ላይ…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"ዋና መዝገበ-ቃላት"</string>
-    <string name="cancel" msgid="6830980399865683324">"ሰርዝ"</string>
+    <string name="cancel" msgid="6830980399865683324">"ይቅር"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"ቅንብሮች"</string>
     <string name="install_dict" msgid="180852772562189365">"ጫን"</string>
-    <string name="cancel_download_dict" msgid="7843340278507019303">"ሰርዝ"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"ይቅር"</string>
     <string name="delete_dict" msgid="756853268088330054">"ሰርዝ"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"ተንቀሳቃሽ መሣሪያዎ ላይ ለተመረጠው ቋንቋ የሚሆን መዝገበ-ቃላት ይገኛል።&lt;br/&gt; የትየባ ተሞክሮዎን ለማሻሻል የ<xliff:g id="LANGUAGE">%1$s</xliff:g> መዝገበ-ቃላቱን &lt;b&gt;እንዲያወርዱ&lt;/b&gt; እንመክራለን።&lt;br/&gt; &lt;br/&gt; ውርዱ በ3ጂ ላይ አንድ ወይም ሁለት ደቂቃ ሊወስድ ይችላል። &lt;b&gt;ያልተገደበ የውሂብ ዕቅድ&lt;/b&gt; ከሌለዎት ክፍያዎች መከፈል ሊኖርባቸው ይችላል።&lt;br/&gt; የትኛው የውሂብ ዕቅድ እንዳለዎት እርግጠኛ ካልሆኑ ውርዱን በራስ-ሰር ለመጀመር የWi-Fi ግንኙነት እንዲፈልጉ እንመክራለን።&lt;br/&gt; &lt;br/&gt; ጠቃሚ ምክር፦ የተንቀሳቃሽ መሣሪያዎ &lt;b&gt;ቅንብሮች&lt;/b&gt; ምናሌ ውስጥ ወዳለው &lt;b&gt;ቋንቋ እና ግብዓት&lt;/b&gt; በመሄድ መዝገበ-ቃላትን ማውረድና ማስወገድ ይችላሉ።"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"በተንቀሳቃሽ መሣሪያዎ ላይ ለተመረጠው ቋንቋ የሚሆን መዝገበ-ቃላት ይገኛል።&lt;br/&gt; የትየባ ተሞክሮዎን ለማሻሻል የ<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> መዝገበ-ቃላቱን &lt;b&gt;እንዲያወርዱ&lt;/b&gt; እንመክራለን።&lt;br/&gt; &lt;br/&gt; ማውረድ በ3ጂ ላይ አንድ ወይም ሁለት ደቂቃ ሊወስድ ይችላል። &lt;b&gt;ያልተገደበ የውሂብ ዕቅድ&lt;/b&gt; ከሌለዎት ክፍያዎች መከፈል ሊኖርባቸው ይችላል።&lt;br/&gt; የትኛው የውሂብ ዕቅድ እንዳለዎት እርግጠኛ ካልሆኑ ውርዱን በራስ-ሰር ለመጀመር የWi-Fi ግንኙነት እንዲፈልጉ እንመክራለን።&lt;br/&gt; &lt;br/&gt; ጠቃሚ ምክር፦ የተንቀሳቃሽ መሣሪያዎ &lt;b&gt;ቅንብሮች&lt;/b&gt; ምናሌ ውስጥ ወዳለው &lt;b&gt;ቋንቋ እና ግብዓት&lt;/b&gt; በመሄድ መዝገበ-ቃላትን ማውረድና ማስወገድ ይችላሉ።"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"አሁን አውርድ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> ሜባ)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"በWi-Fi አውርድ"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"መዝገበ-ቃላት ለ<xliff:g id="LANGUAGE">%1$s</xliff:g> ይገኛል"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"የ<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> መዝገበ-ቃላት ማግኘት ይችላል"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"ለመገምገምና ለማውረድ ይጫኑ"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"በማውረድ ላይ፦ የ<xliff:g id="LANGUAGE">%1$s</xliff:g> ጥቆማ አስተያየቶች በቅርቡ ዝግጁ ይሆናሉ።"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"በማውረድ ላይ፦ ለ<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> የሚሰጡ ጥቆማዎች በቅርቡ ዝግጁ ይሆናሉ።"</string>
     <string name="version_text" msgid="2715354215568469385">"ሥሪት <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"አክል"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"ወደ መዝገበ-ቃላት አክል"</string>
diff --git a/java/res/values-ar-sw600dp/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-ar-sw600dp/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..d7aca6f
--- /dev/null
+++ b/java/res/values-ar-sw600dp/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <!-- U+061F: "؟" ARABIC QUESTION MARK
+         U+061B: "؛" ARABIC SEMICOLON -->
+    <string name="suggested_punctuations">!,&#x061F;,:,&#x061B;,\",\',(|),)|(,-,/,@,_</string>
+</resources>
diff --git a/java/res/values-ar/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-ar/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..21bb331
--- /dev/null
+++ b/java/res/values-ar/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,28 @@
+<?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">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <!-- U+061F: "؟" ARABIC QUESTION MARK
+         U+060C: "،" ARABIC COMMA
+         U+061B: "؛" ARABIC SEMICOLON -->
+    <string name="suggested_punctuations">!,&#x061F;,&#x060C;,:,&#x061B;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-ar/donottranslate.xml b/java/res/values-ar/donottranslate.xml
deleted file mode 100644
index 57de253..0000000
--- a/java/res/values-ar/donottranslate.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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">
-    <!-- The all letters need to be mirrored are found at
-         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
-    <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
-</resources>
diff --git a/java/res/values-ar/strings-action-keys.xml b/java/res/values-ar/strings-action-keys.xml
index 481b22f..6b2e4b2 100644
--- a/java/res/values-ar/strings-action-keys.xml
+++ b/java/res/values-ar/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"سابق"</string>
     <string name="label_done_key" msgid="7564866296502630852">"تم"</string>
     <string name="label_send_key" msgid="482252074224462163">"إرسال"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"بحث"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"توقف"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"انتظر"</string>
 </resources>
diff --git a/java/res/values-ar/strings-config-important-notice.xml b/java/res/values-ar/strings-config-important-notice.xml
new file mode 100644
index 0000000..7af5f6d
--- /dev/null
+++ b/java/res/values-ar/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"التعلم من اتصالاتك والبيانات التي تكتبها لتحسين الاقتراحات"</string>
+</resources>
diff --git a/java/res/values-ar/strings-letter-descriptions.xml b/java/res/values-ar/strings-letter-descriptions.xml
new file mode 100644
index 0000000..5067f6c
--- /dev/null
+++ b/java/res/values-ar/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"علامة ترتيب مؤنث"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"علامة ميكرو"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"علامة ترتيب مذكر"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring above"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dot above"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dot above"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dot above"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middle dot"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceded by apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring above"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dot above"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, comma below"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, comma below"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dot below"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook above"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve and acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve and grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve and hook above"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve and tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve and dot below"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dot below"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook above"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook above"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dot below"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dot below"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook above"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn and acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn and grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dot below"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook above"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn and acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn and grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dot below"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook above"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"علامة تعجب مقلوبة"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"علامة تنصيص ثنائية بزاوية تشير لليسار"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"نقطة متوسطة"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"واحد مرتفع"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"علامة تنصيص ثنائية بزاوية تشير لليمين"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"علامة استفهام مقلوبة"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"علامة تنصيص مفردة لليسار"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"علامة تنصيص مفردة لليمين"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"علامة تنصيص مفردة أسفل 9"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"علامة تنصيص مزدوجة لليسار"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"علامة تنصيص مزدوجة لليمين"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"علامة كل ميل"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"علامة تنصيص مفردة بزاوية تشير لليسار"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"علامة تنصيص مفردة بزاوية تشير لليمين"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"أربعة مرتفع"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript latin small letter n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso sign"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"سهم إلى اليمين"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"سهم لأسفل"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"زيادة"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"أصغر من أو يساوي"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"أكبر من أو يساوي"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"نجمة سوداء"</string>
+</resources>
diff --git a/java/res/values-ar/strings-talkback-descriptions.xml b/java/res/values-ar/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..bd2d7c6
--- /dev/null
+++ b/java/res/values-ar/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"يمكنك توصيل سماعة رأس لسماع مفاتيح كلمة المرور منطوقة بصوت عالٍ."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"‏النص الحالي هو %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"لم يتم إدخال نص"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> لتصحيح <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> إلى <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> لإجراء التصحيح التلقائي"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"حرف غير معروف"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"المزيد من الرموز"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"رموز"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"حذف"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"رموز"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"أحرف"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"أرقام"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"الإعدادات"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"مسافة"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"إدخال صوتي"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"رمز تعبيري"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"رجوع"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"بحث"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"نقطة"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"تبديل اللغة"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"التالي"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"السابق"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏تم تمكين Shift"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏تم تمكين Caps lock"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"وضع الرموز"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"المزيد من وضع الرموز"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"وضع الأحرف"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"وضع الهاتف"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"وضع رموز الهاتف"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"لوحة المفاتيح مخفية"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"إظهار لوحة مفاتيح <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"التاريخ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"التاريخ والوقت"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"بريد إلكتروني"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"مراسلة"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"رقم"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"هاتف"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"نص"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"الوقت"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"‏عنوان URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"الحديثة"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"أشخاص"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"كائنات"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"الطبيعة"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"أماكن"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"رموز"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"رموز تعبيرية"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> كبير"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"‏I كبير"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"رمز غير معروف"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"رمز تعبيري غير معروف"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"تتوفر الأحرف البديلة"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"تم تجاهل الأحرف البديلة"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"تتوفر الاقتراحات البديلة"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"تم تجاهل الاقتراحات البديلة"</string>
+</resources>
diff --git a/java/res/values-ar/strings.xml b/java/res/values-ar/strings.xml
index da33119..e76280d 100644
--- a/java/res/values-ar/strings.xml
+++ b/java/res/values-ar/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"خيارات الإرسال"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"أوامر سجلات البحث"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"بحث في أسماء جهات الاتصال"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"يستخدم المدقق الإملائي إدخالات من قائمة جهات الاتصال"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"اهتزاز عند ضغط مفتاح"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"صوت عند الضغط على مفتاح"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"انبثاق عند ضغط مفتاح"</string>
-    <string name="general_category" msgid="1859088467017573195">"عام"</string>
-    <string name="correction_category" msgid="2236750915056607613">"تصحيح النص"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"الكتابة بالإيماءة"</string>
-    <string name="misc_category" msgid="6894192814868233453">"خيارات أخرى"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"الإعدادات المتقدمة"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"خيارات للخبراء"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"التبديل إلى أسلوب إدخال آخر"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"يغطي مفتاح تبديل اللغات أساليب الإدخال الأخرى أيضًا"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"مفتاح تبديل اللغة"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"الإعداد الافتراضي للنظام"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"اقتراح أسماء جهات الاتصال"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"استخدام الأسماء من جهات الاتصال للاقتراحات والتصحيحات"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"اقتراحات مخصصة"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"تحسين <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"نقطة المسافة المزدوجة"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"يؤدي النقر نقرًا مزدوجًا على مفتاح المسافة إلى إدخال نقطة متبوعة بمسافة"</string>
     <string name="auto_cap" msgid="1719746674854628252">"أحرف كبيرة تلقائيًا"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"عرض مسار الإيماءة"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"معاينة نصوص متحركة ديناميكية"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"مشاهدة الكلمة المقترحة أثناء الإيماءة"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : تم الحفظ"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"يمكنك توصيل سماعة رأس لسماع مفاتيح كلمة المرور منطوقة بصوت عالٍ."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"‏النص الحالي هو %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"لم يتم إدخال نص"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> لتصحيح <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> إلى <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> للتصحيح التلقائي"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"‏رمز المفتاح %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"العالي"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"‏Shift يعمل (انقر للتعطيل)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"‏Caps lock يعمل (انقر للتعطيل)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"حذف"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"الرموز"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"أحرف"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"أرقام"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"الإعدادات"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"علامة تبويب"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"مسافة"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"إدخال صوتي"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"وجه مبتسم"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"رجوع"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"بحث"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"نقطة"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"تبديل اللغة"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"التالي"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"السابق"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"‏تم تمكين Shift"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"‏تم تمكين Caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"‏تم تعطيل Shift"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"وضع الرموز"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"وضع الأحرف"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"وضع الهاتف"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"وضع رموز الهاتف"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"لوحة المفاتيح مخفية"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"إظهار لوحة مفاتيح <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"التاريخ"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"التاريخ والوقت"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"البريد الإلكتروني"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"المراسلة"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"الرقم"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"الهاتف"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"النص"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"الوقت"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"‏عنوان URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"عبارة الإيماء"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"إدخال مسافات خلال الإيماءات من خلال تمرير مفتاح المسافة"</string>
     <string name="voice_input" msgid="3583258583521397548">"مفتاح الإدخال الصوتي"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"لوحة مفاتيح رئيسية"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"لوحة مفاتيح الرموز"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"إيقاف"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ميكروفون على لوحة مفاتيح رئيسية"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ميكروفون على لوحة مفاتيح الرموز"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"الإدخال الصوتي مُعطل"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"لم يتم تمكين أي أساليب إدخال صوتي. تحقق من إعدادات اللغة والإدخال."</string>
     <string name="configure_input_method" msgid="373356270290742459">"تهيئة طرق الإدخال"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"لغات الإدخال"</string>
     <string name="send_feedback" msgid="1780431884109392046">"إرسال تعليقات"</string>
     <string name="select_language" msgid="3693815588777926848">"لغات الإدخال"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"المس مرة أخرى للحفظ"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"القاموس متاح"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"تمكين ملاحظات المستخدم"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"المساعدة في تحسين محرر أسلوب الإدخال هذا من خلال إرسال إحصاءات الاستخدام وتقارير الأعطال تلقائيًا"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"مظهر لوحة المفاتيح"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"الإنجليزية (المملكة المتحدة)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"الإنجليزية (الولايات المتحدة)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"الإسبانية (الأميركية)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"الإنجليزية (المملكة المتحدة) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"الإنجليزية (الولايات المتحدة) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"الإسبانية (الأمريكية) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (التقليدية)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"الإنجليزية (المملكة المتحدة) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"الإنجليزية (الولايات المتحدة) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"الإسبانية (الولايات المتحدة) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (التقليدية)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (السريلية)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (اللاتينية)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"بدون لغة (أبجدية)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"‏الأبجدية (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"‏الأبجدية (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"‏الأبجدية (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"‏الأبجدية (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"الرموز التعبيرية"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"النمط اللوني"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"أبيض"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"أزرق"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"أنماط الإدخال المخصصة"</string>
     <string name="add_style" msgid="6163126614514489951">"إضافة نمط"</string>
     <string name="add" msgid="8299699805688017798">"إضافة"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"تمكين"</string>
     <string name="not_now" msgid="6172462888202790482">"ليس الآن"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"نمط الإدخال ذاته موجود من قبل: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"وضع سهولة الاستخدام"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"تأخير الضغط الطويل للمفاتيح"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"مدة اهتزاز الضغط على المفاتيح"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"مستوى صوت الضغط على المفاتيح"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"قراءة ملف قاموس خارجي"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ليست هناك ملفات قواميس في مجلد التنزيلات"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"تحديد ملف قاموس للتثبيت"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"هل تريد حقًا تثبيت هذا الملف للغة <xliff:g id="LOCALE_NAME">%s</xliff:g>؟"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"هل تريد حقًا تثبيت هذا الملف للغة <xliff:g id="LANGUAGE_NAME">%s</xliff:g>؟"</string>
     <string name="error" msgid="8940763624668513648">"حدث خطأ"</string>
     <string name="button_default" msgid="3988017840431881491">"الافتراضية"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"مرحبا بكم في <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"تحديث"</string>
     <string name="last_update" msgid="730467549913588780">"تاريخ آخر تحديث"</string>
     <string name="message_updating" msgid="4457761393932375219">"جارٍ البحث عن تحديثات"</string>
-    <string name="message_loading" msgid="8689096636874758814">"جارٍ التحميل..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"جارٍ التحميل…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"القاموس الرئيسي"</string>
     <string name="cancel" msgid="6830980399865683324">"إلغاء"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"إعدادات"</string>
     <string name="install_dict" msgid="180852772562189365">"تثبيت"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"إلغاء"</string>
     <string name="delete_dict" msgid="756853268088330054">"حذف"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"‏اللغة المحددة على جهازك الجوال تشتمل على قاموس متوفر.&lt;br/&gt; نوصي &lt;b&gt;بتنزيل&lt;/b&gt; قاموس <xliff:g id="LANGUAGE">%1$s</xliff:g> لتحسين تجربة الكتابة.&lt;br/&gt; &lt;br/&gt; قد يستغرق التنزيل دقيقة أو دقيقتين أكثر من المدة التي يستغرقها التنزيل عبر شبكة الجيل الثالث. قد تنطبق الرسوم إذا لم تكن مشتركًا في &lt;b&gt;خطة البيانات غير المحدودة&lt;/b&gt;.&lt;br/&gt; إذا لم تكن متأكدًا من خطة البيانات المتوفرة لديك، فنحن نوصي بالبحث عن اتصال Wi-Fi لبدء عملية التنزيل تلقائيًا.&lt;br/&gt; &lt;br/&gt; نصيحة: يمكنك تنزيل القواميس وإزالتها عن طريق الانتقال إلى &lt;b&gt;اللغة والإدخال&lt;/b&gt; في قائمة &lt;b&gt;إعدادات&lt;/b&gt; في جهازك الجوَّال."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"‏اللغة المحددة على جهازك الجوّال تشتمل على قاموس متوفر.&lt;br/&gt; نوصي &lt;b&gt;بتنزيل&lt;/b&gt; قاموس <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> لتحسين تجربة الكتابة.&lt;br/&gt; &lt;br/&gt; قد يستغرق التنزيل دقيقة أو دقيقتين عبر شبكة الجيل الثالث. قد تنطبق الرسوم إذا لم تكن مشتركًا في &lt;b&gt;خطة البيانات غير المحدودة&lt;/b&gt;.&lt;br/&gt; إذا لم تكن متأكدًا من خطة البيانات المتوفرة لديك، فنحن نوصي بالبحث عن اتصال Wi-Fi لبدء عملية التنزيل تلقائيًا.&lt;br/&gt; &lt;br/&gt; نصيحة: يمكنك تنزيل القواميس وإزالتها من خلال الانتقال إلى &lt;b&gt;اللغة والإدخال&lt;/b&gt; في القائمة &lt;b&gt;إعدادات&lt;/b&gt; في جهازك الجوّال."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"التنزيل الآن (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> ميغابايت)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"‏التنزيل عبر شبكة Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"هناك قاموس متوفر للغة <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"هناك قاموس متوفر للغة <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"اضغط للمراجعة والتنزيل"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"جارٍ التنزيل: ستتوفر اقتراحات للغة <xliff:g id="LANGUAGE">%1$s</xliff:g> بعد قليل."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"جارٍ التنزيل: ستتوفر اقتراحات للغة <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> قريبًا."</string>
     <string name="version_text" msgid="2715354215568469385">"الإصدار <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"إضافة"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"إضافة إلى القاموس"</string>
diff --git a/java/res/values-az-rAZ/strings-action-keys.xml b/java/res/values-az-rAZ/strings-action-keys.xml
new file mode 100644
index 0000000..1231370
--- /dev/null
+++ b/java/res/values-az-rAZ/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"Keç"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"Növbəti"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"Öncəki"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"Hazırdır"</string>
+    <string name="label_send_key" msgid="482252074224462163">"Göndər"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Axtarış"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"Pauza"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"Gözlə"</string>
+</resources>
diff --git a/java/res/values-az-rAZ/strings-appname.xml b/java/res/values-az-rAZ/strings-appname.xml
new file mode 100644
index 0000000..2fcb76c
--- /dev/null
+++ b/java/res/values-az-rAZ/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android Klaviatura (AOYP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android Orfoqrafik Yoxlanış (AOYP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android Klaviatura Parametrləri (AOYP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android Orfoqrafik Yoxlanış Parametrləri (AOYP)"</string>
+</resources>
diff --git a/java/res/values-az-rAZ/strings-config-important-notice.xml b/java/res/values-az-rAZ/strings-config-important-notice.xml
new file mode 100644
index 0000000..a5f1c61
--- /dev/null
+++ b/java/res/values-az-rAZ/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Əlaqələrdən və təkliflərin inkişafı üçün yazdığınız datadan öyrənin "</string>
+</resources>
diff --git a/java/res/values-az-rAZ/strings-emoji-descriptions.xml b/java/res/values-az-rAZ/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..b6c259f
--- /dev/null
+++ b/java/res/values-az-rAZ/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Müəllif hüququ nişanı"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Qeydiyyat nişanı"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"İki nida işarəsi"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Suallı nida işarəsi"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Ticarət nişanı"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"İnformasiya mənbəyi"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Sola-sağa ox"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Yuxarı-aşağı ox"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Şimal-qərb ox"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Şimal-şərq ox"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Cənub-şərq ox"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Cənub-qərb ox"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Qırmaqlı sola ox"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Qırmaqlı sağa ox"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"İzləyin"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Qum saatı"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Qara sağa ikiqat üçbucaq"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Qara sola ikiqat üçbucaq"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Qara yuxarı ikiqat üçbucaq"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Qara aşağı ikiqat üçbucaq"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Zəngli saat"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Axan qumlu qum saatı"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Çərçivəli böyük latın M hərfi"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Kiçik qara kvadrat"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Kiçik ağ kvadrat"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Qara sağa uçbucaq"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Qara sola üçbucaq"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Ağ orta kvadrat"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Qara orta kvadrat"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Ağ orta kiçik kvadrat"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Qara orta kiçik kvadrat"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Şüalı qara günəş"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Bulud"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Qara telefon"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Qeydli səsvermə qutusu"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Yağışlı çətir"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"İsti içki"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Yuxarı göstərən barmaq"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Ağ gülümsəyən sima"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Qoç"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Buğa"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Əkizlər"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Xərçəng"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Şir"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Qız"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Tərəzi"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Əqrəb"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Oxatan"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Oğlaq"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Dolça"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Balıqlar"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Qara nizə"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Qara xaç"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Qara ürək"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Qara romb"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"İsti bulaqlar"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Qara universal təkrar istifadə simvolu"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Təkərli kreslo"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Lövbər"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Xəbərdarlıq işarəsi"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Yüksək voltaj simvolu"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Orta ağ çevrə"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Orta qara çevrə"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Futbol topu"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Beysbol"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Qarsız qar adamı"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Bulud arxasında günəş"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"İlantutan"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Giriş qadağası"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Kilsə"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fəvvarə"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Deşikdə bayraq"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Yeklənli qayıq"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Çadır"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Yanacaq nasosu"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Qara qayçı"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Ağ qalın qeyd nişanı"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Təyyarə"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Zərf"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Qaldırılmış yumruq"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Qaldırılmış əl"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Qələbə əli"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Karandaş"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Qara pero"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Qalın qeyd nişanı"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Qalın x vurma işarəsi"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Qığılcımlar"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Səkkiz guşəli ulduz"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Səkkiz guşəli qara ulduz"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Qar dənəsi"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Qığılcım"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Çarpaz nişan"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Mənfi kvadratlı çarpaz nişan"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Qara sual işarəsi ornamenti"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Ağ sual işarəsi ornamenti"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Ağ nida işarəsi ornamenti"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Qalın nida işarəsi"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Yüklü qara ürək"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Qalın toplama işarəsi"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Qalın çıxma işarəsi"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Qalın bölmə işarəsi"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Qara sağa ox"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Burulmuş halqa"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"İki dəfə burulmuş halqa"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Yuxarı sağa əyilən ox"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Aşağı sağa əyilən ox"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Qara sola ox"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Qara yuxarı ox"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Qara aşağı ox"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Qara böyük kvadrat"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Ağ böyük kvadrat"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Ağ orta ulduz"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Böyük qalın çevrə"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Dalğalı tire"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Qismən dəyişmə işarəsi"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Çevrəli təbrik ideoqramı"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Çevrəli sirr ideoqramı"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahconq plitəsi qırmızı əjdaha"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Kart oyunu qara coker"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"A qan növü"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"B qan növü"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"O qan növü"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Parkinq yeri"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"AB qan növü"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"Kvadrat CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Kvadrat kul"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Kvadrat azad"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Kvadrat ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Kvadrat yeni"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Kvadrat N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Kvadrat OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Kvadrat SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Nidalı kvadrat"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Kvadrat vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Burada kvadrat katakana"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Kvadrat katakana xidməti"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Ödənişsiz kvadrat ideoqram"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Rezerv edilmiş yer kvadrat ideoqram"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Kvadrat qadağa ideoqramı"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Kvadrat vakansiya ideoqramı"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Kvadrat qəbul ideoqramı"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Kvadrat tam məşğulluq ideoqramı"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Kvadrat ödənilmiş ideoqramı"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Aylıq kvadrat ideoqram"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Kvadrat tətbiq ideoqramı"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Kvadrat endirim ideoqramı"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Kvadrat biznes ideoqramı"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Çevrəli üstünlük ideoqramı"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Çevrəli qəbul ideoqramı"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Siklon"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Dumanlı"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Bağlı çətir"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Ulduzlu gecə"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Dağların arxasından doğan günəş"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Günəşin doğuşu"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Toranlıqda şəhər peyzajı"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Binaların arxasında günün batması"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Göy qurşağı"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Gecə vaxtı körpü"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Su dalğası"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Vulkan"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Samanyolu"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Avropa-Afrika Yer Qlobusu"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Amerika Yer Qlobusu"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Asiya-Avstraliya Yer Qlobusu"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Meridianlı qlobus"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Yeni ay simvolu"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Böyüyən aypara simvolu"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"İlk rüb ay simvolu"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Böyüyən yumru ay simvolu"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Tam ay simvolu"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Kiçilən yumru ay simvolu"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Son rüb ay simvolu"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Kiçilən aypara simvolu"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Aypara"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Simalı yeni ay"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Simalı ilk rüb ayı"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Simalı son rüb ayı"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Simalı tam ay"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Simalı günəş"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Parlaq ulduz"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Düşən ulduz"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Şabalıd"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Fidan"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Həmişəyaşıl ağac"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Yarpaqlı ağac"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palma ağacı"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Kaktus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Zanbaq"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Albalı çiçəyi"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Qızılgül"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Əməköməci"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Günəbaxan"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Çiçək"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Qarğıdalı qıçası"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Düyü qıçası"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Ot"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Dörd yarpaqlı yonca"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Ağcaqayın yarpağı"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Düşmüş yarpaq"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Xəzan yarpağı"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Göbələk"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Pomidor"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Badımcan"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Üzüm"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Yemiş"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Qarpız"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Mandarin"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Lemon"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banan"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Ananas"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Qırmızı alma"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Yaşıl alma"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Armud"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Şaftalı"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Albalı"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Çiyələk"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Pizza dilimi"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Sümüklü ət"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Quş ayağı"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Düyü krekeri"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Düyü küftəsi"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Bişmiş düyü"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Karri və düyü"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Buxarlanan kasa"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spagetti"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Çörək"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Fransızsayağı kartof"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Qovrulmuş şirin kartof"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Danqo"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Suşi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Qızardılmış krevet"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Burulğan dizaynlı balıq piroqu"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Yumşaq dondurma"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Buz deserti"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Dondurma"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Ponçik"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Kökə"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Şokolad batonu"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Konfet"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Nabat"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Bişmiş krem"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Bal dibçəyi"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Dənəvər peçenye"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Bento qutusu"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Qazan"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Yeməkbişirmə"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Çəngəl-bıçaq"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Qulpsuz fincan"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Sake şüşəsi və fincan"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Şərab şüşəsi"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Kokteyl şüşəsi"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Tropik içki"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Pivə parçı"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Cingildəyən pivə parçları"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Uşaq qidası üçün şüşə"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Lent"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Bükülmüş hədiyyə"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Doğum günü tortu"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack fənəri"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Milad yolkası"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Şaxta Baba"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Fişəng"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Benqal odu fişəngi"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Şar"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Parti fişəngi"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Konfetti topu"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Tanabata ağacı"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Çarpaz bayraqlar"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Küknar dekorasiyası"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Yapon kuklaları"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Karp strimer"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Külək uğultusu"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Aya tamaşa mərasimi"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Məktəb çantası"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Akademik papaq"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Karusel at"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Mənzərə çarxı"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Dalğalı yelləncək"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Qırmaq və balıq"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Mikrofon"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Film kamerası"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Kino"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Qulaqlıq"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Rəssam palitrası"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Sehrbaz papağı"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Sirk çadırı"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Bilet"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Çəkiliş lövhəsi"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Tətbiqi incəsənət"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Video oyun"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Birbaşa zərbə"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Oyun avtomatı"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Bilyard"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Zər oyunu"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Boulinq"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Güllü oyun kartları"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Musiqili qeyd"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Çoxsaylı musiqili qeyd"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saksafon"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Gitara"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Musiqili klaviatura"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Truba"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Skripka"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Musiqi qiyməti"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Kəmərli qaçış köynəyi"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Tennis raketi və topu"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Xizək və xizək çəkməsi"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Basketbol və çənbər"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Dama-dama bayraq"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snoubordçu"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Qaçışçı"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Sörfçü"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Kubok"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"At yarışması"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Amerikan futbolu"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Reqbi Futbolu"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Üzgüçü"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Ev tikintisi"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Bağçalı ev"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Ofis binası"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Yapon poçt ofisi"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Avropa poçt ofisi"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Hospital"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Bank"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Bankomat"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Otel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Sevgi oteli"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Qarışıq mallar dükanı"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Məktəb"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Univermaq"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Zavod"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Izakaya fənəri"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Yapon qalası"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Avropa qalası"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Siçovul"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Siçan"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Öküz"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Su camışı"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"İnək"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopard"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Dovşan"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Pişik"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Əjdaha"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Timsah"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Balina"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"İlbiz"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"İlan"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"At"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Qoç"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Keçi"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Qoyun"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Meymun"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Xoruz"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Cücə"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"İt"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Donuz"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Qaban"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Fil"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Osminoq"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"İlbiz qabığı"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Böcək"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Qarışqa"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Bal arısı"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Parabüzən"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Balıq"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Tropik balıq"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Şar balığı"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Tısbağa"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Yumurtadan çıxan cücə"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Balaca cücə"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Önə baxan balaca cücə"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Quş"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Pinqvin"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Pudel"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Bir hörgüclü dəvə"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"İki hörgüclü dəvə"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Delfin"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Siçan sifəti"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"İnək sifəti"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Pələng sifəti"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Dovşan sifəti"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Pişik sifəti"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Əjdaha sifəti"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Fontan vuran balina"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"At sifəti"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Meymun sifəti"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"İt sifəti"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Donuz sifəti"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Qurbağa sifəti"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Xomyak sifəti"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Canavar sifəti"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Ayı sifəti"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Panda sifəti"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Donuz burnu"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Pəncə izləri"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Gözlər"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Qulaq"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Burun"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Ağız"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Dil"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Yuxarı işarə edən ağ rəngli əl indeksi"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Aşağı işarə edən ağ rəngli əl indeksi"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Sola işarə edən ağ rəngli əl indeksi"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Sağa işarə edən ağ rəngli əl indeksi"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Yumruq işarəsi"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Yellənən əl işarəsi"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Ok əl işarəsi"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Yuxarı baş barmaq işarəsi"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Aşağı baş barmaq işarəsi"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Çalan əllər işarəsi"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Açıq əllər işarəsi"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Tac"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Qadın papağı"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Eynək"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Qalstuk"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Qısaqol köynək"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Cins"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Don"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Qadın geyimi"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Pulqabı"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Çanta"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Kisə"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Kişi ayaqqabısı"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"İdmançı ayaqqabısı"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Dikdaban ayaqqabı"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Qadın sandalı"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Qadın çəkməsi"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Ayaq izi"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Büst silueti"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Büst siluetləri"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Oğlan"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Qız"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Kişi"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Qadın"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Ailə"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Qadın və kişi əl-ələ tutur"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"İki kişi əl-ələ tutur"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"İki qadın əl-ələ tutur"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Polis içşisi"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Dövşanqulaq qadın"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Duvaqlı gəlin"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Sarı saçlı adam"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Qua pi maolu kişi"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Çalmalı kişi"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Yaşlı kişi"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Yaşlı qadın"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Uşaq"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Fəhlə"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Şahzadə"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Yapon oqru"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Yapon qoblini"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Ruh"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Uşaq mələk"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Yad planetli"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Yad planetli qulyabani"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"İmp"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Kəllə"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Qəbul bölməsi adamı"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Keşikçi"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Rəqqas"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Dodaq boyası"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Dırnaq boyası"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Üz masajı"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Saç düzümü"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Bərbərxana"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Şpris"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Həb"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Öpüş izi"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Sevgi məktubu"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Zəng"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Qiymətli daş"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Öpüş"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Buket"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Ürəkli cütlük"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Toy"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Ürək döyüntüsü"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Sınmış qəlb"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"İki ürək"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Parlaq ürək"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Böyüyən ürək"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Oxlu ürək"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Göy ürək"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Yaşıl ürək"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Sarı ürək"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Bənövşəyi ürək"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Lentli ürək"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Fırlanan ürək"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Ürək bəzəyi"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Nöqtəli brilliant"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Elektrik lampası"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Hirs simvolu"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bomba"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Yuxu işarəsi"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Partlayış"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Tər işarəsi"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Damcı"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Tire simvolu"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Kakaşka"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Biseps əzələ"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Başgicəllənmə"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Nitq balonu"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Fikir balonu"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Ağ gül"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Yüz xal simvolu"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Pul kisəsi"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Valyuta mübadiləsi"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Ağır dollar işarəsi"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Kredit kartı"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Yen işarəli əskinaz"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Dollar nişanlı əskinaz"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Avro işarəli əskinaz"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Funt işarəli əskinaz"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Qanadlı pul"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Qalxan diaqram və yen işarəsi"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Oturacaq"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Şəxsi kompüter"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Portfel"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Mini disk"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Disket"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Optik disk"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Fayl qovluğu"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Açıq fayl qovluğu"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Qatlanmış səhifə"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Səhifə"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Təqvim"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Qoparılan təqvim"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Kart indeksi"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Qalxan diaqram"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Düşən diaqram"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Panel diaqramı"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Pano"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Basmadüymə"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Yumru basmadüymə"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Skrepka"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Düz xətkeş"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Üçbücaq xətkeş"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Əlfəcin tabları"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Qovluq"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Bloknot"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Bəzəkli bloknot"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Qapalı kitab"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Açıq kitab"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Yaşıl kitab"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Göy kitab"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Narıncı kitab"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Kitablar"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Ad kartı"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Tomar"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memo"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telefon qəbuledici"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Peycer"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Faks cihazı"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Peyk antennası"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Dinamik səsyüksəldici"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Səsyüksəldici"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Göndəriləcək sənəd siyirməsi"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Gələn sənəd siyirməsi"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Paket"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"E-poçt simvolu"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Gələn zərf"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Üstündə aşağı ox olan zərf"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Enmiş bayraqlı qapalı poçt qutusu"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Qalxmış bayraqlı qapalı poçt qutusu"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Qalxmış bayraqlı açıq poçt qutusu"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Enmiş bayraqlı açıq poçt qutusu"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Poçt qutusu"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Poçt buynuzu"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Qəzet"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobil telefon"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Solunda sağa oxlu mobil telefon"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Vibrasiya rejimi"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Sönmüş mobil telefon"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Mobil telefon qadağası"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Şəbəkə dalğası"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Kamera"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Videokamera"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Televiziya"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videokasset"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Sağa əyilmiş oxlar"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Saat əqrəbi istiqamətində sağa və sola açıq çevrəli oxlar"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Çevrəyə alınmış saat əqrəbi istiqamətində sağa və sola açıq çevrəli oxlar"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Saat əqrəbi istiqamətində aşağı və yuxarı açıq çevrəli oxlar"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Saat əqrəbi istiqaməti əksinə aşağı və yuxarı açıq çevrəli oxlar"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Alçaq parlaqlıq simvolu"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Yüksək parlaqlıq simvolu"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Ləğv edilmə xətli dinamik"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Dinamik"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Bir xətli dinamik"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Üç xətli dinamik"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Batareya"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Elektrik ştepseli"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Sola əyilmiş lupa"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Sağa əyilmiş lupa"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Dolma qələmli kilid"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Açarlı bağlı kilid"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Açar"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Kilid"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Açıq kilid"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Zəng"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Ləğv edilmiş zəng"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Əlfəcin"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Link simvolu"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Radio düyməsi"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Üzərində sola ox olan back simvolu"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Üzərində sola ox olan end simvolu"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Üzərində sola sağa ox olan nida işarəli on simvolu"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Üzərində sağa ox olan soon simvolu"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Üzərində yuxarı ox olan top simvolu"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"On səkkiz yaşdan aşağı qadağası"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Klaviş qapağı on"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Böyük latın hərfləri üçün daxiletmə simvolu"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Kiçik latın hərfləri üçün daxiletmə simvolu"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Rəqəmlər üçün daxiletmə simvolu"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Simvollar üçün daxiletmə simvolu"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Latın hərfləri üçün daxiletmə simvolu"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Alov"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Cib fənəri"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Qaz açarı"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Çəkic"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Bolt və qayka"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hoço"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Tapança"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Mikroskop"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Teleskop"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Büllur kürə"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Ortasında nöqtə olan altı guşəli ulduz"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Başlayan üçün yapon simvolu"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Üçdişli emblem"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Qara kvadrat düyməsi"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Ağ kvadrat düyməsi"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Böyük qırmızı çevrə"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Böyük göy çevrə"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Böyük narıncı brilliant"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Böyük göy brilliant"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Kiçik narıncı brilliant"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Kiçik göy brilliant"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Yuxarı göstərən qırmızı üçbucaq"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Aşağı göstərən qırmızı üçbucaq"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Yuxarı göstərən kiçik qırmızı üçbucaq"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Aşağı göstərən kiçik qırmızı üçbucaq"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Saat bir"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Saat iki"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Saat üç"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Saat dörd"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Saat beş"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Saat altı"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Saat yeddi"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Saat səkkiz"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Saat doqquz"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Saat on"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Saat on bir"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Saat on iki"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Saat ikinin yarısı"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Saat üçün yarısı"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Saat dördün yarısı"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Saat beşin yarısı"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Saat altının yarısı"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Saat yeddinin yarısı"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Saat səkkizin yarısı"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Saat doqquzun yarısı"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Saat onun yarısı"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Saat on birin yarısı"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Saat on ikinin yarısı"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Saat birin yarısı"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Fudzi dağı"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokio qülləsi"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Azadlıq heykəli"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Yaponiya silueti"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Gülümsəyən gözlərlə sima"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Sevinc göz yaşları ilə sima"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Açıq ağızla gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Açıq ağızlı, gülən gözlərlə gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Açıq ağızlı, soyuq tərli gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Açıq ağızlı, qapalı gözlü gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Nimbalı gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Buynuzlu gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Göz vuran sima"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Gülən gözlərlə gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Dadlı yemək yeyən sima"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Azad sima"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Ürək formalı gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Gün eynəkli gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Oğruncasına gülümsəyən sima"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Neytral sima"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"İfadəsiz sima"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Bezmiş sima"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Soyuq tərli sima"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Fikirli sima"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Çaşqın sima"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Məəttəl sima"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Öpən sima"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Öpüş atan sima"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Gülən gözlərlə öpən sima"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Bağlı gözlərlə öpən sima"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Dil çıxaran sima"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Dil çıxaran və göz vuran sima"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Qapalı gözlərlə dil çıxaran sima"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Məyus sima"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Narahat sima"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Hirsli sima"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"İncimiş sima"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Ağlayan sima"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"İnadlı sima"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Triumf baxışlı sima"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Məyus, lakin azad sima"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Mısmırıqlı sima"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Ağrılı sima"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Qorxan sima"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Bezmiş sima"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Yuxulu sima"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Yorğun sima"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Qırışdırılmış sima"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Hönkür-hönkür ağlayan sima"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Açıq ağızlı sima"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Susmağa məcbur sima"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Açıq ağızlı soyuq tərli sima"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Qorxudan qışqıran sima"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Heyran sima"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Qızarmış sima"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Yatan sima"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Gicəllənən sima"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Ağızsız sima"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Tibbi maskalı sima"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Gülən gözlərlə oğrun gülümsəyən pişik siması"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Sevinc göz yaşları ilə pişik siması"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Açıq ağızlı gülümsəyən pişik siması"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Ürəkli gözlərlə gülümsəyən pişik siması"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"İkrahlı təbəssümlü pişik siması"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Bağlı gözlərlə öpən pişik siması"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"İncimiş pişik siması"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Ağlayan pişik siması"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Bezmiş pişik siması"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Qadağa jestl sima"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Ok jestli sima"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Baş əyən adam"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Gözünü tutmuş meymun"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Qulağını tutmuş meymun"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Ağzını tutmuş meymun"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Əlini qaldırmış xoşbəxt adam"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Mərasimdə əllərini qaldırmış adam"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Mısmırıqlı adam"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"İncimiş adam"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Əllərini birləşdirmiş adam"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Raket"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helikopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Parovoz"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Dəmiryol maşını"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Sürətli qatar"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Gülləburun sürətli qatar"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Qatar"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Monorels"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Stansiya"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tramvay"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Tramvay avtomobil"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Avtobus"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Gələn avtobus"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Trolleybus"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Avtobus dayanacağı"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibus"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulans"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Yanğınsöndürən maşın"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Polis maşını"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Gələn polis maşını"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taksi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Gələn taksi"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Avtomobil"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Gələn avtomobil"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Rahatlıq avtomobili"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Yükdaşıyan maşın"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Avtoqatar"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Traktor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monorels"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Dağ dəmir yolu"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Asma dəmiryol"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Dağ kabel yolu"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Asma kanat yolu"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Gəmi"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Avarlı qayıq"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Sürətli qayıq"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Horizontal svetofor"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Vertikal işıqfor"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Tikinti nişanı"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Yanar mayaklı polis maşınları"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Poçtda üçbucaq bayraq"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Qapı"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Giriş qadağası siqnalı"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Siqaret çəkmək simvolu"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Siqaret qadağası simvolu"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Zibili zibil yeşiyinə atmaq simvolu"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Zibilləmək qadağası simvolu"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"İçməli su simvolu"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Texniki su simvolu"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Velosiped"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Velosiped qadağası"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Velosipedçi"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Dağ velosipedçisi"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Piyada"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Piyada qadağası"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Yol keçən uşaqlar"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Kişi simvolu"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Qadın simvolu"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Dincəlmə otağı"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Uşaq simvolu"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Tualet"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Unitaz"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Duş"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Hamam"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Vanna"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Pasport nəzarəti"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Gömrük"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Baqaj iddiası"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Qalmış baqaj"</string>
+</resources>
diff --git a/java/res/values-az-rAZ/strings-letter-descriptions.xml b/java/res/values-az-rAZ/strings-letter-descriptions.xml
new file mode 100644
index 0000000..1d0800b
--- /dev/null
+++ b/java/res/values-az-rAZ/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Qadın sıra göstəricisi"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro işarə"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Kişi sıra göstəricisi"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Esset"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, qrav"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, akut"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilda"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, umlaut"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, üstündə çevrə"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, liqatur"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, sedil"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, qrav"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, akut"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, umlaut"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, qrav"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, akut"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, umlaut"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilda"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, qrav"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, akut"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilda"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, umlaut"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, diaqonal xətli"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, qrav"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, akut"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, umlaut"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, akut"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Torn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, umlaut"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, brev"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, oqonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, akut"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, sirkumfleks"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, üstü nöqtəli"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, karon"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, karon"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, diaqonal xətli"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, brev"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, üstü nöqtəli"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, oqonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, karon"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, sirkumfleks"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, brev"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, üstü nöqtəli"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, sedil"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, sirkumfleks"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, diaqonal xətli"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilda"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, brev"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, oqonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Nöqtəsiz I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, liqatur"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, sirkumfleks"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, sedil"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, akut"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, sedil"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, karon"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, ortası nöqtəli"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, diaqonal xətli"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, akut"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, sedil"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, karon"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, apostrofdan sonra"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, brev"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, cüt akut"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, liqatur"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, akut"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, sedil"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, karon"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, akut"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, sirkumfleks"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, sedil"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, karon"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, sedil"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, karon"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, diaqonal xətli"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilda"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, brev"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, üstü çevrəli"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, cüt akut"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, oqonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, sirkumfleks"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, sirkumfleks"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, akut"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, üstü nöqtəli"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, karon"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Uzun S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, buynuz"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, buynuz"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, altı vergüllü"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, altı vergüllü"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Şva"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, sirkumfleks və akut"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, sirkumfleks və qrav"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, sirkumfleks və üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, sirkumfleks və tilda"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, sirkumfleks və altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, brev və akut"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, brev və qrav"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, brev və üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, brev və tilda"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, brev və altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilda"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, sirkumfleks və akut"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, sirkumfleks və qrav"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, sirkumfleks və üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, sirkumfleks və tilda"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, sirkumfleks və altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, sirkumfleks və akut"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, sirkumfleks və qrav"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, sirkumfleks və üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, sirkumfleks və tilda"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, sirkumfleks və altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, buynuz və akut"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, buynuz və qrav"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, buynuz və üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, buynuz və tilda"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, buynuz və altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, buynuz və akut"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, buynuz və qrav"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, buynuz və üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, buynuz və tilda"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, buynuz və altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, qrav"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, altı nöqtəli"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, üstü qarmaqlı"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilda"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Tərs nida işarəsi"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Sol gilemet"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"ortası nöqtəli"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Üst indeks bir"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Sağ gilemet"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Tərs sual işarəsi"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Sol tək sitat işarəsi"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Sağ tək sitat işarəsi"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Tək alt-9 sitat işarəsi"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Sol cüt sitat işarəsi"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Sağ cüt sitat işarəsi"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Xəncər"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"İkiqulplu xəncər"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Praym"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Cüt praym"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Tək sol gilemet"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Tək sağ gilemet"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Üst indeks dörd"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Üst indeks latın kiçik n hərfi"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Sağa ox"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Aşağıya ox"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Boş çoxluq"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Artım"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kiçik və ya bərabər"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Böyük və ya bərabər"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Qara ulduz"</string>
+</resources>
diff --git a/java/res/values-az-rAZ/strings-talkback-descriptions.xml b/java/res/values-az-rAZ/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..8f23627
--- /dev/null
+++ b/java/res/values-az-rAZ/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Parolu səsli eşitmək üçün qulaqlığı taxın."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Cari mətn %s\'dir"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Mətn daxil edilməyib"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sözünü <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> sözü ilə əvəzləyərək düzəldir"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> avto-korreksiyanı həyata keçirir"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Naməlum simvol"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Sürüşdürmə"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Daha çox simvol"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Sürüşdürmə"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simvollar"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Sürüşdürmə"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Sil"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simvollar"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Hərflər"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Nömrələr"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Ayarlar"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Boşluq"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Səs daxiletməsi"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Geri qayıt"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Axtarış"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Nöqtə"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Dil keçidi"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Növbəti"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Əvvəlki"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Sürüşdürmə aktivdir"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Böyük hərf kilidi aktivdir"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simvol rejimi"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Daha çox simvol rejimi"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Hərf rejimi"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefon rejimi"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefon simvol rejimi"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Gizlədilmiş klaviatura"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> klaviaturası göstərilir"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"tarix"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"gün və tarix"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"E-poçt"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mesajlaşma"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"nömrə"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"mesaj"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"vaxt"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Sonuncular"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Adamlar"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Obyektlər"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Təbiə"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Yerlər"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simvollar"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikonlar"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Böyük <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Böyük I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Böyük I, üstü nöqtəli"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Naməlum rəmz"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Naməlum emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternativ simvollar əlçatandır"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativ simvollar kənarlaşdırılıb"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternativ təkliflər əlçatandır"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativ təkliflər kənarlaşdırılıb"</string>
+</resources>
diff --git a/java/res/values-az-rAZ/strings.xml b/java/res/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..dea1f60
--- /dev/null
+++ b/java/res/values-az-rAZ/strings.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"Daxiletmə seçimləri"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontakt adlarına baxın"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Orfoqrafik yoxlanış kontakt siyahınızdakı qeydlərdən istifadə edir"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrasiyalı klikləmə"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"Klikləmə səsi"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"Klikləmədə popup"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Daxiletmə tərcihləri"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Görünüş"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Çoxdilli seçimlər"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Jest ilə yazı tərcihləri"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Mətn korreksiyası"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Qabaqcıl"</string>
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Digər daxiletmə metodlarına keçin"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Dil keçid düyməsi başqa daxiletmə metodlarını da əhatə edir"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"Dil keçidi düyməsi"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Çoxsaylı daxiletmə dilləri aktivləşdikdə göstər"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Slayd indikatorunu göstər"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Sürüşdürmə və ya Simvol düymələrinə keçərkən vizual işarəni göstər"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Klaviş popup kənarlaşdırılmasında gecikmə"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Gecikmə yoxdur"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Varsayılan"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> millisaniyə"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"Sistem defoltu"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"Kontakt adları təklif edin"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Təklif və korreksiya üçün Kontaktlardakı adlardan istifadə edin"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Fərdiləşmiş təkliflər"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> inkişaf etdirin"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"İkili boşluq periodu"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Boşluqdakı iki klik boşluqdan sonra pauza daxil edir"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Avtomatik böyük hərfləşmə"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"Hər cümlənin ilk sözünü böyük hərflə yaz"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Şəxsi lüğət"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Əlavə lüğətlər"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"Əsas lüğət"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Korreksiya təkliflərini göstər"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Yazarkən təklif edilən sözləri ekranda göstər"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Həmişə göstər"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Portret rejimində göstər"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Həmişə gizlət"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Təhqiredici sözləri əngəlləyin"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Potensial təhqiredici sözlər təklif etməyin"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"Avtomatik-korreksiya"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"Boşluq və punktuasiya avtomatik yanlış sözləri düzəldir"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Deaktiv"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Orta"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Aqressiv"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Çox aqressiv"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"Növbəti-söz təklifləri"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Təkliflər edilməsində əvvəlki sözdən istifadə et"</string>
+    <string name="gesture_input" msgid="826951152254563827">"Jestlərlə yazmağı aktiv et"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"Hərflər üzərində sürüşdürərək söz daxil edin"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"Jest izini göstər"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamik üzmə önizləməsi"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Jest zamanı təklif edilmiş sözə baxın"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Jest bildirin"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Jest zamanı boşluq düyməsinə toxunmaqla boşluq daxil edin"</string>
+    <string name="voice_input" msgid="3583258583521397548">"Səs daxiletmə klavişi"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Heç bir səs daxiletmə metodu aktiv deyil. Dil və daxiletmə ayarlarını yoxlayın."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"Daxiletmə üsullarını sazla"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"Daxiletmə dilləri"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"Cavab rəyi göndərin"</string>
+    <string name="select_language" msgid="3693815588777926848">"Daxiletmə dilləri"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Yadda saxlamaq üçün yenidən toxunun"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"Lüğət mövcuddur"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatura teması"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"İngilis (BK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"İngilis (ABŞ)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"İspan (ABŞ)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"İngilis (Britaniya) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"İngilis (Amerika) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"İspan (Amerika) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Ənənəvi)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Kiril)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latın)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"Dil yoxdur (Əlifba)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Əlifba (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Əlifba (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Əlifba (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Əlifba (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Əlifba (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Əlifba (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Klaviatura teması"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Holo Ağ"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Holo Göy"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Material Tünd"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Material Açıq"</string>
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"Xüsusi daxiletmə üslubları"</string>
+    <string name="add_style" msgid="6163126614514489951">"Stil əlavə et"</string>
+    <string name="add" msgid="8299699805688017798">"Əlavə et"</string>
+    <string name="remove" msgid="4486081658752944606">"Ləğv et"</string>
+    <string name="save" msgid="7646738597196767214">"Yadda saxla"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"Dil"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"Tərtibat"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Xüsusi daxiletmə üslubunuz istifadəyə başlamazdan əvvəl aktivləşdirilməlidir. Aktiv etmək istəyirsiniz?"</string>
+    <string name="enable" msgid="5031294444630523247">"Aktiv et"</string>
+    <string name="not_now" msgid="6172462888202790482">"İndi yox"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Eyni daxiletmə üslubu artıq mövcuddur: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Klavişi uzun müddət basmada gecikmə"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrasiyalı klikləmə müddəti"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Səsli klikləmə səsi"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Xarici lüğət faylını oxuyun"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Endirmə Qovluğunda heç bir lüğət faylı yoxdur"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Yükləmək üçün lüğət faylı seçin"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> üçün faylı quraşdırmaq istədiyinizə əminsiniz?"</string>
+    <string name="error" msgid="8940763624668513648">"Xəta var idi"</string>
+    <string name="button_default" msgid="3988017840431881491">"Defolt"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> təbiqinə xoş gəlmisiniz"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"Jest Yazısı ilə"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"Başlayın"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"Növbəti addım"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> quraşdırılır"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> tətbiqini aktivləşdir"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"Lütfən, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" tətbiqini Dil və daxiletmə parametrlərinizdə yoxlayın. Bununla tətbiqin cihazınızda işləməsinə icazə veriləcək."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> artıq sizin Dil və daxiletmə parametrlərinizdə aktivləşdirildi, beləliklə da bu mərhələ tamamlandı. İndi isə növbəti mərhələyə eçin!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"Parametrlərdə aktivləşdir"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> tətbiqinə keçin"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"Sonra, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" tətbiqini aktiv mətn-daxiletmə metodu olaraq seçin."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"Daxil metodlarına keç"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"Təbrik edirik, tam hazırsınız!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"İndi siz <xliff:g id="APPLICATION_NAME">%s</xliff:g> ilə bütün sevimli tətbiqlərinizdə yaza bilərsiniz."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"Əlavə dillər quraşdır"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"Sona çatdı"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Tətbiq ikonasını göstər"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Başlatma panelində tətbiq ikonasını göstər"</string>
+    <string name="app_name" msgid="6320102637491234792">"Lüğət Provayderi"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"Lüğət Provayderi"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"Lüğət Xidməti"</string>
+    <string name="download_description" msgid="6014835283119198591">"Lüğət yeniləmə məlumatı"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Əlavə lüğətlər"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Lüğət mövcuddur"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Lüğət üçün ayarlar"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"İstifadəçi lüğətləri"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"İstifadəçi lüğəti"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"Lüğət mövcuddur"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"Hazırda endirilir"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"Quraşdırılıb"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"Quraşdırılıb, deaktiv edilib"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Lüğət xidmətinə bağlantı problemi"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"Lüğət mövcud deyil"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"Təzələ"</string>
+    <string name="last_update" msgid="730467549913588780">"Son yeniləmə"</string>
+    <string name="message_updating" msgid="4457761393932375219">"Güncəlləmələr yoxlanılır"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Yüklənir..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"Əsas lüğət"</string>
+    <string name="cancel" msgid="6830980399865683324">"Ləğv et"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Ayarlar"</string>
+    <string name="install_dict" msgid="180852772562189365">"Quraşdırın"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"Ləğv et"</string>
+    <string name="delete_dict" msgid="756853268088330054">"Sil"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Mobil telefonunuzda seçilmiş dilin əlçatımlı lüğəti var. Daha rahat yazmaq üçün <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> lüğətini endirməyinizi məsləhət görürük. Lüğətin endirilməsi 3G üzərindən bir-iki dəqiqə vaxt ala bilər. Limitsiz data planınızın olmadığı halda, data ödənişləri də tətbiq edilə bilər. Əgər hansı data planına malik olmağınıza əmin deyilsinizsə, Sizə Wi-Fi bağlantısı üzərindən avtomatik endirməyi məsləhət görürük.  İpucu: Lüğətləri endirmək və ya sistemdən silmək üçün mobil cihazınızın menyusunda Ayarlar&gt;Dil&gt;Daxiletmə bölməsinə keçə bilərsiniz."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"İndi endirin (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi ilə endir"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> üçün lüğət əlçatımlıdır"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"Nəzərdən keçirmək və endirmək üçün klikləyin"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Endirmə: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> üçün təkliflər tezliklə hazır olacaq."</string>
+    <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> nömrəli versiya"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Əlavə edin"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Lüğətə əlavə edin"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"İfadə"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Daha çox seçim"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Daha az seçim"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"OK"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Söz:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Qısayol:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Dil:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Bir söz yazın"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Könüllü qısayol"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Sözü redaktə edin"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Düzəliş edin"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Silin"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"İstifadəçi lüğətinizdə heç bir söz yoxdur. Əlavə et (+) düyməsinə toxunmqla bir söz əlavə edin."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Bütün dillər üçün"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Digər dillər​​..."</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"Silin"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-be/bools.xml b/java/res/values-be-rBY/bools.xml
similarity index 100%
rename from java/res/values-be/bools.xml
rename to java/res/values-be-rBY/bools.xml
diff --git a/java/res/values-be/strings-action-keys.xml b/java/res/values-be-rBY/strings-action-keys.xml
similarity index 100%
rename from java/res/values-be/strings-action-keys.xml
rename to java/res/values-be-rBY/strings-action-keys.xml
diff --git a/java/res/values-be/strings-appname.xml b/java/res/values-be/strings-appname.xml
deleted file mode 100644
index 2f9593b..0000000
--- a/java/res/values-be/strings-appname.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="english_ime_name" msgid="5940510615957428904">"Клавіятура Android (AOSP)"</string>
-    <string name="spell_checker_service_name" msgid="1254221805440242662">"Iнструмент праверкi правапiсу для Android (AOSP)"</string>
-    <string name="english_ime_settings" msgid="5760361067176802794">"Налады клавіятуры Android (AOSP)"</string>
-    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Налады інструмента праверкі правапісу для Android (AOSP)"</string>
-</resources>
diff --git a/java/res/values-be/strings.xml b/java/res/values-be/strings.xml
deleted file mode 100644
index 02972f0..0000000
--- a/java/res/values-be/strings.xml
+++ /dev/null
@@ -1,253 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="english_ime_input_options" msgid="3909945612939668554">"Параметры ўводу"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Каманды гiсторыя даследаванняў"</string>
-    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Шукаць імёны кантактаў"</string>
-    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Модуль праверкі правапісу выкарыстоўвае запісы са спісу кантактаў"</string>
-    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вібрацыя пры націску клавіш"</string>
-    <string name="sound_on_keypress" msgid="6093592297198243644">"Гук пры націску"</string>
-    <string name="popup_on_keypress" msgid="123894815723512944">"Па націску на клавішы ўсплывае акно"</string>
-    <string name="general_category" msgid="1859088467017573195">"Агульныя"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Выпраўленне тэксту"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Набор жэстамі"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Іншыя параметры"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Адмысловыя налады"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Функцыi для спецыялістаў"</string>
-    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Перакл. да інш. спос. ув."</string>
-    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Кнопка пераключэння мовы звязана i з iншымi спосабамi ўводу"</string>
-    <string name="show_language_switch_key" msgid="5915478828318774384">"Кнопка пераключэння мовы"</string>
-    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Паказваць, калі ўключана некалькі моў ўводу"</string>
-    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Iндыкатар слайд-шоу"</string>
-    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Паказаць візуальны сігнал падчас слiзгання клавiш Shift або Symbol"</string>
-    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Затрым. скр. падк. клав."</string>
-    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Няма затрымкі"</string>
-    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Па змаўчанні"</string>
-    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> мс"</string>
-    <!-- no translation found for settings_system_default (6268225104743331821) -->
-    <skip />
-    <string name="use_contacts_dict" msgid="4435317977804180815">"Прапан. імёны кантактаў"</string>
-    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Выкарыстоўваць імёны са спісу кантактаў для прапаноў і выпраўл."</string>
-    <string name="use_double_space_period" msgid="8781529969425082860">"Падвойны iнтэрвал"</string>
-    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Падвойнае нацiсканне на прабел ўстаўляе iнтэрвал з наступным прабелам"</string>
-    <string name="auto_cap" msgid="1719746674854628252">"Аўтаматычна рабіць вялікія літары"</string>
-    <string name="auto_cap_summary" msgid="7934452761022946874">"Пісаць з загалоўнай літары першае слова ў кожным сказе"</string>
-    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Персанальны слоўнік"</string>
-    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Дадатковыя слоўнікі"</string>
-    <string name="main_dictionary" msgid="4798763781818361168">"Асноўны слоўнік"</string>
-    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Паказаць прапановы на выпраўленне"</string>
-    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Паказваць прапанаваныя словы падчас набору тэксту"</string>
-    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Заўсёды паказваць"</string>
-    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Паказаць у партрэтным рэжыме"</string>
-    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Заўседы хаваць"</string>
-    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Блакіраваць абразлівыя словы"</string>
-    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Не прапануйце патэнцыяльна абразлівых слоў"</string>
-    <string name="auto_correction" msgid="7630720885194996950">"Аўтавыпраўленне"</string>
-    <string name="auto_correction_summary" msgid="5625751551134658006">"Прабелы і пунктуацыйныя знакі дазваляюць аўтаматычна выпраўляць памылкова ўведзеныя словы"</string>
-    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Адключаны"</string>
-    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Сціплы"</string>
-    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
-    <skip />
-    <string name="bigram_prediction" msgid="1084449187723948550">"Падказкi для наступнага слова"</string>
-    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Выкарыстоўваць папярэдняе слова, каб атрымлiваць падказкi"</string>
-    <string name="gesture_input" msgid="826951152254563827">"Уключыць набор жэстамі"</string>
-    <string name="gesture_input_summary" msgid="9180350639305731231">"Уводзьце слова, перасоўваючы палец па літарах"</string>
-    <string name="gesture_preview_trail" msgid="3802333369335722221">"Паказаць след жэста"</string>
-    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Дынамічны плаваючы прагляд"</string>
-    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Праглядаць прапанаванае слова падчас жэсту"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Захаваныя"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Каб праслухаць паролi, падключыце гарнiтуру."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Бягучы тэкст %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Тэкст не ўведзены"</string>
-    <!-- no translation found for spoken_auto_correct (8005997889020109763) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct_obscured (6276420476908833791) -->
-    <skip />
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Клавішны код %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Зрух"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift уключаны (націснiце, каб адключыць)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock уключаны (націснiце, каб адключыць)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Выдаліць"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Сімвалы"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Літары"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Лічбы"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Налады"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Укладка"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Прабел"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Галасавы ўвод"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлік"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Увод"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Пошук"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Кропка"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Пераключыць мову"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Далей"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Назад"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift уключаны"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock уключаны"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift адключаны"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Рэжым знакаў"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Рэжым лiтар"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Рэжым тэлефона"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Рэжым тэлефонных знакаў"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Клавіятура схавана"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Паказана клавiятура ў рэжыме \" <xliff:g id="MODE">%s</xliff:g>\""</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"дата"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"дата i час"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"электронная пошта"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"абмен паведамленнямі"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"нумар"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"тэлефон"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"тэкст"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"час"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
-    <string name="voice_input" msgid="3583258583521397548">"Ключ галасавога ўводу"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На асн. клавіятуры"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На сімв. клавіятуры"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Адключана"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Мік. на асн. клав."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Мік. на сімв. клав."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Галасавы набор адкл."</string>
-    <string name="configure_input_method" msgid="373356270290742459">"Налада метадаў уводу"</string>
-    <string name="language_selection_title" msgid="1651299598555326750">"Мовы ўводу"</string>
-    <string name="send_feedback" msgid="1780431884109392046">"Адправіць водгук"</string>
-    <string name="select_language" msgid="3693815588777926848">"Мовы ўводу"</string>
-    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Дакраніцеся зноў, каб захаваць"</string>
-    <string name="has_dictionary" msgid="6071847973466625007">"Слоўнік даступны"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Уключыць зваротную сувязь з карыстальнікамі"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Дапамажыце палепшыць гэты рэдактар ​​метаду ўводу, аўтаматычна адпраўляючы статыстыку выкарыстання і справаздачы аб збоях Google."</string>
-    <string name="keyboard_layout" msgid="8451164783510487501">"Тэма клавіятуры"</string>
-    <string name="subtype_en_GB" msgid="88170601942311355">"Англійская (ЗК)"</string>
-    <string name="subtype_en_US" msgid="6160452336634534239">"Англійская (ЗША)"</string>
-    <string name="subtype_es_US" msgid="5583145191430180200">"iспанская (ЗША)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Англійская (Вялікабрытанія) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Англійская (ЗША) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"iспанская (ЗША) ( <xliff:g id="LAYOUT">%s</xliff:g> )"</string>
-    <!-- no translation found for subtype_nepali_traditional (9032247506728040447) -->
-    <skip />
-    <!-- no translation found for subtype_no_language (7137390094240139495) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
-    <skip />
-    <!-- no translation found for subtype_emoji (7483586578074549196) -->
-    <skip />
-    <string name="custom_input_styles_title" msgid="8429952441821251512">"Карыстальніцкія стылі ўводу"</string>
-    <string name="add_style" msgid="6163126614514489951">"Дадаць стыль"</string>
-    <string name="add" msgid="8299699805688017798">"Дадаць"</string>
-    <string name="remove" msgid="4486081658752944606">"Выдаліць"</string>
-    <string name="save" msgid="7646738597196767214">"Захаваць"</string>
-    <string name="subtype_locale" msgid="8576443440738143764">"Мова"</string>
-    <string name="keyboard_layout_set" msgid="4309233698194565609">"Раскладка"</string>
-    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Карыстальніцкі метад уводу павінен быць уключаны, перш чым пачаць выкарыстоўваць яго. Жадаеце ўключыць яго зараз?"</string>
-    <string name="enable" msgid="5031294444630523247">"Уключыць"</string>
-    <string name="not_now" msgid="6172462888202790482">"Не цяпер"</string>
-    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Такі метад уводу ўжо існуе: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Рэжым даследвання выкарыстальнасці"</string>
-    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Затрымка доўгага націску клавішы"</string>
-    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Працягласць вібрацыі пры націску клавіш"</string>
-    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Гучнасць гуку пры націску клавіш"</string>
-    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Чытанне знешняга файла слоўніка"</string>
-    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"У папцы загрузак няма файлаў слоўніка"</string>
-    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Вылучыце файл слоўніка для ўсталёўкі"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Сапраўды ўсталяваць гэты файл на мове: <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
-    <string name="error" msgid="8940763624668513648">"Была памылка"</string>
-    <string name="button_default" msgid="3988017840431881491">"Па змаўчанні"</string>
-    <string name="setup_welcome_title" msgid="6112821709832031715">"Вітаем у прыкладанні <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
-    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"з уводам жэстамі"</string>
-    <string name="setup_start_action" msgid="8936036460897347708">"Пачаць"</string>
-    <string name="setup_next_action" msgid="371821437915144603">"Далей"</string>
-    <string name="setup_steps_title" msgid="6400373034871816182">"Наладка прыкладання <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
-    <string name="setup_step1_title" msgid="3147967630253462315">"Уключыць прыкладанне <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
-    <string name="setup_step1_instruction" msgid="2578631936624637241">"Праверце прыкладанне \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" на сваёй мове і параметры ўводу. Гэта дасць магчымасць дазволіць яму працаваць на вашай прыладзе."</string>
-    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"Прыкладанне <xliff:g id="APPLICATION_NAME">%s</xliff:g> ужо ўключана для вашай мовы і параметраў уводу, так што гэты крок зроблены. Пераходзім да наступнага!"</string>
-    <string name="setup_step1_action" msgid="4366513534999901728">"Уключыць у наладах"</string>
-    <string name="setup_step2_title" msgid="6860725447906690594">"Пераключыцца на прыкладанне <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
-    <string name="setup_step2_instruction" msgid="9141481964870023336">"Выберыце \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" як актыўны метад уводу тэксту."</string>
-    <string name="setup_step2_action" msgid="1660330307159824337">"Пераключэнне метадаў уводу"</string>
-    <string name="setup_step3_title" msgid="3154757183631490281">"Усё гатова!"</string>
-    <string name="setup_step3_instruction" msgid="8025981829605426000">"Цяпер вы можаце ўводзіць ўсе свае любімыя прыкладанні з iмем <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
-    <string name="setup_step3_action" msgid="600879797256942259">"Наладка дадатковых моў"</string>
-    <string name="setup_finish_action" msgid="276559243409465389">"Гатова"</string>
-    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Паказаць значок прыкладання"</string>
-    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Паказаць значок прыкладання ў панэлi запуску"</string>
-    <string name="app_name" msgid="6320102637491234792">"Пастаўшчык слоўніка"</string>
-    <string name="dictionary_provider_name" msgid="3027315045397363079">"Пастаўшчык слоўніка"</string>
-    <string name="dictionary_service_name" msgid="6237472350693511448">"Слоўнік"</string>
-    <string name="download_description" msgid="6014835283119198591">"Інфармацыя абнаўлення слоўніка"</string>
-    <string name="dictionary_settings_title" msgid="8091417676045693313">"Дадатковыя слоўнікі"</string>
-    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Даступны слоўнік"</string>
-    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Налады для слоўнікаў"</string>
-    <string name="user_dictionaries" msgid="3582332055892252845">"Карыстальніцкія слоўнікі"</string>
-    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Карыстацкі слоўнік"</string>
-    <string name="dictionary_available" msgid="4728975345815214218">"Даступны слоўнік"</string>
-    <string name="dictionary_downloading" msgid="2982650524622620983">"Спампоўваецца зараз"</string>
-    <string name="dictionary_installed" msgid="8081558343559342962">"Усталявана"</string>
-    <string name="dictionary_disabled" msgid="8950383219564621762">"Усталявана, адключана"</string>
-    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Праблема падключэння да слоўніка"</string>
-    <string name="no_dictionaries_available" msgid="8039920716566132611">"Слоўнікаў няма"</string>
-    <string name="check_for_updates_now" msgid="8087688440916388581">"Абнавіць"</string>
-    <string name="last_update" msgid="730467549913588780">"Апошняе абнаўленне"</string>
-    <string name="message_updating" msgid="4457761393932375219">"Праверка наяўнасці абнаўленняў"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Загрузка..."</string>
-    <string name="main_dict_description" msgid="3072821352793492143">"Асноўны слоўнік"</string>
-    <string name="cancel" msgid="6830980399865683324">"Адмяніць"</string>
-    <string name="install_dict" msgid="180852772562189365">"Усталяваць"</string>
-    <string name="cancel_download_dict" msgid="7843340278507019303">"Адмена"</string>
-    <string name="delete_dict" msgid="756853268088330054">"Выдаліць"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Для выбранай мовы на мабільнай прыладзе ёсць слоўнік.&lt;br/&gt; Мы рэкамендуем &lt;b&gt;спампаваць&lt;/b&gt; слоўнік для мовы \"<xliff:g id="LANGUAGE">%1$s</xliff:g>\" для паляпшэння зручнасці набору.&lt;br/&gt; &lt;br/&gt; Спампоўка можа заняць хвіліну або дзве ў 3G-сетках. Калі ў вас няма &lt;b&gt;безлімітнага тарыфнага плану перадачы дадзеных&lt;/b&gt;, могуць прымяняцца дадатковыя плацяжы&lt;br/&gt;. Калі вы не ведаеце дакладна, які ў вас тарыфны план, мы рэкамендуем знайсці падлучэнне да сеткі Wi-Fi, каб пачаць аўтаматычную спампоўку.&lt;br/&gt; &lt;br/&gt; Парада: можна спампоўваць і выдаляць слоўнікі, перайшоўшы ў раздзел &lt;b&gt;Мова і ўвод&lt;/b&gt; у меню &lt;b&gt;Налады&lt;/b&gt; вашай мабільнай прылады."</string>
-    <string name="download_over_metered" msgid="1643065851159409546">"Спампаваць зараз (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>МБ)"</string>
-    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Спампаваць праз Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Слоўнік для мовы \"<xliff:g id="LANGUAGE">%1$s</xliff:g>\""</string>
-    <string name="dict_available_notification_description" msgid="1075194169443163487">"Нацiснiце, каб прагледзець i спампаваць"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Загрузка: прапановы для мовы \"<xliff:g id="LANGUAGE">%1$s</xliff:g>\" хутка з\'явяцца."</string>
-    <string name="version_text" msgid="2715354215568469385">"Версія <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
-    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Дадаць"</string>
-    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Дадаць у слоўнік"</string>
-    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Выраз"</string>
-    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Дадатковыя параметры"</string>
-    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Асн. параметры"</string>
-    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"OК"</string>
-    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Слова:"</string>
-    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Шлях хуткага доступу:"</string>
-    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Мова:"</string>
-    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Увядзіце слова"</string>
-    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Дадатковы цэтлiк"</string>
-    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Рэдагаваць слова"</string>
-    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Рэдагаваць"</string>
-    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Выдаліць"</string>
-    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"У вашым карыстальніцкім слоўніку няма ніводнага слова. Вы можаце дадаваць словы, дакранаючыся да кнопкі \"+\" у пункце меню \"Дадаць\"."</string>
-    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Для ўсіх моў"</string>
-    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Іншыя мовы..."</string>
-    <string name="user_dict_settings_delete" msgid="110413335187193859">"Выдаліць"</string>
-    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
-</resources>
diff --git a/java/res/values-bg/strings-action-keys.xml b/java/res/values-bg/strings-action-keys.xml
index 13374a2..fa41c28 100644
--- a/java/res/values-bg/strings-action-keys.xml
+++ b/java/res/values-bg/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Назад"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Готово"</string>
     <string name="label_send_key" msgid="482252074224462163">"Изпр."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Търсене"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Пауза"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Изчакв."</string>
 </resources>
diff --git a/java/res/values-bg/strings-config-important-notice.xml b/java/res/values-bg/strings-config-important-notice.xml
new file mode 100644
index 0000000..465ed85
--- /dev/null
+++ b/java/res/values-bg/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Ползване на съобщ. ви и въведени от вас данни за подобр. на предлож."</string>
+</resources>
diff --git a/java/res/values-bg/strings-letter-descriptions.xml b/java/res/values-bg/strings-letter-descriptions.xml
new file mode 100644
index 0000000..75c2c78
--- /dev/null
+++ b/java/res/values-bg/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Индикатор за поредност от женски род"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Знак за микро"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Индикатор за поредност от мъжки род"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Малка буква есцет"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Малка буква а с тежко ударение"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Малка буква а с остро ударение"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"Малка буква а със сложно ударение"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"Малка буква а с тилда"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"Малка буква а с трема"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"Малка буква а с кръгче отгоре"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Малка лигатура ae"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Малка буква c със селил"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Малка буква e с тежко ударение"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Малка буква e с остро ударение"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Малка буква e със сложно ударение"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Малка буква e с трема"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Малка буква i с тежко ударение"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Малка буква i с остро ударение"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"Малка буква i със сложно ударение"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"Малка буква i с трема"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Малка пресечена буква"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Малка буква n с тилда"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Малка буква o с тежко ударение"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Малка буква o с остро ударение"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"Малка буква o със сложно ударение"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"Малка буква o с тилда"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"Малка буква o с трема"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Малка буква o с черта"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Малка буква u с тежко ударение"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Малка буква u с остро ударение"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"Малка буква u със сложно ударение"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"Малка буква u с трема"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Малка буква y с остро ударение"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Малка буква торн"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Малка буква y с трема"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"Малка буква a с макрон"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"Малка буква a с бревис"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"Малка буква a с огонек"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Малка буква c с остро ударение"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Малка буква c със сложно ударение"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Малка буква c с точка отгоре"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Малка буква c с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Малка буква d с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Малка буква d с черта"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Малка буква e с макрон"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Малка буква e с бревис"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Малка буква e с точка отгоре"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Малка буква e с огонек"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Малка буква e с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Малка буква g със сложно ударение"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Малка буква g с бревис"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Малка буква g с точка отгоре"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Малка буква g със селил"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Малка буква h със сложно ударение"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Малка буква h с черта"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"Малка буква i с тилда"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"Малка буква i с макрон"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"Малка буква i с бревис"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"Малка буква i с огонек"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Малка буква i без точка"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Малка лигатура ij"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Малка буква j със сложно ударение"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"Малка буква k със селил"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Малка буква кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Малка буква l с остро ударение"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"Малка буква l със селил"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Малка буква l с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"Малка буква l с точка в средата"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Малка буква l с черта"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Малка буква n с остро ударение"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Малка буква n със селил"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Малка буква n с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"Малка буква n с апостроф отпред"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Малка буква енг"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"Малка буква o с макрон"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"Малка буква o с бревис"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"Малка буква o с двойно остро ударение"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Малка лигатура oe"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Малка буква r с остро ударение"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Малка буква r със селил"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Малка буква r с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Малка буква s с остро ударение"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"Малка буква s със сложно ударение"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"Малка буква s със селил"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Малка буква s с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Малка буква t със селил"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Малка буква t с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Малка буква t с черта"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"Малка буква u с тилда"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"Малка буква u с макрон"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"Малка буква u с бревис"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"Малка буква u с кръгче отгоре"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"Малка буква u с двойно остро ударение"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"Малка буква u с огонек"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Малка буква w със сложно ударение"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Малка буква y със сложно ударение"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Малка буква z с остро ударение"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Малка буква z с точка отгоре"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Малка буква z с обърнато сложно ударение"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Малка дълга буква s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"Малка буква o с рогче"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"Малка буква u с рогче"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"Малка буква s със запетая отдолу"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Малка буква t със запетая отдолу"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Малка буква шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"Малка буква a с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"Малка буква a с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"Малка буква a със сложно и с остро ударение"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"Малка буква a със сложно и с тежко ударение"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"Малка буква a със сложно ударение и с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"Малка буква a със сложно ударение и с тилда"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"Малка буква a със сложно ударение и с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Малка буква a с бревис и с остро ударение"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"Малка буква a с бревис и с тежко ударение"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"Малка буква a с бревис и с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"Малка буква a с бревис и с тилда"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"Малка буква a с бревис и с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Малка буква e с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Малка буква e с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"Малка буква e с тилда"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"Малка буква e със сложно и с остро ударение"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"Малка буква e със сложно и с тежко ударение"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Малка буква e със сложно ударение и с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Малка буква e със сложно ударение и с тилда"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"Малка буква e със сложно ударение и с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"Малка буква i с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"Малка буква i с точка отдолу"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"Малка буква o с точка отдолу"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"Малка буква o с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"Малка буква o със сложно и с остро ударение"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"Малка буква о със сложно и с тежко ударение"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"Малка буква o със сложно ударение и с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"Малка буква o със сложно ударение и с тилда"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"Малка буква o със сложно ударение и с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"Малка буква o с рогче и с остро ударение"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"Малка буква о с рогче и с тежко ударение"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"Малка буква o с рогче и с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"Малка буква o с рогче и с тилда"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"Малка буква o с рогче и с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"Малка буква u с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"Малка буква u с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"Малка буква u с рогче и с остро ударение"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"Малка буква u с рогче и с тежко ударение"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"Малка буква u с рогче и с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"Малка буква u с рогче и с тилда"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"Малка буква u с рогче и с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Малка буква y с тежко ударение"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Малка буква y с точка отдолу"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Малка буква y с ченгел отгоре"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Малка буква y с тилда"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Обърнат удивителен знак"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Сочеща наляво двойна ъглова кавичка"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Точка в средата"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Горен индекс за първа степен"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Сочеща надясно двойна ъглова кавичка"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Обърнат въпросителен знак"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Лява единична кавичка"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Дясна единична кавичка"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Единична долна кавичка"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Лява двойна кавичка"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Дясна двойна кавичка"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Дагер"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Двоен дагер"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Знак за промил"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Щрих"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Двоен щрих"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Сочеща наляво единична ъглова кавичка"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Сочеща надясно единична ъглова кавичка"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Горен индекс за четвърта степен"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Горен индекс за n-та степен"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Знак за песо"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"На вниманието на"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Сочеща надясно стрелка"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Сочеща надолу стрелка"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Празно множество"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Инкремент"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"По-малко или равно на"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"По-голямо или равно на"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Черна звезда"</string>
+</resources>
diff --git a/java/res/values-bg/strings-talkback-descriptions.xml b/java/res/values-bg/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..c1271bf
--- /dev/null
+++ b/java/res/values-bg/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Включете слушалки, за да чуете клавишите за паролата на висок глас."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Текущият текст е „%s“"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Няма въведен текст"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"„<xliff:g id="KEY_NAME">%1$s</xliff:g>“ коригира „<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>“ на „<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>“"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"„<xliff:g id="KEY_NAME">%1$s</xliff:g>“ изпълнява автоматично коригиране"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Неизвестен знак"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Още символи"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Символи"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Delete"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Символи"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Букви"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Цифри"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Настройки"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Интервал"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Гласово въвеждане"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Емоджи"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Търсене"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Точка"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Превключване на езика"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Напред"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Назад"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"„Shift“ е активиран"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"„Caps Lock“ е активиран"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим за символи"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Режим с още символи"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим за букви"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим за телефонни номера"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим за символи на телефона"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Клавиатурата е скрита"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Показва се клавиатурата за <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"дати"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"дати и часове"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"имейл aдреси"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"съобщения"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"числа"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"телефонни номера"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"текст"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"часове"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL адреси"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Скорошни"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Хора"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Предмети"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Природа"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Места"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Символи"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Емотикони"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Главна буква <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Главна буква I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Главна буква I с точка отгоре"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Неизвестен символ"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Неизвестен емотикон"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Налице са алтернативни знаци"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Алтернативните знаци са отхвърлени"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Налице са алтернативни предложения"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Алтернативните предложения са отхвърлени"</string>
+</resources>
diff --git a/java/res/values-bg/strings.xml b/java/res/values-bg/strings.xml
index c3fbd79..a2ded38 100644
--- a/java/res/values-bg/strings.xml
+++ b/java/res/values-bg/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Опции за въвеждане"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Команди за рег. файл за проучвания"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Търсене на имена"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"За проверка на правописа се ползват записи от списъка с контакти"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Да вибрира при натискане на клавиш"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук при натискане на клавиш"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Изскачащ прозорец при натискане на клавиш"</string>
-    <string name="general_category" msgid="1859088467017573195">"Общи"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Корекция на текста"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Въвеждане чрез жест"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Други опции"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Разширени настройки"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Опции за експерти"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Други методи за въвеждане"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Клавишът за превкл. на езика обхваща и други методи за въвеждане"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Клавиш за превкл. на езика"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Станд. за системата"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Предложения за контакти"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Използване на имена от „Контакти“ за предложения и поправки"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Персонализ. предложения"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Подобряване на <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Точка чрез двоен интервал"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Двукр. докосване на клав. за интервал вмъква точка, следвана от интервал"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Автоматично поставяне на главни букви"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Следа на жестовете: Показване"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамична плаваща визуализация"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Преглед на предложената дума при използване на жестове"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Запазено"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Включете слушалки, за да чуете клавишите за паролата на висок глас."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Текущият текст е %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Няма въведен текст"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"„<xliff:g id="KEY">%1$s</xliff:g>“ коригира „<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>“ на „<xliff:g id="CORRECTED">%3$s</xliff:g>“"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"„<xliff:g id="KEY">%1$s</xliff:g>“ изпълнява автоматично коригиране"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Код на клавишa %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"„Shift“ е включен (докоснете за деактивиране)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"„Caps lock“ е включен (докоснете за деактивиране)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Символи"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Букви"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Цифри"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Настройки"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Интервал"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Гласово въвеждане"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Усмивка"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Търсене"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Точка"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Смяна на езика"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Следващ"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Предишен"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"„Shift“ е активиран"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"„Caps Lock“ е активиран"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"„Shift“ е деактивиран"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Режим  за символи"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим за букви"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим  за телефон"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим за символи на телефона"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Клавиатурата е скрита"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Показва се клавиатурата за <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"дата"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"дата и час"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"имейл aдреси"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"съобщения"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"числа"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"телефонни номера"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"текст"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"часа"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL адреси"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Жест за фрази"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"При жестове въвеждaйте интервали чрез плъзгане през съотв. клавиш"</string>
     <string name="voice_input" msgid="3583258583521397548">"Клавиш за гласово въвеждане"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На осн. клавиатура"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На клав. на симв."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Изкл."</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Микр. на осн. клав."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Микр. на клав. на симв."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Глас. въвежд. е деакт."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Няма активирани методи на гласово въвеждане. Проверете настройките за език и въвеждане."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Конфигуриране на въвеждането"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Входни езици"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Изпращане на отзиви"</string>
     <string name="select_language" msgid="3693815588777926848">"Езици за въвеждане"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Докоснете отново, за да запазите"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Има достъп до речник"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Активиране на отзивите от потребителите"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Помогнете за подобряването на този редактор за въвеждане чрез автоматично изпращане на статистически данни за употребата и сигнали за сривове"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Тема на клавиатурата"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"английски (Великобритания)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"английски (САЩ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"испански (САЩ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"английски (Великобр.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"английски (САЩ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"испански (САЩ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (традиционен)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"английски (Великобр.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"английски (САЩ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"испански (САЩ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (традиционна клавиатура)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (кирилица)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (латиница)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Без език (латиница)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Латиница (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Латиница (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Латиница (Коулмак)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Латиница (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Емотикони"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Цветова схема"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Бяло"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Синьо"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Персон. стилове за въвежд."</string>
     <string name="add_style" msgid="6163126614514489951">"+ стил"</string>
     <string name="add" msgid="8299699805688017798">"Добавяне"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Активиране"</string>
     <string name="not_now" msgid="6172462888202790482">"Не сега"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Същият стил на въвеждане вече съществува: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за изучаване на използваемостта"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Забавяне при продълж. натискане"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Продълж. на вибриране при натискане"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Сила на звука при натиск. на клавиш"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Четене на файл за външен речник"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"В папката „Изтегляния“ няма файлове за речник"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Изберете файл за речника, който да инсталирате"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Наистина ли да се инсталира този файл за <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Наистина ли да се инсталира този файл за <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Възникна грешка"</string>
     <string name="button_default" msgid="3988017840431881491">"Стандартни"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Добре дошли в/ъв <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Опресняване"</string>
     <string name="last_update" msgid="730467549913588780">"Последна актуализация:"</string>
     <string name="message_updating" msgid="4457761393932375219">"Проверява се за актуализации"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Зарежда се..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Зарежда се…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Основен речник"</string>
     <string name="cancel" msgid="6830980399865683324">"Отказ"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Настройки"</string>
     <string name="install_dict" msgid="180852772562189365">"Инсталиране"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Отказ"</string>
     <string name="delete_dict" msgid="756853268088330054">"Изтриване"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Налице е речник за избрания език на мобилното ви устройство.&lt;br/&gt; Препоръчваме ви &lt;b&gt;dда изтеглите&lt;/b&gt; речника за <xliff:g id="LANGUAGE">%1$s</xliff:g>, за да подобрите практическата си работа при писане.&lt;br/&gt; &lt;br/&gt; Изтеглянето през 3G може да отнеме една до две минути. Възможно е да бъдете таксувани, ако нямате &lt;b&gt;неограничен план за данни&lt;/b&gt;.&lt;br/&gt; В случай че не сте сигурни какъв е вашият план, ви препоръчваме да намерите Wi-Fi връзка, за да започнете автоматично изтеглянето.&lt;br/&gt; &lt;br/&gt; Съвет: Можете да изтегляте и премахвате речници, като отворите &lt;b&gt;Език и въвеждане&lt;/b&gt; в менюто &lt;b&gt;Настройки&lt;/b&gt; на мобилното си устройство."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Налице е речник за избрания език на мобилното ви устройство.&lt;br/&gt; Препоръчваме ви &lt;b&gt;да изтеглите&lt;/b&gt; речника за <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>, за да подобрите практическата си работа при писане.&lt;br/&gt; &lt;br/&gt; Изтеглянето през 3G може да отнеме една до две минути. Възможно е да бъдете таксувани, ако нямате &lt;b&gt;неограничен план за данни&lt;/b&gt;.&lt;br/&gt; В случай че не сте сигурни какъв е вашият план, ви препоръчваме да намерите Wi-Fi връзка, за да започнете автоматично изтеглянето.&lt;br/&gt; &lt;br/&gt; Съвет: Можете да изтегляте и премахвате речници, като отворите &lt;b&gt;Език и въвеждане&lt;/b&gt; в менюто &lt;b&gt;Настройки&lt;/b&gt; на мобилното си устройство."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Изтегляне сега (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> МБ)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Изтегляне през Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"За <xliff:g id="LANGUAGE">%1$s</xliff:g> е налице речник"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"За <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> е налице речник"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Натиснете, за да прегледате и изтеглите"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Изтегля се: Предложенията за <xliff:g id="LANGUAGE">%1$s</xliff:g> ще бъдат готови скоро."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Изтегля се: Предложенията за <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ще бъдат готови скоро."</string>
     <string name="version_text" msgid="2715354215568469385">"Версия <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Добавяне"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Добавяне в речника"</string>
diff --git a/java/res/values-bn-rBD/strings-action-keys.xml b/java/res/values-bn-rBD/strings-action-keys.xml
new file mode 100644
index 0000000..ca2e0eb
--- /dev/null
+++ b/java/res/values-bn-rBD/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"যান"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"পরবর্তী"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"পূর্ববর্তী"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"সম্পন্ন"</string>
+    <string name="label_send_key" msgid="482252074224462163">"পাঠান"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"সন্ধান"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"বিরাম"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"অপেক্ষা করুন"</string>
+</resources>
diff --git a/java/res/values-bn-rBD/strings-appname.xml b/java/res/values-bn-rBD/strings-appname.xml
new file mode 100644
index 0000000..8efa51e
--- /dev/null
+++ b/java/res/values-bn-rBD/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android কীবোর্ড (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android বানান পরীক্ষক (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android কীবোর্ড সেটিংস (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android বানান পরীক্ষক সেটিংস (AOSP)"</string>
+</resources>
diff --git a/java/res/values-bn-rBD/strings-config-important-notice.xml b/java/res/values-bn-rBD/strings-config-important-notice.xml
new file mode 100644
index 0000000..9bc815c
--- /dev/null
+++ b/java/res/values-bn-rBD/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"পরামর্শ উন্নত করতে আপনার যোগাযোগসমূহ এবং টাইপ করা তথ্য থেকে শিখুন"</string>
+</resources>
diff --git a/java/res/values-bn-rBD/strings-emoji-descriptions.xml b/java/res/values-bn-rBD/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..3c58621
--- /dev/null
+++ b/java/res/values-bn-rBD/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"কপিরাইট চিহ্ন"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"নিবন্ধিত চিহ্ণ"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"দুটি বিস্ময়বোধক চিহ্ন"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"বিস্ময়বোধক ও প্রশ্ন চিহ্ন"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"ট্রেড মার্ক চিহ্ন"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"তথ্য উৎস"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"বাম-ডান তীর"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"উপর-নীচ তীর"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"উত্তর-পশ্চিম নির্দেশকারী তীর"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"উত্তর-পূর্ব নির্দেশকারী তীর"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"দক্ষিণ-পূর্ব নির্দেশকারী তীর"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"দক্ষিণ-পশ্চিম নির্দেশকারী তীর"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"আকশিওয়ালা বামমুখী তীর"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"আকশিওয়ালা ডানমুখী তীর"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"ঘড়ি"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"বালিঘড়ি"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"ডানমুখী দুটি কালো ত্রিভুজ"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"বামমুখী দুটি কালো ত্রিভুজ"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"উর্ধ্বমুখী দুটি কালো ত্রিভুজ"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"নিম্নমুখী দুটি কালো ত্রিভুজ"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"অ্যালার্ম ঘড়ি"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"ঝরে পড়া বালু সহ বালিঘড়ি"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"বৃত্তাবদ্ধ ল্যাটিন বড় হাতের অক্ষর m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"ছোট কালো চৌকো"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"ছোট সাদা চৌকো"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"ডানমুখী কালো ত্রিভুজ"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"বামমুখী কালো ত্রিভুজ"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"মাঝারি সাদা চৌকো"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"মাঝারি কালো চৌকো"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"মাঝারি আকারের ছোট সাদা চৌকো"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"মাঝারি আকারের ছোট কালো চৌকো"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"রশ্মি সহ কালো সূর্য"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"মেঘ"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"কালো টেলিফোন"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"টিক চিহ্ণযুক্ত ব্যালট বাক্স"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"বৃষ্টির ফোঁটা সহ ছাতা"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"উষ্ণ পানীয়"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"সাদা উর্ধ্বমুখী তর্জনী"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"সাদা হাসি মুখ"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"মেষরাশি"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"বৃষরাশি"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"মিথুনরাশি"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"কর্কটরাশি"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"সিংহরাশি"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"কন্যারাশি"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"তুলারাশি"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"বৃশ্চিকরাশি"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"ধনুরাশি"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"মকররাশি"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"কুম্ভরাশি"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"মীনরাশি"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"কালো ইস্কাপন স্যুট"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"কালো চিড়িতন স্যুট"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"কালো হরতন স্যুট"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"কালো রুহিতন স্যুট"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"উষ্ণ প্রস্রবন"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"কালো সার্বজনীন রিসাইক্লিং প্রতীক"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"হুইলচেয়ার প্রতীক"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"নোঙর"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"সতর্কবার্তা চিহ্ণ"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"উচ্চ ভোল্টেজ চিহ্ণ"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"মাঝারি সাদা বৃত্ত"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"মাঝারি কালো বৃত্ত"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"ফুটবল"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"বেসবল"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"বরফ ছাড়া তুষারমানব"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"মেঘের পেছনে সূর্য"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"অফিউকাস তারকাপুঞ্জ"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"প্রবেশ নিষেধ"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"গির্জা"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"ঝরনা"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"গর্তে পতাকা"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"পালতোলা নৌকা"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"তাঁবু"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"জ্বালানি পাম্প"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"কালো কাঁচি"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"মোটা সাদা টিক চিহ্ণ"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"বিমান"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"খাম"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"মুষ্ঠি তোলা"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"হাত তোলা"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"দুই আঙুলের বিজয়চিহ্ণ"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"পেন্সিল"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"কালো নিব"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"মোটা টিক চিহ্ণ"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"মোটা গুণচিহ্ণ x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"ঝিকিমিকিগুলি"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"আট কোণা তারা"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"আট কোণা কালো তারা"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"তুষারফলক"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"ঝিকিমিকি"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"কাটা চিহ্ণ"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"চৌকাকৃতি নেতিবাচক কাটা চিহ্ণ"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"কালো প্রশ্ন চিহ্ন অলঙ্কার"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"সাদা প্রশ্ন চিহ্ন অলঙ্কার"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"সাদা বিস্ময়বোধক চিহ্ন অলঙ্কার"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"মোটা বিস্ময়বোধক চিহ্ন প্রতীক"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"ভারি কালো হৃদয়"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"মোটা যোগ চিহ্ণ"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"মোটা বিয়োগ চিহ্ণ"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"মোটা ভাগ চিহ্ণ"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"ডানমুখী কালো তীর"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"তরঙ্গায়িত লুপ"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"দুবার তরঙ্গায়িত লুপ"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"প্রথমে ডানমুখী পরে বাঁক খেয়ে উর্ধ্বমুখী তীর"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"প্রথমে ডানমুখী পরে বাঁক খেয়ে নিম্নমুখী তীর"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"বামমুখী কালো তীর"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"উর্ধ্বমুখী কালো তীর"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"নিম্নমুখী কালো তীর"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"বড় কালো চৌকো"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"বড় সাদা চৌকো"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"মাঝারি সাদা তারা"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"মোটা বড় বৃত্ত"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"তরঙ্গায়িত ড্যাশ"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"গায়কের ভূমিকা শুরুর চিহ্ণ"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"বৃত্তাকার আইডিওগ্রাফ অভিনন্দন"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"বৃত্তাকার আইডিওগ্রাফ গোপন"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"মাহজং টাইলে লাল ড্রাগন"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"তাস খেলার কালো জোকার"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"রক্ত গ্রুপ এ"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"রক্ত গ্রুপ বি"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"রক্ত গ্রুপ ও"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"পার্কিং স্থান"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"রক্ত গ্রুপ এবি"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"চৌকাকৃতি সাফ প্রতীক"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"চৌকাকৃতি শান্ত প্রতীক"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"চৌকাকৃতি মুক্ত প্রতীক"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"চৌকাকৃতি ID প্রতীক"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"চৌকাকৃতি নতুন প্রতীক"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"চৌকাকৃতি ভাল-না প্রতীক"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"চৌকাকৃতি ঠিক আছে প্রতীক"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"চৌকাকৃতি SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"চৌকাকৃতি ‘উপরে’ লেখা সহ বিস্ময়সূচক চিহ্ণ"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"vs লেখা চৌকো"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"চৌকাকৃতি কাতাকানা ‘এখানে’"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"চৌকাকৃতি কাতাকানা ‘পরিষেবা’"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"চৌকাকৃতি আইডিওগ্রাফ চার্জ-ফ্রি"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"চৌকাকৃতি আইডিওগ্রাফ রিজার্ভ করা আসন"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"চৌকাকৃতি আইডিওগ্রাফ নিষেধাজ্ঞা"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"চৌকাকৃতি আইডিওগ্রাফ কর্মখালি"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"চৌকাকৃতি আইডিওগ্রাফ গ্রহণযোগ্যতা"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"চৌকাকৃতি আইডিওগ্রাফ পূর্ণ ভোগদখল"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"চৌকাকৃতি আইডিওগ্রাফ পরিশোধিত"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"চৌকাকৃতি আইডিওগ্রাফ মাসিক"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"চৌকাকৃতি আইডিওগ্রাফ দরখাস্ত"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"চৌকাকৃতি আইডিওগ্রাফ ডিসকাউন্ট"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"চৌকাকৃতি আইডিওগ্রাফ কাজে ব্যস্ত"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"বৃত্তাকৃতি আইডিওগ্রাফ সুবিধা"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"বৃত্তাকৃতি আইডিওগ্রাফ গ্রহন করুন"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"সাইক্লোন"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"কুয়াশাচ্ছন্ন"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"বন্ধ ছাতা"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"তারা ভরা রাত"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"পাহাড়ের ওপারে সূর্যোদয়"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"সূর্যোদয়"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"গোধুলি দৃশ্য"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"বিল্ডিংয়ের ওপারে সূর্যাস্ত"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"রংধনু"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"রাতে বেলায় সেতু"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"পানির ঢেউ"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"আগ্নেয়গিরি"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"আকাশগঙ্গা"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"ভূ-গোলকে ইউরোপ-আফ্রিকা"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"ভূ-গোলকে আমেরিকা"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"ভূ-গোলকে এশিয়া অস্ট্রেলিয়া"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"মধ্যরেখা সহ ভূ-গোলক"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"অমাবস্যা প্রতীক"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"বর্ধনশীল অর্ধচন্দ্র প্রতীক"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"প্রথম অর্ধপক্ষের চন্দ্রকলা প্রতীক"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"বর্ধনশীল অর্ধেকের বেশী বড় চন্দ্রকলা প্রতীক"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"পূর্ণিমা প্রতীক"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"ক্ষয়িষ্ণু অর্ধেকের বেশী বড় চন্দ্রকলা প্রতীক"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"শেষ অর্ধপক্ষের চন্দ্রকলা প্রতীক"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"ক্ষয়িষ্ণু অর্ধচন্দ্র প্রতীক"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"অর্ধচন্দ্র"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"মুখমন্ডল সহ অমাবস্যার চাঁদ"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"মুখমন্ডল সহ প্রথম অর্ধপক্ষের চাঁদ"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"মুখমন্ডল সহ শেষ এক অর্ধপক্ষের চাঁদ"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"মুখমন্ডল সহ পূর্ণিমার চাঁদ"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"মুখমন্ডল সহ সূর্য"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"বর্ধনশীল তারা"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"উল্কা"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"চেস্টনাট বাদাম"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"চারাগাছ"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"চিরসবুজ গাছ"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"পর্ণমোচী গাছ"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"পাম গাছ"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"ক্যাকটাস"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"টিউলিপ"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"চেরি ব্লসম"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"গোলাপ"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"হিবিসকাস"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"সূর্যমুখী"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"ফোটা ফুল"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"ভুট্টা মঞ্জরি"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"ধানের শিষ"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"ঔষধি"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"চার পাতার ক্লোভার"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"ম্যাপল পাতা"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"ঝরে পড়া পাতা"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"বাতাসে উড়ন্ত পাতা"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"মাশরুম"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"টমেটো"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"বেগুন"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"আঙুর"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"পাতি লেবু"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"তরমুজ"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"মানডারিন লেবু"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"পাতি লেবু"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"কলা"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"আনারস"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"লাল আপেল"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"সবুজ আপেল"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"নাশপাতি"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"পীচফল"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"চেরিফল"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"স্ট্রবেরি"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"হ্যামবার্গার"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"টুকরো পিৎজা"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"হাড়ের গায়ে মাংস"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"মুরগির রান"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"রাইস ক্র্যাকার"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"রাইস বল"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"ভাত"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"তরকারি ও ভাত"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"স্টিমিং বৌল"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"স্প্যাগেটি সেমাই"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"পাউরুটি"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"ফ্রেঞ্চ ফ্রাই"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"ঝলসানো মিষ্টি আলু"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"ড্যাংগো"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"ওডেন"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"সুশি"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"ভাজা চিংড়ি"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"ঢেউ খেলানো ডিজাইনে ফিশকেক"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"সফট আইস ক্রিম"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"জমানো শেভড আইস"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"আইস ক্রিম"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"ডোনাট"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"কুকি"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"চকোলেট বার"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"ক্যান্ডি"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ললিপপ"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"কাস্টার্ড"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"মধুর পাত্র"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"শর্টকেক"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"বেন্টো বাক্স"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"এক পাত্র খাবার"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"রান্না"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"কাঁটা চামচ ও ছুরি"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"হাতলবিহীন চায়ের কাপ"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"সাকি বোতল ও কাপ"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"ওয়াইন গ্লাস"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"ককটেল গ্লাস"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"ট্রপিকাল পানীয়"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"বীয়ার মগ"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"ঠোকাঠুকি করা বীয়ার মগ"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"দুধ খাওয়ার বোতল"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"ফিতে"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"মোড়ানো উপহার"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"জন্মদিনের কেক"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"জ্যাক-ও-ল্যানটার্ন"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"ক্রিসমাস ট্রি"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"ফাদার ক্রিসমাস"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"আতশবাজি"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"হাতে ধরা আতশবাজি"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"বেলুন"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"পার্টি পপার"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"কনফেট্টি বল"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"টানাবাটা গাছ"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"আড়াআড়ি রাখা পতাকা"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"পাইন ডেকোরেশন"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"জাপানি পুতুল"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"কাঠিতে বাঁধা মাছের প্রতীক"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"উইন্ড চাইম"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"চাঁদ দেখার উৎসব"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"স্কুল ব্যাগ"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"গ্রাজুয়েশন ক্যাপ"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"ক্যারোজেল ঘোড়া"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"ফেরির চাকা"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"রোলার কোস্টার"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"মাছ ধরার ছিপ ও মাছ"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"মাইক্রোফোন"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"মুভি ক্যামেরা"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"সিনেমা"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"হেডফোন"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"চিত্রকরের রঙ গোলার পাত্র"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"লম্বা টুপি"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"সার্কাসের তাঁবু"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"টিকেট"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"শুটিংয়ে ব্যবহৃত ক্ল্যাপার বোর্ড"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"অভিনীত শিল্পকলা"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"ভিডিও গেম"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"সরাসরি আঘাত"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"স্লট মেশিন"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"বিলিয়ার্ড"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"খেলার গুটি"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"বৌলিং"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"জাপানি ফুলের তাস"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"সঙ্গীতের সুর"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"সঙ্গীতের একাধিক সুর"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"স্যাক্সোফোন"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"গিটার"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"মিউজিকাল কীবোর্ড"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"তূর্য"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"বেহালা"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"সঙ্গীতের স্বরলিপির অনুলিপি"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"স্যাশযুক্ত দৌড়ানোর শার্ট"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"টেনিস র‌্যাকেট ও বল"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"স্কি ও স্কি বুট"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"বাস্কেটবল ও হুপ"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"চৌখুপি নকশার পতাকা"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"স্নোবোর্ডার"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"দৌড়বিদ"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"সার্ফার"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"ট্রফি"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"ঘোড়দৌড়"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"আমেরিকান ফুটবল"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"রাগবি ফুটবল"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"সাঁতারু"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"বাড়ি তৈরী"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"বাগান সহ বাড়ি"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"অফিস বিল্ডিং"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"জাপানি পোস্ট অফিস"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"ইউরোপীয় পোস্ট অফিস"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"হাসপাতাল"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"ব্যাংক"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"অটোমেটেড টেলার মেশিন"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"হোটেল"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"লাভ হোটেল"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"দিনরাত্রি খোলা স্টোর"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"স্কুল"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"ডিপার্টমেন্ট স্টোর"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"কারখানা"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"ইজাকায়া লণ্ঠন"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"জাপানি দুর্গপ্রাসাদ"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"ইউরোপীয় দুর্গপ্রাসাদ"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"ধেড়ে ইঁদুর"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"ইঁদুর"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"ষাঁড়"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"মহিষ"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"গরু"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"চিতাবাঘ"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"খরগোশ"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"বিড়াল"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"ড্রাগন"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"কুমির"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"তিমি"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"শামুক"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"সাপ"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"ঘোড়া"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"পুরুষ ভেড়া"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"ছাগল"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"ভেড়া"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"বানর"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"মোরগ"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"মুরগির বাচ্চা"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"কুকুর"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"শূকর"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"মেয়ে শূকর"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"হাতি"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"অক্টোপাস"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"পেঁচানো ঝিনুক"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"ছারপোকা"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"পিঁপড়া"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"মৌমাছি"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"গুবরেপোকা"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"মাছ"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"ক্রান্তীয় মাছ"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"পটকা মাছ"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"কচ্ছপ"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"ডিম ফোটা মুরগির বাচ্চা"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"মুরগির ছোট ছানা"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"সামনে তাকানো মুরগির ছোট ছানা"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"পাখি"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"পেঙ্গুইন"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"কোয়ালা"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"পুডল কুকুর"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"এক কুঁজওয়ালা উট"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"দুই কুঁজওয়ালা উট"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"ডলফিন"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"ইঁদুর মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"গরুর মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"বাঘের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"খরগোসের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"বিড়ালের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"ড্রাগনের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"পানি উদগীরণকারী তিমি"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"ঘোড়ার মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"বানরের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"কুকুরের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"শূকরের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"ব্যাঙের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"ইঁদুর মুখো"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"নেকড়ের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"ভালুকের মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"পান্ডার মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"শূকরের নাক"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"পায়ের থাবার ছাপ"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"চোখ"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"কান"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"নাক"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"মুখ"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"জিহ্বা"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"উপর দিক নির্দেশক পেছন ফেরা হাতের সাদা তর্জনী"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"নীচের দিক নির্দেশক পেছন ফেরা হাতের সাদা তর্জনী"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"বামদিক নির্দেশক পেছন ফেরা হাতের সাদা তর্জনী"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"ডানদিক নির্দেশক পেছন ফেরা হাতের সাদা তর্জনী"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"মুষ্ঠবদ্ধ হাতের প্রতীক"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"হাত নাড়ানোর চিহ্ণ"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"ঠিক আছে বুঝানো হাতের চিহ্ণ"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"বৃদ্ধাঙ্গুলি উঠানো চিহ্ণ"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"বৃদ্ধাঙ্গুলি নামানো চিহ্ণ"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"হাততালির চিহ্ণ"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"উম্মুক্ত হাতের চিহ্ণ"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"মুকুট"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"মহিলাদের হ্যাট"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"চশমা"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"গলার টাই"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"টি-শার্ট"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"জিন্স"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"পোষাক"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"কিমোনো"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"বিকিনি"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"মহিলাদের কাপড়চোপড়"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"পার্স"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"হ্যান্ডব্যাগ"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"পাউচ থলে"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"পুরুষদের জুতা"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"এথলেটিক জুতা"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"হাই হিল জুতা"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"মেয়েদের স্যান্ডেল"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"মেয়েদের বুটজুতা"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"পদচিহ্ন"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"আবক্ষ প্রতিমার ছায়ামূর্তি"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"আবক্ষ প্রতিমার ছায়ামূর্তিগুলি"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"কিশোর"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"কিশোরী"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"পুরুষ"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"নারী"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"পরিবার"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"হাত ধরাধরি করে নারী পুরুষ"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"হাত ধরা অবস্থায় দুজন পুরুষ"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"হাত ধরা অবস্থায় দুজন নারী"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"পুলিশ অফিসার"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"খরগোশের মত কানওয়ালা নারী"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"ঘোমটাওয়ালা বধু"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"সোনালী চুলের ব্যক্তি"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"গুয়া পি মাও টুপি পরা পুরুষ"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"পাগড়ি পরা পুরুষ"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"বয়স্ক পুরুষ"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"বয়স্কা নারী"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"শিশু"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"নির্মাণ শ্রমিক"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"রাজকুমারী"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"জাপানি রাক্ষস"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"জাপানি ভূত"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"ভূত"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"শিশু দেবদূত"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"বহির্জাগতিক ভিনগ্রহবাসী"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"ভিনগ্রহবাসী দৈত্য"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"খুদে শয়তান"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"মাথার খুলি"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"তথ্য ডেস্কের ব্যক্তি"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"প্রহরী"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"নর্তকী"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"লিপস্টিক"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"নেল পলিশ"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"মুখ ম্যাসেজ"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"চুল কাটা"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"নাপিতের খুঁটি"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"সিরিঞ্জ"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"পিল"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"চুম্বন চিহ্ণ"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"প্রেমপত্র"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"আংটি"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"জহর পাথর"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"চুম্বন"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"তোড়া"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"হৃদয় সহ দম্পতি"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"বিবাহ"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"হৃৎকম্পনরত হৃদয়"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"ভগ্ন হৃদয়"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"দুটি হৃদয়"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"ঝিকিমিকি করা হৃদয়"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"বর্ধনশীল হৃদয়"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"তীর সহ হৃদয়"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"নীল হৃদয়"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"সবুজ হৃদয়"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"হলুদ হৃদয়"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"বেগুনি হৃদয়"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"ফিতে সহ হৃদয়"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"ঘূর্ণনরত হৃদয়"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"হৃদয় ডেকোরেশন"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"ভিতরে একটি বিন্দু সহ ডায়মন্ড আকৃতি"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"ইলেকট্রিক লাইট বাল্ব"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"রাগের প্রতীক"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"বোমা"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"ঘুমের প্রতীক"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"সংঘর্ষের প্রতীক"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"ঘাম ঝরা প্রতীক"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"তরল ফোঁটা"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"ধোঁয়ার রেখার প্রতীক"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"আইসক্রিমের দলা"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"ফোলানো বাইসেপ"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"মাথা ঘোরা প্রতীক"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"কথার বেলুন"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"চিন্তার বেলুন"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"সাদা ফুল"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"একশত পয়েন্ট প্রতীক"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"মানি ব্যাগ"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"মুদ্রা বিনিময়"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"মোটা ডলার চিহ্ণ"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"ক্রেডিট কার্ড"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"ইয়েন চিহ্ণ সহ ব্যাংকনোট"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"ডলার চিহ্ণসহ ব্যাংকনোট"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"ইউরো চিহ্ণ সহ ব্যাংকনোট"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"পাউন্ড চিহ্ণ সহ ব্যাংকনোট"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"পাখাওয়ালা টাকা"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"উর্ধ্বমুখী প্রবণতা ও ইয়েন চিহ্ণ সহ চার্ট"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"আসন"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"ব্যক্তিগত কম্পিউটার"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"ব্রিফকেস"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"মিনিডিস্ক"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"ফ্লপি ডিস্ক"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"অপটিকাল ডিস্ক"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"ডিভিডি"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"ফাইল ফোল্ডার"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"ফোল্ডারটি খুলুন"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"গুটিয়ে যাওয়া পৃষ্ঠা"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"উল্টানো হচ্ছে এমন পৃষ্ঠা"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"ক্যালেন্ডার"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"প্রতিদিন ছিঁড়ে ফেলা যায় এমন ক্যালেন্ডার"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"কার্ড ইন্ডেক্স"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"উর্ধ্বমুখী প্রবণতা সহ চার্ট"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"নিম্নমুখী প্রবণতা সহ চার্ট"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"বার চার্ট"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"ক্লিপবোর্ড"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"পুশপিন"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"গোল পুশপিন"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"কাগজ আঁটার ক্লিপ"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"সাধারণ রুলার"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"ক্রিকোণ রুলার"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"বুকমার্ক ট্যাব"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"লেজার খাতা"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"নোটবুক"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"ডেকোরেশন করা প্রচ্ছদযুক্ত নোটবুক"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"বন্ধ বই"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"খোলা বই"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"সবুজ বই"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"নীল বই"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"কমলা বই"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"বইগুলি"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"নামের ব্যাজ"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"স্ক্রোল করুন"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"মেমো"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"টেলিফোন রিসিভার"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"পেজার"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"ফ্যাক্স মেশিন"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"স্যাটেলােইট এন্টেনা"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"জনসাধারণের সামনে ঘোষনার জন্য লাউডস্পিকার"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"হর্ষধ্বনির জন্য মেগাফোন"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"আউটবক্স ট্রে"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"ইনবক্স ট্রে"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"প্যাকেজ"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"ইমেল প্রতীক"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"আগত খাম"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"ওপরে নিম্নমুখী তীরযুক্ত খাম"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"নামানো পতাকাযুক্ত বন্ধ মেলবাক্স"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"উত্তোলিত পতাকাযুক্ত বন্ধ মেলবাক্স"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"উত্তোলিত পতাকাযুক্ত খোলা মেলবাক্স"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"নামানো পতাকাযুক্ত খোলা মেলবাক্স"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"ডাকবাক্স"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"পোস্টাল শিঙা"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"খবরের কাগজ"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"মোবাইল ফোন"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"বাম দিকে ডানমুখী তীরযুক্ত মোবাইল ফোন"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"কম্পন মোড"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"মোবাইল ফোন বন্ধ"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"মোবাইল ফোন নিষেধ"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"বারযুক্ত এন্টেনা"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"ক্যামেরা"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"ভিডিও ক্যামেরা"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"টেলিভিশন"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"রেডিও"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"ভিডিও ক্যাসেট"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"মোচড়ানো ডানমুখী তীরগুলি"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"ঘড়ির কাঁটার দিকে ডানমুখী ও বামমুখী উম্মুক্ত বৃত্ত তীরগুলি"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"ঘড়ির কাঁটার দিকে ডানমুখী ও বামমুখী উম্মুক্ত বৃত্ত তীরগুলির মাঝে বৃত্তের মাঝে এক লেখা"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"ঘড়ির কাঁটার দিকে নিম্নমুখী ও উর্ধ্বমুখী উম্মুক্ত বৃত্ত তীরগুলি"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"ঘড়ির কাঁটার বিপরীত দিকে নিম্নমুখী ও উর্ধ্বমুখী উম্মুক্ত বৃত্ত তীরগুলি"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"কম উজ্জ্বলতার প্রতীক"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"বেশী উজ্জ্বলতার প্রতীক"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"বাতিল দাগ দেয়া স্পিকার"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"স্পিকার"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"একটি সাউন্ড ওয়েভ যুক্ত স্পিকার"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"তিনটি সাউন্ড ওয়েভ যুক্ত স্পিকার"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"ব্যাটারি"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"ইলেকট্রিক প্লাগ"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"বামদিক হেলানো বিবর্ধক কাচ"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"ডানদিক হেলানো বিবর্ধক কাচ"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"কালির কলম সহ তালা"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"চাবি সহ বন্ধ তালা"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"চাবি"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"তালা"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"খোলা তালা"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"ঘন্টা"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"বাতিল দাগ দেয়া ঘন্টা"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"বুকমার্ক"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"লিঙ্ক প্রতীক"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"রেডিও বোতাম"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"‘ব্যাক’লেখার উপর বামমুখী তীর"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"‘এন্ড’ লেখার উপর বামমুখী তীর"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"‘অন’ লেখার পাশে বিস্ময়সূচক চিহ্ণ সহ উপরে ডানমুখী তীর"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"‘সুন’ লেখা সহ উপরে ডানমুখী তীর"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"‘টপ’ লেখা সহ উপরে উর্ধ্বমুখী তীর"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"আঠারো বয়সের নীচে না প্রতীক"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"১০ লেখা কীবোর্ড বোতাম"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"ল্যাটিন বড় হাতের লেখার জন্য ইনপুট প্রতীক"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"ল্যাটিন ছোট হাতের লেখার জন্য ইনপুট প্রতীক"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"সংখ্যা লেখার জন্য ইনপুট প্রতীক"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"প্রতীকগুলির জন্য ইনপুট প্রতীক"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"ল্যাটিন অক্ষর লেখার জন্য ইনপুট প্রতীক"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"আগুন"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"ইলেকট্রিক টর্চ"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"পেঁচকল"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"হাতুড়ি"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"নাট ও বল্টু"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"হোচো চাকু"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"পিস্তল"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"অণুবীক্ষণ যন্ত্র"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"টেলিস্কোপ"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"ক্রিস্টাল বল"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"মাঝে বিন্দু সহ ছয় কোণা তারা"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"শিক্ষানবিসের জন্য জাপানি প্রতীক"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"ত্রিশূল প্রতীক"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"ব্ল্যাক চৌকোণা বোতাম"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"সাদা চৌকোণা বোতাম"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"বড় লাল বৃত্ত"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"বড় নীল বৃত্ত"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"বড় কমলা ডায়মন্ড"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"বড় নীল ডায়মন্ড"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"ছোট কমলা ডায়মন্ড"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"ছোট নীল ডায়মন্ড"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"উর্ধ্বমুখী লাল ত্রিভুজ"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"নিম্নমুখী লাল ত্রিভুজ"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"উর্ধ্বমুখী ছোট লাল ত্রিভুজ"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"নিম্নমুখী ছোট লাল ত্রিভুজ"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"ঘড়িতে সময় একটা"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"ঘড়িতে সময় দুইটা"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"ঘড়িতে সময় তিনটা"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"ঘড়িতে সময় চারটা"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"ঘড়িতে সময় পাঁচটা"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"ঘড়িতে সময় ছয়টা"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"ঘড়িতে সময় সাতটা"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"ঘড়িতে সময় আটটা"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"ঘড়িতে সময় নয়টা"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"ঘড়িতে সময় দশটা"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"ঘড়িতে সময় এগারটা"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"ঘড়িতে সময় বারটা"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"ঘড়িতে সময় একটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"ঘড়িতে সময় দুটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"ঘড়িতে সময় তিনটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"ঘড়িতে সময় চারটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"ঘড়িতে সময় পাঁচটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"ঘড়িতে সময় ছয়টা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"ঘড়িতে সময় সাতটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"ঘড়িতে সময় আটটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"ঘড়িতে সময় নয়টা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"ঘড়িতে সময় দশটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"ঘড়িতে সময় এগারটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"ঘড়িতে সময় বারটা বেজে তিরিশ মিনিট"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"ফুজি পর্বত"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"টোকিও টাওয়ার"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"স্ট্যাচু অব লিবার্টি"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"জাপানের ছায়ামূর্তি"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"মোয়াই মূর্তি"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"দেঁতো হাসি যুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"স্মিত চোখে দেঁতো হাসি"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"আনন্দাশ্রু সহ মুখমন্ডল"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"খোলা মুখে হাসি হাসি চেহারা"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"খোলা মুখ ও হাসি হাসি চোখ যুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"খোলা মুখ ও শীতল ঘাম যুক্ত হাসি হাসি চেহারা"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"খোলা মুখ ও জোরে চেপে বন্ধ রাখা চোখ যুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"আলোর বলয় যুক্ত হাসিমুখের চেহারা"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"শিংযুক্ত হাসিমুখের চেহারা"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"চোখ টেপা চেহারা"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"হাসি হাসি চোখ যুক্ত হাসিমুখের চেহারা"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"সুস্বাদু খাবারের স্বাদে মজা পাওয়া চেহারা"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"স্বস্তি পাওয়া চেহারা"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"হৃদয় আকারের চোখওয়ালা হাসিমুখের চেহারা"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"সানগ্লাাস পরা হাসিমুখের চেহারা"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"বোকা হাসিযুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"স্বাভাবিক চেহারা"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"ভাবলেশহীন চেহারা"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"আমোদিত হয়নিএমন চেহারা"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"শীতল ঘামযুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"বিষণ্ণ চেহারা"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"বিভ্রান্ত চেহারা"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"হতবুদ্ধি চেহারা"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"চুম্বনরত চেহারা"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"চুমু উপহার দিচ্ছে এমন চেহারা"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"হাসি হাসি চোখযুক্ত চুম্বনরত চেহারা"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"বন্ধ চোখযুক্ত চুম্বনরত চেহারা"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"বের করা জিহ্বাযুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"বের করা জিহ্বা ও চোখ টেপা চেহারা"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"বের করা জিহ্বা ও জোরে চেপে রাখা চোখ যুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"হতাশ চেহারা"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"দু:শ্চিন্তাগ্রস্ত চেহারা"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"রাগী চেহারা"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"ঠোঁট ফুলানো চেহারা"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"ক্রন্দনরত চেহারা"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"কঠোর পরিশ্রমী চেহারা"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"বিজয়ের দৃষ্টি যুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"হতাশ তবে স্বস্তি পাওয়া চেহারা"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"খোলা মুখে ভ্রু কোঁচকানো চেহারা"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"বেদনাময় মুখ"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"ভীতিকর চেহারা"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"ক্লান্ত চেহারা"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"ঘুমঘুম চেহারা"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"অবসন্ন চেহারা"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"মুখ ঘেঙচানো চেহারা"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"উচ্চস্বরে কান্নারত চেহারা"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"খোলা মুখযুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"নীরব থাকা চেহারা"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"খোলা মুখ ও শীতল ঘাম যুক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"ভয়ে চিৎকাররত চেহারা"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"বিস্মিত চেহারা"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"আরক্ত চেহারা"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"ঘুমন্ত চেহারা"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"বিহ্বল চেহারা"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"মুখহীন চেহারা"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"মেডিকাল মাস্ক পরা মুখ"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"দাঁত দেখানো স্মিত বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"আনন্দাশ্রুসহ বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"উম্মুক্ত মুখের স্মিত বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"হৃদয় আকারের চোখওয়ালা স্মিত বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"বিকৃত হাসি মুখে বিড়াল চেহারা"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"চোখ বন্ধ রাখা চুমুরত বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"ঠোঁট ফুলানো বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"ক্রন্দনরত বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"ক্লান্ত বিড়াল মুখ"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"ঠিক নাই ভঙ্গি সহ মুখ"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"ঠিক আছে ভঙ্গি সহ মুখ"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"অনেকখানি বাউ করা ব্যক্তি"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"খারাপ-কিছু-দেখবেন-না বানর"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"খারাপ-কিছু-শুনবেন-না বানর"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"খারাপ-কথা-বলবেন-না বানর"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"এক হাত উপরে উঠানো সুখী ব্যক্তি"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"দুহাত তুলে আনন্দ উদযাপনরত ব্যক্তি"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"ভ্রু কোঁচকানো ব্যক্তি"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"ঠোঁট ফুলানো ব্যক্তি"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"ভাঁজ করা বাহুওয়ালা ব্যক্তি"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"রকেট"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"হেলিকপ্টার"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"বাষ্পীয় যান"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"রেলওয়ে কার"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"উচ্চ-গতির ট্রেন"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"বুলেট নাক সহ উচ্চ-গতির ট্রেন"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"ট্রেন"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"মেট্রো"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"লাইট রেল"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"স্টেশন"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"ট্রাম"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"ট্রাম গাড়ি"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"বাস"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"আগত বাস"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"ট্রলিবাস"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"বাস স্টপেজ"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"মিনিবাস"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"অ্যাম্বুলেন্স"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"দমকল"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"পুলিশ কার"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"আগত পুলিশ কার"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"ট্যাক্সি"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"আগত ট্যাক্সি"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"অটোমোবাইল"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"আগত অটোমোবাইল"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"বিনোদনমূলক গাড়ী"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"ডেলিভারি ট্রাক"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"আর্টিকুলেটেড লরি"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"ট্রাক্টর"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"মনোরেল"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"পাহাড়ি রেলপথ"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"ঝুলন্ত রেলপথ"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"পাহাড়ি কেবলপথ"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"এরিয়াল ট্রামপথ"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"জাহাজ"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"বাইচের নৌকা"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"স্পিডবোট"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"আনুভূমিক ট্রাফিক লাইট"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"উল্লম্ব ট্রাফিক লাইট"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"নির্মাণ কাজের চিহ্ণ"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"আলো ছড়ানো পুলিশ কার"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"পতাকাদন্ডে পতাকা"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"দরজা"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"প্রবেশ নিষেধ চিহ্ণ"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"ধূমপান প্রতীক"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"ধূমপানবিহীন এলাকা প্রতীক"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"সঠিক স্থানে ময়লা ফেলুন প্রতীক"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"ময়লা ফেলবেন না প্রতীক"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"নিরাপদ পানির প্রতীক"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"অ-নিরাপদ পানির প্রতীক"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"সাইকেল"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"সাইকেল চলবে না"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"সাইকেল চালক"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"পাহাড়ে সাইকেল চালক"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"পথচারী"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"পথচারী পারপার না"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"শিশুদের পারপার"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"পুরুষ প্রতীক"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"নারী প্রতীক"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"রেস্টরুম"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"শিশুর প্রতীক"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"টয়লেট"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"বাথরুম"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"শাওয়ার"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"গোসল"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"বাথটব"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"পাসপোর্ট নিয়ন্ত্রণ"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"কাস্টমস"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"ভুলে ফেলে যাওয়া মাল দাবি"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"ভুলে যাওয়া মালপত্র"</string>
+</resources>
diff --git a/java/res/values-bn-rBD/strings-letter-descriptions.xml b/java/res/values-bn-rBD/strings-letter-descriptions.xml
new file mode 100644
index 0000000..37879f3
--- /dev/null
+++ b/java/res/values-bn-rBD/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"স্ত্রীলিঙ্গাত্মক অর্ডিন্যাল সূচক"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"মাইক্রো চিহ্ন"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"পুংলিঙ্গবাচক অর্ডিন্যাল সূচক"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"শার্প S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, গ্রেভ"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, টিল্ডাা"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, ডায়ারেসিস"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, উপরের রিং"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, লিগেচার"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, গ্রেভ"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, ডায়ারেসিস"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, গ্রেভ"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, ডায়ারেসিস"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"ইথ"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, টিল্ডাা"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, গ্রেভ"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, টিল্ডাা"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, ডায়ারেসিস"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, স্ট্রোক"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, গ্রেভ"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, ডায়ারেসিস"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"থর্ণ"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, ডায়ারেসিস"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, ম্যাকরন"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, ব্রীভ"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, অগোনিক"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, উপরে বিন্দু"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, কারোন"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, কারোন"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, স্ট্রোক"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, ম্যাকরন"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, ব্রীভ"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, উপরে বিন্দু"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, অগোনিক"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, কারোন"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, ব্রীভ"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, উপরে বিন্দু"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, স্ট্রোক"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, টিল্ডাা"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, ম্যাকরন"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, ব্রীভ"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, অগোনিক"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"বিন্দু বিহীন I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, লিগেচার"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"ক্রা"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, কারোন"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, মধ্যম বিন্দু"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, স্ট্রোক"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, কারোন"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, পূর্বে ঊর্ধকমা দিয়ে"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"ইং"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, ম্যাকরন"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, ব্রীভ"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, যুগ্ম অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, লিগেচার"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, কারোন"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, কারোন"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, চিহ্নবিশেষ"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, কারোন"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, স্ট্রোক"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, টিল্ডাা"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, ম্যাকরন"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, ব্রীভ"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, উপরে রিং"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, যুগ্ম অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, অগোনিক"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, সারকামফ্লেক্স"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, উপরে বিন্দু"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, কারোন"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"দীর্ঘ S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, শিং"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, শিং"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, নীচে কমা"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, নীচে কমা"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"শোহয়া"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, সারকামফ্লেক্স এবং অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, সারকামফ্লেক্স এবং গ্রেভ"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, সারকামফ্লেক্স এবং উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A,সারকামফ্লেক্স এবং টিল্ডা"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, সারকামফ্লেক্স এবং নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, ব্রীভ এবং অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, ব্রীভ এবং গ্রেভ"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, ব্রীভ এবং উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, ব্রীভ এবং টিল্ডা"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, ব্রীভ এবং নীচে ডট"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, টিল্ডাা"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, সারকামফ্লেক্স এবং অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, সারকামফ্লেক্স এবং গ্রেভ"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, সারকামফ্লেক্স এবং উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, সারকামফ্লেক্স এবং টিল্ডা"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, সারকামফ্লেক্স এবং নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, উপরে হুক"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, উপরে হুক"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, সারকামফ্লেক্স এবং অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, সারকামফ্লেক্স এবং গ্রেভ"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, সারকামফ্লেক্স এবং উপরে হুক"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, সারকামফ্লেক্স এবং টিল্ডা"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, সারকামফ্লেক্স এবং নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, শিং ও অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, শিং ও গ্রেভ"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, শিং ও উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, শিং ও টিল্ডা"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, শিং ও নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, হর্ন ও অ্যাকুইট"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, হর্ন ও গ্রেভ"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, হর্ন ও উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, হর্ন ও টিল্ডা"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, হর্ন ও নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, গ্রেভ"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, নীচে বিন্দু"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, উপরে হুক"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, টিল্ডা"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"উল্টানো বিস্ময়বোধক চিহ্ন"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"বামদিকে-নির্দেশিত যুগ্ম কোণ সমেত উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"মধ্যম বিন্দু"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"ঊর্ধ্বলিপি এক"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"ডানদিকে-নির্দেশিত যুগ্ম কোণ সমেত উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"উল্টানো প্রশ্ন চিহ্ন"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"বাম একক উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"ডান একক উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"একটি, নিচু স্থানে লেখা-৯ এর মতো উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"বাম যুগ্ম উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"ডান যুগ্ম উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"ছুরি"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"জোড়া ছুরি"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"প্রতি মাইলের চিহ্ন"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"প্রাইম"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"যুগ্ম প্রাইম"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"বামদিকে-নির্দেশিত একক কোণ সমেত উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"ডানদিকে-নির্দেশিত একক কোণ সমেত উদ্ধৃতি চিহ্ন"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"ঊর্ধ্বলিপি চার"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"ঊর্ধ্বলিপিতে ল্যাটিন ছোট অক্ষর n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"পেসো চিহ্ন"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"প্রযত্নে"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"ডানদিকে নির্দেশিত তীর"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"নিম্নাভিমুখী তীর"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"ফাঁকা সেট"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"বর্ধিত"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"তুলনায় কম বা সমান"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"তুলনায় বড় বা সমান"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"কালো তারকা"</string>
+</resources>
diff --git a/java/res/values-bn-rBD/strings-talkback-descriptions.xml b/java/res/values-bn-rBD/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..7cf17a1
--- /dev/null
+++ b/java/res/values-bn-rBD/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"সশব্দে উচ্চারিত পাসওয়ার্ডের কীগুলি শোনার জন্য একটি হেডসেট সংযুক্ত করুন।"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"বর্তমান পাঠ্য %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"কোনো পাঠ্য লেখা হয়নি"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> কী <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> কে <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> এ সংশোধন করছে"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> স্বত:সংশোধন করে"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"অজানা অক্ষর"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"শিফ্ট"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"আরো প্রতীক"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"শিফ্ট"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"প্রতীকগুলি"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"শিফ্ট"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"মুছুন"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"প্রতীকসমূহ"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"অক্ষরসমূহ"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"নম্বরগুলি"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"সেটিংস"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ট্যাব"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"স্পেস"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ভয়েস ইনপুট"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ইমোজি"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"ফেরত যান"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"অনুসন্ধান"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ডট"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ভাষা স্যুইচ করুন"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"পরবর্তী"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"পূর্ববর্তী"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"শিফ্ট সক্ষম করা হয়েছে"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"বড় হাতের অক্ষর সক্ষম করা হয়েছে"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"প্রতীক মোড"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"আরো প্রতীক মোড"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"অক্ষর মোড"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ফোন মোড"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ফোন প্রতীক মোড"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"কীবোর্ড লুকানো রয়েছে"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> কীবোর্ড দেখানো হচ্ছে"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"তারিখ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"তারিখ ও সময়"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ইমেল"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"বার্তাপ্রেরণ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"সংখ্যা"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ফোন"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"পাঠ্য"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"সময়"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"সাম্প্রতিকগুলি"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"ব্যক্তিগণ"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"বিষয়বস্তুগুলি"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"প্রকৃতি"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"স্থানসমূহ"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"প্রতীকসমূহ"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ইমোটিকনগুলি"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"বড় হাতের <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"বড় হাতের I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"বড় হাতের I, উপরে বিন্দু"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"অজানা প্রতীক"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"অজানা ইমোজি"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"বিকল্প অক্ষরগুলি উপলব্ধ রয়েছে"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"বিকল্প অক্ষরগুলি সরিয়ে দেওয়া হয়"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"বিকল্প প্রস্তাবনাগুলি উপলব্ধ রয়েছে"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"বিকল্প প্রস্তাবনাগুলি সরিয়ে দেওয়া হয়"</string>
+</resources>
diff --git a/java/res/values-bn-rBD/strings.xml b/java/res/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..75bcc6b
--- /dev/null
+++ b/java/res/values-bn-rBD/strings.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"ইনপুট বিকল্পগুলি"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"পরিচিতি নাম খুঁজুন"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"বানান পরীক্ষক আপনার পরিচিতি তালিকা থেকে এন্ট্রি ব্যবহার করে"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"কীপ্রেস এর সময় কম্পন"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"কীপ্রেস এর সময়ের শব্দ"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"কীপ্রেস এর ফলে পপআপ"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"ইনপুট পছন্দগুলি"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"উপস্থিতি"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"একাধিক ভাষা বিকল্পগুলি"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"অঙ্গভঙ্গি টাইপিং অভিরুচি"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"পাঠ্য সংশোধন"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"উন্নত"</string>
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"অন্য ইনপুট পদ্ধতিতে স্যুইচ করুন"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ভাষা স্যুইচ কীতে অন্যান্য ইনপুট পদ্ধতি পাওয়া যায়"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"ভাষা স্যুইচ কী"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"যখন একাধিক ইনপুট ভাষা সক্ষম থাকে তখন দেখান"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"স্লাইড সূচক দেখান"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"শিফ্ট বা সাংকেতিক চিহ্ন থেকে স্লাইড করার সময় চাক্ষুষ ইঙ্গিত প্রদর্শন"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"কী পপআপ বিলম্ব খারিজ"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"কোনো বিলম্ব হয়নি"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ডিফল্ট"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>মিলি.সে."</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"সিস্টেম ডিফল্ট"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"পরিচিতি নাম প্রস্তাব করুন"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"পরামর্শ ও সংশোধনীর জন্য পরিচিতি থেকে নাম ব্যবহার করুন"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"ব্যক্তিগতকৃত পরামর্শ"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"উন্নত <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"ডাবল-স্পেস পিরিয়ড"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"স্পেসবার দুবার টিপলে একটি স্পেস এর পর একটি পিরিয়ড লেখা হয়"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"স্বতঃ-ক্যাপিটালাইজেশন"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"প্রতিটি বাক্যের প্রথম শব্দ বড় হাতের করুন"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"ব্যক্তিগত অভিধান"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"অ্যাড-অন অভিধানগুলি"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"মূল অভিধান"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"সংশোধনের পরামর্শগুলি দেখান"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"লেখার সময় প্রস্তাবিত শব্দের প্রদর্শন"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"সবসময় দেখান"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"প্রতিকৃতি মোডে দেখান"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"সর্বদা লুকান"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"আপত্তিজনক শব্দ অবরোধ করুন"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"সম্ভাব্য অশোভন শব্দ সুপারিশ করবেন না"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"স্বত:সংশোধন"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"স্পেসবার ও যতিচিহ্ন ভুলভাবে টাইপ করা শব্দ স্বয়ংক্রিয়ভাবে সংশোধন করে"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"বন্ধ করুন"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"মাঝারি"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"আক্রমণাত্মক"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"খুব আক্রমণাত্মক"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"পরবর্তী-শব্দের জন্য পরামর্শগুলি"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"পরামর্শ দিতে পূর্ববর্তী শব্দ ব্যবহার করুন"</string>
+    <string name="gesture_input" msgid="826951152254563827">"অঙ্গভঙ্গির মাধ্যমে লেখা সক্ষম করুন"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"অক্ষরগুলোর মাঝে স্লাইড করে একটি শব্দ ইনপুট করুন"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"অঙ্গভঙ্গির ট্রেল দেখান"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ডায়নামিক ভাসমান পূর্বরূপ"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"অঙ্গভঙ্গির সময় প্রস্তাবিত শব্দ দেখুন"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"শব্দবন্ধ অঙ্গভঙ্গি"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"অঙ্গভঙ্গির সময় ব্যবধান ইনপুট করতে স্পেস কীতে যান"</string>
+    <string name="voice_input" msgid="3583258583521397548">"ভয়েস ইনপুট কী"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"কোনো ভয়েস ইনপুট পদ্ধতি সক্ষম নয়। ভাষা &amp; ইনপুট সেটিংস পরীক্ষা করুন।"</string>
+    <string name="configure_input_method" msgid="373356270290742459">"ইনপুট পদ্ধতি কনফিগার করুন"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"ইনপুট ভাষাগুলি"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"প্রতিক্রিয়া পাঠান"</string>
+    <string name="select_language" msgid="3693815588777926848">"ইনপুট ভাষাগুলি"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"সংরক্ষণ করতে আবার ছোঁন"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"অভিধান উপলব্ধ"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"কীবোর্ড থিম"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ইংরেজি (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ইংরেজি (US)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"স্প্যানিশ (US)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ইংরেজি (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ইংরেজি (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"স্প্যানিশ (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ঐতিহ্যবাহি)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (সিরিলিক)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ল্যাটিন)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"কোনো ভাষা নয় (বর্ণমালা)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"বর্ণমালা (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"বর্ণমালা (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"বর্ণমালা (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"বর্ণমালা (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"বর্ণমালা (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"বর্ণমালা (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"ইমোজি"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"কীবোর্ড থিম"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"হলো হোয়াইট"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"হলো ব্লু"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"ম্যাটেরিয়াল ডার্ক"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"ম্যাটেরিয়াল লাইট"</string>
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"কাস্টম ইনপুট শৈলীগুলি"</string>
+    <string name="add_style" msgid="6163126614514489951">"শৈলী জুড়ুন"</string>
+    <string name="add" msgid="8299699805688017798">"জুড়ুন"</string>
+    <string name="remove" msgid="4486081658752944606">"সরান"</string>
+    <string name="save" msgid="7646738597196767214">"সংরক্ষণ করুন"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"ভাষা"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"লেআউট"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"আপনার কাস্টম ইনপুট শৈলী ব্যবহার শুরু করার আগে এটি সক্ষম করা প্রয়োজন। আপনি কি এখন এটি সক্ষম করতে চান?"</string>
+    <string name="enable" msgid="5031294444630523247">"সক্ষম করুন"</string>
+    <string name="not_now" msgid="6172462888202790482">"এখন নয়"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"একই ইনপুট শৈলী ইতোমধ্যে বিদ্যমান: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"কী প্রেসে দীর্ঘ বিলম্ব"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"কীপ্রেস কম্পন সময়কাল"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"কীপ্রেস সাউন্ড ভলিউম"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"বহিরাগত অভিধান ফাইলটি পড়ুন"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ডাউনলোডস ফোল্ডারে কোনো অভিধান ফাইল নেই"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ইনস্টল করার জন্য একটি অভিধান ফাইল নির্বাচন করুন"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"সত্যিই কি <xliff:g id="LANGUAGE_NAME">%s</xliff:g> এর জন্য এই ফাইলটি ইনস্টল করবেন?"</string>
+    <string name="error" msgid="8940763624668513648">"একটি ত্রুটি ছিল"</string>
+    <string name="button_default" msgid="3988017840431881491">"ডিফল্ট"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> এ স্বাগতম"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"অঙ্গভঙ্গি টাইপিং এর মাধ্যমে"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"শুরু করুন"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"পরবর্তী পদক্ষেপ"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> সেট আপ হচ্ছে"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> সক্ষম করুন"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"দয়া করে আপনার ভাষা ও ইনপুট সেটিংস <xliff:g id="APPLICATION_NAME">%s</xliff:g> পরীক্ষা করুন। এর ফলে এটি আপনার ডিভাইসে চলার জন্য অনুমোদন পাবে।"</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"আপনার ভাষা ও ইনপুট সেটিংসে ইতোমধ্যে <xliff:g id="APPLICATION_NAME">%s</xliff:g> সক্ষম করা হয়েছে, তাই এই পদক্ষেপটি সমাপ্ত। পরবর্তীটিতে এগোন!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"সেটিংসে সক্ষম করুন"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> এ স্যুইচ করুন"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"এখন, সক্রিয় পাঠ্য-ইনপুট পদ্ধতি হিসেবে \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" নির্বাচন করুন।"</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"ইনপুট পদ্ধতি স্যুইচ করুন"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"অভিনন্দন, আপনি পুরোপুরি প্রস্তুত!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"এখন <xliff:g id="APPLICATION_NAME">%s</xliff:g> এর সাহায্যে আপনার সব পছন্দসই অ্যাপ্লিকেশানে লিখতে পারবেন।"</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"অতিরিক্ত ভাষাগুলি কনফিগার করুন"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"শেষ হয়েছে"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"অ্যাপ্লিকেশান আইকন দেখান"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"লঞ্চারে অ্যাপ্লিকেশান আইকন প্রদর্শন"</string>
+    <string name="app_name" msgid="6320102637491234792">"অভিধান প্রদানকারী"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"অভিধান প্রদানকারী"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"অভিধান পরিষেবা"</string>
+    <string name="download_description" msgid="6014835283119198591">"অভিধান আপডেট বিষয়ক তথ্য"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"অ্যাড-অন অভিধানগুলি"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"অভিধান উপলব্ধ"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"অভিধানের জন্য সেটিংস"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"ব্যবহারকারী অভিধানগুলি"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"ব্যবহারকারী অভিধান"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"অভিধান উপলব্ধ"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"বর্তমানে ডাউনলোড হচ্ছে"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"ইনস্টল হয়েছে"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"ইন্সটল হয়েছে, অক্ষম করা হয়েছে"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"অভিধান পরিষেবার সঙ্গে সংযুক্ত হতে সমস্যা"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"কোন অভিধান উপলব্ধ নয়"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"রিফ্রেশ"</string>
+    <string name="last_update" msgid="730467549913588780">"শেষ বার আপডেট হয়েছে"</string>
+    <string name="message_updating" msgid="4457761393932375219">"আপডেটের জন্য পরীক্ষা করছে"</string>
+    <string name="message_loading" msgid="5638680861387748936">"লোড হচ্ছে..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"মূল অভিধান"</string>
+    <string name="cancel" msgid="6830980399865683324">"বাতিল করুন"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"সেটিংস"</string>
+    <string name="install_dict" msgid="180852772562189365">"ইনস্টল করুন"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"বাতিল করুন"</string>
+    <string name="delete_dict" msgid="756853268088330054">"মুছুন"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"আপনার মোবাইল ডিভাইসে নির্বাচিত ভাষায় একটি অভিধান উপলব্ধ আছে।&lt;br/&gt; আমরা আপনার টাইপিং অভিজ্ঞতা উন্নত করতে <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> অভিধানটি&lt;b&gt;ডাউনলোড&lt;/b&gt; করার পরামর্শ দিচ্ছি।&lt;br/&gt; &lt;br/&gt; 3G মাধ্যমে ডাউনলোড হতে এক বা দুই মিনিট সময় লাগতে পারে। আপনার কোনো &lt;b&gt;সীমাহীন ডেটা প্ল্যান&lt;/b&gt;.&lt;br/&gt; না থাকলে আপনাকে মূল্য পরিশোধ করতে হতে পারে। আপনি যদি নিশ্চিত না হোন যে আপনি কোন ডেটা প্ল্যান ব্যবহার করছেন, তাহলে স্বয়ংক্রিয়ভাবে ডাউনলোড শুরু করার জন্য আমরা আপনাকে একটি Wi-Fi সংযোগ ব্যবহার করার পরামর্শ দিচ্ছি।&lt;br/&gt; &lt;br/&gt; টিপ: আপনার মোবাইল ডিভাইসের &lt;b&gt;সেটিংস&lt;/b&gt; মেনুতে &lt;b&gt;ভাষা&amp; ইনপুট&lt;/b&gt; এ গিয়ে অভিধান ডাউনলোড ও সরাতে পারবেন।"</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"এখন ডাউনলোড করুন (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>মেবা)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi মাধ্যমে ডাউনলোড করুন"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ভাষার জন্য একটি অভিধান উপলব্ধ"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"পর্যালোচনা ও ডাউনলোড করতে টিপুন"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ডাউনলোড হচ্ছে: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> এর জন্য পরামর্শগুলি দ্রুত প্রস্তুত হবে।"</string>
+    <string name="version_text" msgid="2715354215568469385">"সংস্করণ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"জুড়ুন"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"অভিধানে জুড়ুন"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"শব্দবন্ধ"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"আরো বিকল্প"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"কম বিকল্প"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ঠিক আছে"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"শব্দ:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"শর্টকাট:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"ভাষা:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"একটি শব্দ টাইপ করুন"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ঐচ্ছিক শর্টকাট"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"শব্দ সম্পাদনা করুন"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"সম্পাদনা করুন"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"মুছুন"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"ব্যবহারকারী অভিধানে কোনো শব্দ নেই। যোগ করুন (+) বোতাম স্পর্শ করে একটি শব্দ যোগ করুন।"</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"সব ভাষার জন্য"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"আরো ভাষা..."</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"মুছুন"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-ca/strings-action-keys.xml b/java/res/values-ca/strings-action-keys.xml
index 9dcf219..2760fb0 100644
--- a/java/res/values-ca/strings-action-keys.xml
+++ b/java/res/values-ca/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Ant."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Fet"</string>
     <string name="label_send_key" msgid="482252074224462163">"Envia"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Cerca"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Atura"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Esp."</string>
 </resources>
diff --git a/java/res/values-ca/strings-config-important-notice.xml b/java/res/values-ca/strings-config-important-notice.xml
new file mode 100644
index 0000000..2793145
--- /dev/null
+++ b/java/res/values-ca/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Considera comunicacions i dades introd. per millorar suggeriments"</string>
+</resources>
diff --git a/java/res/values-ca/strings-letter-descriptions.xml b/java/res/values-ca/strings-letter-descriptions.xml
new file mode 100644
index 0000000..a6569ec
--- /dev/null
+++ b/java/res/values-ca/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicador ordinal femení"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Signe de micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicador ordinal masculí"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S sonora"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, accent obert"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, accent tancat"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, titlla"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, dièresi"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, anell"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, lligadura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, ce trencada"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, accent obert"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, accent tancat"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, dièresi"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, accent obert"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, accent tancat"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, dièresi"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, titlla"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, accent obert"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, accent tancat"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, titlla"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, dièresi"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, conjunt buit"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, accent obert"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, accent tancat"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"O, dièresi"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, accent tancat"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, dièresi"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, màcron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breu"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, croc polonès"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, accent tancat"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punt superior"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, anticircumflex"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, anticircumflex"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, barra"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, anticircumflex"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breu"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punt superior"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, croc polonès"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, anticircumflex"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breu"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punt superior"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, vírgula"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, barra"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, titlla"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, màcron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breu"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, croc polonès"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I sense punt"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, lligadura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, vírgula"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, accent tancat"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, vírgula"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, anticircumflex"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punt volat"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, barra"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, accent tancat"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, vírgula"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, anticircumflex"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedida d\'apòstrof"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, màcron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breu"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, accent tancat doble"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, lligadura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, accent tancat"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, vírgula"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, anticircumflex"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, accent tancat"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, vírgula"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, anticircumflex"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, vírgula"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, anticircumflex"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, barra"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, titlla"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, màcron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breu"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, anell"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, accent tancat doble"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, croc polonès"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, accent tancat"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punt superior"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, anticircumflex"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S llarga"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, banya"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, banya"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, coma inferior"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, coma inferior"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Neutra"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punt inferior"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, vírgula superior"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex i accent tancat"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex i accent obert"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex i vírgula superior"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex i titlla"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex i punt inferior"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breu i accent tancat"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breu i accent obert"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breu i vírgula superior"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breu i titlla"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breu i punt inferior"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punt inferior"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, vírgula superior"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, titlla"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex i accent tancat"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex i accent obert"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex i vírgula superior"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex i titlla"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex i punt inferior"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, vírgula superior"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punt inferior"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punt inferior"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, vírgula superior"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex i accent tancat"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex i accent obert"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex i vírgula superior"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex i titlla"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex i punt inferior"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, banya i accent tancat"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, banya i accent obert"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, banya i vírgula superior"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, banya i titlla"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, banya i punt inferior"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punt inferior"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, vírgula superior"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, banya i accent tancat"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, banya i accent obert"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, banya i vírgula superior"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, banya i titlla"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, banya i punt inferior"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, accent obert"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punt inferior"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, vírgula superior"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, titlla"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Signe d\'exclamació invertit"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Doble cometa angular d\'obertura"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"punt volat"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superíndex d\'u"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Doble cometa angular de tancament"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Signe d\'interrogació invertit"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Cometes simples d\'obertura"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Cometes simples de tancament"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Cometes alemanyes simples d\'obertura"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Cometes dobles d\'obertura"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Cometes dobles de tancament"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obelisc"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Doble obelisc"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Signe per mil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Cometa"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Cometa doble"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Cometes angulars simples d\'obertura"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Cometes angulars simples de tancament"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superíndex de quatre"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superíndex de lletra minúscula llatina n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Signe del peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Percentatge"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Fletxa cap a la dreta"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Fletxa cap avall"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Conjunt buit"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Més petit o igual que"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Més gran o igual que"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Estrella negra"</string>
+</resources>
diff --git a/java/res/values-ca/strings-talkback-descriptions.xml b/java/res/values-ca/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..9b01c75
--- /dev/null
+++ b/java/res/values-ca/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Connecta uns auriculars per sentir les tecles que s\'utilitzen per introduir la contrasenya en veu alta."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"El text actual és %s."</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"No s\'ha introduït cap text."</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corregeix <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> per <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> executa la correcció automàtica."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Caràcter desconegut"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Maj"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Més símbols"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Maj"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Símbols"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Maj"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Suprimeix"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Símbols"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Lletres"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Números"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Configuració"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulador"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espai"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Entrada de veu"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Retorn"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Cerca"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punt"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Canvia l\'idioma"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Següent"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Maj activat"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloq Maj activat"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode de símbols"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Mode de més símbols"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode de lletres"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode de telèfon"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode de símbols de telèfon"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"S\'ha amagat el teclat."</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Es mostra el teclat per a <xliff:g id="KEYBOARD_MODE">%s</xliff:g>."</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"data i hora"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"correu electrònic"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"missatgeria"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"número"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telèfon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"hora"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recents"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Persones"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objectes"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natura"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Llocs"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbols"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticones"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> majúscula"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I majúscula"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I majúscula, punt superior"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbol desconegut"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconegut"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Hi ha caràcters alternatius disponibles."</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Els caràcters alternatius s\'ignoren."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Hi ha suggeriments alternatius disponibles."</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Els suggeriments alternatius s\'ignoren."</string>
+</resources>
diff --git a/java/res/values-ca/strings.xml b/java/res/values-ca/strings.xml
index 0b9ee03..80d2987 100644
--- a/java/res/values-ca/strings.xml
+++ b/java/res/values-ca/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opcions d\'entrada"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Recerca d\'ordres de reg."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cerca noms de contactes"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"El corrector ortogràfic utilitza entrades de la llista de contactes"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibra en prémer tecles"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"So en prémer tecles"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Amplia en prémer tecles"</string>
-    <string name="general_category" msgid="1859088467017573195">"General"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Correcció de text"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Escriptura gestual"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Altres opcions"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Configuració avançada"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opcions per a experts"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Altres mètodes d\'introducció"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La tecla de canvi d\'idioma serveix també per a altres mètodes d\'entrada"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de canvi d\'idioma"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Predeterm. del sist."</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Suggereix noms de contactes"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilitza els noms de contactes per fer suggeriments i correccions"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Suggeriments personalitz."</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Millora <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Punt amb doble espai"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Picar dues vegades la barra d\'espai insereix punt i espai blanc"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Majúscules automàtiques"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostra el recorregut del gest"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Visualitz. prèvia dinàmica flotant"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Consulta la paraula suggerida mentre fas el gest"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: desada"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Connecta un auricular per escoltar les claus de la contrasenya en veu alta."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"El text actual és %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"No s\'ha introduït cap text"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corregeix <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> per <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> aplica correccions automàtiques"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Clau de codi %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Maj"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Maj activat (pica per desactivar)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Bloq Maj activat (pica per desactivar)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Supr"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Símbols"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Lletres"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Números"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Configuració"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Pestanya"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Espai"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Entrada de veu"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Cara somrient"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Retorn"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Cerca"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punt"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Canvia l\'idioma"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Següent"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Anterior"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Maj activat"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Bloq Maj activat"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Maj desactivat"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Mode de símbols"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode de lletres"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode de telèfon"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode de símbols de telèfon"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Teclat amagat"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Es mostra el teclat <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"data"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"data i hora"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"correu electrònic"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"missatgeria"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"número"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telèfon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Formula el gest"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Per afegir espais als gestos, apropa el dit a la tecla d\'espai."</string>
     <string name="voice_input" msgid="3583258583521397548">"Tecla d\'entrada de veu"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Al teclat principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Al teclat de símbols"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Desactivada"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micròfon al teclat principal"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro en tecl. símb."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entrada de veu desactivada"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No hi ha cap mètode d\'introducció activat. Comprova la configuració d\'Idioma i introducció de text."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configura mètodes d\'entrada"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomes"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Envia comentaris"</string>
     <string name="select_language" msgid="3693815588777926848">"Idiomes d\'introducció"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Torna a tocar per desar"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Diccionari disponible"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Activa els comentaris de l\'usuari"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Ajuda a millorar aquest editor de mètode d\'introducció de text mitjançant l\'enviament d\'estadístiques d\'ús i d\'informes d\'error."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclat"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Anglès (Regne Unit)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Anglès (EUA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Espanyol (EUA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Anglès (Regne Unit) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Anglès (Estats Units) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Espanyol (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Anglès (Regne Unit) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Anglès (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Espanyol (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ciríl·lic)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (llatí)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Cap idioma (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Combinació de colors"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Blanc"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blau"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Estils d\'entrada personalitzats"</string>
     <string name="add_style" msgid="6163126614514489951">"Afeg. estil"</string>
     <string name="add" msgid="8299699805688017798">"Afegeix"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Activa"</string>
     <string name="not_now" msgid="6172462888202790482">"Ara no"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Ja existeix aquest estil d\'entrada: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'estudi d\'usabilitat"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Retard en mantenir premut"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Durada vibració en prémer"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volum del so en prémer tecles"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Lectura d\'un fitxer de diccionari extern"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"No hi ha cap fitxer de diccionari a la carpeta Baixades"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selecció d\'un fitxer de diccionari per instal·lar"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Realment vols instal·lar aquest fitxer per a <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Realment vols instal·lar aquest fitxer per a <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"S\'ha produït un error"</string>
     <string name="button_default" msgid="3988017840431881491">"Predeterminat"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Et donem la benvinguda a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Actualitza"</string>
     <string name="last_update" msgid="730467549913588780">"Última actualització"</string>
     <string name="message_updating" msgid="4457761393932375219">"S\'està comprovant si hi ha actualitzacions"</string>
-    <string name="message_loading" msgid="8689096636874758814">"S\'està carregant..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"S\'està carregant..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Diccionari principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancel·la"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Configuració"</string>
     <string name="install_dict" msgid="180852772562189365">"Instal·la"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancel·la"</string>
     <string name="delete_dict" msgid="756853268088330054">"Suprimeix"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Hi ha un diccionari disponible per a l\'idioma seleccionat al teu dispositiu mòbil.&lt;br/&gt; Et recomanem que &lt;b&gt;baixis&lt;/b&gt; el diccionari de <xliff:g id="LANGUAGE">%1$s</xliff:g> per millorar la teva experiència d\'escriptura.&lt;br/&gt; &lt;br/&gt; La baixada pot trigar un parell de minuts en xarxes 3G. Si no tens un &lt;b&gt;pla de dades il·limitat&lt;/b&gt;.&lt;br/&amp;gt, és possible que s\'apliquin càrrecs. Si no estàs segur de les característiques del teu pla de dades, et recomanem que cerquis una connexió Wi-Fi per iniciar la baixada automàticament.&lt;br/&gt; &lt;br/&gt; Consell: Pots baixar i suprimir diccionaris a la secció &lt;b&gt;Idioma i introducció de text&lt;/b&gt; del menú &lt;b&gt;Configuració&lt;/b&gt; del dispositiu mòbil."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Hi ha un diccionari disponible per a l\'idioma seleccionat al teu dispositiu mòbil.&lt;br/&gt; Et recomanem que &lt;b&gt;baixis&lt;/b&gt; el diccionari per a <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> per millorar la teva experiència d\'escriptura.&lt;br/&gt; &lt;br/&gt; La baixada pot trigar un parell de minuts en xarxes 3G. Si no tens un &lt;b&gt;pla de dades il·limitat&lt;/b&gt;,&lt;br/&gt; és possible que s\'apliquin càrrecs. Si no estàs segur de les característiques del teu pla de dades, et recomanem que cerquis una connexió Wi-Fi per iniciar la baixada automàticament.&lt;br/&gt; &lt;br/&gt;Consell: Pots baixar i suprimir diccionaris a la secció &lt;b&gt;Idioma i introducció de text&lt;/b&gt; del menú &lt;b&gt;Configuració&lt;/b&gt; del dispositiu mòbil."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Baixa ara (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Baixa mitjançant Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Hi ha un diccionari disponible per a l\'idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Hi ha disponible un diccionari per a <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Prem per revisar-lo i per baixar-lo"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Baixada: els suggeriments per a <xliff:g id="LANGUAGE">%1$s</xliff:g> estaran disponibles ben aviat."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Baixada: els suggeriments per a <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> estaran disponibles ben aviat."</string>
     <string name="version_text" msgid="2715354215568469385">"Versió <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Afegeix"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Afegeix al diccionari"</string>
diff --git a/java/res/values-cs/strings-action-keys.xml b/java/res/values-cs/strings-action-keys.xml
index e9545fe..c398032 100644
--- a/java/res/values-cs/strings-action-keys.xml
+++ b/java/res/values-cs/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Před."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Hot."</string>
     <string name="label_send_key" msgid="482252074224462163">"Odes."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Hledat"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauza"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Čekat"</string>
 </resources>
diff --git a/java/res/values-cs/strings-config-important-notice.xml b/java/res/values-cs/strings-config-important-notice.xml
new file mode 100644
index 0000000..8de51cc
--- /dev/null
+++ b/java/res/values-cs/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Zlepšovat návrhy na základě vaší komunikace a zadaných dat"</string>
+</resources>
diff --git a/java/res/values-cs/strings-letter-descriptions.xml b/java/res/values-cs/strings-letter-descriptions.xml
new file mode 100644
index 0000000..7b3e1c5
--- /dev/null
+++ b/java/res/values-cs/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Ženský indikátor rodu"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Znak mikro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Mužský indikátor rodu"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Ostré S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A s čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A s vokáněm"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A s tildou"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A s dvěma tečkami"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A s kroužkem nad"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Písmeno Ae"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C s cedillou"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E s čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E s vokáněm"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E s dvěma tečkami"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I s čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I s vokáněm"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I s dvěma tečkami"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N s tildou"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O s čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O s vokáněm"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O s tildou"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O s dvěma tečkami"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O přeškrtnuté"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U s čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U s vokáněm"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U s dvěma tečkami"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y s dvěma tečkami"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A s pomlčkou nad"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A s kulatým háčkem"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A s ocáskem vpravo"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C s vokáněm"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C s tečkou nad"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C s háčkem"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D s háčkem"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D přeškrtnuté"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E s pomlčkou nad"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E s kulatým háčkem"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E s tečkou nad"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E s ocáskem vpravo"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E s háčkem"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G s vokáněm"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G s kulatým háčkem"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G s tečkou nad"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G s cedillou"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H s vokáněm"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H přeškrtnuté"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I s tildou"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I s pomlčkou nad"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I s kulatým háčkem"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I s ocáskem vpravo"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I bez tečky"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Ligatura IJ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J s vokáněm"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K s cedillou"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L s cedillou"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L s háčkem"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L s tečkou uprostřed"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L přeškrtnuté"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N s cedillou"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N s háčkem"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N s apostrofem před"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O s pomlčkou nad"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O s kulatým háčkem"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O s dvojitou čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Ligatura OE"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R s cedillou"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R s háčkem"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S s vokáněm"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S s cedillou"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S s háčkem"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T s cedillou"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T s háčkem"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T přeškrtnuté"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U s tildou"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U s pomlčkou nad"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U s kulatým háčkem"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U s kroužkem nad"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U s dvojitou čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U s ocáskem vpravo"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W s vokáněm"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y s vokáněm"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z s čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z s tečkou nad"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z s háčkem"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Dlouhé s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O s růžkem"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U s růžkem"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S s čárkou pod"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T s čárkou pod"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Šva"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A s tečkou pod"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A s háčkem"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A s vokáněm a čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A s vokáněm a čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A s vokáněm a háčkem nad"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A s vokáněm a tildou"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A s vokáněm a tečkou pod"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A s kulatým háčkem a čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A s kulatým háčkem a čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A s kulatým háčkem a háčkem nad"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A s kulatým háčkem a tildou"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A s kulatým háčkem a tečkou pod"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E s tečkou pod"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E s háčkem nad"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E s tildou"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E s vokáněm a čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E s vokáněm a čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E s vokáněm a háčkem nad"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E s vokáněm a tildou"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E s vokáněm a tečkou pod"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I s háčkem nad"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I s tečkou pod"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O s tečkou pod"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O s háčkem nad"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O s vokáněm a čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O s vokáněm a čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O s vokáněm a háčkem nad"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O s vokáněm a tildou"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O s vokáněm a tečkou pod"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O s růžkem a čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O s růžkem a čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O s růžkem a háčkem nad"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O s růžkem a tildou"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O s růžkem a tečkou pod"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U s tečkou pod"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U s háčkem nad"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U s růžkem a čárkou nad vpravo"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U s růžkem a čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U s růžkem a háčkem nad"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U s růžkem a tildou"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U s růžkem a tečkou pod"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y s čárkou nad vlevo"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y s tečkou pod"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y s háčkem nad"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y s tildou"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Obrácený vykřičník"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Dvojité lomené uvozovky vlevo"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Tečka uprostřed"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Číslice jedna jako horní index"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Dvojité lomené uvozovky vpravo"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Obrácený otazník"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Koncová uvozovka jednoduchá"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Horní 9 uvozovka jednoduchá"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Počáteční uvozovka jednoduchá"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Koncová uvozovka dvojitá"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Horní 9 uvozovka dvojitá"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Křížek"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dvojitý křížek"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promile"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Horní čárka"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dvojitá horní čárka"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Ostrá závorka levá"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Ostrá závorka pravá"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Číslice čtyři jako horní index"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Malé písmeno latinky n jako horní index"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso – znak"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Znak c/o"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Šipka vpravo"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Šipka dolů"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Prázdná množina"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Zvýšení"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menší nebo rovno"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Větší nebo rovno"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Černá hvězdička"</string>
+</resources>
diff --git a/java/res/values-cs/strings-talkback-descriptions.xml b/java/res/values-cs/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..6c9c800
--- /dev/null
+++ b/java/res/values-cs/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Chcete-li slyšet, které klávesy jste při zadávání hesla stiskli, připojte sluchátka."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Aktuální text je %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Není zadán žádný text"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Klávesou <xliff:g id="KEY_NAME">%1$s</xliff:g> opravíte <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Klávesou <xliff:g id="KEY_NAME">%1$s</xliff:g> provedete automatickou opravu"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Neznámý znak"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Další symboly"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboly"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Smazat"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboly"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Písmena"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Čísla"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Nastavení"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Karta"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Mezerník"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Hlasový vstup"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emodži"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Vyhledávání"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Tečka"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Přepnout jazyk"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Další"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Předchozí"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Klávesa Shift je aktivní"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Klávesa Caps Lock je aktivní"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Režim symbolů"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Režim dalších symbolů"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Režim písmen"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Režim telefonu"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Režim telefonních symbolů"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Klávesnice je skrytá"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Je zobrazena klávesnice <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum a čas"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"zprávy"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"čísla"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"čas"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"adresy URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Poslední"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Lidé"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Předměty"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Příroda"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Místa"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboly"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikony"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Velký znak <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Velké I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Velké I s tečkou nad"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Neznámý znak"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Neznámý smajlík emodži"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternativní znaky jsou k dispozici"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativní znaky jsou ignorovány"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternativní návrhy jsou k dispozici"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativní návrhy jsou ignorovány"</string>
+</resources>
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index c73e8ab..d5c479c 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávání textu a dat"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Příkazy vývoj. protokolu"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Vyhledat kontakty"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Kontrola pravopisu používá záznamy z vašeho seznamu kontaktů."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Při stisku klávesy vibrovat"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk při stisku klávesy"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Detail znaku při stisku klávesy"</string>
-    <string name="general_category" msgid="1859088467017573195">"Obecné"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Psaní gesty"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Další možnosti"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Pokročilá nastavení"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Možnosti pro odborníky"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Přepínat metody zadávání"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Klávesa pro přepínání jazyka ovládá i další metody zadávání"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Klávesa přepínání jazyka"</string>
@@ -46,11 +51,13 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Výchozí nastavení"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Navrhovat jména kontaktů"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Použít jména ze seznamu kontaktů k návrhům a opravám"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalizované návrhy"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Pomoci vylepšovat aplikaci <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Tečka dvojitým mezerníkem"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dvojím klepnutím na mezerník vložíte tečku následovanou mezerou."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Velká písmena automaticky"</string>
     <string name="auto_cap_summary" msgid="7934452761022946874">"Kapitalizace prvního slova každé věty"</string>
-    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Osobní slovník"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Vlastní slovník"</string>
     <string name="configure_dictionaries_title" msgid="4238652338556902049">"Doplňkové slovníky"</string>
     <string name="main_dictionary" msgid="4798763781818361168">"Hlavní slovník"</string>
     <string name="prefs_show_suggestions" msgid="8026799663445531637">"Zobrazit návrhy oprav"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Zobrazovat stopu gesta"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamický plovoucí náhled"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Zobrazení navrhovaného slova při psaní gesty"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Uloženo"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Chcete-li slyšet, které klávesy jste při zadávání hesla stiskli, připojte sluchátka."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Aktuální text je %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Není zadán žádný text"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Klávesou <xliff:g id="KEY">%1$s</xliff:g> opravíte <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Klávesa <xliff:g id="KEY">%1$s</xliff:g> provádí automatickou opravu"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Kód klávesy %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Klávesa Shift je zapnutá (vypnete ji klepnutím)."</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Klávesa Caps Lock je zapnutá (vypnete ji klepnutím)."</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboly"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Písmena"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Čísla"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Nastavení"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulátor"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Mezerník"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Hlasový vstup"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smajlík"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"vyhledávací tlačítko"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Tečka"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Přepnout jazyk"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Další"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Předchozí"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Klávesa Shift je aktivní"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Klávesa Caps Lock je aktivní"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Klávesa Shift je neaktivní"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Režim symbolů"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Režim písmen"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Režim telefonu"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Režim telefonních symbolů"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Klávesnice je skrytá"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Zobrazení klávesnice: <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datum a čas"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"zprávy"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"čísla"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"čas"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"adresy URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frázové gesto"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Mezery mezi gesty zadáte přejetím po klávese mezerníku."</string>
     <string name="voice_input" msgid="3583258583521397548">"Klávesa hlasového vstupu"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na hlavní klávesnici"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na klávesnici se symboly"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Vypnuto"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon na hlavní klávesnici"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon na klávesnici se symboly"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup vypnut"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nejsou povoleny žádné metody hlasového vstupu. Zkontrolujte nastavení Jazyk a vstup."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurace metod zadávání"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Vstupní jazyky"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Odeslat zpětnou vazbu"</string>
     <string name="select_language" msgid="3693815588777926848">"Vstupní jazyky"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Opětovným dotykem provedete uložení"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Slovník k dispozici"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Aktivovat zasílání statistik užívání a zpráv o selhání"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Pomozte nám vylepšit tento editor pro zadávání dat automatickým zasíláním statistik využití a zpráv o selhání do Googlu."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Motiv klávesnice"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"angličtina (Velká Británie)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"angličtina (USA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"španělština (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angličtina (VB) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angličtina (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"španělština (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradiční)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"angličtina (VB) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"angličtina (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"španělština (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradiční)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cyrilice)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latinka)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Žádný jazyk (latinka)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Latinka (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Latinka (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Latinka (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Latinka (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emodži"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Barevné schéma"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Bílá"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Modrá"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Vlastní styl zadávání"</string>
     <string name="add_style" msgid="6163126614514489951">"Přidat styl"</string>
     <string name="add" msgid="8299699805688017798">"Přidat"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Povolit"</string>
     <string name="not_now" msgid="6172462888202790482">"Teď ne"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Tento styl zadávání již existuje: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim studie použitelnosti"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Prodleva dlouhého stisknutí"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Délka vibrace u stisku klávesy"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Hlasitost stisknutí klávesy"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Číst soubor externího slovníku"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Ve složce Stažené nejsou žádné soubory slovníků."</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Vyberte soubor slovníku k instalaci"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Chcete nainstalovat tento soubor pro jazyk <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Chcete nainstalovat tento soubor pro jazyk <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Došlo k chybě"</string>
     <string name="button_default" msgid="3988017840431881491">"Výchozí"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Vítá vás <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Aktualizovat"</string>
     <string name="last_update" msgid="730467549913588780">"Poslední aktualizace"</string>
     <string name="message_updating" msgid="4457761393932375219">"Kontrola aktualizací"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Načítání..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Načítání…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Hlavní slovník"</string>
     <string name="cancel" msgid="6830980399865683324">"Zrušit"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Nastavení"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalovat"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Zrušit"</string>
     <string name="delete_dict" msgid="756853268088330054">"Smazat"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Pro vybraný jazyk mobilního zařízení je k dispozici slovník.&lt;br/&gt; Doporučujeme slovník pro jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g> &lt;b&gt;stáhnout&lt;/b&gt;. Usnadníte si tím zadávání textu.&lt;br/&gt; &lt;br/&gt; V síti 3G bude stahování chvíli trvat. Pokud nemáte &lt;b&gt;neomezený datový tarif&lt;/b&gt;, mohou vám být účtovány poplatky.&lt;br/&gt; Jestliže si nejste jisti, jaký datový tarif máte, doporučujeme vám najít připojení Wi-Fi. Stahování se pak zahájí automaticky.&lt;br/&gt; &lt;br/&gt; Tip: Slovníky můžete stahovat a odstraňovat v nabídce mobilního zařízení &lt;b&gt;Jazyk a vstup&lt;/b&gt; v &lt;b&gt;Nastavení&lt;/b&gt;."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Pro jazyk vybraný na vašem mobilním zařízení je k dispozici slovník.&lt;br/&gt; Doporučujeme slovník pro jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> &lt;b&gt;stáhnout&lt;/b&gt;. Usnadníte si tím zadávání textu. &lt;br/&gt; &lt;br/&gt; V síti 3G bude stahování trvat minutu až dvě. Pokud nemáte &lt;b&gt;neomezený datový tarif&lt;/b&gt;, mohou vám být účtovány poplatky.&lt;br/&gt; Jestliže si nejste jisti, jaký datový tarif máte, doporučujeme vám najít připojení Wi-Fi. Stahování se pak zahájí automaticky.&lt;br/&gt; &lt;br/&gt; Tip: Slovníky můžete stahovat a odstraňovat v nabídce mobilního zařízení &lt;b&gt;Jazyk a zadávání&lt;/b&gt; v &lt;b&gt;Nastavení&lt;/b&gt;."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Stáhnout ihned (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Stáhnout pouze přes Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Je k dispozici slovník pro jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Je k dispozici slovník pro jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Stisknutím zkontrolujete a stáhnete"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Stahování: návrhy pro jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g> budou brzy k dispozici."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Stahování: návrhy pro jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> budou brzy k dispozici."</string>
     <string name="version_text" msgid="2715354215568469385">"Verze <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Přidat"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Přidat do slovníku"</string>
diff --git a/java/res/values-da/strings-action-keys.xml b/java/res/values-da/strings-action-keys.xml
index 757dc00..cef26fb 100644
--- a/java/res/values-da/strings-action-keys.xml
+++ b/java/res/values-da/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Forr."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Udfør"</string>
     <string name="label_send_key" msgid="482252074224462163">"Send"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Søg"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Vent"</string>
 </resources>
diff --git a/java/res/values-da/strings-config-important-notice.xml b/java/res/values-da/strings-config-important-notice.xml
new file mode 100644
index 0000000..1c0c63e
--- /dev/null
+++ b/java/res/values-da/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Giv bedre forslag ud fra tidligere kommunikation og data"</string>
+</resources>
diff --git a/java/res/values-da/strings-letter-descriptions.xml b/java/res/values-da/strings-letter-descriptions.xml
new file mode 100644
index 0000000..f12cdca
--- /dev/null
+++ b/java/res/values-da/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminin ordinal"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikrotegn"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Maskulin ordinal"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Dobbelt s"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Lille a med accent grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Lille a med accent aigu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"Lille a med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"Lille a med tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"Lille a med omlyd"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"Lille å"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Lille æ"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Lille c med cedille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Lille e med accent grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Lille e med accent aigu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Lille e med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Lille e med omlyd"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Lille i med accent grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Lille i med accent aigu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"Lille i med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"Lille i med omlyd"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Lille islandsk eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Lille n med tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Lille o med accent grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Lille o med accent aigu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"Lille o med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"Lille o med tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"Lille o med omlyd"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Lille ø"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Lille u med accent grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Lille u med accent aigu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"Lille u med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"Lille u med omlyd"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Lille y med accent aigu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Lille islandsk thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Lille y med omlyd"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"Lille a med makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"Lille a med breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"Lille a med højrekrog"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Lille c med accent aigu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Lille c med cirkumfleks"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Lille c med prik over"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Lille c med hacek"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Lille d med hacek"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Lille d med gennemstregning"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Lille e med makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Lille e med breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Lille e med prik over"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Lille e med højrekrog"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Lille e med hacek"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Lille g med cirkumfleks"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Lille g med breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Lille g med prik over"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Lille g med cedille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Lille h med cirkumfleks"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Lille h med gennemstregning"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"Lille i med tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"Lille i med makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"Lille i med breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"Lille i med højrekrog"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Lille i uden prik"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Sammenskrevet I og J"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Lille j med cirkumfleks"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"Lille k med cedille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Lille l med accent aigu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"Lille l med cedille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Lille l med hacek"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"Lille l med prik midt på linjen"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Lille l med gennemstregning"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Lille n med accent aigu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Lille n med cedille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Lille n med hacek"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"Lille n med apostrof foran"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"Lille o med makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"Lille o med breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"Lille o med dobbelt accent aigu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Sammenskrevet O og E"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Lille r med accent aigu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Lille r med cedille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Lille r med hacek"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Lille s med accent aigu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"Lille s med cirkumfleks"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"Lille s med cedille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Lille s med hacek"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Lille t med cedille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Lille t med hacek"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Lille t med gennemstregning"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"Lille u med tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"Lille u med makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"Lille u med breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"Lille u med bolle over"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"Lille u med dobbelt accent aigu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"Lille u med højrekrog"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Lille w med cirkumfleks"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Lille y med cirkumfleks"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Lille z med accent aigu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Lille z med prik over"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Lille z med hacek"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Langt s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"Lille o med krog"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"Lille u med krog"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"Lille s med venstrekrog"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Lille t med venstrekrog"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"Lille a med prik over"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"Lille a med pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"Lille a med cirkumfleks og accent aigu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"Lille a med cirkumfleks og accent grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"Lille a med cirkumfleks og pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"Lille a med cirkumfleks og tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"Lille a med cirkumfleks og prik under"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Lille a med breve og accent aigu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"Lille a med breve og accent grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"Lille a med breve og pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"Lille a med breve og tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"Lille a med breve og prik under"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Lille e med prik under"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Lille e med pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"Lille e med tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"Lille e med cirkumfleks og accent aigu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"Lille e med cirkumfleks og accent grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Lille e med cirkumfleks og pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Lille e med cirkumfleks og tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"Lille e med cirkumfleks og prik under"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"Lille i med pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"Lille i med prik under"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"Lille o med prik under"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"Lille o med pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"Lille o med cirkumfleks og accent aigu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"Lille o med cirkumfleks og accent grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"Lille o med cirkumfleks og pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"Lille o med cirkumfleks og tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"Lille o med cirkumfleks og prik under"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"Lille o med krog og accent aigu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"Lille o med krog og accent grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"Lille o med krog og pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"Lille o med krog og tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"Lille o med krog og prik under"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"Lille u med prik under"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"Lille u med pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"Lille u med krog og accent aigu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"Lille u med krog og accent grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"Lille u med krog og pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"Lille u med krog og tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"Lille u med krog og prik under"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Lille y med accent grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Lille y med prik under"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Lille y med pseudospørgsmålstegn over"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Lille y med tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Omvendt udråbstegn"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Dobbelt venstrevendt vinkelcitationstegn"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Prik midt på linjen"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Hævet ettal"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Dobbelt højrevendt vinkelcitationstegn"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Omvendt spørgsmålstegn"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Venstre enkelt citationstegn"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Højre enkelt citationstegn"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Enkelt citationstegn med 9-komma nederst"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Venstre dobbelt citationstegn"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Højre dobbelt citationstegn"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kors"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dobbelt kors"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promilletegn"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Primtegn"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dobbelt primtegn"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Enkelt venstrevendt vinkelcitationstegn"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Enkelt højrevendt vinkelcitationstegn"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Hævet firtal"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Hævet lille n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Pesotegn"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"C/o"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Højrepil"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pil ned"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tom mængde"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Inkrement"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mindre end eller lig med"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Større end eller lig med"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Sort stjerne"</string>
+</resources>
diff --git a/java/res/values-da/strings-talkback-descriptions.xml b/java/res/values-da/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..5f54004
--- /dev/null
+++ b/java/res/values-da/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Tilslut et headset for at få læst taster højt, når du indtaster en adgangskode."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Nuværende tekst er %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Der er ingen indtastet tekst"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> retter <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> til <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> udfører automatisk stavekontrol"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Ukendt tegn"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Flere symboler"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift-tast"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboler"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift-tast"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Slet"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboler"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Bogstaver"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Tal"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Indstillinger"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Fane"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Mellemrum"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Stemmeinput"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Søgning"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Prik"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Skift sprog"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Næste"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Forrige"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift er aktiveret"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock er aktiveret"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symboltilstand"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Tilstaden Flere symboler"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Bogstavtilstand"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefontilstand"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefonsymboltilstand"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastaturet er skjult"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Viser tastatur til <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"dato"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dato og klokkeslæt"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"beskeder"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"tal"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefonnummer"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"klokkeslæt"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"webadresse"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Seneste"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Personer"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objekter"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natur"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Steder"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboler"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Humørikoner"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Stort <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Stort I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Stort I med prik over"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ukendt symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ukendt emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternative tegn er tilgængelige"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternative tegn er deaktiveret"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternative forslag er tilgængelige"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternative forslag er deaktiveret"</string>
+</resources>
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index 86bdad4..b33cacc 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -21,21 +21,26 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Indstillinger for input"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Forskningslogkommandoer"</string>
-    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Slå kontaktnavne op"</string>
-    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Stavekontrollen bruger poster fra listen over kontaktpersoner"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Anvend kontaktnavne"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Stavekontrollen bruger ord fra dine kontaktpersondata"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibration ved tastetryk"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Lyd ved tastetryk"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop op ved tastetryk"</string>
-    <string name="general_category" msgid="1859088467017573195">"Generelt"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Tekstkorrigering"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Glidende indtastning"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Andre valgmuligheder"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Avancerede indstillinger"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Indstillinger for øvede"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skift inputmetode"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasten til sprogskift gælder også for andre inputmetoder"</string>
-    <string name="show_language_switch_key" msgid="5915478828318774384">"Tast til sprogskift"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"Knap til sprogskift"</string>
     <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Vis, når der er aktiveret flere inputsprog"</string>
     <string name="sliding_key_input_preview" msgid="6604262359510068370">"Vis indikator ved glidning"</string>
     <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Vis et visuelt tip, når du glider fra Shift eller symboltaster"</string>
@@ -46,17 +51,19 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Systemstandard"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Foreslå navne på kontakter"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Brug navne fra Kontaktpersoner til forslag og rettelser"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Tilpassede forslag"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Gør <xliff:g id="APPLICATION_NAME">%s</xliff:g> bedre"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"To mellemrum for punktum"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"To tryk på mellemrumstasten indsætter et punktum og et mellemrum"</string>
-    <string name="auto_cap" msgid="1719746674854628252">"Skriv aut. med stort"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Skriv automatisk med stort"</string>
     <string name="auto_cap_summary" msgid="7934452761022946874">"Skriv det første ord i hver sætning med stort"</string>
     <string name="edit_personal_dictionary" msgid="3996910038952940420">"Personlig ordbog"</string>
-    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Tillægsordbøger"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Ekstra ordbøger"</string>
     <string name="main_dictionary" msgid="4798763781818361168">"Hovedordbog"</string>
     <string name="prefs_show_suggestions" msgid="8026799663445531637">"Vis rettelsesforslag"</string>
     <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Vis ordforslag under indtastning"</string>
     <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Vis altid"</string>
-    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Vis i portræt"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Vis i oprejst format"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Skjul altid"</string>
     <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Bloker stødende ord"</string>
     <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Foreslå ikke potentielt stødende ord"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Vis glidende trykspor"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamiske ordeksempler"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Se ordforslag ved glidende indtastning"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Gemt"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Tilslut et headset for at høre indtastningen blive læst højt ved angivelse af adgangskode."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Nuværende tekst er %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Der er ingen indtastet tekst"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> retter <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> til <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> udfører automatisk rettelse"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Tastekode %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift-tast"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Skift er slået til (tryk for at deaktivere)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock er slået til (tryk for at deaktivere)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Slet"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboler"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Bogstaver"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Tal"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Indstillinger"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulatortast"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Mellemrum"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Stemmeinput"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Tilbage"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Søg"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punktum"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Skift sprog"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Næste"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Forrige"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Skift er aktiveret"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock er aktiveret"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Skift er deaktiveret"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symboltilstand"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Bogstavtilstand"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefontilstand"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefonsymboltilstand"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tastaturet er skjult"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Viser tastatur til <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"dato"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"Dato og klokkeslæt"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"beskeder"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"tal"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefonnummer"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"klokkeslæt"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"Webadresse"</string>
-    <string name="voice_input" msgid="3583258583521397548">"Nøgle til stemmeinput"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"På hovedtastatur"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"På symboltastatur"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Fra"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik. på hovedtastatur"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. på symboltastatur"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Stemmeinput deaktiveret"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Bevægelse for udtryk"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Tilføj mellemrum ved at glide til mellemrumstasten"</string>
+    <string name="voice_input" msgid="3583258583521397548">"Knap til taleinput"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Der er ingen aktiverede stemmeinputmetoder. Kontrollér Indstillinger for sprog og input."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inputmetoder"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Inputsprog"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Send feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Inputsprog"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Tryk igen for at gemme"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Ordbog er tilgængelig"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Aktivér brugerfeedback"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Vær med til at forbedre dette redigeringsværktøj til indtastningsmetode ved automatisk at sende anvendelsesstatistikker og rapporter om nedbrud til Google."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannien)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spansk (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engelsk (Storbritannien) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engelsk (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spansk (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditionelt)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelsk (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engelsk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spansk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditionelt)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillisk)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Intet sprog (Alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Farver"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Hvid"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blå"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Tilpasset inputtypografi"</string>
     <string name="add_style" msgid="6163126614514489951">"Tilføj typografi"</string>
     <string name="add" msgid="8299699805688017798">"Tilføj"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Aktivér"</string>
     <string name="not_now" msgid="6172462888202790482">"Ikke nu"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Denne inputstil findes allerede: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tilstand for brugsstudie"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Forsinket langt tastetryk"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrationstid ved tastetryk"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Lydstyrke ved tastetryk"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Læs ekstern ordbogsfil"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Der er ingen ordbogsfiler i mappen Downloads"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Vælg den ordbog, som du vil installere"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Er du klar til at installere denne fil til <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Vil du virkelig installere denne fil for <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Der opstod en fejl"</string>
     <string name="button_default" msgid="3988017840431881491">"Standard"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Velkommen til <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -193,7 +160,7 @@
     <string name="dictionary_provider_name" msgid="3027315045397363079">"Dictionary Provider"</string>
     <string name="dictionary_service_name" msgid="6237472350693511448">"Ordbogstjeneste"</string>
     <string name="download_description" msgid="6014835283119198591">"Opdateringsoplysninger for ordbøger"</string>
-    <string name="dictionary_settings_title" msgid="8091417676045693313">"Tillægsordbøger"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Ekstra ordbøger"</string>
     <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Ordbog er tilgængelig"</string>
     <string name="dictionary_settings_summary" msgid="5305694987799824349">"Indstillinger for ordbøger"</string>
     <string name="user_dictionaries" msgid="3582332055892252845">"Brugerordbøger"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Opdater"</string>
     <string name="last_update" msgid="730467549913588780">"Sidst opdateret"</string>
     <string name="message_updating" msgid="4457761393932375219">"Søger efter opdateringer"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Indlæser..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Indlæser…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Hovedordbog"</string>
     <string name="cancel" msgid="6830980399865683324">"Annuller"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Indstillinger"</string>
     <string name="install_dict" msgid="180852772562189365">"Installer"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Annuller"</string>
     <string name="delete_dict" msgid="756853268088330054">"Slet"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Det valgte sprog på din mobilenhed har en tilgængelig ordbog.&lt;br/&gt; Vi anbefaler, at du &lt;b&gt;downloader&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g>-ordbogen for at forbedre din skriveoplevelse.&lt;br/&gt; &lt;br/&gt; Downloaden kan tage 1-2 minutter via 3G. Der bliver muligvis opkrævet et gebyr, hvis du ikke har et &lt;b&gt;ubegrænset dataabonnement&lt;/b&gt;.&lt;br/&gt;. Hvis du ikke er sikker på, hvilket dataabonnement du har, anbefaler vi, at du finder en Wi-Fi-forbindelse for at starte automatisk download.&lt;br/&gt; &lt;br/&gt;Tip! Du kan downloade og fjerne ordbøger ved at gå til &lt;b&gt;Sprog og input &lt;/b&gt; i menuen &lt;b&gt;Indstillinger&lt;/b&gt; på din mobilenhed."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Det valgte sprog på din mobilenhed har en tilgængelig ordbog.&lt;br/&gt; Vi anbefaler, at du &lt;b&gt;downloader&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-ordbogen for at forbedre din skriveoplevelse.&lt;br/&gt; &lt;br/&gt; Downloaden kan tage 1-2 minutter via 3G. Der bliver muligvis opkrævet et gebyr, hvis du ikke har et &lt;b&gt;ubegrænset dataabonnement&lt;/b&gt;.&lt;br/&gt;. Hvis du ikke er sikker på, hvilket dataabonnement du har, anbefaler vi, at du finder en Wi-Fi-forbindelse for at starte automatisk download.&lt;br/&gt; &lt;br/&gt;Tip! Du kan downloade og fjerne ordbøger ved at gå til &lt;b&gt;Sprog og input &lt;/b&gt; i menuen &lt;b&gt;Indstillinger&lt;/b&gt; på din mobilenhed."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Download nu (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Download via Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Der er en tilgængelig ordbog for <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Der er en ordbog tilgængelig for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Tryk for at gennemgå og downloade"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloader: Der vil snart være forslag klar på <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Downloader: Der vil snart være forslag klar på <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Tilføj"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Føj til ordbog"</string>
diff --git a/java/res/values-de/strings-action-keys.xml b/java/res/values-de/strings-action-keys.xml
index 95d3d71..57e75df 100644
--- a/java/res/values-de/strings-action-keys.xml
+++ b/java/res/values-de/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Zurück"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Fertig"</string>
     <string name="label_send_key" msgid="482252074224462163">"Senden"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Suchen"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Warten"</string>
 </resources>
diff --git a/java/res/values-de/strings-config-important-notice.xml b/java/res/values-de/strings-config-important-notice.xml
new file mode 100644
index 0000000..a514364
--- /dev/null
+++ b/java/res/values-de/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Vorschläge anhand bisheriger Nachrichten und Eingaben verbessern"</string>
+</resources>
diff --git a/java/res/values-de/strings-letter-descriptions.xml b/java/res/values-de/strings-letter-descriptions.xml
new file mode 100644
index 0000000..78cf742
--- /dev/null
+++ b/java/res/values-de/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Ordnungszeichen weiblich"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikrozeichen"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Ordnungszeichen männlich"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Scharfes S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A mit Gravis"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A mit Akut"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A mit Tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A mit Trema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A mit Ring"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"AE-Ligatur"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C mit Cédille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E mit Gravis"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E mit Akut"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E mit Trema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I mit Gravis"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I mit Akut"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I mit Trema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N mit Tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O mit Gravis"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O mit Akut"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O mit Tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O mit Trema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O mit Strich"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U mit Gravis"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U mit Akut"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U mit Trema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y mit Akut"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y mit Trema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A mit Makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A mit Breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A mit Ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C mit Akut"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C mit übergesetztem Punkt"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C mit Hatschek"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D mit Hatschek"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D mit Querstrich"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E mit Makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E mit Breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E mit übergesetztem Punkt"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E mit Ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E mit Hatschek"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G mit Breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G mit übergesetztem Punkt"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G mit Cédille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H mit Querstrich"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I mit Tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I mit Makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I mit Breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I mit Ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Punktloses I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Ligatur IJ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K mit Cédille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L mit Akut"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L mit Cédille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L mit Hatschek"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L mit Mittelpunkt"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L mit Schrägstrich"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N mit Akut"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N mit Cédille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N mit Hatschek"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N mit vorangehendem Apostroph"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O mit Makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O mit Breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O mit Doppelakut"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Ligatur OE"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R mit Akut"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R mit Cédille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R mit Hatschek"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S mit Akut"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S mit Cédille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S mit Hatschek"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T mit Cédille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T mit Hatschek"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T mit Querstrich"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U mit Tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U mit Makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U mit Breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U mit übergesetztem Ring"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U mit Doppelakut"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U mit Ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y mit Zirkumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z mit Akut"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z mit übergesetztem Punkt"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z mit Hatschek"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Langes S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O mit Horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U mit Horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S mit Komma"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T mit Komma"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A mit Punkt unten"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A mit Haken oben"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A mit Zirkumflex und Akut"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A mit Zirkumflex und Gravis"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A mit Zirkumflex und Haken oben"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A mit Zirkumflex und Tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A mit Zirkumflex und Punkt unten"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A mit Breve und Akut"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A mit Breve und Gravis"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A mit Breve und Haken oben"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A mit Breve und Tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A mit Breve und Punkt unten"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E mit Punkt unten"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E mit Haken oben"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E mit Tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E mit Zirkumflex und Akut"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E mit Zirkumflex und Gravis"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E mit Zirkumflex und Haken oben"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E mit Zirkumflex und Tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E mit Zirkumflex und Punkt unten"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I mit Haken oben"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I mit Punkt unten"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O mit Punkt unten"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O mit Haken oben"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O mit Zirkumflex und Akut"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O mit Zirkumflex und Gravis"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O mit Zirkumflex und Haken oben"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O mit Zirkumflex und Tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O mit Zirkumflex und Punkt unten"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O mit Horn und Akut"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O mit Horn und Gravis"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O mit Horn und Haken oben"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O mit Horn und Tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O mit Horn und Punkt unten"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U mit Punkt unten"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U mit Haken oben"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U mit Horn und Akut"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U mit Horn und Gravis"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U mit Horn und Haken oben"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U mit Horn und Tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U mit Horn und Punkt unten"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y mit Gravis"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y mit Punkt unten"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y mit Haken oben"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y mit Tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Umgekehrtes Ausrufezeichen"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Nach links zeigendes doppeltes spitzes Anführungszeichen"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Mittelpunkt"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Hochgestellte Eins"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Nach rechts zeigendes doppeltes spitzes Anführungszeichen"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Umgekehrtes Fragezeichen"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Einfaches linkes Anführungszeichen"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Einfaches rechtes Anführungszeichen"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Einfaches Anführungszeichen unten"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Doppeltes linkes Anführungszeichen"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Doppeltes rechtes Anführungszeichen"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kreuz"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Zweibalkenkreuz"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promillezeichen"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Minutenzeichen"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Sekundenzeichen"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Einfaches nach links zeigendes spitzes Anführungszeichen"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Einfaches nach rechts zeigendes spitzes Anführungszeichen"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Hochgestellte Vier"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Hochgestellter Kleinbuchstabe n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso-Zeichen"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Per Adresse"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Pfeil nach rechts"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pfeil nach unten"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Leere Menge"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Differenzzeichen"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kleiner/gleich"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Größer/gleich"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Schwarzer fünfzackiger Stern"</string>
+</resources>
diff --git a/java/res/values-de/strings-talkback-descriptions.xml b/java/res/values-de/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..27e9ecc
--- /dev/null
+++ b/java/res/values-de/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Schließen Sie ein Headset an, um das Passwort gesprochen zu hören."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Aktueller Text lautet %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Kein Text eingegeben"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> wird \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" in \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\" geändert."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Mit <xliff:g id="KEY_NAME">%1$s</xliff:g> erfolgt eine Autokorrektur."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Unbekanntes Zeichen"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Umschalttaste"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Weitere Symbole"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift-Taste"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbole"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift-Taste"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Löschen"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbole"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Buchstaben"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Zahlen"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Einstellungen"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulatortaste"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Leertaste"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Spracheingabe"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Eingabetaste"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Suchen"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Aufzählungspunkt"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Sprache wechseln"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Weiter"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Zurück"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Umschalttaste aktiviert"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Feststelltaste aktiviert"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolmodus"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modus \"Weitere Symbole\""</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Buchstabenmodus"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonmodus"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefon-Symbolmodus"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastatur ausgeblendet"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Tastatur für <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"Datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"Datum und Uhrzeit"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"E-Mail-Adresse"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"SMS/MMS"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"Zahl"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"Telefonnummer"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"Text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"Zeit"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Neueste"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Kontakte"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objekte"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natur"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Orte"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbole"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Großbuchstabe <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Großbuchstabe I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Großbuchstabe I mit übergesetztem Punkt"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Unbekanntes Symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Unbekanntes Emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Es sind Alternativzeichen verfügbar."</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativzeichen werden ausgeblendet."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Es sind Alternativvorschläge verfügbar."</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativvorschläge werden ausgeblendet."</string>
+</resources>
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index b650534..ece1a20 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -21,24 +21,29 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Eingabeoptionen"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Forschungsprotokollbefehle"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontaktnamen prüfen"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Rechtschreibprüfung kann Einträge aus meiner Kontaktliste verwenden"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Bei Tastendruck vibrieren"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Ton bei Tastendruck"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up bei Tastendruck"</string>
-    <string name="general_category" msgid="1859088467017573195">"Allgemein"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Textkorrektur"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Bewegungseingabe"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Sonstige Optionen"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Erweiterte Einstellungen"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Optionen für Experten"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Eingabemethoden wechseln"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Sprachwechseltaste umfasst auch andere Eingabemethoden."</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Sprachwechsel"</string>
     <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Anzeigen, wenn mehrere Eingabesprachen aktiviert sind"</string>
     <string name="sliding_key_input_preview" msgid="6604262359510068370">"Ziehbewegung anzeigen"</string>
-    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Ziehen mit gedrückter Shift- oder Symboltaste visuell darstellen"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Ziehen mit gedrückter Symboltaste oder Shift visuell darstellen"</string>
     <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Tasten-Pop-up"</string>
     <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Keine Verzögerung"</string>
     <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Standard"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Systemstandardeinstellung"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Kontakte vorschlagen"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Namen aus \"Kontakte\" als Vorschläge und Korrekturmöglichkeiten anzeigen"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalisierte Vorschläge"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> verbessern"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Punkt plus Leerzeichen"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Für Punkt plus Leerzeichen zweimal auf die Leertaste tippen﻿﻿"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Autom. Groß-/Kleinschreibung"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Spur der Bewegung anzeigen"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dyn. unverankerter Vorschlag"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Vorgeschlagenes Wort bei Bewegung anzeigen"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: gespeichert"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Schließen Sie ein Headset an, um das Passwort gesprochen zu hören."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Aktueller Text lautet %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Kein Text eingegeben"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Mit <xliff:g id="KEY">%1$s</xliff:g> wird <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> zu <xliff:g id="CORRECTED">%3$s</xliff:g> korrigiert."</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Mit <xliff:g id="KEY">%1$s</xliff:g> erfolgt eine Autokorrektur."</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Tastencode %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Umschalttaste"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Umschalttaste aktiviert (zum Deaktivieren berühren)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Feststelltaste aktiviert (zum Deaktivieren berühren)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Entf"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symbole"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Buchstaben"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Zahlen"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Einstellungen"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulator"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Leerzeichen"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Spracheingabe"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Eingabe"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Suchen"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Aufzählungspunkt"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Sprache wechseln"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Nächste"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Vorherige"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Umschalttaste aktiviert"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Feststelltaste aktiviert"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Umschalttaste deaktiviert"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbolmodus"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Buchstabenmodus"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonmodus"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefon-Symbolmodus"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tastatur ausgeblendet"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Tastatur für <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"Datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"Datum &amp; Uhrzeit"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"E-Mail-Adresse"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"SMS/MMS"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"Zahl"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"Telefonnummer"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"Text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"Zeit"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Phrasenbewegung"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Leerzeichen durch Bewegung über die Leertaste einfügen"</string>
     <string name="voice_input" msgid="3583258583521397548">"Taste für Spracheingabe"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Auf Haupttastatur"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Auf Symboltastatur"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Aus"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikro auf Haupttastatur"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikro auf Symboltastatur"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spracheingabe deaktiviert"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Keine Spracheingabemethoden aktiviert. Rufen Sie die Einstellungen für \"Sprache &amp; Eingabe\" auf."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Eingabemethoden konfigurieren"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Eingabesprachen"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Feedback geben"</string>
     <string name="select_language" msgid="3693815588777926848">"Eingabesprachen"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Zum Speichern erneut berühren"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Wörterbuch verfügbar"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Nutzer-Feedback aktivieren"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Tragen Sie zur Verbesserung dieses Eingabemethodeneditors bei, indem Sie automatisch Nutzungsstatistiken und Absturzberichte senden."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturdesign"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Englisch (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Englisch (USA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spanisch (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Englisch (GB) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Englisch (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spanisch (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditionell)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Englisch (GB) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Englisch (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spanisch (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditionell)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillisch)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (lateinisch)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Keine Sprache (lat. Alphabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Lat. Alphabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Lat. Alphabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Lat. Alphabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Lat. Alphabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Farbschema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Weiß"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blau"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Benutzerdefinierte Eingabestile"</string>
     <string name="add_style" msgid="6163126614514489951">"Stil hinzufügen"</string>
     <string name="add" msgid="8299699805688017798">"Hinzufügen"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Aktivieren"</string>
     <string name="not_now" msgid="6172462888202790482">"Später"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Der gleiche Eingabestil ist bereits vorhanden: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Studie zur Benutzerfreundlichkeit"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Verzögerung für langes Drücken"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrationsdauer bei Tastendruck"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Tonlautstärke bei Tastendruck"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Externe Wörterbuchdatei lesen"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Keine Wörterbuchdateien im Ordner \"Downloads\""</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Wörterbuchdatei zum Installieren auswählen"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Möchten Sie diese Datei für <xliff:g id="LOCALE_NAME">%s</xliff:g> installieren?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Möchten Sie diese Datei für <xliff:g id="LANGUAGE_NAME">%s</xliff:g> installieren?"</string>
     <string name="error" msgid="8940763624668513648">"Es ist ein Fehler aufgetreten"</string>
     <string name="button_default" msgid="3988017840431881491">"Standard"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Willkommen bei <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Aktualisieren"</string>
     <string name="last_update" msgid="730467549913588780">"Zuletzt aktualisiert"</string>
     <string name="message_updating" msgid="4457761393932375219">"Suche nach Updates..."</string>
-    <string name="message_loading" msgid="8689096636874758814">"Wird geladen..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Wird geladen…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Allgemeines Wörterbuch"</string>
     <string name="cancel" msgid="6830980399865683324">"Abbrechen"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Einstellungen"</string>
     <string name="install_dict" msgid="180852772562189365">"Installieren"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Abbrechen"</string>
     <string name="delete_dict" msgid="756853268088330054">"Löschen"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Für die auf dem Mobilgerät ausgewählte Sprache ist ein Wörterbuch verfügbar.&lt;br/&gt; &lt;b&gt;Laden Sie das <xliff:g id="LANGUAGE">%1$s</xliff:g>-Wörterbuch herunter&lt;/b&gt; und verbessern Sie Ihre Eingabeerfahrung.&lt;br/&gt; &lt;br/&gt;Der Download über 3G kann ein bis zwei Minuten dauern. Falls Sie keine &lt;b&gt;Datenflatrate&lt;/b&gt; haben, fallen eventuell Gebühren an.&lt;br/&gt; Sollten Sie sich nicht sicher sein, welchen Datentarif Sie haben, suchen Sie eine WLAN-Verbindung, um den Download automatisch zu starten.&lt;br/&gt; &lt;br/&gt;Tipp: Im Menü &lt;b&gt;Einstellungen&lt;/b&gt; Ihres Mobilgeräts können Sie unter &lt;b&gt;Sprache &amp; Eingabe&lt;/b&gt; Wörterbücher herunterladen und entfernen."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Für die auf dem Mobilgerät ausgewählte Sprache ist ein Wörterbuch verfügbar.&lt;br/&gt; &lt;b&gt;Laden Sie das <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-Wörterbuch herunter&lt;/b&gt; und verbessern Sie Ihre Eingabeerfahrung.&lt;br/&gt; &lt;br/&gt; Der Download über 3G kann ein bis zwei Minuten dauern. Falls Sie keine &lt;b&gt;Datenflatrate&lt;/b&gt; haben, fallen eventuell Gebühren an.&lt;br/&gt; Sollten Sie sich nicht sicher sein, welchen Datentarif Sie haben, suchen Sie eine WLAN-Verbindung, um den Download automatisch zu starten.&lt;br/&gt; &lt;br/&gt; Tipp: Im Menü &lt;b&gt;Einstellungen&lt;/b&gt; Ihres Mobilgeräts können Sie unter &lt;b&gt;Sprache &amp; Eingabe&lt;/b&gt; Wörterbücher herunterladen und entfernen."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Jetzt herunterladen (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Über WLAN herunterladen"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Es ist ein Wörterbuch für <xliff:g id="LANGUAGE">%1$s</xliff:g> verfügbar."</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Es ist ein Wörterbuch für <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> verfügbar."</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Zum Lesen und Herunterladen drücken"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Download wurde gestartet: Vorschläge für <xliff:g id="LANGUAGE">%1$s</xliff:g> sind in Kürze bereit."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Download wurde gestartet: Vorschläge für <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sind in Kürze bereit."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Hinzufügen"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Zum Wörterbuch hinzufügen"</string>
diff --git a/java/res/values-el/strings-action-keys.xml b/java/res/values-el/strings-action-keys.xml
index a4093e3..2fd0fdb 100644
--- a/java/res/values-el/strings-action-keys.xml
+++ b/java/res/values-el/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Προηγούμενο"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Τέλος"</string>
     <string name="label_send_key" msgid="482252074224462163">"Αποστολή"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Αναζήτηση"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Παύση"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Αναμονή"</string>
 </resources>
diff --git a/java/res/values-el/strings-config-important-notice.xml b/java/res/values-el/strings-config-important-notice.xml
new file mode 100644
index 0000000..926ec9b
--- /dev/null
+++ b/java/res/values-el/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Χρήση επικοινωνιών/δεδομένων πληκτρολόγησης για βελτίωση προτάσεων"</string>
+</resources>
diff --git a/java/res/values-el/strings-letter-descriptions.xml b/java/res/values-el/strings-letter-descriptions.xml
new file mode 100644
index 0000000..10988d4
--- /dev/null
+++ b/java/res/values-el/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Θετικός τακτικός δείκτης"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Σύμβολο Micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Αρνητικός τακτικός δείκτης"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Οξύ S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, με βαρεία"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, με οξεία"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, με περισπωμένη"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, με διαλυτικά"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, με κύκλο από πάνω"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, δίψηφο"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, με βαρεία"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, με οξεία"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, με διαλυτικά"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, με βαρεία"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, με οξεία"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, με διαλυτικά"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, με περισπωμένη"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, με βαρεία"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, με οξεία"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, με περισπωμένη"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, με διαλυτικά"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, καλλιγραφικό"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, με βαρεία"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, με οξεία"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, με διαλυτικά"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, με οξεία"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, με διαλυτικά"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, με σημείο μακρού"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, με σημείο βραχέος"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, με ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, με οξεία"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, με κουκκίδα από πάνω"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, με caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, με caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, καλλιγραφικό"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, με σημείο μακρού"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, με σημείο βραχέος"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, με κουκκίδα από πάνω"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, με ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, με caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, με σημείο βραχέος"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, με κουκκίδα από πάνω"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, καλλιγραφικό"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, με περισπωμένη"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, με σημείο μακρού"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, με σημείο βραχέος"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, με ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I χωρίς κουκκίδα"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, δίψηφο"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, με οξεία"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, με caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, με άνω τελεία"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, καλλιγραφικό"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, με οξεία"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, με caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, με απόστροφο μπροστά"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, με σημείο μακρού"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, με σημείο βραχέος"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, με διπλή οξεία"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, δίψηφο"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, με οξεία"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, με caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, με οξεία"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, με caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, με υποδιαστολή"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, με caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, καλλιγραφικό"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, με περισπωμένη"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, με σημείο μακρού"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, με σημείο βραχέος"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, με κύκλο από πάνω"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, με διπλή οξεία"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, με ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, με σιρκουμφλέξ"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, με οξεία"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, με κουκκίδα από πάνω"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, με caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Μακρό S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, με καπελάκι"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, με καπελάκι"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, με κόμμα από κάτω"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, με κόμμα από κάτω"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, με κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, με κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, με σιρκουμφλέξ και οξεία"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, με σιρκουμφλέξ και βαρεία"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, με σιρκουμφλέξ και κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, με σιρκουμφλέξ και περισπωμένη"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, με σιρκουμφλέξ και κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, με σημείο βραχέος και οξεία"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, με σημείο βραχέος και βαρεία"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, με σημείο βραχέος και κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, με σημείο βραχέος και περισπωμένη"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, με σημείο βραχέος και κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, με κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, με κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, με περισπωμένη"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, με σιρκουμφλέξ και οξεία"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, με σιρκουμφλέξ και βαρεία"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, με σιρκουμφλέξ και κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, με σιρκουμφλέξ και περισπωμένη"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, με σιρκουμφλέξ και κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, με κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, με κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, με κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, με κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, με σιρκουμφλέξ και οξεία"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, με σιρκουμφλέξ και βαρεία"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, με σιρκουμφλέξ και κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, με σιρκουμφλέξ και περισπωμένη"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, με σιρκουμφλέξ και κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, με καπελάκι και οξεία"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, με καπελάκι και βαρεία"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, με καπελάκι και κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, με καπελάκι και περισπωμένη"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, με καπελάκι και κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, με κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, με κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, με καπελάκι και οξεία"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, με καπελάκι και βαρεία"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, με καπελάκι και κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, με καπελάκι και περισπωμένη"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, με καπελάκι και κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, με βαρεία"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, με κουκκίδα από κάτω"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, με κλείσιμο από πάνω"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, με οξεία"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Αντίστροφο θαυμαστικό"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Αριστερά διπλά εισαγωγικά"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Άνω τελεία"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Εκθέτης \"ένα\""</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Δεξιά διπλά εισαγωγικά"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Αντίστροφο ερωτηματικό"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Αριστερά μονά εισαγωγικά"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Δεξιά μονά εισαγωγικά"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Μονά εισαγωγικά σχήματος 9"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Αριστερά διπλά εισαγωγικά"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Δεξιά διπλά εισαγωγικά"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Σταυρός στίξης"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Διπλός σταυρός στίξης"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Σύμβολο \"επί χίλια\""</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Τόνος"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Διπλός τόνος"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Μονά εισαγωγικά προς τα αριστερά"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Μονά εισαγωγικά προς τα δεξιά"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Εκθέτης τέσσερα"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Εκθέτης \"λατινικό πεζό γράμμα N\""</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Σύμβολο νομίσματος \"πέσο\""</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Υπεύθυνος"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Βέλος προς τα δεξιά"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Βέλος προς τα κάτω"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Κενό σύνολο"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Τελεστής προσαύξησης"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Μικρότερο ή ίσο"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Μεγαλύτερο ή ίσο"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Μαύρο αστέρι"</string>
+</resources>
diff --git a/java/res/values-el/strings-talkback-descriptions.xml b/java/res/values-el/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..10df02f
--- /dev/null
+++ b/java/res/values-el/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Συνδέστε ένα σετ ακουστικών για να ακούσετε τα πλήκτρα του κωδικού πρόσβασης να εκφωνούνται δυνατά."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Το τρέχον κείμενο είναι %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Δεν υπάρχει κείμενο"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> διορθώνει το <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> σε <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> εκτελεί αυτόματη διόρθωση"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Άγνωστος χαρακτήρας"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Περισσότερα σύμβολα"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Σύμβολα"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Διαγραφή"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Σύμβολα"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Γράμματα"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Αριθμοί"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Ρυθμίσεις"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Πλήκτρο διαστήματος"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Φωνητική είσοδος"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoticon"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Επιστροφή"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Αναζήτηση"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Κουκκίδα"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Εναλλαγή γλώσσας"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Επόμενο"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Προηγούμενο"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Το Shift είναι ενεργοποιημένο"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Το Caps lock είναι ενεργοποιημένο"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Λειτουργία συμβόλων"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Λειτουργία περισσότερων συμβόλων"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Λειτουργία γραμμάτων"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Λειτουργία τηλεφώνου"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Λειτουργία συμβόλων τηλεφώνου"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Απόκρυψη πληκτρολογίου"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Εμφάνιση πληκτρολογίου <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ημερομηνία"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ημερομηνία και ώρα"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"διεύθυνση ηλεκτρονικού ταχυδρομείου"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ανταλλαγή μηνυμάτων"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"αριθμός"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"τηλέφωνο"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"κείμενο"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ώρα"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"διεύθυνση URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Πρόσφατα"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Άτομα"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Αντικείμενα"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Φύση"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Μέρη"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Σύμβολα"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticon"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Κεφαλαίο <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Κεφαλαίο I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Κεφαλαίο I, κουκκίδα από πάνω"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Άγνωστο σύμβολο"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Άγνωστο emoticon"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Διατίθενται εναλλακτικοί χαρακτήρες"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Παράβλεψη εναλλακτικών χαρακτήρων"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Διατίθενται εναλλακτικές προτάσεις"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Παράβλεψη εναλλακτικών προτάσεων"</string>
+</resources>
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 79e8342..5cf14b5 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Επιλογές εισόδου"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Έρευνα εντολών καταγραφής"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Αναζήτηση ονομάτων επαφών"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Ο ορθογρ. έλεγχος χρησιμοπ. καταχωρίσεις από τη λίστα επαφών σας"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Δόνηση κατά το πάτημα πλήκτρων"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Ήχος κατά το πάτημα πλήκτρων"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Εμφάνιση με το πάτημα πλήκτρου"</string>
-    <string name="general_category" msgid="1859088467017573195">"Γενικά"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Διόρθωση κειμένου"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Πληκτρολόγηση με κινήσεις"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Άλλες επιλογές"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Σύνθετες ρυθμίσεις"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Επιλογές για έμπειρους χρήστες"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Άλλη μέθοδος εισόδου"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Το κλειδί αλλαγής γλώσσας καλύπτει και άλλες μεθόδους εισόδου"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Πλήκτρο εναλλαγής γλώσσας"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Προεπιλογή"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Πρόταση ονομάτων επαφών"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Χρησιμοποιήστε ονόματα από τις Επαφές για προτάσεις και διορθ."</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Εξατομικευμένες προτάσεις"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Βελτίωση <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Τελεία με διπλό πάτημα πλήκτρ.διαστ."</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Το διπλό πάτημα του πλήκτρ.διαστ. εισάγει μια τελεία και ένα κενό"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Αυτόματη χρήση κεφαλαίων"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Εμφάνιση διαδρομής χειρονομίας"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Προεπισκόπ. δυναμικής κίνησης"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Εμφάνιση της προτεινόμενης λέξης κατά την κίνηση"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Αποθηκεύτηκε"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Συνδέστε ένα σετ ακουστικών για να ακούσετε τα πλήκτρα του κωδικού πρόσβασης να εκφωνούνται δυνατά."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Το τρέχον κείμενο είναι %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Δεν υπάρχει κείμενο"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> διορθώνει το <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> σε <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> εκτελεί αυτόματη διόρθωση"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Κωδικός πλήκτρου %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Το Shift είναι ενεργοποιημένο (πατήστε για απενεργοποίηση)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Το Caps lock είναι ενεργοποιημένο (πατήστε για απενεργοποίηση)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Πλήκτρο Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Σύμβολα"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Γράμματα:"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Αριθμοί"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Ρυθμίσεις"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Πλήκτρο Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Πλήκτρο διαστήματος"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Μικρόφωνο"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Πλήκτρο Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Αναζήτηση"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Κουκκίδα"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Αλλαγή γλώσσας"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Επόμενο"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Προηγούμενο"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Το Shift ενεργοποιημένο"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Το Caps lock είναι ενεργοποιημένο"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Το Shift είναι απενεργοποιημένο"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Λειτουργία συμβόλων"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Λειτουργία γραμμάτων"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Λειτουργία τηλεφώνου"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Λειτουργία συμβόλων τηλεφώνου"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Πληκτρολόγιο είναι κρυμμένο"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Εμφάνιση πληκτρολογίου <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"ημερομηνία"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"ημερομηνία και ώρα"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"διεύθυνση ηλεκτρονικού ταχυδρομείου"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"ανταλλαγή μηνυμάτων"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"αριθμός"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"τηλέφωνο"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"κείμενο"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ώρα"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"διεύθυνση URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Εισαγωγή φράσεων με κίνηση"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Εισαγάγετε κενά στις κινήσεις με ολίσθηση στο πλήκτρο διαστήματος"</string>
     <string name="voice_input" msgid="3583258583521397548">"Κλειδί φωνητικής εξόδου"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Στο κύριο πληκτρολ."</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Πληκτρ. συμβ. ενερ."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Απενεργοποίηση"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Μικ. στο κύριο πληκ."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Μικ. στο πληκ. συμβ."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Απεν. φωνητ. είσοδος"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Δεν έχουν ενεργοποιηθεί μέθοδοι φωνητικής εισαγωγής. Ελέγξτε τις Ρυθμίσεις Γλώσσας και εισαγωγής."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Διαμόρφωση μεθόδων εισαγωγής"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Γλώσσες εισόδου"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Αποστολή σχολίων"</string>
     <string name="select_language" msgid="3693815588777926848">"Γλώσσες εισόδου"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Αγγίξτε ξανά για αποθήκευση"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Λεξικό διαθέσιμο"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Ενεργοποίηση σχολίων χρηστών"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Βοηθήστε μας να βελτιώσουμε αυτό το πρόγραμμα επεξεργασίας μεθόδου εισόδου, στέλνοντας αυτόματα στατιστικά στοιχεία και αναφορές σφαλμάτων."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Θέμα πληκτρολογίου"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Αγγλικά (Η.Β.)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Αγγλικά (Η.Π.Α)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Ισπανικά (ΗΠΑ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Αγγλικά (ΗΒ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Αγγλικά (ΗΠΑ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Ισπανικά (ΗΠΑ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Παραδοσιακά)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Αγγλικά (Ηνωμένο Βασίλειο) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Αγγλικά (ΗΠΑ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Ισπανικά (ΗΠΑ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Παραδοσιακά)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Κυριλλικά)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Λατινικά)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Καμία γλώσσα (Αλφάβητο)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Αλφάβητο (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Αλφάβητο (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Αλφάβητο (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Αλφάβητο (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoticon"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Συνδυασμός χρωμάτων"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Λευκές"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Μπλε"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Προσαρμοσ. στυλ εισαγ."</string>
     <string name="add_style" msgid="6163126614514489951">"Προσθ. στυλ"</string>
     <string name="add" msgid="8299699805688017798">"Προσθήκη"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Ενεργοποίηση"</string>
     <string name="not_now" msgid="6172462888202790482">"Όχι τώρα"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Το ίδιο στυλ εισόδου υπάρχει ήδη: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Λειτουργία μελέτης χρηστικότητας"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Καθυστέρηση παρατεταμένου πατήματος πλήκτρου"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Διάρκεια δόνησης πατήμ. πλήκτ."</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Ένταση ήχου πατήματος πλήκτρου"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Ανάγνωση εξωτερικού αρχείου λεξικού"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Δεν υπάρχουν αρχεία λεξικού στο φάκελο \"Λήψεις\""</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Επιλογή αρχείου λεξικού για εγκατάσταση"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Να εγκατασταθεί όντως αυτό το αρχείο για <xliff:g id="LOCALE_NAME">%s</xliff:g>;"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Εγκατάσταση αυτού του αρχείου για τα <xliff:g id="LANGUAGE_NAME">%s</xliff:g>;"</string>
     <string name="error" msgid="8940763624668513648">"Παρουσιάστηκε σφάλμα."</string>
     <string name="button_default" msgid="3988017840431881491">"Προεπιλογή"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Καλώς ορίσατε στο <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Ανανέωση"</string>
     <string name="last_update" msgid="730467549913588780">"Τελευταία ενημέρωση"</string>
     <string name="message_updating" msgid="4457761393932375219">"Έλεγχος για ενημερώσεις"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Φόρτωση…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Φόρτωση…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Κύριο λεξικό"</string>
     <string name="cancel" msgid="6830980399865683324">"Ακύρωση"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Ρυθμίσεις"</string>
     <string name="install_dict" msgid="180852772562189365">"Εγκατάσταση"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Ακύρωση"</string>
     <string name="delete_dict" msgid="756853268088330054">"Διαγραφή"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Η επιλ. γλώσσα στην κιν. συσκευή σας διαθέτει λεξικό.&lt;br/&gt; Προτείνουμε να &lt;b&gt;κάνετε λήψη&lt;/b&gt; του λεξικού <xliff:g id="LANGUAGE">%1$s</xliff:g> για να βελτ. την πληκτρολόγηση.&lt;br/&gt; &lt;br/&gt; Για τη λήψη μπορεί να χρειαστούν 1 ή 2 λεπτά μέσω 3G. Ίσως ισχύουν χρεώσεις αν δεν έχετε &lt;b&gt;πρόγρ. απερ. δεδομ.&lt;/b&gt;.&lt;br/&gt; Αν δεν γνωρίζετε ποιο πρόγ. δεδ. έχετε, προτείνουμε να βρείτε μια σύνδ. Wi-Fi για να ξεκιν. αυτόμ. η λήψη.&lt;br/&gt; &lt;br/&gt; Συμβουλή: Μπορείτε να λάβετε και να καταργ. λεξικά, από την περιοχή &lt;b&gt;Γλώσσα και εισαγωγή&lt;/b&gt;, στο μενού &lt;b&gt;Ρυθμίσεις&lt;/b&gt; της κιν. συσκ."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Η επιλεγμένη γλώσσα στην κινητή συσκευή σας διαθέτει λεξικό.&lt;br/&gt; Προτείνουμε να &lt;b&gt;κατεβάσετε&lt;/b&gt; το λεξικό <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> για βελτίωση της πληκτρολόγησης.&lt;br/&gt; &lt;br/&gt; Για τη λήψη μπορεί να χρειαστούν 1 ή 2 λεπτά μέσω 3G. Ενδέχεται να ισχύουν χρεώσεις αν δεν έχετε διαθέτετε&lt;b&gt;πρόγραμμα απεριόριστων δεδομένων&lt;/b&gt;.&lt;br/&gt; Αν δεν γνωρίζετε ποιο πρόγραμμα δεδομένων διαθέτετε, προτείνουμε να χρησιμοποιήσετε μια σύνδεση Wi-Fi για να ξεκινήσει αυτόματα η λήψη.&lt;br/&gt; &lt;br/&gt; Συμβουλή: Μπορείτε να κατεβάσετε και να καταργήσετε λεξικά, από την περιοχή &lt;b&gt;Γλώσσα και εισαγωγή&lt;/b&gt;, στο μενού &lt;b&gt;Ρυθμίσεις&lt;/b&gt; της κινητής συσκευής σας."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Άμεση λήψη (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Λήψη μέσω Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Υπάρχει διαθέσιμο λεξικό για τα <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Υπάρχει διαθέσιμο λεξικό για τα <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Πατήστε για έλεγχο και λήψη"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Λήψη: Οι προτάσεις για τα <xliff:g id="LANGUAGE">%1$s</xliff:g> θα είναι έτοιμες σύντομα."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Λήψη: οι προτάσεις για τα <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> θα είναι έτοιμες σύντομα."</string>
     <string name="version_text" msgid="2715354215568469385">"Έκδοση <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Προσθήκη"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Προσθήκη στο λεξικό"</string>
diff --git a/java/res/values-en-rGB/strings-action-keys.xml b/java/res/values-en-rGB/strings-action-keys.xml
index 366cf3c..6514e85 100644
--- a/java/res/values-en-rGB/strings-action-keys.xml
+++ b/java/res/values-en-rGB/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Prev"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Finished"</string>
     <string name="label_send_key" msgid="482252074224462163">"Send"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Search"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Wait"</string>
 </resources>
diff --git a/java/res/values-en-rGB/strings-config-important-notice.xml b/java/res/values-en-rGB/strings-config-important-notice.xml
new file mode 100644
index 0000000..80ddd3e
--- /dev/null
+++ b/java/res/values-en-rGB/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Learn from your communications and typed data to improve suggestions"</string>
+</resources>
diff --git a/java/res/values-en-rGB/strings-emoji-descriptions.xml b/java/res/values-en-rGB/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..2ac73fc
--- /dev/null
+++ b/java/res/values-en-rGB/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Copyright sign"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Registered sign"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Double exclamation mark"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Exclamation question mark"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Trade mark sign"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Information source"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Left right arrow"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Up down arrow"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"North west arrow"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"North east arrow"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"South east arrow"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"South west arrow"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Leftwards arrow with hook"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Rightwards arrow with hook"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Watch"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Hourglass"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Black right-pointing double triangle"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Black left-pointing double triangle"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Black up-pointing double triangle"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Black down-pointing double triangle"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Alarm clock"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Hourglass with flowing sand"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Circled latin capital letter m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Black small square"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"White small square"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Black right-pointing triangle"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Black left-pointing triangle"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"White medium square"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Black medium square"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"White medium small square"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Black medium small square"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Black sun with rays"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Cloud"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Black telephone"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Ballot box with tick"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Umbrella with rain drops"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Hot beverage"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"White up pointing index"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"White smiling face"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Aries"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Taurus"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Gemini"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Cancer"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leo"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Virgo"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Libra"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Scorpio"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Sagittarius"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Capricorn"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Aquarius"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Pisces"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Black spade suit"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Black club suit"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Black heart suit"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Black diamond suit"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Hot springs"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Black universal recycling symbol"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Wheelchair symbol"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Anchor"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Warning sign"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"High voltage sign"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Medium white circle"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Medium black circle"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Football"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Baseball"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Snowman without snow"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Sun behind cloud"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Ophiuchus"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"No entry"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Church"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fountain"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Flag in hole"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Sailing boat"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Tent"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Fuel pump"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Black scissors"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"White heavy tick"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Aeroplane"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Envelope"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Raised fist"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Raised hand"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Victory hand"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Pencil"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Black nib"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Heavy tick"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Heavy multiplication x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Sparkles"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Eight spoked asterisk"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Eight pointed black star"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Snowflake"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Sparkle"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Cross mark"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Negative squared cross mark"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Black question mark ornament"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"White question mark ornament"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"White exclamation mark ornament"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Heavy exclamation mark symbol"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Heavy black heart"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Heavy plus sign"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Heavy minus sign"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Heavy division sign"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Black rightwards arrow"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Curly loop"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Double curly loop"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Arrow pointing rightwards then curving upwards"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Arrow pointing rightwards then curving downwards"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Leftwards black arrow"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Upwards black arrow"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Downwards black arrow"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Black large square"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"White large square"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"White medium star"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Heavy large circle"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Wavy dash"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Part alternation mark"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Circled ideograph congratulation"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Circled ideograph secret"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahjong tile red dragon"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Playing card black joker"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Blood type A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Blood type B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Blood type O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Car park"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Blood type AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"Squared CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Squared cool"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Squared free"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Squared ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Squared new"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Squared N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Squared OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Squared SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Squared up with exclamation mark"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Squared vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Squared katakana here"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Squared katakana service"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Squared ideograph charge-free"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Squared ideograph reserved-seat"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Squared ideograph prohibitation"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Squared ideograph vacancy"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Squared ideograph acceptance"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Squared ideograph full occupancy"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Squared ideograph paid"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Squared ideograph monthly"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Squared ideograph application"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Squared ideograph discount"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Squared ideograph in business"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Circled ideograph advantage"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Circled ideograph accept"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Cyclone"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Foggy"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Closed umbrella"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Night with stars"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Sunrise over mountains"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Sunrise"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Cityscape at dusk"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Sunset over buildings"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Rainbow"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Bridge at night"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Water wave"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Volcano"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Milky way"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Earth globe Europe-Africa"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Earth globe Americas"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Earth globe Asia-Australia"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Globe with meridians"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"New moon symbol"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Waxing crescent moon symbol"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"First quarter moon symbol"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Waxing gibbous moon symbol"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Full moon symbol"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Waning gibbous moon symbol"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Last quarter moon symbol"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Waning crescent moon symbol"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Crescent moon"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"New moon with face"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"First quarter moon with face"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Last quarter moon with face"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Full moon with face"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Sun with face"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Glowing star"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Shooting star"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Chestnut"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Seedling"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Evergreen tree"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Deciduous tree"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palm tree"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Cactus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Tulip"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Cherry blossom"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Rose"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hibiscus"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Sunflower"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Blossom"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Ear of maize"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Ear of rice"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Herb"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Four leaf clover"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Maple leaf"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Fallen leaf"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Leaf fluttering in wind"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Mushroom"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Tomato"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Aubergine"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Grapes"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Melon"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Watermelon"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Tangerine"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Lemon"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banana"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Pineapple"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Red apple"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Green apple"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Pear"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Peach"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Cherries"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Strawberry"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Slice of pizza"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Meat on bone"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Poultry leg"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Rice cracker"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Rice ball"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Cooked rice"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Curry and rice"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Steaming bowl"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spaghetti"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Bread"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"French fries"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Roasted sweet potato"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Fried shrimp"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Fish cake with swirl design"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Soft ice cream"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Shaved ice"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Ice cream"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Doughnut"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Cookie"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Chocolate bar"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Candy"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Custard"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Honey pot"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Shortcake"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Bento box"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Pot of food"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Cooking"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Fork and knife"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Teacup without handle"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Sake bottle and cup"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Wine glass"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Cocktail glass"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Tropical drink"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Beer mug"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Clinking beer mugs"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Baby bottle"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Ribbon"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Wrapped present"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Birthday cake"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack-o-lantern"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Christmas tree"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Father christmas"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Fireworks"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Firework sparkler"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Balloon"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Party popper"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Confetti ball"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Tanabata tree"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Crossed flags"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Pine decoration"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Japanese dolls"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Carp streamer"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Wind chime"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Moon viewing ceremony"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"School satchel"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Graduation cap"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Carousel horse"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Ferris wheel"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Roller coaster"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Fishing pole and fish"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Microphone"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Movie camera"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Cinema"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Headphone"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Artist palette"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Top hat"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Circus tent"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Ticket"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Clapper board"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Performing arts"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Video game"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Direct hit"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Slot machine"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Billiards"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Game die"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Bowling"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Flower playing cards"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Musical note"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Multiple musical notes"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saxophone"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Guitar"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Musical keyboard"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trumpet"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Violin"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Musical score"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Running shirt with sash"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Tennis racquet and ball"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Ski and ski boot"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Basketball and hoop"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Chequered flag"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snowboarder"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Runner"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Surfer"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Trophy"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Horse racing"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"American football"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Rugby football"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Swimmer"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"House building"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"House with garden"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Office building"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Japanese post office"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"European post office"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Hospital"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Bank"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Automated teller machine"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Love hotel"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Convenience store"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"School"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Department store"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Factory"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Izakaya lantern"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Japanese castle"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"European castle"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Rat"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Mouse"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Ox"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Water buffalo"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Cow"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopard"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Rabbit"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Cat"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Dragon"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Crocodile"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Whale"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Snail"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Snake"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Horse"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Ram"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Goat"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Sheep"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Monkey"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Rooster"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Chicken"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Dog"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Pig"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Boar"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Elephant"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Octopus"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Spiral shell"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Bug"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Ant"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Honeybee"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Lady beetle"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Fish"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Tropical fish"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Blowfish"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Turtle"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Hatching chick"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Baby chick"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Front-facing baby chick"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Bird"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Penguin"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Poodle"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Dromedary camel"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Bactrian camel"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Dolphin"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Mouse face"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Cow face"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Tiger face"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Rabbit face"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Cat face"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Dragon face"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Spouting whale"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Horse face"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Monkey face"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Dog face"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Pig face"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Frog face"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Hamster face"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Wolf face"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Bear face"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Panda face"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Pig nose"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Paw prints"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Eyes"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Ear"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nose"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Mouth"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Tongue"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"White up pointing backhand index"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"White down pointing backhand index"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"White left pointing backhand index"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"White right pointing backhand index"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Fisted hand sign"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Waving hand sign"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"OK hand sign"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Thumbs up sign"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Thumbs down sign"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Clapping hands sign"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Open hands sign"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Crown"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Womans hat"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Eyeglasses"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Necktie"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"T-shirt"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Jeans"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Dress"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Womans clothes"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Purse"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Handbag"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Pouch"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Mans shoe"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Athletic shoe"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"High-heeled shoe"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Womans sandal"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Womans boots"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Footprints"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Bust in silhouette"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Busts in silhouette"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Boy"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Girl"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Man"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Woman"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Family"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Man and woman holding hands"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Two men holding hands"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Two women holding hands"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Police officer"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Woman with bunny ears"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Bride with veil"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Person with blond hair"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Man with gua pi mao"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Man with turban"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Older man"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Older woman"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Baby"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Construction worker"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Princess"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Japanese ogre"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Japanese goblin"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Ghost"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Baby angel"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Extraterrestrial alien"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Alien monster"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Imp"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Skull"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Information desk person"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Guardsman"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Dancer"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Lipstick"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Nail polish"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Face massage"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Haircut"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Barber pole"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Syringe"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pill"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Kiss mark"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Love letter"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Ring"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Gem stone"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Kiss"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Bouquet"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Couple with heart"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Wedding"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Beating heart"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Broken heart"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Two hearts"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Sparkling heart"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Growing heart"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Heart with arrow"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Blue heart"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Green heart"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Yellow heart"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Purple heart"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Heart with ribbon"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Revolving hearts"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Heart decoration"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Diamond shape with a dot inside"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Electric light bulb"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Anger symbol"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bomb"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Sleeping symbol"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Collision symbol"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Splashing sweat symbol"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Droplet"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Dash symbol"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Pile of poo"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Flexed biceps"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Dizzy symbol"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Speech balloon"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Thought balloon"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"White flower"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Hundred points symbol"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Money bag"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Currency exchange"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Heavy pound sign"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Credit card"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Banknote with yen sign"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Banknote with pound sign"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Banknote with euro sign"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Banknote with pound sign"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Money with wings"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Chart with upwards trend and yen sign"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Seat"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Personal computer"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Briefcase"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisc"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Floppy disk"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Optical disc"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"File folder"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Open file folder"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Page with curl"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Page facing up"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Calendar"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Tear-off calendar"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Card index"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Chart with upwards trend"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Chart with downwards trend"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Bar chart"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Clipboard"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Pushpin"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Round pushpin"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Paperclip"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Straight ruler"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Triangular ruler"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Bookmark tabs"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Ledger"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Notebook"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Notebook with decorative cover"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Closed book"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Open book"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Green book"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Blue book"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Orange book"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Books"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Name badge"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Scroll"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memo"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telephone receiver"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Pager"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Fax machine"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Satellite antenna"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Public address loudspeaker"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Cheering megaphone"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Outbox tray"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Inbox tray"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Package"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"E-mail symbol"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Incoming envelope"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Envelope with downwards arrow above"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Closed mailbox with lowered flag"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Closed mailbox with raised flag"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Open mailbox with raised flag"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Open mailbox with lowered flag"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Postbox"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Postal horn"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Newspaper"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobile phone"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Mobile phone with rightwards arrow at left"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Vibration mode"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Mobile phone off"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"No mobile phones"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antenna with bars"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Camera"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Video camera"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Television"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videocassette"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Twisted rightwards arrows"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Clockwise rightwards and leftwards open circle arrows"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Clockwise rightwards and leftwards open circle arrows with circled one overlay"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Clockwise downwards and upwards open circle arrows"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Anticlockwise downwards and upwards open circle arrows"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Low brightness symbol"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"High brightness symbol"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Speaker with cancellation stroke"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Speaker"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Speaker with one sound wave"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Speaker with three sound waves"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Battery"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Electric plug"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Left-pointing magnifying glass"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Right-pointing magnifying glass"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lock with ink pen"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Closed lock with key"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Key"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Lock"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Open lock"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Bell"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Bell with cancellation stroke"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Bookmark"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Link symbol"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Radio button"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Back with leftwards arrow above"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"End with leftwards arrow above"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"On with exclamation mark with left right arrow above"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Soon with rightwards arrow above"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Top with upwards arrow above"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"No one under eighteen symbol"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Keycap ten"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Input symbol for latin capital letters"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Input symbol for latin small letters"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Input symbol for numbers"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Input symbol for symbols"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Input symbol for latin letters"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Fire"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Electric torch"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Wrench"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Hammer"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Nut and bolt"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hocho"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistol"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Microscope"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Telescope"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Crystal ball"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Six pointed star with middle dot"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Japanese symbol for beginner"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Trident emblem"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Black square button"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"White square button"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Large red circle"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Large blue circle"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Large orange diamond"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Large blue diamond"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Small orange diamond"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Small blue diamond"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Up-pointing red triangle"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Down-pointing red triangle"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Up-pointing small red triangle"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Down-pointing small red triangle"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Clock face one o\'clock"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Clock face two o\'clock"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Clock face three o\'clock"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Clock face four o\'clock"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Clock face five o\'clock"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Clock face six o\'clock"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Clock face seven o\'clock"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Clock face eight o\'clock"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Clock face nine o\'clock"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Clock face ten o\'clock"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Clock face eleven o\'clock"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Clock face twelve o\'clock"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Clock face one-thirty"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Clock face two-thirty"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Clock face three-thirty"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Clock face four-thirty"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Clock face five-thirty"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Clock face six-thirty"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Clock face seven-thirty"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Clock face eight-thirty"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Clock face nine-thirty"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Clock face ten-thirty"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Clock face eleven-thirty"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Clock face twelve-thirty"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Mount Fuji"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokyo tower"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Statue of Liberty"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Silhouette of Japan"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Grinning face"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Grinning face with smiling eyes"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Face with tears of joy"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Smiling face with open mouth"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Smiling face with open mouth and smiling eyes"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Smiling face with open mouth and cold sweat"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Smiling face with open mouth and tightly-closed eyes"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Smiling face with halo"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Smiling face with horns"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Winking face"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Smiling face with smiling eyes"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Face savouring delicious food"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Relieved face"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Smiling face with heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Smiling face with sunglasses"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Smirking face"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Neutral face"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Expressionless face"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Unamused face"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Face with cold sweat"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Pensive face"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Confused face"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Confounded face"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Kissing face"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Face throwing a kiss"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Kissing face with smiling eyes"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Kissing face with closed eyes"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Face with stuck-out tongue"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Face with stuck-out tongue and winking eye"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Face with stuck-out tongue and tightly-closed eyes"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Disappointed face"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Worried face"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Angry face"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Pouting face"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Crying face"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Persevering face"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Face with look of triumph"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Disappointed but relieved face"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Frowning face with open mouth"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Anguished face"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Fearful face"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Weary face"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Sleepy face"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Tired face"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Grimacing face"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Loudly crying face"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Face with open mouth"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Hushed face"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Face with open mouth and cold sweat"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Face screaming in fear"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Astonished face"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Flushed face"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Sleeping face"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Dizzy face"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Face without mouth"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Face with medical mask"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Grinning cat face with smiling eyes"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Cat face with tears of joy"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Smiling cat face with open mouth"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Smiling cat face with heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Cat face with wry smile"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Kissing cat face with closed eyes"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Pouting cat face"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Crying cat face"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Weary cat face"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Face with no good gesture"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Face with OK gesture"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Person bowing deeply"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"See-no-evil monkey"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Hear-no-evil monkey"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Speak-no-evil monkey"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Happy person raising one hand"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Person raising both hands in celebration"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Person frowning"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Person with pouting face"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Person with folded hands"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Rocket"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helicopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Steam locomotive"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Railway car"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"High-speed train"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"High-speed train with bullet nose"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Train"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Light rail"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Station"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tram"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Tram car"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Bus"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Oncoming bus"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Tram"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Bus stop"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibus"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulance"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Fire engine"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Police car"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Oncoming police car"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taxi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Oncoming taxi"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automobile"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Oncoming automobile"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Recreational vehicle"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Delivery truck"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Articulated lorry"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Tractor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monorail"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Mountain railway"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Suspension railway"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Mountain cableway"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Aerial tramway"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Ship"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Rowing boat"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Speedboat"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Horizontal traffic light"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Vertical traffic light"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Construction sign"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Police cars revolving light"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Triangular flag on post"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Door"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"No entry sign"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Smoking symbol"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"No smoking symbol"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Put litter in its place symbol"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Do not litter symbol"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Drinking water symbol"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Non-drinking water symbol"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicycle"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"No bicycles"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Cyclist"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Mountain cyclist"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pedestrian"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"No pedestrians"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Shower"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Bath"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Bathtub"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Passport control"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Customs"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Baggage claim"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Left luggage"</string>
+</resources>
diff --git a/java/res/values-en-rGB/strings-letter-descriptions.xml b/java/res/values-en-rGB/strings-letter-descriptions.xml
new file mode 100644
index 0000000..514bc6c
--- /dev/null
+++ b/java/res/values-en-rGB/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro sign"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Masculine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring above"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dot above"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dot above"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dot above"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middle dot"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceded by apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring above"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dot above"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, comma below"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, comma below"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dot below"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook above"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve and acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve and grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve and hook above"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve and tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve and dot below"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dot below"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook above"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook above"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dot below"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dot below"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook above"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn and acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn and grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dot below"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook above"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn and acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn and grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dot below"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook above"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Inverted exclamation mark"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Left-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Middle dot"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript one"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Right-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Inverted question mark"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Left single quotation mark"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Right single quotation mark"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Single low-9 quotation mark"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Left double quotation mark"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Right double quotation mark"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille sign"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Single left-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Single right-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript four"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript latin small letter n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso sign"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Rightwards arrow"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Downwards arrow"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Less than or equal to"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Greater than or equal to"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Black star"</string>
+</resources>
diff --git a/java/res/values-en-rGB/strings-talkback-descriptions.xml b/java/res/values-en-rGB/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..e209b54
--- /dev/null
+++ b/java/res/values-en-rGB/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Plug in a headset to hear password keys spoken aloud."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Current text is %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"No text entered"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrects <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> to <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> performs auto-correction"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Unknown character"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"More symbols"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbols"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Delete"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbols"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letters"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Numbers"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Settings"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Voice input"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Search"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Full stop"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Switch language"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Next"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Previous"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift enabled"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock enabled"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbols mode"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"More symbols mode"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Letters mode"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Phone mode"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Phone symbols mode"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Keyboard hidden"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Showing <xliff:g id="KEYBOARD_MODE">%s</xliff:g> keyboard"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"date"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"date and time"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"messaging"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"number"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"phone"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"time"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recents"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"People"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objects"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Nature"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Places"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbols"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Capital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Capital I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Unknown symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Unknown emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternative characters are available"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternative characters are dismissed"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternative suggestions are available"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternative suggestions are dismissed"</string>
+</resources>
diff --git a/java/res/values-en-rGB/strings.xml b/java/res/values-en-rGB/strings.xml
index 4bc1b15..04056c2 100644
--- a/java/res/values-en-rGB/strings.xml
+++ b/java/res/values-en-rGB/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Input options"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Research Log Commands"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Look up contact names"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Spell checker uses entries from your contact list"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrate on keypress"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sound on keypress"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up on key press"</string>
-    <string name="general_category" msgid="1859088467017573195">"General"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Text correction"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Gesture typing"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Other options"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Advanced settings"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Options for experts"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Input preferences"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Appearance"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Multilingual options"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Gesture typing preferences"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Text correction"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Advanced"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Language switch key"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"System default"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Suggest Contact names"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Use names from Contacts for suggestions and corrections"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalised suggestions"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Improve <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Double-space full stop"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Double tap on spacebar inserts a full stop followed by a space"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Auto-capitalisation"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Show gesture trail"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamic floating preview"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"See the suggested word while gesturing"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Saved"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Plug in a headset to hear password keys spoken aloud."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Current text is %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"No text entered"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corrects <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> to <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> performs auto-correction"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Key code %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift on (tap to disable)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock on (tap to disable)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symbols"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letters"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numbers"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Settings"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Space"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Voice input"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley face"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Search"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Dot"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Switch language"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Next"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Previous"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift enabled"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock enabled"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift disabled"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbols mode"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Letters mode"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Phone mode"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Phone symbols mode"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Keyboard hidden"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Showing <xliff:g id="MODE">%s</xliff:g> keyboard"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"date"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"date and time"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"messaging"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"number"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"phone"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"time"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Phrase gesture"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Input spaces during gestures by gliding to the space key"</string>
     <string name="voice_input" msgid="3583258583521397548">"Voice input key"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"On main keyboard"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"On symbols keyboard"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Off"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic on main keyboard"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic on symbols keyboard"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Voice input is disabled"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No voice input methods enabled. Check Language &amp; input settings."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Send feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Input languages"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Touch again to save"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dictionary available"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Enable user feedback"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Help improve this input method editor by automatically sending usage statistics and crash reports"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Keyboard theme"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"English (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"English (US)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spanish (US)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"English (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"English (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spanish (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Traditional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"English (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"English (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spanish (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Traditional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cyrillic)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"No language (Alphabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alphabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alphabet (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alphabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alphabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Colour scheme"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"White"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blue"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Keyboard theme"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Holo White"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Holo Blue"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Material Dark"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Material Light"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Customised input styles"</string>
     <string name="add_style" msgid="6163126614514489951">"Add style"</string>
     <string name="add" msgid="8299699805688017798">"Add"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Enable"</string>
     <string name="not_now" msgid="6172462888202790482">"Not now"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"The same input style already exists: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Usability study mode"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Key long press delay"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Keypress vibration duration"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Keypress sound volume"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Read external dictionary file"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"No dictionary files in the Downloads folder"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Select a dictionary file to install"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Really install this file for <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Really install this file for <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"There was an error"</string>
     <string name="button_default" msgid="3988017840431881491">"Default"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Welcome to <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Refresh"</string>
     <string name="last_update" msgid="730467549913588780">"Last updated"</string>
     <string name="message_updating" msgid="4457761393932375219">"Checking for updates"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Loading..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Loading…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Main dictionary"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancel"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Settings"</string>
     <string name="install_dict" msgid="180852772562189365">"Install"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancel"</string>
     <string name="delete_dict" msgid="756853268088330054">"Delete"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"The selected language on your mobile device has an available dictionary.&lt;br/&gt; We recommend &lt;b&gt;downloading&lt;/b&gt; the <xliff:g id="LANGUAGE">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/&gt; &lt;br/&gt; The download could take a minute or two over 3G. Charges may apply if you don\'t have an &lt;b&gt;unlimited data plan&lt;/b&gt;.&lt;br/&gt; If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.&lt;br/&gt; &lt;br/&gt; Tip: You can download and remove dictionaries by going to &lt;b&gt;Language &amp; input&lt;/b&gt; in the &lt;b&gt;Settings&lt;/b&gt; menu of your mobile device."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"The selected language on your mobile device has an available dictionary.&lt;br/&gt; We recommend &lt;b&gt;downloading&lt;/b&gt; the <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/&gt; &lt;br/&gt; The download could take a minute or two over 3G. Charges may apply if you don\'t have an &lt;b&gt;unlimited data plan&lt;/b&gt;.&lt;br/&gt; If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.&lt;br/&gt; &lt;br/&gt; Tip: You can download and remove dictionaries by going to &lt;b&gt;Language &amp; input&lt;/b&gt; in the &lt;b&gt;Settings&lt;/b&gt; menu of your mobile device."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Download now (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Download over Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"A dictionary is available for <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"A dictionary is available for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Press to review and download"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloading: suggestions for <xliff:g id="LANGUAGE">%1$s</xliff:g> will be ready soon."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Downloading: suggestions for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> will be ready soon."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Add"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Add to dictionary"</string>
diff --git a/java/res/values-en-rIN/strings-action-keys.xml b/java/res/values-en-rIN/strings-action-keys.xml
index 366cf3c..6514e85 100644
--- a/java/res/values-en-rIN/strings-action-keys.xml
+++ b/java/res/values-en-rIN/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Prev"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Finished"</string>
     <string name="label_send_key" msgid="482252074224462163">"Send"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Search"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Wait"</string>
 </resources>
diff --git a/java/res/values-en-rIN/strings-config-important-notice.xml b/java/res/values-en-rIN/strings-config-important-notice.xml
new file mode 100644
index 0000000..80ddd3e
--- /dev/null
+++ b/java/res/values-en-rIN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Learn from your communications and typed data to improve suggestions"</string>
+</resources>
diff --git a/java/res/values-en-rIN/strings-emoji-descriptions.xml b/java/res/values-en-rIN/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..2ac73fc
--- /dev/null
+++ b/java/res/values-en-rIN/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Copyright sign"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Registered sign"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Double exclamation mark"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Exclamation question mark"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Trade mark sign"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Information source"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Left right arrow"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Up down arrow"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"North west arrow"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"North east arrow"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"South east arrow"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"South west arrow"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Leftwards arrow with hook"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Rightwards arrow with hook"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Watch"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Hourglass"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Black right-pointing double triangle"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Black left-pointing double triangle"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Black up-pointing double triangle"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Black down-pointing double triangle"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Alarm clock"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Hourglass with flowing sand"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Circled latin capital letter m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Black small square"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"White small square"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Black right-pointing triangle"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Black left-pointing triangle"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"White medium square"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Black medium square"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"White medium small square"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Black medium small square"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Black sun with rays"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Cloud"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Black telephone"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Ballot box with tick"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Umbrella with rain drops"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Hot beverage"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"White up pointing index"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"White smiling face"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Aries"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Taurus"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Gemini"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Cancer"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leo"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Virgo"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Libra"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Scorpio"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Sagittarius"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Capricorn"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Aquarius"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Pisces"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Black spade suit"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Black club suit"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Black heart suit"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Black diamond suit"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Hot springs"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Black universal recycling symbol"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Wheelchair symbol"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Anchor"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Warning sign"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"High voltage sign"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Medium white circle"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Medium black circle"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Football"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Baseball"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Snowman without snow"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Sun behind cloud"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Ophiuchus"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"No entry"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Church"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fountain"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Flag in hole"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Sailing boat"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Tent"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Fuel pump"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Black scissors"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"White heavy tick"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Aeroplane"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Envelope"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Raised fist"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Raised hand"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Victory hand"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Pencil"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Black nib"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Heavy tick"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Heavy multiplication x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Sparkles"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Eight spoked asterisk"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Eight pointed black star"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Snowflake"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Sparkle"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Cross mark"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Negative squared cross mark"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Black question mark ornament"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"White question mark ornament"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"White exclamation mark ornament"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Heavy exclamation mark symbol"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Heavy black heart"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Heavy plus sign"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Heavy minus sign"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Heavy division sign"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Black rightwards arrow"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Curly loop"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Double curly loop"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Arrow pointing rightwards then curving upwards"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Arrow pointing rightwards then curving downwards"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Leftwards black arrow"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Upwards black arrow"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Downwards black arrow"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Black large square"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"White large square"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"White medium star"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Heavy large circle"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Wavy dash"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Part alternation mark"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Circled ideograph congratulation"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Circled ideograph secret"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahjong tile red dragon"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Playing card black joker"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Blood type A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Blood type B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Blood type O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Car park"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Blood type AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"Squared CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Squared cool"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Squared free"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Squared ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Squared new"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Squared N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Squared OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Squared SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Squared up with exclamation mark"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Squared vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Squared katakana here"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Squared katakana service"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Squared ideograph charge-free"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Squared ideograph reserved-seat"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Squared ideograph prohibitation"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Squared ideograph vacancy"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Squared ideograph acceptance"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Squared ideograph full occupancy"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Squared ideograph paid"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Squared ideograph monthly"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Squared ideograph application"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Squared ideograph discount"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Squared ideograph in business"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Circled ideograph advantage"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Circled ideograph accept"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Cyclone"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Foggy"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Closed umbrella"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Night with stars"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Sunrise over mountains"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Sunrise"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Cityscape at dusk"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Sunset over buildings"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Rainbow"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Bridge at night"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Water wave"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Volcano"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Milky way"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Earth globe Europe-Africa"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Earth globe Americas"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Earth globe Asia-Australia"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Globe with meridians"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"New moon symbol"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Waxing crescent moon symbol"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"First quarter moon symbol"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Waxing gibbous moon symbol"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Full moon symbol"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Waning gibbous moon symbol"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Last quarter moon symbol"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Waning crescent moon symbol"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Crescent moon"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"New moon with face"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"First quarter moon with face"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Last quarter moon with face"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Full moon with face"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Sun with face"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Glowing star"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Shooting star"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Chestnut"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Seedling"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Evergreen tree"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Deciduous tree"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palm tree"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Cactus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Tulip"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Cherry blossom"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Rose"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hibiscus"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Sunflower"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Blossom"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Ear of maize"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Ear of rice"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Herb"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Four leaf clover"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Maple leaf"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Fallen leaf"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Leaf fluttering in wind"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Mushroom"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Tomato"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Aubergine"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Grapes"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Melon"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Watermelon"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Tangerine"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Lemon"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banana"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Pineapple"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Red apple"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Green apple"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Pear"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Peach"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Cherries"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Strawberry"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Slice of pizza"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Meat on bone"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Poultry leg"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Rice cracker"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Rice ball"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Cooked rice"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Curry and rice"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Steaming bowl"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spaghetti"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Bread"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"French fries"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Roasted sweet potato"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Fried shrimp"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Fish cake with swirl design"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Soft ice cream"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Shaved ice"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Ice cream"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Doughnut"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Cookie"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Chocolate bar"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Candy"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lollipop"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Custard"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Honey pot"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Shortcake"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Bento box"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Pot of food"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Cooking"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Fork and knife"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Teacup without handle"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Sake bottle and cup"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Wine glass"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Cocktail glass"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Tropical drink"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Beer mug"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Clinking beer mugs"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Baby bottle"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Ribbon"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Wrapped present"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Birthday cake"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack-o-lantern"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Christmas tree"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Father christmas"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Fireworks"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Firework sparkler"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Balloon"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Party popper"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Confetti ball"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Tanabata tree"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Crossed flags"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Pine decoration"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Japanese dolls"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Carp streamer"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Wind chime"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Moon viewing ceremony"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"School satchel"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Graduation cap"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Carousel horse"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Ferris wheel"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Roller coaster"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Fishing pole and fish"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Microphone"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Movie camera"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Cinema"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Headphone"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Artist palette"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Top hat"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Circus tent"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Ticket"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Clapper board"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Performing arts"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Video game"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Direct hit"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Slot machine"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Billiards"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Game die"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Bowling"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Flower playing cards"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Musical note"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Multiple musical notes"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saxophone"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Guitar"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Musical keyboard"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trumpet"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Violin"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Musical score"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Running shirt with sash"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Tennis racquet and ball"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Ski and ski boot"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Basketball and hoop"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Chequered flag"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snowboarder"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Runner"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Surfer"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Trophy"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Horse racing"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"American football"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Rugby football"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Swimmer"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"House building"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"House with garden"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Office building"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Japanese post office"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"European post office"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Hospital"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Bank"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Automated teller machine"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Love hotel"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Convenience store"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"School"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Department store"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Factory"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Izakaya lantern"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Japanese castle"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"European castle"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Rat"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Mouse"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Ox"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Water buffalo"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Cow"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopard"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Rabbit"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Cat"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Dragon"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Crocodile"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Whale"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Snail"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Snake"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Horse"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Ram"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Goat"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Sheep"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Monkey"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Rooster"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Chicken"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Dog"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Pig"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Boar"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Elephant"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Octopus"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Spiral shell"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Bug"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Ant"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Honeybee"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Lady beetle"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Fish"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Tropical fish"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Blowfish"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Turtle"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Hatching chick"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Baby chick"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Front-facing baby chick"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Bird"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Penguin"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Poodle"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Dromedary camel"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Bactrian camel"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Dolphin"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Mouse face"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Cow face"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Tiger face"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Rabbit face"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Cat face"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Dragon face"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Spouting whale"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Horse face"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Monkey face"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Dog face"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Pig face"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Frog face"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Hamster face"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Wolf face"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Bear face"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Panda face"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Pig nose"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Paw prints"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Eyes"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Ear"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nose"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Mouth"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Tongue"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"White up pointing backhand index"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"White down pointing backhand index"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"White left pointing backhand index"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"White right pointing backhand index"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Fisted hand sign"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Waving hand sign"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"OK hand sign"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Thumbs up sign"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Thumbs down sign"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Clapping hands sign"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Open hands sign"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Crown"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Womans hat"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Eyeglasses"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Necktie"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"T-shirt"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Jeans"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Dress"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Womans clothes"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Purse"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Handbag"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Pouch"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Mans shoe"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Athletic shoe"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"High-heeled shoe"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Womans sandal"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Womans boots"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Footprints"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Bust in silhouette"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Busts in silhouette"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Boy"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Girl"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Man"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Woman"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Family"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Man and woman holding hands"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Two men holding hands"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Two women holding hands"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Police officer"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Woman with bunny ears"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Bride with veil"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Person with blond hair"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Man with gua pi mao"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Man with turban"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Older man"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Older woman"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Baby"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Construction worker"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Princess"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Japanese ogre"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Japanese goblin"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Ghost"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Baby angel"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Extraterrestrial alien"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Alien monster"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Imp"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Skull"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Information desk person"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Guardsman"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Dancer"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Lipstick"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Nail polish"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Face massage"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Haircut"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Barber pole"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Syringe"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pill"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Kiss mark"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Love letter"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Ring"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Gem stone"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Kiss"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Bouquet"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Couple with heart"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Wedding"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Beating heart"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Broken heart"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Two hearts"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Sparkling heart"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Growing heart"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Heart with arrow"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Blue heart"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Green heart"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Yellow heart"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Purple heart"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Heart with ribbon"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Revolving hearts"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Heart decoration"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Diamond shape with a dot inside"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Electric light bulb"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Anger symbol"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bomb"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Sleeping symbol"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Collision symbol"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Splashing sweat symbol"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Droplet"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Dash symbol"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Pile of poo"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Flexed biceps"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Dizzy symbol"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Speech balloon"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Thought balloon"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"White flower"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Hundred points symbol"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Money bag"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Currency exchange"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Heavy pound sign"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Credit card"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Banknote with yen sign"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Banknote with pound sign"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Banknote with euro sign"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Banknote with pound sign"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Money with wings"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Chart with upwards trend and yen sign"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Seat"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Personal computer"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Briefcase"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisc"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Floppy disk"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Optical disc"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"File folder"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Open file folder"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Page with curl"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Page facing up"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Calendar"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Tear-off calendar"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Card index"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Chart with upwards trend"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Chart with downwards trend"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Bar chart"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Clipboard"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Pushpin"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Round pushpin"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Paperclip"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Straight ruler"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Triangular ruler"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Bookmark tabs"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Ledger"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Notebook"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Notebook with decorative cover"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Closed book"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Open book"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Green book"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Blue book"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Orange book"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Books"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Name badge"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Scroll"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memo"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telephone receiver"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Pager"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Fax machine"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Satellite antenna"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Public address loudspeaker"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Cheering megaphone"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Outbox tray"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Inbox tray"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Package"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"E-mail symbol"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Incoming envelope"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Envelope with downwards arrow above"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Closed mailbox with lowered flag"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Closed mailbox with raised flag"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Open mailbox with raised flag"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Open mailbox with lowered flag"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Postbox"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Postal horn"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Newspaper"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobile phone"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Mobile phone with rightwards arrow at left"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Vibration mode"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Mobile phone off"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"No mobile phones"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antenna with bars"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Camera"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Video camera"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Television"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videocassette"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Twisted rightwards arrows"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Clockwise rightwards and leftwards open circle arrows"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Clockwise rightwards and leftwards open circle arrows with circled one overlay"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Clockwise downwards and upwards open circle arrows"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Anticlockwise downwards and upwards open circle arrows"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Low brightness symbol"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"High brightness symbol"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Speaker with cancellation stroke"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Speaker"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Speaker with one sound wave"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Speaker with three sound waves"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Battery"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Electric plug"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Left-pointing magnifying glass"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Right-pointing magnifying glass"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lock with ink pen"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Closed lock with key"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Key"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Lock"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Open lock"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Bell"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Bell with cancellation stroke"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Bookmark"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Link symbol"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Radio button"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Back with leftwards arrow above"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"End with leftwards arrow above"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"On with exclamation mark with left right arrow above"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Soon with rightwards arrow above"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Top with upwards arrow above"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"No one under eighteen symbol"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Keycap ten"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Input symbol for latin capital letters"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Input symbol for latin small letters"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Input symbol for numbers"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Input symbol for symbols"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Input symbol for latin letters"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Fire"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Electric torch"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Wrench"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Hammer"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Nut and bolt"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hocho"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistol"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Microscope"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Telescope"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Crystal ball"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Six pointed star with middle dot"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Japanese symbol for beginner"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Trident emblem"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Black square button"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"White square button"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Large red circle"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Large blue circle"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Large orange diamond"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Large blue diamond"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Small orange diamond"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Small blue diamond"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Up-pointing red triangle"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Down-pointing red triangle"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Up-pointing small red triangle"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Down-pointing small red triangle"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Clock face one o\'clock"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Clock face two o\'clock"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Clock face three o\'clock"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Clock face four o\'clock"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Clock face five o\'clock"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Clock face six o\'clock"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Clock face seven o\'clock"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Clock face eight o\'clock"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Clock face nine o\'clock"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Clock face ten o\'clock"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Clock face eleven o\'clock"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Clock face twelve o\'clock"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Clock face one-thirty"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Clock face two-thirty"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Clock face three-thirty"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Clock face four-thirty"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Clock face five-thirty"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Clock face six-thirty"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Clock face seven-thirty"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Clock face eight-thirty"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Clock face nine-thirty"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Clock face ten-thirty"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Clock face eleven-thirty"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Clock face twelve-thirty"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Mount Fuji"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokyo tower"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Statue of Liberty"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Silhouette of Japan"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Grinning face"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Grinning face with smiling eyes"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Face with tears of joy"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Smiling face with open mouth"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Smiling face with open mouth and smiling eyes"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Smiling face with open mouth and cold sweat"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Smiling face with open mouth and tightly-closed eyes"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Smiling face with halo"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Smiling face with horns"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Winking face"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Smiling face with smiling eyes"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Face savouring delicious food"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Relieved face"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Smiling face with heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Smiling face with sunglasses"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Smirking face"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Neutral face"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Expressionless face"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Unamused face"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Face with cold sweat"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Pensive face"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Confused face"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Confounded face"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Kissing face"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Face throwing a kiss"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Kissing face with smiling eyes"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Kissing face with closed eyes"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Face with stuck-out tongue"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Face with stuck-out tongue and winking eye"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Face with stuck-out tongue and tightly-closed eyes"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Disappointed face"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Worried face"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Angry face"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Pouting face"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Crying face"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Persevering face"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Face with look of triumph"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Disappointed but relieved face"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Frowning face with open mouth"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Anguished face"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Fearful face"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Weary face"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Sleepy face"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Tired face"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Grimacing face"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Loudly crying face"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Face with open mouth"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Hushed face"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Face with open mouth and cold sweat"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Face screaming in fear"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Astonished face"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Flushed face"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Sleeping face"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Dizzy face"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Face without mouth"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Face with medical mask"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Grinning cat face with smiling eyes"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Cat face with tears of joy"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Smiling cat face with open mouth"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Smiling cat face with heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Cat face with wry smile"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Kissing cat face with closed eyes"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Pouting cat face"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Crying cat face"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Weary cat face"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Face with no good gesture"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Face with OK gesture"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Person bowing deeply"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"See-no-evil monkey"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Hear-no-evil monkey"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Speak-no-evil monkey"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Happy person raising one hand"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Person raising both hands in celebration"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Person frowning"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Person with pouting face"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Person with folded hands"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Rocket"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helicopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Steam locomotive"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Railway car"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"High-speed train"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"High-speed train with bullet nose"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Train"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Light rail"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Station"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tram"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Tram car"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Bus"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Oncoming bus"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Tram"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Bus stop"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibus"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulance"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Fire engine"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Police car"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Oncoming police car"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taxi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Oncoming taxi"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automobile"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Oncoming automobile"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Recreational vehicle"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Delivery truck"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Articulated lorry"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Tractor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monorail"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Mountain railway"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Suspension railway"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Mountain cableway"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Aerial tramway"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Ship"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Rowing boat"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Speedboat"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Horizontal traffic light"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Vertical traffic light"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Construction sign"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Police cars revolving light"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Triangular flag on post"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Door"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"No entry sign"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Smoking symbol"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"No smoking symbol"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Put litter in its place symbol"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Do not litter symbol"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Drinking water symbol"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Non-drinking water symbol"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicycle"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"No bicycles"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Cyclist"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Mountain cyclist"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pedestrian"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"No pedestrians"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Shower"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Bath"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Bathtub"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Passport control"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Customs"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Baggage claim"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Left luggage"</string>
+</resources>
diff --git a/java/res/values-en-rIN/strings-letter-descriptions.xml b/java/res/values-en-rIN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..514bc6c
--- /dev/null
+++ b/java/res/values-en-rIN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro sign"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Masculine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring above"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dot above"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dot above"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dot above"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middle dot"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceded by apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring above"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dot above"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, comma below"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, comma below"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dot below"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook above"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve and acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve and grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve and hook above"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve and tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve and dot below"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dot below"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook above"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook above"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dot below"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dot below"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook above"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn and acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn and grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dot below"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook above"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn and acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn and grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dot below"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook above"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Inverted exclamation mark"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Left-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Middle dot"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript one"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Right-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Inverted question mark"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Left single quotation mark"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Right single quotation mark"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Single low-9 quotation mark"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Left double quotation mark"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Right double quotation mark"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille sign"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Single left-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Single right-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript four"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript latin small letter n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso sign"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Rightwards arrow"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Downwards arrow"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Less than or equal to"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Greater than or equal to"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Black star"</string>
+</resources>
diff --git a/java/res/values-en-rIN/strings-talkback-descriptions.xml b/java/res/values-en-rIN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..e209b54
--- /dev/null
+++ b/java/res/values-en-rIN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Plug in a headset to hear password keys spoken aloud."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Current text is %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"No text entered"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrects <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> to <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> performs auto-correction"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Unknown character"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"More symbols"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbols"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Delete"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbols"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letters"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Numbers"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Settings"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Voice input"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Search"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Full stop"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Switch language"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Next"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Previous"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift enabled"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock enabled"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbols mode"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"More symbols mode"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Letters mode"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Phone mode"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Phone symbols mode"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Keyboard hidden"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Showing <xliff:g id="KEYBOARD_MODE">%s</xliff:g> keyboard"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"date"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"date and time"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"messaging"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"number"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"phone"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"time"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recents"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"People"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objects"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Nature"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Places"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbols"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Capital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Capital I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Unknown symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Unknown emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternative characters are available"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternative characters are dismissed"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternative suggestions are available"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternative suggestions are dismissed"</string>
+</resources>
diff --git a/java/res/values-en-rIN/strings.xml b/java/res/values-en-rIN/strings.xml
index 4bc1b15..04056c2 100644
--- a/java/res/values-en-rIN/strings.xml
+++ b/java/res/values-en-rIN/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Input options"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Research Log Commands"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Look up contact names"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Spell checker uses entries from your contact list"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrate on keypress"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sound on keypress"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up on key press"</string>
-    <string name="general_category" msgid="1859088467017573195">"General"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Text correction"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Gesture typing"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Other options"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Advanced settings"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Options for experts"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Input preferences"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Appearance"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Multilingual options"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Gesture typing preferences"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Text correction"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Advanced"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Switch to other input methods"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Language switch key also covers other input methods"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Language switch key"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"System default"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Suggest Contact names"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Use names from Contacts for suggestions and corrections"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalised suggestions"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Improve <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Double-space full stop"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Double tap on spacebar inserts a full stop followed by a space"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Auto-capitalisation"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Show gesture trail"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamic floating preview"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"See the suggested word while gesturing"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Saved"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Plug in a headset to hear password keys spoken aloud."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Current text is %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"No text entered"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corrects <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> to <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> performs auto-correction"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Key code %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift on (tap to disable)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock on (tap to disable)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symbols"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letters"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numbers"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Settings"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Space"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Voice input"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley face"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Search"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Dot"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Switch language"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Next"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Previous"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift enabled"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock enabled"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift disabled"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbols mode"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Letters mode"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Phone mode"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Phone symbols mode"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Keyboard hidden"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Showing <xliff:g id="MODE">%s</xliff:g> keyboard"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"date"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"date and time"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"messaging"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"number"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"phone"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"time"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Phrase gesture"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Input spaces during gestures by gliding to the space key"</string>
     <string name="voice_input" msgid="3583258583521397548">"Voice input key"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"On main keyboard"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"On symbols keyboard"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Off"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic on main keyboard"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic on symbols keyboard"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Voice input is disabled"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No voice input methods enabled. Check Language &amp; input settings."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configure input methods"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Input languages"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Send feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Input languages"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Touch again to save"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dictionary available"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Enable user feedback"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Help improve this input method editor by automatically sending usage statistics and crash reports"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Keyboard theme"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"English (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"English (US)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spanish (US)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"English (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"English (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spanish (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Traditional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"English (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"English (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spanish (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Traditional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cyrillic)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"No language (Alphabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alphabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alphabet (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alphabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alphabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Colour scheme"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"White"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blue"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Keyboard theme"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Holo White"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Holo Blue"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Material Dark"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Material Light"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Customised input styles"</string>
     <string name="add_style" msgid="6163126614514489951">"Add style"</string>
     <string name="add" msgid="8299699805688017798">"Add"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Enable"</string>
     <string name="not_now" msgid="6172462888202790482">"Not now"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"The same input style already exists: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Usability study mode"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Key long press delay"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Keypress vibration duration"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Keypress sound volume"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Read external dictionary file"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"No dictionary files in the Downloads folder"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Select a dictionary file to install"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Really install this file for <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Really install this file for <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"There was an error"</string>
     <string name="button_default" msgid="3988017840431881491">"Default"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Welcome to <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Refresh"</string>
     <string name="last_update" msgid="730467549913588780">"Last updated"</string>
     <string name="message_updating" msgid="4457761393932375219">"Checking for updates"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Loading..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Loading…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Main dictionary"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancel"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Settings"</string>
     <string name="install_dict" msgid="180852772562189365">"Install"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancel"</string>
     <string name="delete_dict" msgid="756853268088330054">"Delete"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"The selected language on your mobile device has an available dictionary.&lt;br/&gt; We recommend &lt;b&gt;downloading&lt;/b&gt; the <xliff:g id="LANGUAGE">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/&gt; &lt;br/&gt; The download could take a minute or two over 3G. Charges may apply if you don\'t have an &lt;b&gt;unlimited data plan&lt;/b&gt;.&lt;br/&gt; If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.&lt;br/&gt; &lt;br/&gt; Tip: You can download and remove dictionaries by going to &lt;b&gt;Language &amp; input&lt;/b&gt; in the &lt;b&gt;Settings&lt;/b&gt; menu of your mobile device."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"The selected language on your mobile device has an available dictionary.&lt;br/&gt; We recommend &lt;b&gt;downloading&lt;/b&gt; the <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/&gt; &lt;br/&gt; The download could take a minute or two over 3G. Charges may apply if you don\'t have an &lt;b&gt;unlimited data plan&lt;/b&gt;.&lt;br/&gt; If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.&lt;br/&gt; &lt;br/&gt; Tip: You can download and remove dictionaries by going to &lt;b&gt;Language &amp; input&lt;/b&gt; in the &lt;b&gt;Settings&lt;/b&gt; menu of your mobile device."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Download now (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Download over Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"A dictionary is available for <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"A dictionary is available for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Press to review and download"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloading: suggestions for <xliff:g id="LANGUAGE">%1$s</xliff:g> will be ready soon."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Downloading: suggestions for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> will be ready soon."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Add"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Add to dictionary"</string>
diff --git a/java/res/values-es-rUS/strings-action-keys.xml b/java/res/values-es-rUS/strings-action-keys.xml
index d375617..e1d37be 100644
--- a/java/res/values-es-rUS/strings-action-keys.xml
+++ b/java/res/values-es-rUS/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Ant."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Listo"</string>
     <string name="label_send_key" msgid="482252074224462163">"Env."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Buscar"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pausa"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Esp."</string>
 </resources>
diff --git a/java/res/values-es-rUS/strings-config-important-notice.xml b/java/res/values-es-rUS/strings-config-important-notice.xml
new file mode 100644
index 0000000..5b895fb
--- /dev/null
+++ b/java/res/values-es-rUS/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprende de mensajes y datos ingresados para mejorar las sugerencias."</string>
+</resources>
diff --git a/java/res/values-es-rUS/strings-letter-descriptions.xml b/java/res/values-es-rUS/strings-letter-descriptions.xml
new file mode 100644
index 0000000..0541875
--- /dev/null
+++ b/java/res/values-es-rUS/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Ordinal femenino"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Signo de micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Ordinal masculino"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S nítida"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, acento grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acento agudo"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, acento circunflejo"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde de la ñ"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diéresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, anillo superior"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"ligadura A, E"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, acento grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acento agudo"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, acento circunflejo"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diéresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, acento grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acento agudo"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, acento circunflejo"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diéresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde de la ñ"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, acento grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acento agudo"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, acento circunflejo"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde de la ñ"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diéresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O tachada"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, acento grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acento agudo"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, acento circunflejo"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diéresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acento agudo"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diéresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, acento largo"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, acento breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acento agudo"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, acento circunflejo"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punto superior"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D tachada"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, acento largo"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punto superior"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, acento circunflejo"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punto superior"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, acento circunflejo"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H tachada"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde de la ñ"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, acento largo"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I sin punto"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"ligadura I, J"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, acento circunflejo"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acento agudo"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punto medio"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L tachada"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acento agudo"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedida por apóstrofe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, acento largo"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, acento agudo doble"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"ligadura O, E"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acento agudo"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acento agudo"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, acento circunflejo"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T tachada"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde de la ñ"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, acento largo"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, anillo superior"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"T, acento agudo doble"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, acento circunflejo"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, acento circunflejo"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acento agudo"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punto superior"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, acento anticircunflejo"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S larga"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, con cuerno"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, con cuerno"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, con coma inferior"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, con coma inferior"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, con punto inferior"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, con gancho superior"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, acento circunflejo y agudo"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, acento circunflejo y grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, acento circunflejo y con gancho superior"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, acento circunflejo y con tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, acento circunflejo y con punto inferior"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, con acento breve y agudo"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, con acento breve y grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, con acento breve y gancho superior"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, con acento breve y tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, con acento breve y punto inferior"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, con punto inferior"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, con gancho superior"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, con tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, acento circunflejo y agudo"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, acento circunflejo y grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, acento circunflejo y con gancho superior"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, acento circunflejo y con tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, acento circunflejo y con punto inferior"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, con gancho superior"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, con punto inferior"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, con punto inferior"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, con gancho superior"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, acento circunflejo y agudo"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, acento circunflejo y grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, acento circunflejo y con gancho superior"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, acento circunflejo y con tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, acento circunflejo y con punto inferior"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, con cuerno y acento agudo"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, con cuerno y acento grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, con cuerno y gancho superior"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, con cuerno y tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, con cuerno y punto inferior"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, con punto inferior"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, con gancho superior"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, con cuerno y acento agudo"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, con cuerno y acento grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, con cuerno y gancho superior"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, con cuerno y tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, con cuerno y punto inferior"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, acento grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, con punto inferior"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, con gancho superior"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Exclamación de apertura"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Comillas angulares de apertura"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Punto medio"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superíndice uno"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Comillas angulares de cierre"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Interrogación de apertura"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Comilla simple de apertura"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Comilla simple de cierre"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Comilla en forma de 9 simple y baja"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Comillas dobles de apertura"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Comillas dobles de cierre"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Cruz"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Cruz doble"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Signo de por mil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prima"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Prima doble"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Comilla simple angular de apertura"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Comilla simple angular de cierre"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superíndice cuatro"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superíndice letra latina minúscula n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Signo de peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Símbolo inglés care-of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Flecha derecha"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Flecha abajo"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Conjunto vacío"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incremento"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menor que o igual a"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Mayor que o igual a"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Estrella negra"</string>
+</resources>
diff --git a/java/res/values-es-rUS/strings-talkback-descriptions.xml b/java/res/values-es-rUS/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..0bde67e
--- /dev/null
+++ b/java/res/values-es-rUS/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Enchufa tus auriculares para escuchar en voz alta qué teclas presionas al ingresar una contraseña."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"El texto actual es %s."</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"No se ingresó texto."</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> por <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige automáticamente."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Carácter desconocido"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Mayúsculas"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Más símbolos"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Mayúscula"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Símbolos"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Mayúscula"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Eliminar"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Símbolos"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letras"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Números"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Configuración"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Pestaña"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espacio"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Entrada de voz"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Volver"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Búsqueda"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punto"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Cambiar idioma"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Siguiente"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Mayúsculas activado"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloqueo de mayúsculas activado"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo Símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modo de más símbolos"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo Letras"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo Teléfono"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo Símbolos del teléfono"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Teclado oculto"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Mostrando teclado de <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"fecha"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"fecha y hora"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"correo electrónico"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mensaje de texto"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"número"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"teléfono"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"texto"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"hora"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recientes"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Contactos"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objetos"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Naturaleza"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lugares"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticones"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> mayúscula"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I mayúscula"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I mayúscula, con punto superior"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconocido"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconocido"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Hay caracteres alternativos disponibles."</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Los caracteres alternativos se descartan."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Hay sugerencias alternativas disponibles."</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Las sugerencias alternativas se descartan."</string>
+</resources>
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 1fd9cf8..9959278 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opciones de entrada"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Comandos registro invest."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Buscar nombres contactos"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"El corrector ortográfico usa entradas de tu lista de contactos."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar al pulsar teclas"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sonar al pulsar las teclas"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Aviso emergente al pulsar tecla"</string>
-    <string name="general_category" msgid="1859088467017573195">"General"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Corrección de texto"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Escritura gestual"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Otras opciones"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Configuración avanzada"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opciones para expertos"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Otros métodos de entrada"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La tecla de cambio de idioma abarca otros métodos de entrada."</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de selección de idioma"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Valor predet. sist."</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sugerir nombres de contacto"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Usar nombres de los contactos para sugerencias y correcciones"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Sugerenc. personalizadas"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Mejorar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Punto y doble espacio"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Tocar dos veces la barra espaciadora inserta un punto y espacio."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostrar recorrido de gesto"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Vista previa dinámica flotante"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Mira la palabra sugerida mientras haces gestos"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Enchufa tus auriculares para escuchar en voz alta qué teclas presionas al ingresar una contraseña."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"El texto actual es %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"No se ingresó texto."</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"La tecla <xliff:g id="KEY">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> por <xliff:g id="CORRECTED">%3$s</xliff:g>."</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"La tecla <xliff:g id="KEY">%1$s</xliff:g> corrige automáticamente."</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Clave de código %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Mayús"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Se activó el modo Mayúscula (toca para desactivarlo)."</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Se activó el bloqueo de mayúsculas (toca para desactivarlo)."</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Borrar"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Símbolos"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letras"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Números"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Configuración"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Pestaña"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Espacio"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Carita sonriente"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Volver"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Buscar"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punto"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Cambiar idioma"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Siguiente"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Anterior"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Se activó el modo Mayúscula."</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Se activó el bloqueo de mayúsculas."</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Se desactivó el modo Mayúscula"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Modo Símbolos"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo Letras"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo Teléfono"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo Símbolos del teléfono"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Teclado oculto"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Mostrando teclado para <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"fecha"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"fecha y hora"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"correo"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"mensaje de texto"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"número"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"teléfono"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"texto"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frase gestual"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Desliza el dedo hasta la tecla de espacio para ingresar espacios."</string>
     <string name="voice_input" msgid="3583258583521397548">"Tecla de entrada por voz"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"En el teclado principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"En el teclado de símbolos"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Desactivado"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micrófono en el teclado principal"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrófono en el teclado de símbolos"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"La entrada por voz está inhabilitada"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"No hay métodos de entrada de voz habilitados. Comprueba la configuración de Teclado e idioma."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Enviar comentarios"</string>
     <string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Vuelve a tocar para guardar."</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Diccionario disponible"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Activar los comentarios del usuario"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Envíanos automáticamente las estadísticas de uso y los informes sobre fallos para ayudarnos a mejorar este editor de método de entrada de texto."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema del teclado"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Inglés (Reino Unido)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Inglés (EE.UU.)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Español (EE.UU.)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglés (Reino Unido) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglés (EE.UU.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Español (EE.UU.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglés, Reino Unido (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglés, EE. UU. (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Español, EE. UU. (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cirílico)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latinoamérica)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Ningún idioma (alfabeto)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeto (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeto (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Combinación de colores"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Blanco"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Azul"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos de entrada personalizados"</string>
     <string name="add_style" msgid="6163126614514489951">"Agr. estilo"</string>
     <string name="add" msgid="8299699805688017798">"Agregar"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Activar"</string>
     <string name="not_now" msgid="6172462888202790482">"Ahora no"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Ya existe el estilo de entrada <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>."</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudio de usabilidad"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Demora de presión prolongada"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Durac. vibrac. al presionar"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Vol. sonido al presionar tecla"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Leer archivo de diccionario externo"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"No hay archivos de diccionario en la carpeta de descargas."</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Seleccionar archivo de diccionario para instalar"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"¿Realmente quieres instalar este archivo para <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"¿Realmente quieres instalar este archivo para <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Se produjo un error."</string>
     <string name="button_default" msgid="3988017840431881491">"Predeterminado"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Te damos la bienvenida a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Actualizar"</string>
     <string name="last_update" msgid="730467549913588780">"Última actualización"</string>
     <string name="message_updating" msgid="4457761393932375219">"Buscando actualizaciones"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Cargando..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Cargando…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Diccionario principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Configuración"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalar"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
     <string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Hay un diccionario disponible para el idioma seleccionado en tu dispositivo móvil.&lt;br/&gt; Te recomendamos que &lt;b&gt;descargues&lt;/b&gt; el diccionario de <xliff:g id="LANGUAGE">%1$s</xliff:g> para mejorar tu experiencia de escritura.&lt;br/&gt; &lt;br/&gt; La descarga puede tardar unos minutos en redes 3G. Si no tienes un &lt;b&gt;plan de datos ilimitado&lt;/b&gt;, es posible que se apliquen cargos.&lt;br/&gt; Si no conoces las características de tu plan de datos, te recomendamos que uses una conexión Wi-Fi para iniciar la descarga automáticamente.&lt;br/&gt; &lt;br/&gt; Sugerencia: Puedes descargar y eliminar diccionarios en la sección &lt;b&gt;Teclado e idioma&lt;/b&gt; del menú &lt;b&gt;Configuración&lt;/b&gt; del dispositivo móvil."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Hay un diccionario disponible para el idioma seleccionado en tu dispositivo móvil.&lt;br/&gt; Te recomendamos que &lt;b&gt;descargues&lt;/b&gt; el diccionario de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> para mejorar tu experiencia de escritura.&lt;br/&gt; &lt;br/&gt; La descarga puede tardar unos minutos en redes 3G. Si no tienes un &lt;b&gt;plan de datos ilimitado&lt;/b&gt;, es posible que se apliquen cargos.&lt;br/&gt; Si no sabes qué plan de datos tienes, te recomendamos que uses una conexión Wi-Fi para iniciar la descarga automáticamente.&lt;br/&gt; &lt;br/&gt; Sugerencia: Puedes descargar y eliminar diccionarios desde &lt;b&gt;Teclado e idioma&lt;/b&gt; en el menú &lt;b&gt;Configuración&lt;/b&gt; del dispositivo móvil."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Descargar ahora (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Descargar por Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Hay un diccionario disponible de <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Hay un diccionario disponible de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Pulsar para opinar y descargar"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Descargando: las sugerencias de <xliff:g id="LANGUAGE">%1$s</xliff:g> estarán disponibles en breve."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"La descarga de sugerencias para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> estará lista en breve."</string>
     <string name="version_text" msgid="2715354215568469385">"Versión <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Agregar"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Agregar al diccionario"</string>
diff --git a/java/res/values-es/strings-action-keys.xml b/java/res/values-es/strings-action-keys.xml
index 2701146..17ea335 100644
--- a/java/res/values-es/strings-action-keys.xml
+++ b/java/res/values-es/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Anterior"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Listo"</string>
     <string name="label_send_key" msgid="482252074224462163">"Enviar"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Buscar"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pausar"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Espera"</string>
 </resources>
diff --git a/java/res/values-es/strings-config-important-notice.xml b/java/res/values-es/strings-config-important-notice.xml
new file mode 100644
index 0000000..6771265
--- /dev/null
+++ b/java/res/values-es/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprende de mensajes y datos escritos para mejorar sugerencias"</string>
+</resources>
diff --git a/java/res/values-es/strings-letter-descriptions.xml b/java/res/values-es/strings-letter-descriptions.xml
new file mode 100644
index 0000000..0b41868
--- /dev/null
+++ b/java/res/values-es/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicador ordinal feminino"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Símbolo de la micra"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicador ordinal masculino"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S sonora"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, agudo"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circunflejo"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diéresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, anillo superior"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligadura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, agudo"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circunflejo"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diéresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, agudo"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circunflejo"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diéresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, agudo"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circunflejo"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diéresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, trazo"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, agudo"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circunflejo"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diéresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, agudo"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diéresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macrón"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, colita"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, agudo"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circunflejo"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punto superior"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, carón"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, carón"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, trazo"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macrón"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punto superior"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, colita"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, carón"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circunflejo"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punto superior"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circunflejo"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, trazo"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macrón"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, colita"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I sin punto"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligadura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circunflejo"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, agudo"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, carón"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punto medio"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, trazo"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, agudo"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, carón"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedida por apóstrofo"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macrón"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, agudo doble"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligadura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, agudo"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, carón"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, agudo"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circunflejo"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, carón"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, carón"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, trazo"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macrón"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, anillo superior"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, agudo doble"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, colita"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circunflejo"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circunflejo"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, agudo"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punto superior"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, carón"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S larga"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, cuerno"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, cuerno"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, coma inferior"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, coma inferior"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punto inferior"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, garfio superior"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circunflejo y agudo"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circunflejo y grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circunflejo y garfio superior"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circunflejo y tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circunflejo y punto inferior"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve y agudo"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve y grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve y garfio superior"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve y tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve y punto inferior"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punto inferior"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, garfio superior"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circunflejo y agudo"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circunflejo y grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circunflejo y garfio superior"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circunflejo y tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circunflejo y punto inferior"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, garfio superior"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punto inferior"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punto inferior"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, garfio superior"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circunflejo y agudo"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circunflejo y grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circunflejo y garfio superior"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circunflejo y tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circunflejo y punto inferior"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, cuerno y agudo"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, cuerno y grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, cuerno y garfio superior"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, cuerno y tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, cuerno y punto inferior"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punto inferior"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, garfio superior"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, cuerno y agudo"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, cuerno y grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, cuerno y garfio superior"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, cuerno y tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, cuerno y punto inferior"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punto inferior"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, garfio superior"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Signo de exclamación de apertura"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Comillas angulares de apertura"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Punto medio"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Uno superíndice"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Comillas angulares de cierre"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Signo de interrogación de apertura"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Comilla simple de apertura"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Comilla simple de cierre"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Comilla simple baja"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Comillas dobles de apertura"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Comillas dobles de cierre"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obelisco"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Obelisco doble"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Signo por mil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prima"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Prima doble"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Comilla simple angular de apertura"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Comilla simple angular de cierre"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Cuatro superíndice"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Letra n minúscula superíndice"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Signo de peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Porcentaje"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Flecha hacia la derecha"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Flecha hacia abajo"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Conjunto vacío"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incremento"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menor o igual que"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Mayor o igual que"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Estrella negra"</string>
+</resources>
diff --git a/java/res/values-es/strings-talkback-descriptions.xml b/java/res/values-es/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..ef95901
--- /dev/null
+++ b/java/res/values-es/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Conecta un auricular para escuchar las contraseñas en voz alta."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"El texto actual es %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"No se ha introducido texto"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> a <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corregirá la palabra automáticamente"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Carácter desconocido"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Mayús"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Más símbolos"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Mayús"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Símbolos"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Mayús"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Eliminar"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Símbolos"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letras"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Números"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Ajustes"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Pestaña"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espacio"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Entrada de voz"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emojis"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Intro"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Buscar"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punto"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Cambiar idioma"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Siguiente"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Mayúsculas habilitadas"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloq Mayús habilitado"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo de símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modo de más símbolos"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo de letras"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo de teléfono"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo de símbolos de teléfono"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Teclado oculto"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Mostrando teclado de <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"fecha"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"fecha y hora"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"correo electrónico"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mensajes"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"número"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"teléfono"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"texto"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"hora"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recientes"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Personas"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objetos"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Naturaleza"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Sitios"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticonos"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> mayúscula"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I mayúscula"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I maýuscula, punto superior"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconocido"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconocido"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Caracteres alternativos disponibles"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Los caracteres alternativos se descartarán"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sugerencias alternativas disponibles"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Las sugerencias alternativas se descartarán"</string>
+</resources>
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index 39b45e0..a385f9e 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opciones entrada texto"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Comandos registro investigación"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Nombres de contactos"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Añadir nombres de tu lista de contactos al corrector"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar al pulsar tecla"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sonar al pulsar tecla"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ampliar al pulsar tecla"</string>
-    <string name="general_category" msgid="1859088467017573195">"General"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Corrección ortográfica"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Escritura gestual"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Otras opciones"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Ajustes avanzados"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opciones para expertos"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Otros métodos de introducción"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La tecla de cambio de idioma sirve también para otros métodos"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla para cambiar de idioma"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Predeterminado"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sugerir contactos"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizar nombres de contactos para sugerencias y correcciones"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Sugerencias personalizadas"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Mejorar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Punto y espacio"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Si tocas dos veces el espacio, se inserta un punto seguido de un espacio"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Mayúsculas automáticas"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostrar recorrido del gesto"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Vista previa dinámica flotante"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Ver palabra sugerida al hacer gestos"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Conecta un auricular para escuchar las contraseñas en voz alta."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"El texto actual es %s."</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"No se ha introducido texto."</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"La tecla <xliff:g id="KEY">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> a <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"La tecla <xliff:g id="KEY">%1$s</xliff:g> corrige automáticamente"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Código del teclado: %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Mayús"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Mayúsculas activadas (tocar para inhabilitar)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Bloqueo de mayúsculas activado (tocar para inhabilitar)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Eliminar"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Símbolos"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letras"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Números"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Ajustes"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulador"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Barra espaciadora"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Emoticono"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Tecla Intro"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Buscar"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punto"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Cambiar idioma"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Siguiente"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Anterior"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Mayúsculas habilitadas"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Bloqueo de mayúsculas habilitado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Mayúsculas inhabilitadas"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Modo de símbolos"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo de letras"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo de teléfono"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo de símbolos de teléfono"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Teclado oculto"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Mostrando teclado <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"fecha"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"fecha y hora"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"correo electrónico"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"mensajes"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"número"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"teléfono"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"texto"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gestos con tecla Espacio"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Desliza el dedo a Espacio para introducir espacios durante gestos"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tecla de entrada de voz"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"En teclado principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"En teclado de símbolos"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"No"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micrófono en teclado principal"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrófono en teclado de símbolos"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entrada de voz inhabilitada"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Sin métodos de introducción de voz habilitados. Comprueba ajustes de Idioma e introducción de texto."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomas"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Danos tu opinión"</string>
     <string name="select_language" msgid="3693815588777926848">"Idiomas de introducción"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toca otra vez para guardar"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Hay un diccionario disponible"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Habilitar comentarios de usuarios"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Ayuda a mejorar este editor de método de introducción de texto enviando estadísticas de uso e informes de error."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema de teclado"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"inglés (Reino Unido)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"inglés (EE.UU.)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Español (EE.UU.)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglés (Reino Unido) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglés (EE.UU.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Español (EE.UU.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglés (Reino Unido) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglés (EE.UU.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Español (EE.UU.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cirílico)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latinoamérica)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Ningún idioma (alfabeto)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeto (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeto (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Patrón de color"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Blanco"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Azul"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos de entrada personalizados"</string>
     <string name="add_style" msgid="6163126614514489951">"Añadir estilo"</string>
     <string name="add" msgid="8299699805688017798">"Añadir"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Habilitar"</string>
     <string name="not_now" msgid="6172462888202790482">"Ahora no"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Ya existe el estilo de entrada <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>."</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo estudio de usabilidad"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Retraso de pulsación prolongada"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Duración vibración al pulsar"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volumen sonido al pulsar tecla"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Leer archivo de diccionario externo"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"No hay archivos de diccionario en la carpeta de descargas."</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selecciona un archivo de diccionario para instalar"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"¿Seguro que quieres instalar este archivo para <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"¿Seguro que quieres instalar este archivo para <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Se ha producido un error"</string>
     <string name="button_default" msgid="3988017840431881491">"Predeterminado"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Te damos la bienvenida a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Actualizar"</string>
     <string name="last_update" msgid="730467549913588780">"Última actualización"</string>
     <string name="message_updating" msgid="4457761393932375219">"Buscando actualizaciones"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Cargando..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Cargando…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Diccionario principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Ajustes"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalar"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
     <string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Hay un diccionario disponible para el idioma seleccionado en tu dispositivo móvil.&lt;br/&gt; Te recomendamos que &lt;b&gt;descargues&lt;/b&gt; el diccionario de <xliff:g id="LANGUAGE">%1$s</xliff:g> para mejorar tu experiencia de escritura.&lt;br/&gt; &lt;br/&gt; La descarga puede tardar unos minutos en redes 3G. Si no tienes un &lt;b&gt;plan de datos ilimitado&lt;/b&gt;, se pueden aplicar cargos.&lt;br/&gt; Si no conoces las características de tu plan de datos, te recomendamos que uses una conexión Wi-Fi para iniciar la descarga automáticamente.&lt;br/&gt; &lt;br/&gt; Sugerencia: puedes descargar y eliminar diccionarios en la sección &lt;b&gt;Idioma e introducción de texto&lt;/b&gt; del menú &lt;b&gt;Ajustes&lt;/b&gt; del dispositivo móvil."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Hay un diccionario disponible para el idioma seleccionado en tu dispositivo móvil.&lt;br/&gt; Te recomendamos que &lt;b&gt;descargues&lt;/b&gt; el diccionario de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> para mejorar la experiencia de escritura.&lt;br/&gt; &lt;br/&gt; La descarga puede tardar unos minutos en redes 3G. Es posible que se apliquen cargos si no tienes un &lt;b&gt;plan de datos ilimitado&lt;/b&gt;.&lt;br/&gt; Si no sabes con certeza cuál es tu plan de datos, te recomendamos que te conectes a una red Wi-Fi para que la descarga empiece automáticamente.&lt;br/&gt; &lt;br/&gt; Consejo: Puedes descargar y eliminar diccionarios en la sección &lt;b&gt;Idioma e introducción de texto&lt;/b&gt; en el menú &lt;b&gt;Ajustes&lt;/b&gt; de tu dispositivo móvil."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Descargar ahora (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Descargar mediante Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Hay un diccionario disponible de <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Hay disponible un diccionario de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Pulsa para comprobar y descargar"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Descargando: las sugerencias de <xliff:g id="LANGUAGE">%1$s</xliff:g> estarán disponibles en breve."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"La descarga de sugerencias para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> estará disponible próximamente."</string>
     <string name="version_text" msgid="2715354215568469385">"Versión <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Añadir"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Añadir al diccionario"</string>
diff --git a/java/res/values-et-rEE/strings-action-keys.xml b/java/res/values-et-rEE/strings-action-keys.xml
index 64ba6d6..12cd77a 100644
--- a/java/res/values-et-rEE/strings-action-keys.xml
+++ b/java/res/values-et-rEE/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Eelm."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Valmis"</string>
     <string name="label_send_key" msgid="482252074224462163">"Saada"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Otsing"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Peata"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Oota"</string>
 </resources>
diff --git a/java/res/values-et-rEE/strings-config-important-notice.xml b/java/res/values-et-rEE/strings-config-important-notice.xml
new file mode 100644
index 0000000..1c363d6
--- /dev/null
+++ b/java/res/values-et-rEE/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Kommunikats. ja sisestatud andmetest õppimine soovit. täiustamiseks"</string>
+</resources>
diff --git a/java/res/values-et-rEE/strings-letter-descriptions.xml b/java/res/values-et-rEE/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ef37c0c
--- /dev/null
+++ b/java/res/values-et-rEE/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Järgarvu naissoost tähis"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro tähis"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Järgarvu meessoost tähis"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Terav S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, graavis"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, akuut"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, treema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ülasõõr"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligatuur"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, sedii"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, graavis"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, akuut"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, treema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, graavis"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, akuut"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, treema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, graavis"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, akuut"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, treema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, kriips"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, graavis"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, akuut"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, treema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, akuut"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, treema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breevis"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, pöördsedii"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, akuut"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, ülapunkt"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, haak"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, haak"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, kriips"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breevis"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, ülapunkt"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, pöördsedii"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, haak"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breevis"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, ülapunkt"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, sedii"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, kriips"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breevis"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, pöördsedii"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Punktita I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligatuur"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, sedii"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, akuut"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, sedii"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, haak"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punkt keskel"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, kriips"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, akuut"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, sedii"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, haak"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, millele eelneb ülakoma"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breevis"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, topeltakuut"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligatuur"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, akuut"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, sedii"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, haak"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, akuut"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, sedii"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, haak"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, sedii"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, haak"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, kriips"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breevis"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ülasõõr"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, topeltakuut"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, pöördsedii"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, akuut"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, ülapunkt"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, haak"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Pikk S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, sarv"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, sarv"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, alakoma"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, alakoma"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Švaa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, alapunkt"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, ülakonks"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, tsirkumfleks ja akuut"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, tsirkumfleks ja graavis"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, tsirkumfleks ja ülakonks"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, tsirkumfleks ja tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, tsirkumfleks ja alapunkt"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breevis ja akuut"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breevis ja graavis"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breevis ja ülakonks"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breevis ja tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breevis ja alapunkt"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, alapunkt"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, ülakonks"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, tsirkumfleks ja akuut"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, tsirkumfleks ja graavis"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, tsirkumfleks ja ülakonks"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, tsirkumfleks"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, tsirkumfleks ja alapunkt"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, ülakonks"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, alapunkt"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, alapunkt"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, ülakonks"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, tsirkumfleks ja akuut"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, tsirkumfleks ja graavis"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, tsirkumfleks ja ülakonks"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, tsirkumfleks ja tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, tsirkumfleks ja alapunkt"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, sarv ja akuut"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, sarv ja graavis"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, sarv ja ülakonks"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, sarv ja tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, sarv ja alapunkt"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, alapunkt"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, ülakonks"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, sarv ja akuut"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, sarv ja graavis"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, sarv ja ülakonks"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, sarv ja tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, sarv ja alapunkt"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, graavis"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, alapunkt"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, ülakonks"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Pöördhüüumärk"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Vasakule suunatud kahekordne nurkjutumärk"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Keskmine punkt"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Ülaindeks"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Paremale suunatud kahekordne nurkjutumärk"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Pöördküsimärk"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Vasak ühekordne jutumärk"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Parem ühekordne jutumärk"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Ühekordne alumine üheksakujuline jutumärk"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Vasak kahekordne jutumärk"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Parem kahekordne jutumärk"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Rist"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Topeltrist"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promillimärk"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Priim"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Topeltpriim"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Ühekordne vasakule suunatud nurkjutumärk"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Ühekordne paremale suunatud nurkjutumärk"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Ülaindeks neli"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Ülaindeks ladina väiketäht n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peesomärk"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Vahendusel"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Nool paremale"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Nool alla"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tühi hulk"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Samm"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Väiksem kui või võrdne"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Suurem kui või võrdne"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Must tärn"</string>
+</resources>
diff --git a/java/res/values-et-rEE/strings-talkback-descriptions.xml b/java/res/values-et-rEE/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..b47df1b
--- /dev/null
+++ b/java/res/values-et-rEE/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Parooliklahvide kuulamiseks ühendage peakomplekt."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Praegune tekst on %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Teksti ei ole sisestatud"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> parandab sõna <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> järgmiselt: <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> teeb automaatse paranduse"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Tundmatu tähemärk"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Tõstuklahv"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Rohkem sümboleid"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Tõstuklahv"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Sümbolid"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Tõstuklahv"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Kustutamine"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Sümbolid"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Tähed"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Numbrid"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Seaded"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulaator"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Tühik"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Häälsisend"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emotikon"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Tagasi"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Otsing"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punkt"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Keele vahetamine"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Järgmine"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Eelmine"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Tõstuklahv on lubatud"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Suurtähelukk on lubatud"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Sümbolite režiim"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Režiim Rohkem sümboleid"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Tähtede režiim"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonirežiim"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefoni sümbolite režiim"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Klaviatuur on peidetud"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Näitab klaviatuuri režiimil <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"kuupäev"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"kuupäev ja kellaaeg"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-post"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"sõnumiside"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"number"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"aeg"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Hiljutised"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Inimesed"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objektid"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Loodus"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Kohad"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Sümbolid"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikonid"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Suurtäht <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Suurtäht I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Suurtäht I, ülapunkt"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Tundmatu sümbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Tundmatu emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatiivsed tähemärgid on saadaval"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatiivsed tähemärgid eemaldatakse"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatiivsed soovitused on saadaval"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatiivsed soovitused eemaldatakse"</string>
+</resources>
diff --git a/java/res/values-et-rEE/strings.xml b/java/res/values-et-rEE/strings.xml
index e0f992c..d57126d 100644
--- a/java/res/values-et-rEE/strings.xml
+++ b/java/res/values-et-rEE/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Sisestusvalikud"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Uuringulogi käsud"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontakti nimede kontroll."</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Õigekirjakontroll kasutab teie kontaktisikute loendi sissekandeid"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibreeri klahvivajutusel"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Heli klahvivajutusel"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Klahvivajutusel kuva hüpik"</string>
-    <string name="general_category" msgid="1859088467017573195">"Üldine"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Teksti parandamine"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Joonistusega sisestamine"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Muud valikud"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Täpsemad seaded"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Valikud ekspertidele"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Vaheta sisestusmeetodit"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Keelevahetuse võti hõlmab ka muid sisestusmeetodeid"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Keelevahetuse nupp"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Süsteemi vaikeväärt."</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Soovita kontaktkirjeid"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Kasuta soovitusteks ja parandusteks nimesid kontaktiloendist"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Isikupärast. soovitused"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Aita rakendust <xliff:g id="APPLICATION_NAME">%s</xliff:g> täiustada"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Punkt tühikuklahviga"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Tühikuklahvi kaks korda puudutades sisestatakse punkt ja tühik"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automaatne suurtähtede kasutamine"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Näita liigutuse jälge"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dünaamiline ujuv eelvaade"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Soovitatud sõna vaatamine joonistusega sisestamise ajal"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : salvestatud"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Ühendage peakomplekt, et kuulata paroole."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Praegune tekst on %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Teksti ei ole sisestatud"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Klahvi <xliff:g id="KEY">%1$s</xliff:g> vajutamisel parandatakse sõna <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sõnaks <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Klahvi <xliff:g id="KEY">%1$s</xliff:g> vajutamisel tehakse automaatne parandus"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Klahvi kood: %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Tõstuklahv"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Tõstuklahv sees (puudutage keelamiseks)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Suurtähelukk on sees (puudutage keelamiseks)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Kustuta"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Sümbolid"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Tähed"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numbrid"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Seaded"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulaator"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Tühik"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Kõnesisend"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Naerunägu"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Tagasi"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Otsing"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punkt"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Keele vahetamine"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Järgmine"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Eelmine"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Tõstuklahv on lubatud"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Suurtähelukk on lubatud"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Tõstuklahv on keelatud"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Sümbolite režiim"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Tähtede režiim"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonirežiim"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefoni sümbolite režiim"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Klaviatuur on peidetud"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Näitab klaviatuuri režiimil <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"kuupäev"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"kuupäev ja kellaaeg"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-post"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"sõnumiside"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"number"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"aeg"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Fraasi liigutus"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Sisestage liigutuste kasutamisel tühikuid, libistades tühikuklahvile"</string>
     <string name="voice_input" msgid="3583258583521397548">"Häälesisendi klahv"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Peamisel klaviatuuril"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sümbolite klaviatuuril"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Väljas"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon peamisel klaviatuuril"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. sümb. klaviat."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Kõnesisend on keelatud"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ühtegi häälsisendmeetodit pole lubatud. Kontrollige keele- ja sisendiseadeid."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Sisestusmeetodite seadistamine"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Sisestuskeeled"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Saatke tagasisidet"</string>
     <string name="select_language" msgid="3693815588777926848">"Sisestuskeeled"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Salvestamiseks puudutage uuesti"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Sõnastik saadaval"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Luba kasutaja tagasiside"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Aidake seda sisestusmeetodi redigeerijat parandada, saates automaatselt kasutusstatistikat ja krahhiaruandeid."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatuuri teema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Inglise (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Inglise (USA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"hispaania (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglise (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglise (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"hispaania (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditsiooniline)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglise (Ühendk.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglise (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Hispaania (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditsiooniline)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kirillitsa)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ladina)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Keel puudub (tähestik)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Tähestik (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Tähestik (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Tähestik (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Tähestik (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emotikon"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Värviskeem"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Valge"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Sinine"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Kohandage sisendlaadid"</string>
     <string name="add_style" msgid="6163126614514489951">"Lisage laad"</string>
     <string name="add" msgid="8299699805688017798">"Lisa"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Luba"</string>
     <string name="not_now" msgid="6172462888202790482">"Mitte kohe"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Sama sisendstiil on juba olemas: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kasutatavuse uurimisrežiim"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Pika klahvivajutuse viide"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Klahvivajutuse vibreerimise kestus"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Klahvivajutuse helitugevus"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Välise sõnastikufaili lugemine"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Kaustas Allalaadimised pole ühtegi sõnastikufaili"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Installitava sõnastikufaili valimine"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Kas soovite tõesti installida faili lokaadile <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Kas soovite tõesti installida faili <xliff:g id="LANGUAGE_NAME">%s</xliff:g> keele jaoks?"</string>
     <string name="error" msgid="8940763624668513648">"Ilmnes viga"</string>
     <string name="button_default" msgid="3988017840431881491">"Vaikeväärtus"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Tere tulemast rakendusse <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Värskenda"</string>
     <string name="last_update" msgid="730467549913588780">"Viimati värskendatud"</string>
     <string name="message_updating" msgid="4457761393932375219">"Värskenduste otsimine"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Laadimine ..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Laadimine …"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Peamine sõnastik"</string>
     <string name="cancel" msgid="6830980399865683324">"Tühista"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Seaded"</string>
     <string name="install_dict" msgid="180852772562189365">"Installi"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Tühista"</string>
     <string name="delete_dict" msgid="756853268088330054">"Kustuta"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Mobiilseadmes valitud keelele on saadaval sõnastik.&lt;br/&gt; Teksti mugavamaks sisestamiseks soovitame &lt;b&gt;alla laadida&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> keele sõnastiku.&lt;br/&gt; &lt;br/&gt; 3G kaudu allalaadimisele võib kuluda minut või paar. Kehtida võivad tasud, kui te ei kasuta &lt;b&gt;piiramatut andmepaketti&lt;/b&gt;.&lt;br/&gt; Kui te ei tea, millist andmepaketti kasutate, soovitame allalaadimise automaatseks käivitamiseks leida WiFi-ühenduse.&lt;br/&gt; &lt;br/&gt; Nõuanne: sõnastikke saate alla laadida ja eemaldada, tehes valiku &lt;b&gt;Keel ja sisestamine&lt;/b&gt; mobiilseadme menüüs &lt;b&gt;Seaded&lt;/b&gt;."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Mobiilseadmes valitud keelele on saadaval sõnastik.&lt;br/&gt; Teksti mugavamaks sisestamiseks soovitame <b>alla laadida</b> <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> keele sõnastiku.&lt;br/&gt; &lt;br/&gt; 3G kaudu allalaadimisele võib kuluda minut või paar. Kui te ei kasuta <b>piiramatut andmepaketti</b>, võivad rakenduda tasud.<br/> Kui te ei tea, millist andmepaketti kasutate, soovitame allalaadimise automaatseks käivitamiseks leida WiFi-ühenduse.&lt;br/&gt; &lt;br/&gt; Nõuanne: sõnastikke saate alla laadida ja eemaldada, tehes mobiilseadme menüüs <b>Seaded</b> valiku &lt;b&gt;Keel ja sisend&lt;/b&gt;."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Laadi kohe alla (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Laadi alla WiFi kaudu"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Sõnastik on <xliff:g id="LANGUAGE">%1$s</xliff:g> keele jaoks saadaval"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Sõnastik on saadaval <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> keeles"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Vajutage ülevaatamiseks ja allalaadimiseks"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Allalaadimine: <xliff:g id="LANGUAGE">%1$s</xliff:g> keele soovitused on varsti saadaval."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Allalaadimine: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> keele soovitused on peagi saadaval."</string>
     <string name="version_text" msgid="2715354215568469385">"Versioon <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Lisa"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Sõnaraamatusse lisamine"</string>
diff --git a/java/res/values-eu-rES/strings-action-keys.xml b/java/res/values-eu-rES/strings-action-keys.xml
new file mode 100644
index 0000000..1fba550
--- /dev/null
+++ b/java/res/values-eu-rES/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"Joan"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"Aurrera"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"Atzera"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"Eginda"</string>
+    <string name="label_send_key" msgid="482252074224462163">"Bidali"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Bilatu"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"Pausatu"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"Itxaron"</string>
+</resources>
diff --git a/java/res/values-eu-rES/strings-appname.xml b/java/res/values-eu-rES/strings-appname.xml
new file mode 100644
index 0000000..41ec09b
--- /dev/null
+++ b/java/res/values-eu-rES/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android teklatua (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android zuzentzaile ortografikoa (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android teklatuaren ezarpenak (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android zuzentzaile ortografikoaren ezarpenak (AOSP)"</string>
+</resources>
diff --git a/java/res/values-eu-rES/strings-config-important-notice.xml b/java/res/values-eu-rES/strings-config-important-notice.xml
new file mode 100644
index 0000000..83d8fe5
--- /dev/null
+++ b/java/res/values-eu-rES/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Iradokizunak hobetzeko, ikasi komunikazioetatik eta idazten duzunetik"</string>
+</resources>
diff --git a/java/res/values-eu-rES/strings-letter-descriptions.xml b/java/res/values-eu-rES/strings-letter-descriptions.xml
new file mode 100644
index 0000000..11636cc
--- /dev/null
+++ b/java/res/values-eu-rES/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Adierazle ordinal femeninoa"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro ikurra"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Adierazle ordinal maskulinoa"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S ahostuna"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A paroxitonoa"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A oxitonoa"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A zirkunflexua"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A tiletaduna"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A dieresiduna"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A goiko eraztunarekin"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A eta E ligatuak"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C hautsia"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E paroxitonoa"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E oxitonoa"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E zirkunflexua"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E dieresiduna"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I paroxitonoa"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I oxitonoa"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I zirkunflexua"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I dieresiduna"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N tiletaduna"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O paroxitonoa"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O oxitonoa"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O zirkunflexua"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O tiletaduna"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O dieresiduna"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O barraduna"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U paroxitonoa"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U oxitonoa"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U zirkunflexua"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U dieresiduna"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y paroxitonoa"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y dieresiduna"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A goi-marraduna"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A hautsia"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C oxitonoa"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C zirkunflexua"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C goi-puntuduna"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D barraduna"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E goi-marraduna"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E goi-puntuduna"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E hautsia"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G zirkunflexua"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G goi-puntuduna"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G hautsia"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H zirkunflexua"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H barraduna"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I tiletaduna"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I goi-marraduna"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I hautsia"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Punturik gabeko I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I eta J ligatuta"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J zirkunflexua"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K hautsia"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L oxitonoa"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L hautsia"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L erdiko puntuarekin"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L barraduna"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N oxitonoa"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N hautsia"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N aurreko apostrofoarekin"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O goi-marraduna"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O oxitono bikoitza"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O eta E ligatuta"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R oxitonoa"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R hautsia"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S oxitonoa"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S zirkunflexua"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S hautsia"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T hautsia"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T barraduna"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U tiletaduna"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U goi-marraduna"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U goi-eraztunarekin"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U oxitono bikoitza"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U hautsia"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W zirkunflexua"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y zirkunflexua"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z oxitonoa"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z goi-puntuduna"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z alderantzizko zirkunflexuarekin"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S luzea"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O adarduna"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U adarduna"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S beheko komarekin"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T beheko komarekin"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A goi-puntuduna"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A zirkunflexu eta oxitonoa"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A zirkunflexu eta paroxitonoa"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A zirkunflexu eta goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A zirkunflexu eta tiletaduna"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A zirkunflexu eta goi-puntuduna"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A hautsi eta oxitonoa"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A hautsi eta paroxitonoa"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A hautsi eta goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A hautsi eta tiletaduna"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A hautsi eta behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E tiletaduna"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E zirkunflexua eta oxitonoa"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E zirkunflexua eta paroxitonoa"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E zirkunflexua eta goi-puntuduna"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E zirkunflexua eta tiletaduna"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E zirkunflexua eta behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O zirkunflexua eta oxitonoa"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O zirkunflexua eta paroxitonoa"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O zirkunflexua eta goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O zirkunflexua eta tiletaduna"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O zirkunflexua eta behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O adardun oxitonoa"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O adardun paroxitonoa"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O adardun goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O adardun tiletaduna"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O adardun behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U adardun oxitonoa"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U adardun paroxitonoa"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U adardun goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U adardun tiletaduna"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U adardun behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y paroxitonoa"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y behe-puntuduna"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y goi-gakoduna"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y tiletaduna"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Harridura-marka alderantzikatua"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Ezkerreranzko bi angeludun komatxoa"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Erdiko puntua"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Bat goi-indizea"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Eskuineranzko bi angeludun komatxoa"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Galdera ikur alderantzikatua"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Ezker-komatxo bakarra"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Eskuin-komatxo bakarra"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Akotazio baxuko komatxo bakarra"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Ezker-komatxo bikoitza"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Eskuin-komatxo bikoitza"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obeliskoa"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Obelisko bikoitza"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Milakoen ikurra"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Komatxo soila"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Komatxo soil bikoitza"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Ezkerreranzko angeludun komatxo bakarra"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Eskuineranzko angeludun komatxo bakarra"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Lau goi-indizea"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"n latindar txikia goi-indizea"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso ikurra"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"\"Care of\" ikurra"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Eskuineranzko gezia"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Beheranzko gezia"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Multzo hutsa"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Igoera"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"\"Baino gutxiago edo berdin\" ikurra"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"\"Baino gehiago edo berdin\" ikurra"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Izar beltza"</string>
+</resources>
diff --git a/java/res/values-eu-rES/strings-talkback-descriptions.xml b/java/res/values-eu-rES/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..949195d
--- /dev/null
+++ b/java/res/values-eu-rES/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Pasahitzak idazteko sakatzen dituzun teklak ozen entzuteko, konektatu entzungailuak."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Oraingo testua %s da"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Ez da testurik idatzi"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> teklak \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" hitza \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\" bihurtzen du"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> teklak zuzenketa automatikoa egiten du"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Karaktere ezezaguna"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Maius"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Ikur gehiago"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Maius"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Ikurrak"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Maius"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Ezabatu"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Ikurrak"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Hizkiak"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Zenbakiak"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Ezarpenak"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabuladorea"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Zuriunea"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Ahots bidezko idazketa"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emotikonoak"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Itzuli"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Bilatu"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Puntua"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Aldatu hizkuntza"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Hurrengoa"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Aurrekoa"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Maiuskulak aktibatuta"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Maiuskulak aktibatuta"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Ikurrak"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Ikur gehiagoren modua"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Hizkiak"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonoa"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefono-ikurrak"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Teklatua ezkutatu da"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> teklatua erakusten"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"data eta ordua"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"helbide elektronikoak"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mezuak"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"zenbakiak"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefono-zenbakiak"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"testua"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ordua"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URLak"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Azkenak"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Jendea"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objektuak"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natura"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Tokiak"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Ikurrak"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikonoak 2"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiuskula"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiuskula"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiuskula goi-puntuduna"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ikur ezezaguna"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emotikono ezezaguna"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Ordezko karaktereak erabilgarri daude"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Ordezko karaktereak baztertu dira"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Ordezko iradokizunak erabilgarri daude"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Ordezko iradokizunak baztertu dira"</string>
+</resources>
diff --git a/java/res/values-eu-rES/strings.xml b/java/res/values-eu-rES/strings.xml
new file mode 100644
index 0000000..5db18a9
--- /dev/null
+++ b/java/res/values-eu-rES/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"Idazketa-aukerak"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Bilatu kontaktu-izenak"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Zuzentzaile ortografikoak kontaktuak erabiltzen ditu"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Egin dar-dar sakatzean"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"Egin soinua tekla sakatzean"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"Handitu teklak, sakatzean"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Aldatu idazketa-metodoa"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Hizkuntza aldatzeko teklak beste idazketa-metodoetarako ere balio du"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"Hizkuntza aldatzeko tekla"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Erakutsi hainbat sarrera-hizkuntza gaituta daudenean"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Erakutsi lerratze-adierazlea"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Bistaratu ikusizko seinalea Maius edo Ikur tekletatik lerratzean"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Desagertzeko atzerapena"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Atzerapenik gabe"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Lehenetsia"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"Sistemaren lehenespena"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"Iradoki kontaktu-izenak"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Erabili kontaktuetako izenak iradokizunak eta zuzenketak egiteko"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Iradokizun pertsonalizatuak"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Hobetu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"Zuriune bikoitzarekin puntu"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Zuriune-tekla bi aldiz sakatuta, puntua eta zuriunea txertatzen dira"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Maiuskula automatikoak"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"Ezarri esaldi bakoitzaren lehenengo hizkia maiuskulaz"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Hiztegi pertsonala"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Hiztegi gehigarriak"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"Hiztegi nagusia"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Erakutsi zuzenketa-iradokizunak"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Bistaratu iradokitako hitzak idatzi bitartean"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Erakutsi beti"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Erakutsi bertikalean"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ezkutatu beti"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Blokeatu hitz iraingarriak"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Ez iradoki iraingarria izan daitekeen hitzik"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"Zuzenketa automatikoa"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"Zuzendu auto. zuriuneak eta puntuazioa gaizki idatzitako hitzetan"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desaktibatu"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Zuhurra"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Neurriz gainekoa"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Oso neurriz gainekoa"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"Hurrengo hitza iradokitzea"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Erabili aurreko hitza iradokizunak egiteko"</string>
+    <string name="gesture_input" msgid="826951152254563827">"Gaitu keinu bidezko idazketa"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"Idatzi hitzak hizki batetik bestera hatza lerratuta"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"Erakutsi keinuaren bidea"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Flotatze dinamikodun aurrebista"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Ikusi iradokitako hitza keinua egin bitartean"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Esaldi-keinua"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Sartu zuriuneak keinuak egin bitartean zuriune-teklara lerratuta"</string>
+    <string name="voice_input" msgid="3583258583521397548">"Ahots bidezko idazketaren tekla"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ez da ahots bidezko idazketa-metodorik gaitu. Egiaztatu Hizkuntza eta idazketa ataleko ezarpenak."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"Konfiguratu idazketa-metodoak"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"Idazketa-hizkuntzak"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"Bidali oharrak"</string>
+    <string name="select_language" msgid="3693815588777926848">"Idazketa-hizkuntzak"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Gordetzeko, ukitu berriro"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"Hiztegia erabilgarri"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"Teklatuaren gaia"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Ingelesa (Erresuma Batua)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Ingelesa (AEB)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"Gaztelania (AEB)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Ingelesa (Erresuma Batua) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Ingelesa (AEB) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Gaztelania (AEB) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradizionala)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (zirilikoa)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latindarra)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"Ez dago hizkuntzarik (alfabetoa)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabetoa (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabetoa (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Alfabetoa (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Alfabetoa (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabetoa (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabetoa (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"Emotikonoak"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"Idazketa-estilo pertsonalizatuak"</string>
+    <string name="add_style" msgid="6163126614514489951">"Gehitu estiloa"</string>
+    <string name="add" msgid="8299699805688017798">"Gehitu"</string>
+    <string name="remove" msgid="4486081658752944606">"Kendu"</string>
+    <string name="save" msgid="7646738597196767214">"Gorde"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"Hizkuntza"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"Diseinua"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Idazketa-estilo pertsonalizatua gaitu behar duzu erabiltzen hasi aurretik. Estiloa gaitu nahi duzu?"</string>
+    <string name="enable" msgid="5031294444630523247">"Gaitu"</string>
+    <string name="not_now" msgid="6172462888202790482">"Orain ez"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Idazketa-estilo hori badago lehendik ere: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Tekla luze sakatzearen atzerapena"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Tekla sakatzearen dardararen iraupena"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Tekla sakatzearen bolumena"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Irakurri kanpoko hiztegi-fitxategia"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Ez dago hiztegi-fitxategirik Deskargak karpetan"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Hautatu hiztegi-fitxategi bat instalatzeko"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Fitxategi hau <xliff:g id="LANGUAGE_NAME">%s</xliff:g> hizkuntzarako instalatu nahi duzu?"</string>
+    <string name="error" msgid="8940763624668513648">"Errore bat gertatu da"</string>
+    <string name="button_default" msgid="3988017840431881491">"Lehenetsia"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"Ongi etorri <xliff:g id="APPLICATION_NAME">%s</xliff:g> aplikaziora"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"Keinu bidezko idazketarekin"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"Lehen urratsak"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"Hurrengo urratsa"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> konfiguratzen"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"Gaitu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"Egiaztatu \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" aplikazioa Hizkuntza eta idazketa-ezarpenetan. Horrek gailuan exekutatzea baimenduko dio."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> aplikazioa gaituta duzu Hizkuntza eta idazketa-ezarpenetan eta, beraz, urratsa eginda dago. Ekin hurrengoari!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"Gaitu Ezarpenak atalean"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"Aldatu <xliff:g id="APPLICATION_NAME">%s</xliff:g> aplikaziora"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"Ondoren, hautatu \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" idazketa-metodo aktibo gisa."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"Aldatu idazketa-metodoak"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"Dena prest duzu!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"Gogokoen dituzun aplikazioetan idatz dezakezu dagoeneko <xliff:g id="APPLICATION_NAME">%s</xliff:g> erabilita."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"Konfiguratu hizkuntza gehigarriak"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"Amaituta"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Erakutsi aplikazioaren ikonoa"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Bistaratu aplikazioaren ikonoa abiarazlean"</string>
+    <string name="app_name" msgid="6320102637491234792">"Hiztegi-hornitzailea"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"Hiztegi-hornitzailea"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"Hiztegi-zerbitzua"</string>
+    <string name="download_description" msgid="6014835283119198591">"Hiztegia eguneratzeko informazioa"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Hiztegi gehigarriak"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Hiztegia erabilgarri"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Hiztegien ezarpenak"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"Erabiltzailearen hiztegiak"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Erabiltzailearen hiztegia"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"Hiztegia erabilgarri"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"Une honetan deskargatzen"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"Instalatuta"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"Instalatuta, desgaituta"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Arazoa gertatu da hiztegi-zerbitzuarekin konektatzean"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"Ez dago hiztegirik erabilgarri"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"Freskatu"</string>
+    <string name="last_update" msgid="730467549913588780">"Azken eguneratzea"</string>
+    <string name="message_updating" msgid="4457761393932375219">"Eguneratzeak bilatzen"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Kargatzen…"</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"Hiztegi nagusia"</string>
+    <string name="cancel" msgid="6830980399865683324">"Utzi"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Ezarpenak"</string>
+    <string name="install_dict" msgid="180852772562189365">"Instalatu"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"Utzi"</string>
+    <string name="delete_dict" msgid="756853268088330054">"Ezabatu"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Gailu mugikorrerako hautatu duzun hizkuntzak hiztegi bat du erabilgarri.&lt;br/&gt; Idazketa-esperientzia hobetzeko, <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> hiztegia &lt;b&gt;deskargatzea&lt;/b&gt; gomendatzen dizugu.&lt;br/&gt; &lt;br/&gt; 3G bidez, deskargak minutu bat edo bi har ditzake. Baliteke gastu gehigarriak kobratzea &lt;b&gt;datu-plan mugagabea&lt;/b&gt; ez baduzu.&lt;br/&gt; Ez badakizu ziur nolako datu-plana duzun, deskarga automatikoki hasteko, Wi-Fi konexio bat bilatzea gomendatzen dizugu.&lt;br/&gt; &lt;br/&gt; Aholkua: hiztegiak deskarga eta ken ditzakezu &lt;b&gt;Hizkuntza eta idazketa&lt;/b&gt; atalera joanda, gailu mugikorreko &lt;b&gt;Ezarpenak&lt;/b&gt; menuan."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"Deskargatu (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Deskargatu Wi-Fi bidez"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> hizkuntzaren hiztegi bat erabilgarri dago"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"Berrikusteko eta deskargatzeko, sakatu hau"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Deskargatzen: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> hizkuntzaren iradokizunak laster egongo dira prest."</string>
+    <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> bertsioa"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Gehitu"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Gehitu hiztegian"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Esaldia"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Aukera gehiago"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Aukera gutxiago"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Ados"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Hitza:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Lasterbidea:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Hizkuntza:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Idatzi hitz bat"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Aukerako lasterbidea"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Editatu hitza"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Editatu"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Ezabatu"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Ez duzu hitzik erabiltzailearen hiztegian. Hitzak gehitzeko, ukitu Gehitu (+) botoia."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Hizkuntza guztietan"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Hizkuntza gehiago…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"Ezabatu"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-fa-sw600dp/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-fa-sw600dp/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..d7aca6f
--- /dev/null
+++ b/java/res/values-fa-sw600dp/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <!-- U+061F: "؟" ARABIC QUESTION MARK
+         U+061B: "؛" ARABIC SEMICOLON -->
+    <string name="suggested_punctuations">!,&#x061F;,:,&#x061B;,\",\',(|),)|(,-,/,@,_</string>
+</resources>
diff --git a/java/res/values-fa/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-fa/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..21bb331
--- /dev/null
+++ b/java/res/values-fa/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,28 @@
+<?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">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <!-- U+061F: "؟" ARABIC QUESTION MARK
+         U+060C: "،" ARABIC COMMA
+         U+061B: "؛" ARABIC SEMICOLON -->
+    <string name="suggested_punctuations">!,&#x061F;,&#x060C;,:,&#x061B;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-fa/donottranslate.xml b/java/res/values-fa/donottranslate.xml
deleted file mode 100644
index 57de253..0000000
--- a/java/res/values-fa/donottranslate.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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">
-    <!-- The all letters need to be mirrored are found at
-         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
-    <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
-</resources>
diff --git a/java/res/values-fa/strings-action-keys.xml b/java/res/values-fa/strings-action-keys.xml
index 78faa8c..859877c 100644
--- a/java/res/values-fa/strings-action-keys.xml
+++ b/java/res/values-fa/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"قبلی"</string>
     <string name="label_done_key" msgid="7564866296502630852">"اتمام"</string>
     <string name="label_send_key" msgid="482252074224462163">"ارسال"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"جستجو"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"مکث"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"انتظار"</string>
 </resources>
diff --git a/java/res/values-fa/strings-config-important-notice.xml b/java/res/values-fa/strings-config-important-notice.xml
new file mode 100644
index 0000000..22a50cd
--- /dev/null
+++ b/java/res/values-fa/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"یادگیری از ارتباطات و اطلاعات تایپ شده شما برای بهبود پیشنهادات"</string>
+</resources>
diff --git a/java/res/values-fa/strings-letter-descriptions.xml b/java/res/values-fa/strings-letter-descriptions.xml
new file mode 100644
index 0000000..4687f1b
--- /dev/null
+++ b/java/res/values-fa/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"نشانگر ترتیبی زنانه"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"علامت میکرو"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"نشانگر ترتیبی مردانه"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"‏شارپ S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"‏A با اکسان گراو"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"‏A با اکسان اگو"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"‏A با هشتک"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"‏A با مدک"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"‏A با دو نقطه"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"‏A با حلقه"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"‏A، ‏E متصل به هم"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"‏C با سدیلا"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"‏E با اکسان گراو"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"‏E با اکسان اگو"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"‏E با هشتک"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"‏E با دو نقطه"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"‏I با اکسان گراو"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"‏I با اکسان اگو"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"‏I با هشتک"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"‏I با دونقطه"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"‏N با مدک"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"‏O با اکسان گراو"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"‏O با اکسان اگو"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"‏O با هشتک"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"‏O با مدک"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"‏O با دونقطه"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"‏O با خط مورب"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"‏U با اکسان گراو"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"‏U با اکسان اگو"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"‏U با هشتک"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"‏U با دو نقطه"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"‏Y با اکسان اگو"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"‏Y با دو نقطه"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"‏A با ماکرون"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"‏A کوتاه"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"‏A با اگنک"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"‏C با اکسان اگو"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"‏C با هشتک"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"‏C با نقطه"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"‏C با هفتک"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"‏D با هفتک"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"‏D با خط مورب"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"‏E با ماکرون"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"‏E کوتاه"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"‏E با نقطه"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"‏E با اگنک"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"‏E با هفتک"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"‏G با هشتک"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"‏G کوتاه"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"‏G با نقطه"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"‏G با سدیلا"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"‏H با هشتک"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"‏H با خط مورب"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"‏I با مدک"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"‏I با ماکرون"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"‏I کوتاه"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"‏I با اگنک"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"‏I بی‌نقطه"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"‏I، ‏J متصل به هم"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"‏I با هشتک"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"‏K با سدیلا"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"‏L با اکسان اگو"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"‏L با سدیلا"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"‏L با هفتک"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"‏L با نقطه وسط"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"‏L با خط مورب"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"‏N با اکسان اگو"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"‏N با سدیلا"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"‏N با هفتک"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"‏N بعد از آپاستراف"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"‏O با ماکرون"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"‏O کوتاه"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"‏O با اکسان اگوی دوتایی"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"‏O، ‏E متصل به هم"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"‏R با اکسان اگو"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"‏R با سدیلا"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"‏R با هفتک"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"‏S با اکسان اگو"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"‏S با هشتک"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"‏S با سدیلا"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"‏S با هفتک"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"‏T با سدیلا"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"‏T با کارون"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"‏T با خط مورب"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"‏U با مدک"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"‏U با ماکرون"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"‏U کوتاه"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"‏U با حلقه"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"‏U با اکسان اگو دوتایی"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"‏U با اگنک"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"‏W با هشتک"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"‏Y با هشتک"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"‏Z با اکسان اگو"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"‏Z با دو نقطه"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"‏Z با هفتک"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"‏S طولانی"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"‏O با شاخ"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"‏U با شاخ"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"‏S با کامای زیرین"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"‏T با کامای زیرین"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"واکه بی‌رنگ"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"‏A با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"‏A با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"‏A با هشتک و اکسان اگو"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"‏A با هشتک و اکسان گراو"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"‏A با هشتک و کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"‏A با هشتک و مدک"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"‏A با هشتک و نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"‏A کوتاه با اکسان اگو"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"‏A کوتاه با اکسان گراو"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"‏A کوتاه با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"‏A کوتاه با مدک"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"‏A کوتاه با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"‏E با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"‏E با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"‏E با مدک"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"‏E با هشتک و اکسان اگو"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"‏E با هشتک و اکسان گراو"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"‏E با هشتک و کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"‏E با هشتک و مدک"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"‏E با هشتک و نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"‏I با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"‏I با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"‏O با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"‏O با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"‏O با هشتک و اکسان اگو"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"‏O با هشتک و اکسان گراو"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"‏O با هشتک و کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"‏O با هشتک و مدک"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"‏O با هشتک و نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"‏O با شاخ و اکسان اگو"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"‏O با شاخ و اکسان گراو"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"‏O با شاخ و کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"‏O با شاخ و مدک"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"‏O با شاخ و نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"‏U با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"‏U با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"‏U با شاخ و اکسان اگو"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"‏U با شاخ و اکسان گراو"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"‏U با شاخ و کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"‏U با شاخ و مدک"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"‏U با شاخ و نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"‏Y اکسان گراو"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"‏Y با نقطه زیرین"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"‏Y با کروشه بالایی"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"‏Y با مدک"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"علامت تعجب وارونه"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"گیومه رو به چپ"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"نقطه وسط"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"بالانویس یک"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"گیومه رو به راست"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"علامت سؤال وارونه"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"علامت نقل قول تکی سمت چپ"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"علامت نقل قول تکی سمت راست"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"علامت نقل قول تکی ۹ پایین"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"علامت نقل قول دوتایی سمت چپ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"علامت نقل قول دوتایی سمت راست"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"نماد خنجر"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"نماد خنجر دوتایی"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"علامت در هزار"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"پریم"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"پریم دوتایی"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"گیومه تکی رو به چپ"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"گیومه تکی رو به راست"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"بالانویس چهار"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"‏بالانویس حرف n کوچک لاتین"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"علامت پسو"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"توسط"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"پیکان سمت راست"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"پیکان رو به پایین"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"مجموعه تهی"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"افزایش"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"کمتر یا مساوی"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"بزرگتر یا مساوی"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"ستاره سیاه"</string>
+</resources>
diff --git a/java/res/values-fa/strings-talkback-descriptions.xml b/java/res/values-fa/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..988dd5c
--- /dev/null
+++ b/java/res/values-fa/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"برای شنیدن کلیدهای گذرواژه که با صدای بلند خوانده می‌شوند، از هدست استفاده کنید."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"‏نوشتار کنونی %s است"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"نوشتاری وارد نشده است"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>، ‏<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> را به <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> تصحیح می‌کند"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> تصحیح خودکار را انجام می‌دهد"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"نویسه نامشخص"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"نمادهای بیشتر"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"تبدیل"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"نمادها"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"تبدیل"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"حذف"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"نمادها"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"حروف"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"اعداد"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"تنظیمات"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"فاصله"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ورودی صدا"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"‏شکلک Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"بازگشت"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"جستجو"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"نقطه"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"تغییر زبان"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"بعدی"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"قبلی"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏Shift فعال شد"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏Caps lock فعال شد"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"حالت نمادها"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"حالت نمادهای بیشتر"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"حالت حروف"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"حالت تلفن"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"حالت نمادهای تلفن"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"صفحه‌کلید پنهان است"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"در حال نمایش صفحه‌کلید <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"تاریخ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"تاریخ و زمان"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ایمیل"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"پیام‌رسانی"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"عدد"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"تلفن"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"نوشتار"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"زمان"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"نشانی اینترنتی"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"موارد اخیر"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"افراد"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"اشیاء"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"طبیعت"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"مکان‌ها"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"نمادها"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"شکلک‌ها"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"حرف بزرگ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"‏I بزرگ"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"‏I بزرگ با نقطه بالایی"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"نماد نامشخص"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"‏شکلک emoji نامشخص"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"نویسه‌های جایگزین در دسترس هستند"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"از نویسه‌های جایگزین صرفنظر می‌شود"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"پیشنهادهای جایگزین در دسترس هستند"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"از پیشنهادهای جایگزین صرفنظر می‌شود"</string>
+</resources>
diff --git a/java/res/values-fa/strings.xml b/java/res/values-fa/strings.xml
index af886ef..1ce5ad2 100644
--- a/java/res/values-fa/strings.xml
+++ b/java/res/values-fa/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"گزینه‌های ورودی"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"فرمان‌های گزارش‌گیری پژوهش"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"جستجوی نام مخاطبین"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"غلط‌گیر املا از ورودی‌های لیست مخاطبین شما استفاده می‌کند"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"لرزش با فشار کلید"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"صدا با فشار کلید"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"بازشدن با فشار کلید"</string>
-    <string name="general_category" msgid="1859088467017573195">"کلی"</string>
-    <string name="correction_category" msgid="2236750915056607613">"تصحیح متن"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"تایپ حرکتی"</string>
-    <string name="misc_category" msgid="6894192814868233453">"سایر گزینه‌ها"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"تنظیمات پیشرفته"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"گزینه‌هایی برای حرفه‌ای‌ها"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"تغییر به دیگر روش‌های ورودی"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"کلید تغییر زبان، سایر ورودی‌های زبان را نیز پوشش می‌دهد"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"کلید تغییر زبان"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"پیش‌فرض سیستم"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"پیشنهاد نام‌های مخاطب"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"برای پیشنهاد و تصحیح از نام مخاطبین استفاده شود"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"پیشنهادات شخصی شده"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"بهبود <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"نقطه با دو فاصله"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"با دوبار ضربه روی دکمه فاصله نقطه با یک فاصله بعد آن درج می‌شود"</string>
     <string name="auto_cap" msgid="1719746674854628252">"بزرگ‌کردن خودکار حروف"</string>
@@ -73,76 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"نمایش نسخه آزمایشی حرکت"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"پیش‌نمایش متحرک پویا"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"مشاهده کلمه پیشنهادی در حین انجام حرکات"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : ذخیره شد"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"برای شنیدن کلیدهای گذرواژه که با صدای بلند خوانده می‌شوند، از هدست استفاده کنید."</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
-    <skip />
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"متنی وارد نشده است"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g>، ‏<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> را به <xliff:g id="CORRECTED">%3$s</xliff:g> تصحیح می‌کند"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> تصحیح خودکار را انجام می‌دهد"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
-    <skip />
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"‏Shift فعال است (برای غیرفعال کردن ضربه بزنید)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"‏Caps Lock روشن است (برای غیرفعال کردن ضربه بزنید)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"نمادها"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"حروف"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"اعداد"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"تنظیمات"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"فاصله"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"ورودی صدا"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"صورت متبسم"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"جستجو"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"نقطه"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"تغییر زبان"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"بعدی"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"قبلی"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"‏Shift فعال است"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"‏Caps lock فعال شد"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"‏Shift غیرفعال است"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"حالت نمادها"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"حالت حروف"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"حالت تلفن"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"حالت نمادهای تلفن"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"صفحه کلید پنهان شد"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"نمایش صفحه کلید <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"تاریخ"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"تاریخ و زمان"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"ایمیل"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"پیام‌رسانی"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"عدد"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"تلفن"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"نوشتار"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"زمان"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"نشانی اینترنتی"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"‫ورود عبارت با حرکت اشاره‌ای"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"با سراندن انگشت به کلید فاصله در زمان اشاره‌ها، فاصله را وارد کنید"</string>
     <string name="voice_input" msgid="3583258583521397548">"کلید ورودی صدا"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"در صفحه‌کلید اصلی"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"در صفحه‌کلید نمادها"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"خاموش"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"میکروفن در صفحه‌کلید اصلی"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"میکروفن در صفحه‌کلید نمادها"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ورودی صدا غیرفعال است"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"هیچ روش ورودی صوتی فعال نشده است. تنظیمات زبان و ورودی را بررسی کنید."</string>
     <string name="configure_input_method" msgid="373356270290742459">"پیکربندی روش‌های ورودی"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"زبان‌های ورودی"</string>
     <string name="send_feedback" msgid="1780431884109392046">"ارسال بازخورد"</string>
     <string name="select_language" msgid="3693815588777926848">"زبان‌های ورودی"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"برای ذخیره دوباره لمس کنید"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"دیکشنری موجود است"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"فعال کردن بازخورد کاربر"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"با ارسال خودکار آمار استفاده و گزارش‌های خرابی، به بهبود این ویرایشگر روش ورودی کمک کنید"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"طرح زمینه صفحه‌کلید"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"انگلیسی (بریتانیا)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"انگلیسی (امریکا)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"اسپانیایی (آمریکا)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"انگلیسی (انگلستان) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"انگلیسی (ایالات متحده) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"اسپانیایی (آمریکا) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (سنتی)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"انگلیسی (بریتانیا) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"انگلیسی (آمریکا) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"اسپانیایی (آمریکا) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (سنتی)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (سیریلیک)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (لاتین)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"بدون زبان (حروف الفبا)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"‏حروف الفبا (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"‏حروف الفبا (QWERTZ)"</string>
@@ -151,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"‏حروف الفبا (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"‏حروف الفبا (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"رنگ‌بندی"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"سفید"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"آبی"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"سبک‌های ورودی سفارشی"</string>
     <string name="add_style" msgid="6163126614514489951">"افزودن سبک"</string>
     <string name="add" msgid="8299699805688017798">"افزودن"</string>
@@ -165,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"فعال کردن"</string>
     <string name="not_now" msgid="6172462888202790482">"الآن نه"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"سبک ورودی مشابهی در حال حاضر وجود دارد: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"حالت بررسی قابلیت استفاده"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"تأخیر فشار طولانی کلید"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"طول مدت لرزش در اثر فشردن کلید"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"میزان صدای فشردن کلید"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"خواندن فایل فرهنگ لغت خارجی"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"فایل فرهنگ لغتی در پوشه دانلودها وجود ندارد"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"یک فایل فرهنگ لغت برای نصب انتخاب کنید"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"این فایل واقعاً برای <xliff:g id="LOCALE_NAME">%s</xliff:g> نصب شود؟"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"این فایل واقعاً برای <xliff:g id="LANGUAGE_NAME">%s</xliff:g> نصب شود؟"</string>
     <string name="error" msgid="8940763624668513648">"خطایی روی داد"</string>
     <string name="button_default" msgid="3988017840431881491">"پیش‌فرض"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"به <xliff:g id="APPLICATION_NAME">%s</xliff:g> خوش آمدید"</string>
@@ -211,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"بازخوانی"</string>
     <string name="last_update" msgid="730467549913588780">"آخرین به‌روزرسانی"</string>
     <string name="message_updating" msgid="4457761393932375219">"در حال بررسی به‌روزرسانی‌ها"</string>
-    <string name="message_loading" msgid="8689096636874758814">"در حال بارگیری…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"در حال بارگیری…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"فرهنگ‌ لغت اصلی"</string>
     <string name="cancel" msgid="6830980399865683324">"لغو"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"تنظیمات"</string>
     <string name="install_dict" msgid="180852772562189365">"نصب"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"لغو"</string>
     <string name="delete_dict" msgid="756853268088330054">"حذف"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"‏برای زبان انتخاب شده در دستگاه همراه شما فرهنگ لغتی موجود است.&lt;br/&gt; توصیه می‌کنیم فرهنگ لغت <xliff:g id="LANGUAGE">%1$s</xliff:g> را &lt;b&gt;دانلود کنید&lt;/b&gt; تا بهتر تایپ کنید.&lt;br/&gt; &lt;br/&gt; دانلود از طریق 3G ممکن است چند لحظه طول بکشد. اگر &lt;b&gt;طرح داده نامحدود&lt;/b&gt; نداشته باشید ممکن است برایتان هزینه داشته باشد.&lt;br/&gt; اگر مطمئن نیستید طرح داده شما چیست٬ توصیه می‌کنیم یک اتصال Wi-Fi پیدا کنید تا دانلود بطور خودکار شروع شود.&lt;br/&gt; &lt;br/&gt; نکته: می‌توانید فرهنگ لغت را با رفتن به منوی &lt;b&gt;زبان و ورودی&lt;/b&gt; در &lt;b&gt;تنظیمات&lt;/b&gt; در دستگاه همراه خود دانلود و حذف کنید."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"‏برای زبان انتخاب شده در دستگاه همراه شما فرهنگ لغتی در دسترس است.&lt;br/&gt; توصیه می‌کنیم برای بهبود بخشیدن به تجربه تایپ کردنتان، فرهنگ لغت <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> را &lt;b&gt;دانلود کنید&lt;/b&gt;.‏&lt;br/&gt; &lt;br/&gt; دانلود از طریق 3G ممکن است یک یا دو دقیقه طول بکشد. اگر &lt;b&gt;طرح داده نامحدود&lt;/b&gt; نداشته باشید، ممکن است هزینه‌هایی برای شما اعمال شوند.&lt;br/&gt; اگر مطمئن نیستید چه طرح داده‌ای دارید٬ توصیه می‌کنیم یک اتصال Wi-Fi بیابید تا دانلود به طور خودکار شروع شود.&lt;br/&gt; &lt;br/&gt; نکته: با رفتن به بخش &lt;b&gt;زبان و ورودی&lt;/b&gt; در منوی &lt;b&gt;تنظیمات&lt;/b&gt; دستگاهتان، فرهنگ‌های لغت را دانلود یا حذف کنید."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"هم‌اکنون بارگیری شود (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> مگابایت)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"‏دانلود ازطریق Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"یک فرهنگ لغت برای <xliff:g id="LANGUAGE">%1$s</xliff:g> موجود است"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"یک فرهنگ لغت برای <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> در دسترس است"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"برای مرور و دانلود فشار دهید"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"دانلود لغات پیشنهادی برای <xliff:g id="LANGUAGE">%1$s</xliff:g> به زودی شروع می‌شود."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"دانلود کردن پیشنهادات برای <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> به زودی شروع می‌شود."</string>
     <string name="version_text" msgid="2715354215568469385">"نسخه <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"افرودن"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"افزودن به فرهنگ‌ لغت"</string>
diff --git a/java/res/values-fi/strings-action-keys.xml b/java/res/values-fi/strings-action-keys.xml
index da7f111..b1146b6 100644
--- a/java/res/values-fi/strings-action-keys.xml
+++ b/java/res/values-fi/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Edel."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Valm."</string>
     <string name="label_send_key" msgid="482252074224462163">"Läh."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Haku"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Tauko"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Odota"</string>
 </resources>
diff --git a/java/res/values-fi/strings-config-important-notice.xml b/java/res/values-fi/strings-config-important-notice.xml
new file mode 100644
index 0000000..ad064c0
--- /dev/null
+++ b/java/res/values-fi/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Ehdotusten parannus viestinnän ja kirjoitettujen tietojen avulla"</string>
+</resources>
diff --git a/java/res/values-fi/strings-emoji-descriptions.xml b/java/res/values-fi/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..ad08bbd
--- /dev/null
+++ b/java/res/values-fi/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Copyright-merkki"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Rekisteröidyn tavaramerkin merkki"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Kaksi huutomerkkiä"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Huutomerkki ja kysymysmerkki"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Tavaramerkin merkki"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Tietolähde"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Nuoli vasemmalle ja oikealle"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Nuoli ylös ja alas"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Nuoli vasemmalle ylös"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Nuoli oikealle ylös"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Nuoli oikealle alas"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Nuoli vasemmalle alas"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Koukkunuoli vasemmalle"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Koukkunuoli oikealle"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Katso"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Tiimalasi"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Musta oikealle osoittava kaksoiskolmio"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Musta vasemmalle osoittava kaksoiskolmio"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Musta ylös osoittava kaksoiskolmio"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Musta alas osoittava kaksoiskolmio"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Herätyskello"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Tiimalasi ja hiekka"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Ympyröity iso M-kirjain"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Pieni musta neliö"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Pieni valkoinen neliö"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Musta oikealle osoittava kolmio"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Musta vasemmalle osoittava kolmio"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Suuri valkoinen neliö"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Suuri musta neliö"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Valkoinen neliö"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Musta neliö"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Musta aurinko"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Pilvi"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Musta puhelin"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Valittu kyselyruutu"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Sateenvarjo ja sadepisarat"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Kuuma juoma"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Valkoinen käsi, ylös osoittava etusormi"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Valkoinen hymyilevä naama"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Oinas"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Härkä"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Kaksoset"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Rapu"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leijona"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Neitsyt"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Vaaka"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Skorpioni"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Jousimies"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Kauris"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Vesimies"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Kalat"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Musta patasymboli"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Musta ristisymboli"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Musta herttasymboli"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Musta ruutusymboli"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Kuuma lähde"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Musta kierrätysmerkki"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Pyörätuolin symboli"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Ankkuri"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Varoitusmerkki"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Korkean jännitteen symboli"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Valkoinen ympyrä"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Musta ympyrä"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Jalkapallo"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Pesäpallo"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Lumiukko ilman lunta"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Aurinko pilven takana"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Käärmeenkantaja"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Kielletty ajosuunta"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Kirkko"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Suihkulähde"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Lippu reiässä"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Purjevene"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Teltta"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Polttoainepumppu"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Mustat sakset"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Valkoinen valintamerkki"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Lentokone"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Kirjekuori"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Nyrkki"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Pystyssä oleva kämmen"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Voitonmerkki"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Lyijykynä"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Musta kynänkärki"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Paksu valintamerkki"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Paksu kertomerkki"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Tuikkivat tähdet"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Kahdeksansakarainen tähti"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Kahdeksansakarainen musta tähti"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Lumihiutale"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Kipinä"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Ristimerkki"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Valkoinen ristimerkki mustalla taustalla"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Musta koristeellinen kysymysmerkki"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Valkoinen koristeellinen kysymysmerkki"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Valkoinen koristeellinen huutomerkki"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Paksu huutomerkki"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Väritetty sydän"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Paksu plusmerkki"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Paksu miinusmerkki"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Paksu jakomerkki"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Musta nuoli oikealle"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Silmukka"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Kaksoissilmukka"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Oikealle ja ylös osoittava nuoli"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Oikealle ja alas osoittava nuoli"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Musta nuoli vasemmalle"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Musta nuoli ylös"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Musta nuoli alas"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Suuri musta neliö"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Suuri valkoinen neliö"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Valkoinen tähti"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Paksu suuri ympyrä"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Aaltoviiva"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Vuorottelumerkki"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Ideogrammi onnittelu ympyrän sisällä"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Ideogrammi salaisuus ympyrän sisällä"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahjong-laatta, punainen lohikäärme"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Pelikortti, musta jokeri"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Veriryhmä A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Veriryhmä B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Veriryhmä O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Pysäköintialue"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Veriryhmä AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL neliön sisällä"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Sana COOL neliön sisällä"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Sana FREE neliön sisällä"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ID neliön sisällä"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Sana NEW neliön sisällä"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"NG neliön sisällä"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"OK neliön sisällä"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"SOS neliön sisällä"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Sana UP ja huutomerkki neliön sisällä"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"VS neliön sisällä"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Katakana täällä neliön sisällä"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Katakana palvelu neliön sisällä"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Ideogrammi maksuton neliön sisällä"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Ideogrammi varattu paikka neliön sisällä"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Ideogrammi kielto neliön sisällä"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Ideogrammi vapaita paikkoja neliön sisällä"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Ideogrammi hyväksyntä neliön sisällä"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Ideogrammi täynnä neliön sisällä"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Ideogrammi maksettu neliön sisällä"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Ideogrammi kuukausittain neliön sisällä"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Ideogrammi tilaus neliön sisällä"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Ideogrammi alennus neliön sisällä"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Ideogrammi liiketoiminta neliön sisällä"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Ideogrammi etu neliön sisällä"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Ideogrammi hyväksy ympyrän sisällä"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Pyörremyrsky"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Sumu"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Suljettu sateenvarjo"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Yömaisema"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Auringonnousu vuorilla"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Auringonnousu"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Kaupunkimaisema hämärässä"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Auringonlasku rakennusten taakse"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Sateenkaari"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Silta yöllä"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Vaahtopää"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Tulivuori"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Linnunrata"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Maapallo, Eurooppa – Afrikka"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Maapallo, Amerikat"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Maapallo Aasia – Australia"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Maapallo ja pituuspiirit"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Uudenkuun symboli"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Kasvavan kuunsirpin symboli"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Kuun ensimmäisen neljänneksen symboli"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Kasvavan puolikuun symboli"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Täysikuun symboli"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Vähenevän kuun symboli"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Kuun viimeisen neljänneksen symboli"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Vähenevän kuunsirpin symboli"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Kuunsirppi"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Uusikuu, jolla kasvot"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Ensimmäisen neljänneksen kuu, jolla kasvot"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Viimeisen neljänneksen kuu, jolla kasvot"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Täysikuu, jolla kasvot"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Aurinko, jolla kasvot"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Loistava tähti"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Tähdenlento"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Kastanja"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Taimi"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Havupuu"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Lehtipuu"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palmu"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Kaktus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Tulppaani"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Kirsikankukka"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Ruusu"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Kiinanruusu"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Auringonkukka"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Kukka"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Maissintähkä"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Riisintähkä"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Yrtti"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Neliapila"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Vaahteranlehti"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Pudonnut lehti"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Tuulessa leijaileva lehti"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Sieni"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Tomaatti"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Munakoiso"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Viinirypäleet"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Meloni"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Vesimeloni"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Mandariini"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Sitruuna"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banaani"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Ananas"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Punainen omena"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Vihreä omena"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Päärynä"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Persikka"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Kirsikat"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Mansikka"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hampurilainen"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Pitsapala"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Lihainen luu"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Kanankoipi"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Riisikeksi"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Riisipallo"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Keitetty riisi"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Curry ja riisi"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Höyryävä kulho"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spagetti"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Leipä"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Ranskalaiset perunat"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Jamssi"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Friteeratut katkaravut"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Surimiviipale, jossa pyörrekuvio"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Pehmytjäätelö"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Murskattu jää"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Jäätelö"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Donitsi"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Pikkuleipä"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Suklaapatukka"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Karamelli"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Tikkukaramelli"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Vanukas"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Hunajapurkki"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Kakkuviipale"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Bento-lounaslaatikko"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Ruokapata"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Ruoanlaitto"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Haarukka ja veitsi"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Teekuppi ilman korvaa"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Sake-pullo ja kuppi"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Viinilasi"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Cocktail-lasi"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Trooppinen drinkki"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Oluttuoppi"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Kippistävät olutmukit"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Tuttipullo"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Rusetti"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Lahjapaketti"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Syntymäpäiväkakku"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Kurpitsalyhty"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Joulukuusi"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Joulupukki"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Ilotulitus"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Tähtisadetikku"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Ilmapallo"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Konfettipommi"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Konfettipallo"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Tanabata-puu"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Liput ristikkäin"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Japanilainen mäntykoriste"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Japanilaiset nuket"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Kalanmuotoiset tuulipussit"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Tuulikello"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Kuujuhla"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Koululaukku"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Valmistujaislakki"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Karusellihevonen"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Maailmanpyörä"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Vuoristorata"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Onki ja kala"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Mikrofoni"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Elokuvakamera"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Elokuvateatteri"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Kuulokkeet"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Taiteilijan paletti"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Silinterihattu"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Sirkusteltta"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Lippu"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Klaffi"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Näyttämötaide"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Videopeli"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Napakymppi"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Peliautomaatti"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Biljardi"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Arpakuutio"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Keilailu"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Hanafuda-pelikortit"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Nuotti"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Nuotteja"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saksofoni"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Kitara"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Koskettimet"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trumpetti"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Viulu"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Nuottiviivasto"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Juoksupaita"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Tennismaila ja pallo"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Suksi ja mono"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Koripallo ja kori"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Ruutulippu"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Lumilautailija"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Juoksija"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Lainelautailija"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Palkintopokaali"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Laukkakilpailut"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Amerikkalainen jalkapallo"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Rugby-pallo"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Uimari"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Talo"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Talo ja puutarha"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Toimistorakennus"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Japanilainen postitoimisto"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Eurooppalainen postitoimisto"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Sairaala"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Pankki"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Pankkiautomaatti"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotelli"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Japanilainen love-hotelli"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Päivittäistavarakauppa"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Koulu"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Tavaratalo"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Tehdas"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Izakaya-ravintolan lyhty"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Japanilainen linna"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Eurooppalainen linna"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Rotta"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Hiiri"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Härkä"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Vesipuhveli"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Lehmä"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopardi"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Jänis"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Kissa"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Lohikäärme"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Krokotiili"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Valas"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Etana"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Käärme"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Hevonen"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Pässi"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Vuohi"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Lammas"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Apina"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Kukko"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Kana"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Koira"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Sika"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Villisika"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Norsu"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Mustekala"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Simpukankuori"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Hyönteinen"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Muurahainen"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Mehiläinen"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Leppäkerttu"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Kala"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Trooppinen kala"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Pallokala"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Kilpikonna"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Kuoriutuva kananpoika"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Kananpoika"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Eteenpäin katsova kananpoika"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Lintu"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Pingviini"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Villakoira"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Yksikyttyräinen kameli"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Kaksikyttyräinen kameli"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Delfiini"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Hiiren pää"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Lehmän pää"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Tiikerin pää"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Jäniksen pää"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Kissan pää"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Lohikäärmeen pää"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Valas ja vesisuihku"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Hevosen pää"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Apinan pää"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Koiran pää"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Sian pää"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Sammakon pää"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Hamsterin pää"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Suden pää"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Karhun pää"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Pandan pää"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Sian kärsä"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Tassunjäljet"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Silmät"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Korva"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nenä"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Suu"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Kieli"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Valkoinen käsi, ylös osoittava etusormi"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Valkoinen käsi, alas osoittava etusormi"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Valkoinen käsi, vasemmalle osoittava etusormi"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Valkoinen käsi, oikealle osoittava etusormi"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Käsi nyrkissä"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Vilkuttava käsi"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"OK-merkki"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Peukalo pystyssä"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Peukalo alaspäin"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Taputtavat kädet"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Avoimet kämmenet"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Kruunu"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Naisen hattu"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Silmälasit"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Kravatti"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"T-paita"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Farkut"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Leninki"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikinit"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Naisen paita"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Kukkaro"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Käsilaukku"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Pussukka"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Miesten kenkä"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Urheilujalkine"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Korkokenkä"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Naisen sandaali"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Naisen saappaat"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Jalanjäljet"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Rintakuvan ääriviivat"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Rintakuvien ääriviivat"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Poika"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Tyttö"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Mies"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Nainen"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Perhe"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Mies ja nainen käsi kädessä"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Kaksi miestä käsi kädessä"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Kaksi naista käsi kädessä"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Poliisi"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Nainen, jolla on pupun korvat"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Morsian hunnussa"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Vaaleahiuksinen henkilö"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Mies, jolla aasialainen päähine"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Mies, jolla turbaani"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Vanha mies"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Vanha nainen"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Vauva"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Rakennustyöläinen"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Prinsessa"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Japanilainen hirviö"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Japanilainen menninkäinen"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Kummitus"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Enkelivauva"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Ulkoavaruuden olento"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Avaruusolio"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Pikkupiru"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Kallo"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Asiakaspalvelija"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Vartija"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Tanssija"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Huulipuna"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Kynsilakka"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Kasvohieronta"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Hiusten leikkaus"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Parturin pylväs"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Ruisku"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pilleri"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Huulet"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Rakkauskirje"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Sormus"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Jalokivi"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Suudelma"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Kukkakimppu"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Pariskunta ja sydän"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Häät"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Sykkivä sydän"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Särkynyt sydän"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Kaksi sydäntä"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Säihkyvä sydän"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Kasvava sydän"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Sydän ja nuoli"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Sininen sydän"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Vihreä sydän"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Keltainen sydän"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Violetti sydän"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Sydän ja rusetti"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Pyörivät sydämet"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Sydänkoriste"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Vinoneliö, jossa on sisällä piste"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Hehkulamppu"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Vihan symboli"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Pommi"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Unen symboli"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Törmäyksen symboli"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Hikipisarat"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Pisara"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Liikkeen symboli"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Kakkakasa"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Hauis"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Huimauksen symboli"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Puhekupla"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Ajatuskupla"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Valkoinen kukka"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Sadan pisteen symboli"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Rahasäkki"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Valuutanvaihto"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Paksu dollarin symboli"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Luottokortti"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Seteli, jossa jenin symboli"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Seteli, jossa dollarin symboli"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Seteli, jossa euron symboli"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Seteli, jossa punnan symboli"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Setelinippu, jolla siivet"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Noususuuntainen kaavio, jossa jenin symboli"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Paikka"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Tietokone"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Salkku"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minilevy"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Levyke"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Optinen levy"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD-levy"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Tiedostokansio"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Avaa tiedostokansio"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Alhaalta käpristynyt sivu"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Sivu edestä"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Kalenteri"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Kalenteri, irtirevittävät sivut"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Kortihakemisto"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Noususuuntainen kaavio"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Laskusuuntainen kaavio"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Pylväskaavio"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Leikepöytä"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Nasta"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Pyöreäpäinen nasta"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Paperiliitin"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Suora viivain"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Kolmioviivain"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Kirjanmerkit"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Kierreselkäinen vihko"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Muistikirja"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Muistikirja, jossa koristekansi"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Suljettu kirja"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Avoin kirja"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Vihreä kirja"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Sininen kirja"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Oranssi kirja"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Kirjat"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Nimilappu"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Rulla"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Muistio"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Puhelimen kuuloke"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Hakulaite"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Faksi"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Satelliittiantenni"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Julkisen tilan kovaääninen"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Megafoni"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Lähtevien lokero"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Saapuvien lokero"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Paketti"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Sähköpostin symboli"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Saapuva kirjekuori"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Kirjekuori alaspäin osoittavan nuolen alla"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Suljettu postilaatikko lippu alhaalla"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Suljettu postilaatikko lippu ylhäällä"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Avattu postilaatikko lippu ylhäällä"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Avattu postilaatikko lippu alhaalla"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Postilaatikko"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Postitorvi"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Sanomalehti"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Matkapuhelin"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Matkapuhelin, jonka vasemmalla puolella on sitä osoittava nuoli"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Värinätila"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Matkapuhelin pois käytöstä"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Ei matkapuhelimia"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antennisymboli ja palkit"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Kamera"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Videokamera"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Televisio"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videokasetti"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Kaksi ristikkäistä oikealle osoittavaa nuolta"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Ympyrä, jossa myötäpäivään oikealle ja vasemmalle osoittavat nuolet"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Ympyrä, jossa myötäpäivään oikealle ja vasemmalle osoittavat nuolet ja jonka päällä ympyröity numero yksi"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Ympyrä, jossa myötäpäivään ylös ja alas osoittavat nuolet"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Ympyrä, jossa vastapäivään ylös ja alas osoittavat nuolet"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Alhaisen kirkkauden symboli"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Suuren kirkkauden symboli"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Yliviivattu kaiutin"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Kaiutin"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Kaiutin ja yksi ääniaalto"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Kaiutin ja kolme ääniaaltoa"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Akku"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Pistoke"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Vasemmalle osoittava suurennuslasi"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Oikealle osoittava suurennuslasi"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lukko ja mustekynä"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Suljettu lukko ja avain"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Avain"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Lukko"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Avoin lukko"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Soittokello"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Yliviivattu soittokello"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Kirjanmerkki"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Linkin symboli"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Valintanappi"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Sana BACK, jonka yläpuolella vasemmalle osoittava nuoli"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Sana END, jonka yläpuolella vasemmalle osoittava nuoli"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Sana ON ja huutomerkki, yläpuolella vasemmalle ja oikealle osoittava nuoli"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Sana SOON, jonka yläpuolella oikealle osoittava nuoli"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Sana TOP, jonka yläpuolella ylös osoittava nuoli"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Ikäraja 18 vuotta"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Näppäin 10"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Latinalaisten isojen kirjainten symboli"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Latinalaisten pienten kirjainten symboli"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Numeroiden symboli"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Symbolien symboli"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Latinalaisten kirjainten symboli"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Tuli"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Taskulamppu"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Jakoavain"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Vasara"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Mutteri ja pultti"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hochoveitsi"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistooli"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Mikroskooppi"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Kaukoputki"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Kristallipallo"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Kuusisakarainen tähti, jossa keskellä piste"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Japanilainen aloittelijan merkki"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Trident-symboli"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Musta neliönmuotoinen painike"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Valkoinen neliönmuotoinen painike"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Suuri punainen ympyrä"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Suuri sininen ympyrä"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Suuri oranssi vinoneliö"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Suuri sininen vinoneliö"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Pieni oranssi vinoneliö"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Pieni sininen vinoneliö"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Ylöspäin osoittava punainen kolmio"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Alaspäin osoittava punainen kolmio"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Ylöspäin osoittava pieni punainen kolmio"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Alaspäin osoittava pieni punainen kolmio"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Kellotaulu, kello yksi"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Kellotaulu, kello kaksi"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Kellotaulu, kello kolme"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Kellotaulu, kello neljä"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Kellotaulu, kello viisi"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Kellotaulu, kello kuusi"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Kellotaulu, kello seitsemän"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Kellotaulu, kello kahdeksan"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Kellotaulu, kello yhdeksän"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Kellotaulu, kello kymmenen"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Kellotaulu, kello yksitoista"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Kellotaulu, kello kaksitoista"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Kellotaulu, kello puoli kaksi"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Kellotaulu, kello puoli kolme"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Kellotaulu, kello puoli neljä"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Kellotaulu, kello puoli viisi"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Kellotaulu, kello puoli kuusi"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Kellotaulu, kello puoli seitsemän"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Kellotaulu, kello puoli kahdeksan"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Kellotaulu, kello puoli yhdeksän"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Kellotaulu, kello puoli kymmenen"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Kellotaulu, kello puoli yksitoista"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Kellotaulu, kello puoli kaksitoista"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Kellotaulu, kello puoli yksi"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Fuji-vuori"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokio-torni"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Vapaudenpatsas"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Japanin kartta"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moai-kivipatsas"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Virnistävä naama"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Virnistävä naama silmät sirrillään"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Naama ja ilon kyyneleet"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Hymyilevä naama, suu auki"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Hymyilevä naama, suu auki ja silmät sirrillään"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Hymyilevä naama, suu auki ja kylmä hiki"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Hymyilevä naama, suu auki ja silmät kiinni"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Hymyilevä naama ja sädekehä"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Hymyilevä naama ja sarvet"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Silmää iskevä naama"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Hymyilevä naama, silmät sirrillään"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Naama ja huulia lipova kieli"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Helpottunut naama"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Hymyilevä naama ja sydämenmuotoiset silmät"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Hymyilevä naama ja aurinkolasit"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Virnistävä naama"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Naamalla perusilme"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Ilmeetön naama"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Kyllästynyt naama"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Naama ja kylmä hiki"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Mietteliäs naama"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Ymmällä oleva naama"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Hämmentynyt naama"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Naama ja pusuhuulet"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Lentosuukko ja silmänisku"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Naama ja pusuhuulet, silmät sirrillään"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Naama ja pusuhuulet, silmät kiinni"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Kieltä näyttävä naama"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Silmää iskevä ja kieltä näyttävä naama"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Kieltä näyttävä naama, silmät kiinni"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Pettynyt naama"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Huolestunut naama"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Vihainen naama"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Mököttävä naama"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Itkevä naama"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Sinnikäs naama"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Voitokas naama"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Pettynyt mutta huojentunut naama"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Surullinen naama, suu auki"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Tuskainen naama"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Pelokas naama"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Uupunut naama"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Uninen naama"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Väsynyt naama"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Irvistävä naama"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Rajusti itkevä naama"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Naama, suu auki"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Pelokas naama"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Naama, suu auki ja kylmä hiki"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Pelosta kirkuva naama"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Hämmästynyt naama"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Punastunut naama"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Nukkuva naama"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Naama taju kankaalla"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Naama ilman suuta"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Naama ja suumaski"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Virnistävä kissan naama, silmät sirrillään"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Kissan naama ja ilon kyyneleet"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Hymyilevä kissan naama, suu auki"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Hymyilevä kissan naama, sydämen muotoiset silmät"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Kissan naama, kuivakka hymy"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Kissan naama, pusuhuulet ja silmät kiinni"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Mököttävä kissan naama"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Itkevä kissan naama"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Uupunut kissan naama"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Naama ja epäonnistumisen ele"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Naama, OK-ele"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Syvään kumartava henkilö"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Silmänsä peittänyt apina"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Korvansa peittänyt apina"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Suunsa peittänyt apina"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Iloinen henkilö yksi käsi pystyssä"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Juhliva henkilö molemmat kädet pystyssä"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Henkilö otsa kurtussa"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Henkilö ja mököttävä ilme"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Henkilö, jolla kämmenet yhdessä"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Raketti"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helikopteri"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Höyryveturi"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Junanvaunu"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Pikajuna"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Luotijuna"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Juna"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Kevyt raideliikenne"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Asema"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Raitiovaunu"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Raitiovaunun vaunu"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Bussi"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Bussi edestä"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Johdinauto"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Bussipysäkki"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Pikkubussi"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulanssi"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Paloauto"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Poliisiauto"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Poliisiauto edestä"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taksi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Taksi edestä"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Auto"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Auto edestä"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Maastoauto"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Kuorma-auto"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Kuorma-auto"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Traktori"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Yksiraiteinen rautatie"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Vuoristojuna"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Riippuva rautatie"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Köysirata"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Köysirata"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Laiva"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Soutuvene"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Pikavene"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Vaakasuuntaiset liikennevalot"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Pystysuuntaiset liikennevalot"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Rakennustyömaan merkki"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Poliisiauton hälytysvalo"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Kolmiolippu"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Ovi"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Kulku kielletty -merkki"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Tupakointisymboli"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Tupakointi kielletty"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Roskat roskakoriin -symboli"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Älä roskaa -symboli"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Juomaveden symboli"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Juomakelvottoman veden symboli"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Polkupyörä"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Pyöräily kielletty"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Pyöräilijä"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Maastopyöräilijä"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Jalankulkija"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Jalankulku kieletty"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Lapsia-varoitusmerkki"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Miehen symboli"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Naisen symboli"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"WC"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Vauvan symboli"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"WC"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"WC"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Suihku"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Kylpy"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Kylpyamme"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Passintarkastus"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Tulli"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Matkatavaroiden nouto"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Matkatavaroiden säilytys"</string>
+</resources>
diff --git a/java/res/values-fi/strings-letter-descriptions.xml b/java/res/values-fi/strings-letter-descriptions.xml
new file mode 100644
index 0000000..76daf47
--- /dev/null
+++ b/java/res/values-fi/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminiinisen järjestysluvun merkki"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro-merkki"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Maskuliinisen järjestysluvun merkki"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Kaksois-s"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A ja gravis"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A ja akuutti"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A ja tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A ja treema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A ja yläpuolinen ympyrä"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Ligatuuri ae"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C ja sedilji"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E ja gravis"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E ja akuutti"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E ja treema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I ja gravis"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I ja akuutti"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I ja treema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N ja tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O ja gravis"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O ja akuutti"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O ja tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O ja treema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O ja vinoviiva yli"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U ja gravis"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U ja akuutti"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U ja treema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y ja akuutti"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y ja treema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A ja pituusmerkki"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A ja lyhyysmerkki"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A ja ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C ja akuutti"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C ja yläpuolinen piste"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C ja hattu"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D ja hattu"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D ja poikkiviiva"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E ja pituusmerkki"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E ja lyhyysmerkki"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E ja yläpuolinen piste"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E ja ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E ja hattu"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G ja lyhyysmerkki"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G ja yläpuolinen piste"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G ja sedilji"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H ja poikkiviiva"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I ja tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I ja pituusmerkki"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I ja lyhyysmerkki"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I ja ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Pisteetön I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Ligatuuri ij"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K ja sedilji"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L ja akuutti"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L ja sedilji"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L ja hattu"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L ja piste keskellä"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L ja vino poikkiviiva"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N ja akuutti"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N ja sedilji"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N ja hattu"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, jota edeltää heittomerkki"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Äng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O ja pituusmerkki"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O ja lyhyysmerkki"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O ja kaksoisakuutti"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Ligatuuri oe"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R ja akuutti"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R ja sedilji"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R ja hattu"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S ja akuutti"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S ja sedilji"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S ja hattu"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T ja sedilji"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T ja hattu"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T ja poikkiviiva"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U ja tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U ja pituusmerkki"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U ja lyhyysmerkki"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U ja yläpuolinen ympyrä"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U ja kaksoisakuutti"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U ja ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y ja sirkumfleksi"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z ja akuutti"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z ja yläpuolinen piste"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z ja hattu"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Pitkä s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O ja sarvi"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U ja sarvi"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S ja alapuolinen pilkku"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T ja alapuolinen pilkku"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Švaa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A sekä sirkumfleksi ja akuutti"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A sekä sirkumfleksi ja gravis"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A sekä sirkumfleksi ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A sekä sirkumfleksi ja tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A sekä sirkumfleksi ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A sekä lyhyysmerkki ja akuutti"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A sekä lyhyysmerkki ja gravis"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A sekä lyhyysmerkki ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A sekä lyhyysmerkki ja tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A sekä lyhyysmerkki ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E ja tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E sekä sirkumfleksi ja akuutti"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E sekä sirkumfleksi ja gravis"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E sekä sirkumfleksi ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E sekä sirkumfleksi ja tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E sekä sirkumfleksi ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O sekä sirkumfleksi ja akuutti"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O sekä sirkumfleksi ja gravis"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O sekä sirkumfleksi ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O sekä sirkumfleksi ja tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O sekä sirkumfleksi ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O sekä sarvi ja akuutti"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O sekä sarvi ja gravis"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O sekä sarvi ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O sekä sarvi ja tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O sekä sarvi ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U sekä sarvi ja akuutti"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U sekä sarvi ja gravis"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U sekä sarvi ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U sekä sarvi ja tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U sekä sarvi ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y ja gravis"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y ja alapuolinen piste"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y ja yläpuolinen koukku"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y ja tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Ylösalainen huutomerkki"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Vasemmalle osoittava kaksinkertainen kulmalainausmerkki"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Rivinkeskinen piste"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Yläindeksi yksi"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Oikealle osoittava kaksinkertainen kulmalainausmerkki"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Ylösalainen kysymysmerkki"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Ylösalainen puolilainausmerkki"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Puolilainausmerkki"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Rivinalinen puolilainausmerkki"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Ylösalainen kokolainausmerkki"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Kokolainausmerkki"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Risti"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Kaksoisristi"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promillemerkki"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Yläpuolinen indeksointipilkku"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Kaksinkertainen yläpuolinen indeksointipilkku"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Vasemmalle osoittava kulmapuolilainausmerkki"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Oikealle osoittava kulmapuolilainausmerkki"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Yläindeksi neljä"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Yläindeksi latinalainen pienaakkonen n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peson merkki"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of -merkki"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Nuoli oikealle"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Nuoli alas"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tyhjä joukko"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Delta"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Pienempi tai yhtä suuri kuin -merkki"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Suurempi tai yhtä suuri kuin -merkki"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Musta tähti"</string>
+</resources>
diff --git a/java/res/values-fi/strings-talkback-descriptions.xml b/java/res/values-fi/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..bec46ca
--- /dev/null
+++ b/java/res/values-fi/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Liitä kuulokkeet, niin kuulet mitä näppäimiä painat kirjoittaessasi salasanaa."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Nykyinen teksti on %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Ei kirjoitettua tekstiä"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> korjaa sanan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sanaksi <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> suorittaa automaattisen korjauksen"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Tuntematon merkki"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Vaihto"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Lisää symboleita"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Vaihto"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbolit"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Vaihto"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Delete"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbolit"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Kirjaimet"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Numerot"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Asetukset"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Sarkain"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Välilyönti"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Äänisyöte"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Haku"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Piste"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Vaihda kieli"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Seuraava"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Edellinen"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Vaihto päällä"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock päällä"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolit-tila"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Lisää symboleita -tila"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Näppäimistötila"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Puhelintila"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Puhelinsymbolit-tila"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Näppäimistö on piilotettu"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Näytetään näppäimistö <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"päivämäärä"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"päivämäärä ja aika"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"sähköposti"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"viestit"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"numero"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"puhelin"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teksti"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"aika"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL-osoite"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Viimeisimmät"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Ihmiset"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Esineet"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Luonto"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Paikat"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbolit"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Hymiöt"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Suuraakkonen <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Suuraakkonen I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Suuraakkonen I ja yläpuolinen piste"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Tuntematon symboli"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Tuntematon emoji-merkki"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Vaihtoehtoisia merkkejä on saatavilla"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Vaihtoehtoiset merkit hylättiin"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Vaihtoehtoisia ehdotuksia on saatavilla"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Vaihtoehtoiset ehdotukset hylättiin"</string>
+</resources>
diff --git a/java/res/values-fi/strings.xml b/java/res/values-fi/strings.xml
index a58bfac..5f2ef6a 100644
--- a/java/res/values-fi/strings.xml
+++ b/java/res/values-fi/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Syöttövalinnat"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Tutkimuslokin komennot"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Hae yht.tietojen nimiä"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Oikeinkirjoituksen tarkistus käyttää yhteystietojasi."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Käytä värinää näppäimiä painettaessa"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Toista ääni näppäimiä painettaessa"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ponnahdusikkuna painalluksella"</string>
-    <string name="general_category" msgid="1859088467017573195">"Yleiset"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Tekstin korjaus"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Piirtokirjoitus"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Muut vaihtoehdot"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Lisäasetukset"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Valinnat asiantuntijoille"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Syöttöasetukset"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Ulkonäkö"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Kieliasetukset"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Piirtokirjoitusasetukset"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Tekstin korjaus"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Lisäasetukset"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Käytä toista syöttötapaa"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kielenvaihtonäppäin kattaa myös muut syöttötavat"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Kielenvaihtonäppäin"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Järjestelmän oletusarvo"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Ehdota yht.tietojen nimiä"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Käytä yhteystietojen nimiä ehdotuksissa ja korjauksissa"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Räätälöidyt ehdotukset"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Paranna sovellusta <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Kaksoisvälilyönti = piste"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Välilyönnin kaksoisnapautus lisää tekstiin pisteen ja välilyönnin"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automaattiset isot kirjaimet"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Näytä eleen jälki"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynaaminen kelluva esikatselu"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Näytä ehdotettu sana piirron aikana"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: tallennettu"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Liitä kuulokkeet, niin kuulet mitä näppäimiä painat kirjoittaessasi salasanaa."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Nykyinen teksti on %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Ei kirjoitettua tekstiä"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> korjaa sanan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sanaksi <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> suorittaa automaattisen korjauksen"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Näppäimen koodi %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Vaihto"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Vaihto päällä (poista käytöstä napauttamalla)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock päällä (poista käytöstä napauttamalla)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Poista"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symbolit"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Kirjaimet"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numerot"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Asetukset"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Sarkain"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Välilyönti"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Äänisyöte"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Hymiö"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Takaisin"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Haku"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Piste"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Vaihda kieli"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Seuraava"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Edellinen"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Vaihto päällä"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock päällä"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Vaihto pois käytöstä"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbolit-tila"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Näppäimistötila"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Puhelintila"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Puhelinsymbolit-tila"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Näppäimistö on piilotettu"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Näytetään <xliff:g id="MODE">%s</xliff:g>-näppäimistö"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"päivämäärä"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"päivämäärä ja aika"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"sähköposti"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"viestit"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"numero"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"puhelin"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teksti"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"aika"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL-osoite"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Ilmausele"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Lisää välilyöntejä eleiden aikana liukumalla välilyöntinäppäim."</string>
     <string name="voice_input" msgid="3583258583521397548">"Äänisyöteavain"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Päänäppäimistössä"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Symbolinäppäim."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Ei käytössä"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr. päänäppäim."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. symbolinäpp."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Äänisyöte ei käyt."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Äänen syöttötapoja ei ole otettu käyttöön. Tarkista Kieli ja syöttötapa -asetukset."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Määritä syöttötavat"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Syöttökielet"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Lähetä palautetta"</string>
     <string name="select_language" msgid="3693815588777926848">"Syöttökielet"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Tallenna koskettamalla uudelleen"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Sanakirja saatavilla"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Ota käyttäjäpalaute käyttöön"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Auta parantamaan tätä syöttötavan muokkausohjelmaa lähettämällä automaattisesti käyttötietoja ja kaatumisraportteja."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Näppäimistöteema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"englanti (Iso-Britannia)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"englanti (Yhdysvallat)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"espanja (Yhdysvallat)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"englanti (Iso-Br.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"englanti (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"espanja (Yhdysvallat) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (perinteinen)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"englanti (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"englanti (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"espanja (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (perinteinen)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillinen)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latinalainen)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Ei kieltä (aakkoset)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Aakkoset (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Aakkoset (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Aakkoset (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Aakkoset (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Väriteema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Valkoinen"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Sininen"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Näppäimistöteema"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Valkoinen"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Sininen"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Tumma"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Vaalea"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Muokatut syöttötyylit"</string>
     <string name="add_style" msgid="6163126614514489951">"Lisää tyyli"</string>
     <string name="add" msgid="8299699805688017798">"Lisää"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Ota käyttöön"</string>
     <string name="not_now" msgid="6172462888202790482">"Ei nyt"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Syöttötyyli on jo olemassa: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Käytettävyystutkimustila"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Pitkän painalluksen viive"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Painalluksen värinän kesto"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Näppäinpainalluksen äänenvoim."</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Lue ulkoista sanakirjatiedostoa"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Lataukset-kansiossa ei ole sanakirjatiedostoja"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Valitse asennettava sanakirjatiedosto"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Haluatko asentaa tämä tiedoston kielelle <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Haluatko asentaa tämän tiedoston kielelle <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Tapahtui virhe"</string>
     <string name="button_default" msgid="3988017840431881491">"Oletusarvot"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Tervetuloa käyttämään sovellusta <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Päivitä"</string>
     <string name="last_update" msgid="730467549913588780">"Päivitetty viimeksi"</string>
     <string name="message_updating" msgid="4457761393932375219">"Tarkistetaan päivityksiä"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Ladataan…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Ladataan…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Pääsanakirja"</string>
     <string name="cancel" msgid="6830980399865683324">"Peruuta"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Asetukset"</string>
     <string name="install_dict" msgid="180852772562189365">"Asenna"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Peruuta"</string>
     <string name="delete_dict" msgid="756853268088330054">"Poista"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Laitteesi käyttökielelle on saatavilla sanakirja.&lt;br/&gt; Suosittelemme <xliff:g id="LANGUAGE">%1$s</xliff:g>-sanakirjan &lt;b&gt;lataamista&lt;/b&gt;, sillä se helpottaa laitteella kirjoittamista.&lt;br/&gt; &lt;br/&gt; Lataus kestää useimmiten muutaman minuutin 3G-yhteydellä. Latauksesta saatetaan periä maksu, ellei käytössäsi ole &lt;b&gt;rajoittamatonta tiedonsiirtopakettia&lt;/b&gt;.&lt;br/&gt; Jos et ole varma tiedonsiirtosopimuksesi tyypistä, etsi käyttöösi wifi-yhteys, niin lataus alkaa automaattisesti.&lt;br/&gt; &lt;br/&gt; Vinkki: voit ladata ja poistaa sanakirjoja mobiililaitteesi &lt;b&gt;Asetukset&lt;/b&gt;-valikon &lt;b&gt;Kieli ja syöttötapa&lt;/b&gt; -osiossa."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Laitteesi käyttökielelle on saatavilla sanakirja.&lt;br/&gt; Suosittelemme <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-sanakirjan &lt;b&gt;lataamista&lt;/b&gt;, sillä se helpottaa laitteella kirjoittamista.&lt;br/&gt; &lt;br/&gt; Lataus kestää useimmiten muutaman minuutin 3G-yhteydellä. Latauksesta saatetaan periä maksu, ellei käytössäsi ole &lt;b&gt;rajoittamatonta tiedonsiirtopakettia&lt;/b&gt;.&lt;br/&gt; Jos et ole varma tiedonsiirtosopimuksesi tyypistä, etsi käyttöösi wifi-yhteys, niin lataus alkaa automaattisesti.&lt;br/&gt; &lt;br/&gt; Vinkki: voit ladata ja poistaa sanakirjoja mobiililaitteesi &lt;b&gt;Asetukset&lt;/b&gt;-valikon &lt;b&gt;Kieli ja syöttötapa&lt;/b&gt; -osiossa."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Lataa nyt (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> Mt)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Lataa wifi-yhteydellä"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Kielen <xliff:g id="LANGUAGE">%1$s</xliff:g> sanakirja on saatavilla"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Sanakirja on saatavilla kielelle <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Paina tätä, jos haluat tarkastella kohdetta ja ladata sen"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Ladataan: ehdotuksia näytetään pian kielellä <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Ladataan: kielen <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ehdotukset ovat pian käytettävissä."</string>
     <string name="version_text" msgid="2715354215568469385">"Versio <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Lisää"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Lisää sanakirjaan"</string>
diff --git a/java/res/values-fr-rCA/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-fr-rCA/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..e4c30c4
--- /dev/null
+++ b/java/res/values-fr-rCA/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2009, 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">
+    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
+    <!-- This is similar to French with the exception of "!" "?" and ";" which do not take a space before in Canadian French. Note that ":" does take a space before according to Canadian rules. -->
+    <string name="symbols_preceded_by_space">([{&amp;:</string>
+    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
+    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
+    <!-- Symbols that separate words -->
+    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
+    <string name="symbols_word_separators">"&#x0009;&#x0020;&#x000A;&#x00A0;"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
+    <!-- Word connectors -->
+    <string name="symbols_word_connectors">\'-</string>
+</resources>
diff --git a/java/res/values-fr-rCA/donottranslate.xml b/java/res/values-fr-rCA/donottranslate.xml
deleted file mode 100644
index 21f18d8..0000000
--- a/java/res/values-fr-rCA/donottranslate.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2009, 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">
-    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
-    <!-- This is similar to French with the exception of "!" "?" and ";" which do not take a space before in Canadian French. Note that ":" does take a space before according to Canadian rules. -->
-    <string name="symbols_preceded_by_space">([{&amp;:</string>
-    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
-    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
-    <!-- Symbols that separate words -->
-    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
-    <string name="symbols_word_separators">"&#x0009;&#x0020;\n"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
-    <!-- Word connectors -->
-    <string name="symbols_word_connectors">\'-</string>
-</resources>
diff --git a/java/res/values-fr-rCA/strings-action-keys.xml b/java/res/values-fr-rCA/strings-action-keys.xml
index bb5568e..1823416 100644
--- a/java/res/values-fr-rCA/strings-action-keys.xml
+++ b/java/res/values-fr-rCA/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Préc."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Term."</string>
     <string name="label_send_key" msgid="482252074224462163">"Env."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Rech."</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Att."</string>
 </resources>
diff --git a/java/res/values-fr-rCA/strings-config-important-notice.xml b/java/res/values-fr-rCA/strings-config-important-notice.xml
new file mode 100644
index 0000000..2247ec6
--- /dev/null
+++ b/java/res/values-fr-rCA/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Apprendre de vos communic. et données entrées pour amél. suggestions"</string>
+</resources>
diff --git a/java/res/values-fr-rCA/strings-letter-descriptions.xml b/java/res/values-fr-rCA/strings-letter-descriptions.xml
new file mode 100644
index 0000000..1c1f62e
--- /dev/null
+++ b/java/res/values-fr-rCA/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicateur ordinal féminin"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Symbole micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicateur ordinal masculin"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Eszett"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"a, accent grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"a, accent aigu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"a, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"a, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"a, tréma"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"a, rond en chef"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"e dans l\'a"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"c, cédille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"e, accent grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"e, accent aigu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"e, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"e, tréma"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"i, accent grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"i, accent aigu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"i, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"i, tréma"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Ed"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"n, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"o, accent grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"o, accent aigu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"o, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"o, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"o, tréma"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"o, barré"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"u, accent grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"u, accent aigu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"u, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"u, tréma"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"y, accent aigu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"y, tréma"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"a, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"a, brève"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"a, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"c, accent aigu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"c, accent circonflexe"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"c, point en chef"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"c, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"d, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"d, barré"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"e, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"e, brève"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"e, point en chef"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"e, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"e, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"g, accent circonflexe"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"g, brève"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"g, point en chef"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"g, cédille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"h, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"h, barré"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"i, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"i, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"i, bref"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"i, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"i, sans point"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"i, j, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"j, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"k, cédille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"l, accent aigu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"l, cédille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"l, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"l, point médian"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"l, barré"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"n, accent aigu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"n, cédille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"n, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"n, précédé d\'une apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"o, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"o, brève"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double accent aigu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"e dans l\'o"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"r, accent aigu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"r, cédille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"r, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"s, accent aigu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"s, accent circonflexe"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"s, cédille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"s, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"t, cédille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"t, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"t, barré"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"u, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"u, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"u, brève"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"u, rond en chef"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"u, double accent aigu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"u, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"w, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"y, accent circonflexe"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"z, accent aigu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"z, point en chef"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"o, cornu"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"u, cornu"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"s, virgule souscrite"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"t, virgule souscrite"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"a, point souscrit"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"a, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"a, accent circonflexe et accent aigu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"a, accent circonflexe et accent grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"a, accent circonflexe et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"a, accent circonflexe et tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"a, accent circonflexe et point souscrit"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"a, brève et accent aigu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"a, brève et accent grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"a, brève et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"a, brève et tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"a, brève et point souscrit"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"e, point souscrit"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"e, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"e, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"e, accent circonflexe et accent aigu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"e, accent circonflexe et accent grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"e, accent circonflexe et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"e, accent circonflexe et tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"e, accent circonflexe et point souscrit"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"i, crochet en chef"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"i, point souscrit"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"o, point souscrit"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"o, crochet en chef"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"o, accent circonflexe et accent aigu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"o, accent circonflexe et accent grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"o, accent circonflexe et crochet en chef"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"o, accent circonflexe et tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"o, accent circonflexe et point souscrit"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"o, cornu et accent aigu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"o, cornu et accent grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"l, cornu et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"o, cornu et tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"o, cornu et point souscrit"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"u, point souscrit"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"u, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"u, cornu et accent aigu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"u, cornu et accent grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"u, cornu et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"u, cornu et tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"u, cornu et point souscrit"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"y, accent grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"y, point souscrit"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"y, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Point d\'exclamation inversé"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Chevron double ouvrant"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Point médian"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"un, exposant"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Chevron double fermant"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Point d\'interrogation inversé"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Guillemet simple ouvrant"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Guillemet simple fermant"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Guillemet simple fermant bas"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Guillemet double ouvrant"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Guillemet double fermant"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obèle"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double obèle"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Symbole pour mille"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Chevron simple ouvrant"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Chevron simple fermant"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"quatre, exposant"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Lettre minuscule latine N, exposant"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Symbole du peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"À l\'attention de"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Flèche vers la droite"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Flèche vers le bas"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Ensemble vide"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incrément"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Inférieur ou égal"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Supérieur ou égal"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Étoile noire"</string>
+</resources>
diff --git a/java/res/values-fr-rCA/strings-talkback-descriptions.xml b/java/res/values-fr-rCA/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..df644c0
--- /dev/null
+++ b/java/res/values-fr-rCA/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Branchez des écouteurs pour entendre l\'énoncé à haute voix des touches lors de l\'entrée du mot de passe."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Le texte actuel est %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Aucun texte entré"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet de remplacer <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> par <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet d\'effectuer une correction automatique"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Caractère inconnu"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Majuscule"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Autres symboles"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Majuscule"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboles"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Majuscule"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Supprimer"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboles"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Lettres"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Chiffres"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Paramètres"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulation"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espace"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Entrée vocale"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Retour"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Recherche"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Point"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Changer de langue"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Suivante"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Précédente"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Touche Maj activée"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Verrouillage des majuscules activé"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode Symboles"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Mode Autres symboles"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode Lettres"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode Téléphone"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode Symboles du téléphone"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Clavier masqué"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Affichage du clavier <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"date"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"date et heure"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"courriel"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"messagerie"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"numérique"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"téléphone"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"texte"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"heure"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Récents"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Personnes"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objets"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Nature"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lieux"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboles"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Émoticônes"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> majuscule"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I majuscule"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I majuscule, point en chef"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Symbole inconnu"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji inconnu"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Des caractères supplémentaires sont proposés"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Les caractères supplémentaires sont ignorés"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Des suggestions supplémentaires sont proposées"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Les suggestions supplémentaires sont ignorées"</string>
+</resources>
diff --git a/java/res/values-fr-rCA/strings.xml b/java/res/values-fr-rCA/strings.xml
index 2551ce9..fd34ba9 100644
--- a/java/res/values-fr-rCA/strings.xml
+++ b/java/res/values-fr-rCA/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Options de saisie"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Commandes journaux rech."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Rechercher noms contacts"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Correcteur orthographique utilise entrées de liste de contacts."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrer à chaque touche"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Son à chaque touche"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Agrandir les caractères"</string>
-    <string name="general_category" msgid="1859088467017573195">"Général"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Correction du texte"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Saisie gestuelle"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Autres options"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Paramètres avancés"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Options destinées aux experts"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Autres modes de saisie"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La touche de sélection de langue couvre d\'autres modes de saisie"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Touche de sélection de langue"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Paramètres par défaut"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Proposer noms de contacts"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utiliser des noms de contacts pour les suggestions et corrections"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Suggestions personnalisées"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Améliorer l\'application <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Point et espace"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Appuyez deux fois sur la barre d\'espace pour insérer un point et une espace"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Majuscules automatiques"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Afficher le tracé du geste"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Aperçu flottant dynamique"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Afficher le mot suggéré lors des gestes"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : enregistré"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Branchez des écouteurs pour entendre l\'énoncé à haute voix des touches lors de la saisie du mot de passe."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Le texte actuel est %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Aucun texte saisi"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"La touche <xliff:g id="KEY">%1$s</xliff:g> permet de corriger « <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> » par « <xliff:g id="CORRECTED">%3$s</xliff:g> »"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"La touche <xliff:g id="KEY">%1$s</xliff:g> permet d\'activer la correction automatique"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Code touche %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Maj"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Touche Maj activée (appuyer pour désactiver)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Verrouillage des majuscules activé (appuyer pour désactiver)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Supprimer"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboles"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Lettres"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Nombres"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Paramètres"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Onglet"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Espace"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Saisie vocale"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Émoticône"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Renvoyer"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Rechercher"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Point"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Changer de langue"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Suivant"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Précédent"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Touche Maj activée"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Verrouillage des majuscules activé"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Touche Maj désactivée"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Mode Symboles"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode Lettres"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode Téléphone"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode Symboles du téléphone"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Clavier masqué"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Affichage du clavier <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"Date"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"Date et heure"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"Courriel"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"SMS/MMS"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"Nombre"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"Numéro de téléphone"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"Texte"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"Heure"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Geste multiterme"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Insérer une espace avec barre d\'espace lors de l\'entrée gestuelle"</string>
     <string name="voice_input" msgid="3583258583521397548">"Touche de saisie vocale"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Sur le clavier principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sur clavier symboles"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Désactiver"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micro sur le clavier principal"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro sur le clavier des symboles"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Saisie vocale désactivée"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Aucun mode d\'entrée vocale n\'a été activé. Vérifiez les paramètres de langues et d\'entrée de texte."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configurer les modes de saisie"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Envoyer des commentaires"</string>
     <string name="select_language" msgid="3693815588777926848">"Langues de saisie"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Appuyer de nouveau pour enregistrer"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dictionnaire disponible"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Autoriser les commentaires des utilisateurs"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Contribuer à l\'amélioration de cet éditeur du mode de saisie grâce à l\'envoi automatique de statistiques d\'utilisation et de rapports d\'erreur"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Thème du clavier"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Anglais (britannique)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Anglais (États-Unis)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Espagnol (États-Unis)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Anglais (Royaume-Uni) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Anglais (États-Unis) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Espagnol, États-Unis (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditionnel)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"anglais (Royaume-Uni) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"anglais (États-Unis) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"espagnol (États-Unis) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditionnel)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cyrillique)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Aucune langue (alphabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alphabet latin (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alphabet latin (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alphabet latin (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alphabet latin (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Modèle de couleurs"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Blanc"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Bleu"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Styles saisie personnalisés"</string>
     <string name="add_style" msgid="6163126614514489951">"Ajouter style"</string>
     <string name="add" msgid="8299699805688017798">"Ajouter"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Activer"</string>
     <string name="not_now" msgid="6172462888202790482">"Pas maintenant"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Le style de saisie suivant existe déjà : <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>."</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'étude de l\'utilisabilité"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Délai appui prolongé sur touche"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Durée vibration press. touche"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume pression de touche"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Lire un fichier de dictionnaire externe"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Aucun fichier de dictionnaire dans le dossier \"Téléchargements\""</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Sélectionner un fichier de dictionnaire à installer"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Installer ce fichier pour la langue \"<xliff:g id="LOCALE_NAME">%s</xliff:g>\" ?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Installer ce fichier pour la langue « <xliff:g id="LANGUAGE_NAME">%s</xliff:g> »?"</string>
     <string name="error" msgid="8940763624668513648">"Une erreur s\'est produite"</string>
     <string name="button_default" msgid="3988017840431881491">"Par défaut"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Bienvenue dans <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Actualiser"</string>
     <string name="last_update" msgid="730467549913588780">"Dernière mise à jour"</string>
     <string name="message_updating" msgid="4457761393932375219">"Recherche de mises à jour en cours…"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Chargement en cours..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Chargement en cours…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Dictionnaire principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Annuler"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Paramètres"</string>
     <string name="install_dict" msgid="180852772562189365">"Installer"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Annuler"</string>
     <string name="delete_dict" msgid="756853268088330054">"Supprimer"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Un dictionnaire est disponible pour la langue sélectionnée sur votre appareil mobile.&lt;br/&gt; Nous vous invitons à &lt;b&gt;télécharger&lt;/b&gt; le dictionnaire <xliff:g id="LANGUAGE">%1$s</xliff:g> pour faciliter votre saisie.&lt;br/&gt; &lt;br/&gt; Le téléchargement peut prendre une à deux minutes via une connexion 3G. Des frais peuvent s\'appliquer si vous ne disposez pas d\'un &lt;b&gt;forfait Internet illimité&lt;/b&gt;.&lt;br/&gt; Si vous n\'êtes pas sûr de votre forfait, nous vous conseillons d\'utiliser une connexion Wi-Fi pour lancer automatiquement le téléchargement.&lt;br/&gt; &lt;br/&gt; Astuce : Vous pouvez télécharger et supprimer des dictionnaires dans la section &lt;b&gt;Langue et saisie&lt;/b&gt; du menu &lt;b&gt;Paramètres&lt;/b&gt; de votre appareil mobile."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Un dictionnaire est offert pour la langue sélectionnée sur votre appareil mobile.&lt;br/&gt; Nous vous invitons à &lt;b&gt;télécharger&lt;/b&gt; le dictionnaire pour la langue <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> pour faciliter votre réaction de texte.&lt;br/&gt; &lt;br/&gt; Le téléchargement peut prendre une à deux minutes par connexion 3G. Des frais peuvent s\'appliquer si vous ne disposez pas d\'un &lt;b&gt;forfait Internet illimité&lt;/b&gt;.&lt;br/&gt; Si vous n\'êtes pas sûr de votre forfait, nous vous conseillons d\'utiliser une connexion Wi-Fi pour lancer automatiquement le téléchargement.&lt;br/&gt; &lt;br/&gt; Astuce : Vous pouvez télécharger et supprimer des dictionnaires dans la section &lt;b&gt;Langue et entrée&lt;/b&gt; du menu &lt;b&gt;Paramètres&lt;/b&gt; de votre appareil mobile."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Télécharger (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> Mo)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Télécharger via Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Un dictionnaire est disponible en <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Un dictionnaire est offert pour la langue suivante : <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Appuyez ici pour consulter et télécharger le dictionnaire."</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"En cours de téléchargement. Des suggestions pour la langue suivante seront bientôt disponibles : <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Téléchargement en cours… Les suggestions seront bientôt offertes pour la langue suivante : <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Ajouter"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Ajouter au dictionnaire"</string>
diff --git a/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..5a49142
--- /dev/null
+++ b/java/res/values-fr/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2009, 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">
+    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
+    <string name="symbols_preceded_by_space">([{&amp;;:!?</string>
+    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
+    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
+    <!-- Symbols that behave like a single punctuation when typed next to each other -->
+    <string name="symbols_clustering_together">!?</string>
+    <!-- Symbols that separate words -->
+    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
+    <string name="symbols_word_separators">"&#x0009;&#x0020;&#x000A;&#x00A0;"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
+    <!-- Word connectors -->
+    <string name="symbols_word_connectors">\'-</string>
+</resources>
diff --git a/java/res/values-fr/donottranslate.xml b/java/res/values-fr/donottranslate.xml
deleted file mode 100644
index f064411..0000000
--- a/java/res/values-fr/donottranslate.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2009, 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">
-    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
-    <string name="symbols_preceded_by_space">([{&amp;;:!?</string>
-    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
-    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
-    <!-- Symbols that separate words -->
-    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
-    <string name="symbols_word_separators">"&#x0009;&#x0020;\n"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
-    <!-- Word connectors -->
-    <string name="symbols_word_connectors">\'-</string>
-</resources>
diff --git a/java/res/values-fr/strings-action-keys.xml b/java/res/values-fr/strings-action-keys.xml
index 1c36552..3dcdf75 100644
--- a/java/res/values-fr/strings-action-keys.xml
+++ b/java/res/values-fr/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Préc."</string>
     <string name="label_done_key" msgid="7564866296502630852">"OK"</string>
     <string name="label_send_key" msgid="482252074224462163">"Envoyer"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Rech."</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Attente"</string>
 </resources>
diff --git a/java/res/values-fr/strings-config-important-notice.xml b/java/res/values-fr/strings-config-important-notice.xml
new file mode 100644
index 0000000..82bdcf5
--- /dev/null
+++ b/java/res/values-fr/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Améliorer suggestions en fonction des messages et données saisies"</string>
+</resources>
diff --git a/java/res/values-fr/strings-letter-descriptions.xml b/java/res/values-fr/strings-letter-descriptions.xml
new file mode 100644
index 0000000..edbe9fd
--- /dev/null
+++ b/java/res/values-fr/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicateur ordinal féminin"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Symbole micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicateur ordinal masculin"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Eszett"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, accent grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, accent aigu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, tréma"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, rond en chef"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"E dans l\'A"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cédille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, accent grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, accent aigu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, tréma"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, accent grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, accent aigu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, tréma"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, accent grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, accent aigu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, tréma"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, barré"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, accent grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, accent aigu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, tréma"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, accent aigu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, tréma"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, brève"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, accent aigu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, accent circonflexe"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, point en chef"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, barré"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, brève"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, point en chef"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, accent circonflexe"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, brève"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, point en chef"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cédille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, barré"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, bref"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I, sans point"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cédille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, accent aigu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cédille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, point médian"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, barré"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, accent aigu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cédille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, précédé par une apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, brève"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double accent aigu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"E dans l\'O"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, accent aigu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cédille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, accent aigu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, accent circonflexe"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cédille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cédille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, barré"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, brève"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, rond en chef"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double accent aigu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, accent circonflexe"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, accent aigu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, point en chef"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S long"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, cornu"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, cornu"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, virgule souscrite"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, virgule souscrite"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, point souscrit"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, accent circonflexe et accent aigu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, accent circonflexe et accent grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, accent circonflexe et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, accent circonflexe et tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, accent circonflexe et point souscrit"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, brève et accent aigu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, brève et accent grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, brève et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, brève et tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, brève et point souscrit"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, point souscrit"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, accent circonflexe et accent aigu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, accent circonflexe et accent grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, accent circonflexe et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, accent circonflexe et tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, accent circonflexe et point souscrit"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, crochet en chef"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, point souscrit"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, point souscrit"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, crochet en chef"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, accent circonflexe et accent aigu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, accent circonflexe et accent grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, accent circonflexe et crochet en chef"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, accent circonflexe et tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, accent circonflexe et point souscrit"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, cornu et accent aigu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, cornu et accent grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, cornu et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, cornu et tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, cornu et point souscrit"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, point souscrit"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, cornu et accent aigu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, cornu et accent grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, cornu et crochet en chef"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, cornu et tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, cornu et point souscrit"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, accent grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, point souscrit"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, crochet en chef"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Point d\'exclamation inversé"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Chevron double ouvrant"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Point médian"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Exposant un"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Chevron double fermant"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Point d\'interrogation inversé"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Guillemet simple ouvrant"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Guillemet simple fermant"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Guillemet simple fermant bas"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Guillemet double ouvrant"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Guillemet double fermant"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obèle"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double obèle"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Symbole pour mille"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Chevron simple ouvrant"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Chevron simple fermant"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Exposant quatre"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Exposant lettre minuscule latine N"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Symbole du peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"À l\'attention de"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Flèche vers la droite"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Flèche vers le bas"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Ensemble vide"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incrément"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Inférieur ou égal"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Supérieur ou égal"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Étoile noire"</string>
+</resources>
diff --git a/java/res/values-fr/strings-talkback-descriptions.xml b/java/res/values-fr/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..7ae2056
--- /dev/null
+++ b/java/res/values-fr/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Branchez des écouteurs pour entendre l\'énoncé à haute voix des touches lors de la saisie du mot de passe."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Le texte actuel est \"%s\"."</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Aucun texte saisi"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet de remplacer \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" par \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\"."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"La touche <xliff:g id="KEY_NAME">%1$s</xliff:g> permet d\'effectuer une correction automatique."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Caractère inconnu."</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Maj"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Autres symboles"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Maj"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboles"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Maj"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Supprimer"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboles"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Lettres"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Chiffres"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Paramètres"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulation"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espace"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Saisie vocale"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Entrée"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Recherche"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Point"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Changer de langue"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Suivant"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Précédent"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"La touche Maj a bien été activée."</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Le verrouillage des majuscules a bien été activé."</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode Symboles"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Mode Autres symboles"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode Lettres"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode Téléphone"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode Symboles du téléphone"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Clavier masqué"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Affichage du clavier <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"Date"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"Date et heure"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"Adresse e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"SMS/MMS"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"Chiffre"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"Numéro de téléphone"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"Texte"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"Heure"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Récents"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Personnes"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objets"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Nature"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lieux"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboles"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Émoticônes"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> majuscule"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I majuscule"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I majuscule, point en chef"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Symbole inconnu."</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji inconnu."</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Des caractères supplémentaires sont disponibles."</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Les caractères supplémentaires sont ignorés."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Des suggestions supplémentaires sont disponibles."</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Les suggestions supplémentaires sont ignorées."</string>
+</resources>
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index b877db0..9cefdad 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Options de saisie"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Commandes journaux rech."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Rechercher noms contacts"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Correcteur orthographique utilise entrées de liste de contacts."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrer à chaque touche"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Son à chaque touche"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Agrandir les caractères"</string>
-    <string name="general_category" msgid="1859088467017573195">"Général"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Correction du texte"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Saisie gestuelle"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Autres options"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Paramètres avancés"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Options destinées aux experts"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Autres modes de saisie"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"La touche de sélection de langue couvre d\'autres modes de saisie."</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Touche de sélection de langue"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Paramètres par défaut"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Proposer noms de contacts"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utiliser des noms de contacts pour les suggestions et corrections"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Suggestions personnalisées"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Améliorer l\'application <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Point et espace"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Appuyez deux fois sur la barre d\'espace pour insérer un point et un espace."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Majuscules auto"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Afficher le tracé du geste"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Aperçu flottant dynamique"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Afficher le mot suggéré lors des gestes"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : enregistré"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Branchez des écouteurs pour entendre l\'énoncé à haute voix des touches lors de la saisie du mot de passe."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Le texte actuel est %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Aucun texte saisi"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"La touche <xliff:g id="KEY">%1$s</xliff:g> permet de remplacer \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" par \"<xliff:g id="CORRECTED">%3$s</xliff:g>\"."</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"La touche <xliff:g id="KEY">%1$s</xliff:g> permet d\'activer la correction automatique."</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Code touche %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Maj"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Touche Maj activée (appuyer pour désactiver)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Verrouillage des majuscules activé (appuyer pour désactiver)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Supprimer"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboles"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Lettres"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Chiffres"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Paramètres"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulation"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Espace"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Saisie vocale"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Émoticône"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Entrée"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Rechercher"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Point"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Changer de langue"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Touche suivante"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Touche précédente"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Touche Maj activée"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Verrouillage des majuscules activé"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Touche Maj désactivée"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Mode Symboles"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode Lettres"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode Téléphone"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode Symboles du téléphone"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Clavier masqué"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Affichage du clavier <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"Date"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"Date et heure"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"Adresse e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"SMS/MMS"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"Chiffre"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"Numéro de téléphone"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"Texte"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"Heure"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Geste multiterme"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Insérer un espace avec barre d\'espace lors de la saisie gestuelle"</string>
     <string name="voice_input" msgid="3583258583521397548">"Touche de saisie vocale"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Sur clavier principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sur clavier symboles"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Désactiver"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micro sur le clavier principal"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micro sur clavier symboles"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Saisie vocale désactivée"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Aucun mode de saisie vocale activé. Vérifiez les paramètres de langue et de saisie."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configurer les modes de saisie"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Langues de saisie"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Envoyer des commentaires"</string>
     <string name="select_language" msgid="3693815588777926848">"Langues de saisie"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Appuyer de nouveau pour enregistrer"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dictionnaire disponible"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Autoriser les commentaires des utilisateurs"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Contribuer à l\'amélioration de cet éditeur du mode de saisie grâce à l\'envoi automatique de statistiques d\'utilisation et de rapports d\'erreur"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Thème du clavier"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Anglais (Royaume-Uni)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Anglais (États-Unis)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Espagnol (États-Unis)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Anglais (Royaume-Uni) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Anglais (États-Unis) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Espagnol (États-Unis) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditionnel)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"anglais (Royaume-Uni) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"anglais (États-Unis) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"espagnol (États-Unis) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditionnel)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cyrillique)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Aucune langue (latin)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alphabet latin (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alphabet latin (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alphabet latin (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alphabet latin (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Jeu de couleurs"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Blanc"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Bleu"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Styles saisie personnalisés"</string>
     <string name="add_style" msgid="6163126614514489951">"Ajouter style"</string>
     <string name="add" msgid="8299699805688017798">"Ajouter"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Activer"</string>
     <string name="not_now" msgid="6172462888202790482">"Pas maintenant"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Le style de saisie suivant existe déjà : <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>."</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode d\'étude de l\'utilisabilité"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Délai appui prolongé sur touche"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Durée vibration press. touche"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume son pression de touche"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Lire un fichier de dictionnaire externe"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Aucun fichier de dictionnaire dans le dossier \"Téléchargements\""</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Sélectionner un fichier de dictionnaire à installer"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Installer ce fichier pour la langue \"<xliff:g id="LOCALE_NAME">%s</xliff:g>\" ?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Installer ce fichier pour la langue \"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>\" ?"</string>
     <string name="error" msgid="8940763624668513648">"Une erreur s\'est produite"</string>
     <string name="button_default" msgid="3988017840431881491">"Par défaut"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Bienvenue dans <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Actualiser"</string>
     <string name="last_update" msgid="730467549913588780">"Dernière mise à jour"</string>
     <string name="message_updating" msgid="4457761393932375219">"Recherche de mises à jour en cours…"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Chargement en cours..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Chargement en cours…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Dictionnaire principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Annuler"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Paramètres"</string>
     <string name="install_dict" msgid="180852772562189365">"Installer"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Annuler"</string>
     <string name="delete_dict" msgid="756853268088330054">"Supprimer"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Un dictionnaire est disponible pour la langue sélectionnée sur votre appareil mobile.&lt;br/&gt; Nous vous invitons à &lt;b&gt;télécharger&lt;/b&gt; le dictionnaire <xliff:g id="LANGUAGE">%1$s</xliff:g> pour faciliter votre saisie.&lt;br/&gt; &lt;br/&gt; Le téléchargement peut prendre une à deux minutes via une connexion 3G. Des frais peuvent s\'appliquer si vous ne disposez pas d\'un &lt;b&gt;forfait Internet illimité&lt;/b&gt;.&lt;br/&gt; Si vous n\'êtes pas sûr de votre forfait, nous vous conseillons d\'utiliser une connexion Wi-Fi pour lancer automatiquement le téléchargement.&lt;br/&gt; &lt;br/&gt; Astuce : Vous pouvez télécharger et supprimer des dictionnaires dans la section &lt;b&gt;Langue et saisie&lt;/b&gt; du menu &lt;b&gt;Paramètres&lt;/b&gt; de votre appareil mobile."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Un dictionnaire est disponible pour la langue sélectionnée sur votre appareil mobile.&lt;br/&gt; Nous vous invitons à &lt;b&gt;télécharger&lt;/b&gt; le dictionnaire pour cette langue : <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>. Cela facilitera votre saisie.&lt;br/&gt; &lt;br/&gt; Le téléchargement peut prendre une à deux minutes via une connexion 3G. Des frais peuvent s\'appliquer si vous n\'avez pas un &lt;b&gt;forfait Internet illimité&lt;/b&gt;.&lt;br/&gt; Si vous avez un doute concernant le type de forfait dont vous disposez, nous vous conseillons d\'utiliser le Wi-Fi pour lancer automatiquement le téléchargement.&lt;br/&gt; &lt;br/&gt; Astuce : Vous pouvez télécharger et supprimer des dictionnaires sous &lt;b&gt;Langue et saisie&lt;/b&gt;, dans le menu &lt;b&gt;Paramètres&lt;/b&gt; de votre appareil mobile."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Télécharger (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> Mo)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Télécharger via Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Un dictionnaire est disponible en <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Un dictionnaire est disponible pour la langue suivante : <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Appuyez ici pour consulter et télécharger le dictionnaire."</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"En cours de téléchargement. Des suggestions pour la langue suivante seront bientôt disponibles : <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Téléchargement en cours… Les suggestions seront bientôt disponibles pour la langue suivante : <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Ajouter"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Ajouter au dictionnaire"</string>
diff --git a/java/res/values-gl-rES/strings-action-keys.xml b/java/res/values-gl-rES/strings-action-keys.xml
new file mode 100644
index 0000000..5ce96e6
--- /dev/null
+++ b/java/res/values-gl-rES/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"Ir"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"Seg."</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"Ant"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"Feito"</string>
+    <string name="label_send_key" msgid="482252074224462163">"Enviar"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Buscar"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"Pausa"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"Espera"</string>
+</resources>
diff --git a/java/res/values-gl-rES/strings-appname.xml b/java/res/values-gl-rES/strings-appname.xml
new file mode 100644
index 0000000..df9e1f4
--- /dev/null
+++ b/java/res/values-gl-rES/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Teclado Android (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Corrector ortográfico Android (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Configuración do teclado Android (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Configuración do corrector ortográfico Android (AOSP)"</string>
+</resources>
diff --git a/java/res/values-gl-rES/strings-config-important-notice.xml b/java/res/values-gl-rES/strings-config-important-notice.xml
new file mode 100644
index 0000000..11f697d
--- /dev/null
+++ b/java/res/values-gl-rES/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprende das comunicacións e dos datos para mellorar as suxestións"</string>
+</resources>
diff --git a/java/res/values-gl-rES/strings-letter-descriptions.xml b/java/res/values-gl-rES/strings-letter-descriptions.xml
new file mode 100644
index 0000000..d09e5c9
--- /dev/null
+++ b/java/res/values-gl-rES/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicador ordinal feminino"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Signo de micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicador ordinal masculino"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"ẞ"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, agudo"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circunflexo"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, til"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diérese"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, anel superior"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligadura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, agudo"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circunflexo"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diérese"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, agudo"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circunflexo"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diérese"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, til"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, agudo"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circunflexo"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, til"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diérese"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, trazo"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, agudo"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circunflexo"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diérese"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, agudo"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diérese"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, acento breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, agudo"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circunflexo"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punto superior"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, acento anticircunflexo"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, trazo"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punto superior"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circunflexo"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punto superior"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circunflexo"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, trazo"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, til"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I sen punto"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligadura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circunflexo"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, agudo"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punto medio"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, trazo"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, agudo"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedido de apóstrofo"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, agudo dobre"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligadura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, agudo"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, agudo"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circunflexo"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, trazo"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, til"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, anel superior"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, agudo dobre"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circunflexo"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circunflexo"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, agudo"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punto superior"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S longo"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, corno"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, corno"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, coma inferior"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, coma inferior"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punto inferior"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, gancho superior"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circunflexo e grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circunflexo e gancho superior"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circunflexo e punto inferior"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve e agudo"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve e grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve e gancho superior"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve e til"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve e punto inferior"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punto inferior"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, gancho superior"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, til"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circunflexo e grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circunflexo e gancho superior"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circunflexo e punto inferior"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, gancho superior"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punto inferior"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punto inferior"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, gancho superior"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circunflexo e grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circunflexo e gancho superior"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circunflexo e punto inferior"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, corno e agudo"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, corno e grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, corno e gancho superior"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, corno e til"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, corno e punto inferior"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punto inferior"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, gancho superior"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, corno e agudo"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, corno e grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, corno e gancho superior"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, corno e til"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, corno e punto inferior"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punto inferior"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, gancho superior"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, til"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Exclamación de apertura"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Comiñas angulares de apertura"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Punto medio"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superíndice un"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Comiñas angulares de peche"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Interrogación de apertura"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Comiña tipográfica de apertura"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Comiña tipográfica de peche"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Comiña tipográfica en forma de 9 simple e baixa"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Comiñas tipográficas de apertura"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Comiñas tipográficas de peche"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Cruz"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Cruz dobre"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Signo de por mil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Primo"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Primo dobre"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Comiña tipográfica simple angular de apertura"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Comiña tipográfica simple angular de peche"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superíndice catro"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superíndice letra latina minúscula n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Signo de peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Símbolo inglés care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Frecha dereita"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Frecha abaixo"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Conxunto baleiro"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incremento"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menor ou igual que"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Maior ou igual que"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Estrela negra"</string>
+</resources>
diff --git a/java/res/values-gl-rES/strings-talkback-descriptions.xml b/java/res/values-gl-rES/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..d253d34
--- /dev/null
+++ b/java/res/values-gl-rES/strings-talkback-descriptions.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for spoken_use_headphones (4313642710742229868) -->
+    <skip />
+    <!-- no translation found for spoken_current_text_is (4240549866156675799) -->
+    <skip />
+    <!-- no translation found for spoken_no_text_entered (1711276837961785646) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct (8989324692167993804) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct_obscured (7769449372355268412) -->
+    <skip />
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Carácter descoñecido"</string>
+    <!-- no translation found for spoken_description_shift (7209798151676638728) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift (3483198879916435717) -->
+    <skip />
+    <!-- no translation found for spoken_description_shift_shifted (3122704922642232605) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift_shifted (5179175466878186081) -->
+    <skip />
+    <!-- no translation found for spoken_description_caps_lock (1224851412185975036) -->
+    <skip />
+    <!-- no translation found for spoken_description_delete (3878902286264983302) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_symbol (8244903740201126590) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_alpha (4081215210530031950) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_numeric (4560261331530795682) -->
+    <skip />
+    <!-- no translation found for spoken_description_settings (7281251004003143204) -->
+    <skip />
+    <!-- no translation found for spoken_description_tab (8210782459446866716) -->
+    <skip />
+    <!-- no translation found for spoken_description_space (5908716896642059145) -->
+    <skip />
+    <!-- no translation found for spoken_description_mic (6153138783813452464) -->
+    <skip />
+    <!-- no translation found for spoken_description_emoji (7990051553008088470) -->
+    <skip />
+    <!-- no translation found for spoken_description_return (3183692287397645708) -->
+    <skip />
+    <!-- no translation found for spoken_description_search (5099937658231911288) -->
+    <skip />
+    <!-- no translation found for spoken_description_dot (5644176501632325560) -->
+    <skip />
+    <!-- no translation found for spoken_description_language_switch (6818666779313544553) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_next (431761808119616962) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_previous (2919072174697865110) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_on (5107180516341258979) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_locked (7307477738053606881) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol (111186851131446691) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol_shift (4305607977537665389) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_alpha (4676004119618778911) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone (2061220553756692903) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone_shift (7879963803547701090) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_hidden (2313574218950517779) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_mode (6698257917367823205) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date (6597407244976713364) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date_time (3642804408726668808) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_email (1239682082047693644) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_im (3812086215529493501) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_number (5395042245837996809) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_phone (2486230278064523665) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_text (9138789594969187494) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_time (8558297845514402675) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_url (8072011652949962550) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_recents (4185344945205590692) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_people (8414196269847492817) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_objects (6116297906606195278) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_nature (5018340512472354640) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_places (1163315840948545317) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_symbols (474680659024880601) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_emoticons (456737544787823539) -->
+    <skip />
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiúscula"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiúscula"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiúscula, punto superior"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo descoñecido"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji descoñecido"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Os caracteres alternativos están dispoñibles"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Descártanse os caracteres alternativos"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"As suxestións alternativas están dispoñibles"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Descártanse as suxestións alternativas"</string>
+</resources>
diff --git a/java/res/values-gl-rES/strings.xml b/java/res/values-gl-rES/strings.xml
new file mode 100644
index 0000000..a02e383
--- /dev/null
+++ b/java/res/values-gl-rES/strings.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"Opcións de entrada"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Buscar nomes de contactos"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"O corrector ortográfico utiliza entradas da lista de contactos"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao tocar as teclas"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"Son ao premer as teclas"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"Ventás emerxentes ao premer as teclas"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Outros métodos de entrada"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla de cambio de idioma inclúe outros métodos de entrada"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de cambio de idioma"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Mostra cando hai varios idiomas de entrada activados"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Mostrar indicador movemento"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Indicación visual ao pasar o dedo nas teclas Maiús ou de símbolos"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Retraso ao ampliar tecla"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sen retraso"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Predeterminado"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"Predeterminado do sistema"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"Suxerir nomes contactos"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utiliza nomes de contactos para as suxestións e correccións"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Suxestións personalizadas"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Mellorar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"Dobre espazo e punto"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ao tocar dúas veces a barra de espazo insire un punto e un espazo"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Maiúsculas automáticas"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"Pon en maiúscula a primeira palabra de cada frase"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Dicionario persoal"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Dicionarios complementarios"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"Dicionario principal"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Mostrar suxestións de corrección"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Mostra palabras suxeridas mentres escribes"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar sempre"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostrar en modo vertical"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Ocultar sempre"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Bloquear palabras ofensivas"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Non suxerir palabras potencialmente ofensivas"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"Autocorrección"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"Premer a barra espazo e teclas de puntuación para corrixir erros"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Desactivada"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Modesta"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Agresiva"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Moi agresiva"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"Suxerir palabra seguinte"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Utiliza a palabra anterior para facer suxestións"</string>
+    <string name="gesture_input" msgid="826951152254563827">"Activar escritura con xestos"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"Pasa o dedo entre as letras para introducir unha palabra"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostrar percorrido dos xestos"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Vista previa flotante dinámica"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Mostra a palabra suxerida mentres se fan xestos"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Xesto de frase"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Para introducir espazos nos xestos, pasa o dedo cara a tecla de espazo"</string>
+    <string name="voice_input" msgid="3583258583521397548">"Tecla de entrada de voz"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Non hai ningún método de entrada de voz activado. Comproba a configuración de Idioma e entrada de texto."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"Enviar comentarios"</string>
+    <string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toca de novo para gardar"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"Dicionario dispoñible"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Inglés (Reino Unido)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Inglés (EUA)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"Español (EUA)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglés (Reino Unido) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglés (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Español (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
+    <skip />
+    <!-- no translation found for subtype_generic_cyrillic (7486451947618138947) -->
+    <skip />
+    <!-- no translation found for subtype_generic_latin (9128716486310604145) -->
+    <skip />
+    <string name="subtype_no_language" msgid="7137390094240139495">"Ningún idioma (alfabeto)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeto (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeto (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Alfabeto (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Alfabeto (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos de entrada personalizados"</string>
+    <string name="add_style" msgid="6163126614514489951">"Engadir estilo"</string>
+    <string name="add" msgid="8299699805688017798">"Engadir"</string>
+    <string name="remove" msgid="4486081658752944606">"Eliminar"</string>
+    <string name="save" msgid="7646738597196767214">"Gardar"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"Idioma"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"Deseño"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"É necesario activar o estilo de entrada personalizado para poder comezar a utilizalo. Queres activalo agora?"</string>
+    <string name="enable" msgid="5031294444630523247">"Activar"</string>
+    <string name="not_now" msgid="6172462888202790482">"Agora non"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Xa existe o mesmo estilo de entrada: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Retraso de pulsación prolongada"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Duración vibración ao premer teclas"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume do son ao premer teclas"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Ler ficheiro de dicionario externo"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Non hai ningún ficheiro de dicionario no cartafol de descargas"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selecciona un ficheiro de dicionario para instalar"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Realmente queres instalar este ficheiro para <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
+    <string name="error" msgid="8940763624668513648">"Produciuse un erro"</string>
+    <string name="button_default" msgid="3988017840431881491">"Predeterminado"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"Benvido a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"con escritura xestual"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"Comezar"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"Seguinte paso"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"Configurando <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"Activar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"Comproba \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" na túa configuración de idioma e entrada de texto para que se poida executar no teu dispositivo."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"A aplicación <xliff:g id="APPLICATION_NAME">%s</xliff:g> xa está activada na configuración de idioma e entrada de texto. Podes pasar ao seguinte paso."</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"Activar en Configuración"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"Cambiar a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"A continuación, selecciona \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" como o método de entrada de texto activo."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"Cambiar métodos de entrada"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"Parabéns, está todo listo!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"Agora podes escribir en todas as túas aplicacións favoritas con <xliff:g id="APPLICATION_NAME">%s</xliff:g>."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"Configurar idiomas adicionais"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"Finalizado"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Mostrar icona da aplicación"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Mostra a icona da aplicación no menú de aplicacións"</string>
+    <string name="app_name" msgid="6320102637491234792">"Fornecedor do dicionario"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"Fornecedor do dicionario"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"Servizo de dicionario"</string>
+    <string name="download_description" msgid="6014835283119198591">"Información de actualización do dicionario"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Dicionarios complementarios"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Dicionario dispoñible"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Configuración dos dicionarios"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"Dicionarios de usuario"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Dicionario de usuario"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"Dicionario dispoñible"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"Descarga en curso"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"Instalado"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"Instalado (desactivado)"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Erro ao conectar"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"Non hai dicionarios"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"Actualizar"</string>
+    <string name="last_update" msgid="730467549913588780">"Última actualización"</string>
+    <string name="message_updating" msgid="4457761393932375219">"Comprobando se hai actualizacións"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Cargando..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"Dicionario principal"</string>
+    <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Configuración"</string>
+    <string name="install_dict" msgid="180852772562189365">"Instalar"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
+    <string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"O idioma seleccionado no teu dispositivo móbil ten un dicionario dispoñible.&lt;br/&gt; É recomendable &lt;b&gt;descargar&lt;/b&gt; o dicionario de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> para mellorar a experiencia de escritura.&lt;br/&gt; &lt;br/&gt; A descarga pode tardar un ou dous minutos en redes 3G. É posible que se apliquen tarifas se non tes un &lt;b&gt;plan de datos ilimitado&lt;/b&gt;.&lt;br/&gt; Se non estás seguro de que plan de datos tes, é recomendable buscar unha conexión wifi para iniciar a descarga automaticamente.&lt;br/&gt; &lt;br/&gt; Consello: podes descargar e eliminar dicionarios en &lt;b&gt;Idioma e entrada de texto&lt;/b&gt; no menú &lt;b&gt;Configuración&lt;/b&gt; do teu dispositivo móbil."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"Descargar agora (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Descargar a través da wifi"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Hai un dicionario dispoñible para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"Preme aquí para revisar e descargar"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Descargando: as suxestións para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> estarán listas proximamente."</string>
+    <string name="version_text" msgid="2715354215568469385">"Versión <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Engadir"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Engadir ao dicionario"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Frase"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Máis opcións"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Menos opcións"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Aceptar"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Palabra:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Atallo:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Idioma:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Escribe unha palabra"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Atallo opcional"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Editar palabra"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Editar"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Eliminar"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Non tes ningunha palabra no dicionario do usuario. Toca o botón Engadir (+) para engadir unha palabra."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Para todos os idiomas"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Máis idiomas..."</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"Eliminar"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml b/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml
index bc7928d..adc3e35 100644
--- a/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml
+++ b/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">38sp</dimen>
     <dimen name="setup_step_bullet_text_size">24sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
-    <dimen name="setup_step_indicator_height">24dp</dimen>
     <dimen name="setup_step_title_text_size">24sp</dimen>
     <dimen name="setup_step_instruction_text_size">18sp</dimen>
     <dimen name="setup_step_action_text_size">20sp</dimen>
diff --git a/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml b/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml
index aebf6d2..1ff43ff 100644
--- a/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml
+++ b/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">22sp</dimen>
     <dimen name="setup_step_bullet_text_size">22sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
-    <dimen name="setup_step_indicator_height">24dp</dimen>
     <dimen name="setup_step_title_text_size">20sp</dimen>
     <dimen name="setup_step_instruction_text_size">16sp</dimen>
     <dimen name="setup_step_action_text_size">18sp</dimen>
diff --git a/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml b/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml
index aedf79f..a0e30cd 100644
--- a/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml
+++ b/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">32sp</dimen>
     <dimen name="setup_step_bullet_text_size">24sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
-    <dimen name="setup_step_indicator_height">24dp</dimen>
     <dimen name="setup_step_title_text_size">24sp</dimen>
     <dimen name="setup_step_instruction_text_size">18sp</dimen>
     <dimen name="setup_step_action_text_size">20sp</dimen>
diff --git a/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml b/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml
index 6d66f46..cf2a10a 100644
--- a/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml
+++ b/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">26sp</dimen>
     <dimen name="setup_step_bullet_text_size">22sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
-    <dimen name="setup_step_indicator_height">24dp</dimen>
     <dimen name="setup_step_title_text_size">20sp</dimen>
     <dimen name="setup_step_instruction_text_size">16sp</dimen>
     <dimen name="setup_step_action_text_size">18sp</dimen>
diff --git a/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml b/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml
index e22b741..a782ef8 100644
--- a/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml
+++ b/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">38sp</dimen>
     <dimen name="setup_step_bullet_text_size">24sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
-    <dimen name="setup_step_indicator_height">24dp</dimen>
     <dimen name="setup_step_title_text_size">24sp</dimen>
     <dimen name="setup_step_instruction_text_size">18sp</dimen>
     <dimen name="setup_step_action_text_size">20sp</dimen>
diff --git a/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml b/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml
index 86cf3a0..9ac0f11 100644
--- a/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml
+++ b/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">36sp</dimen>
     <dimen name="setup_step_bullet_text_size">24sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">24dp</dimen>
-    <dimen name="setup_step_indicator_height">24dp</dimen>
     <dimen name="setup_step_title_text_size">24sp</dimen>
     <dimen name="setup_step_instruction_text_size">18sp</dimen>
     <dimen name="setup_step_action_text_size">20sp</dimen>
diff --git a/java/res/values-hdpi/config.xml b/java/res/values-hdpi/config.xml
deleted file mode 100644
index 4cf3562..0000000
--- a/java/res/values-hdpi/config.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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>
-    <!--  Screen metrics for logging.
-            0 = "mdpi phone screen"
-            1 = "hdpi phone screen"
-            2 = "mdpi 11 inch tablet screen"
-            3 = "xhdpi phone screen?"
-            4 = ?
-    -->
-    <integer name="log_screen_metrics">1</integer>
-</resources>
diff --git a/java/res/values-hi/strings-action-keys.xml b/java/res/values-hi/strings-action-keys.xml
index 92cb194..7237c24 100644
--- a/java/res/values-hi/strings-action-keys.xml
+++ b/java/res/values-hi/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"पिछला"</string>
     <string name="label_done_key" msgid="7564866296502630852">"पूर्ण"</string>
     <string name="label_send_key" msgid="482252074224462163">"भेजें"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"खोजें"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"रोकें"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"प्रतीक्षा करें"</string>
 </resources>
diff --git a/java/res/values-hi/strings-config-important-notice.xml b/java/res/values-hi/strings-config-important-notice.xml
new file mode 100644
index 0000000..3f22541
--- /dev/null
+++ b/java/res/values-hi/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"सुझावों में सुधार हेतु अपने संचार और लिखे गए डेटा से जानकारी पाएं"</string>
+</resources>
diff --git a/java/res/values-hi/strings-letter-descriptions.xml b/java/res/values-hi/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ecf589a
--- /dev/null
+++ b/java/res/values-hi/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"स्त्रीलिंग क्रमसूचक संकेतक"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"माइक्रो चिह्न"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"पुल्लिंग क्रमसूचक संकेतक"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"शार्प एस"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"ए, ग्रेव"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"ए, एक्यूट"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"ए, स्वरित"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"ए, लहरिल"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"ए, डाएरेसिस"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"ए, रिंग ऊपर"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"ए, ई, संयुक्ताक्षर"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"सी, सेडिला"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"ई, ग्रेव"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"ई, एक्यूट"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"ई, स्वरित"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"ई, डाएरेसिस"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"आई, ग्रेव"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"आई, एक्यूट"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"आई, स्वरित"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"आई, डाएरेसिस"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"ईथ"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"एन, लहरिल"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"ओ, ग्रेव"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"ओ, एक्यूट"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"ओ, स्वरित"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"ओ, लहरिल"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"ओ, डाएरेसिस"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"ओ, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"यू, ग्रेव"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"यू, एक्यूट"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"यू, स्वरित"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"यू, डाएरेसिस"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"वाय, एक्यूट"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"थॉर्न"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"वाय, डाएरेसिस"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"ए, मैक्रॉन"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"ए, ब्रीव"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"ए, ओजोनेक"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"सी, एक्यूट"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"सी, स्वरित"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"सी, बिंदु ऊपर"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"सी, कैरन"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"डी, कैरन"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"डी, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"ई, मैक्रॉन"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"ई, ब्रीव"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"ई, बिंदु ऊपर"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"ई, ओजोनेक"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"ई, कैरन"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"जी, स्वरित"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"जी, ब्रीव"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"जी, बिंदु ऊपर"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"जी, सेडिला"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"एच, स्वरित"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"एच, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"आई, लहरिल"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"आई, मैक्रोन"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"आई, ब्रीव"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"आई, ओजोनेक"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"बिंदुरहित आई"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"आई, जे, संयुक्ताक्षर"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"जे, स्वरित"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"के, सेडिला"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"क्रा"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"एल, एक्यूट"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"एल, सेडिला"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"एल, कैरन"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"एल, मध्य बिंदु"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"एल, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"एन, एक्यूट"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"एन, सेडिला"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"एन, कैरन"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"एपॉस्ट्रॉफ़ी से पहले एन"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"एन्ग्मा"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"ओ, मैक्रॉन"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"ओ, ब्रीव"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"ओ, दोहरा एक्यूट"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"ओ, ई, संयुक्ताक्षर"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"आर, एक्यूट"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"आर, सेडिला"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"आर, कैरन"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"एस, एक्यूट"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"एस, स्वरित"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"एस, सेडिला"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"एस, कैरन"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"टी, सेडिला"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"टी, कैरन"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"टी, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"यू, लहरिल"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"यू, मैक्रॉन"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"यू, ब्रीव"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"यू, रिंग ऊपर"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"यू, दोहरा एक्यूट"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"यू, ओजोनेक"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"डबल्यू स्वरित"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"वाय, स्वरित"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"ज़ेड, एक्यूट"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"ज़ेड, बिंदु ऊपर"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"ज़ेड, कैरन"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"लंबा एस"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"ओ, हॉर्न"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"यू, हॉर्न"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"एस, नीचे अल्पविराम"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"टी, नीचे अल्पविराम"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"स्च्वा"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"ए, बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"ए, ऊपर हुक"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"ए, स्वरित और एक्यूट"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"ए, स्वरित और ग्रेव"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"ए, स्वरित और हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"ए, स्वरित और लहरिल"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"ए, स्वरित और बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"ए, ब्रीव और एक्यूट"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"ए, ब्रीव और ग्रेव"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"ए, ब्रीव और हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"ए, ब्रीव और लहरिल"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"ए, ब्रीव और बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"ई, बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"ई, हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"ई, लहरिल"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"ई, स्वरित और एक्यूट"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"ई, स्वरित और ग्रेव"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"ई, स्वरित और हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"ई, स्वरित और लहरिल"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"ई, स्वरित और बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"आई, हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"आई, बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"ओ, बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"ओ, हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"ओ, स्वरित और एक्यूट"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"ओ, स्वरित और ग्रेव"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"ओ, स्वरित और हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"ओ, स्वरित और लहरिल"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"ओ, स्वरित और बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"ओ, हॉर्न और एक्यूट"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"ओ, हॉर्न और ग्रेव"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"ओ, हॉर्न और हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"ओ, हॉर्न और लहरिल"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"ओ, हॉर्न और बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"यू, बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"यू, हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"यू, हॉर्न और एक्यूट"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"यू, हॉर्न और ग्रेव"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"यू, हॉर्न और हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"यू, हॉर्न और लहरिल"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"यू, हॉर्न और बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"वाय, ग्रेव"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"वाय, बिंदु नीचे"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"वाय, हुक ऊपर"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"वाय, लहरिल"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"उलटा विस्मयादिबोधक चिह्न"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"बाईं ओर इंगित दोहरे कोण वाला उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"मध्य बिंदु"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"सुपरस्क्रिप्ट एक"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"दाईं ओर इंगित दोहरे कोण वाला उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"उलटा प्रश्नवाचक चिह्न"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"बायां एकल उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"दायां एकल उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"एकल नीचे-9 उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"बायां दोहरा उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"दायां दोहरा उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"डैगर"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"दोहरा डैगर"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"प्रति सहस्र चिह्न"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"प्राइम"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"दोहरा प्राइम"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"एकल बाईं ओर इंगित उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"एकल दाईं ओर इंगित उद्धरण चिह्न"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"सुपरस्क्रिप्ट चार"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"सुपरस्क्रिप्ट लेटिन छोटा अक्षर एन"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"पेसो चिह्न"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"द्वारा"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"दायां तीर"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"नीचे तीर"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"रिक्त सेट"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"वृद्धि"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"इससे कम या इसके बराबर"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"इससे अधिक या इसके बराबर"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"काला तारा"</string>
+</resources>
diff --git a/java/res/values-hi/strings-talkback-descriptions.xml b/java/res/values-hi/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..aba2592
--- /dev/null
+++ b/java/res/values-hi/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"जोर से बोली जाने वाली पासवर्ड कुंजियां सुनने के लिए हैडसेट प्‍लग करें."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"वर्तमान पाठ %s है"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"कोई पाठ नहीं डाला गया"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> को सुधार कर <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> करता है"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> स्वत: सुधार करता है"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"अज्ञात वर्ण"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"शिफ़्ट"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"और प्रतीक"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"शिफ़्ट"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"प्रतीक"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"शिफ़्ट"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"डिलीट"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"प्रतीक"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"अक्षर"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"संख्‍याएं"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"सेटिंग"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"टैब"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"स्पेस"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ध्‍वनि इनपुट"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ईमोजी"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"रिटर्न"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"खोजें"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"डॉट"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"भाषा स्विच करें"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"अगला"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"पिछला"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"शिफ़्ट सक्षम किया गया"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"कैप्स लॉक सक्षम किया गया"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"प्रतीक मोड"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"और प्रतीक मोड"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"अक्षर मोड"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"फ़ोन मोड"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"फ़ोन प्रतीक मोड"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"कीबोर्ड छिपा हुआ है"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> कीबोर्ड दिखाया जा रहा है"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"दिनांक"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"दिनांक और समय"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ईमेल"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"संदेश सेवा"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"संख्या"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"फ़ोन"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"पाठ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"समय"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"हाल ही के"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"लोग"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ऑब्जेक्ट"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"प्रकृति"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"स्थान"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"प्रतीक"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"इमोटिकॉन्स"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"बड़ा <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"बड़ा आई"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"बड़ा आई, बिंदु ऊपर"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"अज्ञात प्रतीक"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"अज्ञात इमोजी"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"वैकल्पिक वर्ण उपलब्ध हैं"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"वैकल्पिक वर्ण ख़ारिज कर दिए जाते हैं"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"वैकल्पिक सुझाव उपलब्ध हैं"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"वैकल्पिक सुझाव ख़ारिज कर दिए जाते हैं"</string>
+</resources>
diff --git a/java/res/values-hi/strings.xml b/java/res/values-hi/strings.xml
index d773543..5abbecd 100644
--- a/java/res/values-hi/strings.xml
+++ b/java/res/values-hi/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"इनपुट विकल्‍प"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"लॉग आदेशों का शोध करें"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"संपर्क नामों को खोजें"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"वर्तनी परीक्षक आपकी संपर्क सूची की प्रविष्टियों का उपयोग करता है"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"कुंजी दबाने पर कंपन करता है"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"कुंजी दबाने पर आवाज"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"कुंजी दबाने पर पॉपअप दिखाएं"</string>
-    <string name="general_category" msgid="1859088467017573195">"सामान्य"</string>
-    <string name="correction_category" msgid="2236750915056607613">"पाठ सुधार"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"जेस्चर लिखना"</string>
-    <string name="misc_category" msgid="6894192814868233453">"अन्य विकल्प"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"अतिरिक्त सेटिंग"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"विशेषज्ञों के लिए विकल्‍प"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अन्‍य इनपुट पद्धतियों पर जाएं"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"भाषा स्‍विच कुंजी में अन्‍य इनपुट पद्धतियां भी शामिल हैं"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"भाषा स्विच कुंजी"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"सिस्टम डिफ़ॉल्ट"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"संपर्क नाम सुझाएं"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"सुझाव और सुधार के लिए संपर्क से नामों का उपयोग करें"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"वैयक्तिकृत सुझाव"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> को बेहतर बनाएं"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"दोहरे स्पेस वाला पीरियड"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"स्पेसबार पर डबल टैप करने से पीरियड शामिल हो जाता है जिसके बाद एक रिक्ति होती है"</string>
     <string name="auto_cap" msgid="1719746674854628252">"स्‍वत: अक्षर बड़े करना"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"जेस्चर ट्रेल दिखाएं"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"गतिशील फ़्लोटिंग पूर्वावलोकन"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"जेस्‍चर बनाते समय सुझाया गया शब्द देखें"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: सहेजा गया"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"ज़ोर से बोली गई पासवर्ड कुंजियां सुनने के लिए हेडसेट प्‍लग इन करें."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"वर्तमान पाठ %s है"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"कोई पाठ दर्ज नहीं किया गया"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> को सुधार कर <xliff:g id="CORRECTED">%3$s</xliff:g> करता है"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> स्वत: सुधार करता है"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"कुंजी कोड %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"शिफ़्ट"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift चालू (अक्षम करने के लिए टैप करें)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock चालू (अक्षम करने के लिए टैप करें)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"डिलीट"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"प्रतीक"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"अक्षर"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"संख्‍याएं"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"सेटिंग"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"टैब"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"स्पेस"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"ध्‍वनि इनपुट"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"मुस्कुराता चेहरा"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"रिटर्न"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"खोजें"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"बिंदु"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"भाषा स्विच करें"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"अगला"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"पिछला"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift सक्षम किया गया"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock सक्षम किया गया"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift अक्षम किया गया"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"प्रतीक मोड"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"अक्षर मोड"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"फ़ोन मोड"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"फ़ोन प्रतीक मोड"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"कीबोर्ड छिपा हुआ है"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g> कीबोर्ड दिखाया जा रहा है"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"दिनांक"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"दिनांक और समय"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"ईमेल"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"संदेश सेवा"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"संख्या"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"फ़ोन"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"पाठ"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"समय"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"वाक्यांश जेस्चर"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"स्पेस कुंजी तक ग्लाइड करके जेस्चर के दौरान रिक्तियां इनपुट करें"</string>
     <string name="voice_input" msgid="3583258583521397548">"ध्‍वनि‍ इनपुट कुंजी"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"मुख्‍य कीबोर्ड पर"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"प्रतीक कीबोर्ड पर"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"बंद"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"मुख्‍य कीबोर्ड पर माइक"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"प्रतीक कीबोर्ड पर माइक"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ध्‍वनि इनपुट अक्षम है"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"कोई ध्वनि इनपुट पद्धति सक्षम नहीं है. भाषा और इनपुट सेटिंग जांचें."</string>
     <string name="configure_input_method" msgid="373356270290742459">"इनपुट पद्धति कॉन्‍फ़िगर करें"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"इनपुट भाषा"</string>
     <string name="send_feedback" msgid="1780431884109392046">"सुझाव भेजें"</string>
     <string name="select_language" msgid="3693815588777926848">"इनपुट भाषाएं"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"सहेजने के लिए पुन: स्‍पर्श करें"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"शब्‍दकोश उपलब्‍ध है"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"उपयोगकर्ता फ़ीडबैक सक्षम करें"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"उपयोग के आंकड़े और क्रैश रिपोर्ट अपने आप भेजकर इस इनपुट पद्धति संपादक को बेहतर बनाने में सहायता करें."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"कीबोर्ड थीम"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"अंग्रेज़ी (यूके)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"अंग्रेज़ी (यूएस)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"स्पेनिश (यूएस)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"अंग्रेज़ी (यूके) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"अंग्रेज़ी (यूएस) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"स्पेनिश (यूएस) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (पारंपरिक)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"अंग्रेज़ी (यूके) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"अंग्रेज़ी (यूएस) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"स्‍पेनिश (यूएस) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (पारंपरिक)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (सिरिलिक)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (लैटिन)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"भाषा उपलब्ध नहीं है (लैटिन वर्णाक्षर)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"वर्णाक्षर (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"वर्णाक्षर (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"वर्णाक्षर (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"वर्णाक्षर (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"रंग संयोजन"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"सफ़ेद"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"नीला"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"कस्‍टम इनपुट शैलियां"</string>
     <string name="add_style" msgid="6163126614514489951">"शैली जोड़ें"</string>
     <string name="add" msgid="8299699805688017798">"जोड़ें"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"सक्षम करें"</string>
     <string name="not_now" msgid="6172462888202790482">"अभी नहीं"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ऐसी ही इनपुट शैली पहले से मौजूद है: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"उपयोगिता अध्ययन मोड"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"कुंजी को देर तक दबाने का विलंब"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"कुंजी-स्पर्श कंपन अवधि"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"कुंजी-स्पर्श ध्वनि आवाज़"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"बाहरी शब्दकोश फ़ाइल पढ़ें"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"डाउनलोड फ़ोल्डर में कोई शब्दकोश फ़ाइल नहीं है"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"इंस्टॉल करने के लिए कोई शब्दकोश फ़ाइल चुनें"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"<xliff:g id="LOCALE_NAME">%s</xliff:g> के लिए वास्तव में यह फ़ाइल इंस्टॉल करें?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"क्या वाकई <xliff:g id="LANGUAGE_NAME">%s</xliff:g> के लिए यह फ़ाइल इंस्‍टॉल करें?"</string>
     <string name="error" msgid="8940763624668513648">"कोई त्रुटि हुई थी"</string>
     <string name="button_default" msgid="3988017840431881491">"सामान्य"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> में आपका स्वागत है"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"रीफ़्रेश करें"</string>
     <string name="last_update" msgid="730467549913588780">"अंतिम बार का नई जानकारी"</string>
     <string name="message_updating" msgid="4457761393932375219">"नई जानकारी देखा जा रहा हैं"</string>
-    <string name="message_loading" msgid="8689096636874758814">"लोड हो रही है..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"लोड हो रहा है…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"मुख्‍य डिक्‍शनरी"</string>
     <string name="cancel" msgid="6830980399865683324">"रद्द करें"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"सेटिंग"</string>
     <string name="install_dict" msgid="180852772562189365">"इंस्टॉल करें"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"रद्द करें"</string>
     <string name="delete_dict" msgid="756853268088330054">"हटाएं"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"आपके मोबाइल उपकरण पर चयनित भाषा में डिक्‍शनरी उपलब्‍ध है.&lt;br/&gt; आपके लेखन अनुभव को बेहतर बनाने के लिए हम <xliff:g id="LANGUAGE">%1$s</xliff:g> डिक्‍शनरी को &lt;b&gt;डाउनलोड करने&lt;/b&gt; की अनुशंसा करते हैं.&lt;br/&gt; &lt;br/&gt; 3G पर डाउनलोड होने में एक या दो मिनट लग सकते हैं. यदि आपके पास &lt;b&gt;असीमित डेटा प्लान&lt;/b&gt; नहीं है, तो शुल्‍क लग सकते हैं.&lt;br/&gt; यदि आप अपने डेटा प्लान के बारे में सुनिश्चित नहीं हैं, तो हम अपने आप डाउनलोड प्रारंभ करने के लिए Wi-Fi कनेक्‍शन ढूंढने की अनुशंसा करते हैं.&lt;br/&gt; &lt;br/&gt; युक्ति: आप अपने मोबाइल उपकरण पर &lt;b&gt;सेटिंग&lt;/b&gt; मेनू में &lt;b&gt;भाषा और अक्षर&lt;/b&gt; पर जाकर डिक्‍शनरी डाउनलोड कर सकते हैं और निकाल सकते हैं."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"आपके मोबाइल पर चयनित भाषा के लिए शब्‍दकोश उपलब्‍ध है.&lt;br/&gt; हम आपके लेखन अनुभव को बेहतर बनाने के लिए <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> शब्‍दकोश &lt;b&gt;डाउनलोड करने&lt;/b&gt; की अनुशंसा करते हैं.&lt;br/&gt; &lt;br/&gt; 3G में डाउनलोड करने पर एक या दो मिनट लगेंगे. यदि आपके पास &lt;b&gt;असीमित डेटा योजना&lt;/b&gt; नहीं है, तो शुल्क लागू हो सकते हैं.&lt;br/&gt; यदि आप अपनी डेटा योजना के बारे में सुनिश्चित नहीं हैं, तो हम अपने आप डाउनलोड प्रारंभ करने के लिए Wi-Fi कनेक्‍शन ढूंढने की अनुशंसा करते हैं.&lt;br/&gt; &lt;br/&gt; युक्ति: आप अपने मोबाइल उपकरण के &lt;b&gt;सेटिंग&lt;/b&gt; मेनू में &lt;b&gt;भाषा और इनपुट&lt;/b&gt; पर जाकर शब्‍दकोशों को डाउनलोड कर सकते हैं और निकाल सकते हैं."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"अभी डाउनलोड करें (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi से डाउनलोड करें"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g> के लिए डिक्‍शनरी उपलब्‍ध है"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> के लिए एक शब्‍दकोश उपलब्‍ध है"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"समीक्षा करने और डाउनलोड करने के लिए दबाएं"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"डाउनलोड हो रहा है: <xliff:g id="LANGUAGE">%1$s</xliff:g> के लिए सुझाव जल्दी ही तैयार हो जाएंगे."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"डाउनलोड प्रारंभ हो रहा है: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> के लिए सुझाव जल्दी ही उपलब्ध होंगे."</string>
     <string name="version_text" msgid="2715354215568469385">"संस्करण <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"जोड़ें"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"शब्दकोश में जोड़ें"</string>
diff --git a/java/res/values-hr/strings-action-keys.xml b/java/res/values-hr/strings-action-keys.xml
index 564f703..23c7872 100644
--- a/java/res/values-hr/strings-action-keys.xml
+++ b/java/res/values-hr/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Pret."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Got."</string>
     <string name="label_send_key" msgid="482252074224462163">"Poš."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Traži"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauz."</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Čekaj"</string>
 </resources>
diff --git a/java/res/values-hr/strings-config-important-notice.xml b/java/res/values-hr/strings-config-important-notice.xml
new file mode 100644
index 0000000..9d4b18d
--- /dev/null
+++ b/java/res/values-hr/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Upotrijebi poruke i upisane podatke za poboljšanje prijedloga"</string>
+</resources>
diff --git a/java/res/values-hr/strings-letter-descriptions.xml b/java/res/values-hr/strings-letter-descriptions.xml
new file mode 100644
index 0000000..9c0055f
--- /dev/null
+++ b/java/res/values-hr/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Znak za redni broj ženskog roda"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Znak mikro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Znak za redni broj muškog roda"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Oštro S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, s gravisom"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, s akutom"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, s circumfleksom"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, s tildom"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, s dijarezom"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, s kružićem iznad"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, s ligaturom"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, sa sedijom"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, s gravisom"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, s akutom"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, s dijarezom"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, s gravisom"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, s akutom"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, s dijarezom"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, s tildom"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, s gravisom"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, s akutom"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, s tildom"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, s dijarezom"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, precrtano"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, s gravisom"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, s akutom"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, s dijarezom"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, s akutom"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, s dijarezom"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, s crtom iznad"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, s brevisom"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, s ogonekom"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, s akutom"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, s circumfleksom"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, s točkicom iznad"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, s kvačicom"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, s kvačicom"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, precrtano"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, s crtom iznad"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, s brevisom"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, s točkicom iznad"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, s ogonekom"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, s kvačicom"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, s brevisom"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, s točkicom iznad"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, sa sedijom"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, precrtano"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, s tildom"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, s crtom iznad"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, s brevisom"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, s ogonekom"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I bez točke"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, s ligaturom"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, sa sedijom"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, s akutom"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, sa sedijom"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, s kvačicom"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, sa srednjom točkicom"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, precrtano"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, s akutom"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, sa sedijom"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, s kvačicom"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, s apostrofom ispred"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, s crtom iznad"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, s brevisom"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, s dvostrukim akutom"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, s ligaturom"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, s akutom"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, sa sedijom"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, s kvačicom"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, s akutom"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, sa sedijom"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, s kvačicom"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, sa sedijom"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, s kvačicom"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, precrtano"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, s tildom"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, s crtom iznad"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, s brevisom"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, s kružićem iznad"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, s dvostrukim akutom"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, s ogonekom"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, s akutom"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, s točkicom iznad"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, s kvačicom"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Dugo S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, s roščićem"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, s roščićem"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, sa zarezom ispod"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, sa zarezom ispod"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, s točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, s kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, s cirkumfleksom i akutom"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, s cirkumfleksom i gravisom"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, s cirkumfleksom i kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, s cirkumfleksom i tildom"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, s cirkumfleksom i točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, s brevisom i akutom"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, s brevisom i gravisom"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, s brevisom i kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, s brevisom i tildom"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, s brevisom i točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, s točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, s kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, s tildom"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, s cirkumfleksom i akutom"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, s cirkumfleksom i gravisom"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, s cirkumfleksom i kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, s cirkumfleksom i tildom"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, s cirkumfleksom i točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, s kukicom iznad"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, s točkicom ispod"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, s točkicom ispod"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, s kukicom iznad"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, s cirkumfleksom i akutom"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, s cirkumfleksom i gravisom"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, s cirkumfleksom i kukicom iznad"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, s cirkumfleksom i tildom"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, s cirkumfleksom i točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, s roščićem i akutom"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, s roščićem i gravisom"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, s roščićem i kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, s roščićem i tildom"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, s roščićem i točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, s točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, s kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, roščićem i akutom"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, s roščićem i gravisom"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, s roščićem i kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, s roščićem i tildom"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, s roščićem i točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, s gravisom"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, s točkicom ispod"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, s kukicom iznad"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, s tildom"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Obrnuti uskličnik"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Lijevi dvostruki šiljati navodnik"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Srednja točkica"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Eksponent jedan"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Desni dvostruki šiljati navodnik"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Obrnuti upitnik"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Lijevi jednostruki navodnik"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Desni jednostruki navodnik"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Donji jednostruki navodnik (jednostruka devetka)"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Lijevi dvostruki navodnik"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Desni dvostruki navodnik"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Križ"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dvostruki križ"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Znak promila"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Znak za minute"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Znak za sekunde"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Lijevi jednostruki šiljati navodnik"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Desni jednostruki šiljati navodnik"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Eksponent četiri"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Eksponent u obliku latiničnog malog slova n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Znak peza"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"U ruke"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Strelica udesno"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Strelica prema dolje"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Prazan skup"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Povećanje"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Manje ili jednako"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Veće ili jednako"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Crna zvjezdica"</string>
+</resources>
diff --git a/java/res/values-hr/strings-talkback-descriptions.xml b/java/res/values-hr/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..e86db07
--- /dev/null
+++ b/java/res/values-hr/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Priključite slušalice da biste čuli naglas izgovorene tipke dok upisujete zaporku."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Trenutačni tekst glasi %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nije unesen tekst"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ispravlja <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> u <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> vrši samoispravljanje"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Nepoznati znak"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Više simbola"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboli"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Brisanje"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simboli"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Slova"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Brojevi"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Postavke"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulator"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Razmaknica"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Glasovni ulaz"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Pretraživanje"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Točka"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Promjena jezika"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Sljedeća"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Prethodna"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Omogućena je tipka Shift"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Omogućen je Caps Lock"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Način unosa simbola"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Način s više simbola"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Način unosa slova"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonski način rada"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Način unosa telefonskih simbola"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tipkovnica je skrivena"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Prikaz tipkovnice: <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum i vrijeme"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-pošta"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"slanje poruka"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"brojevi"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"vrijeme"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Najnoviji"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Osobe"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objekti"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Priroda"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mjesta"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikoni"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Veliko slovo <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Veliko slovo I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Veliko slovo I, s točkicom iznad"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nepoznati simbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nepoznati emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Dostupni su zamjenski znakovi"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Zamjenski su znakovi isključeni"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Dostupni su zamjenski prijedlozi"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Zamjenski su prijedlozi isključeni"</string>
+</resources>
diff --git a/java/res/values-hr/strings.xml b/java/res/values-hr/strings.xml
index b9cfef3..0cdc74a 100644
--- a/java/res/values-hr/strings.xml
+++ b/java/res/values-hr/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opcije ulaza"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Istraživanje naredbi dnevnika"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Potražite imena kontakata"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Provjera pravopisa upotrebljava unose iz vašeg popisa kontakata"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibracija pri pritisku na tipku"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk pri pritisku tipke"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Povećanja na pritisak tipke"</string>
-    <string name="general_category" msgid="1859088467017573195">"Općenito"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Ispravak teksta"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Pisanje kretnjama"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Ostale opcije"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Napredne postavke"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opcije za stručnjake"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prebaci na druge unose"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tipka za prebacivanje jezika pokriva i druge načine unosa"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tipka za izmjenjivanje jezika"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Zadano sustavom"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Predlaži imena kontakata"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Upotreba imena iz Kontakata za prijedloge i ispravke"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Prilagođeni prijedlozi"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Poboljšaj aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Točka s dva razmaka"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dvostrukim dodirivanjem razmaknice umeću se točka i razmak"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automatsko pisanje velikih slova"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Prikaži trag pokreta"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamički plutajući pregled"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Vidi predloženu riječ tijekom pokreta"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Spremljeno"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Priključite slušalice da biste čuli tipke zaporke izgovorene naglas."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Trenutačni tekst je %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nije unesen tekst"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> ispravlja <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> u <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> vrši samoispravljanje"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Kôd tipke %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Uključena tipka Shift (dotaknite da onemogućite)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Uključeno je pisanje velikim slovima (Caps Lock) (dotaknite da onemogućite)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simboli"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Slova"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Brojevi"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Postavke"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Kartica"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Razmaknica"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Glasovni unos"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smješko"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Pretraživanje"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Točka"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Promijeni jezik"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Sljedeće"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Prethodno"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Omogućena tipka Shift"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Omogućeno pisanje velikih slova"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Onemogućena tipka Shift"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Način unosa simbola"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Način pisanja slova"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonski način rada"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Način unosa telefonskih simbola"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tipkovnica je skrivena"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Način prikazane tipkovnice: <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datum i vrijeme"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-pošta"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"slanje poruka"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"brojevi"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"vrijeme"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Pokret fraze"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Umećite razmake tijekom izvođenja pokreta klizeći do razmaknice"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tipka za glasovni unos"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na glavnoj tipkovnici"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na tipkovnici simb."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Isključeno"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon na gl. tipkovnici"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. na tipk. simb."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. unos onemog."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nije omogućen nijedan način glasovnog unosa. Provjerite postavke jezika i unosa."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfiguriraj načine ulaza"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Jezici unosa"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Slanje povratnih informacija"</string>
     <string name="select_language" msgid="3693815588777926848">"Jezici unosa"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Dodirnite ponovo za spremanje"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Rječnik je dostupan"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Omogući korisničke povratne informacije"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Pomozite u poboljšanju ovog uređivača načina unosa automatskim slanjem statistike upotrebe i izvješća o padu programa"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Engleski (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Engleski (SAD)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"španjolski (SAD)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"engleski (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"engleski (SAD) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"španjolski (SAD) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicionalni)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"engleska (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"engleska (SAD) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"španjolska (SAD) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicionalni)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ćirilica)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latinica)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Nema jezika (abeceda)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Abeceda (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Abeceda (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Abeceda (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Abeceda (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Shema boja"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Bijela"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Plava"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Prilagođeni stilovi unosa"</string>
     <string name="add_style" msgid="6163126614514489951">"Dodaj stil"</string>
     <string name="add" msgid="8299699805688017798">"Dodaj"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Omogući"</string>
     <string name="not_now" msgid="6172462888202790482">"Ne sada"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Već postoji isti stil unosa: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način studije upotrebljivosti"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Odgoda dugog pritiska tipke"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Trajanje vibracije pritiska"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Glasnoća pritiska tipke"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Čitanje datoteke vanjskog rječnika"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"U mapi Preuzimanja nema datoteka rječnika"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Odabir datoteke rječnika za instaliranje"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Želite li doista instalirati ovu datoteku za <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Želite li zaista instalirati tu datoteku za <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Došlo je do pogreške"</string>
     <string name="button_default" msgid="3988017840431881491">"Zadano"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Dobro došli u aplikaciju <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Osvježavanje"</string>
     <string name="last_update" msgid="730467549913588780">"Zadnje ažuriranje"</string>
     <string name="message_updating" msgid="4457761393932375219">"Provjera ažuriranja"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Učitavanje..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Učitavanje…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Glavni rječnik"</string>
     <string name="cancel" msgid="6830980399865683324">"Odustani"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Postavke"</string>
     <string name="install_dict" msgid="180852772562189365">"Instaliraj"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Odustani"</string>
     <string name="delete_dict" msgid="756853268088330054">"Izbriši"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Dostupan je rječnik za odabrani jezik na vašem uređaju.&lt;br/&gt; Preporučujemo &lt;b&gt;preuzimanje&lt;/b&gt; rječnika za <xliff:g id="LANGUAGE">%1$s</xliff:g> radi boljeg doživljaja unosa teksta.&lt;br/&gt; &lt;br/&gt; Na 3G mreži preuzimanje može potrajati minutu ili dvije. Može podlijegati naplati ako nemate &lt;b&gt;neograničenu podatkovnu tarifu&lt;/b&gt;.&lt;br/&gt; Ako niste sigurni koju tarifu imate, preporučujemo da pronađete Wi-Fi mrežu i pokrenete automatsko preuzimanje.&lt;br/&gt; &lt;br/&gt; Savjet: rječnike možete preuzeti i ukloniti u odjeljku &lt;b&gt;Jezik i unos&lt;/b&gt; na izborniku &lt;b&gt;Postavke&lt;/b&gt; na mobilnom uređaju."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Dostupan je rječnik za odabrani jezik na vašem mobilnom uređaju.&lt;br/&gt; Preporučujemo da &lt;b&gt;preuzmete&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> rječnik radi lakšeg unosa teksta.&lt;br/&gt; &lt;br/&gt; Preuzimanje može potrajati jednu do dvije minute putem 3G-a. Možda se naplaćuje dodatna naknada ako nemate &lt;b&gt;neograničenu podatkovnu tarifu&lt;/b&gt;.&lt;br/&gt; Ako niste sigurni koju tarifu imate, preporučujemo da pronađete Wi-Fi vezu kako bi se automatski pokrenulo preuzimanje.&lt;br/&gt; &lt;br/&gt; Savjet: rječnike možete preuzeti i ukloniti u odjeljku &lt;b&gt;Jezik i unos&lt;/b&gt; u izborniku &lt;b&gt;Postavke&lt;/b&gt; na mobilnom uređaju."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Preuzmi sada (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Preuzmi putem Wi-Fi mreže"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Dostupan je rječnik za <xliff:g id="LANGUAGE">%1$s</xliff:g> jezik"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Dostupan je rječnik za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> jezik"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Pritisnite za pregled i preuzimanje"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Preuzimanje: prijedlozi za <xliff:g id="LANGUAGE">%1$s</xliff:g> bit će spremni uskoro."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Preuzimanje: prijedlozi za <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> bit će spremni uskoro."</string>
     <string name="version_text" msgid="2715354215568469385">"Verzija <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Dodavanje"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Dodaj u rječnik"</string>
diff --git a/java/res/values-hu/strings-action-keys.xml b/java/res/values-hu/strings-action-keys.xml
index 257f30f..6de2d30 100644
--- a/java/res/values-hu/strings-action-keys.xml
+++ b/java/res/values-hu/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Előző"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Kész"</string>
     <string name="label_send_key" msgid="482252074224462163">"Küld"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Keresés"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Állj"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Vár"</string>
 </resources>
diff --git a/java/res/values-hu/strings-config-important-notice.xml b/java/res/values-hu/strings-config-important-notice.xml
new file mode 100644
index 0000000..c023293
--- /dev/null
+++ b/java/res/values-hu/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Javaslatok javítása a kommunikáció és begépelt adatok alapján"</string>
+</resources>
diff --git a/java/res/values-hu/strings-letter-descriptions.xml b/java/res/values-hu/strings-letter-descriptions.xml
new file mode 100644
index 0000000..9087c6c
--- /dev/null
+++ b/java/res/values-hu/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Sorszámnévjelölő (nőnemű)"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"„mű” jel"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Sorszámnévjelölő (hímnemű)"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Scharfes S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, tompa ékezettel"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, éles ékezettel"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, hullámvonallal"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, trémával"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, felette körrel"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ikerbetű"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cédille-jel"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, tompa ékezettel"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, éles ékezettel"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, trémával"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, tompa ékezettel"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, éles ékezettel"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, trémával"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth betű"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, hullámvonallal"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, tompa ékezettel"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, éles ékezettel"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, hullámvonallal"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, trémával"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, áthúzva"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, tompa ékezettel"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, éles ékezettel"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, trémával"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, éles ékezettel"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn betű"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, trémával"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, hosszúsági jellel"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, rövidségi jellel"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, horoggal"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, éles ékezettel"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, felette ponttal"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, hacsekkel"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, hacsekkel"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, áthúzva"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, hosszúsági jellel"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, rövidségi jellel"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, felette ponttal"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, horoggal"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, hacsekkel"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, rövidségi jellel"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, felette ponttal"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cédille-jel"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, áthúzva"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, hullámvonallal"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, hosszúsági jellel"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, rövidségi jellel"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, horoggal"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Pont nélküli I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ikerbetű"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cédille-jel"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra betű"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, éles ékezettel"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cédille-jel"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, hacsekkel"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, középen ponttal"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, áthúzva"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, éles ékezettel"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cédille-jel"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, hacsekkel"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, előtte aposztróffal"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng betű"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, hosszúsági jellel"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, rövidségi jellel"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, dupla éles ékezettel"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ikerbetű"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, éles ékezettel"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cédille-jel"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, hacsekkel"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, éles ékezettel"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cédille-jel"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, hacsekkel"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cédille-jel"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, hacsekkel"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, áthúzva"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, hullámvonallal"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, hosszúsági jellel"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, rövidségi jellel"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, felette körrel"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, dupla éles ékezettel"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, horoggal"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, kúpos ékezettel"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, éles ékezettel"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, felette ponttal"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, hacsekkel"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Hosszú S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, szarvval"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, szarvval"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, alatta vesszővel"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, alatta vesszővel"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa betű"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, felette kampóval"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, kúpos ékezettel és éles ékezettel"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, kúpos ékezettel és tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, kúpos ékezettel és felette kampóval"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, kúpos ékezettel és hullámvonallal"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, kúpos ékezettel és alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, rövidségi jellel és éles ékezettel"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, rövidségi jellel és tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, rövidségi jellel és felette kampóval"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, rövidségi jellel és hullámvonallal"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, rövidségi jellel és alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, felette kampóval"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, hullámvonallal"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, kúpos ékezettel és éles ékezettel"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, kúpos ékezettel és tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, kúpos ékezettel és felette kampóval"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, kúpos ékezettel és hullámvonallal"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, kúpos ékezettel és alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, felette kampóval"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, alatta ponttal"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, alatta ponttal"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, felette kampóval"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, kúpos ékezettel és éles ékezettel"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, kúpos ékezettel és tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, kúpos ékezettel és felette kampóval"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, kúpos ékezettel és hullámvonallal"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, kúpos ékezettel és alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, szarvval és éles ékezettel"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, szarvval és tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, szarvval és felette kampóval"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, szarvval és hullámvonallal"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, szarvval és alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, felette kampóval"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, szarvval és éles ékezettel"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, szarvval és tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, szarvval és felette kampóval"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, szarvval és hullámvonallal"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, szarvval és alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, tompa ékezettel"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, alatta ponttal"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, felette kampóval"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, hullámvonallal"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Fordított felkiáltójel"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Balra mutató francia csúcsos dupla idézőjel"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Középső pont"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Felső indexszám egy"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Jobbra mutató francia csúcsos dupla idézőjel"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Fordított kérdőjel"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Bal angol szimpla idézőjel"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Jobb angol szimpla idézőjel"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Bal német szimpla idézőjel"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Bal dupla idézőjel"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Jobb dupla idézőjel"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kereszt"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Kettős kereszt"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Ezrelékjel"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Percjel"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Másodpercjel"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Balra mutató francia csúcsos szimpla idézőjel"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Jobbra mutató francia csúcsos szimpla idézőjel"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Felső indexszám négy"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Felső index latin kisbetűs n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso jel"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Százalék"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Jobbra mutató nyíl"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Lefelé mutató nyíl"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Üres halmaz"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Növekmény"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Egyenlő vagy kisebb mint"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Egyenlő vagy nagyobb mint"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Fekete csillag"</string>
+</resources>
diff --git a/java/res/values-hu/strings-talkback-descriptions.xml b/java/res/values-hu/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..ae0c047
--- /dev/null
+++ b/java/res/values-hu/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Csatlakoztasson egy headsetet, ha hallani szeretné a jelszót felolvasva."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"A jelenlegi szöveg: %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nincs szöveg megadva"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> billentyű – <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> szóra javítja a következőt: <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> billentyű automatikus javítást végez"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Ismeretlen karakter"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"További szimbólumok"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Szimbólumok"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Törlés"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Szimbólumok"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Betűk"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Számok"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Beállítások"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Szóköz"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Hangbevitel"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Hangulatjel"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Keresés"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Pont"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Nyelvváltás"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Következő"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Előző"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift bekapcsolva"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock bekapcsolva"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"„Szimbólumok” mód"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"További szimbólumok mód"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"„Betű” mód"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"„Telefon” mód"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"„Telefonos szimbólumok” mód"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Billentyűzet elrejtve"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> billentyűzet megjelenítve"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"dátum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dátum és idő"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"üzenetváltás"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"szám"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"szöveg"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"idő"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Legutóbbiak"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Emberek"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objektumok"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Természet"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Helyek"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Szimbólumok"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Hangulatjelek"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Nagy <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Nagy I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Nagy I, felette ponttal"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ismeretlen szimbólum"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ismeretlen hangulatjel"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Az alternatív karakterek elérhetők"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Az alternatív karakterek billentyűzete bezárva"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Az alternatív javaslatok elérhetők"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Az alternatív javaslatok panel bezárva"</string>
+</resources>
diff --git a/java/res/values-hu/strings.xml b/java/res/values-hu/strings.xml
index a61378f..8e65921 100644
--- a/java/res/values-hu/strings.xml
+++ b/java/res/values-hu/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Beviteli beállítások"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Naplózási parancsok"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Névjegyek keresése"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"A helyesírás-ellenőrző használja a névjegyek bejegyzéseit"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Rezgés gombnyomásra"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Hangjelzés gombnyomásra"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Nagyobb billentyű gombnyomásra"</string>
-    <string name="general_category" msgid="1859088467017573195">"Általános"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Szövegjavítás"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Kézmozdulatokkal történő gépelés"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Egyéb beállítások"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Speciális beállítások"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Beállítások gyakorlott felhasználóknak"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Váltás más beviteli módra"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A nyelvkapcsoló gomb egyéb beviteli módokat is tartalmaz"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"A nyelvkapcsoló"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Alapértelmezett"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Javasolt névjegyek"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"A névjegyek használata a javaslatokhoz és javításokhoz"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Testreszabott javaslatok"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> javítása"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dupla szóköz: pont"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"A szóköz kétszeri megérintése beszúr egy pontot, majd egy szóközt"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automatikusan nagy kezdőbetű"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mozdulat irányának mutatása"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamikus lebegő előnézet"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"A javasolt szó megtekintése kézmozdulat közben"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : mentve"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Csatlakoztasson egy headsetet, ha hallani szeretné a jelszót felolvasva."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"A jelenlegi szöveg: %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Szöveg nincs megadva"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> billentyű: <xliff:g id="CORRECTED">%3$s</xliff:g> szóra javítja a következőt: <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> billentyű automatikus javítást végez"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Billentyűkód: %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift be van kapcsolva (érintse meg a kikapcsoláshoz)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock be van kapcsolva (érintse meg a kikapcsoláshoz)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Törlés"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Szimbólumok"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Betűk"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Számok"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Beállítások"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Szóköz"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Hangbevitel"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Mosolygós arc"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Keresés"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Pont"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Nyelvek felcserélése"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Következő"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Előző"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift bekapcsolva"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock bekapcsolva"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift kikapcsolva"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"\"Szimbólumok\" mód"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"\"Betű\" mód"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"\"Telefon\" mód"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"\"Telefonos szimbólumok\" mód"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Billentyűzet elrejtve"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g> billentyűzet megjelenítve"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"dátum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"dátum és idő"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"üzenetváltás"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"szám"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"szöveg"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"idő"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Kifejezés-kézmozdulat"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Szóköz írása kézmozdulatok során: húzza el ujját a szóköz felett"</string>
     <string name="voice_input" msgid="3583258583521397548">"Hangbeviteli gomb"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"A fő billentyűzeten"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Szimbólumoknál"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Ki"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon a billentyűzeten"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr. a szimbólumoknál"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hangbevivel KI"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nincs engedélyezett hangbeviteli módszer. Nézze meg a Nyelvi és beviteli beállításokat."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Beviteli módok beállítása"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Beviteli nyelvek"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Visszajelzés küldése"</string>
     <string name="select_language" msgid="3693815588777926848">"Beviteli nyelvek"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Érintse meg újból a mentéshez"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Van elérhető szótár"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Felhasználói visszajelzés engedélyezése"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Segíthet a beviteli módszer szerkesztőjének javításában, ha engedélyezi a használati statisztikák és a hibajelentések automatikus elküldését."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Billentyűzettéma"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"angol (brit)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"angol (amerikai)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"spanyol (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angol (brit) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angol (amerikai) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"spanyol (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (hagyományos)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"angol (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"angol (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"spanyol (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (hagyományos)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cirill)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Nincs nyelv (ábécé)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Ábécé (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Ábécé (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Ábécé (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Ábécé (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Hangulatjel"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Színséma"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Fehér"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Kék"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Egyedi bevitelstílusok"</string>
     <string name="add_style" msgid="6163126614514489951">"Új stílus"</string>
     <string name="add" msgid="8299699805688017798">"Hozzáadás"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Engedélyezés"</string>
     <string name="not_now" msgid="6172462888202790482">"Most nem"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Ugyanez a bemenetstílus már létezik: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Használhatósági teszt"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Hosszú nyomás késleltetése"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Gombnyomás rezgési időtartama"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Gombnyomás hangereje"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Külső szótárfájl olvasása"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Nincs szótárfájl a Letöltések mappában."</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Válasszon ki egy szótárfájlt a telepítéshez."</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Valóban telepíti ezt a fájlt <xliff:g id="LOCALE_NAME">%s</xliff:g> nyelvhez?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Valóban telepíti ezt a fájlt <xliff:g id="LANGUAGE_NAME">%s</xliff:g> nyelvhez?"</string>
     <string name="error" msgid="8940763624668513648">"Hiba történt."</string>
     <string name="button_default" msgid="3988017840431881491">"Alapértelmezett"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Üdvözli a(z) <xliff:g id="APPLICATION_NAME">%s</xliff:g>!"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Frissítés"</string>
     <string name="last_update" msgid="730467549913588780">"Legutóbb frissítve"</string>
     <string name="message_updating" msgid="4457761393932375219">"Frissítések keresése"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Betöltés..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Betöltés…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Fő szótár"</string>
     <string name="cancel" msgid="6830980399865683324">"Mégse"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Beállítások"</string>
     <string name="install_dict" msgid="180852772562189365">"Telepítés"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Mégse"</string>
     <string name="delete_dict" msgid="756853268088330054">"Törlés"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"A mobileszközön kiválasztott nyelvhez szótár érhető el.&lt;br/&gt; A gépelési élmény javításához javasoljuk a(z) <xliff:g id="LANGUAGE">%1$s</xliff:g> szótár &lt;b&gt;letöltését.&lt;br/&gt; &lt;br/&gt; A letöltés 3G hálózaton keresztül néhány percig tart. Ha &lt;b&gt;előfizetése nem korlátlan&lt;/b&gt;, a letöltés költségekkel járhat.&lt;br/&gt; Ha nem biztos abban, hogy milyen adatcsomagot használ, javasoljuk, hogy keressen egy Wi-Fi kapcsolatot a letöltés automatikus elindításához.&lt;br/&gt; &lt;br/&gt; Tipp: a szótárakat a mobileszköz &lt;b&gt;Beállítások&lt;/b&gt; menüjében a &lt;b&gt;Nyelv és bevitel&lt;/b&gt; részben töltheti le és távolíthatja el."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"A mobileszközön kiválasztott nyelvhez szótár érhető el.&lt;br/&gt; A gépelési élmény javításához javasoljuk a(z) <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> szótár &lt;b&gt;letöltését.&lt;br/&gt; &lt;br/&gt; A letöltés 3G hálózaton keresztül néhány percig tart. Ha &lt;b&gt;előfizetése nem korlátlan&lt;/b&gt;, a letöltés költségekkel járhat.&lt;br/&gt; Ha nem biztos abban, hogy milyen adatcsomagot használ, javasoljuk, hogy keressen egy Wi-Fi-kapcsolatot a letöltés automatikus elindításához.&lt;br/&gt; &lt;br/&gt; Tipp: szótárakat a mobileszköz a &lt;b&gt;Beállítások&lt;/b&gt; menü &lt;b&gt;Nyelv és bevitel&lt;/b&gt; részében tölthet le és távolíthat el."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Töltse le most (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Letöltés Wi-Fivel"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g> nyelvhez van rendelkezésre álló szótár"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> nyelvhez van rendelkezésre álló szótár"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Nyomja meg az áttekintéshez és letöltéshez"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Letöltés: a(z) <xliff:g id="LANGUAGE">%1$s</xliff:g> nyelvvel kapcsolatos javaslatok hamarosan elérhetők lesznek."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Letöltés: a(z) <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> nyelvvel kapcsolatos javaslatok hamarosan elérhetők lesznek."</string>
     <string name="version_text" msgid="2715354215568469385">"Verzió: <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Hozzáadás"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Hozzáadás a szótárhoz"</string>
diff --git a/java/res/values-hy-rAM/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-hy-rAM/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..ed35365
--- /dev/null
+++ b/java/res/values-hy-rAM/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Same list as in English, but add armenian period and comma: -->
+    <!-- U+055D: "՝" ARMENIAN COMMA -->
+    <!-- U+0589: "։" ARMENIAN FULL STOP -->
+    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
+    <string name="symbols_followed_by_space">.,;:!?)]}&amp;&#x0589;&#x055D;</string>
+    <!-- Symbols that separate words. Adding armenian period and comma. -->
+    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
+    <string name="symbols_word_separators">"&#x0009;&#x0020;&#x000A;&#x00A0;"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"&#x0589;&#x055D;</string>
+    <!-- The sentence separator code point, for capitalization -->
+    <!-- U+0589: "։" ARMENIAN FULL STOP   ; 589h = 1417d -->
+    <integer name="sentence_separator">1417</integer>
+</resources>
diff --git a/java/res/values-hy-rAM/donottranslate.xml b/java/res/values-hy-rAM/donottranslate.xml
deleted file mode 100644
index 7b0c566..0000000
--- a/java/res/values-hy-rAM/donottranslate.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Same list as in English, but add armenian period and comma: -->
-    <!-- U+055D: "՝" ARMENIAN COMMA -->
-    <!-- U+0589: "։" ARMENIAN FULL STOP -->
-    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
-    <string name="symbols_followed_by_space">.,;:!?)]}&amp;&#x0589;&#x055D;</string>
-    <!-- Symbols that separate words. Adding armenian period and comma. -->
-    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
-    <string name="symbols_word_separators">"&#x0009;&#x0020;\n"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"&#x0589;&#x055D;</string>
-    <!-- The sentence separator code point, for capitalization -->
-    <!-- U+0589: "։" ARMENIAN FULL STOP   ; 589h = 1417d -->
-    <integer name="sentence_separator">1417</integer>
-</resources>
diff --git a/java/res/values-hy-rAM/strings-action-keys.xml b/java/res/values-hy-rAM/strings-action-keys.xml
index af9dd5d..9dd59b8 100644
--- a/java/res/values-hy-rAM/strings-action-keys.xml
+++ b/java/res/values-hy-rAM/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Նախորդը"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Պատրաստ է"</string>
     <string name="label_send_key" msgid="482252074224462163">"Ուղարկել"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Որոնում"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Դադարեցնել"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Սպասել"</string>
 </resources>
diff --git a/java/res/values-hy-rAM/strings-config-important-notice.xml b/java/res/values-hy-rAM/strings-config-important-notice.xml
new file mode 100644
index 0000000..9fac631
--- /dev/null
+++ b/java/res/values-hy-rAM/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Բարելավեք առաջարկները` ձեր նամակագրությունից և մուտքագրած տվյալներից"</string>
+</resources>
diff --git a/java/res/values-hy-rAM/strings-emoji-descriptions.xml b/java/res/values-hy-rAM/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..f41f2fc
--- /dev/null
+++ b/java/res/values-hy-rAM/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Հեղինակային իրավունքի նշան"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Գրանցված ապրանքանիշի նշան"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Կրկնակի բացականչական նշան"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Բացականչական հարցական նշան"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Ապրանքանշանի նշան"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Տեղեկատվական աղբյուր"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Ձախ-աջ սլաք"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Վեր-վար սլաք"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Սլաք դեպի հյուսիս-արևմուտք"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Սլաք դեպի հյուսիս-արևելք"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Սլաք դեպի հարավ-արևելք"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Սլաք դեպի հարավ-արևմուտք"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Կեռ ձախ սլաք"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Կեռ աջ սլաք"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Ժամացույց"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Ավազի ժամացույց"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Դեպի աջ ուղղված սև կրկնակի եռանկյուն"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Դեպի ձախ ուղղված սև կրկնակի եռանկյուն"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Դեպի վեր ուղղված սև կրկնակի եռանկյուն"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Դեպի վար ուղղված սև կրկնակի եռանկյուն"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Զարթուցիչ"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Հոսող ավազով ժամացույց"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Շրջանաձև լատիներեն մեծատառ m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Փոքր սև քառակուսի"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Փոքր սպիտակ քառակուսի"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Դեպի աջ ուղղված սև եռանկյուն"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Դեպի ձախ ուղղված սև եռանկյուն"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Միջին սպիտակ քառակուսի"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Միջին սև քառակուսի"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Միջին փոքր սպիտակ քառակուսի"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Միջին փոքր սև քառակուսի"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Սև արև` ճառագայթներով"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Ամպ"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Սև հեռախոս"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Քվեատուփ` նշանով"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Անձրևանոց` անձրևի կաթիլներով"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Տաք ըմպելիք"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Սպիտակ դեպի վեր ուղղված դասիչ"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Սպիտակ ժպտացող դեմք"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Խոյ"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Ցուլ"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Երկվորյակ"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Խեցգետին"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Առյուծ"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Կույս"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Կշեռք"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Կարիճ"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Աղեղնավոր"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Այծեղջյուր"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Ջրհոս"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Ձկներ"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Սև ագռավ"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Սև խաչ"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Սև սիրտ"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Սև աղյուս"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Տաք աղբյուրներ"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Սև վերամշակման նշան"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Սայլակի նշան"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Խարիսխ"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Զգուշացման նշան"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Բարձր լարման նշան"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Միջին սպիտակ շրջան"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Միջին սև շրջան"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Ֆուտբոլի գնդակ"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Բեյսբոլ"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Առանց ձյան ձնեմարդ"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Արևն ամպի ետևում"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Օձակալ"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Մուտք չկա"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Եկեղեցի"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Շատրվան"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Դրոշը փոսում"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Առագաստանավ"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Վրան"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Վառելիքի պոմպ"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Սև մկրատ"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Սպիտակ խոշոր ստուգանիշ"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Ինքնաթիռ"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Ծրար"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Բարձրացրած բռունցք"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Բարձրացրած ձեռք"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Հաղթանշան"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Մատիտ"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Սև գրչածայր"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Խոշոր ստուգանիշ"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Խոշոր բազմապատկում x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Կայծեր"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Ութանկյուն աստղանիշ"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Ութ կետով սև աստղ"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Ձյան փաթիլ"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Կայծ"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Խաչանշան"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Բացասական քառակուսի խաչանշան"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Սև հարցական նշաններով նախշազարդ"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Սպիտակ հարցական նշաններով նախշազարդ"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Սպիտակ բացականչական նշաններով նախշազարդ"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Խոշոր բացականչական նշան"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Սև սիրտ"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Խոշոր գումարման նշան"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Խոշոր հանման նշան"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Խոշոր բաժանման նշան"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Սև դեպի աջ սլաք"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Խուճուճ հանգույց"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Կրկնակի խուճուճ հանգույց"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Դեպի աջ ուղղված, ապա դեպի վեր ծռված սլաք"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Դեպի աջ ուղղված, ապա դեպի վար ծռված սլաք"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Դեպի ձախ սև սլաք"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Դեպի վեր սև սլաք"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Դեպի վար սև սլաք"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Մեծ սև քառակուսի"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Մեծ սպիտակ քառակուսի"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Միջին սպիտակ քառակուսի"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Խոշոր շրջան"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Ալիքաձև գծիկ"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Երաժշտական փոփոխականի նշան"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Շնորհավորանքի շրջանաձև խորհրդանշան"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Գաղտնիքի շրջանաձև խորհրդանշան"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Մահջոնգի սալիկ՝ կարմիր վիշապով"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Սև ջոկեր խաղաքարտ"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Արյան Ա խումբ"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Արյան Բ խումբ"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Արյան Օ խումբ"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Ավտոկայանատեղի"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Արյան ԱԲ խումբ"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"Քառակուսի CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Քառակուսի COOL"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Քառակուսի FREE"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Քառակուսի ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Քառակուսի NEW"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Քառակուսի NG"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Քառակուսի OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Քառակուսի SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Քառակուսի UP բացականչական նշանով"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Քառակուսի vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Քառակուսի Կատականա այստեղ"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Քառակուսի Կատականա ծառայություն"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Քառակուսի խորհրդանշան անվճար"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Քառակուսի խորհրդանշան պահված տեղ"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Քառակուսի խորհրդանշան արգելում"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Քառակուսի խորհրդանշան թափուր աշխատատեղ"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Քառակուսի խորհրդանշան ընդունված"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Քառակուսի խորհրդանշան լրիվ զբաղվածություն"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Քառակուսի խորհրդանշան վճարված"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Քառակուսի խորհրդանշան ամսական"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Քառակուսի խորհրդանշան դիմում"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Քառակուսի խորհրդանշան զեղչ"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Քառակուսի խորհրդանշան աշխատում է"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Շրջանաձև խորհրդանշան առավելություն"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Շրջանաձև խորհրդանշան ընդունում"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Ցիկլոն"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Մառախլապատ"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Փակ անձրևանոց"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Աստղազարդ գիշեր"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Արևածագը լեռներում"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Արևածագ"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Քաղաքը մթնշաղում"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Մայրամուտը շենքերի վրա"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Ծիածան"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Կամուրջը գիշերը"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Ծովի ալիք"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Հրաբուխ"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Ծիր կաթին"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Երկրագունդը՝ Եվրոպա-Աֆրիկա"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Երկրագունդը՝ Ամերիկաներ"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Երկրագունդը՝ Ավստրալիա"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Երկրագունդը միջօրեականներով"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Նորալուսնի նշան"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Աճող կիսալուսնի նշան"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Լուսնի առաջին քառորդի նշան"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Աճող ուռուցիկ լուսնի նշան"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Լիալուսնի նշան"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Փոքրացող ուռուցիկ լուսնի նշան"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Լուսնի վերջին քառորդի նշան"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Փոքրացող կիսալուսնի նշան"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Կիսալուսին"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Դեմքով նորալուսին"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Առաջին քառորդ լուսին՝ դեմքով"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Վերջին քառորդ լուսին՝ դեմքով"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Դեմքով լիալուսին"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Դեմքով արև"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Փայլուն աստղ"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Կրակող աստղ"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Շագանակ"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Սածիլ"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Մշտադալար ծառ"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Տերևաշատ ծառ"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Պալմա"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Կակտուս"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Կակաչ"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Բալենու ծաղիկ"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Վարդ"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Հիբիսկուս"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Արևածաղիկ"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Ծաղիկ"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Եգիպտացորեն"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Բրինձ"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Խոտաբույս"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Քառատերև երեքնուկ"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Թխկու տերև"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Թափված տերև"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Քամուց թռչող տերև"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Սունկ"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Լոլիկ"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Սմբուկ"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Խաղող"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Սեխ"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Ձմերուկ"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Մանդարին"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Կիտրոն"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Բանան"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Արքայախնձոր"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Կարմիր խնձոր"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Կանաչ խնձոր"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Տանձ"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Դեղձ"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Բալ"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Ելակ"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Համբուրգեր"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Պիցցայի կտոր"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Ոսկորով միս"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Հավի բուդ"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Բրնձի կրեկեր"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Բրնձի կլորակ"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Եփած բրինձ"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Քարի և բրինձ"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Գոլորշիացող բաժակ"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Սպագետտի"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Հաց"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Տապակած կարտոֆիլ"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Տապակած քաղցր կարտոֆիլ"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Դանգո"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Օդեն"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Սուշի"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Տապակած ծովախեցգետին"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Ձկան տորթ՝ օղակաձև ձևավորմամբ"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Լցնովի պաղպաղակ"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Սառցե դեսերտ"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Պաղպաղակ"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Դոնաթ"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Թխվածքաբլիթ"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Շոկոլադի սալիկ"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Կոնֆետ"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Սառնաշաքար կոնֆետ"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Եփովի կրեմ"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Մեղրանոթ"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Տորթի կտոր"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Բենտոյով տուփ"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Սնունդով լի ափսե"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Խոհարարություն"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Դանակ և պատառաքաղ"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Թեյի անպոչ բաժակ"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Սակեի շիշ և գավաթ"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Գինու գավաթ"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Կոկտեյլի բաժակ"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Արևադարձային խմիչք"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Գարեջրի բաժակ"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Զրնգացող գարեջրի բաժակներ"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Մանկական շիշ"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Ժապավեն"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Փաթեթավորված նվեր"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Ծննդյան տորթ"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Դդմի լապտեր"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Տոնածառ"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Ձմեռ պապ"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Հրավառություն"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Բենգալյան կրակ"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Փուչիկ"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Ճայթուկ"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Կոնֆետտի գնդակ"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Տանաբատա ծառ"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Հատվող դրոշներ"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Սոճու ձևավորում"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Ճապոնական տիկնիկներ"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Կարպ նավադրոշ"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Քամու երգ"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Լուսնի դիտման արարողություն"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Դպրոցական պայուսակ"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Ավարտական ​​գլխարկ"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Ձի կարուսել"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Սատանայի անիվ"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Ուրախ սարեր"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Ձկնորսական կարթ և ձուկ"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Բարձրախոս"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Տեսախցիկ"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Կինոթատրոն"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Ականջակալ"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Ներկապնակ"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Ցիլինդր"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Կրկեսային վրան"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Տոմս"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Ծափափեղկ"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Կատարողական արվեստ"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Տեսախաղ"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Ուղղակի հարված"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Խաղասարք"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Բիլիարդ"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Խաղազառ"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Բոուլինգ"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Ծաղկով խաղաքարտեր"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Երաժշտական ձայնանիշ"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Մի քանի երաժշտական ձայնանիշ"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Սաքսոֆոն"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Կիթառ"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Երաժշտական ստեղնաշար"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Շեփոր"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Ջութակ"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Նոտագրում"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Վազքի վերնաշապիկ"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Թենիսի թիակ և գնդակ"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Դահուկ և դահուկի կոշիկ"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Բասկետբոլի գնդակ և զամբյուղ"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Վերջնակետի դրոշ"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Ձնատախտակորդ"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Վազորդ"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Ալեսահորդ"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Մրցանակ"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Ձիարշավ"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Ամերիկյան ֆուտբոլ"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Ռեգբի"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Լողորդ"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Բնակելի շենք"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Այգով տուն"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Գրասենյակային շենք"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Ճապոնական փոստատուն"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Եվրոպական փոստատուն"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Հիվանդանոց"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Բանկ"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Բանկոմատ"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Հյուրանոց"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Սիրո հյուրանոց"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Պարենային խանութ"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Դպրոց"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Հանրախանութ"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Գործարան"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Ճապոնական լապտեր"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Ճապոնական ամրոց"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Եվրոպական ամրոց"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Առնետ"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Մուկ"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Եզ"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Գոմեշ"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Կով"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Ընձառյուծ"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Ճագար"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Կատու"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Վիշապ"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Կոկորդիլոս"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Կետ"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Խխունջ"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Օձ"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Ձի"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Խոյ"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Այծ"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Ոչխար"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Կապիկ"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Աքաղաղ"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Հավ"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Շուն"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Խոզ"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Վարազ"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Փիղ"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Ութոտնուկ"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Պարուրաձև խեցի"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Բզեզ"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Մրջյուն"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Մեղու"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Զատիկ"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Ձուկ"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Արևադարձային ձուկ"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Գնդաձուկ"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Կրիա"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Թուխսի ճուտ"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Ճուտիկ"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Դիմահայաց ճուտիկ"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Թռչուն"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Պինգվին"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Կոալա"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Պուդել"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Դրոմադեր ուղտ"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Երկսապատանի ուղտ"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Դելֆին"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Մկան մռութ"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Կովի մռութ"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Վագրի մռութ"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Ճագարի մռութ"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Կատվի մռութ"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Վիշապի մռութ"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Թռչող կետ"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Ձիու մռութ"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Կապիկի մռութ"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Շան մռութ"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Խոզի մռութ"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Գորտի մռութ"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Գերմանամկան դեմք"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Գայլի մռութ"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Արջի մռութ"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Պանդայի մռութ"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Խոզի քիթ"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Թաթի հետքեր"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Աչքեր"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Ականջ"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Քիթ"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Բերան"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Լեզու"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Վեր ուղղված սպիտակ ցուցամատ"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Վար ուղղված սպիտակ ցուցամատ"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Ձախ ուղղված սպիտակ ցուցամատ"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Աջ ուղղված սպիտակ ցուցամատ"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Բռունցքի նշան"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Թափահարող ձեռքի նշան"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Ok-ի նշան"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Բութ մատները վեր նշան"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Բութ մատները վար նշան"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Ծափահարող ձեռքերի նշան"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Բաց ափերով ձեռքերի նշան"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Թագ"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Կնոջ գլխարկ"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Ակնոց"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Փողկապ"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Շապիկ"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Ջինս"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Զգեստ"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Կիմոնո"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Բիկինի"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Կնոջ հագուստ"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Դրամապանակ"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Պայուսակ"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Քսակ"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Տղամարդու կոշիկ"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Մարզակոշիկ"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Բարձրակրունկ կոշիկ"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Կնոջ սանդալներ"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Կնոջ երկարաճիտ կոշիկներ"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Ոտնահետքեր"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Կիսանդրու ուրվագիծ"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Կիսանդրիների ուրվագիծ"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Տղա"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Աղջիկ"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Տղամարդ"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Կին"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Ընտանիք"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Միացված ձեռքերով տղամարդ և կին"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Միացված ձեռքերով երկու տղամարդ"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Միացված ձեռքերով երկու կին"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Ոստիկան"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Նապաստակի ականջներով կին"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Քողով հարսնացու"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Շիկահեր մարդ"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Չինական գլխարկով տղամարդ"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Գլխաշորով տղամարդ"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Ծեր տղամարդ"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Ծեր կին"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Մանուկ"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Շինարար"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Արքայադուստր"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Ճապոնական օգր"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Ճապոնական գոբլին"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Ուրվական"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Մանուկ հրեշտակ"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Այլմոլորակային"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Այլմոլորակային հրեշ"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Սատանայի ճուտ"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Գանգ"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Տեղեկատու անձ"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Պահնորդ"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Պարող"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Շրթներկ"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Եղունգաներկ"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Դեմքի մերսում"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Սանրվածք"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Վարսավիրի նշան"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Ներարկիչ"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Հաբ"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Համբույրի նշան"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Սիրային նամակ"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Մատանի"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Թանկարժեք քար"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Համբույր"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Ծաղկեփունջ"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Զույգը սրտի մեջ"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Հարսանիք"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Բաբախող սիրտ"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Կոտրված սիրտ"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Երկու սրտեր"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Պսպղացող սիրտ"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Աճող սիրտ"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Խոցված սիրտ"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Կապույտ սիրտ"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Կանաչ սիրտ"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Դեղին սիրտ"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Մանուշակագույն սիրտ"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Ժապավենով սիրտ"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Միացող սրտեր"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Սրտիկներով ձևավորում"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Շեղանկյուն` կետիկով"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Էլեկտրական լամպ"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Ջղայնության նշան"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Ռումբ"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Քնի նշան"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Բախման նշան"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Հոսող քրտինքի նշան"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Կաթիլ"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Գծիկի նշան"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Կեղտի կույտ"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Լարված երկգլուխ մկան"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Գլխապտույտի նշան"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Խոսքի փուչիկ"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Մտքի փուչիկ"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Սպիտակ ծաղիկ"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Հարյուր միավորի նշան"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Փողի քսակ"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Արտարժույթի փոխանակում"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Խոշոր դոլարի նշան"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Վարկային քարտ"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Իենի նշանով թղթադրամ"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Դոլարի նշանով թղթադրամ"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Եվրոյի նշանով թղթադրամ"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Ֆունտի նշանով թղթադրամ"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Թևավոր թղթադրամ"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Աճման միտումով և իենի նշանով գրաֆիկ"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Նստատեղ"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Անհատական համակարգիչ"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Թղթապանակ"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Փոքր սկավառակ"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Ճկուն սկավառակ"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Օպտիկական սկավառակ"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Ֆայլերի թղթապանակ"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Ֆայլերի բաց թղթապանակ"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Ոլորված ծայրով էջ"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Թեքված էջ"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Օրացույց"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Պոկվող էջերով օրացույց"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Քարտային դասիչ"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Աճման միտումով գրաֆիկ"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Նվազման միտումով գրաֆիկ"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Ձողային գրաֆիկ"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Սեղմատախտակ"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Սևեռակ"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Կլոր սևեռակ"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Ամրակ"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Ուղիղ քանոն"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Եռանկյուն քանոն"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Էջանիշ"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Մատյան"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Նոթատետր"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Ձևավոր կազմով նոթատետր"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Փակ գիրք"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Բաց գիրք"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Կանաչ գիրք"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Կապույտ գիրք"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Նարնջագույն գիրք"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Գրքեր"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Անվանաքարտ"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Գալար"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Հիշեցում"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Լսափող"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Փեյջեր"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Հեռապատճենի սարք"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Արբանյակային ալեհավաք"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Հրապարակային բարձրախոս"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Ուրախ բարձրախոս"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Ելքային արկղ"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Մուտքային արկղ"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Փաթեթ"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Էլփոստի նշան"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Մուտքային ծրար"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Վերևից դեպի վար սլաքով ծրար"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Իջեցված դրոշով փակ փոստարկղ"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Բարձրացված դրոշով փակ փոստարկղ"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Բարձրացված դրոշով փակ փոստարկղ"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Իջեցված դրոշով բաց փոստարկղ"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Փոստարկղ"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Փոստային եղջյուր"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Թերթ"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Բջջային հեռախոս"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Բջջային հեռախոս՝ ձախ կողմում դեպի վեր սլաքով"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Թրթռոցի ռեժիմ"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Բջջային հեռախոսը` անջատած"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Բջջային հեռախոսներ չկան"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Ձողերով ալեհավաք"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Ֆոտոխցիկ"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Տեսախցիկ"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Հեռուստատեսություն"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Ռադիո"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Տեսաժապավեն"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Պտտված դեպի աջ սլաքներ"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Ժամացույցի սլաքի ուղղությամբ դեպի աջ և ձախ բաց շրջանաձև սլաքներ"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Ժամացույցի սլաքի ուղղությամբ դեպի աջ և ձախ բաց շրջանաձև սլաքներ՝ շրջանաձև մեկ վերադրումով"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Ժամացույցի սլաքի ուղղությամբ դեպի վար և վեր բաց շրջանաձև սլաքներ"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Ժամացույցի սլաքի հակառակ ուղղությամբ դեպի վար և վեր բաց շրջանաձև սլաքներ"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Ցածր պայծառության նշան"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Բարձր պայծառության նշան"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Չեղարկման գծով բարձրախոս"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Բարձրախոս"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Մեկ ձայնային ալիքով բարձրախոս"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Երեք ձայնային ալիքով բարձրախոս"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Մարտկոց"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Էլեկտրական խրոցակ"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Ձախ թեքված խոշորացույց"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Աջ թեքված խոշորացույց"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Կողպեք և թանաքի գրիչ"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Փակված կողպեք՝ բանալիով"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Բանալի"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Կողպեք"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Բաց կողպեք"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Զանգ"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Չեղարկման գծով զանգ"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Էջանիշ"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Հղման նշան"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Կետակոճակ"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Հետ՝ վերևում դեպի ձախ սլաքով"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Վերջ՝ վերևում դեպի ձախ սլաքով"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Միացված է՝ բացականչական նշանով և վերևում դեպի աջ ու ձախ սլաքով"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Շուտով՝ վերևում դեպի աջ սլաքով"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Վերև՝ վերևում դեպի վեր սլաքով"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Տասնութից ցածրի արգելման նշան"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Ստեղնատասնյակ"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Լատիներեն մեծատառերով մուտքագրման նշան"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Լատիներեն փոքրատառերով մուտքագրման նշան"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Թվային մուտքագրման նշան"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Նշանների ներածման նշան"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Լատինատառ մուտքագրման նշան"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Կրակ"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Էլեկտրական լապտեր"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Ոլորակ"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Մուրճ"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Մանեկ ու պտուտակ"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Ճապոնական դանակ"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Ատրճանակ"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Մանրադիտակ"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Հեռադիտակ"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Ապակե գնդակ"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Միջակետով վեցանկյուն աստղ"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Ճապոնական սկսնակի նշան"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Եռաժանու նշան"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Սև քառակուսի կոճակ"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Սպիտակ քառակուսի կոճակ"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Մեծ կարմիր շրջան"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Մեծ կապույտ շրջան"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Մեծ նարնջագույն շեղանկյուն"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Մեծ կապույտ շեղանկյուն"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Փոքր նարնջագույն շեղանկյուն"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Փոքր կապույտ շեղանկյուն"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Վեր ուղղված կարմիր եռանկյուն"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Վար ուղղված կարմիր եռանկյուն"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Վեր ուղղված փոքր կարմիր եռանկյուն"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Վար ուղղված փոքր կարմիր եռանկյուն"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Թվատախտակ՝ ժամը մեկով"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Թվատախտակ՝ ժամը երկուսով"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Թվատախտակ՝ ժամը երեքով"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Թվատախտակ՝ ժամը չորսով"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Թվատախտակ՝ ժամը հինգով"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Թվատախտակ՝ ժամը վեցով"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Թվատախտակ՝ ժամը յոթով"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Թվատախտակ՝ ժամը ութով"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Թվատախտակ՝ ժամը ինով"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Թվատախտակ՝ ժամը տասով"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Թվատախտակ՝ ժամը տասնմեկով"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Թվատախտակ՝ ժամը տասներկուսով"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Թվատախտակ՝ ժամը մեկն անց երեսուն"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Թվատախտակ՝ ժամը երկուսն անց երեսուն"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Թվատախտակ՝ ժամը երեքն անց երեսուն"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Թվատախտակ՝ ժամը չորսն անց երեսուն"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Թվատախտակ՝ ժամը հինգն անց երեսուն"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Թվատախտակ՝ ժամը վեցն անց երեսուն"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Թվատախտակ՝ ժամը յոթն անց երեսուն"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Թվատախտակ՝ ժամը ութն անց երեսուն"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Թվատախտակ՝ ժամը ինն անց երեսուն"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Թվատախտակ՝ ժամը տասն անց երեսուն"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Թվատախտակ՝ ժամը տասնմեկն անց երեսուն"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Թվատախտակ՝ ժամը տասներկուսն անց երեսուն"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Ֆուձի լեռ"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Տոկիոյի աշտարակ"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Ազատության արձան"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Ճապոնիայի ուրվագիծ"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Մայաների քարե արձան"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Քմծիծաղով դեմք"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Քմծիծաղով դեմք՝ ժպտացող աչքերով"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Ուրախության արցունքներով դեմք"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Ժպտացող դեմք՝ բաց բերանով"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Ժպտացող դեմք՝ բաց բերանով և ժպտացող աչքերով"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Ժպտացող դեմք՝ բաց բերանով և սառը քրտինքով"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Ժպտացող դեմք՝ բաց բերանով և պինդ փակված աչքերով"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Ժպտացող դեմք` լուսապսակով"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Ժպյտացող դեմք` պոզերով"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Աչքով անող դեմք"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Ժպտացող դեմք` ժպտացող աչքերով"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Համեղ ուտեստներ վայելող դեմք"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Հանգստացած դեմք"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Ժպտացող դեմք` սրտաձև աչքերով"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Ժպտացող դեմք` արևային ակնոցով"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Հեգնական ժպիտով դեմք"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Չեզոք դեմք"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Արտահայտությունից զուրկ դեմք"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Չհետաքրքրված դեմք"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Սառը քրտինքով դեմք"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Մտախոհ դեմք"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Շփոթված դեմք"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Մոլորված դեմք"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Համբուրող դեմք"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Օդային համբույր ուղարկող դեմք"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Համբուրող դեմք` ժպտացող աչքերով"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Համբուրող դեմք` փակ աչքերով"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Լեզուն հանած դեմք"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Լեզուն հանած և աչքով անող դեմք"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Լեզուն հանած և աչքերը փակած դեմք"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Հիասթափված դեմք"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Մտահոգ դեմք"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Ջղային դեմք"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Շրթունքներն ուռած դեմք"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Լացող դեմք"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Կամակոր դեմք"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Հաղթական արտահայտությամբ դեմք"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Հիասթափված, բայց հանգստացած դեմք"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Բաց բերանով խոժոռ դեմք"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Տանջված դեմք"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Վախեցած դեմք"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Հոգնած դեմք"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Քնաթաթախ դեմք"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Հոգնած դեմք"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Ծամածռված դեմք"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Բարձրաձայն լացող դեմք"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Բաց բերանով դեմք"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Լռող դեմք"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Բաց բերանով և սառը քրտինքով դեմք"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Վախից ճչացող դեմք"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Ապշած դեմք"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Շիկնած դեմք"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Քնած դեմք"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Գլխապտույտով դեմք"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Առանց բերանի դեմք"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Բժշկական դիմակով դեմք"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Քմծիծաղող կատվի դեմք՝ ժպտացող աչքերով"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Կատվի դեմք՝ երջանկության արցունքներով"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Ժպտացող կատվի դեմք՝ բաց բերանով"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Ժպտացող կատվի դեմք՝ սրտաձև աչքերով"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Կատվի դեմք՝ ծուռ ժպիտով"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Համբուրող կատվի դեմք՝ փակ աչքերով"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Շրթունքներն ուռած կատվի դեմք"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Լացող կատվի դեմք"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Հոգնած կատվի դեմք"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"«Ոչ լավ» արտահայտությամբ դեմք"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"«Լավ» արտահայտությամբ դեմք"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Կռացած դեմք"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Աչքերը ձեռքերով փակած կապիկ"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Ականջները ձեռքերով փակած կապիկ"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Բերանը ձեռքերով փակած կապիկ"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Երջանիկ մարդ` բարձրացրած ձեռքով"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Երկու ձեռքը ողջույնի համար բարձրացրած մարդ"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Դժգոհ մարդ"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Շրթունքներն ուռեցրած դեմքով մարդ"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Ծալված ձեռքերով մարդ"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Հրթիռ"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Ուղղաթիռ"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Շոգեքարշ"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Վագոն"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Ճեպընթաց գնացք"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Ճեպընթաց գնացք` փամփուշտաձև քթով"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Գնացք"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Մետրո"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Մոնոռելս"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Կայան"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Տրամվայ"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Տրամվայ"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Ավտոբուս"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Հանդիպակաց ավտոբուս"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Տրոլեյբուս"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Ավտոբուսի կանգառ"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Միկրոավտոբուս"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Շտապ օգնություն"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Հրշեջ մեքենա"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Ոստիկանական մեքենա"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Հանդիպակաց եկող ոստիկանական մեքենա"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Տաքսի"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Հանդիպակաց եկող տաքսի"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Ավտոմեքենա"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Հանդիպակաց եկող ավտոմեքենա"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Ավտոտնակ"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Առաքման մեքենա"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Ինքնագնաց"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Տրակտոր"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Մոնոռելս"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Լեռնային երկաթուղի"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Երկաթուղային կախոց"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Լեռնային ճոպանուղի"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Ճոպանուղի"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Նավ"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Լաստանավ"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Մոտորանավ"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Հորիզոնական լուսացույց"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Ուղղահայաց լուսացույց"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Շինարարության նշան"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Ոստիկականան մեքենայի ազդանշանային լույսեր"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Եռանկյուն դրոշ"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Դուռ"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Չմտնելու նշան"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Ծխելու նշան"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Չծխելու նշան"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Աղբը իր տեղում թափելու նշան"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Աղբ չթափելու նշան"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Խմելու ջրի նշան"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Ոչ խմելու ջրի նշան"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Հեծանիվ"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Հեծանիվների արգելք"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Հեծանվորդ"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Լեռնային հեծանվորդ"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Հետիոտն"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Հետիոտների արգելք"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Հատող երեխաներ"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Տղամարդկանց նշան"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Կանանց նշան"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Զուգարան"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Մանուկի նշան"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Զուգարան"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Արտաքնոց"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Ցնցուղ"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Բաղնիք"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Լոգարան"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Անձնագրերի ստուգում"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Մաքսատուն"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Ուղեբեռի ստացում"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Ձախ ուղեբեռ"</string>
+</resources>
diff --git a/java/res/values-hy-rAM/strings-letter-descriptions.xml b/java/res/values-hy-rAM/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ed4d69e
--- /dev/null
+++ b/java/res/values-hy-rAM/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Դասական թվականների իգական սեռի ցուցիչ"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Մյու"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Դասական թվականների արական սեռի ցուցիչ"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Էսցետ"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, վերևում երկու կետիկով"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, վերևում օղակով"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, կցագիր"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, սեդիլով"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, վերևում երկու կետիկով"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, վերևում երկու կետիկով"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Էթ"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, վերևում երկու կետիկով"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, թեք հատող գծիկով"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, վերևում երկու կետիկով"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Տոռն"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, վերևում երկու կետիկով"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, վերևում գծիկով"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, վերևում կոր գծիկով"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, պոչիկով"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, վերևում կետիկով"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, վերևում «ծիտիկով»"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, աջ կողմի վերևում ապաթարցով"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, գծիկով"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, վերևում գծիկով"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, վերևում կոր գծիկով"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, վերևում կետիկով"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, պոչիկով"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, վերևում «ծիտիկով»"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, վերևում կոր գծիկով"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, վերևում կետիկով"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, սեդիլով"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, գծիկով"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, վերևում գծիկով"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, վերևում կոր գծիկով"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, պոչիկով"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Կետազուրկ I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, կցագիր"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, սեդիլով"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Կռա"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, սեդիլով"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, աջ կողմի վերևում ապաթարցով"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, աջ կողմի մեջտեղում կետիկով"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, գծիկով"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, սեդիլով"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, վերևում «ծիտիկով»"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, ձախ կողմում ապաթարցով"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Էնգ"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, վերևում գծիկով"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, վերևում կոր գծիկով"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, վերևում կրկնակի շեշտանշանով"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, կցագիր"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, սեդիլով"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, վերևում «ծիտիկով»"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, սեդիլով"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, վերևում «ծիտիկով»"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, սեդիլով"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, աջ կողմի վերևում ապաթարցով"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, գծիկով"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, վերևում գծիկով"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, վերևում կոր գծիկով"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, վերևում օղակով"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U վերևում կրկնակի շեշտանշանով"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, պոչիկով"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, վերևում կոչանիշով"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, վերևում կետիկով"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, վերևում «ծիտիկով»"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Երկար S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, աջ կողմում եղջյուրով"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, աջ կողմում եղջյուրով"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, ներքևում ստորակետով"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, ներքևում ստորակետով"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Չեզոք ձայնավոր"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, վերևում կոչանիշով և շեշտանշանով"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, վերևում կոչանիշով և բութի նշանով"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, վերևում կոչանիշով և կեռիկով"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, վերևում կոչանիշով և ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, վերևում կոչանիշով և ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, վերևում կոր գծիկով և շեշտանշանով"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, վերևում կոր գծիկով և բութի նշանով"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, վերևում կոր գծիկով և կեռիկով"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, վերևում կոր գծիկով և ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, վերևում կոր գծիկով և ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, վերևում կոչանիշով և շեշտանշանով"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, վերևում կոչանիշով և բութի նշանով"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, վերևում կոչանիշով և կեռիկով"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, վերևում կոչանիշով և ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, վերևում կոչանիշով և ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, վերևում կոչանիշով և շեշտանշանով"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, վերևում կոչանիշով և բութի նշանով"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, վերևում կոչանիշով և կեռիկով"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, վերևում կոչանիշով և ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, վերևում կոչանիշով և ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, աջ կողմում եղջյուրով և վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, աջ կողմում եղջյուրով և վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, աջ կողմում եղջյուրով և վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, աջ կողմում եղջյուրով և վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, աջ կողմում եղջյուրով և ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, աջ կողմում եղջյուրով և վերևում շեշտանշանով"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, աջ կողմում եղջյուրով և վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, աջ կողմում եղջյուրով և վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, աջ կողմում եղջյուրով և վերևում ալիքանշանով"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, աջ կողմում եղջյուրով և ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, վերևում բութի նշանով"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, ներքևում կետիկով"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, վերևում կեռիկով"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, վերևում ալիքանշանով"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Շրջած բացականչական նշան"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Բացող հայկական չակերտ"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Մեջտեղի կետիկ"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Վերգիր մեկ"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Փակող հայկական չակերտ"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Շրջած հարցական նշան"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Ձախ վերին չակերտ"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Աջ վերին չակերտ"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Ստորին չակերտ"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Ձախ վերին կրկնակի չակերտ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Աջ վերին կրկնակի չակերտ"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Խաչ"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Կրկնակի խաչ"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Պրոմիլի նշան"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Շտրիխ"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Կրկնակի շտրիխ"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Ձախ անկյունային փակագիծ"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Աջ անկյունային փակագիծ"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Վերգիր չորս"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Վերգիր լատիներեն փոքրատառ n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Պեսոյի նշան"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Միջոցով"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Աջ սլաք"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Ներքև սլաք"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Դատարկ բազմություն"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Ավելացում"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Փոքր կամ հավասար է"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Մեծ կամ հավասար է"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Սև աստղ"</string>
+</resources>
diff --git a/java/res/values-hy-rAM/strings-talkback-descriptions.xml b/java/res/values-hy-rAM/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..44784bd
--- /dev/null
+++ b/java/res/values-hy-rAM/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Միացրեք ականջակալը՝ բարձրաձայն արտասանվող գաղտնաբառը լսելու համար:"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Տվյալ տեքստը %s է"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Տեքստ չի մուտքագրվել"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>-ը շտկում է <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-ը՝ դարձնելով <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ստեղնը ինքնաշտկում է կատարում"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Անհայտ տառանշան"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Հավելյալ նշաններ"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Նշաններ"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Ջնջել"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Նշաններ"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Տառեր"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Թվեր"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Կարգավորումներ"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Բացատ"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Ձայնային մուտքագրում"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Զմայլիկներ"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Վերադառնալ"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Որոնել"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Կետ"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Փոխել լեզուն"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Հաջորդը"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Նախորդը"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift-ը միացված է"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock-ը միացված է"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Նշանների ռեժիմ"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Հավելյալ նշանների ռեժիմ"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Տառերի ռեժիմ"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Հեռախոսային ռեժիմ"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Հեռախոսի նշանների ռեժիմ"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Ստեղնաշարը թաքցված է"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Ցուցադրվում է <xliff:g id="KEYBOARD_MODE">%s</xliff:g> ստեղնաշարը"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ամսաթիվ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ամսաթիվ և ժամ"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"էլփոստ"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"նամակագրություն"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"թվեր"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"հեռախոսահամար"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"տեքստ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ժամանակ"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Վերջինները"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Մարդիկ"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Օբյեկտներ"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Բնություն"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Վայրեր"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Նշաններ"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Զմայլիկներ"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Մեծատառ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Մեծատառ I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Մեծատառ I, վերևում կետիկ"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Անհայտ նշան"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Անհայտ զմայլիկ"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Լրացուցիչ տառանշաններով ստեղնաշարը հասանելի է"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Լրացուցիչ տառանշաններով ստեղնաշարը փակված է"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Լրացուցիչ առաջարկներով վահանակը հասանելի է"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Լրացուցիչ առաջարկներով վահանակը փակված է"</string>
+</resources>
diff --git a/java/res/values-hy-rAM/strings.xml b/java/res/values-hy-rAM/strings.xml
index 0b8e19a..f606c4b 100644
--- a/java/res/values-hy-rAM/strings.xml
+++ b/java/res/values-hy-rAM/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Ներածման ընտրանքներ"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Հետազոտական գրառումների հրամաններ"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Փնտրել կոնտակտային անուններ"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Տառասխալների ուղղիչն օգտագործում է ձեր կոնտակտների ցանկի տվյալները"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Թրթռալ սեղմման ժամանակ"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Ձայնը սեղմման ժամանակ"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ելնող պատուհան՝ ստեղնի հպման դեպքում"</string>
-    <string name="general_category" msgid="1859088467017573195">"Ընդհանուր"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Տեքստի ուղղում"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Ժեստերով մուտքագրում"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Այլ ընտրանքներ"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Ընդլայնված կարգավորումներ"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Ընտրանքներ փորձագետների համար"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Ներածման նախընտրանքներ"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Արտաքին տեսք"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Բազմալեզու տարբերակներ"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Ժեստերով մուտքագրման նախընտրանքներ"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Տեքստի ուղղում"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Ընդլայնված"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Անցնել մուտքագրման այլ եղանակների"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Լեզվի փոխարկման բանալին ընդգրկում է այլ մուտքագրման եղանակներ ևս"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Լեզվի փոխարկման ստեղն"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Համակարգի լռելյայնները"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Առաջարկել կոնտակտների անունները"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Օգտագործել կոնտակտների անունները՝ առաջարկների և ուղղումների համար"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Անհատականացված առաջարկներ"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Բարելավել <xliff:g id="APPLICATION_NAME">%s</xliff:g>-ը"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Կրկնաբացակի վերջակետ"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Բացակի ստեղնի կրկնակի հպումը բացակից հետո վերջակետ է դնում"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Ավտոմատ գլխատառացում"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Ցույց տալ ժեստի հետագիծը"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Դինամիկ սահող նախատեսք"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Տեսեք առաջարկված բառը՝ ժեստի միջոցով"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>` պահված է"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Միացրեք ականջակալը՝ բարձրաձայն արտասանվող գաղտնաբառը լսելու համար:"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Տվյալ տեքստը %s է"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Տեքստ չի մուտքագրվել"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g>-ը շտկում է <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-ը և դարձնում <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> ստեղնը ինքնաշտկում է կատարում"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Բանալու կոդը՝ %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift-ը միացված է (հպել անջատելու համար)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock-ը միացված է (հպել՝ անջատելու համար)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Ջնջել"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Նշաններ"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Տառեր"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Թվեր"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Կարգավորումներ"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Բացակ"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Ձայնային մուտքագրում"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Ժպիտ"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Վերադարձ"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Որոնել"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Կետ"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Փոխել լեզուն"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Հաջորդը"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Նախորդը"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift-ը միացված է"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock-ը միացված է"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift-ն անջատված է"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Նշանների ռեժիմ"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Տառերի ռեժիմ"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Հեռախոսային ռեժիմ"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Հեռախոսի նշանների ռեժիմ"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Ստեղնաշարը թաքցված է"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Ցուցադրված է <xliff:g id="MODE">%s</xliff:g> ստեղնաշարը"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"ամսաթիվ"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"ամսաթիվ և ժամ"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"էլփոստ"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"նամակագրություն"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"թվեր"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"հեռախոսահամար"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"տեքստ"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ժամանակ"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Բառակապակցային ժեստ"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Ներմուծեք բացատներ ժեստերի ընթացքում՝ սահելով բացատ ստեղնի վրայով"</string>
     <string name="voice_input" msgid="3583258583521397548">"Ձայնային մուտքագրման ստեղն"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Հիմնական ստեղնաշարի վրա"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Նշանների ստեղնաշարի վրա"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Անջատված"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Բարձրախոս հիմնական ստեղնաշարի վրա"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Բարձրախոս նշանների ստեղնաշարի վրա"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Ձայնային մուտքագրումն անջատված է"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ձայնային ներածման որևէ եղանակ միացված չէ։ Ստուգեք Լեզվի և ներածման կարգավորումները։"</string>
     <string name="configure_input_method" msgid="373356270290742459">"Կարգավորել մուտքագրման մեթոդները"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Մուտքագրման լեզուներ"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Արձագանքել"</string>
     <string name="select_language" msgid="3693815588777926848">"Մուտքագրման լեզուներ"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Պահպանելու համար կրկին հպեք"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Բառարանն առկա է"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Միացնել օգտվողի արձագանքը"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Օգնել բարելավել այս մուտքագրման եղանակի խմբագրիչը՝ ինքնուրույն ուղարկելով Google-ին օգտագործման վիճակագրությունն ու վթարների հաշվետվությունները:"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Ստեղնաշարի թեման"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Անգլերեն (ՄԹ)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Անգլերեն (ԱՄՆ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Իսպաներեն (ԱՄՆ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Անգլերեն (ՄԹ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Անգլերեն (ԱՄՆ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Իսպաներեն (ԱՄՆ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (ավանդական)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Անգլերեն (ՄԹ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Անգլերեն (ԱՄՆ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Իսպաներեն (ԱՄՆ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ավանդական)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (կյուրեղյան)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (լատինական)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Ոչ մի լեզվով (Այբուբեն)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Այբուբեն (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Այբուբեն (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Այբուբեն (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Այբուբեն (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Զմայլիկներ"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Գունավորում"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Սպիտակ"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Կապույտ"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Ստեղնաշարի թեման"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Պայծառ"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Բաց կապույտ"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Մուգ"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Բաց"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Մուտքագրման հատուկ ոճեր"</string>
     <string name="add_style" msgid="6163126614514489951">"Ավելացնել ոճ"</string>
     <string name="add" msgid="8299699805688017798">"Ավելացնել"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Միացնել"</string>
     <string name="not_now" msgid="6172462888202790482">"Ոչ հիմա"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Մուտքագրման այսպիսի ոճ արդեն գոյություն ունի՝ <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Հարմարավետության ուսումնասիրության ռեժիմ"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Ստեղնի երկար սեղմման ուշացում"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Սեղմման թրթռոցի տևողություն"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Սեղմման ձայնի բարձրությունը"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Կարդալ արտաքին բառարանի ֆայլը"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Ներբեռնումների թղթապանակում բառարանային ֆայլեր չկան"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Ընտրեք բառարանային ֆայլը տեղադրման համար"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Իրո՞ք ուզում եք տեղադրել այս ֆայլը <xliff:g id="LOCALE_NAME">%s</xliff:g>-ում:"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Տեղադրե՞լ այս ֆայլը <xliff:g id="LANGUAGE_NAME">%s</xliff:g> լեզվի համար:"</string>
     <string name="error" msgid="8940763624668513648">"Տեղի է ունեցել սխալ"</string>
     <string name="button_default" msgid="3988017840431881491">"Լռելյայնը"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Բարի գալուստ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Թարմացնել"</string>
     <string name="last_update" msgid="730467549913588780">"Վերջին անգամ թարմացվել է"</string>
     <string name="message_updating" msgid="4457761393932375219">"Ստուգվում է թարմացումների առկայությունը"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Բեռնվում է..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Բեռնում..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Հիմնական բառարան"</string>
     <string name="cancel" msgid="6830980399865683324">"Չեղարկել"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Կարգավորումներ"</string>
     <string name="install_dict" msgid="180852772562189365">"Տեղադրել"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Չեղարկել"</string>
     <string name="delete_dict" msgid="756853268088330054">"Ջնջել"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Ձեր բջջային սարքում ընտրված լեզվով առկա է բառարան:<br/> Խորհուրդ ենք տալիս &lt;b&gt;ներբեռնել&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> բառարանը ձեր մուտքագրման հմտությունների բարելավման համար:&lt;br/&gt; &lt;br/&gt; Ներբեռնումը կարող է խլել մեկ կամ երկու րոպե 3G-ի դեպքում: Հնարավոր է գանձում կատարվի, եթե դուք չունեք &lt;b&gt;տվյալների անսահմանափակ փաթեթ&lt;/b&gt;.&lt;br/&gt; Եթե դուք վստահ չեք, թե տվյալների որ փաթեթն ունեք, խորհուրդ ենք տալիս գտնել Wi-Fi կապ՝ ներբեռնումն ավտոմատ սկսելու համար:&lt;br/&gt; &lt;br/&gt; Հուշում. դուք կարող եք ներբեռնել և հեռացնել բառարաններ՝ գնալով ձեր բջջային սարքի &lt;b&gt;Կարգավորումներ ցանկի Լեզու &amp; մուտքագրման&lt;/b&gt; բաժինը:"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Ձեր բջջային սարքում ընտրված լեզվով առկա է բառարան:<br/> Խորհուրդ ենք տալիս &lt;b&gt;ներբեռնել&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> բառարանը՝ ձեր մուտքագրման հմտությունների բարելավման համար:&lt;br/&gt; &lt;br/&gt; Ներբեռնումը կարող է խլել մեկ կամ երկու րոպե 3G-ի դեպքում: Հնարավոր է գանձում կատարվի, եթե դուք չունեք &lt;b&gt;տվյալների անսահմանափակ փաթեթ&lt;/b&gt;.&lt;br/&gt; Եթե դուք վստահ չեք, թե տվյալների որ փաթեթն ունեք, խորհուրդ ենք տալիս գտնել Wi-Fi կապ՝ ներբեռնումն ավտոմատ սկսելու համար:&lt;br/&gt; &lt;br/&gt; Հուշում. դուք կարող եք ներբեռնել և հեռացնել բառարաններ՝ անցնելով ձեր բջջային սարքի &lt;b&gt;Կարգավորումներ ցանկի Լեզու և մուտքագրում&lt;/b&gt; բաժինը:"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Ներբեռնել հիմա (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>Մբ)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Ներբեռնել Wi-Fi-ով"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g>-ով առկա է մի բառարան"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> լեզվի համար առկա է բառարան"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Սեղմեք՝ վերանայելու և ներբեռնելու համար"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Ներբեռնվում է. <xliff:g id="LANGUAGE">%1$s</xliff:g>-ի համար առաջարկները շուտով պատրաստ կլինեն:"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Ներբեռնում. <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> լեզվի համար առաջարկները պատրաստ կլինեն շուտով:"</string>
     <string name="version_text" msgid="2715354215568469385">"Տարբերակ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Ավելացնել"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Ավելացնել բառարանում"</string>
diff --git a/java/res/values-in/strings-action-keys.xml b/java/res/values-in/strings-action-keys.xml
index 26f3225..7f1a28e 100644
--- a/java/res/values-in/strings-action-keys.xml
+++ b/java/res/values-in/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Balik"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Beres"</string>
     <string name="label_send_key" msgid="482252074224462163">"Kirim"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Telusur"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Jeda"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Tunggu"</string>
 </resources>
diff --git a/java/res/values-in/strings-config-important-notice.xml b/java/res/values-in/strings-config-important-notice.xml
new file mode 100644
index 0000000..d5df913
--- /dev/null
+++ b/java/res/values-in/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Belajar dari komunikasi &amp; data terketik untuk meningkatkan saran"</string>
+</resources>
diff --git a/java/res/values-in/strings-letter-descriptions.xml b/java/res/values-in/strings-letter-descriptions.xml
new file mode 100644
index 0000000..711f689
--- /dev/null
+++ b/java/res/values-in/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indikator ordinal feminin"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Simbol mikro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indikator ordinal maskulin"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Eszett"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A dengan aksen nontirus (tanda coret miring ke arah kiri di bagian atas)"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A dengan aksen tirus (tanda coret miring ke arah kanan di bagian atas)"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A dengan aksen sirkumfleks (tanda aksen di bagian atas)"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A dengan aksen tilda (tanda gelombang di bagian atas)"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A dengan aksen diaeresis (titik dua di bagian atas)"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A dengan aksen lingkaran di bagian atas"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A E ligatur (Karakter A dan E yang digabungkan menjadi satu kesatuan unit)"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C dengan aksen cedilla (tanda kait di bagian bawah)"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E dengan aksen nontirus"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E dengan aksen diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I dengan aksen nontirus"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I dengan aksen diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N dengan aksen tilda"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O dengan aksen nontirus"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O dengan aksen tilda"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O dengan aksen diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O coret"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U dengan aksen nontirus"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U dengan aksen diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn (sekarang diganti dengan huruf th)"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y dengan aksen diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A dengan aksen makron (tanda pengulur/makron di bagian atas)"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A dengan aksen breve (tanda breve di bagian atas)"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A dengan aksen ogonek (tanda ekor di sebelah kanan bawah untuk menunjukkan bunyi sengau)"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C dengan titik di bagian atas"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C dengan aksen caron (tanda caron di bagian atas)"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D dengan aksen caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D coret"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E dengan aksen makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E dengan aksen breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E dengan titik di bagian atas"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E dengan aksen ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E dengan aksen caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G dengan aksen breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G dengan aksen titik di bagian atas"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H coret"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I dengan aksen tilda"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I dengan aksen makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I dengan aksen breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I dengan aksen ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I tanpa titik"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I dan J ligatur"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L dengan aksen caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L dengan titik di tengah"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L coret"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N dengan aksen caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N yang didahului tanda apostrof"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O dengan aksen makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O dengan aksen breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O dengan aksen tirus ganda"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O dan E ligatur"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R dengan aksen caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S dengan aksen caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T dengan aksen cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T dengan aksen caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T coret"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U dengan aksen tilda"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U dengan aksen makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U dengan aksen breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U dengan aksen lingkaran di bagian atas"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U dengan aksen tirus ganda"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U dengan aksen ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y dengan aksen sirkumfleks"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z dengan aksen tirus"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z dengan titik di bagian atas"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z dengan aksen caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S Panjang"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O dengan aksen tanduk"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U dengan aksen tanduk"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S dengan aksen koma di bagian bawah"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T dengan aksen koma di bagian bawah"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa (aksen pepet)"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A dengan aksen titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A dengan aksen kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A dengan aksen sirkumfleks dan tirus"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A dengan aksen sirkumfleks dan nontirus"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A dengan aksen sirkumfleks dan kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A dengan aksen sirkumfleks dan tilda"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A dengan aksen sirkumfleks dan titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A dengan aksen breve dan tirus"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A dengan aksen breve dan nontirus"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A dengan aksen breve dan kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A dengan aksen breve dan tilda"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A dengan aksen breve dan titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E dengan aksen titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E dengan aksen kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E dengan aksen tilda"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E dengan aksen sirkumfleks dan tirus"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E dengan aksen sirkumfleks dan nontirus"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E dengan aksen sirkumfleks dan kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E dengan aksen sirkumfleks dan tilda"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E dengan aksen sirkumfleks dan titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I dengan aksen kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I dengan aksen titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O dengan aksen titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O dengan aksen kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O dengan aksen sirkumfleks dan tirus"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O dengan aksen sirkumfleks dan nontirus"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O dengan aksen sirkumfleks dan kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O dengan aksen sirkumfleks dan tilda"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O dengan aksen sirkumfleks dan titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O dengan aksen tanduk dan tirus"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O dengan aksen tanduk dan nontirus"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O dengan aksen tanduk dan kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O dengan aksen tanduk dan tilda"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O dengan aksen tanduk dan titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U dengan aksen titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U dengan aksen kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U dengan aksen tanduk dan tirus"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U dengan aksen tanduk dan nontirus"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U dengan aksen tanduk dan kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U dengan aksen tanduk dan tilda"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U dengan aksen tanduk dan titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y dengan aksen nontirus"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y dengan aksen titik di bagian bawah"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y dengan aksen kait di bagian atas"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y dengan aksen tilda"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Tanda seru terbalik"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Dua tanda kurung sudut kiri"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Titik tengah"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript satu"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Dua tanda kurung sudut kanan"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Tanda tanya terbalik"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Tanda petik tunggal kiri"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Tanda petik tunggal kanan"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Tanda petik tunggal di bagian bawah"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Tanda petik ganda kiri"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Tanda petik ganda kanan"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger (Tanda belati)"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dagger ganda"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Simbol per mil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Tanda petik"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Tanda petik ganda"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Tanda kurung sudut kiri tunggal"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Tanda kurung sudut kanan tunggal"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript empat"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript huruf latin kecil n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Simbol peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Dengan alamat"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Panah ke kanan"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Panah ke bawah"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Himpunan kosong"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Penambahan"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kurang dari atau sama dengan"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Lebih dari atau sama dengan"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Bintang hitam"</string>
+</resources>
diff --git a/java/res/values-in/strings-talkback-descriptions.xml b/java/res/values-in/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..f7334d9
--- /dev/null
+++ b/java/res/values-in/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Pasang headset untuk mendengar tombol sandi yang diucapkan dengan lantang."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Teks saat ini adalah %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Tidak ada teks yang dimasukkan"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> mengoreksi <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> menjadi <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> melakukan koreksi otomatis"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Karakter tak dikenal"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Simbol lainnya"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simbol"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Hapus"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simbol"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Huruf"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Angka"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Setelan"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Spasi"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Masukan suara"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Kembali"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Telusuri"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Titik"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Beralih bahasa"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Berikutnya"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Sebelumnya"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift diaktifkan"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock diaktifkan"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mode simbol"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Mode simbol lainnya"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mode huruf"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mode telepon"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mode simbol telepon"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Keyboard disembunyikan"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Menampilkan keyboard <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"tanggal"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"tanggal dan waktu"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"pesan"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"angka"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telepon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teks"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"waktu"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Terbaru"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Orang"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objek"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Alam"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Tempat"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simbol"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikon"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Huruf kapital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Huruf kapital I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Huruf kapital I dengan aksen titik di bagian atas"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbol tak dikenal"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji tak dikenal"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Karakter alternatif tersedia"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Karakter alternatif ditolak"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Saran alternatif tersedia"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Saran alternatif ditolak"</string>
+</resources>
diff --git a/java/res/values-in/strings.xml b/java/res/values-in/strings.xml
index d83a22c..129a23c 100644
--- a/java/res/values-in/strings.xml
+++ b/java/res/values-in/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opsi masukan"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Riset Perintah Log"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cari nama kontak"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Pemeriksa ejaan menggunakan entri dari daftar kontak Anda"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Getar jika tombol ditekan"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Berbunyi jika tombol ditekan"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Muncul saat tombol ditekan"</string>
-    <string name="general_category" msgid="1859088467017573195">"Umum"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Koreksi teks"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Pengetikan isyarat"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Opsi lain"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Setelan lanjutan"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opsi untuk ahli"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Beralih ke metode masukan lain"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tombol beralih bahasa juga mencakup metode masukan lain"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tombol pengalih bahasa"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Default sistem"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sarankan nama Kontak"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Menggunakan nama dari Kontak untuk saran dan koreksi"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Saran hasil personalisasi"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Tingkatkan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Titik spasi ganda"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Mengetuk tombol spasi dua kali akan memasukkan titik diikuti satu spasi"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Kapitalisasi otomatis"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Tampilkan jalur isyarat"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Pratinjau mengambang dinamis"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Lihat kata yang disarankan saat melakukan isyarat"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Telah disimpan"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Pasang headset untuk mendengar tombol sandi yang diucapkan dengan keras."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Teks saat ini adalah %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Tidak ada teks yang dimasukkan"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> mengoreksi <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> menjadi <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> melakukan koreksi otomatis"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Kode tombol %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift hidup (ketuk untuk mematikan)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock hidup (ketuk untuk mematikan)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Hapus"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simbol"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Huruf"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Angka"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Setelan"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Spasi"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Masukan suara"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Wajah tersenyum"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Kembali"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Telusuri"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Titik"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Ganti bahasa"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Berikutnya"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Sebelumnya"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift diaktifkan"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock diaktifkan"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift dinonaktifkan"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Mode simbol"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode huruf"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode telepon"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode simbol telepon"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Keyboard disembunyikan"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Menampilkan keyboard <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"tanggal"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"tanggal dan waktu"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"pesan"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"angka"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telepon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teks"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"waktu"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Isyarat frasa"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Masukkan spasi dalam isyarat dengan meluncur ke tombol spasi"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tombol masukan suara"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pada keyboard utama"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pada keyboard simbol"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Mati"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik pada keyboard utama"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik pada keyboard simbol"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Masukan suara dinonaktifkan"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Tidak ada metode masukan suara yang diaktifkan. Periksa setelan Bahasan &amp; masukan."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan metode masukan"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Bahasa masukan"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Kirim masukan"</string>
     <string name="select_language" msgid="3693815588777926848">"Bahasa masukan"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Sentuh lagi untuk menyimpan"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Kamus yang tersedia"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Aktifkan masukan pengguna"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Bantu tingkatkan editor metode masukan dengan mengirim statistik penggunaan dan laporan kerusakan secara otomatis"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema keyboard"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Inggris (Inggris)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Inggris (AS)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spanyol (AS)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inggris (Inggris) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inggris (AS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spanyol (AS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Tradisional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>) Inggris (Inggris)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>) Inggris (AS)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>) Spanyol (AS)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Tradisional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Sirilik)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Tidak ada bahasa (Abjad)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Abjad (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Abjad (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Abjad (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Abjad (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Skema warna"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Putih"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Biru"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Gaya masukan khusus"</string>
     <string name="add_style" msgid="6163126614514489951">"Tambah gaya"</string>
     <string name="add" msgid="8299699805688017798">"Tambahkan"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Aktifkan"</string>
     <string name="not_now" msgid="6172462888202790482">"Nanti saja"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Sudah ada gaya masukan yang sama: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mode studi daya guna"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Penundaan tekan lama tombol"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Durasi getar saat tekan tombol"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume suara saat tekan tombol"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Membaca file kamus eksternal"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Tidak ada file kamus di folder Unduhan"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Pilih file kamus untuk dipasang"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Yakin ingin memasang file ini untuk <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Yakin ingin memasang file ini untuk <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Terjadi kesalahan"</string>
     <string name="button_default" msgid="3988017840431881491">"Default"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Selamat datang di <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -193,7 +160,7 @@
     <string name="dictionary_provider_name" msgid="3027315045397363079">"Penyedia Kamus"</string>
     <string name="dictionary_service_name" msgid="6237472350693511448">"Layanan Kamus"</string>
     <string name="download_description" msgid="6014835283119198591">"Informasi pembaruan kamus"</string>
-    <string name="dictionary_settings_title" msgid="8091417676045693313">"Kamus add-on"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Kamus pengaya"</string>
     <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Kamus yang tersedia"</string>
     <string name="dictionary_settings_summary" msgid="5305694987799824349">"Setelan untuk kamus"</string>
     <string name="user_dictionaries" msgid="3582332055892252845">"Kamus pengguna"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Segarkan"</string>
     <string name="last_update" msgid="730467549913588780">"Terakhir diperbarui"</string>
     <string name="message_updating" msgid="4457761393932375219">"Memeriksa pembaruan"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Memuat..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Memuat…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Kamus utama"</string>
     <string name="cancel" msgid="6830980399865683324">"Batal"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Setelan"</string>
     <string name="install_dict" msgid="180852772562189365">"Pasang"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Batal"</string>
     <string name="delete_dict" msgid="756853268088330054">"Hapus"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Bahasa pilihan pada perangkat seluler Anda memiliki kamus yang tersedia.&lt;br/&gt; Silakan &lt;b&gt;mengunduh&lt;/b&gt; kamus <xliff:g id="LANGUAGE">%1$s</xliff:g> untuk meningkatkan pengalaman pengetikan.&lt;br/&gt; &lt;br/&gt; Unduhan dapat berlangsung selama satu atau dua menit melalui 3G. Mungkin dikenakan tagihan data jika Anda tidak memiliki &lt;b&gt;paket data tak terbatas&lt;/b&gt;.&lt;br/&gt; Jika tidak yakin paket data mana yang Anda miliki, sebaiknya Anda mencari sambungan Wi-Fi untuk memulai unduhan secara otomatis.&lt;br/&gt; &lt;br/&gt; Kiat: Anda dapat mengunduh atau menghapus kamus dengan membuka &lt;b&gt;Bahasa &amp; masukan&lt;/b&gt; di menu &lt;b&gt;Setelan&lt;/b&gt; perangkat seluler Anda."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Tersedia kamus untuk bahasa pilihan pada perangkat seluler Anda.&lt;br/&gt; Sebaiknya &lt;b&gt;unduh&lt;/b&gt; kamus <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> untuk meningkatkan pengalaman pengetikan.&lt;br/&gt; &lt;br/&gt; Unduhan dapat berlangsung selama satu atau dua menit melalui 3G. Mungkin dikenakan biaya data jika tidak memiliki &lt;b&gt;paket data tak terbatas&lt;/b&gt;.&lt;br/&gt; Jika tidak yakin dengan jenis paket data Anda, sebaiknya cari koneksi Wi-Fi untuk memulai unduhan secara otomatis.&lt;br/&gt; &lt;br/&gt; Kiat: Anda dapat mengunduh dan menghapus kamus dengan membuka &lt;b&gt;Bahasa &amp; masukan&lt;/b&gt; di menu &lt;b&gt;Setelan&lt;/b&gt; perangkat seluler Anda."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Unduh sekarang (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Unduh melalui Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Kamus tersedia untuk bahasa <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Kamus tersedia untuk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Tekan untuk meninjau dan mengunduh"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Mengunduh: saran untuk bahasa <xliff:g id="LANGUAGE">%1$s</xliff:g> akan segera tersedia."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Mengunduh: saran untuk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> akan segera tersedia."</string>
     <string name="version_text" msgid="2715354215568469385">"Versi <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Tambahkan"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Tambahkan ke kamus"</string>
diff --git a/java/res/values-is-rIS/strings-action-keys.xml b/java/res/values-is-rIS/strings-action-keys.xml
new file mode 100644
index 0000000..27df516
--- /dev/null
+++ b/java/res/values-is-rIS/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"Áfram"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"Næsta"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"Fyrra"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"Lokið"</string>
+    <string name="label_send_key" msgid="482252074224462163">"Senda"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Leita"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"Hlé"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"Bíða"</string>
+</resources>
diff --git a/java/res/values-is-rIS/strings-appname.xml b/java/res/values-is-rIS/strings-appname.xml
new file mode 100644
index 0000000..d23f385
--- /dev/null
+++ b/java/res/values-is-rIS/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android lyklaborð (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android ritvilluleit (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Stillingar Android lyklaborðs (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Stillingar Android ritvilluleitar (AOSP)"</string>
+</resources>
diff --git a/java/res/values-is-rIS/strings-config-important-notice.xml b/java/res/values-is-rIS/strings-config-important-notice.xml
new file mode 100644
index 0000000..457df06
--- /dev/null
+++ b/java/res/values-is-rIS/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Læra af samskiptum þínum og innslegnum gögnum til að bæta tillögur"</string>
+</resources>
diff --git a/java/res/values-is-rIS/strings-emoji-descriptions.xml b/java/res/values-is-rIS/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..405af9c
--- /dev/null
+++ b/java/res/values-is-rIS/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Höfundarréttarmerki"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Skráð"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Tvöfalt upphrópunarmerki"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Upphrópunarmerki og spurningarmerki"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Vörumerki"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Upplýsingar"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Ör til vinstri og hægri"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Ör upp og niður"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Ör norðvestur"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Ör norðaustur"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Ör suðaustur"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Ör suðaustur"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Ör til vinstri með krók"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Ör til hægri með krók"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Úr"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Stundaglas"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Tveir svartir þríhyrningar sem vísa til hægri"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Tveir svartir þríhyrningar sem vísa til vinstri"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Tveir svartir þríhyrningar sem vísa upp"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Tveir svartir þríhyrningar sem vísa niður"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Vekjaraklukka"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Stundaglas með fallandi sandi"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Stórt M með hring utan um"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Lítill fylltur ferningur"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Lítill ófylltur ferningur"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Fylltur þríhyrningur sem vísar til hægri"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Fylltur þríhyrningur sem vísar til vinstri"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Miðlungsstór ófylltur þríhyrningur"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Miðlungsstór fylltur ferningur"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Miðlungslítill ófylltur ferningur"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Miðlungslítill fylltur ferningur"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Fyllt sól með geislum"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Ský"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Fylltur sími"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Gátreitur með haki"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Regnhlíf með regndropum"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Heitur drykkur"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Ófylltur vísifingur sem vísar upp og snýr lófa að"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Ófyllt brosandi andlit"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Hrútur"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Naut"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Tvíburar"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Krabbi"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Ljón"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Meyja"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Vog"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Sporðdreki"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Bogmaður"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Steingeit"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Vatnsberi"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Fiskar"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Fylltur spaði"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Fyllt lauf"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Fyllt hjarta"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Fylltur tígull"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Hverir"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Svart alþjóðlegt tákn fyrir endurvinnslu"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Hjólastólatákn"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Akkeri"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Viðvörunarskilti"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Háspennutákn"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Miðlungsstór ófylltur hringur"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Miðlungsstór fylltur hringur"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Fótbolti"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Hafnabolti"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Snjókarl án snjós"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Sól á bak við ský"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Naðurvaldi"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Aðgangur bannaður"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Kirkja"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Gosbrunnur"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Fáni í holu"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Seglskúta"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Tjald"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Eldsneytisdæla"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Fyllt skæri"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Ófyllt þykkt hak"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Flugvél"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Umslag"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Hnefi á lofti"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Hönd á lofti"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Friðarmerki"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Blýantur"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Fylltur pennaoddur"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Þykkt hak"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Þykkt margföldunarmerki"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Stjörnur"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Stjarna með átta örmum"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Fyllt stjarna með átta örmum"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Snjókorn"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Stjarna"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Krosstákn"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Negatíft krossmark í kassa"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Fyllt spurningarmerki"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Ófyllt spurningarmerki"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Ófyllt upphrópunarmerki"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Þykkt upphrópunarmerki"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Þykkt fyllt hjarta"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Þykkt plúsmerki"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Þykkt mínusmerki"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Þykkt deilingarmerki"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Svört ör til hægri"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Lykkja"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Tvöföld lykkja"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Ör sem vísar til hægri og upp"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Ör sem vísar til hægri og niður"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Fyllt ör til vinstri"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Fyllt ör upp"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Fyllt ör niður"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Stór fylltur ferningur"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Stór ófylltur ferningur"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Miðlungsstór ófyllt stjarna"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Þykkur stór hringur"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Bylgjustrik"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Hlutverkaskiptatákn"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Heillaóskatákn í hring"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Leyndarmálstákn í hring"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Flís með rauðum dreka í Mahjong"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Svartur jóker í spilum"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"A-blóðflokkur"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"B-blóðflokkur"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"O-blóðflokkur"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Bílastæði"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"AB-blóðflokkur"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL í kassa"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Orðið „COOL“ í kassa"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Orðið „FREE“ í kassa"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ID í kassa"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Orðið „NEW“ í kassa"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"NG í kassa"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"OK í kassa"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"SOS í kassa"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Orðið „UP“ með upphrópunarmerki í kassa"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"VS í kassa"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Katakana-táknið fyrir „hér“ í kassa"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Katakana-táknið fyrir „þjónusta“ í kassa"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Táknið „ókeypis“ í kassa"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Táknið „frátekið sæti“ í kassa"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Táknið „bannað“ í kassa"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Táknið „laust“ í kassa"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Táknið „samþykkt“ í kassa"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Táknið „fullt“ í kassa"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Táknið „greitt“ í kassa"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Táknið „mánaðarlegt“ í kassa"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Táknið „umsókn“ í kassa"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Táknið „afsláttur“ í kassa"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Táknið „í rekstri“ í kassa"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Yfirburðatákn í hring"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Samþykkistákn í hring"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Iða"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Þoka"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Lokuð regnhlíf"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Stjörnubjört nótt"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Sólarupprás milli fjalla"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Sólarupprás"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Borgarlandslag um kvöld"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Sólarupprás milli bygginga"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Regnbogi"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Brú um nótt"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Alda"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Eldfjall"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Vetrarbrautin"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Evrópa og Afríka á hnetti"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Norður- og Suður-Ameríka á hnetti"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Asía og Eyjaálfa á hnetti"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Hnöttur með lengdar- og breiddarlínum"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Tákn fyrir nýtt tungl"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Tákn fyrir vaxandi tungl"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Tákn fyrir fyrsta kvartil tunglsins"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Tákn fyrir vaxandi hálft tungl"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Tákn fyrir fullt tungl"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Tákn fyrir minnkandi hálft tungl"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Tákn fyrir síðasta kvartil tunglsins"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Tákn fyrir minnkandi tungl"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Hálfmáni"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Nýtt tungl með andliti"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Fyrsta kvartil tunglsins með andliti"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Síðasta kvartil tunglsins með andliti"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Fullt tungl með andliti"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Sól með andliti"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Ljómandi stjarna"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Stjörnuhrap"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Kastaníuhneta"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Græðlingur"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Sígrænt tré"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Sumargrænt tré"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Pálmatré"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Kaktus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Túlípani"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Kirsuberjablóm"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Rós"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hawaiirós"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Sólblóm"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Blómstur"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Maísstöngull"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Hrísgrjónaax"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Jurt"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Fjögurra laufa smári"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Hlynslauf"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Fallið lauf"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Lauf í vindi"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Sveppur"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Tómatur"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Eggaldin"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Vínber"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Melóna"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Vatnsmelóna"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Mandarína"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Sítróna"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banani"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Ananas"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Rautt epli"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Grænt epli"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Pera"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Ferskja"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Kirsuber"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Jarðarber"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamborgari"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Pítsusneið"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Kjöt á beini"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Kjúklingaleggur"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Hrísgrjónakex"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Hrísgrjónabolla"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Soðin hrísgrjón"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Karríréttur og hrísgrjón"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Rjúkandi skál"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spaghettí"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Brauð"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Franskar kartöflur"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Bökuð sæt kartafla"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Soðkökur á priki"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Djúpsteikt rækja"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Fiskikaka með spíral"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Rjómaís"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Skafís"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Ís"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Kleinuhringur"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Smákaka"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Súkkulaðistykki"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Sælgæti"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Sleikipinni"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Búðingur"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Hunangskrukka"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Terta"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Bentóbox"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Pottur af mat"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Matreiðsla"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Hnífur og gaffall"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Tebolli án halds"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Sake-flaska og bolli"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Vínglas"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Kokkteilglas"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Suðrænn drykkur"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Bjórkanna"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Skál í bjór"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Peli"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Slaufa"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Innpökkuð gjöf"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Afmæliskaka"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Hrekkjavökugrasker"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Jólatré"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Jólasveinn"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Flugeldar"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Stjörnuljós"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Blaðra"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Knall"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Glitpappír"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Tanabata-tré"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Japanskir fánar í kross"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Blómaskreyting með furu"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Japanskar brúður"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Fiskveifur"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Vindharpa"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Tunglskoðunarhátíð"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Skólataska"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Útskriftarhúfa"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Hringekjuhestur"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Parísarhjól"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Rússíbani"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Veiðistöng og fiskur"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Hljóðnemi"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Kvikmyndatökuvél"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Bíó"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Heyrnartól"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Litapalletta"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Pípuhattur"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Sirkustjald"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Miði"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Klapptré"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Sviðslistir"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Tölvuleikur"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Beint í mark"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Spilakassi"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Billjarður"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Teningur"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Keila"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Spil með blómi"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Nóta"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Nótur"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saxófónn"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Gítar"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Hljómborð"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trompet"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Fiðla"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Nótnaskrift"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Hlaupabolur með borða"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Tennisbolti og spaði"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Skíði og skíðaskór"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Körfubolti og karfa"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Rásflagg"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snjóbrettamaður"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Hlaupari"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Brimbrettamaður"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Verðlaunabikar"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Veðreiðar"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Amerískur fótbolti"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Ruðningur"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Sundmaður"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Hús"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Hús með garði"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Skrifstofubygging"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Japanskt pósthús"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Evrópskt pósthús"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Sjúkrahús"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Banki"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Hraðbanki"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hótel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Ástarhótel"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Nýlenduvöruverslun"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Skóli"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Stórmarkaður"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Verksmiðja"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Pappírsljósker"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Japanskur kastali"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Evrópskur kastali"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Rotta"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Mús"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Uxi"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Vatnabuffall"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Kýr"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Hlébarði"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Kanína"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Köttur"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Dreki"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Krókódíll"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Hvalur"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Snigill"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Snákur"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Hestur"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Hrútur"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Geit"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Kind"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Api"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Hani"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Kjúklingur"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Hundur"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Svín"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Villisvín"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Fíll"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Kolkrabbi"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Kuðungur"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Padda"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Maur"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Hunangsfluga"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Maríuhæna"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Fiskur"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Hitabeltisfiskur"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Blöðrufiskur"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Skjaldbaka"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Útungun"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Hænuungi"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Hænuungi sem snýr fram"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Fugl"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Mörgæs"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Kóalabjörn"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Púðluhundur"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Drómedari"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Úlfaldi"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Höfrungur"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Músarhaus"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Kýrhaus"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Tígrisdýrshaus"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Kanínuhaus"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Kattarhaus"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Drekahaus"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Blásandi hvalur"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Hestshaus"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Apahaus"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Hundshaus"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Svínshaus"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Froskshaus"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Hamsturshaus"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Úlfshaus"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Bjarnarhaus"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Pönduhaus"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Svínstrýni"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Loppuför"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Augu"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Eyra"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nef"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Munnur"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Tunga"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Ófylltur vísifingur sem vísar upp"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Ófylltur vísifingur sem vísar niður"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Ófylltur vísifingur sem vísar til vinstri"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Ófylltur vísifingur sem vísar til hægri"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Hnefatákn"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Tákn fyrir veifandi hönd"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Tákn fyrir að allt sé í lagi"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Tákn fyrir þumal upp"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Tákn fyrir þumal niður"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Tákn fyrir lófaklapp"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Tákn fyrir lófa"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Kóróna"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Kvenhattur"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Gleraugu"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Hálsbindi"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Stuttermabolur"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Gallabuxur"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Kjóll"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kímónó"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikiní"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Kvenföt"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Veski"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Handtaska"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Poki"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Karlmannsskór"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Íþróttaskór"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Háhælaður skór"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Kvensandali"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Kvenstígvél"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Fótspor"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Útlínur brjóstmyndar"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Útlínur brjóstmynda"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Strákur"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Stelpa"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Karl"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Kona"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Fjölskylda"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Maður og kona sem haldast í hendur"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Tveir menn sem haldast í hendur"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Tvær konur sem haldast í hendur"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Lögregluþjónn"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Kona með kanínueyru"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Brúður með slör"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Ljóshærð manneskja"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Maður með kínverskan hatt"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Maður með túrban"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Gamall maður"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Gömul kona"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Barn"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Verkamaður"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Prinsessa"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Japanskt tröll"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Japanskur púki"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Draugur"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Barnsengill"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Geimvera"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Geimveruskrímsli"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Púki"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Hauskúpa"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Upplýsingaborð"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Vörður"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Dansari"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Varalitur"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Naglalakk"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Andlitsnudd"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Klipping"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Rakarastofa"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Sprauta"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pilla"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Kossafar"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Ástarbréf"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Hringur"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Demantur"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Koss"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Blómvöndur"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Par með hjarta"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Brúðkaup"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Hjartsláttur"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Ástarsorg"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Tvö hjörtu"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Glitrandi hjarta"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Stækkandi hjarta"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Hjarta með ör"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Blátt hjarta"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Grænt hjarta"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Gult hjarta"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Fjólublátt hjarta"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Hjarta með slaufu"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Snúningshjörtu"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Skraut með hjarta"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Tígull með punkti inni í"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Ljósapera"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Reiðitákn"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Sprengja"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Svefntákn"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Árekstrartákn"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Svitadropatákn"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Dropi"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Hraðferðartákn"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Kúkur"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Spenntir upphandleggsvöðvar"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Svimatákn"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Talblaðra"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Hugsanablaðra"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Ófyllt blóm"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Tákn fyrir hundrað stig"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Peningapoki"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Gjaldmiðlar"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Þykkt dollaramerki"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Greiðslukort"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Seðill með yenmerki"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Seðill með dollaramerki"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Seðill með evrumerki"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Seðill með pundmerki"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Fljúgandi peningar"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Graf á uppleið og yenmerki"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Sæti"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Tölva"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Skjalataska"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisc"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Disketta"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Geisladiskur"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD-diskur"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Skjalamappa"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Opin skjalamappa"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Brotin síða"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Síða"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Dagatal"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Rifdagatal"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Spjaldskrá"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Graf á uppleið"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Graf á niðurleið"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Súlurit"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Klemmuspjald"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Teiknibóla"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Teiknibóla með kúlu"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Bréfaklemma"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Reglustika"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Þríhyrnd reglustika"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Bókamerkjaflipar"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Kladdi"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Glósubók"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Glósubók með skrautkápu"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Lokuð bók"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Opin bók"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Græn bók"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Blá bók"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Appelsínugul bók"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Bækur"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Nafnspjald"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Bókrolla"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Minnismiði"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Símtól"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Símboði"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Fax"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Loftnet"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Almannavarnahátalari"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Ómandi gjallarhorn"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Úthólf"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Innhólf"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Pakki"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Tákn fyrir tölvupóst"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Umslag berst"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Umslag með niðurör fyrir ofan"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Lokaður póstkassi með flaggið niðri"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Lokaður póstkassi með flaggið uppi"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Opinn póstkassi með flaggið uppi"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Opinn póstkassi með flaggið niðri"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Pósthólf"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Póstlúður"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Dagblað"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Farsími"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Farsími með hægriör vinstra megin"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Titringur"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Slökkt á farsíma"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Engir farsímar"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Loftnet með strikum"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Myndavél"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Kvikmyndatökuvél"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Sjónvarp"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Útvarp"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Myndbandsspóla"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Fléttaðar örvar til hægri"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Hringörvar sem vísa til hægri og vinstri og snúast réttsælis"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Hringörvar sem vísa til hægri og vinstri og snúast réttsælis með tölunni einum í hring yfir"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Hringörvar sem vísa niður og upp og snúast réttsælis"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Hringörvar sem vísa niður og upp og snúast rangsælis"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Tákn fyrir lágt birtustig"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Tákn fyrir hátt birtustig"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Yfirstrikaður hátalari"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Hátalari"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Hátalari með einni hljóðbylgju"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Hátalari með þremur hljóðbylgjum"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Rafhlaða"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Rafmagnskló"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Stækkunargler sem vísar til vinstri"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Stækkunargler sem vísar til hægri"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lás með blekpenna"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Læstur lás með lykli"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Lykill"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Lás"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Opinn lás"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Bjalla"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Yfirstrikuð bjalla"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Bókamerki"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Tenglatákn"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Valhnappur"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Til baka með ör fyrir ofan"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Ljúka með ör fyrir ofan"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Orðið „ON“ með upphrópunarmerki og örvum til vinstri og hægri"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Orðið „SOON“ með ör til hægri fyrir ofan"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Orðið „TOP“ með uppör fyrir ofan"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Tákn fyrir bannað innan átján"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Hnappur með tölunni 10"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Inntakstákn fyrir latneska hástafi"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Inntakstákn fyrir latneska lágstafi"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Inntakstákn fyrir tölur"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Inntakstákn fyrir tákn"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Inntakstákn fyrir latneska stafi"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Eldur"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Vasaljós"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Skiptilykill"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Hamar"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Bolti og ró"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hnífur"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Skammbyssa"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Smásjá"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Sjónauki"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Kristalskúla"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Sex arma stjarna með punkti í miðjunni"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Japanskt tákn fyrir byrjendur"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Þríforkstákn"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Fylltur ferningslaga hnappur"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Ófylltur ferningslaga hnappur"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Stór rauður hringur"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Stór blár hringur"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Stór appelsínugulur tígull"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Stór blár tígull"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Lítill appelsínugulur tígull"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Lítill blár tígull"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Rauður þríhyrningur sem vísar upp"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Rauður þríhyrningur sem vísar niður"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Lítill rauður þríhyrningur sem vísar upp"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Lítill rauður þríhyrningur sem vísar niður"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Klukka sem er eitt"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Klukka sem er tvö"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Klukka sem er þrjú"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Klukka sem er fjögur"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Klukka sem er fimm"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Klukka sem er sex"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Klukka sem er sjö"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Klukka sem er átta"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Klukka sem er níu"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Klukka sem er tíu"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Klukka sem er ellefu"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Klukka sem er tólf"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Klukka sem er hálftvö"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Klukka sem er hálfþrjú"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Klukka sem er hálffjögur"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Klukka sem er hálffimm"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Klukka sem er hálfsex"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Klukka sem er hálfsjö"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Klukka sem er hálfátta"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Klukka sem er hálfníu"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Klukka sem er hálftíu"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Klukka sem er hálfellefu"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Klukka sem er hálftólf"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Klukka sem er hálfeitt"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Fuji-fjall"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tókýóturn"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Frelsisstyttan"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Útlínur Japans"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai-stytta"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Glottandi andlit"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Glottandi andlit með bros í augum"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Andlit með gleðitár"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Brosandi andlit með opinn munn"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Brosandi andlit með opinn munn og bros í augum"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Brosandi andlit í köldum svita með opinn munn"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Brosandi andlit með opinn munn og augun lokuð"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Brosandi andlit með geislabaug"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Brosandi andlit með horn"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Blikkandi andlit"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Brosandi andlit með bros í augum"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Andlit að njóta ljúffengs matar"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Andlit sem er létt"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Brosandi andlit með hjartalaga augu"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Brosandi andlit með sólgleraugu"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Sjálfsánægt andlit"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Hlutlaust andlit"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Sviplaust andlit"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Andlit sem ekki er skemmt"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Andlit í köldum svita"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Hugsi andlit"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Ráðvillt andlit"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Ringlað andlit"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Andlit sem kyssir"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Andlit að senda koss"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Andlit sem kyssir með bros í augum"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Andlit sem kyssir með lokuð augun"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Andlit með tunguna út"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Blikkandi andlit með tunguna út"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Andlit með tunguna út og augun lokuð"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Vonsvikið andlit"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Áhyggjufullt andlit"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Reiðiandlit"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Fýlt andlit"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Grátandi andlit"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Þrjóskuandlit"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Andlit í sigurvímu"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Vonsvikið andlit sem er létt"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Fýluandlit með opinn munn"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Angistarandlit"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Óttaslegið andlit"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Þreytulegt andlit"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Syfjað andlit"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Þreytt andlit"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Geiflað andlit"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Hágrátandi andlit"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Andlit með opinn munn"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Þögult andlit"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Andlit í köldum svita með opinn munn"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Andlit að öskra af hræðslu"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Forviða andlit"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Rjótt andlit"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Sofandi andlit"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Svimaandlit"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Andlit án munns"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Andlit með læknagrímu"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Glottandi kattartrýni með bros í augum"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Kattartrýni með gleðitár"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Brosandi kattartrýni með opinn munn"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Brosandi kattartrýni með hjartalaga augu"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Kattartrýni með lymskubros"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Kattartrýni sem kyssir með lokuð augun"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Fýlt kattartrýni"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Grátandi kattartrýni"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Þreytulegt kattartrýni"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Andlit með hendur fyrir munni"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Andlit með hendur yfir haus"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Manneskja að hneigja sig"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Api með hendur fyrir augum"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Api með hendur fyrir eyrum"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Api með hendur fyrir munni"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Glöð manneskja að rétta upp hönd"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Manneskja sem fagnar með því að rétta upp báðar hendur"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Fýld manneskja"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Manneskja sem setur upp stút"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Manneskja með krosslagðar hendur"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Eldflaug"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Þyrla"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Eimreið"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Járnbrautarvagn"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Hraðalest"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Háhraðalest"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Lest"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Neðanjarðarlest"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Léttlest"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Stöð"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Sporvagn"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Sporvagn"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Rúta"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Rúta á móti"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Rafknúinn strætisvagn"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Biðstöð"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Smárúta"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Sjúkrabíll"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Brunabíll"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Lögreglubíll"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Lögreglubíll á móti"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Leigubíll"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Leigubíll á móti"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Bíll"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Bíll á móti"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Jeppi"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Sendibifreið"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Liðskipt vörubifreið"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Dráttarvél"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Einteinungur"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Fjallalest"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Kláflest"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Kláfferja"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Kláfferja"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Skip"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Árabátur"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Hraðbátur"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Lárétt umferðarljós"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Lóðrétt umferðarljós"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Framkvæmdaskilti"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Lögregluljós"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Þríhyrndur fáni á stöng"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Hurð"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Bannskilti"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Reykingatákn"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Tákn fyrir reykingabann"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Tákn um að fleygja rusli í körfu"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Tákn sem bannar að rusli sé fleygt"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Tákn fyrir drykkjarhæft vatn"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Tákn fyrir vatn sem ekki er drykkjarhæft"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Reiðhjól"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Reiðhjól bönnuð"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Hjólreiðamaður"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Fjallahjólreiðamaður"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Vegfarandi"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Engir vegfarendur"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Börn á ferð"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Karlkynstákn"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Kvenkynstákn"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Snyrting"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Barnatákn"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Klósett"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Salerni"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Sturta"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Bað"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Baðkar"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Vegabréfaeftirlit"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Tollur"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Farangur"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Geymsluhólf"</string>
+</resources>
diff --git a/java/res/values-is-rIS/strings-letter-descriptions.xml b/java/res/values-is-rIS/strings-letter-descriptions.xml
new file mode 100644
index 0000000..fe175fa
--- /dev/null
+++ b/java/res/values-is-rIS/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Kvenkyns raðtölutákn"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Míkrómerki"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Karlkyns raðtölutákn"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Þýskt S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A með öfugum broddi"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A með broddi"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A með hatti"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A með tildu"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A með tvídepli"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A með hring"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, límingur"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C með krók"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E með öfugum broddi"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E með broddi"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E með hatti"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E með tvídepli"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I með öfugum broddi"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I með broddi"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I með hatti"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I með tvídepli"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eð"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N með tildu"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O með öfugum broddi"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O með broddi"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O með hatti"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O með tildu"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O með tvídepli"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Danskt ö"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U með öfugum broddi"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U með broddi"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U með hatti"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U með tvídepli"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y með broddi"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Þorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y með tvídepli"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A með rá"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A með skál"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A með lykkju"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C með broddi"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C með hatti"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C með depli"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C með kríu"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D með kríu"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D með striki"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E með rá"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E með skál"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E með depli"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E með lykkju"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E með kríu"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G með hatti"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G með skál"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G með depli"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G með krók"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H með hatti"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H með striki"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I með tildu"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I með rá"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I með skál"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I með lykkju"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Depillaust I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, límingur"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J með hatti"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K með krók"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"K, hásteflingur"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L með broddi"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L með krók"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L með kríu"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L með miðdepli"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L með striki"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N með broddi"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N með krók"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N með kríu"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N með forsett úrfellingarmerki"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O með rá"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O með skál"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O með tvíbroddi"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, límingur"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R með broddi"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R með krók"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R með kríu"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S með broddi"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S með hatti"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S með krók"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S með kríu"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T með krók"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T með kríu"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T með striki"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U með tildu"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U með rá"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U með skál"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U með hring"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U með tvíbroddi"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U með lykkju"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W með hatti"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y með hatti"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z með broddi"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z með depli"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z með kríu"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Langt S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O með snaga"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U með snaga"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S með undirkommu"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T með undirkommu"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Hljóðritunartáknið E á hvolfi"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A með undirdepli"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A með krækju"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A með hatti og broddi"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A með hatti og öfugum broddi"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A með hatti og krækju"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A með hatti og tildu"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A með hatti og undirdepli"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A með skál og broddi"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A með skál og öfugum broddi"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A með skál og krækju"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A með skál og tildu"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A með skál og undirdepli"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E með undirdepli"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E með krækju"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E með tildu"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E með hatti og broddi"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E með hatti og öfugum broddi"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E með hatti og krækju"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E með hatti og tildu"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E með hatti og undirdepli"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I með krækju"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I með undirdepli"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O með undirdepli"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O með krækju"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O með hatti og broddi"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O með hatti og öfugum broddi"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O með hatti og krækju"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O með hatti og tildu"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O með hatti og undirdepli"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O með snaga og broddi"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O með snaga og öfugum broddi"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O með snaga og krækju"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O með snaga og tildu"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O með snaga og undirdepli"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U með undirdepli"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U með krækju"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U með snaga og broddi"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U með snaga og öfugum broddi"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U með snaga og krækju"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U með snaga og tildu"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U með snaga og undirdepli"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y með öfugum broddi"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y með undirdepli"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y með krækju"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y með tildu"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Öfugt upphrópunarmerki"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Vinstri tvíoddur"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Miðdepill"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Einn með brjóstletri"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Hægri tvíoddur"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Öfugt spurningarmerki"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Rísandi kló"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Hangandi kló"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Lágstæð kló"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Rísandi tvíkló"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Hangandi tvíkló"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Rýtingur"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Tvírýtingur"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Prómillumerki"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Högg"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Tvíhögg"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Vinstri oddur"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Hægri oddur"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Fjórir með brjóstletri"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Lágstafurinn n með latnesku brjóstletri"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Pesamerki"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Umsendingarmerki"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Hægri ör"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Niðurör"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tómamengi"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Vöxtur"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Undirstrikaður vinstri fleygur"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Undirstrikaður hægri fleygur"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Fyllt stjarna"</string>
+</resources>
diff --git a/java/res/values-is-rIS/strings-talkback-descriptions.xml b/java/res/values-is-rIS/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..978b079
--- /dev/null
+++ b/java/res/values-is-rIS/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Tengdu heyrnartól til að heyra stafi aðgangsorðsins lesna upphátt."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Núverandi texti er %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Engin texti sleginn inn"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> leiðréttir <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> yfir í <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> framkvæmir sjálfvirka leiðréttingu"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Óþekktur stafur"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Fleiri tákn"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Tákn"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Eyða"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Tákn"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Bókstafir"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Tölur"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Stillingar"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Bil"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Raddinntak"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji-tákn"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Venda"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Leita"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Kúla"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Skipta um tungumál"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Næsta"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Fyrra"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Kveikt á Shift"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Kveikt á hástafalás"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Táknastilling"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Stilling fyrir fleiri tákn"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Stafastilling"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Símastilling"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Símatáknastilling"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Lyklaborð falið"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Sýnir lyklaborð fyrir <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"dagsetning"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dagsetning og tími"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"netfang"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"skilaboð"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"tala"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"símanúmer"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"texti"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"tími"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"vefslóð"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Nýlegt"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Fólk"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Hlutir"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Náttúra"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Staðir"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Tákn"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Broskarlar"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Hástafurinn <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Hástafurinn I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Hástafurinn I með depli"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Óþekkt tákn"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Óþekkt emoji-tákn"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Aukalegir stafir eru í boði"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Aukalegum stöfum lokað"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Aukalegar tillögur eru í boði"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Aukalegum tillögum lokað"</string>
+</resources>
diff --git a/java/res/values-is-rIS/strings.xml b/java/res/values-is-rIS/strings.xml
new file mode 100644
index 0000000..c5b489f
--- /dev/null
+++ b/java/res/values-is-rIS/strings.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"Valkostir innsláttar"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Fletta upp tengiliðum"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Ritvilluleit notar færslur úr tengiliðalistanum þínum"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Titringur þegar ýtt er á lykla"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"Hljóð þegar ýtt er á lykil"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"Stækkaðir stafir við innslátt"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Inntaksvalkostir"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Útlit"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Tungumálavalkostir"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Still. bendingainnsláttar"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Textaleiðrétting"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Ítarlegt"</string>
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Skipta um innsláttaraðferð"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Lykill til að skipta um mál inniheldur aðrar innsláttaraðferðir"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"Lykill til að breyta tungumáli"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Sýna þegar mörg innsláttartungumál eru virk"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Sýna rennivísi"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Sýna myndræna vísbendingu þegar rennt er af Shift eða táknalykli"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Hunsunartöf lyklaglugga"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Engin töf"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Sjálfgefið"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms."</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"Sjálfgildi kerfis"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"Stinga upp á tengiliðum"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Nota nöfn úr tengiliðum fyrir tillögur og leiðréttingar"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Persónulegar tillögur"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Bæta <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"Punktur við tvöfalt bil"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ef ýtt er tvisvar á bilslána er settur inn punktur og svo bil"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Sjálfvirkir hástafir"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"Setja hástaf í upphaf hverrar málsgreinar"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Sérsniðin orðabók"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Viðbótarorðabækur"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"Aðalorðabók"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Sýna leiðréttingartillögur"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Sýna orðatillögur við innslátt"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Sýna alltaf"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Sýna í skammsniði"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Fela alltaf"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Útiloka dónaleg orð"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Ekki stinga upp á orðum sem kunna að vera dónaleg"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"Sjálfv. leiðrétting"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"Bil og greinarmerki leiðrétta sjálfkrafa innsláttarvillur"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Slökkt"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Hófleg"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Mikil"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Mjög mikil"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"Tillögur að næsta orði"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Nota fyrra orð til að útbúa tillögur"</string>
+    <string name="gesture_input" msgid="826951152254563827">"Kveikja á bendingainnslætti"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"Slá inn orð með því að renna í gegnum stafina"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"Sýna bendingaslóð"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Fljótandi rauntímaforskoðun"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Sjá orðatillöguna við bendingu"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Setningabending"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Setja inn bil í bendingum með því að renna yfir á bilslána"</string>
+    <string name="voice_input" msgid="3583258583521397548">"Raddinntakslykill"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Engar innsláttaraðferðir fyrir rödd virkar. Kannaðu stillingar tungumáls og innsláttar."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"Stilla innsláttaraðferðir"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"Innsláttartungumál"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"Senda inn álit"</string>
+    <string name="select_language" msgid="3693815588777926848">"Innsláttartungumál"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Snertu aftur til að vista"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"Orðabók í boði"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"Þema lyklaborðs"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"Enskt (Bretland)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"Enskt (Bandaríkin)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"Spænskt (US)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Enskt (Bretland) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Enskt (Bandaríkin) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spænskt (Bandaríkin) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (hefðbundið)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillískt)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latneskt)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"Ekkert tungumál (stafróf)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Stafróf (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Stafróf (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Stafróf (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Stafróf (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Stafróf (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Stafróf (tölva)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"Emoji-tákn"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Lyklaborðsþema"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Hvítt gegnsætt"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Blátt gegnsætt"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Dökkt"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Ljóst"</string>
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"Sérsniðnar innsláttaraðferðir"</string>
+    <string name="add_style" msgid="6163126614514489951">"Bæta stíl við"</string>
+    <string name="add" msgid="8299699805688017798">"Bæta við"</string>
+    <string name="remove" msgid="4486081658752944606">"Fjarlægja"</string>
+    <string name="save" msgid="7646738597196767214">"Vista"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"Tungumál"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"Skipan"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Gera þarf sérsniðnu innsláttaraðferðina virka áður en þú tekur hana í notkun. Viltu virkja hana núna?"</string>
+    <string name="enable" msgid="5031294444630523247">"Kveikja"</string>
+    <string name="not_now" msgid="6172462888202790482">"Ekki núna"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Sama innsláttaraðferð er þegar fyrir hendi: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Töf áður en lykli er haldið inni"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Lengd lyklatitrings"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Styrkur lyklahljóða"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Lesa utanaðkomandi orðabókarskrá"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Engar orðabókarskrár í niðurhalsmöppunni"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Veldu orðabókarskrá til að setja upp"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Viltu setja upp þessa skrá fyrir <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
+    <string name="error" msgid="8940763624668513648">"Villa kom upp"</string>
+    <string name="button_default" msgid="3988017840431881491">"Sjálfgefið"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"Velkomin(n) í <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"með bendingainnslætti"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"Hefjast handa"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"Næsta skref"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"Uppsetning <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"Virkjaðu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"Hakaðu við „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ í stillingum tungumáls og innsláttar. Þetta veitir því heimild til að keyra í tækinu."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> er þegar virkt í stillingum tungumáls og innsláttar og lokið hefur verið við þetta skref. Vindum okkur í næsta!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"Virkja í stillingum"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"Skiptu yfir í <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"Næst skaltu velja „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“ sem virka innsláttaraðferð fyrir texta."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"Skipta um innsláttaraðferð"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"Til hamingju, allt er klárt!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"Nú geturðu notað <xliff:g id="APPLICATION_NAME">%s</xliff:g> til að skrifa í öllum uppáhaldsforritunum þínum."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"Stilla önnur tungumál"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"Lokið"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Sýna forritstákn"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Sýna forritstákn í ræsiforritinu"</string>
+    <string name="app_name" msgid="6320102637491234792">"Orðabókarveita"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"Orðabókarveita"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"Orðabókarþjónusta"</string>
+    <string name="download_description" msgid="6014835283119198591">"Uppfærsluupplýsingar orðabóka"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Viðbótarorðabækur"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Orðabók í boði"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Stillingar fyrir orðabækur"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"Orðabækur notanda"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Orðabók notanda"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"Orðabók í boði"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"Niðurhal í gangi"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"Uppsett"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"Uppsett, óvirk"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Vandamál við að tengjast orðabókarþjónustu"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"Engar orðabækur"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"Endurnýja"</string>
+    <string name="last_update" msgid="730467549913588780">"Síðast uppfært"</string>
+    <string name="message_updating" msgid="4457761393932375219">"Leitar að uppfærslum"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Hleður…"</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"Aðalorðabók"</string>
+    <string name="cancel" msgid="6830980399865683324">"Hætta við"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Stillingar"</string>
+    <string name="install_dict" msgid="180852772562189365">"Setja upp"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"Hætta við"</string>
+    <string name="delete_dict" msgid="756853268088330054">"Eyða"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Orðabók er í boði fyrir tungumálið sem valið er í fartækinu.&lt;br/&gt; Við mælum með því að þú &lt;b&gt;sækir&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> orðabók til að auðvelda þér innslátt.&lt;br/&gt; &lt;br/&gt; Niðurhalið gæti tekið nokkrar mínútur yfir 3G-kerfi. Kostnaður kann að hljótast af niðurhalinu ef þú ert ekki með &lt;b&gt;ótakmarkaða gagnaáskrift&lt;/b&gt;.&lt;br/&gt; Ef þú ert ekki viss um hvernig gagnaáskrift þú ert með er mælt með að þú tengist Wi-Fi til að hefja niðurhalið sjálfkrafa.&lt;br/&gt; &lt;br/&gt; Ábending: Þú getur sótt og fjarlægt orðabækur undir &lt;b&gt;Tungumál og innsláttur&lt;/b&gt; í valmyndinni &lt;b&gt;Stillingar&lt;/b&gt; í fartækinu."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"Sækja núna (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Sækja í gegnum Wi-Fi"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Orðabók er í boði fyrir <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"Ýttu til að skoða og sækja"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Sækir: Tillögur fyrir <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> verða tilbúnar fljótlega."</string>
+    <string name="version_text" msgid="2715354215568469385">"Útgáfa <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Bæta við"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Bæta við orðabók"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Setning"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Fleiri valkostir"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Færri valkostir"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Í lagi"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Orð:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Flýtileið:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Tungumál:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Sláðu inn orð"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Valfrjáls flýtileið"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Breyta orði"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Breyta"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Eyða"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Engin orð eru í orðabók notanda. Bættu við orðum með því að snerta hnappinn Bæta við (+)."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Fyrir öll tungumál"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Fleiri tungumál…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"Eyða"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-is/bools.xml b/java/res/values-is/bools.xml
deleted file mode 100644
index 840d20c..0000000
--- a/java/res/values-is/bools.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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>
-    <!-- Whether this input method should be used as the default for a locale. Override it
-         for supported languages. -->
-    <bool name="im_is_default">true</bool>
-</resources>
diff --git a/java/res/values-is/strings-action-keys.xml b/java/res/values-is/strings-action-keys.xml
deleted file mode 100644
index 49c6199..0000000
--- a/java/res/values-is/strings-action-keys.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="label_go_key" msgid="1635148082137219148">"Áfram"</string>
-    <string name="label_next_key" msgid="362972844525672568">"Næsta"</string>
-    <string name="label_previous_key" msgid="1211868118071386787">"Fyrra"</string>
-    <string name="label_done_key" msgid="2441578748772529288">"Lokið"</string>
-    <string name="label_send_key" msgid="2815056534433717444">"Senda"</string>
-    <!-- no translation found for label_pause_key (181098308428035340) -->
-    <skip />
-    <!-- no translation found for label_wait_key (6402152600878093134) -->
-    <skip />
-</resources>
diff --git a/java/res/values-is/strings.xml b/java/res/values-is/strings.xml
deleted file mode 100644
index 6f685d3..0000000
--- a/java/res/values-is/strings.xml
+++ /dev/null
@@ -1,455 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
-    <skip />
-    <!-- no translation found for english_ime_research_log (8492602295696577851) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
-    <skip />
-    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
-    <skip />
-    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
-    <skip />
-    <!-- no translation found for popup_on_keypress (123894815723512944) -->
-    <skip />
-    <!-- no translation found for general_category (1859088467017573195) -->
-    <skip />
-    <!-- no translation found for correction_category (2236750915056607613) -->
-    <skip />
-    <!-- no translation found for gesture_typing_category (497263612130532630) -->
-    <skip />
-    <!-- no translation found for misc_category (6894192814868233453) -->
-    <skip />
-    <!-- no translation found for advanced_settings (362895144495591463) -->
-    <skip />
-    <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
-    <skip />
-    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
-    <skip />
-    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
-    <skip />
-    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
-    <skip />
-    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
-    <skip />
-    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
-    <skip />
-    <!-- no translation found for settings_system_default (6268225104743331821) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
-    <skip />
-    <!-- no translation found for use_double_space_period (8781529969425082860) -->
-    <skip />
-    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
-    <skip />
-    <!-- no translation found for auto_cap (1719746674854628252) -->
-    <skip />
-    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
-    <skip />
-    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
-    <skip />
-    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
-    <skip />
-    <!-- no translation found for main_dictionary (4798763781818361168) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
-    <skip />
-    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
-    <skip />
-    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
-    <skip />
-    <!-- no translation found for auto_correction (7630720885194996950) -->
-    <skip />
-    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
-    <skip />
-    <!-- no translation found for bigram_prediction (1084449187723948550) -->
-    <skip />
-    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
-    <skip />
-    <!-- no translation found for gesture_input (826951152254563827) -->
-    <skip />
-    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
-    <skip />
-    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
-    <skip />
-    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
-    <skip />
-    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
-    <skip />
-    <!-- no translation found for added_word (8993883354622484372) -->
-    <skip />
-    <!-- no translation found for spoken_use_headphones (896961781287283493) -->
-    <skip />
-    <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
-    <skip />
-    <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct (8005997889020109763) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct_obscured (6276420476908833791) -->
-    <skip />
-    <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift (244197883292549308) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
-    <skip />
-    <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
-    <skip />
-    <!-- no translation found for spoken_description_delete (8740376944276199801) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
-    <skip />
-    <!-- no translation found for spoken_description_settings (4627462689603838099) -->
-    <skip />
-    <!-- no translation found for spoken_description_tab (2667716002663482248) -->
-    <skip />
-    <!-- no translation found for spoken_description_space (2582521050049860859) -->
-    <skip />
-    <!-- no translation found for spoken_description_mic (615536748882611950) -->
-    <skip />
-    <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
-    <skip />
-    <!-- no translation found for spoken_description_return (8178083177238315647) -->
-    <skip />
-    <!-- no translation found for spoken_description_search (1247236163755920808) -->
-    <skip />
-    <!-- no translation found for spoken_description_dot (40711082435231673) -->
-    <skip />
-    <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
-    <skip />
-    <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
-    <skip />
-    <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
-    <skip />
-    <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
-    <skip />
-    <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
-    <skip />
-    <!-- no translation found for voice_input (3583258583521397548) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
-    <skip />
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
-    <!-- no translation found for language_selection_title (1651299598555326750) -->
-    <skip />
-    <!-- no translation found for send_feedback (1780431884109392046) -->
-    <skip />
-    <!-- no translation found for select_language (3693815588777926848) -->
-    <skip />
-    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
-    <skip />
-    <!-- no translation found for has_dictionary (6071847973466625007) -->
-    <skip />
-    <!-- no translation found for prefs_enable_log (6620424505072963557) -->
-    <skip />
-    <!-- no translation found for prefs_description_log (7525225584555429211) -->
-    <skip />
-    <!-- no translation found for keyboard_layout (8451164783510487501) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
-    <!-- no translation found for subtype_es_US (5583145191430180200) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
-    <skip />
-    <!-- no translation found for subtype_nepali_traditional (9032247506728040447) -->
-    <skip />
-    <!-- no translation found for subtype_no_language (7137390094240139495) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
-    <skip />
-    <!-- no translation found for subtype_emoji (7483586578074549196) -->
-    <skip />
-    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
-    <skip />
-    <!-- no translation found for add_style (6163126614514489951) -->
-    <skip />
-    <!-- no translation found for add (8299699805688017798) -->
-    <skip />
-    <!-- no translation found for remove (4486081658752944606) -->
-    <skip />
-    <!-- no translation found for save (7646738597196767214) -->
-    <skip />
-    <!-- no translation found for subtype_locale (8576443440738143764) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
-    <skip />
-    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
-    <skip />
-    <!-- no translation found for enable (5031294444630523247) -->
-    <skip />
-    <!-- no translation found for not_now (6172462888202790482) -->
-    <skip />
-    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
-    <skip />
-    <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
-    <skip />
-    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
-    <skip />
-    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
-    <skip />
-    <!-- no translation found for error (8940763624668513648) -->
-    <skip />
-    <!-- no translation found for button_default (3988017840431881491) -->
-    <skip />
-    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
-    <skip />
-    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
-    <skip />
-    <!-- no translation found for setup_start_action (8936036460897347708) -->
-    <skip />
-    <!-- no translation found for setup_next_action (371821437915144603) -->
-    <skip />
-    <!-- no translation found for setup_steps_title (6400373034871816182) -->
-    <skip />
-    <!-- no translation found for setup_step1_title (3147967630253462315) -->
-    <skip />
-    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
-    <skip />
-    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
-    <skip />
-    <!-- no translation found for setup_step1_action (4366513534999901728) -->
-    <skip />
-    <!-- no translation found for setup_step2_title (6860725447906690594) -->
-    <skip />
-    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
-    <skip />
-    <!-- no translation found for setup_step2_action (1660330307159824337) -->
-    <skip />
-    <!-- no translation found for setup_step3_title (3154757183631490281) -->
-    <skip />
-    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
-    <skip />
-    <!-- no translation found for setup_step3_action (600879797256942259) -->
-    <skip />
-    <!-- no translation found for setup_finish_action (276559243409465389) -->
-    <skip />
-    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
-    <skip />
-    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
-    <skip />
-    <!-- no translation found for app_name (6320102637491234792) -->
-    <skip />
-    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
-    <skip />
-    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
-    <skip />
-    <!-- no translation found for download_description (6014835283119198591) -->
-    <skip />
-    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
-    <skip />
-    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
-    <skip />
-    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
-    <skip />
-    <!-- no translation found for user_dictionaries (3582332055892252845) -->
-    <skip />
-    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
-    <skip />
-    <!-- no translation found for dictionary_available (4728975345815214218) -->
-    <skip />
-    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
-    <skip />
-    <!-- no translation found for dictionary_installed (8081558343559342962) -->
-    <skip />
-    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
-    <skip />
-    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
-    <skip />
-    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
-    <skip />
-    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
-    <skip />
-    <!-- no translation found for last_update (730467549913588780) -->
-    <skip />
-    <!-- no translation found for message_updating (4457761393932375219) -->
-    <skip />
-    <!-- no translation found for message_loading (8689096636874758814) -->
-    <skip />
-    <!-- no translation found for main_dict_description (3072821352793492143) -->
-    <skip />
-    <!-- no translation found for cancel (6830980399865683324) -->
-    <skip />
-    <!-- no translation found for install_dict (180852772562189365) -->
-    <skip />
-    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
-    <skip />
-    <!-- no translation found for delete_dict (756853268088330054) -->
-    <skip />
-    <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
-    <skip />
-    <!-- no translation found for download_over_metered (1643065851159409546) -->
-    <skip />
-    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
-    <skip />
-    <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
-    <skip />
-    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
-    <skip />
-    <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
-    <skip />
-    <!-- no translation found for version_text (2715354215568469385) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
-    <skip />
-    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
-    <skip />
-</resources>
diff --git a/java/res/values-it/strings-action-keys.xml b/java/res/values-it/strings-action-keys.xml
index 02e7b9c..d61f2da 100644
--- a/java/res/values-it/strings-action-keys.xml
+++ b/java/res/values-it/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Prec."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Fine"</string>
     <string name="label_send_key" msgid="482252074224462163">"Invia"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Cerca"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pausa"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Attendi"</string>
 </resources>
diff --git a/java/res/values-it/strings-config-important-notice.xml b/java/res/values-it/strings-config-important-notice.xml
new file mode 100644
index 0000000..3690fac
--- /dev/null
+++ b/java/res/values-it/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Usa comunicazioni e dati digitati per migliorare i suggerimenti"</string>
+</resources>
diff --git a/java/res/values-it/strings-letter-descriptions.xml b/java/res/values-it/strings-letter-descriptions.xml
new file mode 100644
index 0000000..e66516c
--- /dev/null
+++ b/java/res/values-it/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicatore ordinale femminile"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Simbolo micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicatore ordinale maschile"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Scharfes S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, accento grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, accento acuto"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, accento circonflesso"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, dieresi"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, anello sopra"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, legatura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cediglia"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, accento grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, accento acuto"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, accento circonflesso"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, dieresi"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, accento grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, accento acuto"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, accento circonflesso"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, dieresi"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, accento grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, accento acuto"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, accento circonflesso"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, dieresi"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, barrata"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, accento grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, accento acuto"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, accento circonflesso"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, dieresi"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, accento acuto"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, dieresi"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, accento acuto"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, accento circonflesso"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punto sovrascritto"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, barra"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punto sovrascritto"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, accento circonflesso"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punto sovrascritto"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cediglia"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, accento circonflesso"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, tagliata"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I senza punto"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, legatura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, accento circonflesso"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cediglia"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, accento acuto"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cediglia"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punto mediano"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, tagliata"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, accento acuto"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cediglia"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceduta dall\'apostrofo"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Nasale velare"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, doppio accento acuto"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, legatura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, accento acuto"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cediglia"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, accento acuto"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, accento circonflesso"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cediglia"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cediglia"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, barrata"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, anello sopra"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, doppio accento acuto"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, accento circonflesso"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, accento circonflesso"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, accento acuto"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punto sovrascritto"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S lunga"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, corno"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, corno"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, virgola sotto"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, virgola sotto"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, gancio sopra"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, accento circonflesso e acuto"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, accento circonflesso e grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, accento circonflesso e gancio sopra"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, accento circonflesso e tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, accento circonflesso e punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve e accento acuto"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve e accento grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve e gancio sopra"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve e tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve e punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, gancio sopra"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, accento circonflesso e acuto"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, accento circonflesso e grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, accento circonflesso e gancio sopra"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, accento circonflesso e tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, accento circonflesso e punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, gancio sopra"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, gancio sopra"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, accento circonflesso e acuto"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, accento circonflesso e grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, accento circonflesso e gancio sopra"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, accento circonflesso e tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, accento circonflesso e punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, corno e accento acuto"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, corno e accento grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, corno e gancio sopra"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, corno e tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, corno e punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, gancio sopra"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, corno e accento acuto"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, corno e accento grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, corno e gancio sopra"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, corno e tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, corno e punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, accento grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punto sottoscritto"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, gancio sopra"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Punto esclamativo invertito"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Virgolette basse doppie aperte"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Punto mediano"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Uno in apice"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Virgolette basse doppie chiuse"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Punto interrogativo invertito"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Virgoletta singola aperta"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Virgoletta singola chiusa"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Virgoletta singola low-9"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Virgolette doppie aperte"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Virgolette doppie chiuse"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Obelisco"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Doppio obelisco"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Segno di per mille"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Primo"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Doppio primo"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Virgoletta bassa singola aperta"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Virgoletta bassa singola chiusa"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Quattro in apice"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Lettera latina n minuscola in apice"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Simbolo del peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Presso"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Freccia verso destra"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Freccia verso il basso"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Insieme vuoto"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incremento"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Minore di o uguale a"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Maggiore di o uguale a"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Stella nera"</string>
+</resources>
diff --git a/java/res/values-it/strings-talkback-descriptions.xml b/java/res/values-it/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..8665530
--- /dev/null
+++ b/java/res/values-it/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Collega gli auricolari per ascoltare la pronuncia dei tasti premuti per la password."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Il testo attuale è %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nessun testo inserito"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corregge <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> con <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> esegue la correzione automatica"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Carattere sconosciuto"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Maiusc"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Altri simboli"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Maiusc"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboli"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Maiusc"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Elimina"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simboli"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Lettere"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Numeri"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Impostazioni"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"TAB"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Spazio"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Input vocale"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Invio"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Cerca"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Pallino"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Cambia lingua"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Successivo"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Precedente"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Maiusc attivo"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Bloc Maiusc attivo"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modalità simboli"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modalità altri simboli"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modalità lettere"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modalità telefono"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modalità simboli telefono"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastiera nascosta"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Ecco la tastiera <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"data e ora"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"messaggi"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"numero"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefono"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"testo"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ora"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recenti"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Persone"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Oggetti"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natura"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Luoghi"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticon"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiuscola"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiuscola"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiuscola, punto sovrascritto"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbolo sconosciuto"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji sconosciuta"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Sono disponibili caratteri alternativi"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"I caratteri alternativi vengono ignorati"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sono disponibili suggerimenti alternativi"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"I suggerimenti alternativi vengono ignorati"</string>
+</resources>
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 1111c49..9b7f18c 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opzioni inserimento"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Ricerca comandi di log"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cerca in nomi contatti"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"La funzione di controllo ortografico usa voci dell\'elenco contatti"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrazione tasti"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Suono tasti"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup sui tasti"</string>
-    <string name="general_category" msgid="1859088467017573195">"Generali"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Correzione testo"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Digitazione a gesti"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Altre opzioni"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Impostazioni avanzate"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opzioni per esperti"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Altri metodi immissione"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Il tasto per cambiare lingua offre altri metodi di immissione"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tasto cambio lingua"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Predefinito sistema"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Suggerisci nomi di contatti"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizza nomi di Contatti per suggerimenti e correzioni"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Suggerimenti personalizz."</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Migliora <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Doppio spazio per punto"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Tocca due volte barra spaziatr. per inserire punto seguito da spazio"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Maiuscole automatiche"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostra traccia con gesto"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Anteprima mobile dinamica"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Visualizza la parola suggerita durante il gesto"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : parola salvata"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Collega gli auricolari per ascoltare la pronuncia dei tasti premuti per la password."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Il testo attuale è %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nessun testo inserito"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corregge <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> con <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> esegue correzione automatica"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Codice tasto %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Maiuscolo"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Maiuscolo attivo (tocca per disattivare)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Blocco maiuscole attivo (tocca per disattivare)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Cancella"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simboli"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Lettere"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numeri"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Impostazioni"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulazione"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Spazio"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Input vocale"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smile"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Invio"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Cerca"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Pallino"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Cambia lingua"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Successivo"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Precedente"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Maiuscolo attivo"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Blocco maiuscole attivo"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Maiuscolo disattivato"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Modalità simboli"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modalità lettere"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modalità telefono"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modalità simboli telefono"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tastiera nascosta"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Visualizzazione tastiera <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"data"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"data e ora"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"messaggi"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"numero"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefono"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"testo"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ora"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gesto frase"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Inserisci spazi durante gesti facendo scivolare dito su spazio"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tasto input vocale"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Su tastiera principale"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Su tastiera simboli"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"OFF"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Microfono su tastiera principale"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Microfono su tastiera simboli"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Input vocale disatt."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nessun metodo di immissione vocale abilitato. Controlla le impostazioni Lingua e input."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configura metodi di immissione"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Lingue comandi"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Invia feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Lingue comandi"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Tocca di nuovo per salvare"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dizionario disponibile"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Attiva commenti degli utenti"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Contribuisci a migliorare l\'editor del metodo di immissione inviando automaticamente statistiche sull\'utilizzo e rapporti sugli arresti anomali"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema della tastiera"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Inglese (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Inglese (USA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spagnolo (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglese (Regno Unito) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglese (Stati Uniti) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spagnolo (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradizionale)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglese (Regno Unito) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglese (Stati Uniti) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spagnolo (Stati Uniti) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradizionale)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cirillico)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latino)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Nessuna lingua (alfabeto)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeto (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeto (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Combinazione di colori"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Bianco"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blu"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Stili personalizzati"</string>
     <string name="add_style" msgid="6163126614514489951">"Aggiungi stile"</string>
     <string name="add" msgid="8299699805688017798">"Aggiungi"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Attiva"</string>
     <string name="not_now" msgid="6172462888202790482">"Non ora"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Esiste già uno stile di inuput uguale: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modalità Studio sull\'usabilità"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Ritardo pressione lunga tasti"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Durata vibraz. pressione tasto"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume audio a pressione tasto"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Leggi file dizionario esterno"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Nessun file di dizionario nella cartella Download"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Seleziona un file di dizionario da installare"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Installare questo file per <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Vuoi davvero installare questo file per <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Si è verificato un errore"</string>
     <string name="button_default" msgid="3988017840431881491">"Predefinito"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Benvenuto in <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Aggiorna"</string>
     <string name="last_update" msgid="730467549913588780">"Ultimo aggiornamento"</string>
     <string name="message_updating" msgid="4457761393932375219">"Verifica disponibilità aggiornamenti"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Caricamento in corso..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Caricamento..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Dizionario principale"</string>
     <string name="cancel" msgid="6830980399865683324">"Annulla"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Impostazioni"</string>
     <string name="install_dict" msgid="180852772562189365">"Installa"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Annulla"</string>
     <string name="delete_dict" msgid="756853268088330054">"Elimina"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Per la lingua selezionata sul dispositivo mobile è disponibile un dizionario.&lt;br/&gt; Ti consigliamo di &lt;b&gt;scaricare&lt;/b&gt; il dizionario in <xliff:g id="LANGUAGE">%1$s</xliff:g> per migliorare l\'esperienza di digitazione.&lt;br/&gt; &lt;br/&gt; Il download potrebbe richiedere un paio di minuti su 3G. Potrebbero essere applicati costi se non disponi di un &lt;b&gt;piano dati illimitato&lt;/b&gt;.&lt;br/&gt; Se non sei sicuro di quale sia il tuo piano dati, dovresti trovare una connessione Wi-Fi per avviare il download automaticamente.&lt;br/&gt; &lt;br/&gt; Suggerimento. Puoi scaricare e rimuovere dizionari passando a &lt;b&gt;Lingue e immissione&lt;/b&gt; nel menu &lt;b&gt;Impostazioni&lt;/b&gt; del dispositivo mobile."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Per la lingua selezionata sul dispositivo mobile è disponibile un dizionario.&lt;br/&gt; Ti consigliamo di &lt;b&gt;scaricare&lt;/b&gt; il dizionario in <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> per migliorare la digitazione.&lt;br/&gt; &lt;br/&gt; Il download potrebbe richiedere un paio di minuti su 3G. Potrebbero essere applicati costi se non disponi di un &lt;b&gt;piano dati illimitato&lt;/b&gt;.&lt;br/&gt; Se non sei sicuro di quale sia il tuo piano dati, dovresti trovare una connessione Wi-Fi per avviare il download automaticamente.&lt;br/&gt; &lt;br/&gt; Suggerimento. Puoi scaricare e rimuovere dizionari selezionando &lt;b&gt;Lingua e immissione&lt;/b&gt; nel menu &lt;b&gt;Impostazioni&lt;/b&gt; del dispositivo mobile."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Scarica ora (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Scarica tramite Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"È disponibile un dizionario per <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"È disponibile un dizionario per: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Premi per esaminare e scaricare"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Download: i suggerimenti per <xliff:g id="LANGUAGE">%1$s</xliff:g> saranno pronti a breve."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Download: i suggerimenti per <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> saranno pronti a breve."</string>
     <string name="version_text" msgid="2715354215568469385">"Versione <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Aggiungi"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Aggiungi al dizionario"</string>
diff --git a/java/res/values-iw-sw600dp/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-iw-sw600dp/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..22f0353
--- /dev/null
+++ b/java/res/values-iw-sw600dp/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations">:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-iw/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-iw/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..d307208
--- /dev/null
+++ b/java/res/values-iw/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-iw/donottranslate.xml b/java/res/values-iw/donottranslate.xml
deleted file mode 100644
index 57de253..0000000
--- a/java/res/values-iw/donottranslate.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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">
-    <!-- The all letters need to be mirrored are found at
-         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
-    <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
-</resources>
diff --git a/java/res/values-iw/strings-action-keys.xml b/java/res/values-iw/strings-action-keys.xml
index f0f466b..f72a6fe 100644
--- a/java/res/values-iw/strings-action-keys.xml
+++ b/java/res/values-iw/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"הקודם"</string>
     <string name="label_done_key" msgid="7564866296502630852">"בוצע"</string>
     <string name="label_send_key" msgid="482252074224462163">"שלח"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"חפש"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"השהה"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"המתן"</string>
 </resources>
diff --git a/java/res/values-iw/strings-config-important-notice.xml b/java/res/values-iw/strings-config-important-notice.xml
new file mode 100644
index 0000000..34ef4ca
--- /dev/null
+++ b/java/res/values-iw/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"למד מהתכתבויות ומנתונים שהקלדת כדי לשפר את ההצעות"</string>
+</resources>
diff --git a/java/res/values-iw/strings-emoji-descriptions.xml b/java/res/values-iw/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..975ca10
--- /dev/null
+++ b/java/res/values-iw/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"סימן זכויות יוצרים"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"סימן רשום"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"סימן קריאה כפול"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"סימן שאלה וסימן קריאה"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"סמל סימן מסחרי"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"מקור מידע"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"חץ ימינה ושמאלה"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"חץ למעלה ולמטה"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"חץ צפון מערב"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"חץ צפון מזרח"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"חץ דרום מזרח"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"חץ דרום מערב"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"חץ שמאלה עם קרס"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"חץ ימינה חץ עם קרס"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"שעון יד"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"שעון חול"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"משולש שחור כפול פונה ימינה"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"משולש שחור כפול פונה שמאלה"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"משולש שחור כפול פונה למעלה"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"משולש שחור כפול פונה למטה"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"שעון מעורר"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"שעון חול עם חול זורם"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"‏האות הלטינית הרישית M מוקפת בעיגול"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"ריבוע קטן שחור"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"ריבוע קטן לבן"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"משולש שחור פונה ימינה"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"משולש שחור פונה שמאלה"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"ריבוע אמצעי לבן"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"ריבוע אמצעי שחור"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"ריבוע קטן אמצעי לבן"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"ריבוע קטן אמצעי שחור"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"שמש שחורה עם קרניים"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"ענן"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"טלפון שחור"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"פתק עם סימן ביקורת"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"מטרייה עם טיפות גשם"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"משקה חם"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"אצבע לבנה מורה כלפי מעלה"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"פרצוף מחייך לבן"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"מזל טלה"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"מזל שור"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"מזל תאומים"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"מזל סרטן"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"מזל אריה"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"מזל בתולה"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"מזל מאזניים"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"מזל עקרב"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"מזל קשת"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"מזל גדי"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"מזל דלי"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"מזל דגים"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"קלף עלה שחור"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"קלף תלתן שחור"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"קלף לב שחור"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"קלף יהלום שחור"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"מעיינות חמים"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"סמל מיחזור אוניברסלי שחור"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"סמל כיסא גלגלים"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"עוגן"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"סימן אזהרה"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"סימן מתח גבוה"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"עיגול לבן אמצעי"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"עיגול שחור אמצעי"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"כדור כדורגל"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"כדור בסיס"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"בובת שלג בלי שלג"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"שמש מאחורי ענן"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"נושא הנחש"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"אין כניסה"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"כנסייה"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"מזרקה"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"דגל בחור"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"מפרשית"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"אוהל"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"משאבת דלק"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"מספריים שחורים"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"סימן ביקורת לבן עבה"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"מטוס"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"מעטפה"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"אגרוף מונף"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"יד מורמת"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"יד בסימן ניצחון"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"עיפרון"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"ציפורן שחורה"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"סימן ביקורת עבה"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"‏סימן כפל (x) עבה"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"ניצוצות"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"כוכבית עם שמונה חישורים"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"כוכב שחור עם שמונה קודקודים"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"פתית שלג"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"ניצוץ"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"סימן איקס"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"סימן איקס בתוך ריבוע המציין שלילה"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"סימן שאלה שחור"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"סימן שאלה לבן"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"סימן קריאה לבן"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"סמל סימן קריאה עבה"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"לב שחור עבה"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"סימן חיבור עבה"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"סימן חיסור עבה"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"סימן חלוקה עבה"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"חץ ימינה שחור"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"לולאה מסולסלת"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"לולאה מסולסלת כפולה"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"חץ פונה ימינה ולאחר מכן מתעקל כלפי מעלה"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"חץ פונה ימינה ולאחר מכן מתעקל מטה"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"חץ שחור פונה שמאלה"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"חץ שחור פונה למעלה"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"חץ שחור פונה למטה"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"ריבוע שחור גדול"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"ריבוע לבן גדול"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"כוכב אמצעי לבן"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"עיגול עבה גדול"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"מקף גלי"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"סימן החלפת חלק"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"אידאוגרף מוקף במעגל שמשמעותו \'מזל טוב\'"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"אידאוגרף מוקף במעגל שמשמעותו \'סוד\'"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"קוביית מהג\'ונג של דרקון אדום"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"קלף משחק של ג\'וקר שחור"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"‏סוג דם A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"‏סוג דם B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"‏סוג דם O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"חניון"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"‏סוג דם AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"‏ריבוע עם הכיתוב CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"‏ריבוע עם הכיתוב cool"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"‏ריבוע עם הכיתוב free"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"‏ריבוע עם הכיתוב ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"‏ריבוע עם הכיתוב new"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"‏ריבוע עם הכיתוב NG"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"‏ריבוע עם הכיתוב OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"‏ריבוע עם הכיתוב SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"‏ריבוע עם הכיתוב Up עם סימן קריאה"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"‏ריבוע עם הכיתוב vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"ריבוע עם סמל \'כאן\' בקטקאנה"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"ריבוע עם סמל \'שירות\' בקטקאנה"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"ריבוע עם אידאוגרף שמשמעותו \'בחינם\'"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"ריבוע עם אידאוגרף שמשמעותו \'מושב שמור\'"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"ריבוע עם אידאוגרף שמשמעותו \'איסור\'"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"ריבוע עם אידאוגרף שמשמעותו \'ריק\'"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"ריבוע עם אידאוגרף שמשמעותו \'התקבל\'"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"ריבוע עם אידאוגרף שמשמעותו \'תפוסה מלאה\'"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"ריבוע עם אידאוגרף שמשמעותו \'שולם\'"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"ריבוע עם אידאוגרף שמשמעותו \'חודשי\'"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"ריבוע עם אידאוגרף שמשמעותו \'הגשת בקשה/מועמדות\'"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"ריבוע עם אידאוגרף שמשמעותו \'הנחה\'"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"ריבוע עם אידאוגרף שמשמעותו \'בעסקים\'"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"עיגול עם אידאוגרף שמשמעותו \'יתרון\'"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"עיגול עם אידאוגרף שמשמעותו \'קבל\'"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"ציקלון"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"ערפל"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"מטרייה סגורה"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"לילה עם כוכבים"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"זריחה מעל הרים"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"זריחה"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"נוף עירוני בשעת בין ערביים"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"שקיעה מעל בניינים"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"קשת"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"גשר בלילה"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"גל מים"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"הר געש"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"שביל החלב"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"כדור הארץ אירופה-אפריקה"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"כדור הארץ אמריקה"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"כדור הארץ אסיה-אוסטרליה"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"כדור הארץ עם מרידיאנים"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"סמל ירח חדש"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"סמל חרמש מתמלא ראשון"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"סמל ירח ברבע הראשון"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"סמל חרמש מתמלא שני"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"סמל ירח מלא"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"סמל חרמש נחסר ראשון"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"סמל ירח ברבע האחרון"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"סמל חרמש נחסר שני"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"ירח אפל"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"ירח חדש עם פרצוף"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"ירח ברבע הראשון עם פרצוף"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"ירח ברבע האחרון עם פרצוף"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"ירח מלא עם פרצוף"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"שמש עם פרצוף"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"כוכב זוהר"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"כוכב נופל"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"ערמונים"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"שתיל"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"עץ ירוק עד"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"עץ נשיר"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"עץ דקל"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"קקטוס"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"צבעוני"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"פריחת הדובדבן"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"ורד"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"היביסקוס"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"חמנית"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"פריחה"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"קלח תירס"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"שיבולת אורז"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"עשב"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"תלתן בעל ארבעה עלים"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"עלה אדר"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"עלה שלכת"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"עלה מתנופף ברוח"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"פטרייה"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"עגבנייה"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"חציל"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"ענבים"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"מלון"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"אבטיח"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"קלמנטינה"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"לימון"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"בננה"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"אננס"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"תפוח אדום"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"תפוח ירוק"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"אגס"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"אפרסק"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"דובדבנים"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"תות"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"המבורגר"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"משולש פיצה"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"בשר על עצם"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"שוק עוף"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"פריכיית אורז"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"כדור אורז"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"אורז מבושל"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"קארי ואורז"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"קערה מהבילה"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"ספגטי"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"לחם"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"צ\'יפס"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"בטטה קלויה"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"דנגו"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"אודן"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"סושי"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"שרימפס מטוגן"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"לביבת דג עם עיצוב מערבולת"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"גלידה אמריקאית"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"ברד"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"גלידה"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"סופגנייה"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"עוגייה"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"חפיסת שוקולד"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"סוכרייה"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"סוכרייה על מקל"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"רפרפת"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"סיר דבש"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"עוגת פירות"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"מארז בנטו"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"סיר אוכל"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"בישול"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"סכין ומזלג"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"כוס תה ללא ידית"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"בקבוק סאקה וכוס"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"כוס יין"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"כוס קוקטייל"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"משקה טרופי"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"ספל בירה"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"כוסות בירה מושקות"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"בקבוק של תינוק"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"סרט"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"מתנה ארוזה"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"עוגת יום הולדת"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack-O-Lantern"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"עץ חג המולד"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"אבא חג המולד"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"זיקוקין"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"ניצוץ זיקוקין"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"בלון"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"קונפטי"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"כדור קונפטי"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"עץ טנאבאטה"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"דגלים מוצלבים"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"קישוט אורן"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"בובות יפניות"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"עפיפוני דגים"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"פעמוני רוח"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"טקס צפייה בירח"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"ילקוט בית ספר"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"כובע סיום לימודים"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"סוס קרוסלה"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"גלגל ענק"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"רכבת שעשועים"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"חכה ודגים"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"מיקרופון"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"מצלמת קולנוע"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"קולנוע"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"אוזנייה"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"כן ציור"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"מגבעת"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"אוהל קרקס"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"כרטיס"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"לוח קלאפר"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"אמנויות הבמה"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"משחק וידאו"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"פגיעה ישירה"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"מכונת מזל"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"ביליארד"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"קוביית משחק"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"באולינג"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"קלפי משחק עם פרחים"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"תו נגינה"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"תווי נגינה מרובים"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"סקסופון"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"גיטרה"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"מקלדת מוסיקלית"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"חצוצרה"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"כינור"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"פרטיטורה"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"חולצת ריצה עם חגורה"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"מחבט טניס וכדור"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"סקי ונעל סקי"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"כדורסל וחישוק"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"דגל משבצות"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"איש גולש על סנובורד"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"איש רץ"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"איש גולש"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"גביע ניצחון"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"מרוץ סוסים"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"פוטבול אמריקאי"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"כדורגל רוגבי"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"שחיין"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"בית"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"בית עם גינה"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"משרד"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"סניף דואר יפני"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"סניף דואר אירופאי"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"בית חולים"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"בנק"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"כספומט"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"מלון"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"מלון אהבה"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"חנות נוחות"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"בית ספר"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"חנות כלבו"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"מפעל"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"בר יפני"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"טירה יפנית"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"טירה אירופאית"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"עכברוש"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"עכבר"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"שור"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"תאו מים"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"פרה"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"נמר"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"ארנב"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"חתול"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"דרקון"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"תנין"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"לווייתן"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"שבלול"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"נחש"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"סוס"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"אייל"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"עז"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"כבשה"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"קוף"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"תרנגול"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"עוף"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"כלב"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"חזיר"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"חזיר"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"פיל"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"תמנון"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"קונכייה"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"חרק"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"נמלה"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"דבורת דבש"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"מושית"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"דג"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"דג טרופי"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"דג הכדור"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"צב"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"אפרוח בוקע"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"אפרוח"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"אפרוח מסתכל קדימה"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"ציפור"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"פינגווין"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"קואלה"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"פודל"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"גמל חד-דבשת"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"גמל כפול-דבשת"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"דולפין"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"פרצוף עכבר"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"פרצוף פרה"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"פרצוף טייגר"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"פרצוף ארנב"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"פרצוף חתול"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"פרצוף דרקון"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"לווייתן מתיז מים"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"פרצוף סוס"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"פרצוף קוף"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"פרצוף כלב"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"פרצוף חזיר"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"פרצוף צפרדע"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"פרצוף של אוגר"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"פרצוף זאב"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"פרצוף דוב"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"פרצוף פנדה"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"אף חזיר"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"עקבות של כפות"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"עיניים"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"אוזן"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"אף"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"פה"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"לשון"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"אצבע לבנה מורה כלפי מעלה עם גב כף היד"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"אצבע לבנה מורה כלפי מטה עם גב כף היד"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"אצבע לבנה מורה כלפי שמאל עם גב כף היד"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"אצבע לבנה מורה כלפי ימין עם גב כף היד"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"סימן אגרוף"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"סימן יד מנופפת"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"סימן יד מאשרת"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"סימן אגודל כלפי מעלה"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"סימן אגודל כלפי מטה"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"סימן מחיאות כפיים"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"סימן ידיים פתוחות"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"כתר"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"כובע נשים"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"משקפיים"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"עניבה"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"חולצת טי"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"ג\'ינס"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"שמלה"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"קימונו"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"ביקיני"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"בגדי נשים"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"ארנק"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"תיק יד"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"נרתיק"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"נעל של גבר"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"נעל ספורט"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"נעל עם עקב גבוה"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"סנדל של נשים"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"מגפי נשים"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"עקבות"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"פסל ראש, כתפיים וחזה עם צללית"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"פסלי ראש, כתפיים וחזה עם צללית"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"ילד"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"ילדה"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"גבר"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"אישה"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"משפחה"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"גבר ואישה מחזיקים ידיים"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"שני גברים מחזיקים ידיים"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"שתי נשים מחזיקות ידיים"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"שוטר"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"אישה עם אוזני ארנב"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"כלה עם הינומה"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"אדם עם שיער בלונדיני"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"‏גבר עם כובע Gua Pi Mao"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"גבר עם טורבן"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"איש זקן"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"אישה זקנה"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"תינוק"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"פועל בניין"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"נסיכה"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"מפלצת יפנית"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"גובלין יפני"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"רוח רפאים"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"תינוק מלאך"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"חייזר"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"מפלצת חייזרית"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"שד"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"גולגולת"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"נציג בדלפק מידע"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"זקיף"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"רקדן"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"שפתון"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"לק"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"עיסוי פנים"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"תספורת"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"מוט ספרים"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"מזרק"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"גלולה"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"סימן נשיקה"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"מכתב אהבה"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"טבעת"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"אבן חן"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"נשיקה"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"זר"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"זוג עם לב"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"חתונה"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"לב פועם"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"לב שבור"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"שני לבבות"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"לב מנצנץ"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"לב גדל"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"לב עם חץ"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"לב כחול"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"לב ירוק"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"לב צהוב"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"לב סגול"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"לב עם סרט"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"לבבות מסתובבים"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"עיטור לב"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"צורת יהלום עם נקודה בפנים"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"נורת חשמל"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"סמל כעס"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"פצצה"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"סמל שינה"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"סמל התנגשות"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"סמל זיעה מותזת"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"טיפה"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"סמל מקף"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"ערימת קקי"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"שרירים מכווצים"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"סמל סחרחורת"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"בלון דיבור"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"בלון מחשבות"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"פרח לבן"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"סמל מאה נקודות"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"שק כסף"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"המרת מטבע"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"סימן דולר עבה"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"כרטיס אשראי"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"שטר עם סימן ין"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"שטר עם סימן דולר"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"שטר עם סימן אירו"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"שטר עם סימן לירה שטרלינג"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"כסף עם כנפיים"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"תרשים עם מגמת עלייה וסימן ין"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"מושב"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"מחשב אישי"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"תיק נשיאה"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"מיני-דיסק"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"תקליטון"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"דיסק אופטי"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"תיקיית קבצים"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"תיקיית קבצים פתוחה"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"דף עם גלילה מלמטה"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"דף פונה כלפי מעלה"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"לוח שנה"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"לוח שנה נתלש"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"כרטסת"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"תרשים עם מגמת עלייה"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"תרשים עם מגמת ירידה"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"תרשים עמודות"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"לוח"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"נעץ"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"נעץ עגול"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"סיכת משרד"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"סרגל ישר"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"סרגל משולש"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"לשוניות מפרידי עמודים"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"ספר חשבונות"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"מחברת"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"מחברת עם עטיפה מקושטת"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"ספר סגור"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"ספר פתוח"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"ספר ירוק"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"ספר כחול"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"ספר כתום"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"ספרים"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"תג שם"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"מגילה"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"תזכיר"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"שפופרת טלפון"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"זימונית"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"מכשיר פקס"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"אנטנת לוויין"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"רמקול כריזה של כתובות ציבוריות"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"מגפון מריע"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"מגש דואר יוצא"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"מגש דואר נכנס"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"חבילה"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"סמל דוא\"ל"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"מעטפה נכנסת"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"מעטפה ועליה חץ למטה"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"תיבת דואר סגורה עם דגל מורד"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"תיבת דואר סגורה עם דגל מורם"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"תיבת דואר פתוחה עם דגל מורם"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"תיבת דואר פתוחה עם דגל מורד"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"תיבת דואר"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"חצוצרת דואר"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"עיתון"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"טלפון נייד"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"טלפון נייד עם חץ ימינה בצד שמאל"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"מצב רטט"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"טלפון נייד כבוי"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"איסור שימוש בטלפונים ניידים"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"אנטנה עם פסים"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"מצלמה"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"מצלמת וידאו"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"טלוויזיה"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"רדיו"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"קלטת וידאו"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"חצים משולבים פונים ימינה"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"חצים שיוצרים מעגל פתוח הפונים ימינה ושמאלה בכיוון השעון"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"חצים שיוצרים מעגל פתוח הפונים ימינה ושמאלה בכיוון השעון ומעליו מעגל עם המספר 1"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"חצים שיוצרים מעגל פתוח הפונים מעלה ומטה בכיוון השעון"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"חצים שיוצרים מעגל פתוח הפונים מעלה ומטה נגד כיוון השעון"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"סמל בהירות נמוכה"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"סמל בהירות גבוהה"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"רמקול עם קו חוצה לסימן ביטול"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"רמקול"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"רמקול עם גל קול אחד"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"רמקול עם שלושה גלי קול"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"סוללה"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"תקע חשמלי"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"זכוכית מגדלת שמצביעה שמאלה"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"זכוכית מגדלת שמצביעה ימינה"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"מנעול עם עט דיו"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"מנעול סגור עם מפתח"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"מפתח"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"מנעול"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"מנעול פתוח"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"פעמון"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"פעמון עם קו חוצה לסימן ביטול"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"סימנייה"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"סמל קישור"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"לחצן בחירה"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"‏המילה Back (חזרה) עם חץ שמאלה מעליה"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"‏המילה End (סיום) עם חץ שמאלה מעליה"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"‏המילה On (פועל) עם סימן קריאה וחץ ימינה ושמאלה מעליה"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"‏המילה Soon (עוד מעט) עם חץ ימינה מעליה"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"‏המילה Top (למעלה) עם חץ למעלה מעליה"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"סמל מגיל 18 ומעלה"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"כיסוי מקלדת עם המספר 10"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"סמל קלט לאותיות לטיניות רישיות"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"סמל קלט לאותיות לטיניות קטנות"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"סמל קלט למספרים"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"סמל קלט לסמלים"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"סמל קלט לאותיות לטיניות"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"אש"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"פנס חשמלי"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"מפתח ברגים"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"פטיש"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"אום ובורג"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"סכין"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"אקדח"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"מיקרוסקופ"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"טלסקופ"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"כדור בדולח"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"כוכב עם שישה קודקודים ונקודה באמצע"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"סמל יפנית למתחילים"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"סמל קלשון"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"לחצן ריבועי שחור"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"לחצן ריבועי לבן"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"עיגול אדום גדול"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"עיגול כחול גדול"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"יהלום כתום גדול"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"יהלום כחול גדול"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"יהלום כתום קטן"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"יהלום כחול קטן"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"משולש אדום פונה כלפי מעלה"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"משולש אדום פונה כלפי מטה"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"משולש אדום קטן פונה כלפי מעלה"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"משולש אדום קטן פונה כלפי מטה"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"פני שעון עם השעה אחת"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"פני שעון עם השעה שתיים"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"פני שעון עם השעה שלוש"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"פני שעון עם השעה ארבע"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"פני שעון עם השעה חמש"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"פני שעון עם השעה שש"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"פני שעון עם השעה שבע"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"פני שעון עם השעה שמונה"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"פני שעון עם השעה תשע"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"פני שעון עם השעה עשר"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"פני שעון עם השעה אחת עשרה"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"פני שעון עם השעה שתים עשרה"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"פני שעון עם השעה אחת וחצי"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"פני שעון עם השעה שתיים וחצי"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"פני שעון עם השעה שלוש וחצי"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"פני שעון עם השעה ארבע וחצי"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"פני שעון עם השעה חמש וחצי"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"פני שעון עם השעה שש וחצי"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"פני שעון עם השעה שבע וחצי"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"פני שעון עם השעה שמונה וחצי"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"פני שעון עם השעה תשע וחצי"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"פני שעון עם השעה עשר וחצי"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"פני שעון עם השעה אחת עשרה וחצי"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"פני שעון עם השעה שתים עשרה וחצי"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"הר פוג\'י"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"מגדל טוקיו"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"פסל החירות"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"צללית של יפן"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"‏פסל Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"פרצוף מחייך"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"פרצוף מחייך עם עיניים מחייכות"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"פרצוף עם דמעות של שמחה"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"פרצוף מחייך עם פה פתוח"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"פרצוף מחייך עם פה פתוח ועיניים מחייכות"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"פרצוף מחייך עם פה פתוח וזיעה קרה"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"פרצוף מחייך עם פה פתוח ועיניים עצומות בחוזקה"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"פרצוף מחייך עם הילה"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"פרצוף מחייך עם קרניים"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"פרצוף קורץ"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"פרצוף מחייך עם עיניים מחייכות"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"פרצוף שמתענג על אוכל טעים"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"פרצוף של הקלה"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"פרצוף מחייך עם עיניים בצורת לבבות"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"פרצוף מחייך עם משקפי שמש"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"פרצוף מגחך"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"פרצוף נייטרלי"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"פרצוף חסר הבעה"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"פרצוף משועשע"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"פרצוף עם זיעה קרה"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"פרצוף מהורהר"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"פרצוף מבולבל"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"פרצוף נדהם"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"פרצוף מנשק"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"פרצוף שמפריח נשיקה"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"פרצוף מנשק עם עיניים מחייכות"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"פרצוף מנשק עם עיניים עצומות"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"פרצוף חורץ לשון"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"פרצוף חורץ לשון עם עין קורצת"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"פרצוף חורץ לשון עם עיניים עצומות בחוזקה"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"פרצוף מאוכזב"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"פרצוף מודאג"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"פרצוף כועס"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"פרצוף חמוץ"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"פרצוף בוכה"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"פרצוף עיקש"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"פרצוף עם מבט של ניצחון"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"פרצוף של אכזבה עם הקלה"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"פרצוף זועם עם פה פתוח"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"פרצוף מיוסר"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"פרצוף מפוחד"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"פרצוף עייף"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"פרצוף ישנוני"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"פרצוף מותש"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"פרצוף של העוויית פנים"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"פרצוף בוכה בקול"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"פרצוף עם פה פתוח"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"פרצוף מהוסה"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"פרצוף עם פה פתוח וזיעה קרה"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"פרצוף צורח בפחד"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"פרצוף המום"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"פרצוף סמוק"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"פרצוף ישן"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"פרצוף מסוחרר"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"פרצוף ללא פה"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"פרצוף עם מסכה רפואית"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"פרצוף חתול מחייך עם עיניים מחייכות"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"פרצוף חתול עם דמעות של שמחה"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"פרצוף חתול מחייך עם פה פתוח"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"פרצוף חתול מחייך עם עיניים בצורת לבבות"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"פרצוף חתול עם חיוך עקום"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"פרצוף חתול מנשק עם עיניים עצומות"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"פרצוף חמוץ של חתול"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"פרצוף חתול בוכה"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"פרצוף חתול עייף"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"פרצוף עם מחוות \'לא טוב\'"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"פרצוף עם מחוות אישור"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"אדם קד קידה עמוקה"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"קוף שאינו רוצה לראות דבר רע"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"קוף שאינו רוצה לשמוע דבר רע"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"קוף שאינו רוצה לומר דבר רע"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"אדם שמח מרים יד אחת"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"אדם שמרים שתי ידיים בחגיגה"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"אדם זועף"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"אדם עם פרצוף חמוץ"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"אדם עם ידיים שלובות"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"רקטה"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"מסוק"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"קטר קיטור"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"קרון רכבת"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"רכבת מהירה"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"רכבת מהירה עם חרטום דמוי קליע"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"רכבת"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"רכבת תחתית"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"רכבת קלה"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"תחנה"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"חשמלית"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"קרון חשמלית"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"אוטובוס"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"אוטובוס מתקרב"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"חשמלית"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"תחנת אוטובוס"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"מיניבוס"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"אמבולנס"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"כבאית"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"ניידת משטרה"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"ניידת משטרה מתקרבת"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"מונית"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"מונית מתקרבת"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"מכונית"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"מכונית מתקרבת"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"מעונוע"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"משאית הובלה"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"משאית מודגשת"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"טרקטור"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"רכבת חד-מסילתית"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"רכבת הרים"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"רכבל"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"רכבל הרים"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"חשמלית אווירית"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"אנייה"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"סירת משוטים"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"סירת מרוץ"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"רמזור אופקי"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"רמזור אנכי"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"סימן בנייה"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"אור מהבהב בניידת משטרה"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"דגל משולש על עמוד"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"דלת"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"סימן אין כניסה"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"סמל עישון"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"סמל \'אסור לעשן\'"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"סמל \'האשפה לסל וחסל\'"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"סמל \'נא לשמור על הניקיון\'"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"סמל מים ראויים לשתייה"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"סמל של מים לא ראויים לשתייה"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"אופניים"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"אין לנסוע באופניים"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"רוכב אופנים"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"רוכב על אופני הרים"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"הולך רגל"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"אין כניסה להולכי רגל"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"ילדים חוצים"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"סמל גברים"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"סמל נשים"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"שירותים"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"סמל תינוקות"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"שירותים"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"בית שימוש"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"מקלחת"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"אמבטיה"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"אמבטיה"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"ביקורת דרכונים"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"מכס"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"איסוף מזוודות"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"השארת מטען"</string>
+</resources>
diff --git a/java/res/values-iw/strings-letter-descriptions.xml b/java/res/values-iw/strings-letter-descriptions.xml
new file mode 100644
index 0000000..1b0e72f
--- /dev/null
+++ b/java/res/values-iw/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"סימן סידורי נקבי"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"סימן מיקרו"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"סימן סידורי זכרי"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"‏S חדה"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"‏A‏, הטעמה משנית"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"‏A, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"‏A, גג"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"‏A, טילדה"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"‏A, עלית כפולה"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"‏A, טבעת מעל"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"‏A‏, E, ליגטורה"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"‏C, סדיליה"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"‏E, הטעמה משנית"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"‏E, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"‏E, גג"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"‏E, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"‏I, הטעמה משנית"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"‏I, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"‏I, גג"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"‏I, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"‏N, טילדה"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"‏O, הטעמה משנית"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"‏O, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"‏O, גג"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"‏O, טילדה"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"‏O, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"‏O, קו חוצה"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"‏U, הטעמה משנית"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"‏U, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"‏U, גג"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"‏U, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"‏Y, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"‏Y, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"‏A, קו עלי"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"‏A, ברווה"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"‏A, זנבון"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"‏C, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"‏C, גג"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"‏C, נקודה מעל"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"‏C, וי קטן"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"‏D, וי קטן"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"‏D, קו חוצה"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"‏E, קו עלי"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"‏E, ברווה"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"‏E, נקודה מעל"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"‏E, זנבון"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"‏E, וי קטן"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"‏G, גג"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"‏G, ברווה"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"‏G, נקודה מעל"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"‏G, סדיליה"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"‏H, גג"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"‏H, קו חוצה"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"‏I, טילדה"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"‏I, קו עלי"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"‏I, ברווה"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"‏I, זנבון"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"‏I ללא נקודות"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"‏I‏, J, ליגטורה"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"‏J, גג"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"‏K, סדיליה"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"‏L, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"‏L, סדיליה"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"‏L, וי קטן"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"‏L, נקודה אמצעית"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"‏L, קו חוצה"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"‏N, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"‏N, סדיליה"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"‏N, וי קטן"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"‏N, עם גרש לפני"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"‏O, קו עלי"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"‏O, ברווה"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"‏O, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"‏O‏, E, ליגטורה"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"‏R, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"‏R, סדיליה"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"‏R, וי קטן"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"‏S, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"‏S, גג"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"‏S, סדיליה"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"‏S, וי קטן"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"‏T, סדיליה"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"‏T, וי קטן"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"‏T, קו חוצה"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"‏U, טילדה"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"‏U, קו עלי"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"‏U, ברווה"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"‏U, טבעת מעל"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"‏U, הטעמה עלית כפולה"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"‏U, זנבון"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"‏W, גג"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"‏Y, גג"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"‏Z, הטעמה עלית"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"‏Z, נקודה מעל"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"‏Z, וי קטן"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"‏S ארוכה"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"‏O, קרן"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"‏U, קרן"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"‏S, פסיק מתחת"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"‏T, פסיק מתחת"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"‏A, נקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"‏A, קרס מעל"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"‏A, גג והטעמה עלית"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"‏A, גג והטעמה משנית"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"‏A, גג וקרס מעל"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"‏A, גג וטילדה"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"‏A, גג ונקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"‏A, ברווה והטעמה עלית"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"‏A, ברווה והטעמה משנית"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"‏A, ברווה וקרס מעל"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"‏A, ברווה וטילדה"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"‏A, ברווה ונקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"‏E, נקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"‏E, קרס מעל"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"‏E, טילדה"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"‏E, גג והטעמה עלית"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"‏E, גג והטעמה משנית"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"‏E, גג וקרס מעל"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"‏E, גג וטילדה"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"‏E, גג ונקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"‏I, קרס מעל"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"‏I, נקודה מתחת"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"‏O, נקודה מתחת"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"‏O, קרס מעל"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"‏O, גג והטעמה עלית"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"‏O, גג והטעמה משנית"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"‏O, גג וקרס מעל"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"‏O, גג וטילדה"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"‏O, גג ונקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"‏O, קרן והטעמה עלית"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"‏O, קרן והטעמה משנית"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"‏O, קרן וקרס מעל"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"‏O, קרן וטילדה"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"‏O, קרן ונקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"‏U, נקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"‏U, קרס מעל"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"‏U, קרן והטעמה עלית"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"‏U, קרן והטעמה משנית"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"‏U, קרן וקרס מעל"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"‏U, קרן וטילדה"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"‏U, קרן ונקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"‏Y, הטעמה משנית"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"‏Y, נקודה מתחת"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"‏Y, קרס מעל"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"‏Y, טילדה"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"סימן קריאה הפוך"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"סימן ציטוט זוויתי כפול הפונה שמאלה"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"נקודה אמצעית"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"אחד בכתב עלי"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"סימן ציטוט זוויתי כפול הפונה ימינה"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"סימן שאלה הפוך"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"גרש שמאלי יחיד"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"גרש ימני יחיד"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"גרש יחיד תחתון"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"מירכאות כפולות שמאליות"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"מירכאות כפולות ימניות"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"צלבון"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"צלבון כפול"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"סימן פרומיל"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"‏Prime כפול"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"סימן ציטוט זוויתי יחיד הפונה שמאלה"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"סימן ציטוט זוויתי יחיד הפונה ימינה"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"ארבע בכתב עלי"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"‏n לטינית קטנה בכתב עלי"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"סימן פזו"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"סימן \"לכבוד\""</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"חץ ימינה"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"חץ מטה"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty Set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"הגדל"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"קטן מ- או שווה ל-"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"גדול מ- או שווה ל-"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"כוכב שחור"</string>
+</resources>
diff --git a/java/res/values-iw/strings-talkback-descriptions.xml b/java/res/values-iw/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..a43b64e
--- /dev/null
+++ b/java/res/values-iw/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"חבר אוזניות כדי לשמוע הקראה של מפתחות סיסמה."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"‏הטקסט הנוכחי הוא %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"לא הוזן טקסט"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> מתקן את <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ל-<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> מבצע תיקון אוטומטי"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"תו לא מוכר"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"סמלים נוספים"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"סמלים"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"מחק"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"סמלים"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"אותיות"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"מספרים"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"הגדרות"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"רווח"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"קלט הקול"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"אמוג\'י"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"חפש"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"נקודה"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"החלף שפה"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"הבא"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"הקודם"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏Shift פועל"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏Caps Lock פועל"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"מצב סמלים"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"מצב \'סמלים נוספים\'"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"מצב אותיות"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"מצב טלפון"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"מצב סמלי טלפון"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"המקלדת מוסתרת"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"מציג מקלדת <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"תאריך"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"תאריך ושעה"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"דוא\"ל"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"העברת הודעות"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"מספרים"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"מספרי טלפון"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"טקסט"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"זמן"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"כתובות אתרים"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"אחרונים"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"אנשים"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"אובייקטים"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"טבע"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"מקומות"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"סמלים"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"רגשונים"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> גדולה"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"‏I גדולה"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"‏I גדולה, נקודה מעל"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"סמל לא מוכר"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"‏Emoji לא מוכר"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"תווים חלופיים זמינים"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"תווים חלופיים נדחים"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"הצעות חלופיות זמינות"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"הצעות חלופיות נדחות"</string>
+</resources>
diff --git a/java/res/values-iw/strings.xml b/java/res/values-iw/strings.xml
index 8d02e68..d36d3ce 100644
--- a/java/res/values-iw/strings.xml
+++ b/java/res/values-iw/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"אפשרויות קלט"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"פקודות יומן מחקר"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"חפש שמות של אנשי קשר"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"בודק האיות משתמש בערכים מרשימת אנשי הקשר שלך"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"רטט בלחיצה על מקשים"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"צלילים בעת לחיצה על מקשים"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"חלון קופץ בלחיצה על מקש"</string>
-    <string name="general_category" msgid="1859088467017573195">"כללי"</string>
-    <string name="correction_category" msgid="2236750915056607613">"תיקון טקסט"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"הקלדה ללא הרמת אצבע"</string>
-    <string name="misc_category" msgid="6894192814868233453">"אפשרויות אחרות"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"הגדרות מתקדמות"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"אפשרויות למומחים"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"העדפות קלט"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"מראה"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"אפשרויות ריבוי שפות"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"העדפות של הקלדת החלקה"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"תיקון טקסט"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"מתקדם"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"עבור לשיטות קלט אחרות"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"מתג החלפת השפה מכסה גם שיטות קלט אחרות"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"מתג החלפת שפה"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"ברירת מחדל של המערכת"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"הצע שמות של אנשי קשר"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"השתמש בשמות מרשימת אנשי הקשר עבור הצעות ותיקונים"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"הצעות מותאמות אישית"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"שפר את <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"רווח כפול לנקודה"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"הקשה פעמיים על מקש הרווח מזינה נקודה ואחריה רווח"</string>
     <string name="auto_cap" msgid="1719746674854628252">"הפיכת אותיות לרישיות באופן אוטומטי"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"הצג שובל תנועות"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"תצוגה צפה דינמית"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ראה את המילה המוצעת תוך כדי הזזת האצבע"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : נשמרה"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"חבר אוזניות כדי לשמוע הקראה של מפתחות סיסמה."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"‏הטקסט הנוכחי הוא %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"לא הוזן טקסט"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> מתקן את <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ל-<xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> מבצע תיקון אוטומטי"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"‏קוד מקש %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"‏Shift פועל (הקש כדי להשבית)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"‏Caps Lock פועל (הקש כדי להשבית)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"מחק"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"סמלים"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"אותיות"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"מספרים"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"הגדרות"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"כרטיסייה"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"רווח"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"קלט קולי"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"סמיילי"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"חזרה"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"חפש"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"נקודה"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"החלף שפה"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"הבא"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"הקודם"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"‏Shift פועל"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"‏Caps Lock פועל"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"‏Shift מושבת"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"מצב סמלים"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"מצב אותיות"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"מצב טלפון"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"מצב סמלי טלפון"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"המקלדת מוסתרת"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"מציג מקלדת <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"תאריך"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"תאריך ושעה"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"דוא\"ל"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"העברת הודעות"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"מספרים"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"מספרי טלפון"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"טקסט"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"זמן"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"כתובות אתרים"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"הקלדת משפט בהחלקה"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"הזן רווחים במהלך התנועה על ידי החלקה אל מקש הרווח"</string>
     <string name="voice_input" msgid="3583258583521397548">"מקש קלט קולי"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"במקלדת הראשית"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"במקלדת סמלים"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"כבוי"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"מיקרופון במקלדת הראשית"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"מיקרופון במקלדת סמלים"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"הקלט הקולי מושבת"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"לא הופעלו שיטות של קלט קולי. בדוק את הגדרות השפה והקלט."</string>
     <string name="configure_input_method" msgid="373356270290742459">"הגדרת שיטות קלט"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"שפות קלט"</string>
     <string name="send_feedback" msgid="1780431884109392046">"שלח משוב"</string>
     <string name="select_language" msgid="3693815588777926848">"שפות קלט"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"גע שוב כדי לשמור"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"מילון זמין"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"הפעל משוב ממשתמשים"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"עזור לשפר את עורך שיטת הקלט על ידי שליחה אוטומטית של סטטיסטיקת שימוש ודוחות קריסה."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"עיצוב מקלדת"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"אנגלית (בריטניה)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"אנגלית (ארה\"ב)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"ספרדית (ארצות הברית)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"אנגלית (בריטניה) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"אנגלית (ארה\"ב) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"ספרדית (ארצות הברית) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (מסורתית)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"אנגלית (בריטניה)‏ (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"אנגלית (ארה\"ב) ‏(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ספרדית (ארה\"ב) ‏(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (מסורתית)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (קירילית)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (לטינית)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"ללא שפה (אלף-בית)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"‏אלף-בית (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"‏אלף-בית (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"‏אלף-בית (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"‏אלף-בית (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"אמוג\'י"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"ערכת צבעים"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"לבן"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"כחול"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"עיצוב מקלדת"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"לבן מלא"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"כחול מלא"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"שחור כהה"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"לבן בהיר"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"סגנונות קלט מותאמים אישית"</string>
     <string name="add_style" msgid="6163126614514489951">"הוסף סגנון"</string>
     <string name="add" msgid="8299699805688017798">"הוסף"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"הפעל"</string>
     <string name="not_now" msgid="6172462888202790482">"לא עכשיו"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"סגנון קלט זהה כבר קיים: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"מצב לחקירת שימושיות"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"השהיית לחיצה ארוכה על מקש"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"משך רטט של לחיצת מקש"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"עוצמת קול של לחיצת מקש"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"קריאה של קובץ מילון חיצוני"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"אין קובצי מילונים בתיקיית ההורדות"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"בחירת קובץ מילון להתקנה"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"האם באמת להתקין את הקובץ הזה עבור <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"האם אתה באמת רוצה להתקין את הקובץ הזה עבור <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"אירעה שגיאה"</string>
     <string name="button_default" msgid="3988017840431881491">"ברירת מחדל"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"ברוך הבא אל <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"רענן"</string>
     <string name="last_update" msgid="730467549913588780">"עודכן לאחרונה"</string>
     <string name="message_updating" msgid="4457761393932375219">"מחפש עדכונים"</string>
-    <string name="message_loading" msgid="8689096636874758814">"טוען..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"טוען…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"מילון ראשי"</string>
     <string name="cancel" msgid="6830980399865683324">"בטל"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"הגדרות"</string>
     <string name="install_dict" msgid="180852772562189365">"התקן"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"בטל"</string>
     <string name="delete_dict" msgid="756853268088330054">"מחק"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"‏לשפה הנבחרת במכשיר הנייד שלך יש מילון זמין.&lt;br/&gt; אנו ממליצים &lt;b&gt;להוריד&lt;/b&gt; את המילון ב<xliff:g id="LANGUAGE">%1$s</xliff:g> כדי לשפר את חוויית ההקלדה.&lt;br/&gt; &lt;br/&gt; ההורדה עשויה לארוך דקה או שתיים ב-3G. ייתכן שתחויב אם אין לך &lt;b&gt;תכנית נתונים בלתי מוגבלת&lt;/b&gt;.&lt;br/&gt; אם אינך בטוח איזו תכנית נתונים יש לך, אנו ממליצים לחפש חיבור Wi-Fi כדי להתחיל בהורדה באופן אוטומטי.&lt;br/&gt; &lt;br/&gt; טיפ: ניתן להוריד ולהסיר מילונים ב&lt;b&gt;שפה וקלט&lt;/b&gt; בתפריט &lt;b&gt;הגדרות&lt;/b&gt; של המכשיר הנייד שלך."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"‏יש מילון זמין עבור השפה הנבחרת במכשיר הנייד שלך.&lt;br/&gt; אנחנו ממליצים &lt;b&gt;להוריד&lt;/b&gt; את המילון ב<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> לשיפור חוויית ההקלדה.&lt;br/&gt; &lt;br/&gt; ייתכן שההורדה תארך דקה או שתיים ברשת דור שלישי. ייתכנו חיובים אם אין לך &lt;b&gt;תכנית נתונים ללא הגבלה&lt;/b&gt;.&lt;br/&gt; אם אינך בטוח איזו תכנית נתונים יש לך, אנחנו ממליצים למצוא חיבור Wi-Fi כדי להתחיל את ההורדה באופן אוטומטי.&lt;br/&gt; &lt;br/&gt; טיפ: ניתן להוריד ולהסיר מילונים על ידי מעבר אל &lt;b&gt;שפה וקלט&lt;/b&gt; בתפריט &lt;b&gt;הגדרות&lt;/b&gt; של המכשיר הנייד."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"‏הורד עכשיו (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"‏הורד באמצעות Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"יש מילון זמין עבור <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"יש מילון זמין עבור <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"לחץ כדי לעיין ולהוריד"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"מוריד: הצעות ב<xliff:g id="LANGUAGE">%1$s</xliff:g> יהיו מוכנות בקרוב."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"מוריד: הצעות עבור <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> יהיו מוכנות בקרוב."</string>
     <string name="version_text" msgid="2715354215568469385">"גרסה <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"הוסף"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"הוסף למילון"</string>
diff --git a/java/res/values-ja/strings-action-keys.xml b/java/res/values-ja/strings-action-keys.xml
index 68aa647..a8ed434 100644
--- a/java/res/values-ja/strings-action-keys.xml
+++ b/java/res/values-ja/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"前へ"</string>
     <string name="label_done_key" msgid="7564866296502630852">"完了"</string>
     <string name="label_send_key" msgid="482252074224462163">"送信"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"検索"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"停止"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"待機"</string>
 </resources>
diff --git a/java/res/values-ja/strings-config-important-notice.xml b/java/res/values-ja/strings-config-important-notice.xml
new file mode 100644
index 0000000..03c1f48
--- /dev/null
+++ b/java/res/values-ja/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"メッセージなどのやり取りや入力したデータから入力候補を予測します"</string>
+</resources>
diff --git a/java/res/values-ja/strings-letter-descriptions.xml b/java/res/values-ja/strings-letter-descriptions.xml
new file mode 100644
index 0000000..4112fb0
--- /dev/null
+++ b/java/res/values-ja/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"女性序数標識"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"マイクロ記号"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"男性序数標識"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"エスツェット"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A、グレイヴ"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A、アキュート"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A、チルド"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A、ダイエレシス"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A、上リング"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A、E、合字"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C、セディーユ"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E、グレイヴ"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E、アキュート"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E、ダイエレシス"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I、グレイヴ"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I、アキュート"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I、ダイエレシス"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"エーズ"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N、チルド"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O、グレイヴ"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O、アキュート"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O、チルド"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O、ダイエレシス"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O、ストローク"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U、グレイヴ"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U、アキュート"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U、ダイエレシス"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y、アキュート"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"ソーン"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y、ダイエレシス"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A、マクロン"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A、ブリーブ"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A、オゴネク"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C、アキュート"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C、上点"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C、キャロン"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D、キャロン"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D、ストローク"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E、マクロン"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E、ブリーブ"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E、上点"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E、オゴネク"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E、キャロン"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G、ブリーブ"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G、上点"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G、セディーユ"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H、ストローク"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I、チルド"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I、マクロン"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I、ブリーブ"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I、オゴネク"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"点なしI"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I、J、合字"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K、セディーユ"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"クラー"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L、アキュート"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L、セディーユ"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L、キャロン"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L、中点"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L、ストローク"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N、アキュート"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N、セディーユ"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N、キャロン"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N、前にアポストロフィ"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"エング"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O、マクロン"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O、ブリーブ"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O、ダブルアキュート"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O、E、合字"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R、アキュート"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R、セディーユ"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R、キャロン"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S、アキュート"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S、セディーユ"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S、キャロン"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T、セディーユ"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T、キャロン"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T、ストローク"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U、チルド"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U、マクロン"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U、ブリーブ"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U、上リング"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U、ダブルアキュート"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U、オゴネク"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y、サーカムフレックス"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z、アキュート"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z、上点"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z、キャロン"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"長いS"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O、ホーン"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U、ホーン"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S、下カンマ"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T、下カンマ"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"シュワー"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A、下点"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A、上フック"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A、サーカムフレックスとアキュート"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A、サーカムフレックスとグレイヴ"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A、サーカムフレックスと上フック"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A、サーカムフレックスとチルド"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A、サーカムフレックスと下点"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A、ブリーブとアキュート"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A、ブリーブとグレイヴ"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A、ブリーブと上フック"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A、ブリーブとチルド"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A、ブリーブと下点"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E、下点"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E、上フック"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E、チルド"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E、サーカムフレックスとアキュート"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E、サーカムフレックスとグレイヴ"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E、サーカムフレックスと上フック"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E、サーカムフレックスとチルド"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E、サーカムフレックスと下点"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I、上フック"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I、下点"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O、下点"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O、上フック"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O、サーカムフレックスとアキュート"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O、サーカムフレックスとグレイヴ"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O、サーカムフレックスと上フック"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O、サーカムフレックスとチルド"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O、サーカムフレックスと下点"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O、ホーンとアキュート"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O、ホーンとグレイヴ"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O、ホーンと上フック"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O、ホーンとチルド"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O、ホーンと下点"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U、下点"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U、上フック"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U、ホーンとアキュート"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U、ホーンとグレイヴ"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U、ホーンと上フック"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U、ホーンとチルド"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U、ホーンと下点"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y、グレイヴ"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y、下点"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y、上フック"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y、チルド"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"倒立感嘆符"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"左の二重角引用符"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"中点"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"上付き文字1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"右の二重角引用符"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"倒立疑問符"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"左の一重引用符"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"右の一重引用符"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"下の一重引用符"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"左の二重引用符"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"右の二重引用符"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"ダガー"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"ダブルダガー"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"パーミル記号"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"プライム"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"ダブルプライム"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"左の一重角引用符"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"右の一重角引用符"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"上付き文字4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"上付きラテン小文字n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"ペソ記号"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"宛名記号"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"右向き矢印"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"下向き矢印"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"空集合"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"インクリメント"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"小なりイコール"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"大なりイコール"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"黒星"</string>
+</resources>
diff --git a/java/res/values-ja/strings-talkback-descriptions.xml b/java/res/values-ja/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..e4f5db5
--- /dev/null
+++ b/java/res/values-ja/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"パスワードのキーが音声出力されるのでヘッドセットを接続してください。"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"現在のテキスト: %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"テキストが入力されていません"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>は<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>を<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>に修正します"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g>で自動修正が実行されます"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"不明な文字"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"記号拡張"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"記号"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"削除"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"記号"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"英字"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"数字"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"設定"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"タブ"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"音声入力"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"絵文字"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"検索"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ドット"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"言語を切り替え"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"次へ"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"前へ"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift有効"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"CapsLock有効"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"記号モード"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"記号拡張モード"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"英数モード"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"電話モード"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"電話記号モード"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"キーボードは非表示です"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g>のキーボードを表示しています"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"日付"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"日時"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"メールアドレス"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"メッセージ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"数値"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"電話番号"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"テキスト"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"時刻"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"最近"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"人"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"物"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"自然"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"場所"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"記号"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"絵文字"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"大文字<xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"大文字I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"大文字I、上点"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"不明な記号"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"不明な絵文字"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"代替文字が利用可能です"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"代替文字が消去されます"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"代替候補が利用可能です"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"代替候補が消去されます"</string>
+</resources>
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index fbfd3b7..741dbb6 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"入力オプション"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"ログコマンドの検索"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"連絡先名の検索"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"スペルチェッカーでは連絡先リストのエントリを使用します"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"キー操作バイブ"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"キー操作音"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"キー押下時ポップアップ"</string>
-    <string name="general_category" msgid="1859088467017573195">"全般"</string>
-    <string name="correction_category" msgid="2236750915056607613">"テキストの修正"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"ジェスチャー入力"</string>
-    <string name="misc_category" msgid="6894192814868233453">"他のオプション"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"詳細設定"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"上級者向けオプション"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"他の入力方法に切り替え"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"言語切り替えキーは他の入力方法にも対応しています"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"言語切り替えキー"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"システムのデフォルト"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"連絡先の名前を候補に表示"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"連絡先の名前を使用して候補表示や自動修正を行います"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"入力候補のカスタマイズ"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>を改善"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"ダブルスペースピリオド"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"スペースバーをダブルタップするとピリオドとスペースを挿入できます"</string>
     <string name="auto_cap" msgid="1719746674854628252">"自動大文字変換"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"ジェスチャートレイルを表示"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"動的フローティングプレビュー"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ジェスチャーで入力候補を表示できます"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>:保存しました"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"パスワードのキーが音声出力されるのでヘッドセットを接続してください。"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"現在のテキスト:%s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"テキストが入力されていません"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g>は<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>を<xliff:g id="CORRECTED">%3$s</xliff:g>に修正します"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g>で自動修正が実行されます"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"キーコード:%d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift有効（タップして解除）"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock有効（タップして解除）"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"DEL"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"記号"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"英字"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"数字"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"設定"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Space"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"音声入力"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"顔文字"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"検索"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"中点"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"言語を切り替え"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"次へ"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"前へ"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift有効"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock有効"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift解除"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"記号モード"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"英数モード"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"電話モード"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"電話記号モード"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"キーボードは非表示です"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g>のキーボードを表示しています"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"日付"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"日時"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"メールアドレス"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"メッセージ"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"数値"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"電話番号"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"テキスト"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"時刻"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"フレーズジェスチャー"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Spaceキーに指を滑らせると、ジェスチャー中にスペースを入力できます"</string>
     <string name="voice_input" msgid="3583258583521397548">"音声入力キー"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"メインキーボード上"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"記号キーボード上"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"OFF"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"メインキーボードのマイク"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"記号キーボードのマイク"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"音声入力は無効です"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"有効になっている音声入力方法がありません。[言語と入力]設定をご確認ください。"</string>
     <string name="configure_input_method" msgid="373356270290742459">"入力方法を設定"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"入力言語"</string>
     <string name="send_feedback" msgid="1780431884109392046">"フィードバックを送信"</string>
     <string name="select_language" msgid="3693815588777926848">"入力言語"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"保存するにはもう一度タップ"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"辞書を利用できます"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"ユーザーフィードバックを有効にする"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"IMEの機能向上のため、使用統計状況やクラッシュレポートをGoogleに自動送信します。"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"キーボードのテーマ"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"英語 (英国)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"英語 (米国)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"スペイン語 (米国)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英語 (英国) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英語 (米国) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"スペイン語 (米国) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g>（伝統言語）"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"英語（英国）（<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>）"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"英語（米国）（<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>）"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"スペイン語（米国）（<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>）"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>（伝統言語）"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>（キリル文字）"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>（ラテン文字）"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"言語なし（アルファベット）"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"アルファベット（QWERTY）"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"アルファベット（QWERTZ）"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"アルファベット（Colemak）"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"アルファベット（PC）"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"絵文字"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"カラーパターン"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"白"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"青"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"カスタム入力スタイル"</string>
     <string name="add_style" msgid="6163126614514489951">"スタイル追加"</string>
     <string name="add" msgid="8299699805688017798">"追加"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"有効にする"</string>
     <string name="not_now" msgid="6172462888202790482">"後で行う"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"同じ入力スタイルが既に存在します: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"使いやすさの研究モード"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"キーの長押し時間"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"キー操作バイブの振動時間"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"キー操作音の音量"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"外部辞書ファイルの読み取り"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ダウンロードフォルダに辞書ファイルはありません"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"インストールする辞書ファイルの選択"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"この<xliff:g id="LOCALE_NAME">%s</xliff:g>のファイルをインストールしてもよろしいですか？"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"この<xliff:g id="LANGUAGE_NAME">%s</xliff:g>のファイルをインストールしますか？"</string>
     <string name="error" msgid="8940763624668513648">"エラーが発生しました"</string>
     <string name="button_default" msgid="3988017840431881491">"デフォルト"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>へようこそ"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"更新"</string>
     <string name="last_update" msgid="730467549913588780">"最終更新"</string>
     <string name="message_updating" msgid="4457761393932375219">"アップデートを確認しています"</string>
-    <string name="message_loading" msgid="8689096636874758814">"読み込んでいます..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"読み込んでいます…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"メイン辞書"</string>
     <string name="cancel" msgid="6830980399865683324">"キャンセル"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"設定"</string>
     <string name="install_dict" msgid="180852772562189365">"インストール"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"キャンセル"</string>
     <string name="delete_dict" msgid="756853268088330054">"削除"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"お使いの携帯端末で選択した言語に対応する辞書があります。&lt;br/&gt;入力機能をより快適にご利用いただくため、<xliff:g id="LANGUAGE">%1$s</xliff:g>の辞書の&lt;b&gt;ダウンロード&lt;/b&gt;をおすすめします。&lt;br/&gt; &lt;br/&gt;3G経由の場合、ダウンロードに要する時間は1～2分です。&lt;b&gt;定額制のデータプラン&lt;/b&gt;をご利用でない場合は通信料が発生する可能性があります。&lt;br/&gt;ご利用のデータプランが不明な場合は、自動的にダウンロードが開始されるWi-Fi接続を探すことをおすすめします。&lt;br/&gt; &lt;br/&gt;ヒント: 辞書のダウンロードや削除は、お使いの携帯端末の[&lt;b&gt;設定&lt;/b&gt;]メニューの[&lt;b&gt;言語と入力&lt;/b&gt;]で行えます。"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"お使いの携帯端末で選択した言語に対応する辞書があります。&lt;br/&gt;入力機能をより快適にご利用いただくため、<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>の辞書の&lt;b&gt;ダウンロード&lt;/b&gt;をおすすめします。&lt;br/&gt; &lt;br/&gt;3G経由の場合、ダウンロードに要する時間は1～2分です。&lt;b&gt;定額制のデータプラン&lt;/b&gt;をご利用でない場合は通信料が発生する可能性があります。&lt;br/&gt;ご利用のデータプランが不明な場合は、自動的にダウンロードが開始されるWi-Fi接続を探すことをおすすめします。&lt;br/&gt; &lt;br/&gt;ヒント: 辞書のダウンロードや削除は、お使いの携帯端末の[&lt;b&gt;設定&lt;/b&gt;]メニューの[&lt;b&gt;言語と入力&lt;/b&gt;]で行えます。"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"今すぐダウンロード（<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB）"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi経由でダウンロード"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g>の辞書を利用できます"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>の辞書を利用できます"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"押すと確認/ダウンロードできます"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"ダウンロード中: <xliff:g id="LANGUAGE">%1$s</xliff:g>の入力候補をまもなく利用できます。"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ダウンロード中: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>の入力候補をまもなく利用できます。"</string>
     <string name="version_text" msgid="2715354215568469385">"バージョン<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"追加"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"辞書に追加"</string>
diff --git a/java/res/values-ka-rGE/strings-action-keys.xml b/java/res/values-ka-rGE/strings-action-keys.xml
index e2dd05f..5fa9235 100644
--- a/java/res/values-ka-rGE/strings-action-keys.xml
+++ b/java/res/values-ka-rGE/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"წინა"</string>
     <string name="label_done_key" msgid="7564866296502630852">"დასრ."</string>
     <string name="label_send_key" msgid="482252074224462163">"გაგზ."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"ძიება"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"პაუზა"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"მოცდა"</string>
 </resources>
diff --git a/java/res/values-ka-rGE/strings-config-important-notice.xml b/java/res/values-ka-rGE/strings-config-important-notice.xml
new file mode 100644
index 0000000..188ac87
--- /dev/null
+++ b/java/res/values-ka-rGE/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"უკეთესი შეთავაზებისთვის თქვენი კომუნიკაციიდან და ტექსტიდან სწავლა"</string>
+</resources>
diff --git a/java/res/values-ka-rGE/strings-emoji-descriptions.xml b/java/res/values-ka-rGE/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..1840efc
--- /dev/null
+++ b/java/res/values-ka-rGE/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"საავტორო უფლების ნიშანი"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"რეგისტრირებული სავაჭრო ნიშნის სიმბოლო"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"ორმაგი ძახილის ნიშანი"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"ძახილის და კითხვის ნიშანი"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"სავაჭრო ნიშნის ნიშანი"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"ინფორმაციის წყარო"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"მარცხენა და მარჯვენა ისარი"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"ზედა და ქვედა ისარი"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"ჩრდილო დასავლეთის ისარი"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"ჩრდილო აღმოსავლეთის ისარი"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"სამხრეთ აღმოსავლეთის ისარი"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"სამხრეთ დასავლეთის ისარი"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"მარცხნივ მიმართული ისარი კაუჭით"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"მარჯვნივ მიმართული ისარი კაუჭით"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"საათი"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"ქვიშის საათი"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"მარჯვნივ მიმართული შავი ორმაგი სამკუთხედი"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"მარცხნივ მიმართული შავი ორმაგი სამკუთხედი"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"ზევით მიმართული შავი ორმაგი სამკუთხედი"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"ქვევით მიმართული შავი ორმაგი სამკუთხედი"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"მაღვიძარა"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"ქვიშის საათი ჩამოყრილი ქვიშით"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"წრეში ჩასმული ლათინური ასო m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"შავი პატარა კვადრატი"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"თეთრი პატარა კვადრატი"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"შავი მარჯვნივ მიმართული სამკუთხედი"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"შავი მარცხნივ მიმართული სამკუთხედი"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"თეთრი საშუალო კვადრატი"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"შავი საშუალო კვადრატი"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"თეთრი საშუალო პატარა კვადრატი"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"შავი საშუალო პატარა კვადრატი"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"შავი მზე სხივებით"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"ღრუბელი"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"შავი ტელეფონი"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"მონიშნული საარჩევნო ბიულეტენი"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"ქოლგა წვიმის წვეთებით"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"ცხელი სასმელი"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"თეთრი ზევით მიმართული საჩვენებელი"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"თეთრი მომღიმარი სახე"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"ვერძი"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"კურო"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"ტყუპები"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"კირჩხიბი"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"ლომი"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"ქალწული"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"სასწორი"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"მორიელი"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"მშვილდოსანი"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"თხის რქა"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"მერწყული"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"თევზები"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"ბანქოს შავი ყვავი"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"ბანქოს შავი ჯვარი"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"ბანქოს შავი გული"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"ბანქოს შავი აგური"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"ცხელი წყარო"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"უნივერსალური გადამუშავების შავი სიმბოლო"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"სატარებელი სავარძლის სიმბოლო"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"ღუზა"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"გაფრთხილების ნიშანი"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"მაღალი ძაბვის ნიშანი"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"საშუალო თეთრი წრე"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"საშუალო შავი წრე"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"ფეხბურთის ბურთი"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"ბეისბოლის ბურთი"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"თოვლის კაცი თოვლის გარეშე"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"ღრუბელს მიფარებული მზე"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"გველისმჭერის თანავარსკვლავედი"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"შესვლა აკრძალულია"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"ეკლესია"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"შადრევანი"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"ალამი ორმოში"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"იალქნიანი გემი"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"კარავი"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"საწვავის სატუმბი"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"შავი მაკრატელი"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"თეთრი მკვეთრი მონიშვნის ნიშანი"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"თვითმფრინავი"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"კონვერტი"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"აღმართული მუშტი"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"აღმართული ხელი"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"გამარჯვების აღმნიშვნელი ხელი"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"ფანქარი"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"შავი კალმის წვერი"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"მკვეთრი მონიშვნის ნიშანი"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"მკვეთრი გამრავლების x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"ნაპერწკლები"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"რვაწვერა ვარსკვლავი"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"რვაქიმიანი შავი ვარსკვლავი"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"ფიფქი"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"ნაპერწკალი"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"გადახაზვის ნიშანი"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"კვადრატში ჩასმული გადახაზული ნიშანი ნეგატივში"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"შავი კითხვის ნიშნის ორნამენტი"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"თეთრი კითხვის ნიშნის ორნამენტი"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"თეთრი ძახილის ნიშნის ორნამენტი"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"მკვეთრი ძახილის ნიშნის სიმბოლო"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"დიდი შავი გული"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"მკვეთრი პლუსის ნიშანი"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"მკვეთრი მინუსის ნიშანი"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"მკვეთრი გაყოფის ნიშანი"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"შავი მარჯვნივ მიმართული ისარი"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"მარყუჟი"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"ორმაგი მარყუჟი"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"მარჯვნივ მიმართული და ზევით მოხვეული ისარი"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"მარჯვნივ მიმართული და ქვევით მოხვეული ისარი"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"მარცხნივ მიმართული შავი ისარი"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"ზევით მიმართული შავი ისარი"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"მარცხნივ ქვევით მიმართული შავი ისარი"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"დიდი შავი კვადრატი"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"დიდი თეთრი კვადრატი"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"თეთრი საშუალო ვარსკვლავი"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"მკვეთრი დიდი წრე"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"ტალღოვანი ტირე"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"იორიტენი"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"მილოცვის იდეოგრაფი წრეში"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"საიდუმლოების იდეოგრაფი წრეში"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahjong მოზაიკის წითელი დრაკონი"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"ბანქოს შავი ჯოკერი"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"სისხლის ტიპი A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"სისხლის ტიპი B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"სისხლის ტიპი O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"პარკინგის ადგილი"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"სისხლის ტიპი AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL კვადრატში"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"cool კვადრატში"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"free კვადრატში"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ID კვადრატში"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"new კვადრატში"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"N G კვადრატში"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"OK კვადრატში"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"SOS კვადრატში"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"up ძახილის ნიშნით კვადრატში"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"vs კვადრატში"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"katakana koko კვადრატში"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"katakana sa კვადრატში"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"CJK უნიფიცირებული იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"დაჯავშნილი ადგილის იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"პროჰიბიციის იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"ვაკანსიის იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"მიღების იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"დაკავებულობის იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"იდეოგრაფი გადახდილია კვადრატში"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"იდეოგრაფი ყოველთვიურად კვადრატში"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"იდეოგრაფი აპლიკაცია კვადრატში"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"ფასდაკლების იდეოგრაფი კვადრატში"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"იდეოგრაფი მუშაობს კვადრატში"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"უპირატესობის იდეოგრაფი წრეში"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"მიღების იდეოგრაფი წრეში"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"ციკლონი"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"ნისლიანი"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"დახურული ქოლგა"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"ვარსკვლავიანი ღამე"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"მზის ამოსვლა მთებზე"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"მზის ამოსვლა"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"ქალაქის პეიზაჟი შებინდებისას"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"მზის ჩასვლა შენობების ფონზე"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"ცისარტყელა"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"ხიდი ღამით"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"წყლის ტალღა"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"ვულკანი"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"ირმის ნახტომი"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"გლობუსი ევროპა-აფრიკა"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"გლობუსი ამერიკა"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"გლობუსი აზია-ავსტრალია"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"გლობუსი მერიდიანებით"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"ახალი მთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"შევსებადი ნახევარმთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"პირველი მეოთხედის მთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"მილევადი ნახევარმთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"სავსე მთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"შევსებადი კუზიანი მთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"ბოლო მეოთხედის მთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"შევსებადი ნახევარმთვარის სიმბოლო"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"ნახევარმთვარე"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"ახალი მთვარი სახით"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"პირველი მეოთხედის მთვარე სახით"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"ბოლო მეოთხედის მთვარე სახით"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"სავსე მთვარე სახით"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"მზე სახით"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"მოკიაფე ვარსკვლავი"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"ჩამოვარდნილი ვარსკვლავი"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"წაბლი"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"ნერგი"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"მარადმწვანე ხე"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"ფოთლოვანი ხე"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"პალმის ხე"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"კაქტუსი"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"ტიტა"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"აყვავებული ალუბალი"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"ვარდი"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"ჰიბისკუსი"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"მზესუმზირა"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"ყვავილობა"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"სიმინდის ტარო"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"ბრინჯის თავთავი"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"ბალახი"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"ოთხფოთლიანი სამყურა"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"ნეკერჩხლის ფოთოლი"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"ჩამოვარდნილი ფოთოლი"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"ქარში მოფრიალე ფოთოლი"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"სოკო"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"პომიდორი"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"ბადრიჯანი"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"ყურძენი"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"ნესვი"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"საზამთრო"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"მანდარინი"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"ლიმონი"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"ბანანი"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"ანანასი"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"წითელი ვაშლი"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"მწვანე ვაშლი"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"მსხალი"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"ატამი"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"ალუბალი"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"მარწყვი"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"ჰამბურგერი"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"პიცას ნაჭერი"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"ხორცი ძვალზე"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"ქათმის ბარკალი"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"ბრინჯის კრეკერი"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"ბრინჯის გუნდა"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"მოხარშული ბრინჯი"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"კარი და ბრინჯი"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"ორთქლიანი თასი"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"სპაგეტი"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"პური"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"კარტოფილი ფრი"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"შემწვარი ტკბილი კარტოფილი"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"დანგო"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"ოდენი"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"სუში"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"შემწვარი კრევეტი"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"ტორტი ლოკოკინის დიზაინით"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"ჩამოსასხმელი ნაყინი"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"გაცრილი ყინული"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"ნაყინი"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"დონატი"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"შინაური ნამცხვარი"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"შოკოლადის ფილა"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"კანფეტი"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"შაქარყინული"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"ნადუღის კრემი"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"თაფლის ქოთანი"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"ფხვიერი ნამცხვარი"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"ბენტოს ყუთი"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"საკვების თასი"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"სამზარეულო"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"დანა-ჩანგალი"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"ჩაის"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"საკეს ბოთლი და ჭიქა"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"ღვინის ჭიქა"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"კოქტეილის ჭიქა"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"ტროპიკული სასმელი"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"ლუდის კათხა"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"ლუდის კათხების მიჭახუნება"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"ჩვილის ბოთლი"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"ლენტი"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"შეფუთული საჩუქარი"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"დაბადების დღის ტორტი"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"ჯეკის ფარანი"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"ნაძვის ხე"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"თოვლის ბაბუა"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"ფეიერვერკი"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"ფეიერვერკის შუშხუნი"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"ბუშტი"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"სადღესასწაულო სატკაცუნო"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"კონფეტის ბურთი"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"ტანაბატას ტოტი"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"გადაჯვარედინებული დროშები"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"ფიჭვის დეკორაცია"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"იაპონური სათამაშოები"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"კარპას ალამი"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"ქარის ზარი"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"მთვარის ჭვრეტის ცერემონიალი"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"სკოლის ჩანთა"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"ოქსფორდის ქუდი"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"კარუსელის ცხენი"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"ეშმაკის ბორბალი"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"როლერკოსტერი"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"თევზი და ანკესი"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"მიკროფონი"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"კინოკამერა"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"კინოთეატრი"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"ყურსასმენი"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"მხატვრის პალიტრა"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"ცილინდრი"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"ცირკის კარავი"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"ბილეთი"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"კინოს ტკაცუნა"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"საშემსრულებლო ხელოვნება"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"ვიდეოთამაში"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"მიზანში გარტყმა"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"სლოტ-ავტომატი"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"ბილიარდი"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"კამათელი"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"ბოულინგი"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"ჰანაფუდა"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"მუსიკალური ნოტი"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"მუსიკალური ნოტები"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"საქსოფონი"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"გიტარა"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"კლავიშებიანი მუსიკალური ინსტრუმენტი"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"საყვირი"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"ვიოლინო"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"მუსიკალური ნოტები"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"სარბენი მაისური ლენტით"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"ტენისის ჩოგანი და ბურთი"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"თხილამური და ჩექმა"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"ბურთი და კალათა"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"კუბოკრული დროშა"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"სნოუბორდერი"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"მორბენალი"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"სერფერი"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"თასი"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"ცხენების დოღი"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"ამერიკული ფეხბურთის ბურთი"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"რაგბის ბურთი"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"მოცურავე"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"სახლის შენება"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"სახლი ბაღით"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"საოფისე შენობა"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"იაპონური ფოსტა"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"ევროპული ფოსტა"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"საავადმყოფო"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"ბანკი"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"ბანკომატი"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"სასტუმრო"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"სიყვარულის სასტუმრო"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"სადღეღამისო მაღაზია"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"სკოლა"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"უნივერსალური მაღაზია"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"ქარხანა"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"იზაკაიას ფარანი"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"იაპონური ციხე-სიმაგრე"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"ევროპული ციხე-სიმაგრე"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"ვირთხა"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"თაგვი"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"ხარი"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"აზიური კამეჩი"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"ძროხა"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"ლეოპარდი"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"კურდღელი"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"კატა"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"დრაკონი"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"ნიანგი"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"ვეშაპი"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"ლოკოკინა"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"გველი"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"ცხენი"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"ვერძი"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"თხა"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"ცხვარი"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"მაიმუნი"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"მამალი"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"ქათამი"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"ძაღლი"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"ღორი"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"დათვი"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"სპილო"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"რვაფეხა"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"სპირალური ნიჟარა"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"ხოჭო"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"ჭიანჭველა"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"ფუტკარი"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"ჭიამაია"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"თევზი"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"ტროპიკული თევზი"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"ზღარბთევზა"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"კუ"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"წიწილა და ნაჭუჭი"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"წიწილა"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"წიწილას სახე"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"ჩიტი"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"პინგვინი"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"კოალა"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"პუდელი"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"ცალკუზა აქლემი"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"ორკუზა აქლემი"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"დელფინი"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"თაგვის სახე"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"ძროხის სახე"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"ვეფხვის სახე"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"კურდღლის სახე"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"კატის სახე"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"დრაკონის სახე"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"მჩქეფარე ვეშაპი"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"ცხენის სახე"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"მაიმუნის სახე"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"ძაღლის სახე"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"ღორის სახე"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"ბაყაყის სახე"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"ზაზუნას სახე"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"მგლის სახე"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"დათვის სახე"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"პანდას სახე"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"ღორის ცხვირი"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"თათების კვალი"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"თვალები"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"ყური"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"ცხვირი"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"პირი"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"ენა"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"თეთრი ზევით მიმართული შეტრიალებული საჩვენებელი"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"თეთრი ქვევით მიმართული შეტრიალებული საჩვენებელი"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"თეთრი მარცხნივ მიმართული შეტრიალებული საჩვენებელი"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"თეთრი მარჯვნივ მიმართული შეტრიალებული საჩვენებელი"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"მომუშტული ხელი"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"ხელის დაქნევა"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"ხელის ნიშანი OK"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"მაღლა აწეული ცერი"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"დაბლა დაწეული ცერი"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"ტაშის დაკვრა"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"ღია ხელები"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"გვირგვინი"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"ქალის ქუდი"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"სათვალეები"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"ჰალსტუხი"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"მაისური"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"ჯინსი"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"კაბა"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"კიმონო"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"ბიკინი"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"ქალის ტანსაცმელი"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"საფულე"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"ხელჩანთა"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"ქისა"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"კაცის ფეხსაცმელი"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"სპორტული ფეხსაცმელი"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"მაღალქუსლიანი ფეხსაცმელი"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"ქალის სანდალი"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"ქალის ჩექმა"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"ფეხის კვალი"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"ბიუსტი სილუეტში"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"ბიუსეტები სილუეტში"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"ბიჭი"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"გოგო"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"კაცი"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"ქალი"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"ოჯახი"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"ხელჩაკიდებული ქალი და კაცი"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"ხელჩაკიდებული ორი კაცი"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"ხელჩაკიდებული ორი ქალი"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"პოლიციელი"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"ქალი კურდღის ყურებით"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"პატარძალი პირბადით"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"ქერათმიანი ადამიანი"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"კაცი გუა-პი-მაოს ქუდით"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"კაცი ჩალმით"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"ხანდაზმული ადამიანი"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"ხანდაზმული ქალი"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"ჩვილი"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"მშენებელი"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"პრინცესა"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"იაპონელი კაციჭამია"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"იაპონელი გობლინი"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"მოჩვენება"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"ჩვილი ანგელოზი"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"უცხოპლანეტელი"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"უცხოპლანეტელი მონსტრი"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"ჭინკა"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"თავის ქალა"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"ინფორმაციის პუნქტის თანამშრომელი"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"მცველი"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"მოცეკვავე"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"პომადა"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"მანიკური"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"სახის მასაჟი"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"ვარცხნილობა"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"დალაქის ბოძი"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"შპრიცი"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"აბი"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"კოცნის ნიშანი"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"სასიყვარულო წერილი"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"დარეკვა"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"ძვირფასი ქვა"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"კოცნა"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"ბუკეტი"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"წყვილი გულით"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"ქორწილი"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"მფეთქავი გული"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"გატეხილი გული"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"ორი გული"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"მღელვარე გული"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"დიდი გული"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"გული ისრით"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"ლურჯი გული"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"მწვანე გული"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"ყვითელი გული"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"მეწამული გული"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"გული ლენტით"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"მბრუნავი გულები"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"გულის დეკორაცია"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"ალმასის ფორმა შიგნით წერტილით"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"ნათურა"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"სიბრაზის სიმბოლო"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"ბომბი"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"ძილის სიმბოლო"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"დაჯახების სიმბოლო"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"დაღვრილი ოფლის სიმბოლო"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"წვეთი"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"შხაპის სიმბოლო"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"განავალი"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"დაჭიმული კუნთი"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"თავბრუსხვევის სიმბოლო"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"დიალოგის ბუშტი"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"ფიქრის ბუშტი"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"თეთრი ყვავილი"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"ასქულიანი სიმბოლო"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"ფულის ჩანთა"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"ვალუტის გაცვლა"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"დოლარის მუქი ნიშანი"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"საკრედიტო ბარათი"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"ბანკნოტი იენის ნიშნით"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"ბანკნოტი დოლარის ნიშნით"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"ბანკნოტი ევროს ნიშნით"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"ბანკნოტი ფუნტის ნიშნით"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"ფრთიანი ფული"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"მატებადი დიაგრამა იენის ნიშნით"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"ადგილი"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"პერსონალური კომპიუტერი"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"ქეისი"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisc"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Floppy დიკსი"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"ოპტიკური დისკი"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"ფაილის საქაღალდე"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"ღია საქაღალდე"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"მოღუნული ქაღალდი"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"გვერდი პირაღმა"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"კალენდარი"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"მოსახევი კალენდარი"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"ბარათების ინდექსი"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"მატებადი დიაგრამა"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"კლებადი დიაგრამა"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"სვეტებიანი დიაგრამა"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"ფურცლის სამაგრი დაფა"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"საკანცელარიო ჭიკარტი"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"მომრგვალებული ჭიკარტი"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"ფურცლის საკინძი"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"სწორი სახაზავი"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"სამკუთხა სახაზავი"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"სანიშნის ყურები"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"დავთარი"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"რვეული"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"რვეული დეკორატიული ყდით"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"დახურული წიგნი"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"ღია წიგნი"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"მწვანე წიგნი"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"ლურჯი წიგნი"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"ნარინჯისფერი წიგნი"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"წიგნები"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"ბეჯი"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"გრაგნილი"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"ჩანაწერი"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"ყურმილი"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"პეიჯერი"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"ფაქსის აპარატი"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"სატელიტური ანტენა"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"რუპორი"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"გამამხნევებელი მეგაფონი"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"გამავალ წერილთა სათავსო"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"შემოსულების სათავსო"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"ამანათი"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"ელფოსტის სიმბოლო"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"შემომავალი კონვერტი"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"კონვერტი ქვედა ისრით ზევით"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"დახურული საფოსტო ყუთი დაშვებული ალმით"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"დახურული საფოსტო ყუთი აღმართული ალმით"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"ღია საფოსტო ყუთი აღმართული ალმით"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"ღია საფოსტო ყუთი დაშვებული ალმით"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"საფოსტო ყუთი"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"საფოსტო საყვირი"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"გაზეთი"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"მობილური ტელეფონი"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"მობილური ტელეფონი მარჯვნივ მიმართული ისრით მარცხნივ"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"ვიბრაციის რეჟიმი"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"მობილური ტელეფონის გამორთვა"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"მობილური ტელეფონები აკრძალულია"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"ანტენა სვეტებით"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"ფოტოაპარატი"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"ვიდეოკამერა"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"ტელევიზია"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"რადიო"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"ვიდეოკასეტა"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"გადაჯვარედინებული მარჯვნივ მიმართული ისრები"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"საათის მიმართულებით მარჯვენა და მარცხენა ღია წრიული ისრები"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"საათის მიმართულებით მარჯვენა და მარცხენა ღია წრიული ისრები, ერთიანით წრეში"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"საათის მიმართულებით ქვედა და ზედა ღია წრიული ისრები"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"საათის საწინააღმდეგო მიმართულებით ქვედა და ზედა ღია წრიული ისრები"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"დაბალი სიკაშკაშის სიმბოლო"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"მაღალი სიკაშკაშის სიმბოლო"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"ხაზგადასმული სპიკერი"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"სპიკერი"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"სპიკერი ხმის ერთი ტალღით"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"სპიკერი ხმის სამი ტალღით"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"ბატარეა"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"ელექტრონული შესაერთებელი"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"მარცხნივ მიმართული გამადიდებელი ლუპა"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"მარჯვნივ მიმართული გამადიდებელი ლუპა"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"საკეტი მელნის კალმით"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"დახურული საკეტი გასაღებით"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"გასაღები"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"საკეტი"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"ღია საკეტი"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"ზარი"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"ხაზგადასმული ზარი"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"სანიშნე"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"ბმულის სიმბოლო"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"არჩევანის ღილაკი"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Back მარცხენა ისრით ზევით"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"End მარცხენა ისრით ზევით"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"On ძახილის ნიშნით, მარცხენა მარჯვენა ისრით ზევით"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Soon მარჯვენა ისრით ზევით"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Top ზედა ისრით ზევით"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"18 წლამდე აკრძალვის სიმბოლო"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"კლავიში ათი"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"ლათინური დიდი ასოების შეყვანის სიმბოლო"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"ლათინური პატარა ასოების შეყვანის სიმბოლო"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"რიცხვების შეყვანის სიმბოლო"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"სიმბოლოთა შეყვანის სიმბოლო"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"ლათინური ასოების შეყვანის სიმბოლო"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"ხანძარი"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"ელექტრო ლამპარი"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"ქანჩი"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"ჩაქუჩი"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"თხილი და სამტვრევი"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"ჰოჩოს დანა"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"პისტოლეტი"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"მიკროსკოპი"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"ტელესკოპი"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"კრისტალის ბურთი"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"ექვსქიმა ვარსკვლავი შუა წერტილით"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"დამწყების იაპონური სიმბოლო"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"სამკაპის ემბლემა"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"შავი კვადრატული ღილაკი"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"თეთრი კვადრატული ღილაკი"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"დიდი წითელი წრე"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"დიდი ლურჯი წრე"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"დიდი ნარინჯისფერი ალმასი"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"დიდი ლურჯი ალმასი"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"პატარა ნარინჯისფერი ალმასი"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"პატარა ლურჯი ალმასი"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"ზევით მიმართული წითელი სამკუთხედი"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"ქვევით მიმართული წითელი სამკუთხედი"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"ზევით მიმართული პატარა წითელი სამკუთხედი"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"ქვევით მიმართული პატარა წითელი სამკუთხედი"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"საათი, რომელიც აჩვენებს პირველ საათს"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"საათი, რომელიც აჩვენებს ორ საათს"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"საათი, რომელიც აჩვენებს სამ საათს"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"საათი, რომელიც აჩვენებს ოთხ საათს"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"საათი, რომელიც აჩვენებს ხუთ საათს"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"საათი, რომელიც აჩვენებს ექვს საათს"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"საათი, რომელიც აჩვენებს შვიდ საათს"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"საათი, რომელიც აჩვენებს რვა საათს"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"საათი, რომელიც აჩვენებს ცხრა საათს"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"საათი, რომელიც აჩვენებს ათ საათს"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"საათი, რომელიც აჩვენებს თერთმეტ საათს"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"საათი, რომელიც აჩვენებს თორმეტ საათს"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"საათი, რომელიც აჩვენებს ორის ნახევარს"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"საათი, რომელიც აჩვენებს სამის ნახევარს"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"საათი, რომელიც აჩვენებს ოთხის ნახევარს"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"საათი, რომელიც აჩვენებს ხუთის ნახევარს"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"საათი, რომელიც აჩვენებს ექვსის ნახევარს"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"საათი, რომელიც აჩვენებს შვიდის ნახევარს"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"საათი, რომელიც აჩვენებს რვის ნახევარს"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"საათი, რომელიც აჩვენებს ცხრის ნახევარს"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"საათი, რომელიც აჩვენებს ათის ნახევარს"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"საათი, რომელიც აჩვენებს თერთმეტის ნახევარს"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"საათი, რომელიც აჩვენებს თორმეტის ნახევარს"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"საათი, რომელიც აჩვენებს პირველის ნახევარს"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"ფუძიამა"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"ტოკიოს ანძა"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"თავისუფლების ქანდაკება"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"იაპონიის სილუეტი"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"მოიანის ქვის ქანდაკება"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"სასტიკი სახე"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"სასტიკი სახე მომღიმარი თვალებით"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"სახე სიხარულის ცრემლებით"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"მომღიმარი პირდაღებული სახე"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"მომღიმარი სახე, ღია პირით და მოცინარი თვალებით"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"მომღიმარი სახე, ღია პირით და ცივი ოფლით"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"მომღიმარი სახე, ღია პირით და კარგად დახუჭული თვალებით"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"მომღიმარი სახე მნათი წრით"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"მომღიმარი სახე რქებით"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"თვალის ჩაკვრა"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"მომღიმარი სახე მომღიმარი თვალებით"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"გემრიელი საჭმლის დამაგემოვნებელი სახე"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"შებამოგვრილი სახე"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"მომღიმარი სახე გულის ფორმის თვალებით"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"მომღიმარი სახე მზის სათვალეებით"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"თავმომწონე სახე"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"ნეიტრალური სახე"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"უემოციო სახე"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"უკმაყოფილო სახე"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"სახე ცივი ოფლით"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"ჩაფიქრებული სახე"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"დაბნეული სახე"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"შეცბუნებული სახე"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"კოცნის სახე"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"კოცნის გაგზავნის სახე"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"კოცნის სახე მომღიმარი თვალებით"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"კოცნის სახე დახუჭული თვალებით"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"ენაგამოყოფილი სახე"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"ენაგამოყოფილი სახე თვალის ჩაკვრით"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"ენაგამოყოფილი სახე მჭიდროდ დახუჭული თვალებით"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"იმედგაცრუებული სახე"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"შეწუხებული სახე"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"ბრაზიანი სახე"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"გაბუტული სახე"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"მტირალი სახე"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"შეუპოვარი სახე"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"ტრიუმფალური სახე"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"იმედგაცრუებული მაგრამ შვებამოგვრილი სახე"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"წარბშეჭმუხნული პირდაღებული სახე"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"გატანჯული სახე"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"შიშნარევი სახე"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"დაქანცული სახე"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"მომძინარე სახე"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"დაღლილი სახე"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"დამანჭული სახე"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"ხმამაღლა მტირალი სახე"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"პირდაღებული სახე"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"გაჩუმებული სახე"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"სახე ღია პირით და ცივი ოფლით"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"შიშისგან მყვირალი სახე"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"გაოცებული სახე"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"წამოწითლებული სახე"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"მძინარი სახე"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"თავბრუდახვეული სახე"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"უპირო სახე"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"სახე სამედიცინო ნიღბით"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"სასტიკი კატის სახე მომღიმარი თვალებით"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"კატის სახე სიხარულის ცრემლებით"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"მომღიმარი კატის პირდაღებული სახე"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"მომღიმარი კატის სახე გულის ფორმის თვალებით"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"კატის სახე ირონიული ღიმილით"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"კოცნის სახე დახუჭული თვალებით"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"გაბუტული კატის სახე"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"მტირალი კატის სახე"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"დაქანცული კატის სახე"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"სახე უვარგისობის ჟესტით"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"სახე ok ჟესტით"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"ადამიანი თავის დაკვრით"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"არც-თუ-ისე ეშმაკი მაიმუნი"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"არ-მესმის მაიმუნი"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"არ ვლაპარაკობ მაიმუნი"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"ბედნიერი, ხელაწეული ადამიანი"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"სიხარულით ხელაპყრობილი ადამიანი"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"წარბშეკრული ადამიანი"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"ადამიანი გაბუტული სახით"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"ადამიანი დაწყობილი ხელებით"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"რაკეტა"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"ვერტმფრენი"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"ორთქლის ლოკომოტივი"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"რკინიგზის ვაგონი"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"ჩქაროსნული მატარებელი"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"ჩქაროსნული მატარებელი ტყვიის წვერით"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"მატარებელი"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"მეტრო"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"მსუბუქი რკინიგზა"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"სადგური"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"ტრამვაი"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"ტრამვაის ვაგონი"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"ავტობუსი"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"მომავალი ავტობუსი"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"ტროლეიბუსი"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"ავტობუსის გაჩერება"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"მიკროავტობუსი"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"სასწრაფო"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"სახანძრო"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"პოლიციის მანქანა"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"მომავალი პოლიციის მანქანა"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"ტაქსი"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"მომავალი ტაქსი"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"ავტომობილი"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"მომავალი ავტომობილი"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"რეკრეაციული ავტომანქანა"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"სატვირთო მანქანა"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"გადაბმული სატვირთო"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"ტრაქტორი"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"მონორელსი"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"მთის რკინიგზა"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"შეჩერებული რკინიგზა"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"მთის საბაგირო"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"საბაგირო"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"გემი"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"სანიჩბოსნო ნავი"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"სწრაფმავალი მოტორიანი გემი"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"ჰორიზონტალური შუქნიშანი"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"ვერტიკალური შუქნიშანი"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"მშენებლობის ნიშანი"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"პოლიციის მანქანა შუქის სიგნალით"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"სამკუთხა ალამი პოსტზე"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"კარი"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"შესვლის აკრძალვის ნიშანი"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"მოწევის ნიშანი"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"მოწევის აკრძალვის ნიშანი"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"ნაგვის გამოყოფილ ადგილზე ჩაყრის სიმბოლო"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"სიმბოლო ნაგავი არ დაყაროთ"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"დასალევად ვარგისი წყლის სიმბოლო"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"დასალევად უვარგისი წყლის სიმბოლო"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"ველოსიპედი"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"ველოსიპედები არ არის"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"ველოსიპედისტი"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"სამთო ველოსიპედისტი"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"ფეხით მოსიარულე"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"ფეხით სიარული აკრძალულია"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"ბავშვების გადასასვლელი"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"კაცების ნიშანი"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"ქალების ნიშანი"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"საპირფარეშო"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"ჩვილების ნიშანი"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"ტუალეტი"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"უნიტაზი"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"შხაპი"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"სააბაზანო"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"აბაზანა"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"პასპორტის კონტროლი"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"საბაჟო"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"ბარგის აღება"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"ბარგის ჩაბარება"</string>
+</resources>
diff --git a/java/res/values-ka-rGE/strings-letter-descriptions.xml b/java/res/values-ka-rGE/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ae3ddab
--- /dev/null
+++ b/java/res/values-ka-rGE/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"ნიშანი მიკრო"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Masculine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring above"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dot above"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dot above"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dot above"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middle dot"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceded by apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring above"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dot above"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, comma below"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, comma below"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dot below"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook above"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve and acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve and grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve and hook above"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve and tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve and dot below"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dot below"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook above"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook above"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dot below"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dot below"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook above"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn and acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn and grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dot below"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook above"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn and acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn and grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dot below"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook above"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Inverted exclamation mark"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Left-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Middle dot"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"ერთიანი ზედა ინდექსში"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Right-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Inverted question mark"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Left single quotation mark"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Right single quotation mark"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Single low-9 quotation mark"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Left double quotation mark"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Right double quotation mark"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille sign"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"მარცხნივ მიმართლი კუთხოვანი ერთმაგი ბრჭყალი"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"მარჯვნივ მიმართლი კუთხოვანი ერთმაგი ბრჭყალი"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"ოთხიანი ზედა ინდექსში"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"ლათინური ასო n ზედა ინდექსში"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"პესოს ნიშანი"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"მარჯვნივ მიმართული ისარი"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"ქვევით მიმართლი ისარი"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"ნაკლებობა ან ტოლობა"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"მეტობა ან ტოლობა"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"შავი ვარსკვლავი"</string>
+</resources>
diff --git a/java/res/values-ka-rGE/strings-talkback-descriptions.xml b/java/res/values-ka-rGE/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..5d23b09
--- /dev/null
+++ b/java/res/values-ka-rGE/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"შეაერთეთ ყურსასმენი, რათა მოისმინოთ აკრეფილი პაროლის კლავიშების სახელები."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"მიმდინარე ტექსტი არის %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"ტექსტი შეყვანილი არ არის"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> შეასწორებს <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-ს <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>-ად"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ასრულებს ავტოკორექციას"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"უცნობი სიმბოლო"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"დამატებითი სიმბოლოები"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"სიმბოლოები"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"წაშლა"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"სიმბოლოები"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"ასოები"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"ნომრები"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"პარამეტრები"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab კლავიში"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"შორისი"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ხმოვანი შეყვანა"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"სიცილაკები"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"დაბრუნება"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"ძიება"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"წერტილი"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ენის გადართვა"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"შემდ."</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"წინა"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ჩართულია"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"ჩართულია Caps"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"სიმბოლოების რეჟიმი"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"დამატებითი სიმბოლოების რეჟიმი"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"ასოების რეჟიმი"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ტელეფონის რეჟიმი"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ტელეფონის სიმბოლოების რეჟიმი"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"კლავიატურა დამალულია"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"ნაჩვენებია <xliff:g id="KEYBOARD_MODE">%s</xliff:g> კლავიატურა"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"თარიღი"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"თარიღი და დრო"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ელფოსტა"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"შეტყობინებები"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"რიცხვები"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ტელეფონი"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ტექსტი"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"დრო"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"ბოლოს გამოყენებული"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"ხალხი"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ობიექტები"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ბუნება"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ადგილები"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"სიმბოლოები"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"სიცილაკები"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"დიდი <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"დიდი I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"უცნობი სიმბოლო"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"უცნობი emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"ალტერნატიული სიმბოლოები ხელმისაწვდომია"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"ალტერნატიული სიმბოლოები გამოტოვებულია"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ალტერნატიული შეთავაზებები ხელმისაწვდომია"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"ალტერნატიული შეთავაზებები გამოტოვებულია"</string>
+</resources>
diff --git a/java/res/values-ka-rGE/strings.xml b/java/res/values-ka-rGE/strings.xml
index dec6b3a..17e6b7e 100644
--- a/java/res/values-ka-rGE/strings.xml
+++ b/java/res/values-ka-rGE/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"შეყვანის მეთოდები"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"კვლევის აღრიცხვის ბრძანებები"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"კონტაქტებში ძებნა"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"კონტაქტების სიის გამოყენება მართლწერის შემოწმებისას"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"ვიბრაცია კლავიშზე დაჭერისას"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"ხმა კლავიშზე დაჭერისას"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"გადიდება ღილაკზე დაჭერისას"</string>
-    <string name="general_category" msgid="1859088467017573195">"ძირითადი"</string>
-    <string name="correction_category" msgid="2236750915056607613">"ტექსტის კორექცია"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"ჟესტებით წერა"</string>
-    <string name="misc_category" msgid="6894192814868233453">"სხვა პარამეტრები"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"გაფართოებული პარამეტრები"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"პარამეტრები ექსპერტთათვის"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"შეყვანის პარამეტრები"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"იერსახე"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"მრავალენობრივი ვარიანტები"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"ჟესტით შეყვ. პარამეტრები"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"ტექსტის კორექცია"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"გაფართოებული"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"შეყვანის სხვა მეთოდებზე გადართვა"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ენის გადართვის ღილაკს შეყვანის სხვა მეთოდებსაც შეიცავს"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"ენის გადართვის კლავიში"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"სისტემის ნაგულისხმევი"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"კონტაქტის სახელების შეთავაზება"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"კონტაქტებიდან სახელების გამოყენება შეთავაზებებისთვის და კორექციისთვის"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"პერსონალიზებული შეთავაზებები"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>-ის გაუმჯობესება"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"წერტილი ორმაგი შორისით"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"შორისზე ორჯერ შეხება დაწერს წერტილს და შორისის სიმბოლოს"</string>
     <string name="auto_cap" msgid="1719746674854628252">"ავტო-კაპიტალიზაცია"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"ჟესტიკულაციის კუდის ჩვენება"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"დინამიურად მოლივლივე გადახედვა"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ჟესტიკულაციისას შეთავაზებული სიტყვის ნახვა"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : შეინახა"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"შეაერთეთ ყურსაცვამი, რათა მოისმინოთ აკრეფილი პაროლის კლავიშების სახელები."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"მიმდინარე ტექსტი არის %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"ტექსტი არ შეყვანილა"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> შეასწორებს <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-ს <xliff:g id="CORRECTED">%3$s</xliff:g>-ად"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> ასრულებს ავტოკორექციას"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"კლავიატურის კოდი %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift ჩართულია (შეეხეთ გამოსართავად)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"ჩართულია Caps (შეეხეთ გამოსართავად)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"სიმბოლოები"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"ასოები"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"ნომრები"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"პარამეტრები"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"შორისი"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"ხმოვანი შეყვანა"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"ღიმილი"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"დაბრუნება"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"ძიება"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"წერტილი"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"ენის გადართვა"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"შემდეგი"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"წინა"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift ჩართულია"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"ჩართულია Caps"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift გამორთულია"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"სიმბოლოების რეჟიმი"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"ასოების რეჟიმი"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"ტელეფონის რეჟიმი"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"ტელეფონის სიმბოლოების რეჟიმი"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"კლავიატურა დამალულია"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"ნაჩვენებია <xliff:g id="MODE">%s</xliff:g> კლავიატურა"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"თარიღი"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"თარიღი და დრო"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"ელფოსტა"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"შეტყობინებები"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"რიცხვები"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"ტელეფონი"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"ტექსტი"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"დრო"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"ფრაზის ჟესტი"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"შეიყვანეთ შორისები ჟესტიკულაციისას შორისის კლავიშზე გასრიალებით"</string>
     <string name="voice_input" msgid="3583258583521397548">"ხმოვანი შეყვანის კლავიში"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"მთავარ კლავიატურაზე"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"სიმბოლოთა კლავიატურაზე"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"გამორთვა"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"მიკროფონი მთავარ კლავიატურაზე"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"მიკროფონი სიმბოლოთა კლავიატურაზე"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ხმოვანი შეყვანა გამორთულია"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"ხმოვანი შეყვანის მეთოდები ჩართული არ არის. შეამოწმეთ ენის &amp; შეყვანის პარამეტრები."</string>
     <string name="configure_input_method" msgid="373356270290742459">"შეყვანის მეთოდების კონფიგურაცია"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"შეყვანის ენები"</string>
     <string name="send_feedback" msgid="1780431884109392046">"უკუკავშირის გაგზავნა"</string>
     <string name="select_language" msgid="3693815588777926848">"შეყვანის ენები"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"შეეხეთ ისევ შესანახად"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"ხელმისაწვდომია ლექსიკონი"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"მომხმარებლის უკუკავშირის ჩართვა"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"შეიტანეთ წვლილი შეყვანის ამ მეთოდის გაუმჯობესებაში — გააგზავნეთ მოხმარების სტატისტიკა და ავარიული გათიშვების ანგარიშები"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"კლავიატურის თემა"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"ინგლისური (გართ. სამ.)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"ინგლისური (აშშ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"ესპანური (აშშ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"ინგლისური (გაერთ. სამ.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"ინგლისური (აშშ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"ესპანური (აშშ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (ტრადიციული)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ინგლისური (გაერთ.სამ.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ინგლისური (აშშ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ესპანური (აშშ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ტრადიციული)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (კირილიცა)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ლათინური)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"ენის გარეშე (ანბანი)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"ანბანი (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"ანბანი (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"ანბანი (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"ანბანი (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"სიცილაკები"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"ფერის სქემა"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"თეთრი"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"ლურჯი"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"კლავიატურის თემა"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"ჰოლო-თეთრი"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"ჰოლო-ლურჯი"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"მუქი მასალა"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"ღია მასალა"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"შეყვანის სტილების კონფიგურაცია"</string>
     <string name="add_style" msgid="6163126614514489951">"სტილის დამატება"</string>
     <string name="add" msgid="8299699805688017798">"დამატება"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"ჩართვა"</string>
     <string name="not_now" msgid="6172462888202790482">"ახლა არა"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"შეყვანის იგივე სტილი უკვე არსებობს: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"გამოყენებადობის კვლევის რეჟიმი"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"კლავიშზე გრძელი დაჭერის დაყოვნება"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"კლავიშზე დაჭერის ვიბრაციის ხანგრძლივობა"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"კლავიშზე დაჭერის ხმა"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"გარე ლექსიკონის ფაილის წაკითხვა"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ჩამოტვირთვების საქაღალდეში ლექსიკონის ფაილები არ არის"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ინსტალაციისათვის აირჩიეთ ლექსიკონის ფაილი"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"ნამდვილად გსურთ ამ ფაილის <xliff:g id="LOCALE_NAME">%s</xliff:g>-ისთვის ინსტალაცია?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"ნამდვილად გსურთ ამ ფაილის <xliff:g id="LANGUAGE_NAME">%s</xliff:g>-ისთვის ინსტალაცია?"</string>
     <string name="error" msgid="8940763624668513648">"წარმოიშვა შეცდომა"</string>
     <string name="button_default" msgid="3988017840431881491">"ნაგულისხმევი"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"კეთილი იყოს თქვენი მობრძანება <xliff:g id="APPLICATION_NAME">%s</xliff:g>-ში"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"განახლება"</string>
     <string name="last_update" msgid="730467549913588780">"ბოლო განახლება"</string>
     <string name="message_updating" msgid="4457761393932375219">"მიმდინარეობს განახლებების შემოწმება"</string>
-    <string name="message_loading" msgid="8689096636874758814">"იტვირთება…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"იტვირთება..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"მთავარი ლექსიკონი"</string>
     <string name="cancel" msgid="6830980399865683324">"გაუქმება"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"პარამეტრები"</string>
     <string name="install_dict" msgid="180852772562189365">"ინსტალაცია"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"გაუქმება"</string>
     <string name="delete_dict" msgid="756853268088330054">"წაშლა"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"თქვენ მიერ მობილურ მოწყობილობაზე არჩეული ენისათვის ხელმისაწვდომია ლექსიკონი.&lt;br/&gt; გირჩევთ, &lt;b&gt;ჩამოტვირთოთ&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> ლექსიკონი, რათა გაიმარტივოთ ტექსტის შეყვანა.&lt;br/&gt; &lt;br/&gt; ჩამოტვირთვას შესაძლოა დაჭირდეს ერთი ან ორი წუთი 3G სისწრაფეზე. თუ ულიმიტო არ გაქვთ &lt;b&gt; მობილური ინტერნეტის ტარიფი&lt;/b&gt;.&lt;br/&amp;gt, შესაძლოა ჩამოტვირთვა დამატებით გადასახადებთან იყოს დაკავშირებული; თუ არ ხართ დარწმუნებული მობილური ინტერნეტის აქტიური ტარიფის შესახებ, გირჩევთ იპოვოთ Wi-Fi კავშირი და ავტომატურად დაიწყოთ ჩამოტვირთვა.&lt;br/&gt; &lt;br/&gt; რჩევა: ლექსიკონების ჩამოტვირთვა და ამოშლა შესაძლებელია სექციიდან &lt;b&gt;ენა და შეყვანა&lt;/b&gt; სექციიდან, თქვენი მობილური მოწყობილობის &lt;b&gt;პარამეტრების&lt;/b&gt; მენიუში."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"თქვენ მიერ მობილურ მოწყობილობაზე არჩეული ენისთვის ხელმისაწვდომია ლექსიკონი.&lt;br/&gt; გირჩევთ, &lt;b&gt;ჩამოტვირთოთ&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ლექსიკონი, რათა გაიმარტივოთ ტექსტის შეყვანა.&lt;br/&gt; &lt;br/&gt; ჩამოტვირთვას შესაძლოა დასჭირდეს ერთი ან ორი წუთი 3G სისწრაფეზე. თუ &lt;b&gt; მობილური ინტერნეტის ტარიფი&lt;/b&gt;.&lt;br/&amp;gt ულიმიტო არ გაქვთ, შესაძლოა გადახდა მოგიწიოთ; თუ არ ხართ დარწმუნებული მობილური ინტერნეტის აქტიური ტარიფის შესახებ, გირჩევთ, იპოვოთ Wi-Fi კავშირი და ავტომატურად დაიწყოთ ჩამოტვირთვა.&lt;br/&gt; &lt;br/&gt; რჩევა: ლექსიკონების ჩამოტვირთვა და ამოშლა შეიძლება სექციიდან &lt;b&gt;ენა და შეყვანა&lt;/b&gt; თქვენი მობილური მოწყობილობის &lt;b&gt;პარამეტრების&lt;/b&gt; მენიუში."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"ახლა ჩამოტვირთვა (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>მბაიტი)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi კავშირზე ჩამოტვირთვა"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g>-ისთვის ხელმისაწვდომია ლექსიკონი"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-სთვის ხელმისაწვდომია ლექსიკონი"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"დააჭირეთ განხილვას და ჩამოტვირთეთ"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"ჩამოტვირთვა: <xliff:g id="LANGUAGE">%1$s</xliff:g>-ის შემოთავაზებები მალე მომზადდება."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"იტვირთება: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-ის შემოთავაზებები მალე მომზადდება."</string>
     <string name="version_text" msgid="2715354215568469385">"ვერსია <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"დამატება"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"ლექსიკონში დამატება"</string>
diff --git a/java/res/values-kk-rKZ/strings-action-keys.xml b/java/res/values-kk-rKZ/strings-action-keys.xml
new file mode 100644
index 0000000..0214423
--- /dev/null
+++ b/java/res/values-kk-rKZ/strings-action-keys.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for label_go_key (4033615332628671065) -->
+    <skip />
+    <!-- no translation found for label_next_key (5586407279258592635) -->
+    <skip />
+    <!-- no translation found for label_previous_key (1421141755779895275) -->
+    <skip />
+    <!-- no translation found for label_done_key (7564866296502630852) -->
+    <skip />
+    <!-- no translation found for label_send_key (482252074224462163) -->
+    <skip />
+    <string name="label_search_key" msgid="7965186050435796642">"Іздеу"</string>
+    <!-- no translation found for label_pause_key (2225922926459730642) -->
+    <skip />
+    <!-- no translation found for label_wait_key (5891247853595466039) -->
+    <skip />
+</resources>
diff --git a/java/res/values-kk/strings-appname.xml b/java/res/values-kk-rKZ/strings-appname.xml
similarity index 100%
rename from java/res/values-kk/strings-appname.xml
rename to java/res/values-kk-rKZ/strings-appname.xml
diff --git a/java/res/values-kk-rKZ/strings-letter-descriptions.xml b/java/res/values-kk-rKZ/strings-letter-descriptions.xml
new file mode 100644
index 0000000..8ba652a
--- /dev/null
+++ b/java/res/values-kk-rKZ/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Әйел реттік көрсеткіші"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Микро белгісі"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Еркек реттік көрсеткіші"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Эсцет"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A гравис"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A-акут"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"Циркумфлексі бар а"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"Тильдасы бар A"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A-умлаут"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"Дөңгелегі бар A"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"AE, лигатура"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Седиль бар C"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Грейві бар E"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Акуты бар E"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Циркумфлексі бар E"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Тремасы бар Е"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Грейві бар I"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Акуты бар I"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"Циркумфлексі бар I"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"Тремасы бар I"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Тильдасы бар N"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Грейві бар O"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Акуты бар O"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"Циркумфлексі бар O"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"Тильдасы бар O"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"Тремасы бар O"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Штрихі бар O"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Грейві бар U"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Акуты бар U"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"Циркумфлексі бар U"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"Тремасы бар U"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Акуты бар Y"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Торн"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Тремасы бар Y"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"Макроны бар A"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"Бревисі бар A"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, огонэк"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Акуты бар C"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Циркумфлексі бар C"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Үстінде нүктесі бар C"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Гачек бар C"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Гачек бар D"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Штрихі бар D"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Макроны бар E"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Бревисі бар E"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Үстінде нүктесі бар E"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Огонэк бар E"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Гачек бар E"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Циркумфлексі бар G"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Бревисі бар G"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Үстінде нүктесі бар G"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Седиль бар G"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Циркумфлексі бар H"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Штрихі бар H"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"Тильдасы бар I"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"Макроны бар I"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"Бревисі бар I"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"Огонэк бар I"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Нүктесіз I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"IJ лигатурасы"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Циркумфлексі бар J"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"Седиль бар K"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Акуты бар L"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"Седиль бар L"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Гачек бар L"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"Үшкір нүктесі бар L"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Штрихі бар L"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Акуты бар N"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Седиль бар N"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Гачек бар N"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"Алдында апострофы бар N"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"Макроны бар O"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"Бревисі бар O"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"Қос акуты бар O"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"OE лигатурасы"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Акуты бар R"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Седиль бар R"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Гачек бар R"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Акуты бар S"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"Циркумфлексі бар S"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"Седиль бар S"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Гачек бар S"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Седиль бар T"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Гачек бар T"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Штрих бар T"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"Тильдасы бар U"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"Макроны бар U"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"Бревисі бар U"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"Дөңгелегі бар U"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"Қос акуты бар U"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"Огонэк бар U"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Циркумфлексі бар W"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Циркумфлексі бар Y"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Акуты бар Z"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Үстінде нүктесі бар Z"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Гачек бар Z"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Ұзын S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"Қармағы бар O"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"Қармағы бар U"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"Астында үтір бар S"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Астында үтір бар T"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"Астында нүкте бар A"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"Үстінде ілгегі бар A"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"Циркумфлексі және акуты бар A"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"Циркумфлексі және грейві бар A"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"Үстінде циркумфлексі және ілгегі бар A"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"Циркумфлексі және тильдасы бар A"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"Астында циркумфлексі және нүктесі бар A"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Бревисі және акуты бар A"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"Бревисі және грейві бар A"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"Үстінде бревисі және ілгегі бар A"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"Бревисі және тильдасы бар A"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"Астында бревисі және нүктесі бар A"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Астында нүктесі бар E"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Үстінде ілгегі бар E"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"Тильдасы бар E"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"Циркумфлексі және акуты бар E"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"Циркумфлексі және грейві бар E"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Үстінде циркумфлексі және ілгегі бар E"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Циркумфлексі және тильдасы бар E"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"Астында циркумфлексі және нүктесі бар E"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"Үстінде ілгегі бар I"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"Астында нүктесі бар I"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"Астында нүктесі бар O"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"Үстінде ілгегі бар O"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"Циркумфлексі және акуты бар O"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"Циркумфлексі және грейві бар O"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"Үстінде циркумфлексі және ілгегі бар O"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"Циркумфлексі және тильдасы бар O"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"Астында циркумфлексі және нүктесі бар O"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"Қармағы және акуты бар O"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"Қармағы және грейві бар O"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"Үстінде қармағы және ілгегі бар O"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"Қармағы және тильдасы бар O"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"Астында қармағы және нүктесі бар O"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"Астында нүктесі бар U"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"Үстінде ілгегі бар U"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"Қармағы және акуты бар U"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"Қармағы және грейві бар U"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"Үстінде қармағы және ілгегі бар U"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"Қармағы және тильдасы бар U"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"Астында қармағы және нүктесі бар U"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Грейві бар Y"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Астында нүктесі бар Y"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Үстінде қармағы бар Y"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Тильдасы бар Y"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Аударылған леп белгісі"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Жабатын тырнақша"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Ортаңғы нүкте"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Жоғарғы индексті бір"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Ашатын тырнақша"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Аударылған сұрақ белгісі"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Сол жақ жалғыз тырнақша"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Оң жақ жалғыз тырнақша"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Жалғыз төмен-9 тырнақшасы"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Сол жақ қос тырнақша"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Оң жақ қос тырнақша"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Типографиялық шағын крест"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Қос типографиялық шағын крест"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Промилле белгісі"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Штрих"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Қос штрих"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Жалғыз ашатын бұрыштық тырнақша"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Жалғыз жабатын бұрыштық тырнақша"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Жоғарғы индексті төрт"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Жоғарғы индексті n латын шағын әрпі"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Песо белгісі"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Кімнің атына"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Оң жақ көрсеткі"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Төмен көрсеткі"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Диаметр"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Арту"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Азырақ немесе тең"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Үлкенірек немесе тең"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Қара жұлдызша"</string>
+</resources>
diff --git a/java/res/values-kk-rKZ/strings-talkback-descriptions.xml b/java/res/values-kk-rKZ/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..2d61bde
--- /dev/null
+++ b/java/res/values-kk-rKZ/strings-talkback-descriptions.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for spoken_use_headphones (4313642710742229868) -->
+    <skip />
+    <!-- no translation found for spoken_current_text_is (4240549866156675799) -->
+    <skip />
+    <!-- no translation found for spoken_no_text_entered (1711276837961785646) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct (8989324692167993804) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct_obscured (7769449372355268412) -->
+    <skip />
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Белгісіз таңба"</string>
+    <!-- no translation found for spoken_description_shift (7209798151676638728) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift (3483198879916435717) -->
+    <skip />
+    <!-- no translation found for spoken_description_shift_shifted (3122704922642232605) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift_shifted (5179175466878186081) -->
+    <skip />
+    <!-- no translation found for spoken_description_caps_lock (1224851412185975036) -->
+    <skip />
+    <!-- no translation found for spoken_description_delete (3878902286264983302) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_symbol (8244903740201126590) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_alpha (4081215210530031950) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_numeric (4560261331530795682) -->
+    <skip />
+    <!-- no translation found for spoken_description_settings (7281251004003143204) -->
+    <skip />
+    <!-- no translation found for spoken_description_tab (8210782459446866716) -->
+    <skip />
+    <!-- no translation found for spoken_description_space (5908716896642059145) -->
+    <skip />
+    <!-- no translation found for spoken_description_mic (6153138783813452464) -->
+    <skip />
+    <!-- no translation found for spoken_description_emoji (7990051553008088470) -->
+    <skip />
+    <!-- no translation found for spoken_description_return (3183692287397645708) -->
+    <skip />
+    <!-- no translation found for spoken_description_search (5099937658231911288) -->
+    <skip />
+    <!-- no translation found for spoken_description_dot (5644176501632325560) -->
+    <skip />
+    <!-- no translation found for spoken_description_language_switch (6818666779313544553) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_next (431761808119616962) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_previous (2919072174697865110) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_on (5107180516341258979) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_locked (7307477738053606881) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol (111186851131446691) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol_shift (4305607977537665389) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_alpha (4676004119618778911) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone (2061220553756692903) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone_shift (7879963803547701090) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_hidden (2313574218950517779) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_mode (6698257917367823205) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date (6597407244976713364) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date_time (3642804408726668808) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_email (1239682082047693644) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_im (3812086215529493501) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_number (5395042245837996809) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_phone (2486230278064523665) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_text (9138789594969187494) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_time (8558297845514402675) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_url (8072011652949962550) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_recents (4185344945205590692) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_people (8414196269847492817) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_objects (6116297906606195278) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_nature (5018340512472354640) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_places (1163315840948545317) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_symbols (474680659024880601) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_emoticons (456737544787823539) -->
+    <skip />
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Бас <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Бас I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Үстінде нүктесі бар бас I"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Белгісіз таңба"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Белгісіз эмодзи"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Баламалы таңбалар қол жетімді"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Баламалы таңбалар еленбейді"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Баламалы ұсыныстар қол жетімді"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Баламалы ұсыныстар еленбейді"</string>
+</resources>
diff --git a/java/res/values-kk-rKZ/strings.xml b/java/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..24c99b3
--- /dev/null
+++ b/java/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"Енгізу опциялары"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Контакт аттарын іздеу"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Емлені тексеру құралы контактілер тізімінің жазбаларын пайдаланады"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Пернені басқан кездегі діріл"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"Пернені басу кезіндегі дыбыс"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"Пернені басқан кездегі ашылмалы мәзір"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Басқа енгізу әдістеріне ауыстырыңыз"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Тілді ауыстыру пернесі басқа енгізу әдістерін де қамтиды"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"Тілді ауыстыру пернесі"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Бірнеше енгізу тілдері қосылған кезде көрсету"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Жылжыту индикаторын көрсету"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Shift немесе Таңба пернелерінен жылжыту кезіндегі көрнекі сөзкөмекті көрсету"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Перненің ашылмалы мәзірі кідірісті жояды"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Кідіріс жоқ"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Әдепкі"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>мс"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"Жүйе әдепкісі"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"Контакт аттарын ұсыну"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Ұсыныстар мен түзетулер үшін контакт аттарын пайдалану"</string>
+    <!-- no translation found for use_personalized_dicts (5167396352105467626) -->
+    <skip />
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> жақсарту"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"Қос бос орын кезеңі"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Бос орынға екі рет түрту бос орыннан кейінгі кезеңді енгізеді"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Авто бас әріптерге түрлендіру"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"Әрбір сөйлемнің бірінші әріпін бас әріпке түрлендіру"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Жеке сөздік"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Қосымша сөздіктер"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"Негізгі сөздік"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Түзету ұсыныстарын көрсету"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Теру кезінде ұсынылған сөздерді көрсету"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Үнемі көрсету"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Портрет режимінде көрсету"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Үнемі жасыру"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Қорлаушы сөздерді құлыптамау"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Қорлаушы сөздерді ұсынбау"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"Авто түзету"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"Бос орын және тыныс белгі автоматты түрде қателерді түзетеді"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Өшірулі"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Баяу"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Белсенді"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Өте белсенді"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"Келесі сөз ұсыныстары"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Ұсыныстар жасауда бастапқы сөзді пайдалану"</string>
+    <string name="gesture_input" msgid="826951152254563827">"Қимылмен теруді қосу"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"Әріптерді жанап өту арқылы сөзді енгізу"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"Қимыл қадамын көрсету"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамикалық қалқымалы қарап шығу"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Қимылдау кезінде ұсынылған сөзді көру"</string>
+    <!-- no translation found for gesture_space_aware (2078291600664682496) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware_summary (4371385818348528538) -->
+    <skip />
+    <string name="voice_input" msgid="3583258583521397548">"Дауыстық енгізу пернесі"</string>
+    <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
+    <skip />
+    <string name="configure_input_method" msgid="373356270290742459">"Енгізу әдістерін теңшеу"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"Енгізу тілдері"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"Кері байланыс жіберу"</string>
+    <string name="select_language" msgid="3693815588777926848">"Енгізу тілдері"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Сақтау үшін қайта түртіңіз"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"Сөздік қолжетімді"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"Пернетақта тақырыбы"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ағылшын (ҰБ)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ағылшын (АҚШ)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"Испан (АҚШ)"</string>
+    <!-- no translation found for subtype_with_layout_en_GB (1931018968641592304) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_US (8809311287529805422) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_es_US (510930471167541338) -->
+    <skip />
+    <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
+    <skip />
+    <!-- no translation found for subtype_generic_cyrillic (7486451947618138947) -->
+    <skip />
+    <!-- no translation found for subtype_generic_latin (9128716486310604145) -->
+    <skip />
+    <string name="subtype_no_language" msgid="7137390094240139495">"Тіл жоқ (әліпби)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Әліпби (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Әліпби (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Әліпби (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Әліпби (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Әліпби (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Әліпби (ДК)"</string>
+    <!-- no translation found for subtype_emoji (7483586578074549196) -->
+    <skip />
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"Реттелетін енгізу стильдері"</string>
+    <string name="add_style" msgid="6163126614514489951">"Стиль қосу"</string>
+    <string name="add" msgid="8299699805688017798">"Қосу"</string>
+    <string name="remove" msgid="4486081658752944606">"Аластау"</string>
+    <string name="save" msgid="7646738597196767214">"Сақтау"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"Тіл"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"Пішім"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Реттелетін енгізу стилі пайдалануды бастамас бұрын қосылуы қажет. Оны қазір қосу қажет пе?"</string>
+    <string name="enable" msgid="5031294444630523247">"Қосу"</string>
+    <string name="not_now" msgid="6172462888202790482">"Қазір емес"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Бірдей енгізу стилі бұрыннан бар: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Пернені ұзақ басу кідірісі"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Пернені басқан кездегі діріл ұзақтығы"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Пернені басқан кездегі дыбыс деңгейі"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Сыртқы сөздік файлын оқу"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Жүктеп алулар қалтасында сөздік файлдары жоқ"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Орнату үшін сөздік файлын таңдау"</string>
+    <!-- no translation found for read_external_dictionary_confirm_install_message (4782116251651288054) -->
+    <skip />
+    <string name="error" msgid="8940763624668513648">"Қате болды"</string>
+    <string name="button_default" msgid="3988017840431881491">"Әдепкі"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына қош келдіңіз"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"Қимылмен теру арқылы"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"Іске қосылды"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"Келесі қадам"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> орнату"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қосу"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"Тіл &amp; енгізу параметрлерінде <xliff:g id="APPLICATION_NAME">%s</xliff:g> тексеріңіз. Бұл оған құрылғыңызды басқаруға рұқсат береді."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасы әлдеқашан Тіл &amp; енгізу параметрлерінде қосылған, сол себепті бұл қадам орындалған.Келесі біреуін қосыңыз!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"Параметрлер ішінде қосу"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына ауыстыру"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"Одан кейін \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" қолданбасын белсенді мәтінді енгізу әдісі ретінде таңдаңыз."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"Енгізу әдістерін ауыстыру"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"Құттықтаймыз, барлығы дайын!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"Қазір барлық таңдаулы қолданбаларда <xliff:g id="APPLICATION_NAME">%s</xliff:g> арқылы теруге болады."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"Қосымша тілдерді теңшеу"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"Аяқталған"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Қолданба белгішесін көрсету"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Іске қосу құралындағы қолданба белгішесін көрсету"</string>
+    <string name="app_name" msgid="6320102637491234792">"Сөздік провайдері"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"Сөздік провайдері"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"Сөздік қызметі"</string>
+    <string name="download_description" msgid="6014835283119198591">"Сөздікті жаңарту ақпараты"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"Қосымша сөздіктер"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Сөздік қолжетімді"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Сөздіктер параметрлері"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"Пайдаланушы сөздіктері"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Пайдаланушы сөздігі"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"Сөздік қолжетімді"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"Ағымда жүктеп алынуда"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"Орнатылған"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"Орнатылған, өшірілген"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Сөздік қызметіне қосылу мәселесі"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"Сөздіктер қолжетімсіз"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"Жаңарту"</string>
+    <string name="last_update" msgid="730467549913588780">"Соңғы жаңартылған"</string>
+    <string name="message_updating" msgid="4457761393932375219">"Жаңартуларды тексеру"</string>
+    <!-- no translation found for message_loading (5638680861387748936) -->
+    <skip />
+    <string name="main_dict_description" msgid="3072821352793492143">"Негізгі сөздік"</string>
+    <string name="cancel" msgid="6830980399865683324">"Болдырмау"</string>
+    <!-- no translation found for go_to_settings (3876892339342569259) -->
+    <skip />
+    <string name="install_dict" msgid="180852772562189365">"Орнату"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"Болдырмау"</string>
+    <string name="delete_dict" msgid="756853268088330054">"Жою"</string>
+    <!-- no translation found for should_download_over_metered_prompt (1583881200688185508) -->
+    <skip />
+    <string name="download_over_metered" msgid="1643065851159409546">"Қазір жүктеп алу (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>МБ)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi арқылы жүктеп алу"</string>
+    <!-- no translation found for dict_available_notification_title (4583842811218581658) -->
+    <skip />
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"Қарап шығу және жүктеп алу үшін басу"</string>
+    <!-- no translation found for toast_downloading_suggestions (6128155879830851739) -->
+    <skip />
+    <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> нұсқасы"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Қосу"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Сөздікке қосу"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Фраза"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Басқа талғаулар"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Аз опциялар"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Жарайды"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Сөз:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Пернелер тіркесімі:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Тіл:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Сөзді теру"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Қосымша пернелер тіркесімі"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Сөзді өңдеу"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Өңдеу"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Жою"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Пайдаланушы сөздігінде сөздер жоқ. Қосу (+) түймесін басу арқылы сөзді қосыңыз."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Барлық тілдер үшін"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Қосымша тілдер…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"Жою"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҰҮФХҺЦЧШЩЪЫІЬЭЮЯ"</string>
+</resources>
diff --git a/java/res/values-kk/strings-action-keys.xml b/java/res/values-kk/strings-action-keys.xml
deleted file mode 100644
index 95c84a2..0000000
--- a/java/res/values-kk/strings-action-keys.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="label_go_key" msgid="1635148082137219148">"Өту"</string>
-    <string name="label_next_key" msgid="362972844525672568">"Келесі"</string>
-    <string name="label_previous_key" msgid="1211868118071386787">"Алдағы"</string>
-    <string name="label_done_key" msgid="2441578748772529288">"Дайын"</string>
-    <string name="label_send_key" msgid="2815056534433717444">"Жіберу"</string>
-    <string name="label_pause_key" msgid="181098308428035340">"Тоқтата тұру"</string>
-    <string name="label_wait_key" msgid="6402152600878093134">"Күту"</string>
-</resources>
diff --git a/java/res/values-kk/strings.xml b/java/res/values-kk/strings.xml
deleted file mode 100644
index 947ff2f..0000000
--- a/java/res/values-kk/strings.xml
+++ /dev/null
@@ -1,243 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="english_ime_input_options" msgid="3909945612939668554">"Енгізу опциялары"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Журнал пәрмендерін зерттеу"</string>
-    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Контакт аттарын іздеу"</string>
-    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Емлені тексеру құралы контактілер тізімінің жазбаларын пайдаланады"</string>
-    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Пернені басқан кездегі діріл"</string>
-    <string name="sound_on_keypress" msgid="6093592297198243644">"Пернені басу кезіндегі дыбыс"</string>
-    <string name="popup_on_keypress" msgid="123894815723512944">"Пернені басқан кездегі ашылмалы мәзір"</string>
-    <string name="general_category" msgid="1859088467017573195">"Жалпы"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Мәтін түзетпесі"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Қимылмен теру"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Басқа опциялар"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Қосымша параметрлер"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Сарапшылар опциялары"</string>
-    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Басқа енгізу әдістеріне ауыстырыңыз"</string>
-    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Тілді ауыстыру пернесі басқа енгізу әдістерін де қамтиды"</string>
-    <string name="show_language_switch_key" msgid="5915478828318774384">"Тілді ауыстыру пернесі"</string>
-    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Бірнеше енгізу тілдері қосылған кезде көрсету"</string>
-    <string name="sliding_key_input_preview" msgid="6604262359510068370">"Жылжыту индикаторын көрсету"</string>
-    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Shift немесе Таңба пернелерінен жылжыту кезіндегі көрнекі сөзкөмекті көрсету"</string>
-    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Перненің ашылмалы мәзірі кідірісті жояды"</string>
-    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Кідіріс жоқ"</string>
-    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Әдепкі"</string>
-    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>мс"</string>
-    <string name="settings_system_default" msgid="6268225104743331821">"Жүйе әдепкісі"</string>
-    <string name="use_contacts_dict" msgid="4435317977804180815">"Контакт аттарын ұсыну"</string>
-    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Ұсыныстар мен түзетулер үшін контакт аттарын пайдалану"</string>
-    <string name="use_double_space_period" msgid="8781529969425082860">"Қос бос орын кезеңі"</string>
-    <string name="use_double_space_period_summary" msgid="6532892187247952799">"Бос орынға екі рет түрту бос орыннан кейінгі кезеңді енгізеді"</string>
-    <string name="auto_cap" msgid="1719746674854628252">"Авто бас әріптерге түрлендіру"</string>
-    <string name="auto_cap_summary" msgid="7934452761022946874">"Әрбір сөйлемнің бірінші әріпін бас әріпке түрлендіру"</string>
-    <string name="edit_personal_dictionary" msgid="3996910038952940420">"Жеке сөздік"</string>
-    <string name="configure_dictionaries_title" msgid="4238652338556902049">"Қосымша сөздіктер"</string>
-    <string name="main_dictionary" msgid="4798763781818361168">"Негізгі сөздік"</string>
-    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Түзету ұсыныстарын көрсету"</string>
-    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Теру кезінде ұсынылған сөздерді көрсету"</string>
-    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Үнемі көрсету"</string>
-    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Портрет режимінде көрсету"</string>
-    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Үнемі жасыру"</string>
-    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Қорлаушы сөздерді құлыптамау"</string>
-    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Қорлаушы сөздерді ұсынбау"</string>
-    <string name="auto_correction" msgid="7630720885194996950">"Авто түзету"</string>
-    <string name="auto_correction_summary" msgid="5625751551134658006">"Бос орын және тыныс белгі автоматты түрде қателерді түзетеді"</string>
-    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"Өшірулі"</string>
-    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Баяу"</string>
-    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Белсенді"</string>
-    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Өте белсенді"</string>
-    <string name="bigram_prediction" msgid="1084449187723948550">"Келесі сөз ұсыныстары"</string>
-    <string name="bigram_prediction_summary" msgid="3896362682751109677">"Ұсыныстар жасауда бастапқы сөзді пайдалану"</string>
-    <string name="gesture_input" msgid="826951152254563827">"Қимылмен теруді қосу"</string>
-    <string name="gesture_input_summary" msgid="9180350639305731231">"Әріптерді жанап өту арқылы сөзді енгізу"</string>
-    <string name="gesture_preview_trail" msgid="3802333369335722221">"Қимыл қадамын көрсету"</string>
-    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамикалық қалқымалы қарап шығу"</string>
-    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Қимылдау кезінде ұсынылған сөзді көру"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Сақталды"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Дауыспен айтылатын құпия сөз кілттерін есту үшін құлақаспап қосыңыз."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Ағымдағы мәтін - %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Мәтін енгізілмеген"</string>
-    <!-- no translation found for spoken_auto_correct (8005997889020109763) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct_obscured (6276420476908833791) -->
-    <skip />
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Перне коды %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift қосулы (өшіру үшін түрту)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock қосулы (өшіру үшін түрту)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Жою"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Таңбалар"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Әріптер"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Сандар"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Баптаулар"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Бос орын"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Дауыстық енгізу"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Жымиған жүз"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Қалпына келтіру"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Іздеу"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Нүкте"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Тілді ауыстыру"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Келесі"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Алдағы"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift қосылған"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock қосылған"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift өшірілген"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Таңбалар режимі"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Әріптер режимі"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Телефон режимі"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Телефон таңбалары режимі"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Пернетақта жасырылған"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Көрсетілетін <xliff:g id="MODE">%s</xliff:g> пернетақтасы"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"күн"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"күн мен уақыт"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"электрондық пошта"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"хабар алмасу"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"нөмір"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"телефон"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"мәтін"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"уақыт"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
-    <string name="voice_input" msgid="3583258583521397548">"Дауыстық енгізу пернесі"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Негізгі пернетақтада"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Таңбалар пернетақтасында"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Өшірулі"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Негізгі пернетақтадағы Mic"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Таңбалар пернетақтасындағы Mic"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Дауыстық енгізу өшірілген"</string>
-    <string name="configure_input_method" msgid="373356270290742459">"Енгізу әдістерін теңшеу"</string>
-    <string name="language_selection_title" msgid="1651299598555326750">"Енгізу тілдері"</string>
-    <string name="send_feedback" msgid="1780431884109392046">"Кері байланыс жіберу"</string>
-    <string name="select_language" msgid="3693815588777926848">"Енгізу тілдері"</string>
-    <string name="hint_add_to_dictionary" msgid="573678656946085380">"Сақтау үшін қайта түртіңіз"</string>
-    <string name="has_dictionary" msgid="6071847973466625007">"Сөздік қолжетімді"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Пайдаланушының кері байланысын қосу"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Қолданыс статистикасын және бұзылыс есептерін автоматты түрде жіберу арқылы осы енгізу әдісінің редакторын арттыруға көмектесу"</string>
-    <string name="keyboard_layout" msgid="8451164783510487501">"Пернетақта тақырыбы"</string>
-    <string name="subtype_en_GB" msgid="88170601942311355">"ағылшын (ҰБ)"</string>
-    <string name="subtype_en_US" msgid="6160452336634534239">"ағылшын (АҚШ)"</string>
-    <string name="subtype_es_US" msgid="5583145191430180200">"Испан (АҚШ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"ағылшын (ҰБ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"ағылшын (АҚШ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Испан (АҚШ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <!-- no translation found for subtype_nepali_traditional (9032247506728040447) -->
-    <skip />
-    <string name="subtype_no_language" msgid="7137390094240139495">"Тіл жоқ (әліпби)"</string>
-    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Әліпби (QWERTY)"</string>
-    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Әліпби (QWERTZ)"</string>
-    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"Әліпби (AZERTY)"</string>
-    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"Әліпби (Dvorak)"</string>
-    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Әліпби (Colemak)"</string>
-    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Әліпби (ДК)"</string>
-    <!-- no translation found for subtype_emoji (7483586578074549196) -->
-    <skip />
-    <string name="custom_input_styles_title" msgid="8429952441821251512">"Реттелетін енгізу стильдері"</string>
-    <string name="add_style" msgid="6163126614514489951">"Стиль қосу"</string>
-    <string name="add" msgid="8299699805688017798">"Қосу"</string>
-    <string name="remove" msgid="4486081658752944606">"Аластау"</string>
-    <string name="save" msgid="7646738597196767214">"Сақтау"</string>
-    <string name="subtype_locale" msgid="8576443440738143764">"Тіл"</string>
-    <string name="keyboard_layout_set" msgid="4309233698194565609">"Пішім"</string>
-    <string name="custom_input_style_note_message" msgid="8826731320846363423">"Реттелетін енгізу стилі пайдалануды бастамас бұрын қосылуы қажет. Оны қазір қосу қажет пе?"</string>
-    <string name="enable" msgid="5031294444630523247">"Қосу"</string>
-    <string name="not_now" msgid="6172462888202790482">"Қазір емес"</string>
-    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Бірдей енгізу стилі бұрыннан бар: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Қолайлылықты зерттеу режимі"</string>
-    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Пернені ұзақ басу кідірісі"</string>
-    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Пернені басқан кездегі діріл ұзақтығы"</string>
-    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Пернені басқан кездегі дыбыс деңгейі"</string>
-    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Сыртқы сөздік файлын оқу"</string>
-    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Жүктеп алулар қалтасында сөздік файлдары жоқ"</string>
-    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Орнату үшін сөздік файлын таңдау"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"<xliff:g id="LOCALE_NAME">%s</xliff:g> үшін осы файлды орнату қажет пе?"</string>
-    <string name="error" msgid="8940763624668513648">"Қате болды"</string>
-    <string name="button_default" msgid="3988017840431881491">"Әдепкі"</string>
-    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына қош келдіңіз"</string>
-    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"Қимылмен теру арқылы"</string>
-    <string name="setup_start_action" msgid="8936036460897347708">"Іске қосылды"</string>
-    <string name="setup_next_action" msgid="371821437915144603">"Келесі қадам"</string>
-    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> орнату"</string>
-    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қосу"</string>
-    <string name="setup_step1_instruction" msgid="2578631936624637241">"Тіл &amp; енгізу параметрлерінде <xliff:g id="APPLICATION_NAME">%s</xliff:g> тексеріңіз. Бұл оған құрылғыңызды басқаруға рұқсат береді."</string>
-    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасы әлдеқашан Тіл &amp; енгізу параметрлерінде қосылған, сол себепті бұл қадам орындалған.Келесі біреуін қосыңыз!"</string>
-    <string name="setup_step1_action" msgid="4366513534999901728">"Параметрлер ішінде қосу"</string>
-    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> қолданбасына ауыстыру"</string>
-    <string name="setup_step2_instruction" msgid="9141481964870023336">"Одан кейін \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" қолданбасын белсенді мәтінді енгізу әдісі ретінде таңдаңыз."</string>
-    <string name="setup_step2_action" msgid="1660330307159824337">"Енгізу әдістерін ауыстыру"</string>
-    <string name="setup_step3_title" msgid="3154757183631490281">"Құттықтаймыз, барлығы дайын!"</string>
-    <string name="setup_step3_instruction" msgid="8025981829605426000">"Қазір барлық таңдаулы қолданбаларда <xliff:g id="APPLICATION_NAME">%s</xliff:g> арқылы теруге болады."</string>
-    <string name="setup_step3_action" msgid="600879797256942259">"Қосымша тілдерді теңшеу"</string>
-    <string name="setup_finish_action" msgid="276559243409465389">"Аяқталған"</string>
-    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Қолданба белгішесін көрсету"</string>
-    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Іске қосу құралындағы қолданба белгішесін көрсету"</string>
-    <string name="app_name" msgid="6320102637491234792">"Сөздік провайдері"</string>
-    <string name="dictionary_provider_name" msgid="3027315045397363079">"Сөздік провайдері"</string>
-    <string name="dictionary_service_name" msgid="6237472350693511448">"Сөздік қызметі"</string>
-    <string name="download_description" msgid="6014835283119198591">"Сөздікті жаңарту ақпараты"</string>
-    <string name="dictionary_settings_title" msgid="8091417676045693313">"Қосымша сөздіктер"</string>
-    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"Сөздік қолжетімді"</string>
-    <string name="dictionary_settings_summary" msgid="5305694987799824349">"Сөздіктер параметрлері"</string>
-    <string name="user_dictionaries" msgid="3582332055892252845">"Пайдаланушы сөздіктері"</string>
-    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Пайдаланушы сөздігі"</string>
-    <string name="dictionary_available" msgid="4728975345815214218">"Сөздік қолжетімді"</string>
-    <string name="dictionary_downloading" msgid="2982650524622620983">"Ағымда жүктеп алынуда"</string>
-    <string name="dictionary_installed" msgid="8081558343559342962">"Орнатылған"</string>
-    <string name="dictionary_disabled" msgid="8950383219564621762">"Орнатылған, өшірілген"</string>
-    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Сөздік қызметіне қосылу мәселесі"</string>
-    <string name="no_dictionaries_available" msgid="8039920716566132611">"Сөздіктер қолжетімсіз"</string>
-    <string name="check_for_updates_now" msgid="8087688440916388581">"Жаңарту"</string>
-    <string name="last_update" msgid="730467549913588780">"Соңғы жаңартылған"</string>
-    <string name="message_updating" msgid="4457761393932375219">"Жаңартуларды тексеру"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Жүктелуде..."</string>
-    <string name="main_dict_description" msgid="3072821352793492143">"Негізгі сөздік"</string>
-    <string name="cancel" msgid="6830980399865683324">"Болдырмау"</string>
-    <string name="install_dict" msgid="180852772562189365">"Орнату"</string>
-    <string name="cancel_download_dict" msgid="7843340278507019303">"Болдырмау"</string>
-    <string name="delete_dict" msgid="756853268088330054">"Жою"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Ұялы құрылғыдағы таңдалған тілде қолжетімді сөздік бар.&lt;br/&gt; Теру тәжірибесін арттыру үшін <xliff:g id="LANGUAGE">%1$s</xliff:g> сөздігін &lt;b&gt;жүктеп алуды&lt;/b&gt; ұсынамыз.&lt;br/&gt; &lt;br/&gt; Жүктеп алу 3G арқылы бір немесе екі минут алуы мүмкін. Егер &lt;b&gt;шектеусіз деректер жоспары&lt;/b&gt; болмаса, қосымша төлем алынуы мүмкін.&lt;br/&gt; Егер қай дерек жоспарына ие екеніңізді білмесеңіз, жүктеп алуды автоматты түрде бастау үшін Wi-Fi байланысын табуды ұсынамыз.&lt;br/&gt; &lt;br/&gt; Кеңес: Ұялы құрылғының &lt;b&gt;Параметрлер&lt;/b&gt; мәзіріндегі &lt;b&gt;Тіл &amp; енгізу&lt;/b&gt; параметріне өту арқылы сөздіктерді жүктеп алуға және жоюға болады."</string>
-    <string name="download_over_metered" msgid="1643065851159409546">"Қазір жүктеп алу (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>МБ)"</string>
-    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi арқылы жүктеп алу"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g> үшін сөздік қолжетімді"</string>
-    <string name="dict_available_notification_description" msgid="1075194169443163487">"Қарап шығу және жүктеп алу үшін басу"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Жүктеп алу: <xliff:g id="LANGUAGE">%1$s</xliff:g> ұсыныстары жақында дайын болады."</string>
-    <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> нұсқасы"</string>
-    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Қосу"</string>
-    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Сөздікке қосу"</string>
-    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"Фраза"</string>
-    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"Басқа талғаулар"</string>
-    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"Аз опциялар"</string>
-    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"Жарайды"</string>
-    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"Сөз:"</string>
-    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"Пернелер тіркесімі:"</string>
-    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"Тіл:"</string>
-    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"Сөзді теру"</string>
-    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"Қосымша пернелер тіркесімі"</string>
-    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Сөзді өңдеу"</string>
-    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Өңдеу"</string>
-    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Жою"</string>
-    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Пайдаланушы сөздігінде сөздер жоқ. Қосу (+) түймесін басу арқылы сөзді қосыңыз."</string>
-    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Барлық тілдер үшін"</string>
-    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Қосымша тілдер…"</string>
-    <string name="user_dict_settings_delete" msgid="110413335187193859">"Жою"</string>
-    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҰҮФХҺЦЧШЩЪЫІЬЭЮЯ"</string>
-</resources>
diff --git a/java/res/values-km-rKH/donottranslate.xml b/java/res/values-km-rKH/donottranslate-config-spacing-and-punctuations.xml
similarity index 100%
rename from java/res/values-km-rKH/donottranslate.xml
rename to java/res/values-km-rKH/donottranslate-config-spacing-and-punctuations.xml
diff --git a/java/res/values-km-rKH/strings-action-keys.xml b/java/res/values-km-rKH/strings-action-keys.xml
index ff747d9..3ff6d49 100644
--- a/java/res/values-km-rKH/strings-action-keys.xml
+++ b/java/res/values-km-rKH/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"មុន"</string>
     <string name="label_done_key" msgid="7564866296502630852">"រួចរាល់"</string>
     <string name="label_send_key" msgid="482252074224462163">"ផ្ញើ"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"ស្វែងរក"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"ផ្អាក"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"រង់ចាំ"</string>
 </resources>
diff --git a/java/res/values-km-rKH/strings-config-important-notice.xml b/java/res/values-km-rKH/strings-config-important-notice.xml
new file mode 100644
index 0000000..9d694db
--- /dev/null
+++ b/java/res/values-km-rKH/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"សិក្សាការភ្ជាប់របស់អ្នកនិងទិន្នន័យ​ដែលបានបញ្ចូលដើម្បីធ្វើសំណើ​ឲ្យល្អ"</string>
+</resources>
diff --git a/java/res/values-km-rKH/strings-emoji-descriptions.xml b/java/res/values-km-rKH/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..757df50
--- /dev/null
+++ b/java/res/values-km-rKH/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"សញ្ញា​រក្សា​សិទ្ធ​"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"សញ្ញា​​​ចុះ​បញ្ជី"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"សញ្ញា​ឧទាន​​ពីរ"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"សញ្ញា​​ឧទាន​សញ្ញា​សួរ​​"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"សញ្ញា​​​និក្ខិត្តសញ្ញា"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"ប្រភព​ព័ត៌មាន"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"ព្រួញ​ឆ្វេងស្ដាំ"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"ព្រួញ​ឡើង​លើ​ចុះក្រោម"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"ព្រួញ​ទិសពាយព្យ"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"ព្រួញ​​ទិស​ឥសាន្ត​ឦសាន្ត​"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"ព្រួញ​​ទិស​អាគ្នេយ៍"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"ព្រួញ​​ទិស​និរតី"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"ព្រួញ​ទៅ​ឆ្វេង​មាន​ទំពក់"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"ព្រួញ​ទៅ​​ស្ដាំ​មាន​ទំពក់"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"នាឡិកា​ដៃ"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"នាឡិកា​ពិសោធន៍"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"ត្រីកោណ​ខ្មៅ​ពីរ​ចង្អុល​ទៅ​ស្ដាំ"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"ត្រីកោណ​ខ្មៅ​ពីរ​ចង្អុល​ទៅ​ឆ្វេង"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"ត្រីកោណ​ខ្មៅ​ពីរ​ចង្អុល​​ឡើង​លើ"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"ត្រីកោណ​ខ្មៅ​ពីរ​ចង្អុល​​ចុះក្រោម"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"នាឡិកា​រោទ៍​"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"កែវ​ពិសោធន៍​មាន​ខ្សាច់ហូរ"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"អក្សរ​អឹម​ធំ​ក្នុង​រង្វង់"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"ការ៉េ​តូច​​ពណ៌ខ្មៅ"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"ការ៉េ​តូច​ពណ៌​ស"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"ត្រីកោណ​ចង្អុល​ស្ដាំ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"ត្រីកោណ​ចង្អុល​​ឆ្វេង​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"ការ៉េ​មធ្យម​ពណ៌ស"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"ការ៉េ​មធ្យម​ពណ៌​​ខ្មៅ"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"ការ៉េ​តូច​មធ្យម​ពណ៌​ស"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"ការ៉េ​តូច​មធ្យម​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"ព្រះអាទិត្យ​ពណ៌​ខ្មៅ​​បញ្ចេញ​ពន្លឺ"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"ពពក"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"ទូរស័ព្ទ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"ប្រអប់​មាន​សញ្ញា​ធីក"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"ឆត្រ​មាន​តំណក់​ទឹក​ភ្លៀង"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"ភេសជ្ជៈ​ក្ដៅ"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"ចង្អុល​ដៃ​ចង្អុល​ឡើង​ពណ៌ស"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"មុខ​ញញឹម​ពណ៌​ស"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"មេសៈរាសី"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"តៅរ៉ូស"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"ហ្គិមីនី"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"សញ្ញា​ទី៤​នៃ​រាសីចក្រ"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"លីអូ"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"សញ្ញា​រាសី"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"លីប្រា"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"រាសីវច្ចៈ"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"រាសី​ធ្នូ"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"រាសី​សេះ"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Aquarius"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"រាសី​អាប់អួ"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"ឈុត​ប៊ិច​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"ឈុត​​ជួង​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"ឈុត​​កឺ​ពណ៌ខ្មៅ"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"ឈុត​​ការ៉ូ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Hot springs"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"និមិត្ត​សញ្ញា​ធុងសំរាម​សកល​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"និមិត្ត​សញ្ញា​រទេះ​រុញ"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"យុថ្កា"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"សញ្ញា​ព្រមាន"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"សញ្ញា​តង់ស្យុង​​ខ្ពស់"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"រង្វង់​ពណ៌ស​មធ្យម"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"រង្វង់​ពណ៌​ខ្មៅ​មធ្យម"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"បាល់​ទាត់"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"បាល់បោះ"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"អ្នកលេង​ព្រិល​ដោយ​គ្មាន​ព្រិល"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"ព្រះអាទិត្យ​នៅ​​ក្រោយ​ពពក"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"សញ្ញា (⛎)"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"ហាមចូល"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"វិហារ​សាសនា"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"បាញ់​ទឹក"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"ទង់ជាតិ​​​ក្នុង​រន្ធ"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"ទូក​ក្ដោង"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"តង់"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"បូម​ប្រេង"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"កន្ត្រៃ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"សញ្ញា​ធីក​ពណ៌​ស​ធំ"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"យន្តហោះ"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"ស្រោម​សំបុត្រ"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"លើក​កណ្ដាប់ដៃ"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"លើកដៃ"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"លើក​ដៃ​​ជ័យជម្នះ"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"ខ្មៅដៃ"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"ចុង​ខ្មៅ​ដៃ"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"សញ្ញា​ធីក​ដិត"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"សញ្ញា​គុណ​ដិត"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"បញ្ចេញ​ពន្លឺ"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"ផ្កាយ​ប្រាំ​បី​ជ្រុង"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"ផ្កាយ​ប្រាំ​បី​ជ្រុង​ដិត"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"សញ្ញា (❄)"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"បញ្ចេញ​ពន្លឺ"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"សញ្ញា​​ខ្វែង"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"សញ្ញា​ខ្វែង​ក្នុង​ប្រអប់"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"សញ្ញា​សួរ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"សញ្ញា​សួរ​ពណ៌ស"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"សញ្ញា​ឧទាន​ពណ៌​ស"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"សញ្ញា​ឧទាន​ពណ៌ខ្មៅ​ដិត"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"បេះដូង​​​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"សញ្ញា​បូក​ដិត"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"សញ្ញា​ដក​​ដិត"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"សញ្ញា​​​ចែក​ដិត"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"ព្រួញ​ទៅ​ស្ដាំ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"រង្វង់​​អង្កាញ់"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"រង្វង់​អង្កាញ់​ពីរ"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"ព្រួញ​ចង្អុល​ទៅ​ស្ដាំ​បន្ទាប់មក​បត់​ឡើង​លើ"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"ព្រួញ​ចង្អុល​ទៅ​ស្ដាំ​បន្ទាប់មក​បត់​ចុះ​ក្រោម"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"ព្រួញ​ពណ៌ខ្មៅ​ទៅ​ឆ្វេង"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"ព្រួញ​​ពណ៌​ខ្មៅ​ឡើង​លើ"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"ព្រួញ​ពណ៌​ខ្មៅ​​ចុះក្រោម"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"ប្រអប់​ការ៉េ​ធំ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"ប្រអប់​ការ៉េ​ធំ​ពណ៌​ស"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"​ផ្កាយ​​មធ្យម​ពណ៌ស"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"រង្វង់​ធំ​​ដិត"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"សញ្ញា​​រលក​ដិត"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"សញ្ញា (〽)"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"សញ្ញា (㊗)"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"សញ្ញា (㊙)"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"សញ្ញា (🀄)"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"សញ្ញា (🃏)"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"ឈាម​ប្រភេទ A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"ឈាម​ប្រភេទ B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"ឈាម​ប្រភេទ O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"ចំណត"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"ឈាម​ប្រភេទ AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"ប្រអប់ CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"ប្រអប់ cool"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"ប្រអប់ free"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ប្រអប់ ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"ប្រអប់ new"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"ប្រអប់ N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"ប្រអប់ OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"ប្រអប់ SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"ប្រអប់ up!"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"ប្រអប់ vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"សញ្ញា (🈁)"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"សញ្ញា (🈂)"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"សញ្ញា (🈚)"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"សញ្ញា (🈯)"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"សញ្ញា (🈲)"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"សញ្ញា (🈳)"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"សញ្ញា (🈴)"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"សញ្ញា (🈵)"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"សញ្ញា (🈶)"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"សញ្ញា (🈷)"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"សញ្ញា (🈸)"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"សញ្ញា (🈹)"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"សញ្ញា (🈺)"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"សញ្ញា (🉐)"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"សញ្ញា (🉑)"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"ស៊ីក្លូន"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"អ័ភ្រ"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"ឆត្រ​បិទ"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"រាត្រី​​មាន​​ផ្កាយ"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"ព្រះ​អាទិត្យ​​​លើ​ភ្នំ"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"ព្រះ​អាទិត្យរះ"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"ទីក្រុង​ពេល​ព្រលប់"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"ព្រះអាទិត្យ​លិច​ចន្លោះ​អាគារ"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"ឥន្ទធនូ"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"ស្ពាន​ពេល​រាត្រី"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"ទឹក​រលក"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"ភ្នំភ្លើង"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"មេឃ​ស្រទំ"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"ភូគោល​​អឺរ៉ុប-អាហ្រិក"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"ភូគោល​អាមេរិក"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"ភូគោល​អាស៊ី-អូស្ត្រាលី"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"ភូគោល​មាន​ខ្សែ​វណ្ឌ"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"​​ព្រះចន្ទ"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"ព្រះ​ចន្ទ​មួយ​ចំណិត​ស្ដាំ"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"ព្រះ​ចន្ទ​ពាក់​កណ្ដាល"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"ព្រះ​ចន្ទ​មួយ​ចំណិត​ឆ្វេង"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"ព្រះចន្ទ​ពេញ​វង់​"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"ព្រះ​ចន្ទ​ភ្លឺ​មួយ​ចំហៀង"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"ព្រះ​ចន្ទ​ភ្លឺ​ពាក់​កណ្ដាល"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"ព្រះ​ចន្ទ​ភ្លឺ​មួយ​ចំណិត​ឆ្វេង"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"ព្រះ​ចន្ទ​មួយ​ចំណិត"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"ព្រះ​ចន្ទ​មាន​មុខ​មនុស្ស"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"ព្រះ​ចន្ទ​មាន​មុខ​មនុស្ស​ពាក់កណ្ដាល​ស្ដាំ"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"ព្រះ​ចន្ទ​មាន​មុខ​មនុស្ស​ពាក់កណ្ដាលឆ្វេង"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"ព្រះចន្ទ​មាន​មុខ​មនុស្ស​ពេញ​វង់"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"ព្រះ​អាទិត្យ​មានមុខ​មនុស្ស"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"ផ្កាយ"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"បាញ់​ផ្កាយ"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"ឆេសណាត់"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"កូន​ឈើ"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"ដើម​ឈើ​បៃតង"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"ដើម​ឈើ​មិន​ខៀវ​ជា​និច្ច"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"ដើម​ត្នោត"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"ដំបង​យក្ស"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"ផ្កា"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"ផ្កាឈឺរី"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"ផ្កា​កុលាប"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"ផ្កា​រំយោល"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"ផ្កា​ឈូករ័ត្ន"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"ផ្កា"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"ស្នៀត​​​​ពោត"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"គួរ​ស្រូវ"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"រុក្ខជាតិ"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"ដើម​ដង្ហិត"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"ស្លឹក​ឈើ"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"ស្លឹក​ឈើ​ជ្រុះ"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"ស្លឹកឈើបក់តាមខ្យល់"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"ផ្សិត"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"ប៉េងប៉ោះ"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"ត្រប់"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"ទំពាំង​បាយ​ជូរ"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"ត្រសក់​ស្រូវ"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"ឪឡឹក"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"ក្រូច​ឃ្វិច"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"ក្រូចឆ្មារ"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"​ចេក"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"ម្នាស់"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"​ប៉ោម​​​ក្រហម"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"​ប៉ោម​​​បៃតង"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"ផ្លែព័រ"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"ផ្លែប៉ែស"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"ផ្លែ​ឈឺរី"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"ផ្លែស្ត្របេរី"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"ហាំប៊ឺហ្គឺ"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"ភីហ្សា​​មួយ​ស្លាយ"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"សាច់ចង្កាក់"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"ភ្លៅ​មាន់"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"ប៊ីស្គី​បាយ"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"ដុំ​បាយ"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"បាយ​មួយ​ចាន"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"ការី​ និង​បាយ"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"ចាន​ចំហុយ"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"ស្ប៉ាហ្គាទី"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"នំប៉័ង"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"ដំឡូង​បំពង"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"ដំឡូង​ដុត"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"ប្រហិត​ដោត​ចង្កាក់"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"ម្ហូប​សមុទ្រ​ដោត​ចង្កាក់"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"ស៊ូស៊ី"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"កំពឹស​ចៀន"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"នំ​ត្រី​រាង​មូល"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"ការ៉េម​​បំពង់"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"ការ៉េម​កែវ"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"ការ៉េម​"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"ដូណាត់"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"ខូគី"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"​​សូកូឡា"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"ស្ករគ្រាប់"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ស្ករ​គ្រាប់​មាន​ដង​​កាន់"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"សង់ខ្យា"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"ថូ"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"នំ​ខេក"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"ប្រអប់​បេនតូ"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"ឆ្នាំង​អាហារ"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"ចម្អិន​អាហារ"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"សម ​និង​កាំបិត"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"ពែង​តែ​អត់​ដៃកាន់"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"ដប និង​ពែង"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"កែវ​ស្រា"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"កែវ​ស្រា​ក្រឡុក"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"ភេសជ្ជៈ​​​ត្រូពិក"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"កែវ​​ស្រាបៀ​"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"ជល់​កែវ​ស្រាបៀ"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"ដប​ទឹកដោះ​គោ"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"ខ្សែ​បូ"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"ខ្ចប់​កា​ដូរ"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"នំ​ខួប​កំណើត"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"គោម"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"ដើម​ឈើ​បុណ្យ​ណូអែល"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"តា​ណូអែល"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"កាំជ្រួច"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"ពន្លឺ​កាំជ្រួច"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"ប៉េងប៉ោង"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"ឧបករណ៍​​​ផ្ទុះ​ពេល​ជប់លៀង"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"ក្រដាស​ពណ៌​តូចៗ"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"ដើម​​តាណាប៉ាតា"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"ទង់​ជាតិ​ខ្វែង"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"ការ​តុបតែង​ដោយ​​ផ្លែ​ស្រល់"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"តុក្កតា​ជប៉ុន"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"ខ្សែ​បូ​ត្រី​គល់រាំង"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"កណ្ដឹង​ខ្យល់"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"ពិធី​មើល​ព្រះ​ចន្ទ"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"កាបូប​ទៅសាលារៀន"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"មួក​ទទួល​សញ្ញាប័ត្រ"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"សេះ​ក្មេង​ជិះ​លេង"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"កន្ត្រក​វិល"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"រថយន្ត​សម្រាប់​ពាក់​ជិះ​រំអិល"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"ដង​សន្ទូច និង​ត្រី"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"មីក្រូហ្វូន"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"ម៉ាស៊ីន​ថត​ភាព​យន្ត"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"ភាពយន្ត"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"កាស"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"ក្ដារ​លាយ​ពណ៌​វិចិត្រករ"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"មួក​​​សម្ដែង​សិល្បៈ"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"តង់​សៀក​"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"សំបុត្រ"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"បន្ទះកណ្ដឹង"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"សម្ដែង​សិល្បៈ"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"ហ្គេម​​វីដេអូ"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"វាយ​​​ចំគោលដៅ"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"ម៉ាស៊ីន​​​ដាក់​កាក់"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"ល្បែង​បុក​ប៊ីយ៉ា"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"ហ្គេម​ឡុកឡាក់"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"ប៊ូលីង"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"សន្លឹក​បៀរ​​មាន​ផ្កា"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"ណោត​តន្ត្រី"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"ណោត​តន្ត្រីច្រើន"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"ត្រែ"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"ហ្គីតា"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"ខ្ទង់​សម្រាប់​ចុច​តន្ត្រី"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"ត្រុំប៉ែត"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"វីយូឡុង"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"និមិត្តសញ្ញា​តន្ត្រី"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"អាវ​កីឡា​​មាន​ខ្សែ​ឆៀង"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"រ៉ាកែត និង​បាល់"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"ជិះ​ស្គី ​និង​ក្ដារ​​ស្គី​"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"បាល់​បោះ​ និង​វណ្ណ​មូល"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"ទង់ជាតិ​ប្រណាំង​ម៉ូតូ"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"អ្នក​ជិះ​​ក្ដារ​រំអិល​លើ​ព្រិល​"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"អ្នក​រត់"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"អ្នក​ជិះ​ទូក​រអិល​លើ​ទឹក"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"ពាន​រង្វាន់"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"​ប្រណាំង​សេះ"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"​បាល់​ទាត់​អាមេរិក"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"បាល់​អោប"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"អ្នក​ហែលទឹក"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"ការ​សាងសង់​​ផ្ទះ"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"ផ្ទះ​មាន​សួន​ច្បារ"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"អគារ​ការិយាល័យ"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"ការិយាល័យ​ប្រៃសណីយ៍​ជប៉ុន"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"ការិយាល័យ​ប្រៃសណីយ៍​អឺរ៉ុប"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"មន្ទីរពេទ្យ"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"ធនាគារ"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"ម៉ាស៊ីន​​អេធីអឹម"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"សណ្ឋាគារ"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"សណ្ឋាគារ​ក្ដី​ស្រឡាញ់​"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"ហាង​​ទំនិញ ២៤​ម៉ោង"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"សាលារៀន"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"ហាង​​ទំនិញធំៗ"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"រោងចក្រ"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"ចង្កៀង​គោម Izakaya"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"វិមាន​​ជប៉ុន"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"វិមាន​អឺរ៉ុប"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"កណ្ដុរ​ប្រែង"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"កណ្ដុរ​ប្រមះ"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"គោ"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"ក្របី​ទឹក"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"គោ"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"ខ្លា​រខិន"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"ទន្សាយ"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"ឆ្មា"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"នាគ"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"ក្រពើ"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"​ត្រី​បាឡែន"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"ខ្យង់ក្ដក់"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"ពស់"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"សេះ"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"ចៀម​ឈ្មោល"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"ពពែ"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"ចៀម"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"ស្វា"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"មាន់​ឈ្មោល"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"​មាន់"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"ឆ្កែ"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"ជ្រូក"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"ជ្រូក​ព្រៃ"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"ដំរី"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"មឹក"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"ខ្យង​គ្រែង"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"សង្កើច"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"ស្រមោច"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"ឃ្មុំ"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"អណ្ដើក​មាស"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"ត្រី"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"ត្រី​តំបន់​ត្រូពិក"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"ត្រី​ក្រពត"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"អណ្ដើក"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"កូនមាន់ញាស់"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"កូន​មាន់"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"មុខ​កូន​មាន់"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"បក្សី"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"ភេនឃ្វីន"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"ខ្លាឃ្មុំ"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"ឆ្កែ"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"អូដ្ឋ​​បូក​មួយ"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"អូដ្ឋ​បូក​ពីរ"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"ត្រី​ផ្សោត"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"មុខ​កណ្ដុរ"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"មុខ​​គោ"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"មុខ​ខ្លា"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"មុខ​ទន្សាយ"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"មុខ​ឆ្មា"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"មុខ​នាគ"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"ព្រុយ​ត្រី​បាឡែន"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"មុខ​សេះ"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"មុខ​ស្វា"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"មុខ​ឆ្កែ"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"មុខ​ជ្រូក"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"មុខ​កង្កែប"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"មុខ​កណ្ដុរ"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"មុខ​ចចក"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"​​មុខ​ខ្លាឃ្មុំ"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"មុខ​ខ្លាឃ្មុំ​ផេ​ន​ដា"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"ច្រមុះ​ជ្រូក"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"ក្រញាំ​​ជើង"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"ភ្នែក"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"ត្រចៀក"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"ច្រមុះ"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"មាត់"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"អណ្ដាត"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"ចង្អុល​ដៃ​ឡើង​លើ"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"ចង្អុល​ដៃ​​ចុះ​ក្រោម"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"ចង្អុល​ដៃ​ទៅ​ឆ្វេង"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"ចង្អុល​ដៃ​ទៅ​ស្ដាំ"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"កណ្ដាប់ដៃ"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"គ្រវី​បាត​ដៃ"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"សញ្ញា​អូខេ"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"​មេដៃ​ឡើង​លើ"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"​មេដៃ​ចុះ​ក្រោម"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"ទះ​ដៃ"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"លា​ដៃ​"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"មកុដ"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"មួក​​ស្ត្រី"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"វ៉ែនតា"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"ក្រ​វ៉ាត់​ករ​"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"អាវ​យឺត​​"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"ខោ​ខោវប៊យ"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"សំលៀក​បំពាក់"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"គី​ម៉ូណូ"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"ឈុត​ហែល​ទឹក"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"សំលៀកបំពាក់​នារី"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"កាបូប"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"កាបូប​ដៃ"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"ថង់"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"ស្បែកជើង​បុរស"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"ស្បែក​ជើង​កីឡា"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"ស្បែកជើង​កែង"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"ស្បែក​ជើង​ស៊ក​ស្រ្តី"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"​ស្បែក​ជើង​ក​វែង​ស្ត្រី"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"ដាន​ជើង"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"គណនី​ភ្ញៀវ"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"គណនី"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"ក្មេង​​ប្រុស"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"ក្មេង​ស្រី"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"បុរស​"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"ស្ត្រី​"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"គ្រួសារ"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"បុរស​​ និង​ស្ត្រី​កាន់ដៃ​គ្នា"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"បុរស​ពីរ​នាក់​កាន់​ដៃ​គ្នា"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"ស្ត្រី​​​ពីរ​កាន់​ដៃ​គ្នា"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"មន្ត្រី​ប៉ូលិស"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"ស្ត្រី​​ចង​សក់​ទីទុយ"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"កូនក្រមុំ​​ពាក់​​ស្បៃ​មុខ"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"មនុស្ស​​មាន​សក់​​ពណ៌​ទង់ដែង"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"បុរស​​ពុកមាត់​ឆ្មា"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"បុរស​ពាក់​ឈ្នួត"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"បុរស​​ចំណាស់"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"ស្ត្រី​ចំណាស់"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"ទារក"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"កម្មករ​សំណង់"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"ព្រះអង្គម្ចាស់​ក្សត្រី"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"សត្វ​ចម្លែក​ជប៉ុន"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"ម្រេញគង្វាល​ជប៉ុន"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"ខ្មោច"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"អប្សរា​​ទារក"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"មនុស្ស​ក្រៅ​ភព"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"សត្វ​ចម្លែក​ក្រៅ​​ភព"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"ប្រែត"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"លលាដ៍​ក្បាល"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"អ្នក​ផ្ដល់​ព័ត៌មាន"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"អ្នក​យាម"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"អ្នក​រាំ​"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"ក្រេម​លាប​បបូរ​មាត់"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"ថ្នាំ​លាប​​​ក្រចក"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"ម៉ាស្សា​មុខ"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"កាត់សក់"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"ស្លាក​សញ្ញា​កាត់សក់"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"ស៊ីរ៉ាំង"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"ថ្នាំ​គ្រាប់​"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"ស្នាម​ថើប"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"លិខិត​ស្នេហា​"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"រោទ៍"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"ត្បូង​ថ្ម"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"ថើប"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"បាច់​​ផ្កា"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"ប្ដី​ប្រពន្ធ​​ និង​រូប​បេះដូង"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"អាពាហ៍ពិពាហ៍"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"​សំឡេង​បេះដូង​លោត"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"ខូច​ចិត្ត"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"បេះដូង​​ពីរ"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"បេះដូង​​មាន​ពន្លឺ"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"បេះដូង​​លូតលាស់"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"បេះដូង​​ជាប់​ព្រួញ"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"បេះដូង​​ពណ៌​ខៀវ"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"បេះដូង​​ពណ៌​បៃតង"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"បេះដូង​​ពណ៌​លឿង"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"បេះដូង​​ពណ៌ស្វាយ"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"បេះដូង​ជាប់​ខ្សែ​បូ"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"បេះដូង​វិល"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"ការ​តុបតែង​បេះដូង"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"​រាង​ពេជ្រ​​មាន​​ចំណុច​​ខាង​ក្នុង"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"អំពូល​​អគ្គិសនី"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"និមិត្ត​សញ្ញា​កំហឹង"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"គ្រាប់បែក"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"និមិត្ត​សញ្ញា​​ដេក"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"និមិត្ត​សញ្ញា​​ប៉ះ​ទង្គិច​គ្នា"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"និមិត្ត​សញ្ញា​​ស្រក់​ញើស​"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"ដំណក់​ទឹក"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"និមិត្ត​សញ្ញា​​ដកឃ្លា"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"គំនរ​ធូលី"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"ដំឡើង​សាច់ដុំ​ដើមដៃ"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"និមិត្ត​សញ្ញា​​វិលមុខ"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"ប្រអប់​បញ្ចេញ​យោបល់"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"ប្រអប់​គំនិត"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"ផ្កា​​ពណ៌ស"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"និមិត្ត​សញ្ញា​​មួយ​រយ​ពិន្ទុ"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"កាបូប​​លុយ"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"ប្ដូរ​​រូបិយប័ណ្ណ"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"សញ្ញា​ដុល្លារ"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"កាត​​ឥណទាន"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"ក្រដាស​ប្រាក់​​ធនាគារ​មាន​សញ្ញា​​យ៉េន​​"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"លុយដុល្លារ"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"ក្រដាស​ប្រាក់​​ធនាគារ​មាន​សញ្ញា​អឺរ៉ូ"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"ក្រដាស​ប្រាក់​​ធនាគារ​មាន​សញ្ញា​​​ផោន"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"លុយ​មាន​ស្លាប"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"ក្រាហ្វិក​និន្នាការ​ឡើង​​មាន​​សញ្ញា​យ៉េន"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"កៅអី"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"កុំព្យូទ័រ​ផ្ទាល់ខ្លួន"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"វ៉ា​លី​"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"ឌីស​​តូច"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"ថា​ស​​ទន់"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"ថាស"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"ឌីវីឌី"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"ថត​​ឯកសារ"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"ថត​ឯកសារ​បើក"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"ទំព័រ​​កោង"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"ទំព័រ​បញ្ឈរ"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"ប្រតិទិន"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"ហែក​ប្រតិទិន​"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"​កាត​រៀប​តាម​អក្សរ"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"ក្រាហ្វិក​មាន​និន្នាការ​ឡើង"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"ក្រាហ្វិក​មាន​និន្នាការ​ចុះ"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"គំនូស​តាង​របារ"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"ក្ដារ​តម្បៀត​ខ្ទាស់"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"ម្ជុល"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"ម្ជុល​ក្បាល​មូល"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"ដង្កៀប​​ក្រដាស"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"បន្ទាត់​ត្រង់"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"បន្ទាត់​រៀង​ត្រីកោណ"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"ផ្ទាំង​​​ចំណាំ"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"បញ្ជី​កត់ត្រា"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"សៀវភៅ"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"សៀវភៅ​មាន​ក្រប​ពណ៌"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"សៀវភៅ​​បិទ"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"សៀវភៅ​បើក​​"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"សៀវភៅ​​ពណ៌​បៃតង"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"សៀវភៅ​​ពណ៌​ខៀវ"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"សៀវភៅ​​ពណ៌​ទឹកក្រូច"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"សៀវភៅ​"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"ស្លាកឈ្មោះ"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"ក្រដាស​រមូរ"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"កំណត់ចំណាំ"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"អ្នក​ទទួល​ទូរស័ព្ទ"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"ភេយ័រ"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"ម៉ាស៊ីន​​ទូរសារ"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"អង់តែន​​ផ្កាយ​រណប"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"អូប៉ាល័រ​ប្រកាស​សាធារណៈ"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"ឧបករណ៍​បំពង​សំឡេង"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"ថា​ស​​​ចេញ"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"ថា​ស​ចូល"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"កញ្ចប់​"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"និមិត្ត​សញ្ញា​អ៊ីមែល"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"ស្រោម​​សំបុត្រ​ចូល"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"ស្រោម​សំបុត្រ​​មាន​សញ្ញា​ព្រួញ​ពី​លើ"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"ប្រអប់​សំបុត្រ​បិទ​មាន​ទង់​ចុះក្រោម"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"ប្រអប់​សំបុត្រ​បិទ​មាន​ទង់​ឡើង​លើ"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"ប្រអប់​សំបុត្រ​បើក​មាន​ទង់​ឡើង​លើ"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"ប្រអប់​សំបុត្រ​បើក​មាន​ទង់ចុះក្រោម"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"ប្រអប់​ប្រៃសណីយ៍"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"ស្នែង​​ប្រៃសណីយ៍"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"កាសែត"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"ទូរស័ព្ទ​ចល័ត"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"ទូរស័ព្ទ​ចល័ត​មាន​សញ្ញា​ព្រួញ​ចូល​ពី​​ឆ្វេង"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"របៀប​​​ញ័រ"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"បិទ​ទូរស័ព្ទ​​ចល័ត"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"មិន​មាន​ទូរស័ព្ទ​​ចល័ត"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"អង់តែន​មាន​របារ"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"ម៉ាស៊ីន​ថត"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"ម៉ាស៊ីន​ថត​វីដេអូ"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"ទូរទស្សន៍"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"វិទ្យុ"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"ការ​សែត​វីដេអូ"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"ព្រួញ​រមួល​ទៅ​ស្ដាំ"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"ព្រួញ​រាង​ជា​រង្វង់​បើក​​​ស្រប​ទិស​ទ្រនិច​នាឡិកា​ទៅ​ឆ្វេង-ស្ដាំ"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"ព្រួញ​រាង​ជា​រង្វង់​បើក​​ស្រប​ទិស​ទ្រនិច​នាឡិកា​ទៅ​ឆ្វេង-ស្ដាំ​មាន​លេខ​ ១​ក្នុង​រង្វង់​នៅ​ពី​លើ"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"ព្រួញ​រាង​ជា​រង្វង់​បើក​​ស្រប​ទិស​ទ្រនិច​នាឡិកា​ចុះក្រោម-ឡើងលើ"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"ព្រួញ​រាង​ជា​រង្វង់​បើក​​ច្រាស​​ទិស​ទ្រនិច​នាឡិកា​ចុះក្រោម-ឡើងលើ"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"និមិត្ត​សញ្ញា​ពន្លឺ​​ទាប"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"និមិត្ត​សញ្ញា​​ពន្លឺ​ខ្ពស់"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"អូប៉ាល័រ​មាន​បន្ទាត់​កាត់"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"អូប៉ាល័រ"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"អូប៉ាល័រ​មាន​រលក​សំឡេង​មួយ"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"អូប៉ាល័រ​មាន​រលក​សំឡេង​បី"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"ថ្ម"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"ដុយ​អគ្គិសនី"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"កែវ​ពង្រីក​ចង្អុល​ខាង​ឆ្វេង"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"កែវ​ពង្រីក​ចង្អុល​ខាង​ស្ដាំ"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"ចាក់សោ​​​ដោយ​ប្រើ​​ប៊ិច​"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"បិទ​​សោ​ដោយ​ប្រើ​​​​កូនសោ"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"សោ"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"ចាក់សោ"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"បើក​សោ"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"កណ្ដឹង"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"កណ្ដឹង​មាន​បន្ទាត់​កាត់"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"​ចំណាំ"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"និមិត្ត​សញ្ញា​​តំណ"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"ប៊ូតុង​​មូល"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"ថយក្រោយ​មាន​ព្រួញ​ទៅ​ឆ្វេង​ខាង​លើ"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"បញ្ចប់​មាន​ព្រួញ​ទៅ​ឆ្វេង​ខាង​លើ"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"បើក​មាន​សញ្ញា​ឧទាន​​ជា​មួយ​នឹង​ព្រួញ​ទៅ​ឆ្វេង​​ខាង​លើ"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"ឆាប់ៗ​មាន​ព្រួញ​ទៅ​ស្ដាំ​ខាង​លើ"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"កំពូល​មាន​ព្រួញ​ឡើងលើ​នៅ​ខាង​លើ"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"​និមិត្ត​សញ្ញា​គ្មាន​នរណា​ម្នាក់​​អាយុ​​ក្រោម​ដប់ប្រាំ​បី"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"គ្រាប់​ចុច​ ១០"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"និមិត្ត​សញ្ញា​បញ្ចូល​សម្រាប់​អក្សរ​ឡាតាំង​ធំ"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"និមិត្ត​សញ្ញា​បញ្ចូល​សម្រាប់​អក្សរ​ឡាតាំង​តូច"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"និមិត្ត​សញ្ញា​បញ្ចូល​សម្រាប់​​លេខ​"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"ការ​បញ្ចូល​និមិត្តសញ្ញា"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"និមិត្ត​សញ្ញា​បញ្ចូល​សម្រាប់​អក្សរ​ឡាតាំង"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"ភ្លើង"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"ពិល​​អគ្គិសនី"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"ម៉ាឡេត"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"ញញួរ"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"ឡោ​ស៊ី​​"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"កាំបិត​​"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"កាំភ្លើង​ខ្លី"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"មីក្រូទស្សន៍"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"កែវ​យឹត"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"​បាល់​គ្រីស្តាល់"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"ផ្កាយ​ ៦ជ្រុងមាន​ចំណុចកណ្ដាល"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"និមិត្តសញ្ញា​ជប៉ុន​សម្រាប់​អ្នក​ចាប់ផ្ដើម"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"លំពែង​មុខ​បី"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"ប៊ូតុង​ការេ​ពណ៌​ខ្មៅ"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"ប៊ូតុង​ការ៉េ​ពណ៌​ស​"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"រង្វង់​ពណ៌​ក្រហម​​​ធំ"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"រង្វង់​ពណ៌​ខៀវ​ធំ"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"ពេជ្រ​ពណ៌​ទឹកក្រូច​ធំ"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"ពេជ្រ​ពណ៌​ខៀវ​​ធំ"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"ពេជ្រ​ពណ៌​ទឹកក្រូច​​តូច"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"ពេជ្រ​ពណ៌​ខៀវ​​តូច"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"ត្រីកោណ​ពណ៌​ក្រហម​កំពូល​ឡើងលើ"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"ត្រីកោណ​ពណ៌​ក្រហម​កំពូល​​ចុះ​ក្រោម"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"ត្រីកោណ​ពណ៌​ក្រហម​តូច​កំពូល​ឡើងលើ"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"ត្រីកោណ​ពណ៌​ក្រហម​​តូច​កំពូល​​ចុះ​ក្រោម"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"មុខ​នាឡិកា​ម៉ោង​មួយ"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"មុខ​នាឡិកា​ម៉ោង​ពីរ"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"មុខ​នាឡិកា​ម៉ោង​បី"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"មុខ​នាឡិកា​ម៉ោង​បួន"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"មុខ​នាឡិកា​ម៉ោង​​ប្រាំ"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"មុខ​នាឡិកា​ម៉ោង​ប្រាំមួយ"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"មុខ​នាឡិកា​ម៉ោង​ប្រាំពីរ"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"មុខ​នាឡិកា​ម៉ោង​ប្រាំបី"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"មុខ​នាឡិកា​ម៉ោង​ប្រាំ​បួន"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"មុខ​នាឡិកា​ម៉ោង​ដប់"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"មុខ​នាឡិកា​ម៉ោង​ដប់​មួយ"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"មុខ​នាឡិកា​ម៉ោង​ដប់​ពីរ"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"មុខ​នាឡិកា​ម៉ោង​មួយ​កន្លះ"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"មុខ​នាឡិកា​ម៉ោង​ពីរ​កន្លះ"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"មុខ​នាឡិកា​ម៉ោង​​បី​​កន្លះ"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"មុខ​នាឡិកា​ម៉ោង​​បួន​​កន្លះ"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"មុខ​នាឡិកា​ម៉ោង​ប្រាំ​កន្លះ"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"មុខ​នាឡិកា​ម៉ោង​​ប្រាំ​មួយ​កន្លះ"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"មុខ​នាឡិកា​ម៉ោង​ប្រាំ​ពីរ​កន្លះ"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"មុខ​នាឡិកា​ម៉ោង​​ប្រាំ​បី​កន្លះ"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"មុខ​នាឡិកា​ម៉ោង​​ប្រាំ​បួន​​​កន្លះ"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"មុខ​នាឡិកា​ម៉ោង​ដប់​កន្លះ"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"មុខ​នាឡិកា​ម៉ោង​ដប់​​មួយ​កន្លះ"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"មុខ​នាឡិកា​ម៉ោង​ដប់​ពីរ​​កន្លះ"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"ភ្នំ​ហ្វូជី"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"អគារ​ទី​ក្រុង​តូក្យូ"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"រូបសំណាក​​សេរីភាព"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"គំនូរ​ស្រមោល​​ជប៉ុន"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"ម៉ូយ៉ៃ"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"មុខ​ញញឹម​ខាំ​ធ្មេញ"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"មុខ​ញញឹម​ខាំ​ធ្មេញ​ជា​មួយ​ភ្នែក​បើក"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"មុខ​ទ​ទឹក​មាន​ភ្នែក​រីករាយ"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"មុខ​ញញឹម​បើក​មាត់"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"មុខ​ញញឹម​បើក​មាត់ និង​បើក​ភ្នែក"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"ញញឹម​មុខ​​បើក​មាត់ និង​ខ្វល់ខ្វាយ"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"ញញឹម​មុខ​​បើក​មាត់ និង​​បិទ​ភ្នែក​បន្តិច"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"មុខ​ញញឹម​មាន​រង្វង់​ខាង​លើ"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"មុខ​ញញឹម​​មាន​ស្នែង"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"មុខ​មិច​ភ្នែក"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"មុខ​ញញឹម​បើក​ភ្នែក"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"មុខ​បង្ហាញ​រសជាតិ​អាហារ​ឆ្ងាញ់"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"មុខ​​ធូរ​​ស្រាល"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"មុខ​ញញឹម​ជា​មួយ​ភ្នែក​រូប​បេះ​ដូង"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"មុខ​ញញឹម​ពាក់​វ៉ែនតា​ខ្មៅ"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"មុខ​ញញឹម​ចំអក"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"មុខ​​អព្យាក្រឹត"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"មុខ​គ្មាន​អារម្មណ៍"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"មុខ​អត់​សប្បាយ​ចិត្ត"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"មុខ​​​មាន​​ញើស"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"មុខគិត"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"មុខ​​យល់​ច្រឡំ"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"មុខ​​អាក្រក់"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"មុខ​ថើប"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"មុខ​បង្ហាញ​ការ​ថើប"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"មុខ​ថើប​បើក​ភ្នែក"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"មុខ​ថើប​បិទ​ភ្នែក"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"មុខ​លៀន​​អណ្ដាត"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"មុខ​លៀន​​អណ្ដាត ហើយ​មិច​ភ្នែក"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"មុខ​លៀន​អណ្ដាត ហើយ​​បិទ​ភ្នែក​បន្តិច"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"មុខ​ខកចិត្ត"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"មុខ​​ព្រួយ​បារម្ភ"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"មុខ​​ខឹង"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"មុខ​ក្និកក្នក់"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"មុខ​យំ"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"មុខ​លំបាក"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"មុខ​ជ័យ​ជំនះ"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"មុខ​ខកចិត្ត​ប៉ុន្តែ​ធូរស្រាល"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"មុខ​ក្រញូវ​បើកមាត់"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"មុខ​ខូច​ចិត្ត"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"មុខ​ភ័យ​ខ្លាច"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"មុខ​​នឿយហត់"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"មុខ​​ងងុយ​គេង"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"មុខ​អស់កម្លាំង​​"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"មុខ​ក្រញេវក្រញូវ​"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"មុខ​យំ​លឺៗ"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"មុខ​បើក​មាត់"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"មុខ​ស្ងៀមស្ងាត់"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"មុខ​បើក​មាត់​ ហើយ​មាន​ញើស"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"មុខ​ស្រែក​ដោយ​ភ័យ​ខ្លាច"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"មុខ​រ​ភ្ញាក់​ផ្អើល"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"មុខ​ក្រហម"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"មុខ​កំពុង​ដេក"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"មុខ​​កំពុង​វិលមុខ"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"មុខ​អត់មាន​មាត់"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"មុខ​ពាក់​ម៉ាស់"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"មុខ​ឆ្មា​ញញឹម​ខាំធ្មេញ​ ហើយ​បើក​ភ្នែក"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"មុខ​ឆ្មា​ស្រក​ទឹកភ្នែក"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"មុខ​ឆ្មា​ញញឹម​ ហើយ​បើក​មាត់"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"មុខ​ឆ្មា​ញញឹម​ជា​មួ​យ​ភ្នែក​រាង​បេះដូង"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"មុខ​ឆ្មា​ជា​មួយ​ការ​ញញឹម​ញាក់​មុខ"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"មុខ​ឆ្មា​ថើប​ហើយ​បិទ​ភ្នែក"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"មុខ​ឆ្មា​ក្និកក្នក់"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"មុខ​ឆ្មា​យំ"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"មុខ​ឆ្មា​នឿយ​ហត់"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"មុខ​គ្មាន​កាយវិការ​ល្អ"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"មុខ​មាន​កាយវិការ​យល់ព្រម"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"មនុស្ស​អោន​ខ្លួន​ខ្លាំង"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"ស្វា​បិទ​ភ្នែក"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"ស្វា​បិទ​ត្រចៀក"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"ស្វា​បិទ​មាត់"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"មនុស្ស​សប្បាយ​​លើក​ដៃ​មួយ"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"លើក​ដៃ​ទាំង​ពីរ​អបអរ"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"មនុស្ស​ចង​ចិញ្ចើម"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"មនុស្ស​មាន​មុខ​ក្និកក្នក់"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"មនុស្ស​អោប​ដៃ"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"គ្រាប់​​រ៉ុកកែត"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"ឧទ្ធម្ភាគចក្រ"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"ក្បាល​រថភ្លើង"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"ទូរ​​រថភ្លើង"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"រថភ្លើង​ល្បឿន​លឿន"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"រថភ្លើង​ល្បឿន​លឿន​​មាន​ច្រមុះ"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"រថភ្លើង​"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"មេត្រូ"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"រថភ្លើង​ប្រើ​​​ពន្លឺ"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"ស្ថានីយ"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"រថយន្ត​រត់​លើ​ផ្លូវ​ដែក"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"រថយន្ត​រត់​លើ​ផ្លូវ​ដែក"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"រថយន្តក្រុង"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"រថយន្ត​ក្រុង​ខាង​មុខ"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"រថយន្ត​ប្រើ​ចរន្ត​អគ្គិសនី"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"ចំណត​រថយន្ត​ក្រុង"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"រថយន្ត​ទេសចរណ៍​​​តូច"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"រថយន្ត​សង្គ្រោះ​បន្ទាន់"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"ម៉ាស៊ីន​ភ្លើង"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"រថយន្ត​ប៉ូលិស"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"រថយន្ត​ប៉ូលិស​ខាង​មុខ"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"តាក់ស៊ី"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"តាក់ស៊ី​ខាង​មុខ"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"រថយន្ត"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"រថយន្ត​ខាង​មុខ"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"រថយន្ត​​​សម្រាប់​កម្សាន្ត​"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"រថយន្ត​​ចែក​ចាយ"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"ឡាន​កាមីយ៉ុង"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"ត្រាក់ទ័រ"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"ប្រព័ន្ធ​ផ្លូវ​រថភ្លើង"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"ផ្លូវ​​រថភ្លើង​កាត់​​ភ្នំ"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"ផ្លូវ​រថភ្លើង​ផ្អាក​ដំណើរការ"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"ខ្សែ​កាប​ឆ្លង​ភ្នំុ"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"ផ្លូវ​រថភ្លើង​លើ​អាកាស"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"កប៉ាល់"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"ទូកចែវ"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"ទូក​ល្បឿន​លឿន"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"ភ្លើង​ចរាចរណ៍"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"ភ្លើង​ចរាចរណ៍​បញ្ឈរ"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"សញ្ញា​​សំណង់"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"រថយន្ត​​ប៉ូលិស​បើក​សារ៉ែន​វិល"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"បង្គោល​ទង់ជាតិ​រាង​ត្រីកោណ​"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"ទ្វារ"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"សញ្ញា​ហាម​ចូល"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"​សញ្ញា​ជក់​បារី"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"ហាម​ជក់​បារី"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"និមិត្តសញ្ញា​ដាក់​សំរាម​ក្នុង​ធុង"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"និមិត្តសញ្ញា​ហាម​ចោល​សំរាម"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"និមិត្ត​សញ្ញា​ទឹក​ចល័ត"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"និមិត្ត​សញ្ញា​​ទឹក​មិន​ចល័ត"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"កង់"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"ហាម​ជិះ​កង់"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"អ្នក​ជិះកង់"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"អ្នក​ជិះ​កង់​ឡើង​ភ្នំ"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"ថ្មើរជើង"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"មិន​សម្រាប់​ថ្មើរ​ជើង"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"កុមារ​​ឆ្លងកាត់"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"និមិត្ត​សញ្ញា​បុរស"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"និមិត្ត​សញ្ញា​ស្ត្រី"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"បន្ទប់ទឹក"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"និមិត្ត​សញ្ញា​ទារក"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"បង្គន់"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"បន្ទប់​ទឹក"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"ផ្កាឈូក​ងូត​ទឹក"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"​ងូតទឹក"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"អាង​​ងូត​ទឹក"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"ការ​ត្រួត​ពិនិត្យ​លិខិត​ឆ្លង​ដែន"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"គយ"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"ប្រកាស​​ឥវ៉ាន់"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"ឥវ៉ាន់​នៅ​សល់"</string>
+</resources>
diff --git a/java/res/values-km-rKH/strings-letter-descriptions.xml b/java/res/values-km-rKH/strings-letter-descriptions.xml
new file mode 100644
index 0000000..f58eff4
--- /dev/null
+++ b/java/res/values-km-rKH/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"សញ្ញា ª"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"សញ្ញា µ"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"សញ្ញា º"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"សញ្ញា ß"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"សញ្ញា à"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"សញ្ញា á"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"សញ្ញា â"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"សញ្ញា ã"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"សញ្ញា ä"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"សញ្ញា å"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"សញ្ញា æ"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"សញ្ញា ç"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"សញ្ញា è"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"សញ្ញា é"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"សញ្ញា ê"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"សញ្ញា ë"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"សញ្ញា ì"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"សញ្ញា í"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"សញ្ញា î"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"សញ្ញា ï"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"សញ្ញា ð"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"សញ្ញា ñ"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"សញ្ញា ò"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"សញ្ញា ó"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"សញ្ញា ô"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"សញ្ញា õ"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"សញ្ញា ö"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"សញ្ញា ø"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"សញ្ញា ù"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"សញ្ញា ú"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"សញ្ញា û"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"សញ្ញា ü"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"សញ្ញា ý"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"សញ្ញា þ"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"សញ្ញា ÿ"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"សញ្ញា ā"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"សញ្ញា ă"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"សញ្ញា ą"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"សញ្ញា ć"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"សញ្ញា ĉ"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"សញ្ញា ċ"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"សញ្ញា č"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"សញ្ញា ď"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"សញ្ញា đ"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"សញ្ញា ē"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"សញ្ញា ĕ"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"សញ្ញា ė"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"សញ្ញា ę"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"សញ្ញា ě"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"សញ្ញា ĝ"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"សញ្ញា ğ"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"សញ្ញា ġ"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"សញ្ញា ģ"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"សញ្ញា ĥ"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"សញ្ញា ħ"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"សញ្ញា ĩ"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"សញ្ញា ī"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"សញ្ញា ĭ"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"សញ្ញា į"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"សញ្ញា ı"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"សញ្ញា ĳ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"សញ្ញា ĵ"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"សញ្ញា ķ"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"សញ្ញា ĸ"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"សញ្ញា ĺ"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"សញ្ញា ļ"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"សញ្ញា ľ"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"សញ្ញា ŀ"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"សញ្ញា ł"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"សញ្ញា ń"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"សញ្ញា ņ"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"សញ្ញា ň"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"សញ្ញា ŉ"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"សញ្ញា ŋ"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"សញ្ញា ō"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"សញ្ញា ŏ"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"សញ្ញា ő"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"សញ្ញា œ"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"សញ្ញា ŕ"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"សញ្ញា ŗ"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"សញ្ញា ř"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"សញ្ញា ś"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"សញ្ញា ŝ"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"សញ្ញា ş"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"សញ្ញា š"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"សញ្ញា ţ"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"សញ្ញា ť"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"សញ្ញា ŧ"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"សញ្ញា ũ"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"សញ្ញា ū"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"សញ្ញា ŭ"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"សញ្ញា ů"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"សញ្ញា ű"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"សញ្ញា ų"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"សញ្ញា ŵ"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"សញ្ញា ŷ"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"សញ្ញា ź"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"សញ្ញា ż"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"សញ្ញា ž"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"សញ្ញា ſ"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"សញ្ញា ơ"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"សញ្ញា ư"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"សញ្ញា ș"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"សញ្ញា ț"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"សញ្ញា ə"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"សញ្ញា ạ"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"សញ្ញា ả"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"សញ្ញា ấ"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"សញ្ញា ầ"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"សញ្ញា ẩ"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"សញ្ញា ẫ"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"សញ្ញា ậ"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"សញ្ញា ắ"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"សញ្ញា ằ"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"សញ្ញា ẳ"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"សញ្ញា ẵ"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"សញ្ញា ặ"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"សញ្ញា ẹ"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"សញ្ញា ẻ"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"សញ្ញា ẽ"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"សញ្ញា ế"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"សញ្ញា ề"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"សញ្ញា ể"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"សញ្ញា ễ"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"សញ្ញា ệ"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"សញ្ញា ỉ"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"សញ្ញា ị"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"សញ្ញា ọ"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"សញ្ញា ỏ"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"សញ្ញា ố"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"សញ្ញា ồ"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"សញ្ញា ổ"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"សញ្ញា ỗ"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"សញ្ញា ộ"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"សញ្ញា ớ"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"សញ្ញា ờ"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"សញ្ញា ở"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"សញ្ញា ỡ"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"សញ្ញា ợ"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"សញ្ញា ụ"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"សញ្ញា ủ"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"សញ្ញា ứ"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"សញ្ញា ừ"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"សញ្ញា ử"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"សញ្ញា ữ"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"សញ្ញា ự"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"សញ្ញា ỳ"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"សញ្ញា ỵ"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"សញ្ញា ỷ"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"សញ្ញា ỹ"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"សញ្ញា ¡"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"សញ្ញា «"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"សញ្ញា ·"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"សញ្ញា ¹"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"សញ្ញា »"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"សញ្ញា ¿"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"សញ្ញា ‘"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"សញ្ញា ’"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"សញ្ញា ‚"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"សញ្ញា “"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"សញ្ញា ”"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"សញ្ញា †"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"សញ្ញា ‡"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"សញ្ញា ‰"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"សញ្ញា ′"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"សញ្ញា ″"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"សញ្ញា ‹"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"សញ្ញា ›"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"សញ្ញា ⁴"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"សញ្ញា ⁿ"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"សញ្ញា ₱"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"សញ្ញា ℅"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"សញ្ញា →"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"សញ្ញា ↓"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"សញ្ញា ∅"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"សញ្ញា ∆"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"សញ្ញា ≤"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"សញ្ញា ≥"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"សញ្ញា ★"</string>
+</resources>
diff --git a/java/res/values-km-rKH/strings-talkback-descriptions.xml b/java/res/values-km-rKH/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..e5b7860
--- /dev/null
+++ b/java/res/values-km-rKH/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"ដោត​កាស ដើម្បី​ស្ដាប់​ពាក្យ​សម្ងាត់​ដែល​និយាយ​​ឮ​ៗ។"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"អត្ថបទ​បច្ចុប្បន្ន​គឺ %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"គ្មាន​អត្ថបទ​​​បាន​បញ្ចូល"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> កែ <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ទៅ​ជា <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> អនុវត្ត​ការ​កែ​ស្វ័យ​ប្រវត្តិ"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"មិន​ស្គាល់​តួអក្សរ"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"និមិត្ត​សញ្ញា​​ច្រើន​ទៀត"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"និមិត្តសញ្ញា"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"លុប"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"និមិត្តសញ្ញា"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"អក្សរ"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"លេខ"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"ការកំណត់"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"ដកឃ្លា"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ការ​បញ្ចូល​សំឡេង"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"សញ្ញា​អារម្មណ៍"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"ស្វែងរក"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"សញ្ញា(.)"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ប្ដូរ​​ភាសា"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"បន្ទាប់"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"មុន"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"បាន​បើក Shift"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"បាន​បើក Caps lock"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"របៀប​និមិត្ត​សញ្ញា"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"របៀប​និមិត្ត​សញ្ញា​​ច្រើន​ទៀត"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"របៀប​អក្សរ"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"របៀប​ទូរស័ព្ទ"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"​របៀប​និមិត្ត​សញ្ញា​ទូរស័ព្ទ"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"បាន​លាក់​ក្ដារចុច"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"បង្ហាញ​ក្ដារ​ចុច <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"កាលបរិច្ឆេទ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"កាល​បរិច្ឆេទ​ និង​ពេល​វេលា"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"អ៊ីមែល"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ការ​ផ្ញើ​សារ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"លេខ"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ទូរស័ព្ទ"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"អត្ថបទ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ពេលវេលា"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"ថ្មីៗ"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"មនុស្ស"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"វត្ថុ"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ធម្មជាតិ"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ទីកន្លែង"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"និមិត្តសញ្ញា"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"សញ្ញា​អារម្មណ៍"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"អក្សរ​ធំ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"សញ្ញា I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"សញ្ញា İ"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"មិន​ស្គាល់​និមិត្តសញ្ញា"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"មិន​ស្គាល់​សញ្ញា​អារម្មណ៍"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"តួអក្សរ​ជំនួស​អាច​ប្រើ​បាន"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"បាន​បដិសេធ​តួអក្សរ​ជំនួស"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ការ​ស្នើ​ជំនួស​អាច​ប្រើ​បាន"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"បាន​បដិសេធ​ការ​ស្នើ​ជំនួស"</string>
+</resources>
diff --git a/java/res/values-km-rKH/strings.xml b/java/res/values-km-rKH/strings.xml
index 86ecc5e..1c64583 100644
--- a/java/res/values-km-rKH/strings.xml
+++ b/java/res/values-km-rKH/strings.xml
@@ -21,34 +21,35 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"ជម្រើស​​បញ្ចូល"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"ពាក្យ​បញ្ជា​កំណត់​ហេតុ​​ការ​ស្រាវជ្រាវ"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"រក​មើល​ឈ្មោះ​ទំនាក់ទំនង"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"កម្មវិធី​ពិនិត្យ​អក្ខរាវិរុទ្ធ​ប្រើ​ធាតុ​ពី​​ក្នុង​បញ្ជី​ទំនាក់ទំនង​របស់​អ្នក"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"ញ័រ​នៅ​ពេល​ចុច​គ្រាប់ចុច"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"សំឡេង​នៅ​ពេល​ចុច​គ្រាប់ចុច"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"លេច​ឡើង​នៅ​​ពេល​ចុច​គ្រាប់​ចុច"</string>
-    <string name="general_category" msgid="1859088467017573195">"ទូទៅ"</string>
-    <string name="correction_category" msgid="2236750915056607613">"ការ​កែ​អត្ថបទ"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"បញ្ចូល​ដោយ​ប្រើ​កាយវិការ"</string>
-    <string name="misc_category" msgid="6894192814868233453">"ជម្រើស​ផ្សេងទៀត"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"ការ​កំណត់​កម្រិត​ខ្ពស់"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"ជម្រើស​សម្រាប់​អ្នក​ជំនាញ"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"ចំណូលចិត្ត​បញ្ចូល"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"រូបរាង"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"ជម្រើស​ភាសា​​ច្រើន"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"ចំណូលចិត្តបញ្ចូលកាយវិការ"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"ការ​កែ​​អត្ថបទ"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"កម្រិត​ខ្ពស់"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ប្ដូរ​ទៅ​​​វិធីសាស្ត្រ​បញ្ចូល​​​ផ្សេង​ទៀត"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"គ្រាប់ចុច​ប្ដូរ​ភាសា​តាម​វិធីសាស្ត្រ​បញ្ចូល​ផ្សេងទៀត"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"គ្រាប់​ចុច​ប្ដូរ​​ភាសា"</string>
     <string name="show_language_switch_key_summary" msgid="7343403647474265713">"បង្ហាញ​នៅ​ពេល​ដែល​បើក​ភាសា​បញ្ចូល​ច្រើន"</string>
     <string name="sliding_key_input_preview" msgid="6604262359510068370">"បង្ហាញ​ទ្រនិច​បង្ហាញ​ស្លាយ"</string>
     <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"បង្ហាញ​​សញ្ញា​មើល​​ឃើញ​ខណៈ​ពេល​ដែល​រុញ​ពី​ឆ្វេង ឬ​​គ្រាប់​ចុច​​និមិត្ត​សញ្ញា"</string>
-    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"​សោ​លេចឡើង​បោះបង់​ការ​​ពន្យារពេល"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"​សោ​លេចឡើង​បោះបង់​ការ​​ពន្យារពេល​"</string>
     <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"គ្មាន​ការ​ពន្យារពេល"</string>
     <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"លំនាំដើម"</string>
     <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> មិល្លី​វិនាទី"</string>
     <string name="settings_system_default" msgid="6268225104743331821">"លំនាំ​ដើម​​​ប្រព័ន្ធ"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"ស្នើ​ឈ្មោះ​ទំនាក់ទំនង"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"ប្រើ​ឈ្មោះ​ពី​ទំនាក់ទំនង​សម្រាប់​ការ​​ស្នើ និង​​​កែ"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"ការ​ស្នើ​ផ្ទាល់​ខ្លួន"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"ធ្វើឲ្យ <xliff:g id="APPLICATION_NAME">%s</xliff:g> ប្រសើរ​ឡើង"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"រយៈ​ពេល​ចុច​ដកឃ្លា​ពីរដង"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"ប៉ះ​ដកឃ្លា​ពីរ​​ដង​បញ្ចូល​​​រយៈ​ពេល​ដែល​អនុវត្ត​តាម​ដកឃ្លា"</string>
-    <string name="auto_cap" msgid="1719746674854628252">"ការ​សរសេរ​ជា​អក្សរ​ធំ​​ស្វ័យប្រវត្តិ"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"ការ​សរសេរ​ជា​អក្សរ​ធំ​​ស្វ័យប្រវត្តិ​"</string>
     <string name="auto_cap_summary" msgid="7934452761022946874">"សរសេរ​ពាក្យ​ដំបូង​​​ជា​អក្សរ​ធំ​​នៃ​ប្រយោគ​នីមួយ​ៗ"</string>
     <string name="edit_personal_dictionary" msgid="3996910038952940420">"វចនានុក្រម​ផ្ទាល់ខ្លួន"</string>
     <string name="configure_dictionaries_title" msgid="4238652338556902049">"ផ្នែក​បន្ថែម​វចនានុក្រម"</string>
@@ -59,7 +60,7 @@
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"បង្ហាញ​នៅ​ក្នុង​របៀប​បញ្ឈរ"</string>
     <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"លាក់​ជានិច្ច"</string>
     <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"ទប់ស្កាត់​​ពាក្យ​​បំពាន"</string>
-    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"កុំ​ស្នើ​ឲ្យ​ពាក្យ​បំពាន​មាន​សក្ដានុពល"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"កុំ​ស្នើ​ឲ្យ​ពាក្យ​បំពាន​មាន​សក្ដានុពល​"</string>
     <string name="auto_correction" msgid="7630720885194996950">"ការ​កែ​​​ស្វ័យប្រវត្តិ"</string>
     <string name="auto_correction_summary" msgid="5625751551134658006">"ចន្លោះ​មិន​ឃើញ ​និង​សញ្ញា​​វណ្ណយុត្ត​កែ​ពាក្យ​ដែល​បាន​វាយ​ខុស​ស្វ័យប្រវត្តិ"</string>
     <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"បិទ"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"បង្ហាញ​ដាន​កាយវិការ"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"មើល​ការ​​អណ្ដែត​ដែល​មាន​ចលនា​ជា​មុន"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"​មើល​ពាក្យ​​​ដែល​បាន​ស្នើ​​​ខណៈ​ពេល​កំពុង​ធ្វើ​កាយ​វិការ"</string>
-    <string name="added_word" msgid="8993883354622484372">"បាន​រក្សាទុក <xliff:g id="WORD">%s</xliff:g> ៖"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"ដោត​កាស ដើម្បី​ស្ដាប់​ពាក្យ​សម្ងាត់។"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"អត្ថបទ​បច្ចុប្បន្ន​គឺ %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"គ្មាន​អត្ថបទ​​​បាន​បញ្ចូល"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> កែ <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ទៅ <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> អនុវត្ត​ការ​កែ​ដោយស្វ័យប្រវត្តិ"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"កូដ​គ្រាប់​ចុច %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"បើក Shift (​ប៉ះ​ដើម្បី​បិទ)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"បើក Caps lock (ប៉ះ​​ដើម្បី​បិទ)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"និមិត្ត​សញ្ញា"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"អក្សរ"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"លេខ"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"ការ​កំណត់"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"ដកឃ្លា"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"បញ្ចូលសំឡេង"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"មុខ​ញញឹម"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"ស្វែងរក"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Dot"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"ប្ដូរ​​ភាសា"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"បន្ទាប់"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"មុន"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"បាន​បើក Shift"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"បាន​បើក Caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"បាន​បិទ Shift"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"របៀប​និមិត្តសញ្ញា"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"របៀប​អក្សរ"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"របៀប​ទូរស័ព្ទ"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"​របៀប​និមិត្ត​សញ្ញា​ទូរស័ព្ទ"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"បាន​លាក់​ក្ដារចុច"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"បង្ហាញ​ក្ដារ​ចុច <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"កាលបរិច្ឆេទ"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"កាល​បរិច្ឆេទ​ និង​ពេល​វេលា"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"អ៊ីមែល"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"​ផ្ញើ​សារ"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"លេខ"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"ទូរស័ព្ទ"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"អត្ថបទ"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ពេលវេលា"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"កាយវិការ​​ឃ្លា"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"បញ្ចូល​​ដកឃ្លា​​​អំឡុង​​​កាយវិការ​ ដោយ​រំកិល​ទៅ​គ្រាប់​ចុច​ដកឃ្លា"</string>
     <string name="voice_input" msgid="3583258583521397548">"គ្រាប់​ចុច​បញ្ចូល​​សំឡេង"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"នៅ​លើ​ក្ដារចុច​ចម្បង"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"នៅ​លើ​ក្ដារចុច​​និមិត្ត​សញ្ញា"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"បិទ"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"មីក្រូហ្វូន​នៅ​លើ​​ក្ដារចុច​ចម្បង"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"មីក្រូហ្វូន​នៅ​លើ​​ក្ដារចុច​និមិត្ត​សញ្ញា"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"បាន​បិទ​ការ​បញ្ចូល​សំឡេង"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"គ្មាន​វិធីសាស្ត្រ​បញ្ចូល​សំឡេង​បាន​បើក។ ពិនិត្យ​មើល​ការ​កំណត់​ភាសា &amp; ការ​បញ្ចូល។"</string>
     <string name="configure_input_method" msgid="373356270290742459">"កំណត់​រចនាសម្ព័ន្ធ​វិធីសាស្ត្រ​បញ្ចូល"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"បញ្ចូល​ភាសា"</string>
     <string name="send_feedback" msgid="1780431884109392046">"ផ្ញើ​មតិ​អ្នក​ប្រើ"</string>
     <string name="select_language" msgid="3693815588777926848">"​​បញ្ចូល​ភាសា"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"ប៉ះ​ម្ដង​ទៀត​ ដើម្បី​រក្សា​ទុក"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"មាន​វចនានុក្រម"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"បើក​មតិត្រឡប់"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"ជំនួយ​​​ធ្វើ​ឲ្យ​​ប្រសើរ​ឡើង​​នៃ​កម្មវិធី​កែ​​វិធី​សាស្ត្រ​​បញ្ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​ ដោយ​ផ្ញើ​ស្ថិតិ​​ប្រើ​ប្រាស់​ ​និង​របាយការណ៍​គាំង"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"រូបរាង​ក្ដារចុច"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"អង់គ្លេស (​អង់គ្លេស)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"អង់គ្លេស (សហរដ្ឋ​អាមេរិក)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"អេស្ប៉ាញ (សហរដ្ឋ​អាមេរិក​)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"អង់គ្លេស (ចក្រភព​អង់គ្លេស) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"អង់គ្លេស (អាមេរិក) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"អេស្ប៉ាញ (អាមេរិក​) ( <xliff:g id="LAYOUT">%s</xliff:g> )"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (អក្សរ​ពេញ​)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"អង់គ្លេស (ចក្រភព​អង់គ្លេស) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"អង់គ្លេស (អាមេរិក) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"អេស្ប៉ាញ (អាមេរិក) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (អក្សរ​ពេញ)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ស៊ីរី)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ឡាតាំង)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"គ្មាន​ភាសា (អក្សរ​ក្រម)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"តាម​លំដាប់​អក្សរក្រម (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"តាម​លំដាប់​អក្សរក្រម (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"តាម​លំដាប់​អក្សរក្រម (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"តាម​លំដាប់​អក្សរក្រម (កុំព្យូទ័រ)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"សញ្ញា​អារម្មណ៍"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"ពណ៌​ចម្រុះ"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"ស"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"ខៀវ"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"រូបរាង​ក្ដារចុច"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"ស​ផ្លេកៗ​"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"ខៀវ​ខ្ចី"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"ងងឹត"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"ភ្លឺ"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"រចនាប័ទ្ម​បញ្ចូល​ផ្ទាល់ខ្លួន"</string>
     <string name="add_style" msgid="6163126614514489951">"បន្ថែម​រចនាប័ទ្ម"</string>
     <string name="add" msgid="8299699805688017798">"បន្ថែម"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"បើក"</string>
     <string name="not_now" msgid="6172462888202790482">"មិនមែន​ឥឡូវ"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"មាន​រចនាប័ទ្ម​បញ្ចូល​ដូច​គ្នា​ដូច​ហើយ៖ <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"របៀប​ការ​សិក្សា​ដែល​អាច​ប្រើ​បាន"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"ពន្យារពេល​​​ចុច​គ្រាប់​ចុច​ឲ្យ​​យូរ"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ថិរវេលា​​ញ័រ​​ពេល​ចុច​គ្រាប់ចុច"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"កម្រិត​សំឡេង​ពេល​ចុច​គ្រាប់​ចុច"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"អាន​ឯកសារ​វចនានុក្រម​ខាង​ក្រៅ"</string>
-    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"គ្មាន​ឯកសារ​វចនានុក្រម​នៅ​ក្នុង​ថត​ទាញ​យក"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"គ្មាន​ឯកសារ​វចនានុក្រម​នៅ​ក្នុង​ថត​ទាញ​យក​​"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ជ្រើស​ឯកសារ​វចនានុក្រម​ ដើម្បី​ដំឡើង"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"ពិត​ជា​ដំឡើង​ឯកសារ​នេះ​សម្រាប់ <xliff:g id="LOCALE_NAME">%s</xliff:g> ឬ?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"ពិត​ជា​ដំឡើង​ឯកសារ​នេះ​សម្រាប់ <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"មាន​កំហុស"</string>
     <string name="button_default" msgid="3988017840431881491">"លំនាំដើម"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"សូម​ស្វាគមន៍​មក​កាន់ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -193,7 +149,7 @@
     <string name="dictionary_provider_name" msgid="3027315045397363079">"កម្មវិធី​ផ្ដល់​វចនានុក្រម"</string>
     <string name="dictionary_service_name" msgid="6237472350693511448">"សេវាកម្ម​​វចនានុក្រម"</string>
     <string name="download_description" msgid="6014835283119198591">"ព័ត៌មាន​បច្ចុប្បន្នភាព​វចនានុក្រម"</string>
-    <string name="dictionary_settings_title" msgid="8091417676045693313">"ផ្នែក​បន្ថែម​វចនានុក្រម"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"ផ្នែក​បន្ថែម​វចនានុក្រម​​"</string>
     <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"វចនានុក្រម​​​​​អាច​ប្រើ​បាន"</string>
     <string name="dictionary_settings_summary" msgid="5305694987799824349">"ការ​កំណត់​សម្រាប់​វចនានុក្រម"</string>
     <string name="user_dictionaries" msgid="3582332055892252845">"វចនានុក្រម​​​អ្នក​ប្រើ"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"ផ្ទុក​ឡើងវិញ"</string>
     <string name="last_update" msgid="730467549913588780">"បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុងក្រោយ"</string>
     <string name="message_updating" msgid="4457761393932375219">"ពិនិត្យមើល​បច្ចុប្បន្នភាព"</string>
-    <string name="message_loading" msgid="8689096636874758814">"កំពុង​ផ្ទុក..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"កំពុង​ផ្ទុក..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"វចនានុក្រម​ចម្បង"</string>
-    <string name="cancel" msgid="6830980399865683324">"បោះ​បង់"</string>
+    <string name="cancel" msgid="6830980399865683324">"បោះ​បង់​"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"ការ​កំណត់"</string>
     <string name="install_dict" msgid="180852772562189365">"ដំឡើង"</string>
-    <string name="cancel_download_dict" msgid="7843340278507019303">"បោះ​បង់"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"បោះ​បង់​"</string>
     <string name="delete_dict" msgid="756853268088330054">"លុប"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"ភាសា​ដែល​បាន​ជ្រើស​នៅ​លើ​ឧបករណ៍​របស់​អ្នក​មាន​វចនានុក្រម។ &lt;br/&gt; យើង​បាន​ផ្ដល់​អនុសាសន៍ &lt;b&gt;ទាញ​យក​&lt;/b&gt;  <xliff:g id="LANGUAGE">%1$s</xliff:g> វចនានុក្រម ដើម្បី​ធ្វើ​ឲ្យ​ការ​វាយ​បញ្ចូល​របស់​អ្នក​ប្រសើរ​ឡើង។ &lt;br/&gt; &lt;br/&gt; ការ​ទាញ​យក​អាច​ចំណាយ​ពេល​​មួយ ឬ​ពីរ​នាទី​​​តាម 3G ។ ការ​​កាត់​លុយ​អាច​អនុវត្ត​ ប្រសិន​​​បើ​អ្នក​​បាន​​ &lt;b&gt;កំណត់​ទិន្នន័យ​គ្មាន​ដែន​កំណត់ &lt;/b&gt;.&lt;br/&gt; ប្រសិនបើ​​អ្នក​មិន​ប្រាកដ​​ថា​ទិន្នន័យ​អ្នក​​មិន​បាន​​កំណត់ យើង​បាន​ផ្ដល់​អនុសាសន៍​ដោយ​ស្វែងរក​ការ​ភ្ជាប់​​វ៉ាយហ្វាយ ដើម្បី​ចាប់ផ្ដើម​ទាញ​យក​ដោយ​ស្វ័យប្រវត្តិ។&lt;br/&gt; &lt;br/&gt; ព័ត៌មាន​ជំនួយ៖ អ្នក​អាច​ទាញ​យក និង​លុប​​វចនានុក្រម​​ដោយ​ចូល​ទៅ​ &lt;b&gt;ភាសា&amp; បញ្ចូល&lt;/b&gt;​នៅ​ក្នុង​ម៉ឺនុយ &lt;b&gt;ការ​កំណត់ &lt;/b&gt; របស់​ឧបករណ៍​ចល័ត។"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ភាសា​ដែល​បាន​ជ្រើស​នៅ​លើ​ឧបករណ៍​ចល័ត​មាន​វចនានុក្រម​អាច​ប្រើ​បាន។&lt;br/&gt; យើង​ផ្ដល់​អនុសាសន៍​ឲ្យ &lt;b&gt;ទាញ​យក&lt;/b&gt; វចនានុក្រម​ភាសា <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ដើម្បី​បង្កើន​បទពិសោធន៍​វាយ​បញ្ចូល​របស់​អ្នក។&lt;br/&gt; &lt;br/&gt; ការ​ទាញ​យក​អាច​ចំណាយ​ពេល​ប្រហែល​ពីរ​នាទី​នៅ​តាម 3G។ ការ​គិត​ថ្លៃ​អាច​អនុវត្ត​ប្រសិន​បើ​អ្នក​មិន​ប្រើ &lt;b&gt;ផែនការ​ទិន្នន័យ​គ្មាន​ដែន​កំណត់&lt;/b&gt;.&lt;br/&gt; បើ​អ្នក​មិន​ប្រាកដ​​ថា​ផែនការ​ណា​មួយ​ដែល​អ្នក​មាន យើង​ផ្ដល់​អនុសាសន៍​ឲ្យ​​ភ្ជាប់​វ៉ាយហ្វាយ ដើម្បី​ចាប់ផ្ដើម​ទាញ​យក​ដោយ​ស្វ័យ​ប្រវត្តិ។&lt;br/&gt; &lt;br/&gt; ជំនួយ៖ អ្នក​អាច​ទាញ​យក និង​លុប​វចនានុក្រម​ដោយ​ចូល​ទៅ​ &lt;b&gt;ភាសា &amp; ការ​បញ្ចូល&lt;/b&gt; នៅ​ក្នុង​ម៉ឺនុយ &lt;b&gt;ការ​កំណត់&lt;/b&gt; សម្រាប់​ឧបករណ៍​ចល័ត។"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"ទាញ​យក​ឥឡូវ​នេះ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> មេកាបៃ)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"ទាញ​យក​តាម​វ៉ាយហ្វាយ"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"វចនានុក្រម​​អាច​ប្រើ​បាន​​សម្រាប់ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"វចនានុក្រម​អាច​ប្រើ​បាន​សម្រាប់ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"ចុច​ ដើម្បី​ពិនិត្យ​មើល​ឡើង​​វិញ​ និង​ទាញ​យក"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"ទាញ​យក៖ ការ​​ស្នើ​សម្រាប់ <xliff:g id="LANGUAGE">%1$s</xliff:g> នឹង​បញ្ចប់​ឆាប់ៗ។"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ទាញ​យក៖ ការ​ស្នើ​សម្រាប់ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> នឹង​រួចរាល់​ក្នុង​ពេល​ឆាប់ៗ​នេះ។"</string>
     <string name="version_text" msgid="2715354215568469385">"កំណែ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"បន្ថែម"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"បន្ថែម​ទៅ​វចនានុក្រម"</string>
@@ -229,7 +186,7 @@
     <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"ពាក្យ៖"</string>
     <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"ផ្លូវកាត់​៖"</string>
     <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"ភាសា៖"</string>
-    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"វាយ​បញ្ចូល​ពាក្យ"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"វាយ​បញ្ចូល​ពាក្យ​"</string>
     <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ផ្លូវកាត់​ជា​ជម្រើស"</string>
     <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"កែ​ពាក្យ"</string>
     <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"កែ"</string>
diff --git a/java/res/values-kn-rIN/strings-action-keys.xml b/java/res/values-kn-rIN/strings-action-keys.xml
new file mode 100644
index 0000000..d54cbda
--- /dev/null
+++ b/java/res/values-kn-rIN/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"ಹೋಗು"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"ಮುಂದೆ"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"ಹಿಂದೆ"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"ಮುಗಿದಿದೆ"</string>
+    <string name="label_send_key" msgid="482252074224462163">"ಕಳುಹಿಸು"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"ಹುಡುಕಾಟ"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"ವಿರಾಮಗೊಳಿಸು"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"ನಿರೀಕ್ಷಿಸು"</string>
+</resources>
diff --git a/java/res/values-kn-rIN/strings-appname.xml b/java/res/values-kn-rIN/strings-appname.xml
new file mode 100644
index 0000000..180915a
--- /dev/null
+++ b/java/res/values-kn-rIN/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android ಕೀಬೋರ್ಡ್ (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android ಕಾಗುಣಿತ ಪರೀಕ್ಷಕ (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android ಕೀಬೋರ್ಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android ಕಾಗುಣಿತ ಪರೀಕ್ಷಕ ಸೆಟ್ಟಿಂಗ್‌ಗಳು (AOSP)"</string>
+</resources>
diff --git a/java/res/values-kn-rIN/strings-config-important-notice.xml b/java/res/values-kn-rIN/strings-config-important-notice.xml
new file mode 100644
index 0000000..1ac5a29
--- /dev/null
+++ b/java/res/values-kn-rIN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"ಸಲಹೆಗಳನ್ನು ಸುಧಾರಿಸಲು ನಿಮ್ಮ ಸಂವಹನಗಳು ಮತ್ತು ಟೈಪ್ ಮಾಡಿದ ಡೇಟಾದಿಂದ ತಿಳಿಯಿರಿ"</string>
+</resources>
diff --git a/java/res/values-kn-rIN/strings-letter-descriptions.xml b/java/res/values-kn-rIN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..90e7d2c
--- /dev/null
+++ b/java/res/values-kn-rIN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ಫೆಮಿನೈನ್ ಆರ್ಡಿನಲ್ ಸೂಚಕ"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"ಮೈಕ್ರೋ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"ಫೆಮಿನೈನ್ ಆರ್ಡಿನಲ್ ಸೂಚಕ"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"ಶಾರ್ಪ್ S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, ಮೊನಚು"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, ಡಯಾರೆಸಿಸ್"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ಮೇಲೆ ರಿಂಗ್"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ಲಿಗೇಚರ್"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, ಡಯಾರೆಸಿಸ್"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, ಡಯಾರೆಸಿಸ್"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eನೇ"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, ಡಯಾರೆಸಿಸ್"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, ಸ್ಟ್ರೋಕ್"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, ಡಯಾರೆಸಿಸ್"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"ಥಾರ್ನ್"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, ಡಯಾರೆಸಿಸ್"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, ಮ್ಯಾಕ್ರಾನ್"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, ಬ್ರೀವ್"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ಒಗೊನೆಕ್"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, ಮೇಲೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, ಸ್ಟ್ರೋಕ್"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, ಮ್ಯಾಕ್ರಾನ್"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, ಬ್ರೀವ್"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, ಮೇಲೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ಒಗೊನೆಕ್"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, ಬ್ರೀವ್"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, ಮೇಲೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, ಸ್ಟ್ರೋಕ್"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, ಮ್ಯಾಕ್ರಾನ್"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, ಬ್ರೀವ್"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ಒಗೊನೆಕ್"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"ಡಾಟ್ ಇಲ್ಲದ I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ಲಿಗೇಚರ್"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"ಕ್ರಾ"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, ಮಧ್ಯದ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, ಸ್ಟ್ರೋಕ್"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, ಅಫಾಸ್ಟ್ರಫಿಯಿಂದ ಮುಂದುವರೆದ"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"ಇಂಗ್ಲಿ"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, ಮ್ಯಾಕ್ರಾನ್"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, ಬ್ರೀವ್"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, ಡಬಲ್ ಅಕ್ಯೂಟ್"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ಲಿಗೇಚರ್"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, ಸೆಡಿಲಾ"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, ಸ್ಟ್ರೋಕ್"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, ಮ್ಯಾಕ್ರಾನ್"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, ಬ್ರೀವ್"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ಮೇಲೆ ರಿಂಗ್"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, ಡಬಲ್ ಅಕ್ಯೂಟ್"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ಒಗೊನೆಕ್"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, ಬಾಗಿರುವ"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, ಮೇಲೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, ಕ್ಯಾರನ್"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"ದೀರ್ಘ S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, ಕೋಡುಗಳು"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, ಕೋಡು"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, ಕೆಳಗೆ ಅಲ್ಪವಿರಾಮ"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, ಕೆಳಗೆ ಅಲ್ಪವಿರಾಮ"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"ಸ್ಕ್ವಾ"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, ಬಾಗಿರುವ ಮತ್ತು ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, ಬಾಗಿರುವ ಮತ್ತು ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, ಬಾಗಿರುವ ಮತ್ತು ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, ಬಾಗಿರುವ ಮತ್ತು ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, ಬಾಗಿರುವ ಮತ್ತು ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, ಬ್ರೀವ್ ಮತ್ತು ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, ಬ್ರೀವ್ ಮತ್ತು ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, ಬ್ರೀವ್ ಮತ್ತು ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, ಬ್ರೀವ್ ಮತ್ತು ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, ಬ್ರೀವ್ ಮತ್ತು ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, ಬಾಗಿರುವ ಮತ್ತು ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, ಬಾಗಿರುವ ಮತ್ತು ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, ಬಾಗಿರುವ ಮತ್ತು ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, ಬಾಗಿರುವ ಮತ್ತು ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, ಬಾಗಿರುವ ಮತ್ತು ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, ಬಾಗಿರುವ ಮತ್ತು ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, ಬಾಗಿರುವ ಮತ್ತು ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, ಬಾಗಿರುವ ಮತ್ತು ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, ಬಾಗಿರುವ ಮತ್ತು ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, ಬಾಗಿರುವ ಮತ್ತು ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, ಕೋಡು ಮತ್ತು ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, ಕೋಡು ಮತ್ತು ಸಮಾಧಿ"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, ಕೋಡು ಮತ್ತು ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, ಕೋಡು ಮತ್ತು ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, ಕೋಡು ಮತ್ತು ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, ಕೋಡು ಮತ್ತು ಮೊನಚಾದ"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, ಕೋಡು ಮತ್ತು ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, ಕೋಡು ಮತ್ತು ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, ಕೋಡು ಮತ್ತು ಟಿಲ್ಡ್"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, ಕೋಡು ಮತ್ತು ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, ಗ್ರೇವ್"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, ಕೆಳಗೆ ಡಾಟ್"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, ಮೇಲೆ ಹುಕ್"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, ಟಿಲ್ಡ್"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"ತಲೆಕೆಳಗಾದ ಆಶ್ಚರ್ಯಸೂಚಕ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"ಎಡಕ್ಕೆ ತಿರುಗಿದ ಡಬಲ್ ಕೋನದ ಉಲ್ಲೇಖನ ಗುರುತು"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"ಮಧ್ಯ ಡಾಟ್"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"ಸೂಪರ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಒಂದು"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"ಬಲಕ್ಕೆ ತಿರುಗಿದ ಎರಡು ಕೋನದ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"ತಲೆಕೆಳಗಾದ ಪ್ರಶ್ನಾರ್ಥಕ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"ಎಡ ಏಕ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"ಬಲ ಏಕ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"ಏಕೈಕ ಕೆಳಗಿನ-9 ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"ಎಡ ಡಬಲ್ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"ಬಲ ಡಬಲ್ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"ಡ್ಯಾಗರ್"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"ಡಬಲ್ ಡ್ಯಾಗರ್"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"ಪರ್ ಮಿಲ್ಲೆ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"ಪ್ರೈಮ್"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"ಡಬಲ್ ಪ್ರೈಮ್"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"ಏಕ ಎಡಕ್ಕೆ ತಿರುಗಿದ ಕೋನದ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"ಏಕ ಬಲಕ್ಕೆ ತಿರುಗಿದ ಕೋನದ ಉದ್ಧರಣ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"ಸೂಪರ್‌ಸ್ಕ್ರಿಪ್ಟ್ ನಾಲ್ಕು"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"ಸೂಪರ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಲ್ಯಾಟಿನ್ ಸಣ್ಣ ಅಕ್ಷರ n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"ಪೆಸೊ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"ಆರೈಕೆ"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"ಬಲಭಾಗದ ಬಾಣ"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"ಕೆಳಮುಖವಾಗಿರುವ ಬಾಣ"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"ಖಾಲಿ ಸೆಟ್"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"ವೃದ್ಧಿ"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"ಅದಕ್ಕಿಂತ ಕಡಿಮೆ ಅಥವಾ ಸಮ"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಥವಾ ಸಮ"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"ಬ್ಲ್ಯಾಕ್ ಸ್ಟಾರ್"</string>
+</resources>
diff --git a/java/res/values-kn-rIN/strings-talkback-descriptions.xml b/java/res/values-kn-rIN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..15cef7c
--- /dev/null
+++ b/java/res/values-kn-rIN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"ಪಾಸ್‌ವರ್ಡ್ ಕೀಗಳನ್ನು ಗಟ್ಟಿಯಾಗಿ ಕೇಳಲು ಹೆಡ್‌ಸೆಟ್‌ ಪ್ಲಗ್ ಇನ್ ಮಾಡಿ."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"ಪ್ರಸ್ತುತ ಪದವು %s ಆಗಿದೆ"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"ಯಾವುದೇ ಪಠ್ಯವನ್ನು ನಮೂದಿಸಿಲ್ಲ"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ನಿಂದ <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> ಆಗಿ <xliff:g id="KEY_NAME">%1$s</xliff:g> ಸರಿಪಡಿಸುತ್ತದೆ"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ಸ್ವಯಂ ತಿದ್ದುಪಡಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"ಅಪರಿಚಿತ ಅಕ್ಷರ"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"ಇನ್ನಷ್ಟು ಸಂಕೇತಗಳು"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"ಸಂಕೇತಗಳು"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"ಅಳಿಸು"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"ಸಂಕೇತಗಳು"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"ಪತ್ರಗಳು"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"ಸಂಖ್ಯೆಗಳು"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ಟ್ಯಾಬ್"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"ಸ್ಪೇಸ್"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ಧ್ವನಿ ಇನ್‌ಪುಟ್‌"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ಎಮೋಜಿ"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"ಹಿಂತಿರುಗು"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"ಹುಡುಕು"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ಚುಕ್ಕೆ"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ಭಾಷೆ ಬದಲಾಯಿಸಿ"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"ಮುಂದೆ"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"ಹಿಂದೆ"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ಸಕ್ರಿಯಗೊಂಡಿದೆ"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"ಸಂಕೇತಗಳ ಮೋಡ್"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"ಹೆಚ್ಚು ಸಂಕೇತಗಳ ಮೋಡ್"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"ಅಕ್ಷರಗಳ ಮೋಡ್"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ಫೋನ್ ಮೋಡ್"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ಫೋನ್ ಸಂಕೇತಗಳ ಮೋಡ್"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"ಕೀಬೋರ್ಡ್ ಮರೆಮಾಡಲಾಗಿದೆ"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> ಕೀಬೋರ್ಡ್ ತೋರಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ದಿನಾಂಕ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ದಿನಾಂಕ ಮತ್ತು ಸಮಯ"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ಇಮೇಲ್"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"ಸಂಖ್ಯೆ"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ಫೋನ್"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ಪಠ್ಯ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ಸಮಯ"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"ಇತ್ತೀಚಿನವುಗಳು"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"ಜನರು"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ವಸ್ತುಗಳು"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ಪ್ರಕೃತಿ"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ಸ್ಥಳಗಳು"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"ಸಂಕೇತಗಳು"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ಎಮೋಟಿಕಾನ್‌ಗಳು"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"ಕ್ಯಾಪಿಟಲ್ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"ಕ್ಯಾಪಿಟಲ್ I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"ಕ್ಯಾಪಿಟಲ್ I, ಮೇಲೆ ಡಾಟ್"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"ಅಪರಿಚಿತ ಚಿಹ್ನೆ"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"ಅಪರಿಚಿತ ಎಮೋಜಿ"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"ಪರ್ಯಾಯ ಅಕ್ಷರಗಳು ಲಭ್ಯ"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"ಪರ್ಯಾಯ ಅಕ್ಷರಗಳನ್ನು ವಜಾಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ಪರ್ಯಾಯ ಸಲಹೆಗಳು ಲಭ್ಯ"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"ಪರ್ಯಾಯ ಸಲಹೆಗಳನ್ನು ವಜಾಗೊಳಿಸಲಾಗಿದೆ"</string>
+</resources>
diff --git a/java/res/values-kn-rIN/strings.xml b/java/res/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..6cc78ec
--- /dev/null
+++ b/java/res/values-kn-rIN/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"ಇನ್‌ಪುಟ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"ಸಂಪರ್ಕ ಹೆಸರುಗಳನ್ನು ಹುಡುಕು"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವು ನಿಮ್ಮ ಸಂಪರ್ಕ ಪಟ್ಟಿಯ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"ಕೀಲಿಯನ್ನು ಒತ್ತಿದಾಗ ವೈಬ್ರೇಷನ್‌"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"ಕೀಲಿಯನ್ನು ಒತ್ತಿದಾಗ ಶಬ್ದಮಾಡು"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"ಕೀ ಒತ್ತಿದಾಗ ಪಾಪ್ ಅಪ್‌ ಮಾಡು"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ಇತರೆ ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳಿಗೆ ಬದಲಾಯಿಸು"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ಭಾಷಾ ಬದಲಾವಣೆ ಕೀಯು ಇತರೆ ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಕೂಡ ಒಳಗೊಂಡಿರುತ್ತದೆ"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"ಭಾಷೆ ಬದಲಾವಣೆ ಕೀ"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"ಬಹು ಇನ್‌ಪುಟ್ ಭಾಷೆಗಳು ಸಕ್ರಿಯಗೊಂಡಾಗ ತೋರಿಸು"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"ಸ್ಲೈಡ್ ಸೂಚಕ ತೋರಿಸು"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Shift ಅಥವಾ ಚಿಹ್ನೆ ಕೀಗಳಿಂದ ಸ್ಲೈಡ್ ಮಾಡುವಾಗ ದೃಶ್ಯ ಕ್ಯೂ ಪ್ರದರ್ಶಿಸು"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"ಕೀ ಪಾಪ್‌ಅಪ್‌ನ ವಜಾ ವಿಳಂಬ"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ಯಾವುದೇ ವಿಳಂಬವಿಲ್ಲ"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ಡೀಫಾಲ್ಟ್"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>ಮಿ.ಸೆ."</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"ಸಿಸ್ಟಂ ಡೀಫಾಲ್ಟ್"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"ಸಂಪರ್ಕ ಹೆಸರುಗಳನ್ನು ಸೂಚಿಸು"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"ಸಲಹೆಗಳು ಮತ್ತು ತಿದ್ದುಪಡಿಗಳಿಗಾಗಿ ಸಂಪರ್ಕಗಳಲ್ಲಿನ ಹೆಸರುಗಳನ್ನು ಬಳಸಿ"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"ವೈಯುಕ್ತೀಕರಿಸಿದ ಸಲಹೆಗಳು"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಸುಧಾರಿಸಿ"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"ಡಬಲ್-ಸ್ಪೇಸ್ ವಿರಾಮ"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"ಸ್ಪೇಸ್‌ಬಾರ್ ಮೇಲೆ ಡಬಲ್ ಟ್ಯಾಪ್ ಮಾಡುವುದರಿಂದ ಸ್ಪೇಸ್ ನಂತರ ವಿರಾಮವನ್ನು ಸೇರಿಸುತ್ತದೆ"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"ಸ್ವಯಂ-ದೊಡ್ಡಕ್ಷರ"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"ಪ್ರತಿ ವಾಕ್ಯದ ಮೊದಲ ಅಕ್ಷರವನ್ನು ದೊಡ್ಡಕ್ಷರಗೊಳಿಸು"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"ವೈಯಕ್ತಿಕ ನಿಘಂಟು"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"ಆಡ್-ಆನ್ ನಿಘಂಟುಗಳು"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"ಮುಖ್ಯ ನಿಘಂಟು"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"ತಿದ್ದುಪಡಿ ಸಲಹೆಗಳನ್ನು ತೋರಿಸು"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"ಟೈಪ್ ಮಾಡುವಾಗ ಸಲಹೆ ನೀಡಿದ ಪದಗಳನ್ನು ಪ್ರದರ್ಶಿಸು"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"ಯಾವಾಗಲೂ ತೋರಿಸು"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"ಪೋಟ್ರೇಟ್ ಮೋಡ್‌ನಲ್ಲಿ ತೋರಿಸು"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ಯಾವಾಗಲೂ ಮರೆಮಾಡು"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"ಅಕ್ಷೇಪಾರ್ಹ ಪದಗಳನ್ನು ನಿರ್ಬಂಧಿಸು"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"ಸಂಭಾವ್ಯ ಆಕ್ಷೇಪಾರ್ಹ ಪದಗಳ ಸಲಹೆ ನೀಡದಿರು"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"ಸ್ವಯಂ-ತಿದ್ದುಪಡಿ"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿದ ಪದಗಳನ್ನು ಸ್ಪೇಸ್‌ಬಾರ್ ಮತ್ತು ವಿರಾಮಚಿಹ್ನೆಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸರಿಪಡಿಸುತ್ತವೆ"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ಆಫ್ ಆಗಿದೆ"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"ಸಾಧಾರಣ"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"ಆಕ್ರಮಣಶೀಲ"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"ಹೆಚ್ಚು ಆಕ್ರಮಣಶೀಲ"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"ಮುಂದಿನ ಪದದ ಸಲಹೆಗಳು"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"ಸಲಹೆಗಳನ್ನು ಮಾಡುವಾಗ ಹಿಂದಿನ ಪದವನ್ನು ಬಳಸು"</string>
+    <string name="gesture_input" msgid="826951152254563827">"ಗೆಶ್ಚರ್ ಟೈಪಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸು"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"ಅಕ್ಷರಗಳ ಮೇಲೆ ಸರಿಸುವ ಮೂಲಕ ಪದವೊಂದನ್ನು ನಮೂದಿಸಿ"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"ಗೆಶ್ಚರ್ ಟ್ರಯಲ್ ತೋರಿಸು"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ಡೈನಮಿಕ್ ಫ್ಲೋಟಿಂಗ್ ಪೂರ್ವವೀಕ್ಷಣೆ"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ಗೆಸ್ಟರ್ ಮಾಡುವಾಗ ಸೂಚಿಸಿದ ಪದವನ್ನು ನೋಡಿ"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"ಪದಗುಚ್ಛದ ಗೆಶ್ಚರ್"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ಸ್ಪೇಸ್ ಕೀಗೆ ಗ್ಲೈಡ್ ಮಾಡುವ ಮೂಲಕ ಗೆಶ್ಚರ್‌ಗಳ ಅವಧಿಯಲ್ಲಿ ಅಂತರ ನಮೂದಿಸಿ"</string>
+    <string name="voice_input" msgid="3583258583521397548">"ಧ್ವನಿ ಇನ್‌ಪುಟ್ ಕೀ"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"ಯಾವುದೇ ಧ್ವನಿ ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿಲ್ಲ. ಭಾಷೆ &amp; ಇನ್‌ಪುಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"ಇನ್‌ಪುಟ್ ಭಾಷೆಗಳು"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸಿ"</string>
+    <string name="select_language" msgid="3693815588777926848">"ಇನ್‌ಪುಟ್ ಭಾಷೆಗಳು"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"ಉಳಿಸಲು ಮತ್ತೆ ಸ್ಪರ್ಶಿಸಿ"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"ನಿಘಂಟು ಲಭ್ಯವಿದೆ"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"ಕೀಬೋರ್ಡ್ ಥೀಮ್"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ಇಂಗ್ಲಿಷ್ (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ಇಂಗ್ಲಿಷ್ (US)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"ಸ್ಪ್ಯಾನಿಷ್ (US)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ಇಂಗ್ಲಿಷ್ (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ಇಂಗ್ಲಿಷ್ (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ಸ್ಪ್ಯಾನಿಷ್ (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ಸಾಂಪ್ರದಾಯಿಕ)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ಸಿರಿಲಿಕ್)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ಲ್ಯಾಟಿನ್)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"ಯಾವುದೇ ಭಾಷೆಯಿಲ್ಲ (ವರ್ಣಮಾಲೆ)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"ವರ್ಣಮಾಲೆ (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"ವರ್ಣಮಾಲೆ (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"ವರ್ಣಮಾಲೆ (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"ವರ್ಣಮಾಲೆ (ಡ್ವೊರಕ್)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"ವರ್ಣಮಾಲೆ (ಕೋಲ್‌ಮ್ಯಾಕ್)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"ವರ್ಣಮಾಲೆ (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"ಎಮೋಜಿ"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"ಕಸ್ಟಮ್ ಇನ್‌ಪುಟ್ ಶೈಲಿಗಳು"</string>
+    <string name="add_style" msgid="6163126614514489951">"ಶೈಲಿ ಸೇರಿಸು"</string>
+    <string name="add" msgid="8299699805688017798">"ಸೇರಿಸು"</string>
+    <string name="remove" msgid="4486081658752944606">"ತೆಗೆದುಹಾಕಿ"</string>
+    <string name="save" msgid="7646738597196767214">"ಉಳಿಸಿ"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"ಭಾಷೆ"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"ಲೇಔಟ್"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"ನಿಮ್ಮ ಕಸ್ಟಮ್ ಇನ್‌ಪುಟ್ ಶೈಲಿಯನ್ನು ನೀವು ಬಳಸಲು ಪ್ರಾರಂಭಿಸುವ ಮುನ್ನ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕಾದ ಅಗತ್ಯವಿದೆ. ಇದೀಗ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಾ?"</string>
+    <string name="enable" msgid="5031294444630523247">"ಸಕ್ರಿಯಗೊಳಿಸು"</string>
+    <string name="not_now" msgid="6172462888202790482">"ಸದ್ಯಕ್ಕೆ ಬೇಡ"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ಅದೇ ರೀತಿಯ ಇನ್‌ಪುಟ್ ಶೈಲಿಯು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"ಕೀಯ ದೀರ್ಘ ಒತ್ತುವ ವಿಳಂಬ"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ಕೀಒತ್ತುವ ವೈಬ್ರೇಷನ್‌‌ ಅವಧಿ"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"ಕೀಒತ್ತುವ ಶಬ್ದದ ವಾಲ್ಯೂಮ್"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"ಬಾಹ್ಯ ನಿಘಂಟು ಫೈಲ್ ಓದಿ"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ಡೌನ್‌ಲೋಡ್ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಯಾವುದೇ ನಿಘಂಟು ಫೈಲ್‌ಗಳಿಲ್ಲ"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ಸ್ಥಾಪಿಸಬೇಕಾದ ನಿಘಂಟು ಫೈಲ್ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> ಗಾಗಿ ಈ ಫೈಲ್‌ ಅನ್ನು ನಿಜಕ್ಕೂ ಸ್ಥಾಪಿಸುವುದೇ?"</string>
+    <string name="error" msgid="8940763624668513648">"ದೋಷ ಉಂಟಾಗಿದೆ"</string>
+    <string name="button_default" msgid="3988017840431881491">"ಡೀಫಾಲ್ಟ್"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಗೆ ಸುಸ್ವಾಗತ"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"ಗೆಶ್ಚರ್ ಟೈಪಿಂಗ್‌ನೊಂದಿಗೆ"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"ಪ್ರಾರಂಭ"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"ಮುಂದಿನ ಹಂತ"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"ನಿಮ್ಮ ಭಾಷೆ &amp; ಇನ್‌ಪುಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ದಯವಿಟ್ಟು \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅದನ್ನು ಚಾಲನೆ ಮಾಡಲು ಅದು ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಅನ್ನು ಈಗಾಗಲೇ ನಿಮ್ಮ ಭಾಷೆ &amp; ಇನ್‌ಪುಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಹೀಗಾಗಿ ಈ ಹಂತ ಮುಗಿದಿದೆ. ಮುಂದಿನದಕ್ಕೆ ತೆರಳಿ!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸು"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ಗೆ ಬದಲಾಯಿಸಿ"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"ಮುಂದೆ, ನಿಮ್ಮ ಸಕ್ರಿಯ ಪಠ್ಯ-ಇನ್‌ಪುಟ್ ವಿಧಾನವಾಗಿ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಬದಲಾಯಿಸು"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"ಅಭಿನಂದನೆಗಳು, ನೀವೀಗ ಎಲ್ಲವನ್ನೂ ಹೊಂದಿಸಿರುವಿರಿ!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"ಈಗ ನೀವು <xliff:g id="APPLICATION_NAME">%s</xliff:g> ನೊಂದಿಗೆ ನಿಮ್ಮ ಎಲ್ಲ ಮೆಚ್ಚಿನ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಟೈಪ್ ಮಾಡಬಹುದು."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"ಹೆಚ್ಚುವರಿ ಭಾಷೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡು"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"ಮುಕ್ತಾಯಗೊಂಡಿದೆ"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"ಅಪ್ಲಿಕೇಶನ್ ಐಕಾನ್ ತೋರಿಸು"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"ಲಾಂಚರ್‌ನಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಐಕಾನ್ ಪ್ರದರ್ಶಿಸು"</string>
+    <string name="app_name" msgid="6320102637491234792">"ನಿಘಂಟು ಪೂರೈಕೆದಾರರು"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"ನಿಘಂಟು ಪೂರೈಕೆದಾರರು"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"ನಿಘಂಟು ಸೇವೆ"</string>
+    <string name="download_description" msgid="6014835283119198591">"ನಿಘಂಟು ನವೀಕರಣ ಮಾಹಿತಿ"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"ಆಡ್-ಆನ್ ನಿಘಂಟುಗಳು"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"ನಿಘಂಟು ಲಭ್ಯವಿದೆ"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"ನಿಘಂಟುಗಳಿಗಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"ಬಳಕೆದಾರರ ನಿಘಂಟುಗಳು"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"ಬಳಕೆದಾರರ ನಿಘಂಟು"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"ನಿಘಂಟು ಲಭ್ಯವಿದೆ"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"ಪ್ರಸ್ತುತವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"ಸ್ಥಾಪಿಸಲಾಗಿದೆ"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"ನಿಘಂಟು ಸೇವೆಗೆ ಸಂಪರ್ಕಗೊಳಿಸುವಾಗ ಸಮಸ್ಯೆ"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"ನಿಘಂಟುಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"ರೀಫ್ರೆಶ್ ಮಾಡಿ"</string>
+    <string name="last_update" msgid="730467549913588780">"ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಿರುವುದು"</string>
+    <string name="message_updating" msgid="4457761393932375219">"ನವೀಕರಣಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ"</string>
+    <string name="message_loading" msgid="5638680861387748936">"ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"ಮುಖ್ಯ ನಿಘಂಟು"</string>
+    <string name="cancel" msgid="6830980399865683324">"ರದ್ದುಮಾಡು"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="install_dict" msgid="180852772562189365">"ಸ್ಥಾಪಿಸು"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"ರದ್ದುಮಾಡು"</string>
+    <string name="delete_dict" msgid="756853268088330054">"ಅಳಿಸು"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ನಿಮ್ಮ ಮೊಬೈಲ್ ಸಾಧನದಲ್ಲಿ ಆಯ್ಕೆ ಮಾಡಲಾದ ಭಾಷೆಗೆ ನಿಘಂಟು ಲಭ್ಯವಿದೆ.&lt;br/&gt; ನಿಮ್ಮ ಟೈಪ್ ಮಾಡುವ ಅನುಭವದ ಸುಧಾರಣೆಗೆ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ನಿಘಂಟು &lt;b&gt;ಡೌನ್‌ಲೋಡ್&lt;/b&gt; ಮಾಡಿಕೊಳ್ಳಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.&lt;br/&gt; &lt;br/&gt; ಡೌನ್‌ಲೋಡ್‌ಗೆ 3G ಯಲ್ಲಿ ಒಂದು ಅಥವಾ ಎರಡು ನಿಮಿಷ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ನೀವು &lt;b&gt;ಅನಿಯಮಿತ ಡೇಟಾ ಪ್ಲ್ಯಾನ್&lt;/b&gt; ಹೊಂದಿಲ್ಲದೆ ಇದ್ದರೆ ಶುಲ್ಕ ಅನ್ವಯಿಸಬಹುದು, ನಿಮ್ಮ ಡೇಟಾ ಪ್ಲ್ಯಾನ್ ಯಾವುದು ಅನ್ನುವುದರ ಕುರಿತು ನಿಮಗೆ ಖಾತ್ರಿಯಿಲ್ಲವಾದರೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಪ್ರಾರಂಭಿಸುವುದಕ್ಕಾಗಿ Wi-Fi ಸಂಪರ್ಕ ಹುಡುಕಲು ನಾವು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ.&lt;br/&gt; &lt;br/&gt; ಸಲಹೆ: ನಿಮ್ಮ ಮೊಬೈಲ್‌ ಸಾಧನದ ಮೆನುನಲ್ಲಿ &lt;b&gt;ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ&lt;/b&gt; &lt;b&gt;ಭಾಷೆ &amp; ಇನ್‌ಪುಟ್‌ಗೆ&lt;/b&gt; ಹೋಗುವ ಮೂಲಕ ನಿಘಂಟುಗಳನ್ನು ನೀವು ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು ಮತ್ತು ತೆಗೆದುಹಾಕಬಹುದು."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"ಇದೀಗ ಡೌನ್‌ಲೋಡ್ ಮಾಡು (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi ಮೂಲಕ ಡೌನ್‌ಲೋಡ್ ಮಾಡು"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ಗೆ ನಿಘಂಟು ಲಭ್ಯವಿದೆ"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"ವಿಮರ್ಶಿಸಲು ಮತ್ತು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಒತ್ತಿರಿ"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ಗೆ ಸಲಹೆಗಳು ಶೀಘ್ರವೇ ಸಿದ್ಧಗೊಳ್ಳಲಿವೆ."</string>
+    <string name="version_text" msgid="2715354215568469385">"ಆವೃತ್ತಿ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"ಸೇರಿಸು"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"ನಿಘಂಟಿಗೆ ಸೇರಿಸಿ"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"ನುಡಿಗಟ್ಟು"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"ಕಡಿಮೆ ಆಯ್ಕೆಗಳು"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ಸರಿ"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"ಪದ:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"ಶಾರ್ಟ್‌ಕಟ್:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"ಭಾಷೆ:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"ಪದವನ್ನು ಟೈಪ್ ಮಾಡಿ"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ಐಚ್ಛಿಕ ಶಾರ್ಟ್‌ಕಟ್"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"ಪದವನ್ನು ಸಂಪಾದಿಸಿ"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"ಸಂಪಾದಿಸಿ"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"ಅಳಿಸು"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"ಬಳಕೆದಾರರ ನಿಘಂಟಿನಲ್ಲಿ ನೀವು ಯಾವುದೇ ಪದಗಳನ್ನು ಹೊಂದಿಲ್ಲ. ಸೇರಿಸು (+) ಬಟನ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸುವ ಮೂಲಕ ಪದವೊಂದನ್ನು ಸೇರಿಸಿ."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"ಎಲ್ಲ ಭಾಷೆಗಳಿಗೆ"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"ಇನ್ನಷ್ಟು ಭಾಷೆಗಳು…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"ಅಳಿಸು"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-ko/strings-action-keys.xml b/java/res/values-ko/strings-action-keys.xml
index 04febee..f2e2c44 100644
--- a/java/res/values-ko/strings-action-keys.xml
+++ b/java/res/values-ko/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"이전"</string>
     <string name="label_done_key" msgid="7564866296502630852">"완료"</string>
     <string name="label_send_key" msgid="482252074224462163">"전송"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"검색"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"중지"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"대기"</string>
 </resources>
diff --git a/java/res/values-ko/strings-config-important-notice.xml b/java/res/values-ko/strings-config-important-notice.xml
new file mode 100644
index 0000000..47936ef
--- /dev/null
+++ b/java/res/values-ko/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"사용자의 대화 내용과 입력한 데이터를 통해 단어 추천의 정확도를 개선합니다."</string>
+</resources>
diff --git a/java/res/values-ko/strings-letter-descriptions.xml b/java/res/values-ko/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ac7ee87
--- /dev/null
+++ b/java/res/values-ko/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"여성형 서수 표시기"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"마이크로 기호"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"남성형 서수 표시기"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"샤프 에스"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"에이, 그레이브"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"에이, 어큐트"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"에이, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"에이, 틸드"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"에이, 디애레시스"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"에이, 위 링"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"에이, 이, 리가츄어"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"씨, 세딜라"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"이, 그레이브"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"이, 어큐트"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"이, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"이, 디애레시스"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"아이, 그레이브"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"아이, 어큐트"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"아이, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"아이, 디애레시스"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"에쓰"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"엔, 틸드"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"오, 그레이브"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"오, 어큐트"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"오, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"오, 틸드"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"오, 디애레시스"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"오, 스트로크"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"유, 그레이브"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"유, 어큐트"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"유, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"유, 디애레시스"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"와이, 어큐트"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"쏜"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"와이, 디애레시스"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"에이, 매크론"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"에이, 브레베"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"에이, 오고넥"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"씨, 어큐트"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"씨, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"씨, 위 닷"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"씨, 캐론"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"디, 캐론"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"디, 스트로크"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"이, 매크론"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"이, 브레베"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"이, 위 닷"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"이, 오고넥"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"이, 캐론"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"지, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"지, 브레베"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"지, 위 닷"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"지, 세딜라"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"에이치, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"에이치, 스트로크"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"아이, 틸드"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"아이, 매크론"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"아이, 브레베"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"아이, 오고넥"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"닷리스 아이"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"아이, 제이, 리가츄어"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"제이, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"케이, 세딜라"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"크라"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"엘, 어큐트"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"엘, 세딜라"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"엘, 캐론"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"엘, 가운데 닷"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"엘, 스트로크"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"엔, 어큐트"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"엔, 세딜라"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"엔, 캐론"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"엔, 앞 아포스트로피"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"잉"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"오, 매크론"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"오, 브레베"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"오, 더블 어큐트"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"오, 이, 리가츄어"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"알, 어큐트"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"알, 세딜라"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"알, 캐론"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"에스, 어큐트"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"에스, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"에스, 세딜라"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"에스, 캐론"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"티, 세딜라"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"티, 캐론"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"티, 스트로크"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"유, 틸드"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"유, 매크론"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"유, 브레베"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"유, 위 링"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"유, 더블 어큐트"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"유, 오고넥"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"더블유, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"와이, 서컴플렉스"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"지, 어큐트"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"지, 위 닷"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"지, 캐론"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"롱 에스"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"오, 혼"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"유, 혼"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"에스, 아래 콤마"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"티, 아래 콤마"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"슈와"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"에이, 아래 닷"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"에이, 위 후크"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"에이, 서컴플렉스 및 어큐트"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"에이, 서컴플렉스 및 그레이브"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"에이, 서컴플렉스 및 위 후크"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"에이, 서컴플렉스 및 틸드"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"에이, 서컴플렉스 및 아래 닷"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"에이, 브레베 및 어큐트"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"에이, 브레베 및 그레이브"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"에이, 브레베 및 위 후크"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"에이, 브레베 및 틸드"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"에이, 브레베 및 아래 닷"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"이, 아래 닷"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"이, 위 후크"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"이, 틸드"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"이, 서컴플렉스 및 어큐트"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"이, 서컴플렉스 및 그레이브"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"이, 서컴플렉스 및 위 후크"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"이, 서컴플렉스 및 틸드"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"이, 서컴플렉스 및 아래 닷"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"아이, 위 후크"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"아이, 아래 닷"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"오, 아래 닷"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"오, 위 후크"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"오, 서컴플렉스 및 어큐트"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"오, 서컴플렉스 및 그레이브"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"오, 서컴플렉스 및 위 후크"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"오, 서컴플렉스 및 틸드"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"오, 서컴플렉스 및 아래 닷"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"오, 혼 및 어큐트"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"오, 혼 및 그레이브"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"오, 혼 및 위 후크"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"오, 혼 및 틸드"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"오, 혼 및 아래 닷"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"유, 아래 닷"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"유, 위 후크"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"유, 혼 및 어큐트"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"유, 혼 및 그레이브"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"유, 혼 및 위 후크"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"유, 혼 및 틸드"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"유, 혼 및 아래 닷"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"와이, 그레이브"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"와이, 아래 닷"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"와이, 위 후크"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"와이, 틸드"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"반전 느낌표"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"왼쪽 겹꺾쇠표"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"가운뎃점"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"슈퍼스크립트 1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"오른쪽 겹꺾쇠표"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"반전 물음표"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"왼쪽 작은따옴표"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"오른쪽 작은따옴표"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"쉼표"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"왼쪽 큰따옴표"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"오른쪽 큰따옴표"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"단검표"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"2중 단검표"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"퍼밀 기호"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"프라임"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"더블 프라임"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"왼쪽 꺾쇠표"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"오른쪽 꺾쇠표"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"슈퍼스크립트 4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"슈퍼스크립트 라틴 소문자 엔"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"페소 기호"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"전교 기호"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"오른쪽 화살표"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"아래쪽 화살표"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"공집합 기호"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"델타"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"작거나 같음"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"크거나 같음"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"검은 별"</string>
+</resources>
diff --git a/java/res/values-ko/strings-talkback-descriptions.xml b/java/res/values-ko/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..2a3fe88
--- /dev/null
+++ b/java/res/values-ko/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"비밀번호 키를 음성으로 들으려면 헤드셋을 연결하세요."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"입력한 텍스트: %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"입력한 텍스트 없음"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>을(를) 누르면 <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>을(를) <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>(으)로 수정합니다."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g>을(를) 누르면 자동 수정됩니다."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"알 수 없는 문자"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift 키"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"기호 더보기"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift 키"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"기호"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift 키"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"삭제"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"기호"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"문자"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"숫자"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"설정"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"탭"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"스페이스바"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"음성 입력"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"그림 이모티콘"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"돌아가기"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"검색"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"글머리 기호"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"언어 전환"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"다음"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"이전"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift 사용"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock 사용"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"기호 모드"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"기호 더보기 모드"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"문자 모드"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"다이얼 모드"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"전화 기호 모드"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"키보드 숨김"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> 키보드 표시"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"날짜"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"날짜 및 시간"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"이메일"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"문자 메시지"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"숫자"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"전화번호"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"텍스트"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"시간"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"최근"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"사람"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"물건"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"자연"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"장소"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"기호"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"이모티콘"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"대문자 <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"대문자 아이"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"대문자 아이, 위 닷"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"알 수 없는 기호"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"알 수 없는 그림 이모티콘"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"대체 문자를 사용할 수 있습니다"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"대체 문자를 닫았습니다."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"대체 추천 단어를 사용할 수 있습니다"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"대체 추천 단어를 닫았습니다."</string>
+</resources>
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index ca10bdf..b6f93e6 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"입력 옵션"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"로그 명령 탐색"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"연락처 이름 조회"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"맞춤법 검사기가 주소록의 항목을 사용합니다."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"키를 누를 때 진동 발생"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"키를 누를 때 소리 발생"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"키를 누를 때 팝업"</string>
-    <string name="general_category" msgid="1859088467017573195">"일반"</string>
-    <string name="correction_category" msgid="2236750915056607613">"텍스트 수정"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"제스처 타이핑"</string>
-    <string name="misc_category" msgid="6894192814868233453">"기타 옵션"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"고급 설정"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"전문가용 옵션"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"다른 입력 방법으로 전환"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"언어 전환 키가 제공하는 기타 입력 방법"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"언어 전환 키"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"시스템 기본값"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"주소록 이름 활용"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"추천 및 수정에 주소록의 이름 사용"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"맞춤 추천 검색어"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> 개선"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"더블스페이스 마침표"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"스페이스바를 두 번 탭하면 마침표와 공백 한 개가 삽입됩니다."</string>
     <string name="auto_cap" msgid="1719746674854628252">"자동 대문자화"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"제스처 흔적 표시"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"동적 플로팅 미리보기"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"제스처에 따라 추천 단어 보기"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: 저장됨"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"비밀번호 키를 음성으로 들으려면 헤드셋을 연결하세요."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"입력한 텍스트: %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"입력한 텍스트 없음"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g>을(를) 누르면 <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>을(를) <xliff:g id="CORRECTED">%3$s</xliff:g>(으)로 수정합니다."</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g>을(를) 누르면 자동 수정됩니다."</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"키 코드 %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"시프트 키"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift 사용(사용하지 않으려면 탭하세요.)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock 사용(사용하지 않으려면 탭하세요.)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"삭제 키"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"기호"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"문자"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"숫자"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"설정"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"탭"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"스페이스"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"음성 입력"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"웃는 얼굴"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"리턴 키"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"검색"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"점"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"언어 전환"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"다음"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"이전"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift 사용"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock 사용"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift 사용중지"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"기호 모드"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"문자 모드"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"다이얼 모드"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"전화 기호 모드"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"키보드 숨김"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g> 키보드 표시"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"날짜"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"날짜 및 시간"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"이메일"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"문자 메시지"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"숫자"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"전화번호"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"텍스트"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"시간"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"구문 동작"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"동작 중에 스페이스바 쪽으로 움직여 공백 입력"</string>
     <string name="voice_input" msgid="3583258583521397548">"음성 입력 키"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"기본 키보드"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"기호 키보드"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"사용 안함"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"기본 키보드의 마이크"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"기호 키보드의 마이크"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"음성 입력이 사용 중지됨"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"사용 설정된 음성 입력 방법이 없습니다. 언어 및 입력 설정을 확인하세요."</string>
     <string name="configure_input_method" msgid="373356270290742459">"입력 방법 설정"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"입력 언어"</string>
     <string name="send_feedback" msgid="1780431884109392046">"의견 보내기"</string>
     <string name="select_language" msgid="3693815588777926848">"입력 언어"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"저장하려면 다시 터치"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"사전 사용 가능"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"사용자 의견 사용"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"사용 통계 및 오류 보고서를 자동으로 전송하여 입력 방법 편집기의 개선에 도움을 줍니다."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"키보드 테마"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"영어(영국)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"영어(미국)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"스페인어(미국)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"영어(영국) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"영어(미국) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"스페인어(미국)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g>(일반)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"영어(영국)(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"영어(미국)(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"스페인어(미국)(<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>(번체)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>(키릴어)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>(라틴어)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"언어 없음(알파벳)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"알파벳(QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"알파벳(QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"알파벳(콜맥)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"알파벳(PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"이모티콘"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"색구성표"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"흰색"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"파란색"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"맞춤 입력 스타일"</string>
     <string name="add_style" msgid="6163126614514489951">"스타일 추가"</string>
     <string name="add" msgid="8299699805688017798">"추가"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"사용"</string>
     <string name="not_now" msgid="6172462888202790482">"나중에"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"같은 입력 스타일이 다음과 같이 이미 존재합니다. <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"가용성 연구 모드"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"키 길게 누르기 지연"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"키를 누를 때 진동 시간"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"키를 누를 때 소리 볼륨"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"외부 사전 파일 읽기"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"다운로드 폴더에 사전 파일이 없음"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"설치할 사전 파일 선택"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"이 파일을 <xliff:g id="LOCALE_NAME">%s</xliff:g>(으)로 설치하시겠습니까?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"이 파일을 <xliff:g id="LANGUAGE_NAME">%s</xliff:g>(으)로 설치하시겠습니까?"</string>
     <string name="error" msgid="8940763624668513648">"오류 발생"</string>
     <string name="button_default" msgid="3988017840431881491">"기본값"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>에 오신 것을 환영합니다."</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"새로고침"</string>
     <string name="last_update" msgid="730467549913588780">"최종 업데이트"</string>
     <string name="message_updating" msgid="4457761393932375219">"업데이트를 확인하는 중"</string>
-    <string name="message_loading" msgid="8689096636874758814">"로드 중..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"로드 중..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"기본 사전"</string>
     <string name="cancel" msgid="6830980399865683324">"취소"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"설정"</string>
     <string name="install_dict" msgid="180852772562189365">"설치"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"취소"</string>
     <string name="delete_dict" msgid="756853268088330054">"삭제"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"기기에서 선택한 언어로 사용할 수 있는 사전이 있습니다.&lt;br/&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> 사전을 &lt;b&gt;다운로드&lt;/b&gt;하여 입력 환경을 개선해 보세요..&lt;br/&gt; &lt;br/&gt; 3G로 다운로드하는 경우 1-2분 정도 걸립니다. &lt;b&gt;무제한 데이터 요금제&lt;/b&gt;가 아닌 경우 요금이 청구됩니다.&lt;br/&gt; 사용 중인 데이터 요금제를 잘 모르는 경우 Wi-Fi에 연결할 수 있는 곳을 찾아 자동 다운로드를 시작하는 것이 좋습니다.&lt;br/&gt; &lt;br/&gt; 도움말: 사전을 다운로드하거나 삭제하려면 &lt;b&gt;언어 및 키보드&lt;/b&gt;로 이동하면 되며 이는 휴대기기의 &lt;b&gt;설정&lt;/b&gt; 메뉴에 있습니다."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"휴대기기에서 선택한 언어로 사용할 수 있는 사전이 있습니다.&lt;br/&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> 사전을 &lt;b&gt;다운로드&lt;/b&gt;하여 입력 환경을 개선해 보세요.&lt;br/&gt; &lt;br/&gt; 3G로 다운로드하는 경우 1~2분 정도 걸립니다. &lt;b&gt;무제한 데이터 요금제&lt;/b&gt;가 아닌 경우 요금이 청구될 수 있습니다.&lt;br/&gt; 사용 중인 데이터 요금제를 잘 모르는 경우 Wi-Fi에 연결할 수 있는 곳을 찾아 자동 다운로드를 시작하는 것이 좋습니다.&lt;br/&gt; &lt;br/&gt; 도움말: 사전을 다운로드하거나 삭제하려면 휴대기기의 &lt;b&gt;설정&lt;/b&gt; 메뉴에 있는 &lt;b&gt;언어 및 입력&lt;/b&gt;으로 이동하면 됩니다."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"지금 다운로드(<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi를 통해 다운로드"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g> 사전을 사용할 수 있습니다."</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> 사전을 사용할 수 있습니다."</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"검토하고 다운로드하려면 누르세요."</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"다운로드 중: <xliff:g id="LANGUAGE">%1$s</xliff:g>에 대한 추천항목이 곧 준비됩니다."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"다운로드 중: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>에 대한 추천항목이 곧 준비됩니다."</string>
     <string name="version_text" msgid="2715354215568469385">"버전 <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"추가"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"사전에 추가"</string>
diff --git a/java/res/values-ky-rKG/strings-action-keys.xml b/java/res/values-ky-rKG/strings-action-keys.xml
new file mode 100644
index 0000000..115a392
--- /dev/null
+++ b/java/res/values-ky-rKG/strings-action-keys.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for label_go_key (4033615332628671065) -->
+    <skip />
+    <!-- no translation found for label_next_key (5586407279258592635) -->
+    <skip />
+    <!-- no translation found for label_previous_key (1421141755779895275) -->
+    <skip />
+    <!-- no translation found for label_done_key (7564866296502630852) -->
+    <skip />
+    <!-- no translation found for label_send_key (482252074224462163) -->
+    <skip />
+    <string name="label_search_key" msgid="7965186050435796642">"Издөө"</string>
+    <!-- no translation found for label_pause_key (2225922926459730642) -->
+    <skip />
+    <!-- no translation found for label_wait_key (5891247853595466039) -->
+    <skip />
+</resources>
diff --git a/java/res/values-ky-rKG/strings-letter-descriptions.xml b/java/res/values-ky-rKG/strings-letter-descriptions.xml
new file mode 100644
index 0000000..75916a6
--- /dev/null
+++ b/java/res/values-ky-rKG/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Аялдарга таандык иреттик көрсөткүч"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Микро белги"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Эркектерге таандык иреттик көрсөткүч"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Каткалаң S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, гравис"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, акут"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, тильда"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, диэрезис"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, төбөсүндө тегерекче бар"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, лигатура"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, седиль"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, гравис"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, акут"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, диэрезис"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, гравис"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, акут"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, диэрезис"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, тильда"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, гравис"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, акут"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, тильда"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, диэрезис"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, жантык белги"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, гравис"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, акут"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, диэрезис"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, акут"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Торн"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, диэрезис"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, макрон"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, бреве"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, огонек"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, акут"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, циркумфлекс"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, төбөсүндө чекити бар"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, карон"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, карон"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, жантык белги"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, макрон"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, бреве"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, төбөсүндө чекити бар"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, огонек"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, карон"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, циркумфлекс"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, бреве"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, төбөсүндө чекити бар"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, седиль"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, жантык белги"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, тильда"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, макрон"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, бреве"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, огонек"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Чекити жок I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, лигатура"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, седиль"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, акут"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, седиль"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, карон"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, ортоңку чекит"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, жантык белги"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, акут"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, седиль"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, карон"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, апострофу бар"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, макрон"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, бреве"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, кош акут"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, лигатура"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, акут"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, седиль"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, карон"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, акут"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, циркумфлекс"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, седиль"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, карон"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, седиль"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, карон"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, жантык белги"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, тильда"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, макрон"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, бреве"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, төбөсүндө тегерекче бар"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, кош акут"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, огонек"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, циркумфлекс"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, акут"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, төбөсүндө чекити бар"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, карон"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Узак S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, хорн"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, хорн"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, астында үтүр бар"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, астында үтүрү бар"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, циркумфлекс жана акут"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, циркумфлекс жана гравис"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, циркумфлекс жана төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, циркумфлекс жана тильда"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, циркумфлекс жана астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, бреве жана акут"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, бреве жана гравис"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, бреве жана төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, бреве жана тильда"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, бреве жана астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, тильда"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, циркумфлекс жана акут"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, циркумфлекс жана гравис"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, циркумфлекс жана төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, циркумфлекс жана тильда"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, циркумфлекс жана астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, астында чекити бар"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, астында чекити бар"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, циркумфлекс жана акут"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, циркумфлекс жана гравис"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, циркумфлекс жана төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, циркумфлекс жана тильда"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, циркумфлекс жана астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, хорн жана акут"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, хорн жана гравис"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, хорн жана төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, хорн жана тильда"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, хорн жана астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, хорн жана акут"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, хорн жана гравис"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, хорн жана төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, хорн жана тильда"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, хорн жана астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, гравис"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, астында чекити бар"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, төбөсүндө илгичи бар"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, тильда"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Көңтөрүлгөн илеп белгиси"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Сол жакты карап турган кош бурчтуу тырмакча"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Ортоңку чекит"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Жогорку индекс бир"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Оң жакты карап турган кош бурчтуу тырмакча"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Көңтөрүлгөн суроо белгиси"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Солду карап турган жалгыз тырмакча"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Оңду карап турган жалгыз тырмакча"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Төмөнкү котировкадагы жалгыз тырмакча"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Солду карап турган кош тырмакча"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Оңду карап турган кош тырмакча"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Крест"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Кош крест"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Промилле белгиси"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Штрих"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Кош штрих"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Сол жакты карап турган бир бурчтуу тырмакча"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Оң жакты карап турган бир бурчтуу тырмакча"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Жогорку индекс төрт"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Жогорку индекстеги кичинекей латын тамгасы n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Песо белгиси"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Кимге"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Оң жакты караган жебе"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Төмөн жакты караган жебе"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Бош көптүгү"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Инкремент"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Кичирээк же барабар"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Көбүрөөк же барабар"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Кара жылдыз"</string>
+</resources>
diff --git a/java/res/values-ky-rKG/strings-talkback-descriptions.xml b/java/res/values-ky-rKG/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..70c7792
--- /dev/null
+++ b/java/res/values-ky-rKG/strings-talkback-descriptions.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for spoken_use_headphones (4313642710742229868) -->
+    <skip />
+    <!-- no translation found for spoken_current_text_is (4240549866156675799) -->
+    <skip />
+    <!-- no translation found for spoken_no_text_entered (1711276837961785646) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct (8989324692167993804) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct_obscured (7769449372355268412) -->
+    <skip />
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Белгисиз белги"</string>
+    <!-- no translation found for spoken_description_shift (7209798151676638728) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift (3483198879916435717) -->
+    <skip />
+    <!-- no translation found for spoken_description_shift_shifted (3122704922642232605) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift_shifted (5179175466878186081) -->
+    <skip />
+    <!-- no translation found for spoken_description_caps_lock (1224851412185975036) -->
+    <skip />
+    <!-- no translation found for spoken_description_delete (3878902286264983302) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_symbol (8244903740201126590) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_alpha (4081215210530031950) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_numeric (4560261331530795682) -->
+    <skip />
+    <!-- no translation found for spoken_description_settings (7281251004003143204) -->
+    <skip />
+    <!-- no translation found for spoken_description_tab (8210782459446866716) -->
+    <skip />
+    <!-- no translation found for spoken_description_space (5908716896642059145) -->
+    <skip />
+    <!-- no translation found for spoken_description_mic (6153138783813452464) -->
+    <skip />
+    <!-- no translation found for spoken_description_emoji (7990051553008088470) -->
+    <skip />
+    <!-- no translation found for spoken_description_return (3183692287397645708) -->
+    <skip />
+    <!-- no translation found for spoken_description_search (5099937658231911288) -->
+    <skip />
+    <!-- no translation found for spoken_description_dot (5644176501632325560) -->
+    <skip />
+    <!-- no translation found for spoken_description_language_switch (6818666779313544553) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_next (431761808119616962) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_previous (2919072174697865110) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_on (5107180516341258979) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_locked (7307477738053606881) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol (111186851131446691) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol_shift (4305607977537665389) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_alpha (4676004119618778911) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone (2061220553756692903) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone_shift (7879963803547701090) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_hidden (2313574218950517779) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_mode (6698257917367823205) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date (6597407244976713364) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date_time (3642804408726668808) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_email (1239682082047693644) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_im (3812086215529493501) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_number (5395042245837996809) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_phone (2486230278064523665) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_text (9138789594969187494) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_time (8558297845514402675) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_url (8072011652949962550) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_recents (4185344945205590692) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_people (8414196269847492817) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_objects (6116297906606195278) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_nature (5018340512472354640) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_places (1163315840948545317) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_symbols (474680659024880601) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_emoticons (456737544787823539) -->
+    <skip />
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Баш тамга <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Баш тамга I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Баш тамга I, төбөсүндө чекити бар"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Белгисиз символ"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Белгисиз эмодзи"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Альтернативалуу белгилер бар"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Альтернативалуу белгилер этибарга алынбайт"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Альтернативалуу сунуштар бар"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Альтернативалуу сунуштар этибарга алынбайт"</string>
+</resources>
diff --git a/java/res/values-ky-rKG/strings.xml b/java/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..cf60508
--- /dev/null
+++ b/java/res/values-ky-rKG/strings.xml
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
+    <skip />
+    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
+    <skip />
+    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
+    <skip />
+    <!-- no translation found for popup_on_keypress (123894815723512944) -->
+    <skip />
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+    <skip />
+    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
+    <skip />
+    <!-- no translation found for settings_system_default (6268225104743331821) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
+    <skip />
+    <!-- no translation found for use_personalized_dicts (5167396352105467626) -->
+    <skip />
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Жакшыртуу <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <!-- no translation found for use_double_space_period (8781529969425082860) -->
+    <skip />
+    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
+    <skip />
+    <!-- no translation found for auto_cap (1719746674854628252) -->
+    <skip />
+    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
+    <skip />
+    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
+    <skip />
+    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
+    <skip />
+    <!-- no translation found for main_dictionary (4798763781818361168) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+    <skip />
+    <!-- no translation found for auto_correction (7630720885194996950) -->
+    <skip />
+    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
+    <skip />
+    <!-- no translation found for bigram_prediction (1084449187723948550) -->
+    <skip />
+    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
+    <skip />
+    <!-- no translation found for gesture_input (826951152254563827) -->
+    <skip />
+    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
+    <skip />
+    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware (2078291600664682496) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware_summary (4371385818348528538) -->
+    <skip />
+    <!-- no translation found for voice_input (3583258583521397548) -->
+    <skip />
+    <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
+    <skip />
+    <!-- no translation found for configure_input_method (373356270290742459) -->
+    <skip />
+    <!-- no translation found for language_selection_title (1651299598555326750) -->
+    <skip />
+    <!-- no translation found for send_feedback (1780431884109392046) -->
+    <skip />
+    <!-- no translation found for select_language (3693815588777926848) -->
+    <skip />
+    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
+    <skip />
+    <!-- no translation found for has_dictionary (6071847973466625007) -->
+    <skip />
+    <!-- no translation found for keyboard_layout (8451164783510487501) -->
+    <skip />
+    <!-- no translation found for subtype_en_GB (88170601942311355) -->
+    <skip />
+    <!-- no translation found for subtype_en_US (6160452336634534239) -->
+    <skip />
+    <!-- no translation found for subtype_es_US (5583145191430180200) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_GB (1931018968641592304) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_US (8809311287529805422) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_es_US (510930471167541338) -->
+    <skip />
+    <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
+    <skip />
+    <!-- no translation found for subtype_generic_cyrillic (7486451947618138947) -->
+    <skip />
+    <!-- no translation found for subtype_generic_latin (9128716486310604145) -->
+    <skip />
+    <!-- no translation found for subtype_no_language (7137390094240139495) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
+    <skip />
+    <!-- no translation found for subtype_emoji (7483586578074549196) -->
+    <skip />
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
+    <skip />
+    <!-- no translation found for add_style (6163126614514489951) -->
+    <skip />
+    <!-- no translation found for add (8299699805688017798) -->
+    <skip />
+    <!-- no translation found for remove (4486081658752944606) -->
+    <skip />
+    <!-- no translation found for save (7646738597196767214) -->
+    <skip />
+    <!-- no translation found for subtype_locale (8576443440738143764) -->
+    <skip />
+    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
+    <skip />
+    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
+    <skip />
+    <!-- no translation found for enable (5031294444630523247) -->
+    <skip />
+    <!-- no translation found for not_now (6172462888202790482) -->
+    <skip />
+    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
+    <skip />
+    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
+    <skip />
+    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_confirm_install_message (4782116251651288054) -->
+    <skip />
+    <!-- no translation found for error (8940763624668513648) -->
+    <skip />
+    <!-- no translation found for button_default (3988017840431881491) -->
+    <skip />
+    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
+    <skip />
+    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
+    <skip />
+    <!-- no translation found for setup_start_action (8936036460897347708) -->
+    <skip />
+    <!-- no translation found for setup_next_action (371821437915144603) -->
+    <skip />
+    <!-- no translation found for setup_steps_title (6400373034871816182) -->
+    <skip />
+    <!-- no translation found for setup_step1_title (3147967630253462315) -->
+    <skip />
+    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
+    <skip />
+    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+    <skip />
+    <!-- no translation found for setup_step1_action (4366513534999901728) -->
+    <skip />
+    <!-- no translation found for setup_step2_title (6860725447906690594) -->
+    <skip />
+    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
+    <skip />
+    <!-- no translation found for setup_step2_action (1660330307159824337) -->
+    <skip />
+    <!-- no translation found for setup_step3_title (3154757183631490281) -->
+    <skip />
+    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
+    <skip />
+    <!-- no translation found for setup_step3_action (600879797256942259) -->
+    <skip />
+    <!-- no translation found for setup_finish_action (276559243409465389) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
+    <skip />
+    <!-- no translation found for app_name (6320102637491234792) -->
+    <skip />
+    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
+    <skip />
+    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
+    <skip />
+    <!-- no translation found for download_description (6014835283119198591) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
+    <skip />
+    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
+    <skip />
+    <!-- no translation found for user_dictionaries (3582332055892252845) -->
+    <skip />
+    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
+    <skip />
+    <!-- no translation found for dictionary_available (4728975345815214218) -->
+    <skip />
+    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
+    <skip />
+    <!-- no translation found for dictionary_installed (8081558343559342962) -->
+    <skip />
+    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
+    <skip />
+    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
+    <skip />
+    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
+    <skip />
+    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
+    <skip />
+    <!-- no translation found for last_update (730467549913588780) -->
+    <skip />
+    <!-- no translation found for message_updating (4457761393932375219) -->
+    <skip />
+    <!-- no translation found for message_loading (5638680861387748936) -->
+    <skip />
+    <!-- no translation found for main_dict_description (3072821352793492143) -->
+    <skip />
+    <!-- no translation found for cancel (6830980399865683324) -->
+    <skip />
+    <!-- no translation found for go_to_settings (3876892339342569259) -->
+    <skip />
+    <!-- no translation found for install_dict (180852772562189365) -->
+    <skip />
+    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
+    <skip />
+    <!-- no translation found for delete_dict (756853268088330054) -->
+    <skip />
+    <!-- no translation found for should_download_over_metered_prompt (1583881200688185508) -->
+    <skip />
+    <!-- no translation found for download_over_metered (1643065851159409546) -->
+    <skip />
+    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_title (4583842811218581658) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
+    <skip />
+    <!-- no translation found for toast_downloading_suggestions (6128155879830851739) -->
+    <skip />
+    <!-- no translation found for version_text (2715354215568469385) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+    <skip />
+    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+    <skip />
+</resources>
diff --git a/java/res/values-ky/bools.xml b/java/res/values-ky/bools.xml
deleted file mode 100644
index 840d20c..0000000
--- a/java/res/values-ky/bools.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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>
-    <!-- Whether this input method should be used as the default for a locale. Override it
-         for supported languages. -->
-    <bool name="im_is_default">true</bool>
-</resources>
diff --git a/java/res/values-ky/strings-action-keys.xml b/java/res/values-ky/strings-action-keys.xml
deleted file mode 100644
index 5eda61e..0000000
--- a/java/res/values-ky/strings-action-keys.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="label_go_key" msgid="1635148082137219148">"Баруу"</string>
-    <string name="label_next_key" msgid="362972844525672568">"Кийин"</string>
-    <string name="label_previous_key" msgid="1211868118071386787">"Мурун"</string>
-    <string name="label_done_key" msgid="2441578748772529288">"Даяр"</string>
-    <string name="label_send_key" msgid="2815056534433717444">"Жибер"</string>
-    <!-- no translation found for label_pause_key (181098308428035340) -->
-    <skip />
-    <!-- no translation found for label_wait_key (6402152600878093134) -->
-    <skip />
-</resources>
diff --git a/java/res/values-ky/strings.xml b/java/res/values-ky/strings.xml
deleted file mode 100644
index e30c4b9..0000000
--- a/java/res/values-ky/strings.xml
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for english_ime_name (7252517407088836577) -->
-    <skip />
-    <!-- no translation found for aosp_android_keyboard_ime_name (7877134937939182296) -->
-    <skip />
-    <!-- no translation found for english_ime_settings (6661589557206947774) -->
-    <skip />
-    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
-    <skip />
-    <!-- no translation found for spell_checker_service_name (7338064335159755926) -->
-    <skip />
-    <!-- no translation found for aosp_spell_checker_service_name (6985142605330377819) -->
-    <skip />
-    <!-- no translation found for android_spell_checker_settings (5822324635435443689) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
-    <skip />
-    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
-    <skip />
-    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
-    <skip />
-    <!-- no translation found for popup_on_keypress (123894815723512944) -->
-    <skip />
-    <!-- no translation found for general_category (1859088467017573195) -->
-    <skip />
-    <!-- no translation found for correction_category (2236750915056607613) -->
-    <skip />
-    <!-- no translation found for misc_category (6894192814868233453) -->
-    <skip />
-    <!-- no translation found for advanced_settings (362895144495591463) -->
-    <skip />
-    <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
-    <skip />
-    <!-- no translation found for suppress_language_switch_key (8003788410354806368) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
-    <skip />
-    <!-- no translation found for enable_span_insert (7204653105667167620) -->
-    <skip />
-    <!-- no translation found for enable_span_insert_summary (2947317657871394467) -->
-    <skip />
-    <!-- no translation found for auto_cap (1719746674854628252) -->
-    <skip />
-    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
-    <skip />
-    <!-- no translation found for main_dictionary (4798763781818361168) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3551821800439659812) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
-    <skip />
-    <!-- no translation found for auto_correction (4979925752001319458) -->
-    <skip />
-    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_aggressive (3524029103734923819) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (3386782235540547678) -->
-    <skip />
-    <!-- no translation found for bigram_suggestion (8169311444438922902) -->
-    <skip />
-    <!-- no translation found for bigram_suggestion_summary (6635527607242625713) -->
-    <skip />
-    <!-- no translation found for bigram_prediction (3216364899483135294) -->
-    <skip />
-    <!-- no translation found for bigram_prediction_summary (1747261921174300098) -->
-    <skip />
-    <!-- no translation found for added_word (8993883354622484372) -->
-    <skip />
-    <!-- no translation found for label_to_symbol_key (8516904117128967293) -->
-    <skip />
-    <!-- no translation found for label_to_symbol_with_microphone_key (9035925553010061906) -->
-    <skip />
-    <!-- no translation found for spoken_use_headphones (896961781287283493) -->
-    <skip />
-    <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
-    <skip />
-    <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
-    <skip />
-    <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift (244197883292549308) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
-    <skip />
-    <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
-    <skip />
-    <!-- no translation found for spoken_description_delete (8740376944276199801) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
-    <skip />
-    <!-- no translation found for spoken_description_settings (4627462689603838099) -->
-    <skip />
-    <!-- no translation found for spoken_description_tab (2667716002663482248) -->
-    <skip />
-    <!-- no translation found for spoken_description_space (2582521050049860859) -->
-    <skip />
-    <!-- no translation found for spoken_description_mic (615536748882611950) -->
-    <skip />
-    <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
-    <skip />
-    <!-- no translation found for spoken_description_return (8178083177238315647) -->
-    <skip />
-    <!-- no translation found for spoken_description_dot (40711082435231673) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
-    <skip />
-    <!-- no translation found for voice_input (3583258583521397548) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
-    <skip />
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
-    <!-- no translation found for language_selection_title (1651299598555326750) -->
-    <skip />
-    <!-- no translation found for select_language (3693815588777926848) -->
-    <skip />
-    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
-    <skip />
-    <!-- no translation found for has_dictionary (6071847973466625007) -->
-    <skip />
-    <!-- no translation found for prefs_enable_log (6620424505072963557) -->
-    <skip />
-    <!-- no translation found for prefs_description_log (5827825607258246003) -->
-    <skip />
-    <!-- no translation found for keyboard_layout (8451164783510487501) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwerty (2956121451616633133) -->
-    <skip />
-    <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_vibration_duration_settings (1829950405285211668) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_sound_volume_settings (5875933757082305040) -->
-    <skip />
-</resources>
diff --git a/java/res/values-land/config.xml b/java/res/values-land/config.xml
index 7d93cc2..5eea4c1 100644
--- a/java/res/values-land/config.xml
+++ b/java/res/values-land/config.xml
@@ -18,6 +18,59 @@
 */
 -->
 
+<!-- Configuration values for Small Phone Landscape. -->
 <resources>
     <bool name="config_use_fullscreen_mode">true</bool>
+
+    <!-- Preferable keyboard height in absolute scale: 1.100in -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">176.0dp</dimen>
+    <fraction name="config_min_keyboard_height">45%p</fraction>
+
+    <!-- key_height + key_bottom_gap = config_more_keys_keyboard_key_height -->
+    <dimen name="config_more_keys_keyboard_key_height">44.8dp</dimen>
+    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+    <!-- config_more_keys_keyboard_key_height x 1.2 -->
+    <dimen name="config_more_keys_keyboard_slide_allowance">53.76dp</dimen>
+
+    <fraction name="config_keyboard_top_padding_holo">2.727%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">5.368%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">1.020%p</fraction>
+    <!-- config_more_keys_keyboard_key_height x -0.5 -->
+    <dimen name="config_more_keys_keyboard_vertical_correction_holo">-22.4dp</dimen>
+    <dimen name="config_key_preview_offset_holo">1.6dp</dimen>
+
+    <fraction name="config_key_preview_text_ratio">90%</fraction>
+    <fraction name="config_key_letter_ratio">65%</fraction>
+    <fraction name="config_key_large_letter_ratio">74%</fraction>
+    <fraction name="config_key_label_ratio">40%</fraction>
+    <fraction name="config_key_hint_letter_ratio">30%</fraction>
+    <fraction name="config_key_hint_label_ratio">52%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">40%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">40.000%</fraction>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">3.20%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">65%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">48%</fraction>
+
+    <dimen name="config_suggestions_strip_height">36dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">54dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
+    <dimen name="config_more_suggestions_row_height">36dp</dimen>
+    <integer name="config_max_more_suggestions_row">2</integer>
+    <fraction name="config_min_more_suggestions_width">60%</fraction>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">23dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">54dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">23dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">15dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">10%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">50%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">54%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">20</integer>
 </resources>
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
deleted file mode 100644
index c97e68f..0000000
--- a/java/res/values-land/dimens.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, 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>
-    <!-- Preferable keyboard height in absolute scale: 1.100in -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">176.0dp</dimen>
-    <fraction name="minKeyboardHeight">45%p</fraction>
-    <!-- key_height + key_bottom_gap = popup_key_height -->
-    <dimen name="popup_key_height">44.8dp</dimen>
-
-    <fraction name="keyboard_top_padding_gb">1.818%p</fraction>
-    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
-    <fraction name="key_bottom_gap_gb">5.941%p</fraction>
-    <fraction name="key_horizontal_gap_gb">0.997%p</fraction>
-
-    <fraction name="keyboard_top_padding_holo">2.727%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">0.0%p</fraction>
-    <fraction name="key_bottom_gap_holo">5.368%p</fraction>
-    <fraction name="key_horizontal_gap_holo">1.020%p</fraction>
-
-    <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_padding">8dp</dimen>
-
-    <fraction name="key_letter_ratio">65%</fraction>
-    <fraction name="key_large_letter_ratio">74%</fraction>
-    <fraction name="key_label_ratio">40%</fraction>
-    <fraction name="key_hint_letter_ratio">30%</fraction>
-    <fraction name="key_hint_label_ratio">52%</fraction>
-    <fraction name="key_uppercase_letter_ratio">40%</fraction>
-    <fraction name="key_preview_text_ratio">90%</fraction>
-    <fraction name="spacebar_text_ratio">40.000%</fraction>
-    <dimen name="key_preview_offset_gb">0.0dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5row">78%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">48%</fraction>
-
-    <dimen name="key_preview_offset_holo">1.6dp</dimen>
-    <!-- popup_key_height x -0.5 -->
-    <dimen name="more_keys_keyboard_vertical_correction_holo">-22.4dp</dimen>
-
-    <dimen name="suggestions_strip_height">36dp</dimen>
-    <dimen name="more_suggestions_row_height">36dp</dimen>
-    <integer name="max_more_suggestions_row">2</integer>
-    <fraction name="min_more_suggestions_width">60%</fraction>
-    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
-    <!-- popup_key_height x 1.2 -->
-    <dimen name="more_keys_keyboard_slide_allowance">53.76dp</dimen>
-    <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction_gb">-44.8dp</dimen>
-
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">23dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">54dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">23dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">15dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">10%p</fraction>
-    <fraction name="emoji_keyboard_row_height">50%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">54%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">20</integer>
-
-</resources>
diff --git a/java/res/values-land/keyboard-heights.xml b/java/res/values-land/keyboard-heights.xml
index 670be33..d57f96b 100644
--- a/java/res/values-land/keyboard-heights.xml
+++ b/java/res/values-land/keyboard-heights.xml
@@ -33,7 +33,5 @@
     <!-- Preferable keyboard height in absolute scale: 45.0mm -->
         <!-- Xoom -->
         <item>HARDWARE=stingray,265.4378</item>
-    <!-- Default value for unknown device: empty string -->
-        <item>,</item>
     </string-array>
 </resources>
diff --git a/java/res/values-land/setup-dimens-small-phone-land.xml b/java/res/values-land/setup-dimens-small-phone-land.xml
index 088e656..de93eee 100644
--- a/java/res/values-land/setup-dimens-small-phone-land.xml
+++ b/java/res/values-land/setup-dimens-small-phone-land.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">18sp</dimen>
     <dimen name="setup_step_bullet_text_size">18sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">18dp</dimen>
-    <dimen name="setup_step_indicator_height">18dp</dimen>
     <dimen name="setup_step_title_text_size">18sp</dimen>
     <dimen name="setup_step_instruction_text_size">14sp</dimen>
     <dimen name="setup_step_action_text_size">16sp</dimen>
diff --git a/java/res/values-lo-rLA/donottranslate.xml b/java/res/values-lo-rLA/donottranslate-config-spacing-and-punctuations.xml
similarity index 100%
rename from java/res/values-lo-rLA/donottranslate.xml
rename to java/res/values-lo-rLA/donottranslate-config-spacing-and-punctuations.xml
diff --git a/java/res/values-lo-rLA/strings-action-keys.xml b/java/res/values-lo-rLA/strings-action-keys.xml
index 08dc983..e1cd913 100644
--- a/java/res/values-lo-rLA/strings-action-keys.xml
+++ b/java/res/values-lo-rLA/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"ກ່ອນໜ້າ"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Done"</string>
     <string name="label_send_key" msgid="482252074224462163">"ສົ່ງ"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"ຊອກຫາ"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"ຢຸດຊົ່ວຄາວ"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"ລໍຖ້າ"</string>
 </resources>
diff --git a/java/res/values-lo-rLA/strings-config-important-notice.xml b/java/res/values-lo-rLA/strings-config-important-notice.xml
new file mode 100644
index 0000000..7880ad1
--- /dev/null
+++ b/java/res/values-lo-rLA/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"ຮຽນຮູ້ຈາກການສື່ສານ ແລະຂໍ້ມູນທີ່ທ່ານເຄີຍພິມເພື່ອປັບປຸງຄຳແນະນຳ"</string>
+</resources>
diff --git a/java/res/values-lo-rLA/strings-emoji-descriptions.xml b/java/res/values-lo-rLA/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..0747fa6
--- /dev/null
+++ b/java/res/values-lo-rLA/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"ເຄື່ອງ​ໝາຍ​ລິຂະສິດ"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"ເຄື່ອງໝາຍ​ຈົດທະບຽນ"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Double exclamation mark"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Exclamation question mark"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Trade mark sign"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Information source"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Left right arrow"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Up down arrow"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"North west arrow"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"North east arrow"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"South east arrow"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"South west arrow"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Leftwards arrow with hook"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Rightwards arrow with hook"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"ເບິ່ງ"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Hourglass"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Black right-pointing double triangle"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Black left-pointing double triangle"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Black up-pointing double triangle"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Black down-pointing double triangle"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"ໂມງປຸກ"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Hourglass with flowing sand"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Circled latin capital letter m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Black small square"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"White small square"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Black right-pointing triangle"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Black left-pointing triangle"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"White medium square"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Black medium square"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"White medium small square"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Black medium small square"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Black sun with rays"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Cloud"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Black telephone"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Ballot box with check"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Umbrella with rain drops"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Hot beverage"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"White up pointing index"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"White smiling face"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Aries"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Taurus"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Gemini"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"ມະເຮັງ"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leo"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Virgo"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Libra"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Scorpius"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Sagittarius"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Capricorn"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Aquarius"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Pisces"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Black spade suit"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Black club suit"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Black heart suit"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Black diamond suit"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Hot springs"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Black universal recycling symbol"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Wheelchair symbol"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Anchor"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Warning sign"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"High voltage sign"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Medium white circle"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Medium black circle"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Soccer ball"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"ເບສບອລ"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Snowman without snow"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Sun behind cloud"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Ophiuchus"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"No entry"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Church"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fountain"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Flag in hole"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Sailboat"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Tent"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Fuel pump"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Black scissors"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"White heavy check mark"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Airplane"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Envelope"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Raised fist"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Raised hand"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Victory hand"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Pencil"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Black nib"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Heavy check mark"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Heavy multiplication x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Sparkles"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Eight spoked asterisk"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Eight pointed black star"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Snowflake"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Sparkle"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Cross mark"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Negative squared cross mark"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Black question mark ornament"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"White question mark ornament"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"White exclamation mark ornament"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Heavy exclamation mark symbol"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"ຫົວໃຈ​ສີ​ດຳ​ໜັກ"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Heavy plus sign"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Heavy minus sign"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Heavy division sign"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Black rightwards arrow"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Curly loop"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Double curly loop"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Arrow pointing rightwards then curving upwards"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Arrow pointing rightwards then curving downwards"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Leftwards black arrow"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Upwards black arrow"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Downwards black arrow"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Black large square"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"White large square"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"White medium star"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Heavy large circle"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Wavy dash"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Part alternation mark"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Circled ideograph congratulation"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Circled ideograph secret"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"ໄພ້​ນົກກະຈອກ​ເທດ​ມັງ​ກອນ​ແດງ"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"ກຳລັງ​ຫຼິ້ນ​ໄພ້​ໂຈກເກີ​ສີ​ດຳ"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"ເລືອດ​ກຣຸບ A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"ເລືອດ​ກຣຸບ B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"ເລືອດ​ກຣຸບ O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"ບ່ອນ​ຈອດ​ລົດ"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"ເລືອດ​ກຣຸບ AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL ສີ່​ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Cool ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Free ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ID ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"New ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"N G ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"OK ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"SOS ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"UP! ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"VS ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"ບໍລິການ ແບບ​ກະຕະກະນະ​ສີ່​ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"ບໍລິການ ແບບ​ກະຕະກະນະ​ສີ່​ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Squared ideograph charge-free"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Squared ideograph reserved-seat"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Squared ideograph prohibitation"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Squared ideograph vacancy"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Squared ideograph acceptance"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Squared ideograph full occupancy"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Squared ideograph paid"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Squared ideograph monthly"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Squared ideograph application"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Squared ideograph discount"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Squared ideograph in business"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Circled ideograph advantage"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Circled ideograph accept"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"ພະ​ຍ​ຸ​ໝຸນ​ໄຊ​ໂຄລນ"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"ໝອກ​ຄວັນ"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"​ຄັນ​ຮົ່ມ​ປິດ"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"​ຄ່ຳ​ຄືນ​ກັບ​ແສງ​ດາວ"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"​ຕາ​ເວັນ​ຂຶ້ນ​ຢູ່​ພູ"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"​ຕາ​ເວັນ​ຂຶ້ນ"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"​ເມືອງ​ໃນ​ຍາມ​​​ໃກ້​ຄ່ຳ"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"​ຕາ​ເວັນ"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"ຮຸ້ງ"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"ຂົວ​ໃນ​ຍາມ​ຄ່ຳ​ຄືນ"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"​ຄື້ນ​ນ້ຳ"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"ພູ​ເຂົາ​ໄຟ"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"ທາງ​ຊ້າງ​ເຜືອກ"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"ໜ່ວຍ​ໂລກ​ຢູ​ໂຣບ​ອາ​ຟຣິ​ກາ"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"​ໜ່ວຍ​ໂລກ​ອາ​ເມ​ລິ​ກາ"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"​ໜ່ວຍ​ໂລກ​ເອ​ເຊຍອອສ​ເຕຣ​ເລຍ"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"ໜ່ວຍ​ໂລກ​ມີ​ເສັ້ນ​ຕັດ"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"ສັນ​ຍາ​ລັກ​​ເດືອນ​ມືດ"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"ສັນ​ຍາ​ລັກ​ເດືອນບໍ່​ເຕັມ​ດວງ"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"ສັນ​ຍາ​ລັກ​ເດືອນ​ເຄິ່ງດວງ​ທຳ​ອິດ"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"ສັນ​ຍາ​ລັກ​ເດືອນ​ຂຶ້ນ"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"​ສັນ​ຍາ​ລັກ​ເດືອນ​ເຕັມ​ດວງ"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"ສັນ​ຍາ​ລັກ​ເດືອນ​ໃກ້​ເຕັມ​ດວງ"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"ສັນ​ຍາ​ລັກ​ເດືອນ​ເຄິ່ງ​ດວງ​​ທ້າຍ"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"ສັນ​ຍາ​ລັກ​ເດືອນ​ສ້ຽວ"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"​ເດືອນ​ສ້ຽວ"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"ເດືອນ​ມືດ​ມີ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"ເດືອນ​ເຄິ່ງດວງ​ທຳ​ອິດ​ມີ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"ສັນ​ຍາ​ລັກ​ເດືອນ​ເຄິ່ງ​ດວງ​​ທ້າຍ​ມີ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"​ເດືອນ​ເຕັມ​ດວງ​ມີ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"​ຕາ​ເວັນ​ມີ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"ດາວ​ເຮືອງ​ແສງ"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"​ດາວ​ຕົກ"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"​ລູກ​ເກົາ​ລັດ"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"​ກ້າ​ໄມ້"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"ຕົ້ນ​ໄມ້​ບໍ່​ຜັດ​ໃບ"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"​ຕົ້ນ​ໄມ້​ຜັດໃບ​"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"​ຕົ້ນ​ປາມ"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"​ກະ​ບອງ​ເພັດ"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"​ທິວ​ລິບ"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"ດອກ​ເຊີ​ຣີ"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"​ດອກ​ກຸ​ຫລາບ"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"​ສະ​ກຸນ​ຊະ​ບາ"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"ດອກ​ຕາ​ເວັນ"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"ດອກ​ໄມ້​ບານ"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"ຕົ້ນ​ສາ​ລີ"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"​ຕົ້ນ​ເຂົ້າ"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"​ສະ​ໝຸນ​ໄພ"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"ໂຄລ​ເວີ​ສີ່​ໃບ"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"​ໃບ​ເມ​ເປີ້ນ"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"ໃບ​ໄມ້ຫຼົ່ນ"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"ໃບ​ໄມ້​ປິວ​ຕາມ​ລົມ"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"​ເຫັດ"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"​ໝາກ​ເຫຼັ່ນ"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"​ໝາກ​ເຂືອ"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"​ອະງຸ່ນ"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"ໝາກ​ໂມ"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"ໝາກ​ໂມ"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"ສົ້ມ​ຂຽວ​ຫວານ"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"ໝາກ​ນາວ"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"​​ໝາກກ້ວຍ"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"​ໝາກ​ນັດ"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"​ໝາກ​ໂປ່ມ​ແດງ"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"​ໝາກ​ໂປ່ມ​ຂຽວ"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"ລູກ​ສາ​ລີ່"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"​ລູກ​ພີດ"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"​ເຊີ​ຣີ"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"​ສະ​ຕຣໍ​ເບີ​ຣີ"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"​ແຮມ​ເບີ​ເກີ"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"​ພິດ​ຊ່າ​ປ່ຽງ​ນຶ່ງ"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"ຊີ້ນ​ຕິດ​ກະ​ດູກ"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"​ຂາ​ສັດ​ປີກ"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"ເຂົ້າ​ໜົມ​ເຂົ້າ"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"ເຂົ້າ​ປັ້ນ"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"​ເຂົ້າ​ສຸກ"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"ເຂົ້າ​ແກງ​ກະ​ຫລີ່"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"​ຖ້ວຍ​ຮ້ອນ"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"​ສະ​ປາ​ເກັດ​ຕີ"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"​ເຂົ້າ​ຈ​ີ່"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"​ມັນຝຣັ່ງ​ທອດ"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"​ມັນ​ຝຣັ່ງ​ຫວານ​ອົບ"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"ດັງ​ໂງະ"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"ໂອ​ເດັ້ງ"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"​ຊູ​ຊິ"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"​ກຸ້ງ​ທອດ"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"ເຄັກ​ປາ​ແບບ​ໝຸນໆ"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"ກະ​ແລ່ມ​ນຸ້ມ"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"ນ້ຳ​ແຂງ​ໃສ"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"ກະ​ແລ່ມ"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"​ໂດ​ນັດ"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"​ຄຸ​ກ​ກີ້"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"​ຊັອກ​ໂກ​ແລັດບາ"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"ແຄນດີ້"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"​ໂລ​ລິ​ປັອບ"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"​ຄັ​ສ​ຕາດ"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"ໝໍ້​ນ້ຳ​ເຜິ້ງ"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"ຊັອດ​ເຄັກ"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"ເບັນ​ໂຕ"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"ໝໍ້​ອາ​ຫານ"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"​ຄົວ​ກິນ"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"​ມີດ​ແລະ​ສ້ອມ"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"ຖ້ວຍ​ຊາ​ແບບ​ບໍ່​ມີ​ດ້າມ​ຈັບ"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"ຈອກ​ແລະ​​ເຫຼົ້າສາ​ເກ"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"​ຈອກວາຍ"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"​ຈອກ​ຄັອກ​ເທວ"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"ເຄື່ອງ​ດື່ມ​ເຂດ​ຮ້ອນ"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"ແກ້ວ​ເບຍ"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"ຕຳ​ແກ້ວ​ເບຍ"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"​​​ຕຸກ​ນົມ​ແອ​ນ້ອຍ"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"​ຣິບບອນ"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"​ຂອງ​ຂວັນ​ຫໍ່​ໄວ້"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"​ເຄັກ​ວັນ​ເກີດ"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"ແຈັກ-ໂອ-ແລນເທິນ"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"​ຕົ້ນ​ຄ​ຣິສ​ມາ​ສ"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"ຊານ​ຕາ​ຄລອສ"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"ບັ້ງໄຟດອກ"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"ດອກ​ໄມ້​ໄຟ"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"​ບານ​ລູນ"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"ປາ​​ຕີ້​ປັອບ​ເປີ"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"ບານ​ຄອນ​ເຟັດ​ຕີ"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"ຕົ້ນ​ທາ​ນາ​ບາ​ຕະ"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"ທຸງ​ໄຂວ່​ກັນ"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"ການ​ຕົກ​ແຕ່ງ​ຕົ້ນ​ພາຍ"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"ຕຸກກະຕາ​ຍີ່ປຸ່ນ"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"ທຸງ​ປາ​ຄາຣ໌ບ"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"ກະ​ດິ່ງ​ລົມ"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"ພິ​ທີ​ຊົມ​ເດືອນ"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"ກະ​ເປົາ​ໂຮງ​ຮຽນ"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"​ໝວກສຳ​ເລັດ​ການ​ສຶກ​ສາ"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"​ມ້າ​ໝຸນ"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"ຊິງ​ຊ້າ​ສະ​ຫວັນ"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"​ລົດ​ໄຟ​ເຫາະ"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"​ເບັດ​ຕຶກ​ປາ​ກັບ​ປາ"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"ໄມໂຄຣໂຟນ"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"​ກ້ອງ​ຖ່າຍ​ໜັງ"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"​ໂຮງ​ຮູບ​ເງົາ"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"​ຫູ​ຟັງ"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"ຈານ​ສີ"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"ໝວກ​ຊົງ​ສູງ"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"ເຕັ້ນ​ລະ​ຄອນ​ສັດ"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"​ປີ້"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"ແຄລັບ​ເປີ​ບອດ"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"​ສິນ​ລະ​ປະ​ການ​ສະ​ແດງ"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"ວິ​ດີ​ໂອ​ເກມ"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"ຍິງ​ເຂົ້າ​ເປົ້າ"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"​ສະ​ລັອດ​ແມັດ​ຊີນ"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"ສະນຸກເກີ"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"ລູກ​ເຕົ໋າ"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"ໂບລິງ"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"ໄພ່​ດອກ​ໄມ້"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"​ໂນດ​ດົນ​ຕີ"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"​ໂນດ​ດົນ​ຕີຫຼາຍ​ອັນ"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"​ແຊັກ​ໂຊ​ໂຟນ"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"ກີຕ້າ"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"ແປ້ນ​ພິມ​ດົນ​ຕີ"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"ແຕ"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"​ໄວ​ໂອ​ລິນ"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"ສະ​ກໍ​ດົນ​ຕີ"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"ເສື້ອ​ແລ່ນ​ກັບ​ສາຍ​ພາຍ"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"ໄມ້​ແລະ​ລູກ​ເທນນິສ"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"ສະ​ກີ​ແລະ​ເກີບ​ສະ​ກີ"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"​ບານ​ບ້​ວງແລະ​ບ່ວງ"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"ທຸງ​ເສັ້ນ​ໄຊ"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"ສະ​ໂນບອດ​ເດີ"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"​ນັກ​ແລ່ນ"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"​ນັກ​ເຊີບ"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"​ຮາງວັນ"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"​ການ​ແຂ່ງ​ມ້າ"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"​ອາ​ເມ​ລິ​ກັນ​ຟຸດບອນ"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"​ຣັກ​ບີ"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"​ນັກ​ລອຍ​ນ້ຳ"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"​​ປຸກ​ເຮືອນ"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"​ເຮືອນ​ພ້ອມ​ສວນ"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"​ອາ​ຄານ​ສຳ​ນັກ​ງານ"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"​ຫ້ອງ​ການ​ໄປ​ສະ​ນີ​ຍີ່​ປຸ່ນ"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"​ຫ້ອງ​ການ​ໄປ​ສະ​ນີ​ຢູ​ໂຣບ"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"​ໂຮງ​ໝໍ"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"​ທະ​ນາ​ຄານ"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"ເອ​ທີ​ເອັມ"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"​ໂຮງ​ແຮມ"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"ມ່ານ​ຮູດ"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"​ຮ້ານ​ສະ​ດວກ​ຊື້"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"ໂຮງຮຽນ"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"​ຫ້າງ​ສັບ​ພະ​ສິນ​ຄ້າ"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"​ໂຮງ​ງານ"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"​ໂຄມ​ໄຟ​ອິ​ຊາ​ກາ​ຢະ"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"​ຜາ​ສາດ​ຍີ່​ປຸ່ນ"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"​ຜາ​ສາດ​ຢູ​ໂຣບ"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"​ໜູ"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"ໜູ"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Ox"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"ຄວາຍ"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"ງົວ"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"​ເສືອ​ດາວ"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"​ກະ​ຕ່າຍ"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"ແມວ"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"​ມັງ​ກອນ"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"​ແຂ້"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"​ວານ"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"​ຫອຍ"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"​ງູ"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"​ມ້າ"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"ແກະ"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"​ແບ້"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"​ແກະ"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"ລິງ"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"​ໄກ່​ໂຕ​ຜູ້"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"​ໄກ່"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"​ໝາ"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"​ໝູ"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"​ໝູ​ປ່າ"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"​ຊ້າງ"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"​ປາ​ເໝິກ"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"ເປືອກ​ຫອຍ​ກຽວ"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"​ແມງ​ໄມ້"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"​ມົດ"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"​ເຜິ້ງ"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"ແມງ​ເຕົ່າ​ທອງ"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"​ປາ"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"​ປາ​ເຂດ​ຮ້ອນ"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"​ປາ​ປັກ​ເປົ້າ"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"​ເຕົ່າ"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"​ໄຂ່​ຟັກ"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"​ໄກ່​ນ້ອຍ"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"​ໜ້າ​ໄກ່​ນ້ອຍ"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"​ນົກ"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"ເພນກວິນ"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"​ໂຄ​ອາ​ລາ"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"​ພຸນ​ເດິນ"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"ອູດ​ອາ​ຣາ​ບຽນ"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"ອູດ​ແບັກ​ທຣຽນ"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"​ໂລ​ມາ"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"​ໜ້າ​ໜູ"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"​ໜ້າ​ງົວ"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"​ໜ້າ​ເສືອ"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"​ໜ້າ​ກະ​ຕ່າຍ"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"​ໜ້າ​ແມວ"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"​ໜ້າ​ມັງ​ກອນ"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"​ວານ​ພົ່ນ​ນ້ຳ"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"​ໜ້າ​ມ້າ"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"​ໜ້າ​ລິງ"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"​ໜ້າ​ໝາ"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"​ໜ້າ​ໝູ"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"​ໜ້າ​ກົບ"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"ໜ້າ​ໜູ​ແຮມສະເຕີ"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"​ໜ້າ​ໝາ​ປ່າ"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"​ໜ້າ​ໝີ"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"​ໜ້າ​ແພນ​ດ້າ"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"​ດັງ​ໝູ"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"ຮອຍ​ຕີນ"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"​ຕາ"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"​ຫູ"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"​ດັງ"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"​ປາກ"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"​ລິ້ນ"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"ຫຼັງ​ມື​ຊີ້​ຂຶ້ນ​ເທິງ"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"ຫຼັງ​ມື​ຊີ້​ລົງ​ລຸ່ມ"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"ຫຼັງ​ມື​ຊີ້​ໄປ​ຊ້າຍ"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"ຫຼັງ​ມື​ຊີ້​ໄປ​ຂວາ"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"ກຳ​ປັ້ນ"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"ມື​ໂບກ​ໄປ​ມາ"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"​ມື​ເຮັດ​ທ່າ​ໂອ​ເຄ"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"ຍົກ​ໂປ້​ໃຫ້"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"​ຊິ້ວ​ນີ້​ໂປ້​ລົງ"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"​ຕົບ​ມື"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"ແບ​ມື​ອອກ"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"​ມຸງ​ກຸດ"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"​ໝວກ​ຜູ່​ຍິງ"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"​ແວ່ນ​ຕາ"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"​ເນັກ​ໄທ"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"​ເສືອ​ຢືນ"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"​​ໂສ້ງຢີນ"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"​ຊ​ຸດ​ເດຣສ"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"​ກິ​ໂມ​ໂນ"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"​ບິ​ກີ​ນີ"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"​ເສື້ອ​ຜ້າ​ຜູ່​ຍິງ"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"ກະ​ເປົາ​"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"ກະ​ເປົາ"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"​ກະ​ເປົາ"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"​ເກີບ​ຜູ່​ຊາຍ"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"​ເກີບກ​ິ​ລ​າ"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"ເກີບ​ສົ້ນ​ສູງ"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"​ເກີບ​ຜູ່​ຍິງ"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"​ເກີດ​ບູດ​ຜູ່​ຍິງ"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"​ຮອຍ​ຕີນ"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"ຄົນ​ເປັນ​ເງົາ"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"ຄົນ​ເປັນ​ເງົາ"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"​ຜູ່​ຊ​າຍ"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"​ຜ​ູ່​ຍິງ"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"​ຜູ່​ຊາຍ"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"​ຜູ່​ຍິງ"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"ຄອບຄົວ"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"​ຊາຍ​ຍິງ​ຈູງ​ມື​ກັນ"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"​ຊ​າຍ​ສອງ​ຄົນ​ຈູງ​ມື​ກັນ"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"​ຍິງ​ສອງ​ຄົນ​ຈູງ​ມື​ກັນ"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"​ເຈົ້າ​ໜ້າ​ທີ່​ຕຳຫຼວດ"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"ຜູ່​ຍິງ​ໃສ່​ຫູ​ກະ​ຕ່າຍ"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"​ເຈົ້າ​ສາວ​ມີ​ຜ້າ​ຄຸມ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"ຄົນ​ຜົມ​​ສີບລອນ"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"ຄົນ​ໃສ່​ໝວກ​​ກົວ​ປ​ີ​ເໝົາ"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"ຄົນ​ໃສ່​ຜ້າ​ໂພກ​ຫົວ"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"ຄົນ​ອາ​ຍຸຫຼາຍກວ່າ"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"​ຜູ່​ຍິງ​ອາ​ຍຸຫຼາຍກວ່າ"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"​ແອ​ນ້ອຍ"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"​ຄົນ​ເຮັດ​ວຽກ​ກໍ່​ສ້າງ"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"ເຈົ້າ​ຍິງ"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"ຍັກ​ຍີ່​ປຸ່ນ"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"ກລອບ​ບິນ​ຍີ່​ປຸ່ນ"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"​ຜີ"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"ທູດ​​ແອ​ນ້ອຍສະ​ຫວັນ"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"ມະ​ນຸດ​ຕ່າງ​ດາວ"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"​ສັດ​ປະ​ຫລາດ​ຕ່າງ​ດາວ"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"ອິມປ໌"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"​ຫົວ​ກະ​ໂຫຼກ"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"​ພະ​ນັກ​ງານ​ບໍ​ລິ​ການ​ຂໍ້​ມູນ"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"​ຍາມ"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"​ນັກ​ເຕັ້ນ"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"​ລິ​ບ​ສະ​ຕິກ"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"​ຢາ​ທາ​ເລັບ"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"​ນວດ​ໜ້າ"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"ຕັດ​ຜົມ"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"ເສົາ​ຮ້ານ​ຕັດ​ຜົມ"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"​ເຂັມ​ສີດ​ຢາ"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"​ຢາ​ເມັດ"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"​ຮອຍ​ຈູບ"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"​ຈົດ​ໝາຍ​ຮັກ"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"​ແຫວນ"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"​ຫິນ​ອັນ​ຍະ​ມະ​ນີ"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"ຈູບ"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"​ຊໍ່​ດອກ​ໄມ້"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"​ຄ​ູ່​ຮັກ​ກັບ​ຫົວ​ໃຈ"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"ການ​ແຕ່ງດອງ"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"​ຫົວ​ໃຈ​ເຕັ້ນ"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"​ອົກ​ຫັກ"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"​ສອງ​ໃຈ"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"​ຫົວ​ໃຈ​ເປັນ​ປະ​ກາຍ"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"​ຫົວ​ໃຈ​ຂະ​ຫຍາຍ"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"​ລູກ​ສອນ​ປັກ​ຫົວ​ໃຈ"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"​ໃຈ​ສີ​ຟ້າ"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"​ໃຈ​ສີ​ຂຽວ"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"​ໃຈ​ສີ​ເຫຼືອງ"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"​ໃຈ​ສີ​ມ່ວງ"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"​ຫົວ​ໃຈ​ກັບ​ຣິບບອນ"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"​ຫົວ​ໃຈ​ວົງ​ມົນ"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"​ຕົກ​ແຕ່ງ​ຫົວ​ໃຈ"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"​ຮູບ​ເພັດ​ມີ​ຈຸດ​ທາງ​ກາງ"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"ຫຼອດ​ໄຟ"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"​ສັນ​ຍາ​ລັກ​ໃຈ​ຮ້າຍ"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"​ລະ​ເບີດ"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"​ສັນ​ຍາ​ລັກ​ນອນຫຼັບ"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"​ສັນ​ຍາ​ລັກ​ປະ​ທະ​ກັນ"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"​ສັນ​ຍາ​ລັກເຫື່ອ​ກະ​ຈາຍ"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"​ຢົດ​ນ້ຳ"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"​ສັນ​ຍາ​ລັກ​ແລ່ນ"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"ກອງ​ອຸດ​ຈາ​ລະ"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"ເບັ່ງ​ກ້າມ"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"​ດາວ​ໝຸນ"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"ບອນ​ລູນ​ຄຳ​ເວົ້າ"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"​ບອນ​ລູນ​ຄວາມ​ຄິດ"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"ດອກ​ໄມ້​ຂາວ"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"​ສັນ​ຍາ​ລັກ​ຮ້ອຍ"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"​ຖົງ​ເງິນ"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"​ອັດ​ຕາ​ແລກ​ປ່ຽນ"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"​ສັນ​ຍາ​ລັກ​ໂດ​ລ່າ​ແບບ​ໜາ"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"ບັດເຄຣດິດ"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"​ທະ​ນະ​ບັດ​ເງິນ​ເຢນ"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"ທັນນະບັດ​ຮູບ​ເງິນ​ໂດລ່າ"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"​​ທະ​ນະ​ບັດ​ເງິນ​ຢູ​ໂຣ"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"​ທະ​ນະ​ບັດ​ເງິນ​ພາວດ໌"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"ເງິນ​ຕິດ​ປີກ"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"​ແຜນ​ວາດ​ຊີ້​ຂຶ້ນ​ມີ​ຮູບ​ເງິນ​ເຢນ"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"​ບ່ອນ​ນັ່ງ"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"​ຄອມ​ພິວ​ເຕີ​ສ່ວນ​ບຸກ​ຄົນ"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"​ກະ​ເປົາ​ເດີນ​ທາງ"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"​ມິ​ນິ​ດິສ"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"ຟລັອບ​ປີ້​ດິສ"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"​ອັອບ​ຕິ​ຄອນ ດິ​ສ"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"​ດີ​ວີ​ດີ"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"​ໄຟລ໌​ໂຟນ​ເດີ"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"ເປີດ​ໂຟນເດີ​ໄຟລ໌"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"​ເຈ້ຍ​ມ້ວນ​ທາງ​ລຸ່ມ"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"​ເຈ້ຍ​ຫງາຍ​ໜ້າ​ຂຶ້ນ"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"ປະຕິທິນ"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"​ປະ​ຕ​ິ​ທິນ​ຖືກ​ຈີກ"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"​ດັດ​ຊະ​ນີ​ບັດ"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"ແຜນ​ວາດ​ຊີ້​ຂຶ້ນ"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"​ແຜນ​ວາດ​ຊີ້​ລົງ"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"​ແຜນ​ວາດ​​ແບບບາ"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"​ຄລິບບອດ"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"​ເຂັມ​ມຸດ"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"​ເຂັມ​ມຸດ​ຫົວ​ມົນ"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"ອັນ​ໜີບ​ເຈ້ຍ"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"​​ໄມ້ບັນ​ທັດ"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"​ໄມ້​ບັດ​ທັດ​ສາມຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"​ແຖບ​ບຸກ​ມາກ"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"ປຶ້ມ​ບັນ​ຊີ"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"ສະມຸດບັນທຶກ"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"ສະ​ມຸດ​ບັນ​ທຶກ​ແບບ​ມີ​ປົກ​ຕົບ​ແຕ່ງ"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"​ປຶ້ມ​ທີ່​ປິດ​ໄວ້"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"​ປຶ້ມ​ທີ່​ເປີດ​ໄວ້"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"​ປຶ້ມ​ຂຽວ"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"​ປຶ້ມ​ຟ້າ"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"​ປຶ້ມ​ສົ້ມ"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"ປຶ້ມ"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"​ປ້າຍ​ຊື່"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"ເລື່ອນ"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"​ບັນ​ທຶກ"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"​ຫູ​ໂທ​ລະ​ສັບ"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"ເພກເຈີ"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"​ເຄື່ອງ​ແຟັກ"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"ຈານ​ດາວ​ທຽມ"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"​ໂທ​ລະ​ໂຄ່ງ"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"ໂທ​ລະ​ໂຂ່ງ"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"ຖາດ​ຂາ​ອອກ"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"​ຖາດ​ຂາ​ເຂົ້າ"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"ພັດສະດຸ"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"​ສັນ​ຍາ​ລັກ​ອີ​ເມວ"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"ຈົດ​ໝາຍ​ເຂົ້າ"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"​ຈົດ​ໝາຍ​ມີ​ລູກ​ສອນ​ຢູ່​ທາງ​ເທິງ"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"ກ່ອງ​ຈົດ​ໝາຍ​ປິດ​ໄວ້ມີ​ທຸງ​ທາງ​ລຸ່ມ"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"​ກ່ອງ​ຈົດ​ໝາຍ​ປິດ​ໄວ້​ມີ​ທຸງ​ສະ​ບັດ"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"​ກ່ອງ​ຈົດ​ໝາຍ​​ເປິດ​ໄວ້​ມີ​ທຸງ​ສະ​ບັດ"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"ກ່ອງ​ຈົດ​ໝາຍ​ເປິດ​ໄວ້ມີ​ທຸງ​ທາງ​ລຸ່ມ"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"ຕູ້​ໄປ​ສະ​ນີ"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"ແຕ​ໄປ​ສະ​ນີ"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"​ໜັງ​ສື​ພິມ"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"​ໂທ​ລະ​ສັບ​​ມື​ຖື"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"ໂທ​ລະ​ສັບ​ມື​ຖື​ມີ​ລູກ​ສອນ​ຊີ້​ໄປ​ທາງ​ຂວາ​ຢູ່​ທາງ​ຊ້າຍ"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"​ໂໝດ​ສັ່ນ"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"​ໂທ​ລະ​ສັບ​ມື​ຖື​ປິດ"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"ບໍ່​ມີ​ໂທ​ລະ​ສັບ​ມື​ຖື"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"ຂີດ​ສັນ​ຍານ​ໂທ​ລະ​ສັບ"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"ກ້ອງຖ່າຍຮູບ"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"ກ້ອງວິ​ດີ​ໂອ"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"​ໂທ​ລະ​ພາບ"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"ວິທະຍຸ"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"​ກະ​ແຊັດ​ວິ​ດີ​ໂອ"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"ລູກ​ສອນ​ໄຂວ່​ກັນ"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"ລູກ​ສອນ​ໝຸນ​ວົນ​​ຕາມ​ເຂັມ​ໂມງ"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"ລູກ​ສອນ​ໝຸນ​ຕາມ​ເຂັມ​ໂມງ​ມີ​ເລກ​ສູນ​ໃນ​ວົງ​ມົນ​ຢູ່​ຊ້າຍ​ລຸ່ມ"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"ລູກ​ສອນ​ໝຸນ​ຕາມ​ເຂັມ​ໂມງ​ລວງ​ຕັ້ງ"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"​ລູກ​ສອນ​ໝຸນ​ທວນ​ເຂັມ​ໂມງ​ໃນ​ຂອບ​ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"ສັນ​ຍາ​ລັກ​ຄວາມ​ແຈ້ງ​ຕ່ຳ"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"ສັນ​ຍາ​ລັກ​ຄວາມ​ແຈ້ງ​​ສູງ"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"ລຳ​ໂພງ​ມີ​ຂີດ​ຂ້າ"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"ລຳໂພງ"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"ລຳ​ໂພງ​ມີ​ຄື້ນ​ສຽງ​ອັນ​ນຶ່ງ"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"ລຳ​ໂພງ​ມີ​ຄື້ນ​ສຽງ​​ສາມ​ອັນ"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"ແບັດເຕີຣີ"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"​​ປລັກ​ໄຟ​ຟ້າ"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"ແວ່ນ​ຂະ​ຫຍາຍ​ສ່ອງ​ໄປ​ທາງ​ຊ້າຍ"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"ແວ່ນ​ຂະ​ຫຍາຍ​ສ່ອງ​ໄປ​ທາງ​ຂວາ"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"​ລັອກ​ມີ​ປາກ​ກາ"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"ລັອກ​ທີ່​ປິດ​ໄວ້​ພ້ອມ​ກະ​ແຈ"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"​ກະ​ແຈ"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"ລັອກ"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"​​ລັອກ​ທີ່​ເປີດ​ໄວ້"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"​ກະ​ດິ່ງ"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"​ກະ​ດິ່ງ​ມີ​ຂີດ​ຂ້າ"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"ບຸກມາກ"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"​ສັນ​ຍາ​ລັກ​ລິ້ງ"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"​ປຸ່ມ​ເຄື່ອງ​ໝາຍ​ເລືອກ"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"ລູກ​ສອນ​ຊີ້​ໄປ​ທາງ​ຊ້າຍ​ມີ​ຄຳ​ວ່າ​ Back"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"​ລູກ​ສອນ​ຊີ້​ໄປ​ທາງ​ຊ້າຍ​ມີ​ຄຳ​ວ່າ​ End"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"ຄຳ​ວ່າ On ມີ​ເຄື່ອງ​ໝາຍ​ທ​້ວງ​ກັບ​ລູກ​ສອນ​ຊີ້​ໄປ​ທາງ​ຊ້າຍ​ແລະ​ຂວາ​ຢູ່​ເທິງ"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"​ຄຳ​ວ່າ Soon ມີ​ລູກ​ສອນ​ຊີ້​ໄປ​ທາງ​ຂວາ​ຢູ່​ເທິງ"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"​ຄຳ​ວ່າ Top ມີ​ລູກ​ສອນ​ຊີ້​ໄປ​ທາງ​ເທິງ​ຢູ່​ເທິງ"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"ສັນ​ຍາ​ລັກ​ຫ້າມ​ຕ່ຳ​ກວ່າ​ສິບ​ແປດ"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"ເລກ​ສິບ​ໃນ​ຂອບ​ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"ABCD ໃນ​ຂອບ​ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"abcd ໃນ​ຂອບ​ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"ໂຕ​ເລກໃນ​ຂອບ​ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"ໃສ່​ສັນຍາລັກ​ເພື່ອ​ສັນຍາລັກ"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"ໂຕ​ອັກ​ສອນ​ລາ​ຕິນໃນ​ຂອບ​ສີ່ຫຼ່ຽມ"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"ໄຟ"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"​ໄຟ​ສາຍ"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"​ປະ​ແຈ"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"​ຄ້ອນ"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"ນັອດ"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"ມີດ"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"​ປືນ​ສັ້ນ"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"​ກ້ອງ​ຈຸ​ລະ​ທັດ"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"​ກ້ອງ​ສ​່ອງ"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"ບານ​ຄ​ຣິສ​ຕັນ"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"ດາວ​ຫົກ​ຫຼ່ຽມ​ມີ​ຈ້ຳ​ທາງ​ກາງ"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"ສັນ​ຍາ​ລັກ​ພາ​ສາ​ຍີ່​ປຸ່ນ​ສຳ​ລັບ​ຜູ່​ເລີ່ມ​ຕົ້ນ"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"ສັນ​ຍາ​ລັກ​ສາມ​ງ່າມ"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"ປຸ່ມ​ສີ່ຫຼ່ຽມ​ສີ​ດຳ"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"ປຸ່ມ​ສີ່ຫຼ່ຽມ​ສີ​​ຂາວ"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"​ວົງ​ມົນ​​ໃຫຍ່ສີ​ແດງ"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"​ວົງ​ມົນ​​ໃຫຍ່ສີ​​ຟ້າ"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"ເພັດ​ເມັດ​ໃຫຍ່​ສີ​ສົ້ມ"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"ເພັດ​ເມັດ​ໃຫຍ່​ສີ​​ຟ້າ"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"ເພັດ​ເມັດ​ນ້ອຍ​ສີ​ສົ້ມ"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"ເພັດ​ເມັດ​ນ້ອຍ​ສີ​​ຟ້າ"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"ສາມຫຼ່ຽມ​ສີ​ແດງ​ຊີ​ຂຶ້ນ"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"ສາມຫຼ່ຽມ​ສີ​ແດງ​ຊີ​​ລົງ"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"ສາມຫຼ່ຽມ​ນ້ອຍສີ​ແດງ​ຊີ​ຂຶ້ນ"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"ສາມຫຼ່ຽມ​ນ້ອຍສີ​ແດງ​ຊີ​ລົງ"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​ນຶ່ງ​ໂມງ"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສອງໂມງ"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສາມໂມງ"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສີ່ໂມງ"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ຫ້າໂມງ"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ຫົກໂມງ"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ເຈັດໂມງ"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ແປດໂມງ"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ເກົ້າໂມງ"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສິບໂມງ"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສິບ​ເອັດໂມງ"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສິບ​ສອງໂມງ"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​ນຶ່ງ​ໂມງ​​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສອງ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສາມ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສີ່​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ຫ້າ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ຫົກ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ເຈັດ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ແປດ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​​ເກົ້​າໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​ສິບ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສິບ​ເອັດ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"ໂມງ​ພ້ອມ​ເຂັມ​ຊີ້​ໄປ​ເວ​ລາ​​ສິບ​ສອງ​ໂມງ​ເຄິ່ງ"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"​ພູ​ເຂົາ​ໄຟ​ຟູ​ຈິ"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"​ຫໍ​ຄອຍ​ໂຕ​ກຽວ"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"​ເທ​ພີ​ເສ​ລີ​ພາບ"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"ເງົາ​ປະ​ເທດ​ຍີ່​ປຸ່ນ"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"ໂມ​ອາຍ"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"ໜ້າ​ຍິ້ມ​ເຫັນ​ແຂ້ວ"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"ໜ້າ​ຕາຍິ້ມ​ເຫັນ​ແຂ້ວ"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"ໜ້າ​ພ້ອມດ້ວຍ​ນ້ຳ​ຕາ​ແຫ່ງ​ຄວາມ​ສຸກ"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"​ໜ້າ​ຍິ້ມ​ພ້ອມ​ກັບ​ອ້າ​ປາກ"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"​ໜ້າ​ຕາຍິ້ມ​ພ້ອມ​ກັບ​ອ້າ​ປາກ"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"​ໜ້າ​ຕາຍິ້ມ​ພ້ອມ​ກັບ​ເຫື່ອ​ຕົກ"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"​ໜ້າ​ຕາຍິ້ມ​ພ້ອມ​ກັບ​​ຫຼັບ​ຕາ"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"ໜ້າ​ຍິ້ມ​ພ້ອມ​ມີ​ວົງ​ແຫວນ​ເທິງ​ຫົວ"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"ໜ້າ​ຍິ້ມ​ມີ​ເຂົາ"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"ໜ້າ​ຍິ້ມ​ກະ​ພິບ​ຕາ​ຂ້າງ​ນຶ່ງ"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"ໜ້າ​ຕາ​ຍິ້ມ​ແຍ້ມ"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"​ໜ້າ​ຍິ້ມ​ລິ້ນ​ເລຍ​ສົບ"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"​ໜ້າ​ຜ່ອນ​ຄາຍ"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"ໜ້າ​ຍິ້ມ​ພ້ອມ​ຕາ​ເປັນ​ຫົວ​ໃຈ"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"​ໜ້າ​ຍິ້ມ​ໃສ່​ແວ່ນ​ຕາ"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"ໜ້າຍິ້ມ​​ມີ​ເລດ​ສະ​ໄນ"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"​ໜ້າ​​ຊື່ໆ"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"ໜ້າບໍ່​ມີ​ຄວາມ​ຮູ້​ສຶກ"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"ໜ້າບໍ່​​ຕະ​ຫລົກ"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"ໜ້າ​ມີ​ເຫື່ອ​ໄຫຼ"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"ໜ້າ​ໝົ່ນ​ໝອງ"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"​ໜ້າ​ສັບ​ສົນ"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"​ໜ້າ​ຜູ່​ຮ້າຍ"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"​ໜ້າ​ຈູບ"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"ໜ້າ​ເປົ່າ​ຈູບ"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"​ໜ້າ​ຈູບ​ພ້ອມ​ກັບ​ຍິ້ມ"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"ໜ້າ​ຍິ້ມ​ພ້ອມ​ກັບຫຼັບ​ຕາ"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"ໜ້າ​​ແລບ​ລິ້ນ"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"ໜ້າ​ແລບ​ລິ້ນຫຼັບ​ຕາ​ຂ້າງ​ນຶ່ງ"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"ໜ້າ​ແລບ​ລິ້ນ​ຫຼັບ​ຕາ​ສອງ​ຂ້າງ"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"​ໜ້າ​ຜິດ​ຫວັງ"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"​ໜ້າ​ເປັນ​ກັງ​ວົນ"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"​​ໜ້າ​ໃຈ​ຮ້າຍ"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"ໜ້າ​ມຸ້ຍ"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"​ໜ້າ​ຮ້ອງ​ໄຫ້"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"ໜ້າ​ຂະ​ໝວດ"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"ໜ້າ​ໃຈ​ຮ້າຍ​ລົມ​ອອກ​ດັງ"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"ໜ້າ​ຜິດ​ຫວັງ​ແຕ່​​ໂລ່ງ​ໃຈ"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"ໜ້າ​ມຸ້ຍ​ອ້າ​ປາກ"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"ໜ້າ​ເຈັບ​ປວດ"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"​ໜ້າ​ຢ້ານ"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"ໜ້າ​​ເມື່ອຍ​ສຸດ​ຂີດ"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"​​ໜ້າ​ເຫງົາ​ນອນ"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"​ໜ້າ​ເມື່ອຍ"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"ໜ້າ​ຍິ້ມ​ແຫ້ງໆ"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"​ໜ້າ​ຮ້ອງ​ໄຫ້​ສຽງ​ດັງ"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"​ໜ້າ​ອ້າ​ປາກ"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"ໜ້າ​ຕະ​ລຶງ​ງຽບ"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"ໜ້າ​ອ້າ​ປາກ​ມີ​ເຫື່ອ​ຕົກ"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"ໜ້າ​ຮ້ອງ​​ດ້ວຍ​ຄວາມ​ຢ້ານ"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"ໜ້າ​ປະຫຼາດ​ໃຈ"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"ໜ້າ​ແດງ"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"​ໜ້າ​ເຫງົາ​ນອນ"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"ໜ້າ​ວິງວຽນ"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"​ໜ້າບໍ່​ມີ​ປາກ"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"​ໜ້າ​ໃສ່​ຜ້າ​ປິດ​ປາກ"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"​ໜ້າແມວ​ຍິ້ມ"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"​ໜ້າ​ແມວ​ຍິ້ມ​ພ້ອມ​ນ້ຳ​ຕາ​ແຫ່ງ​ຄວາມ​ສຸກ"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"​ໜ້າ​ແມວ​ຍິ້ມ​ພ້ອມ​ກັບ​ອ້າ​ປາກ"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Smiling cat face with heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Cat face with wry smile"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Kissing cat face with closed eyes"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Pouting cat face"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Crying cat face"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Weary cat face"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Face with no good gesture"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Face with ok gesture"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Person bowing deeply"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"See-no-evil monkey"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Hear-no-evil monkey"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Speak-no-evil monkey"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Happy person raising one hand"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"ຄົນ​ຍົກ​ມື​ຂຶ້ນ​ສະ​ຫຼອງ"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Person frowning"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Person with pouting face"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Person with folded hands"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Rocket"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helicopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Steam locomotive"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Railway car"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"High-speed train"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"High-speed train with bullet nose"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Train"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Light rail"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Station"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tram"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Tram car"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Bus"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Oncoming bus"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Trolleybus"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Bus stop"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibus"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulance"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Fire engine"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Police car"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Oncoming police car"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taxi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Oncoming taxi"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automobile"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Oncoming automobile"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Recreational vehicle"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Delivery truck"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"ລົດ​ບັນ​ທຸກ​ພ່ວງ"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Tractor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monorail"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Mountain railway"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Suspension railway"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Mountain cableway"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Aerial tramway"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Ship"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Rowboat"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Speedboat"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"ໄຟ​ສັນຍານ​ຈະລາຈອນ​ລວງ​ນອນ"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Vertical traffic light"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Construction sign"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Police cars revolving light"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Triangular flag on post"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Door"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"No entry sign"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Smoking symbol"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"ສັນຍາລັກ​ຫ້າມ​ສູບຢາ"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Put litter in its place symbol"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Do not litter symbol"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Potable water symbol"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Non-potable water symbol"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicycle"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"No bicycles"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Bicyclist"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Mountain bicyclist"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pedestrian"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"No pedestrians"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens symbol"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens symbol"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby symbol"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Shower"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Bath"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Bathtub"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Passport control"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Customs"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Baggage claim"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Left luggage"</string>
+</resources>
diff --git a/java/res/values-lo-rLA/strings-letter-descriptions.xml b/java/res/values-lo-rLA/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ecc0b7a
--- /dev/null
+++ b/java/res/values-lo-rLA/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ໂຕ​ບົ່ງ​ຊີ້​ລຳ​ດັບ​ເພດ​ຍິງ"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"ສັນຍາລັກໄມໂຄຣ"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"​ໂຕ​ບົ່ງ​ຊີ້​ລຳ​ດັບ​ເພດ​ຊາຍ"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring above"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dot above"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dot above"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dot above"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middle dot"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceded by apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring above"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dot above"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, comma below"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, comma below"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dot below"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook above"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve and acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve and grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve and hook above"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve and tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve and dot below"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dot below"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook above"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook above"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dot below"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dot below"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook above"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn and acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn and grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dot below"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook above"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn and acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn and grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dot below"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook above"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Inverted exclamation mark"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Left-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"​​ຈ້ຳ​ເມັດ​ທາງ​ກາງ"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript one"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Right-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Inverted question mark"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Left single quotation mark"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Right single quotation mark"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Single low-9 quotation mark"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"​ເຄື່ອງ​ໝາຍ​ວົງ​ຢືມ​ຊ້າຍ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"​ເຄື່ອງ​ໝາຍ​ວົງ​ຢືມ​ຂວາ​"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"​ເຄື່ອງ​ໝາຍ​ຕໍ່​ໄມລ໌"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Single left-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Single right-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"ໂຕ​ຍົກ​ເລກ​ສີ່"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"ໂຕ​ຍົກ​ n ໂຕ​ນ້ອຍ"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"ເຄື່ອງ​ໝາຍເປ​ໂຊ"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"CARE OF"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"​ລູກ​ສອນ​ຊີ້​ໄປ​ຂວາ"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"ລູກ​ສອນ​ຊີ້​ລົງ"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"​ຊຸດ​ຫວ່າງ​ເປົ່າ"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"ເພີ່ມ"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"​ໜ້ອຍກວ່າ ຫຼື​ເທົ່າ​ກັບ"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"ຫຼາຍກວ່າ ຫຼື​ເທົ່າ​ກັບ"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"​ດາວ​ດຳ"</string>
+</resources>
diff --git a/java/res/values-lo-rLA/strings-talkback-descriptions.xml b/java/res/values-lo-rLA/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..187b63a
--- /dev/null
+++ b/java/res/values-lo-rLA/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"ສຽບ​ສາຍຫູຟັງ ເພື່ອ​ຟັງສຽງ​ລະຫັດຜ່ານ​ທີ່ຈະຖືກ​ເວົ້າອອກມາ."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"ຂໍ້ຄວາມ​ປັດຈຸບັນ​ແມ່ນ %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"ບໍ່ມີ​ການໃສ່​ຂໍ້ຄວາມ"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ແກ້​ໄຂ​ <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ເປັນ <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ດຳ​ເນີນ​ການ​ແກ້​ໄຂ​ອັດ​ຕະ​ໂນ​ມັດ"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"​ໂຕ​ອັກ​ສອນ​ທີ່ບໍ່​ຮູ້​ຈັກ"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"​ສັນ​ຍາ​ລັກ​ເພີ່ມ​ເຕີມ"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"​ສັນ​ຍາ​ລັກ"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"ລຶບ"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"ສັນຍາລັກ"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"ໂຕອັກ​ສອນ"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"ໂຕເລກ"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"​ການ​ຕັ້ງ​ຄ່າ"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ແຖບ"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"ຍະຫວ່າງ"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"ການປ້ອນ​ຂໍ້ມູນ​ດ້ວຍສຽງ"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ອີໂມຈິ"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"ກັບຄືນ"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"ຊອກຫາ"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ຈ້ຳ"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ສະລັບ​ພາສາ"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"ຕໍ່ໄປ"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"ກ່ອນໜ້ານີ້"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ເປີດ​ນຳໃຊ້ຢູ່"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock ເປີດນຳໃຊ້ຢູ່"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"ໂຫມດ​ສັນຍາລັກ"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"ໂໝດ​ສັນ​ຍາ​ລັກ​ເພີ່ມ​ເຕີມ"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"ໂຫມດ​ໂຕອັກ​ສອນ"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ໂຫມດ​ໂທລະສັບ"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ໂຫມດ​ສັນຍາລັກ​ໂທລະສັບ"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"ເຊື່ອງ​ແປ້ນພິມ​ໄວ້​ແລ້ວ"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"ກຳ​ລັງ​ສະ​ແດງແປ້ນ​ພິມ <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ວັນທີ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ວັນ​ທີ​ແລະ​ເວ​ລາ"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ອີ​ເມວ"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ຂໍ້ຄວາມ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"ໂຕເລກ"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ໂທລະສັບ"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ຂໍ້ຄວາມ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ເວລາ"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"ຫາ​ກໍ​ໃຊ້"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"​ຄົນ"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"​ວັດ​ຖຸ"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ທຳມະຊາດ"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ສະຖານທີ່"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"ສັນຍາລັກ"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"​ອີ​ໂມ​ຕິ​ຄອນ"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"ໂຕ​ພິມ​ໃຫຍ່ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"ໂຕ​ພິມ​ໃຫຍ່ I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"​ໂຕພິມ​ໃຫຍ່ I ມີ​ຈ້ຳ​ເມັດ​ຢູ່​ເທິງ"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"ສັນ​ຍາ​ລັກ​ທີ່ບໍ່​ຮູ້​ຈັກ"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"ອີ​ໂມ​ຈິ​ທີ່ບໍ່​ຮູ້​ຈັກ"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"​ມີ​ໂຕ​ອັກ​ສອນ​ສຳ​ຮອງ​ໃຫ້​ເລືອກ"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"​ປິດ​ໂຕ​ອັກ​ສອນ​ສຳ​ຮອງ​ແລ້ວ"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"​ມີ​ຄຳ​ແນະ​ນຳ​ສຳ​ຮອງ​ໃຫ້​ເລືອກ"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"​ປິດ​ການ​ແນະ​ນຳ​ສຳ​ຮອງ​ແລ້ວ"</string>
+</resources>
diff --git a/java/res/values-lo-rLA/strings.xml b/java/res/values-lo-rLA/strings.xml
index a4dbc2d..b0e090a 100644
--- a/java/res/values-lo-rLA/strings.xml
+++ b/java/res/values-lo-rLA/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"ຕົວເລືອກການປ້ອນຂໍ້ມູນ"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Research Log Commands"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"ເບິ່ງທີ່ຊື່ຂອງລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"ໂຕຊ່ວຍສະກົດໃຊ້ຂໍ້ມູນຈາກລາຍການຂອງລາຍຊື່ຜູ່ຕິດຕໍ່ຂອງທ່ານ"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"ສັ່ນເຕືອນເມື່ອພິມ"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"ສຽງໃນການກົດປຸ່ມ"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"ໂຕອັກສອນເວລາພິມ"</string>
-    <string name="general_category" msgid="1859088467017573195">"ທົ່ວໄປ"</string>
-    <string name="correction_category" msgid="2236750915056607613">"ໂຕຊ່ວຍແປງຂໍ້ຄວາມ"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"ການພິມແບບ Gesture"</string>
-    <string name="misc_category" msgid="6894192814868233453">"ໂຕເລືອກ​ອື່ນໆ"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"ການຕັ້ງຄ່າຂັ້ນສູງ"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"ຕົວເລືອກສຳລັບຜູ່ທີ່ຊຳນານ"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ປ້ອນ​ຂໍ້​ມູນ"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"​ຮູບ​ແບບ​ໜ້າ​ຕາ"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"​ໂຕ​ເລືອກ​ລະ​ບົບຫຼາຍ​ພາ​ສາ"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ພິມ​ດ້ວຍ​ທ່າ​ທາງ"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"​ການ​ແປງ​ຄຳ​ໃຫ້​ຖືກ​ຕ້ອງ"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"​ຂັ້ນ​ສູງ"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ປ່ຽນໄປໃຊ້ການປ້ອນຂໍ້ມູນແບບອື່ນ"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ໂຕປ່ຽນພາສາເປັນທັງໂຕປ່ຽນຮູບແບບການປ້ອນຂໍ້ມູນເຊັ່ນກັນ"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"ປຸ່ມປ່ຽນພາສາ"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"ຄ່າເລີ່ມຕົ້ນຂອງລະບົບ"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"ແນະນຳລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"ໃຊ້ຊື່ຈາກລາຍຊື່ຜູ່ຕິດຕໍ່ສຳລັບການແນະນຳ ແລະ ການຊ່ວຍແກ້ຄຳ"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"ຄຳແນະນຳຕາມການນຳໃຊ້ຂອງທ່ານ"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"ປັບ​ປຸງ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"ຍະຫວ່າງສອງເທື່ອເພື່ອໃສ່ຈ້ຳເມັດ"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"ກົດທີ່ປຸ່ມຍະຫວ່າງສອງເທື່ອເພື່ອໃສ່ຈ້ຳເມັດແລ້ວຕາມດ້ວຍການຍະຫວ່າງ"</string>
     <string name="auto_cap" msgid="1719746674854628252">"ເຮັດໂຕພິມໃຫຍ່ອັດຕະໂນມັດ"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"ສະແດງຫາງຂອງ Gesture"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ມີຄຳຕົວຢ່າງລອຍຂຶ້ນມາ"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ເບິ່ງຄຳທີ່ຖືກແນະນຳໃນເວລາທີ່ກຳລັງຊີ້"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : ບັນທຶກແລ້ວ"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"ສຽບສາຍຫູຟັງເພື່ອຟັງລະຫັດຜ່ານ."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"ຂໍ້ຄວາມປະຈຸບັນແມ່ນ %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"ບໍ່ມີການໃສ່ຂໍ້ຄວາມ"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> ແກ້ໄຂ <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ເປັນ <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> ປະຕິບັດການແປງຄຳຜິດອັດຕະໂນມັດ"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"ລະຫັດກະແຈ %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift ເປີດນຳໃຊ້ຢູ່ (ກົດເພື່ອປິດນຳໃຊ້)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock ເປີດຢູ່ (ກົດເພື່ອປິດນຳໃຊ້)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"ລຶບ"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"ສັນຍາລັກ"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"ໂຕອັກ​ສອນ"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"ໂຕເລກ"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"ການຕັ້ງຄ່າ"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"ແທັບ"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"ຍະຫວ່າງ"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"ການປ້ອນຂໍ້ມູນດ້ວຍສຽງ"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"ຮອຍຍິ້ມ"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"ກັບຄືນ"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"ຊອກຫາ"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"ຈ້ຳ"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"ສະລັບພາສາ"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"ຕໍ່ໄປ"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"ກ່ອນໜ້າ"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift ເປີດນຳໃຊ້ຢູ່"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock ເປີດນຳໃຊ້ຢູ່"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift ປິດນຳໃຊ້ຢູ່"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"ໂຫມດສັນຍາລັກ"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"ໂຫມດ​ໂຕອັກ​ສອນ"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"ໂຫມດໂທລະສັບ"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"ໂຫມດສັນຍາລັກໂທລະສັບ"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"ແປ້ນ​ພິມ​ເຊື່ອງ​ໄວ້"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"ກຳລັງສະແດງແປ້ນພິມ <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"ວັນທີ"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"ວັນ​ທີ​ແລະ​ເວ​ລາ"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"ຂໍ້ຄວາມ"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"ໂຕເລກ"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"ໂທລະສັບ"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"ຂໍ້ຄວາມ"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ເວລາ"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"ການສະແດງທ່າທາງດ້ວຍປະໂຫຍກ"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ໃສ່ຍະຫວ່າງເຂົ້າໄປໃນຂະນະທີ່ສະແດງທ່າທາງ ໂດຍການເລື່ອນໄປທີ່ປຸ່ມຍະຫວ່າງ"</string>
     <string name="voice_input" msgid="3583258583521397548">"ປຸ່ມປ້ອນຂໍ້ມູນດ້ວຍສຽງ"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"ແປ້ນພິມຫຼັກ"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"ໃນແປ້ນພິມສັນຍາລັກ"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"ປິດ"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ໄມໃນແປ້ນພິມຫຼັກ"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ໄມໃນແປ້ນພິມສັນຍາລັກ"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ການປ້ອນຂໍ້ມູນດ້ວຍສຽງປິດນຳໃຊ້ຢູ່"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"ບໍ່ມີວິທີການປ້ອນສຽງເປີດນໍາໃຊ້. ໃຫ້ກວດເບິ່ງການຕັ້ງຄ່າໃນເມນູ ພາສາ &amp; ການປ້ອນຂໍ້ມູນ."</string>
     <string name="configure_input_method" msgid="373356270290742459">"ຕັ້ງຄ່າຮູບແບບການປ້ອນຂໍ້ມູນ"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"ພາສາການປ້ອນຂໍ້ມູນ"</string>
     <string name="send_feedback" msgid="1780431884109392046">"ສົ່ງຄຳຕິຊົມ"</string>
     <string name="select_language" msgid="3693815588777926848">"ພາສາການປ້ອນຂໍ້ມູນ"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"ກົດອີກຄັ້ງເພື່ອບັນທຶກ"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"ມີວັດຈະນານຸກົມ"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"ເປີດນຳໃຊ້ຄຳຕິຊົມຈາກຜູ່ໃຊ້"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"ຊ່ວຍເພີ່ມປະສິດທິພາບໂຕແກ້ໄຂການປ້ອນຂໍ້ມູນ ໂດຍການສົ່ງສະຖິຕິການນຳໃຊ້ ແລະການລາຍການຂໍ້ຜິດພາດໂດຍອັດຕະໂນມັດ"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"ສີສັນແປ້ນພິມ"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"ອັງກິດ (ສະຫະລາດຊະອານາຈັກ)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"ອັງກິດ (ສະຫະລັດຯ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"ສະເປນ (ອາເມລິກາ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"ພາສາອັງກິດ (ອັງກິດ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"ອັງກິດ (ອາເມລິກາ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"ແອສປາໂຍນ (ສະ​ຫະ​ລັດ​) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (ດັ້ງເດີມ)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ອັງ​ກິດ (ສະ​ຫະ​ລາດ​ຊະ​ອາ​ນາ​ຈັກ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ອັງ​ກິດ (ສະ​ຫະ​ລັດຯ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ສະ​ແປນ​ນິດ (ສະ​ຫະ​ລັດຯ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ດັ້ງ​ເດີມ)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ຊິ​ຣິວ​ລິກ)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ລາ​ຕິນ)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"ບໍ່ມີພາສາ (ໂຕອັກສອນ)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"ໂຕອັກສອນ (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"ໂຕອັກສອນ (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"ໂຕອັກສອນ (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"ໂຕອັກສອນ (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"ອີໂມຈິ"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"ຮູບແບບສີ"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"ສີຂາວ"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"ສີຟ້າ"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"ຮູບ​ແບບ​ສີ​ສັນ​ແປ້ນ​ພິມ"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"​ຂາວ​ແຈ້ງ"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"ຟ້າ​ແຈ​້ງ"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"​ສະ​ສານ​ມືດ"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"​ສະ​ສານ​ແຈ້ງ"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"ຮູບແບບການປ້ອນຂໍ້ມູນສ່ວນຕົວ"</string>
     <string name="add_style" msgid="6163126614514489951">"ເພີ່ມຮູບແບບ"</string>
     <string name="add" msgid="8299699805688017798">"ເພີ່ມ"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"ເປີດນຳໃຊ້"</string>
     <string name="not_now" msgid="6172462888202790482">"ບໍ່ແມ່ນຕອນນີ້"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ຮູບແບບການປ້ອນຂໍ້ມູນທີ່ຄືກັນມີຢູ່ແລ້ວ: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"ໂໝດການສຶກສາ Usability"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"ໄລຍະເວລາຂອງການກົດປຸ່ມ"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ໄລຍະເວລາຂອງການສັ່ນໃນການກົດປຸ່ມ"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"ລະດັບສຽງຂອງການກົດປຸ່ມ"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"ອ່ານໄຟລ໌ວັດຈະນານຸກົມພາຍນອກ"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ບໍ່ມີໄຟລ໌ວັດຈະນານຸກົມໃນໂຟນເດີຂອງການດາວໂຫລດ"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ເລືອກໄຟລ໌ວັດຈະນານຸກົມເພື່ອຕິດຕັ້ງ"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"ຕິດຕັ້ງໄຟລ໌ນີ້ສຳລັບ <xliff:g id="LOCALE_NAME">%s</xliff:g> ແທ້ບໍ່?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"ຕິດ​ຕັ້ງ​ໄຟ​ລ໌​ນີ້​ສຳ​ລັບ <xliff:g id="LANGUAGE_NAME">%s</xliff:g> ແທ້ບໍ່??"</string>
     <string name="error" msgid="8940763624668513648">"ມີຂໍ້ຜິດພາດເກີດຂຶ້ນ"</string>
     <string name="button_default" msgid="3988017840431881491">"ຄ່າເລີ່ມຕົ້ນ"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"ຍິນ​ດີ​ຕ້ອນ​ຮັບສູ່ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"ດຶງຂໍ້ມູນໃຫມ່"</string>
     <string name="last_update" msgid="730467549913588780">"ອັບເດດຫຼ້າສຸດ"</string>
     <string name="message_updating" msgid="4457761393932375219">"ກຳລັງກວດການອັບເດດ"</string>
-    <string name="message_loading" msgid="8689096636874758814">"ກຳລັງໂຫລດ..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"ກຳລັງໂຫຼດ..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"ວັດຈະນານຸກົມຫຼັກ"</string>
     <string name="cancel" msgid="6830980399865683324">"ຍົກເລີກ"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"ການຕັ້ງຄ່າ"</string>
     <string name="install_dict" msgid="180852772562189365">"ຕິດຕັ້ງ"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"ຍົກເລີກ"</string>
     <string name="delete_dict" msgid="756853268088330054">"ລຶບ"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"ພາສາທີ່ທ່ານເລືອກໃຊ້ໃນອຸປະກອນຂອງທ່ານນັ້ນ ມີວັດຈະນານຸກົມໃຫ້ໃຊ້ພ້ອມ.&lt;br/&gt; ພວກເຮົາແນະນຳໃຫ້ &lt;b&gt;ດາວໂຫລດ&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> ວັດຈະນານຸກົມດັ່ງກ່າວ ເພື່ອເພີ່ມປະສົບການໃນການພິມຂອງທ່ານ.&lt;br/&gt; &lt;br/&gt; ການດາວໂຫລດອາດຈະໃຊ້ເວລາພຽງໜຶ່ງເຖິງສອງນາທີ ໂດຍການໃຊ້ 3G. ທ່ານອາດຈະເສຍຄ່າບໍລິການສຳລັບອິນເຕີເນັດ ຫາກທ່ານບໍ່ມີ &lt;b&gt;ການນຳໃຊ້ອິນເຕີເນັດແບບບໍ່ຈຳກັດ&lt;/b&gt;.&lt;br/&gt; ຫາກທ່ານບໍ່ແນ່ໃຈວ່າຮູບແບບການໃຊ້ໃດທີ່ທ່ານມີຢູ່ ພວກເຮົາແນະນຳໃຫ້ຊອກຫາການເຊື່ອມຕໍ່ Wi-Fi ເພື່ອດາວໂຫລດມັນໂດຍອັດຕະໂນມັດ.&lt;br/&gt; &lt;br/&gt; ເຄັດລັບ: ທ່ານສາມາດດາວໂຫລດ ແລະ ລຶບວັດຈະນານຸກົມໄດ້ທີ່ &lt;b&gt;ພາສາ &amp; ການປ້ອນຂໍ້ມູນ&lt;/b&gt; ຢູ່ໃນເມນູ &lt;b&gt;ການຕັ້ງຄ່າ&lt;/b&gt; ຂອງອຸປະກອນພົກພາຂອງທ່ານ."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ພາ​ສາ​ທີ່​ເລືອກ​ໃນ​ອຸ​ປະ​ກອນ​ມື​ຖື​ຂອງ​ທ່າ​ນັ້ນ​ມີ​ວັດ​ຈະ​ນາ​ນຸ​ກົມ​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້.&lt;br/&gt; ພວ​ກ​ເຮົາ​ຂໍ​ແນະ​ນຳ​ໃຫ້ &lt;b&gt;ດາວ​ໂຫລດ&lt;/b&gt; ວັດ​ຈ​ະ​ນາ​ນຸ​ກົມ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ເພື່ອ​ປັບ​ປຸງ​ປະ​ສົບ​ການ​ໃນ​ການ​ພິມ​ຂອງ​ທ່ານ.&lt;br/&gt; &lt;br/&gt; ການ​ດາວ​ໂຫລດ​ອາດ​ໃຊ້​ເວ​ລາ​ສອງ​ສາມ​ນາ​ທີ​ຜ່ານ​ເຄືອ​ຂ່າຍ 3G. ທ່ານ​ອາ​ດ​ຖືກ​ຮຽກ​ເກັບ​ຄ່າ​ຂໍ້​ມູນ​ໄດ້​ຫາກ​ທ່ານບໍ່​ໄດ້​ໃຊ້ &lt;b&gt;ແພັກ​ເກດ​ຂໍ້​ມູນ​ແບບບໍ່​ຈຳ​ກັດ&lt;/b&gt;.&lt;br/&gt; ຫາກ​ທ່ານບໍ່​ແນ່​ໃຈ​ວ່າ​ທ່ານ​ໃຊ້​ແພັກ​ເກດ​ແບບ​ໃດ​ຢູ່ ພວກ​ເຮົາ​ຂໍ​ແນະ​ນຳ​ໃຫ້​ທ່ານ​ເຊື່ອມ​ຕໍ່ເຄືອ​ຂ່າຍ Wi-Fi ໃດ​ນຶ່ງ​ແທນ​ເພື່ອ​ເລີ່ມ​ຕົ້ນ​ການ​ດາວ​ໂຫລດ​ໂດຍ​ອັດ​ຕະ​ໂນ​ມັດ.&lt;br/&gt; &lt;br/&gt; ເຄັດ​ລັບ: ທ່ານ​ສາ​ມາ​ດ​ດາວ​ໂຫລດ ແລະ​ລຶບ​ວັດ​ຈະ​ນາ​ນຸ​ກົມ​ອອກ​ໄດ້​ໂດຍ​ການ​ໄປ​ທີ່ &lt;b&gt;ພາ​ສາ &amp; ການ​ປ້ອນ​ຂໍ້​ມູນ&lt;/b&gt; ໃນ​ເມ​ນູ &lt;b&gt;ການ​ຕັ້ງ​ຄ່າ&lt;/b&gt; ຂອງ​ອຸ​ປະ​ກອນ​ມື​ຖື​ຂອງ​ທ່ານ."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"ດາວໂຫລດດຽວນີ້ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"ດາວ​ໂຫລດຜ່ານ Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"ວັດຈະນານຸກົມສາມາດໃຊ້ໄດ້ກັບ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"ມີ​ວັດ​ຈະ​ນາ​ນຸ​ກົມ​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້​ກັບ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"ກົດທີ່ກວດຄືນ ແລະ ດາວໂຫລດ"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"ກຳລັງດາວໂຫລດ: ການແນະນຳສຳລັບ <xliff:g id="LANGUAGE">%1$s</xliff:g> ແລະມັນຈະພ້ອມນຳໃຊ້ໄວໆນີ້"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ກຳ​ລັງ​ດາວ​ໂຫລດ: ການ​ແນະ​ນຳ​ສຳ​ລັບ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ຈະ​ພ້ອມ​ໃນ​ໄວໆ​ນີ້."</string>
     <string name="version_text" msgid="2715354215568469385">"ເວີຊັນ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"ເພີ່ມ"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"ເພີ່ມໄປທີ່ວັດຈະນານຸກົມ"</string>
diff --git a/java/res/values-lt/strings-action-keys.xml b/java/res/values-lt/strings-action-keys.xml
index 39b3894..f7fa400 100644
--- a/java/res/values-lt/strings-action-keys.xml
+++ b/java/res/values-lt/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Anks."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Atl."</string>
     <string name="label_send_key" msgid="482252074224462163">"Siųs."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Paieška"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pris."</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Lauk."</string>
 </resources>
diff --git a/java/res/values-lt/strings-config-important-notice.xml b/java/res/values-lt/strings-config-important-notice.xml
new file mode 100644
index 0000000..93c66e0
--- /dev/null
+++ b/java/res/values-lt/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Mokytis iš ryšių ir įvestų duomenų, siekiant pagerinti pasiūlymus"</string>
+</resources>
diff --git a/java/res/values-lt/strings-letter-descriptions.xml b/java/res/values-lt/strings-letter-descriptions.xml
new file mode 100644
index 0000000..5017ac0
--- /dev/null
+++ b/java/res/values-lt/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Moteriškas kelintinis rodiklis"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Ženklas „mikro-“"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Vyriškas kelintinis rodiklis"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Dviguba S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A su kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A su riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A su trema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A su apskritimu viršuje"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E ligatūra"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C sedilė"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E su kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E su trema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I su kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I su trema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N su riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O su kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O su riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O su trema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O su brūkšniu"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U su kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U su trema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y su trema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A su brūkšniu viršuje"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A su lankeliu"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A nosinė"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C su tašku viršuje"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C su paukšteliu"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D su paukšteliu"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D su brūkšniu"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E su brūkšniu viršuje"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E su lankeliu"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E su tašku viršuje"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E nosinė"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E su paukšteliu"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G su lankeliu"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G su tašku viršuje"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G sedilė"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H su brūkšniu"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I su riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I su brūkšniu viršuje"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I su lankeliu"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I nosinė"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I be taško"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J ligatūra"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K sedilė"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L sedilė"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L su paukšteliu"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L su tašku viduryje"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L su brūkšniu"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N sedilė"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N su paukšteliu"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N su apostrofu priekyje"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O su brūkšniu viršuje"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O su lankeliu"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O su dvigubu dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E ligatūra"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R sedilė"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R su paukšteliu"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S sedilė"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S su paukšteliu"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T sedilė"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T su paukšteliu"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T su brūkšniu"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U su riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U su brūkšniu viršuje"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U su lankeliu"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U su apskritimu viršuje"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U su dvigubu dešininio kirčio ženklu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U nosinė"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y su cirkumfleksu"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z su dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z su tašku viršuje"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z su paukšteliu"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Ilgoji S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O su rageliu"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U su rageliu"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S su kableliu apačioje"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T su kableliu apačioje"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A su tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A su kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A su cirkumfleksu ir dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A su cirkumfleksu ir kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A su cirkumfleksu ir kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A su cirkumfleksu ir riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A su cirkumfleksu ir tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A su lankeliu ir dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A su lankeliu ir kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A su lankeliu ir kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A su lankeliu ir riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A su lankeliu ir tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E su tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E su kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E su riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E su cirkumfleksu ir dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E su cirkumfleksu ir kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E su cirkumfleksu ir kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E su cirkumfleksu ir riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E su cirkumfleksu ir tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I su kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I su tašku apačioje"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O su tašku apačioje"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O su kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O su cirkumfleksu ir dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O su cirkumfleksu ir kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O su cirkumfleksu ir kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O su cirkumfleksu ir riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O su cirkumfleksu ir tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O su rageliu ir dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O su rageliu ir kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O su rageliu ir kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O su rageliu ir riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O su rageliu ir tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U su tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U su kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U su rageliu ir dešininiu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U su rageliu ir kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U su rageliu ir kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U su rageliu ir riestiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U su rageliu ir tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y su kairiniu kirčio ženklu"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y su tašku apačioje"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y su kabliu viršuje"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y su riestiniu kirčio ženklu"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Apverstas šauktukas"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Į kairę nukreiptos dvigubos laužtinės kabutės"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Taškas viduryje"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Viršutinis indeksas skaitmuo 1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Į dešinę nukreiptos dvigubos laužtinės kabutės"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Apverstas klaustukas"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Kairiosios viengubos kabutės"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Dešiniosios viengubos kabutės"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Viengubos apatinės kabutės (devynetukai)"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Kairiosios dvigubos kabutės"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Dešiniosios dvigubos kabutės"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kryžiaus ženklas"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dvigubo kryžiaus ženklas"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promilės ženklas"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Tiesus vertikalus apostrofas"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dvigubas tiesus vertikalus apostrofas"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Į kairę nukreiptos viengubos kabutės"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Į dešinę nukreiptos viengubos kabutės"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Viršutinis indeksas skaitmuo 4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Viršutinis indeksas mažoji lotynų k. raidė n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso ženklas"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Perduoti kam kitam"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Rodyklė dešinėn"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Rodyklė žemyn"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tuščioji aibė"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Prieaugis"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mažiau nei arba lygu"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Daugiau nei arba lygu"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Juoda žvaigždutė"</string>
+</resources>
diff --git a/java/res/values-lt/strings-talkback-descriptions.xml b/java/res/values-lt/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..18b09dd
--- /dev/null
+++ b/java/res/values-lt/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Prijunkite ausines, kad išgirstumėte sakomus slaptažodžio klavišus."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Dabartinis tekstas yra %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nėra įvesto teksto"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> pataiso <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> į <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> atlieka automatinį taisymą"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Nežinomas simbolis"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Klavišas „Shift“"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Daugiau simbolių"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Klavišas „Shift“"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboliai"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Klavišas „Shift“"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Ištrinti"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simbolių klavišas"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Raidžių klavišas"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Skaičių klavišas"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Nustatymai"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabuliavimo klavišas"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Tarpo klavišas"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Balso įvestis"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Jaustukai"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Grįžti"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Paieška"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Taškas"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Keisti kalbą"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Kitas"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Ankstesnis"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Klavišas „Shift“ įgalintas"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Didžiųjų raidžių klavišas įgalintas"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simbolių režimas"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Daugiau simbolių režimas"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Raidžių režimas"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonų numerių režimas"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefonų numerių simbolių režimas"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Klaviatūra paslėpta"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Klaviatūra rodoma <xliff:g id="KEYBOARD_MODE">%s</xliff:g> režimu"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datos"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datos ir laiko"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"el. pašto"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"susirašinėjimo pranešimais"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"skaičių"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefonų numerių"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teksto"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"laiko"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Naujausi"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Žmonės"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objektai"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Gamta"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Vietos"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboliai"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Jaustukai"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Didžioji <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Didžioji I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Didžioji I su tašku viršuje"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nežinomas simbolis"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nežinomas jaustukas"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatyvūs ženklai pasiekiami"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatyvūs simboliai atmetami"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatyvūs pasiūlymai pasiekiami"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatyvūs pasiūlymai atmetami"</string>
+</resources>
diff --git a/java/res/values-lt/strings.xml b/java/res/values-lt/strings.xml
index 1f94394..cac1287 100644
--- a/java/res/values-lt/strings.xml
+++ b/java/res/values-lt/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Įvesties parinktys"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Tyrinėti žurnalo komandas"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kontaktų vardų paieška"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Rašybos tikrinimo progr. naudoja įrašus, esančius kontaktų sąraše"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibruoti, kai paspaudžiami klavišai"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Klavišo paspaudimo garsas"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Iššoka paspaudus klavišą"</string>
-    <string name="general_category" msgid="1859088467017573195">"Bendra"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Teksto taisymas"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Teksto vedimas gestais"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Kitos parinktys"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Išplėstiniai nustatymai"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Parinktys ekspertams"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Perj. į kt. įvesties būd."</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kalbos perjungimo klavišu taip pat perjungiami įvesties būdai"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Kalbos keitimo klavišas"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Sist. numat. nustat."</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Siūlyti kontaktų vardus"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Siūlant ir taisant naudoti vardus iš „Kontaktų“"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Suasmeninti pasiūlymai"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Patobulinti „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Tšk. ir tarp. pal. dukart"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dukart palietus tarpo klavišą įterpiamas taškas ir tarpas."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automatinis didžiųjų raidžių rašymas"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Rodyti gestų kelią"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinaminė slankioji peržiūra"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Gestikuliuojant peržiūrėti siūlomą žodį"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: išsaugota"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Prijunkite ausines, kad išgirstumėte sakomus slaptažodžio klavišus."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Dabartinis tekstas yra %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nėra įvesto teksto"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> pataiso „<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>“ į „<xliff:g id="CORRECTED">%3$s</xliff:g>“"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> atlieka automatinį taisymą"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Klavišo kodas %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Antrojo lygio klavišas"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Įjungtas antrasis lygis (palieskite, kad išjungtumėte)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Įjungtos didžiosios raidės (palieskite, kad išjungtumėte)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Ištrinti"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simboliai"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Raidės"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Skaičiai"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Nustatymai"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Skirtukas"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Tarpas"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Įvestis balsu"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Šypsenėlė"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Grįžti"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Ieškoti"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Taškas"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Keisti kalbą"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Kitas"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Ankstesnis"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Įgalintas antrasis lygis"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Įgalintos didžiosios raidės"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Antrasis lygis išjungtas"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Simbolių režimas"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Raidžių režimas"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefono režimas"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefono simbolių režimas"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Klaviatūra paslėpta"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Klaviatūra rodoma <xliff:g id="MODE">%s</xliff:g> režimu"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datos"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datos ir laiko"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"el. pašto"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"susirašinėjimo pranešimais"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"skaičių"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefonų numerių"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teksto"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"laiko"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frazės gestas"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Atlikdami gestus įveskite tarpus perbraukę tarpo klavišą"</string>
     <string name="voice_input" msgid="3583258583521397548">"Įvesties balsu klavišas"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pagr. klaviatūroje"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Simbolių klaviatūr."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Išjungta"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrof. pagr. klav."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrof. simb. klav."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balso įv. neleidž."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nėra jokių įgalintų įvesties balsu metodų. Patikrinkite kalbos ir įvesties nustatymus."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigūruoti įvesties metodus"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Įvesties kalbos"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Siųsti atsiliepimą"</string>
     <string name="select_language" msgid="3693815588777926848">"Įvesties kalbos"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Jei norite išsaugoti, palieskite dar kartą"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Žodynas galimas"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Įgalinti naudotojų atsiliepimus"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Padėkite patobulinti šią įvesties metodo redagavimo priemonę automatiškai siųsdami naudojimo statistiką ir strigčių ataskaitas"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Klaviatūros tema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Anglų k. (JK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Anglų k. (JAV)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Ispanų k. (JAV)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Angliška (JK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Angliška (JAV) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Ispanų k. (JAV) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicinė)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Anglų (JK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Anglų (JAV) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Ispanų (JAV) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicinė)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kirilica)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (lotynų)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Kalbos nėra (abėcėlė)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Abėcėlė (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Abėcėlė (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Abėcėlė („Colemak“)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Abėcėlė (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Jaustukai"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Spalvų schema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Balta"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Mėlyna"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Pasirinkti įvesties stilių"</string>
     <string name="add_style" msgid="6163126614514489951">"Prid. stilių"</string>
     <string name="add" msgid="8299699805688017798">"Pridėti"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Įgalinti"</string>
     <string name="not_now" msgid="6172462888202790482">"Ne dabar"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Toks pat įvesties stilius jau yra: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tinkamumo tyrimo režimas"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Klavišo ilgo paspaudimo delsa"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrav. paspaudus mygt. trukmė"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Garso paspaudus mygt. garsumas"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Skaityti išorinį žodyno failą"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Atsisiuntimų aplanke nėra žodyno failų"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Pasirinkite diegiamą žodyno failą"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Ar tikrai įdiegti šį failą <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Ar tikrai įdiegti šį failą <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Įvyko klaida"</string>
     <string name="button_default" msgid="3988017840431881491">"Numatytieji"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Sveiki! Tai „<xliff:g id="APPLICATION_NAME">%s</xliff:g>“"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Atnaujinti"</string>
     <string name="last_update" msgid="730467549913588780">"Paskutinį kartą atnaujinta"</string>
     <string name="message_updating" msgid="4457761393932375219">"Ieškoma naujinių"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Įkeliama..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Įkeliama…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Pagrindinis žodynas"</string>
     <string name="cancel" msgid="6830980399865683324">"Atšaukti"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Nustatymai"</string>
     <string name="install_dict" msgid="180852772562189365">"Įdiegti"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Atšaukti"</string>
     <string name="delete_dict" msgid="756853268088330054">"Ištrinti"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Galimas mobiliajame įrenginyje pasirinktos kalbos žodynas.&lt;br/&gt; Rekomenduojame &lt;b&gt;atsisiųsti&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> žodyną, kad būtų patogiau įvesti tekstą.&lt;br/&gt; &lt;br/&gt; Atsisiuntimas per 3G turėtų trukti 1–2 min. Jei neturite &lt;b&gt;neribotų duomenų plano&lt;/b&gt;, galite būti apmokestinti.&lt;br/&gt; Jei nežinote, kokį planą turite, rekomenduojame rasti „Wi-Fi“ ryšį, kad atsisiuntimas prasidėtų automatiškai.&lt;br/&gt; &lt;br/&gt; Patarimas: galite atsisiųsti ir pašalinti žodynus mobiliojo įrenginio meniu &lt;b&gt;Nustatymai&lt;/b&gt; skiltyje &lt;b&gt;Kalba ir įvestis&lt;/b&gt;."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Galimas jūsų mobiliajame įrenginyje pasirinktos kalbos žodynas.&lt;br/&gt; Rekomenduojame &lt;b&gt;atsisiųsti&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> žodyną, kad patobulintumėte teksto įvedimą.&lt;br/&gt; &lt;br/&gt; Naudojant 3G ryšį atsisiuntimas užtruks vieną ar dvi minutes. Jei naudojate ne &lt;b&gt;neribotų duomenų planą&lt;/b&gt;, gali būti taikomi mokesčiai.&lt;br/&gt; Jei nesate tikri, kurį duomenų planą naudojate, rekomenduojame rasti „Wi-Fi“ ryšį, kad atsisiuntimas būtų pradėtas automatiškai.&lt;br/&gt; &lt;br/&gt; Patarimas: žodynus galite atsisiųsti ir pašalinti apsilankę mobiliojo įrenginio skiltyje &lt;b&gt;Kalba ir įvestis&lt;/b&gt;, esančioje meniu &lt;b&gt;Nustatymai&lt;/b&gt;."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Atsisiųsti dabar (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Atsisiųsti per „Wi-Fi“"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Galimas <xliff:g id="LANGUAGE">%1$s</xliff:g> žodynas"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Galimas <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> žodynas"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Paspauskite, kad peržiūrėtumėte ir atsisiųstumėte"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Atsisiunčiama. Netrukus bus galimi <xliff:g id="LANGUAGE">%1$s</xliff:g> pasiūlymai."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Atsisiunčiama. Netrukus bus galimi <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> pasiūlymai."</string>
     <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> versija"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Pridėti"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Pridėti prie žodyno"</string>
diff --git a/java/res/values-lv/strings-action-keys.xml b/java/res/values-lv/strings-action-keys.xml
index c2fbda2..69988d7 100644
--- a/java/res/values-lv/strings-action-keys.xml
+++ b/java/res/values-lv/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Iepr."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Gatavs"</string>
     <string name="label_send_key" msgid="482252074224462163">"Sūtīt"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Meklēt"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauze"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Gaidīt"</string>
 </resources>
diff --git a/java/res/values-lv/strings-config-important-notice.xml b/java/res/values-lv/strings-config-important-notice.xml
new file mode 100644
index 0000000..15dc4b3
--- /dev/null
+++ b/java/res/values-lv/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Izmantojiet saziņu un ievadītos datus, lai uzlabotu ieteikumus."</string>
+</resources>
diff --git a/java/res/values-lv/strings-letter-descriptions.xml b/java/res/values-lv/strings-letter-descriptions.xml
new file mode 100644
index 0000000..395d9ca
--- /dev/null
+++ b/java/res/values-lv/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Sieviešu dzimtes kārtas skaitļa vārds"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro zīme"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Vīriešu dzimtes kārtas skaitļa vārds"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S ligatūra"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A ar gravi"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A ar akcentu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A ar tildi"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A ar diairēsi"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A ar aplīti virs burta"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A-E ligatūra"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C ar sediļu"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E ar gravi"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E ar akcentu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E ar diairēsi"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I ar gravi"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I ar akcentu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I ar diairēsi"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N ar tildi"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O ar gravi"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O ar akcentu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O ar tildi"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O ar diairēsi"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O ar vilkumu"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U ar gravi"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U ar akcentu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U ar diairēsi"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y ar akcentu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y ar diairēsi"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A ar garumzīmi"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A ar īsuma zīmi"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A ar ogonek astīti"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C ar akcentu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C ar punktu virs burta"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D ar vilkumu"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E ar garumzīmi"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E ar īsuma zīmi"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E ar punktu virs burta"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E ar ogonek astīti"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G ar īsuma zīmi"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G ar punktu virs burta"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G ar sediļu"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H ar vilkumu"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I ar tildi"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I ar garumzīmi"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I ar īsuma zīmi"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I ar ogonek astīti"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Bezpunkta I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I-J ligatūra"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K ar sediļu"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L ar akcentu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L ar sediļu"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L ar viduspunktu"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L ar vilkumu"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N ar akcentu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N ar sediļu"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N ar apostrofu pirms burta"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O ar garumzīmi"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O ar īsuma zīmi"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O ar dubultakcentu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O-E ligatūra"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R ar akcentu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R ar sediļu"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S ar akcentu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S ar sediļu"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T ar sediļu"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T ar vilkumu"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U ar tildi"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U ar garumzīmi"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U ar īsuma zīmi"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U ar aplīti virs burta"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U ar dubultakcentu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U ar ogonek astīti"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y ar cirkumfleksu"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z ar akcentu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z ar aplīti virs burta"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z ar apgriezto jumtiņu"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Garais S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O ar raga zīmi"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U ar raga zīmi"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S ar komatu zem burta"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T ar komatu zem burta"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Neitrāls patskanis"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A ar punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A ar āķa zīmi"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A ar cirkumfleksu un akcentu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A ar cirkumfleksu un gravi"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A ar cirkumfleksu un āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A ar cirkumfleksu un tildi"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A ar cirkumfleksu un punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A ar īsuma zīmi un akcentu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A ar īsuma zīmi un gravi"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A ar īsuma zīmi un āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A ar īsuma zīmi un tildi"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A ar īsuma zīmi un punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E ar punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E ar āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E ar tildi"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E ar cirkumfleksu un akcentu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E ar cirkumfleksu un gravi"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E ar cirkumfleksu un āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E ar cirkumfleksu un tildi"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E ar cirkumfleksu un punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I ar āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I ar punktu zem burta"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O ar punktu zem burta"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O ar āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O ar cirkumfleksu un akcentu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O ar cirkumfleksu un gravi"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O ar cirkumfleksu un āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O ar cirkumfleksu un tildi"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O ar cirkumfleksu un punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O ar raga zīmi un akcentu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O ar raga zīmi un gravi"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O ar raga zīmi un āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O ar raga zīmi un tildi"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O ar raga zīmi un punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U ar punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U ar āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U ar raga zīmi un akcentu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U ar raga zīmi un gravi"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U ar raga zīmi un āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U ar raga zīmi un tildi"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U ar raga zīmi un punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y ar gravi"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y ar punktu zem burta"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y ar āķa zīmi virs burta"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y ar tildi"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Apgriezta izsaukuma zīme"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Pa kreisi vērsta dubultā leņķa pēdiņa"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Viduspunkts"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"“Viens” augšrakstā"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Pa labi vērsta dubultā leņķa pēdiņa"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Apgriezta jautājuma zīme"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Viena kreisās puses pēdiņa"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Viena labās puses pēdiņa"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Viena izliekta “9” formas pēdiņa"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Divas kreisās puses pēdiņas"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Divas labās puses pēdiņas"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Krustiņš"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dubultkrustiņš"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promiles zīme"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Štrihs"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dubultštrihs"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Viena pa kreisi vērsta leņķa pēdiņa"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Viena pa labi vērsta leņķa pēdiņa"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"“Četri” augšrakstā"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Latīņu mazais burts “n” augšrakstā"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso zīme"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"c/o"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Pa labi vērsta bultiņa"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Uz leju vērsta bultiņa"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tukša kopa"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Palielinājums"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mazāks par vai vienāds ar"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Lielāks par vai vienāds ar"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Melna zvaigzne"</string>
+</resources>
diff --git a/java/res/values-lv/strings-talkback-descriptions.xml b/java/res/values-lv/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..2fe7f91
--- /dev/null
+++ b/java/res/values-lv/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Pievienojiet austiņas, lai dzirdētu paroles rakstzīmes."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Pašreizējais teksts ir %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Teksts nav ievadīts"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Nospiežot taustiņu <xliff:g id="KEY_NAME">%1$s</xliff:g>, “<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>” tiek labots uz “<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>”."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Taustiņam <xliff:g id="KEY_NAME">%1$s</xliff:g> ir automātiskas labošanas funkcija."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Nezināma rakstzīme"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Pārslēgšanas taustiņš"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Citi simboli"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Pārslēgšanas taustiņš"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboli"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Pārslēgšanas taustiņš"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Dzēšanas taustiņš"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simboli"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Burti"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Cipari"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Iestatījumi"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabulēšanas taustiņš"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Atstarpēšanas taustiņš"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Balss ievade"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emocijzīmes"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Ievadīšanas taustiņš"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Meklēšanas taustiņš"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punkta aizzīme"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Valodas mainīšana"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Tālāk"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Atpakaļ"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Pārslēgšanas režīms ir iespējots"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Burtslēgs ir iespējots"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Simbolu režīms"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Citu simbolu režīms"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Burtu režīms"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Tālruņa režīms"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Tālruņa simbolu režīms"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastatūra ir paslēpta"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Tiek rādīts tastatūras režīms: <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datums"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datums un laiks"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-pasts"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ziņojumapmaiņa"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"cipari"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"tālrunis"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teksts"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"laiks"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Pēdējie"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Cilvēki"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objekti"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Daba"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Vietas"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emocijzīmes"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Lielais burts “<xliff:g id="LOWER_LETTER">%s</xliff:g>”"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Lielais burts “I”"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Lielais burts “I” ar punktu virs tā"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nezināms simbols"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nezināma emocijzīme"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Ir pieejamas alternatīvas rakstzīmes."</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatīvās rakstzīmes netiek rādītas."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Ir pieejami alternatīvi ieteikumi."</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatīvie ieteikumi netiek rādīti."</string>
+</resources>
diff --git a/java/res/values-lv/strings.xml b/java/res/values-lv/strings.xml
index 8ea24ed..798d517 100644
--- a/java/res/values-lv/strings.xml
+++ b/java/res/values-lv/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Ievades opcijas"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Izpētes žurnāla komandas"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Meklēt kontaktp. vārdus"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Pareizrakst. pārbaudītājs lieto ierakstus no kontaktp. saraksta."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrēt, nospiežot taustiņu"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Skaņa, nospiežot taustiņu"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Nospiežot taustiņu, parādīt uznirstošo izvēlni"</string>
-    <string name="general_category" msgid="1859088467017573195">"Vispārīgi"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Teksta korekcija"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Ievade ar žestiem"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Citas opcijas"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Papildu iestatījumi"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opcijas ekspertiem"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Pārsl. uz citām iev. met."</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Valodas pārslēgš. taustiņu var lietot arī citām ievades metodēm."</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Valodas pārslēgšanas taustiņš"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Sistēmas noklusējums"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Ieteikt kontaktp. vārdus"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Izmantot kontaktpersonu vārdus kā ieteikumus un labojumus"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalizēti ieteikumi"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Uzlabot lietotni <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dubultpiesk. = punkts"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Divreiz pieskaroties atst. taustiņam, ievada punktu un atstarpi."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automātiska lielo burtu lietošana"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Rādīt žesta pēdas"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamisk. peldošais priekšsk."</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Skatiet ieteikto vārdu, veicot žestu."</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: saglabāts"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Pievienojiet austiņas, lai dzirdētu paroles rakstzīmes."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Pašreizējais teksts ir %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nav ievadīts teksts"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Nospiežot taustiņu <xliff:g id="KEY">%1$s</xliff:g>, “<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>” tiek labots uz “<xliff:g id="CORRECTED">%3$s</xliff:g>”."</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Taustiņam <xliff:g id="KEY">%1$s</xliff:g> ir automātiskas labošanas funkcija."</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Taustiņu kods %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Pārslēgšanas taustiņš"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Pārslēgšanas taustiņš iespējots (pieskarieties, lai atspējotu)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Burtslēgs iespējots (pieskarieties, lai atspējotu)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Dzēšanas taustiņš"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simboli"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Burti"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Skaitļi"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Iestatījumi"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulēšanas taustiņš"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Atstarpes taustiņš"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Balss ievade"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smaidoša seja"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Ievadīšanas taustiņš"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Meklēt"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punkts"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Mainīt valodu"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Nākamā"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Iepriekšējā"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Pārslēgšanas režīms iespējots"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Burtslēgs iespējots"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Pārslēgšanas režīms atspējots"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Simbolu režīms"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Burtu režīms"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Tālruņa režīms"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Tālruņa simbolu režīms"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tastatūra ir paslēpta"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Tiek rādīts tastatūras režīms <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datums"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datums un laiks"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-pasts"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"ziņojumapmaiņa"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"cipari"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"tālrunis"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teksts"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"laiks"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frāzes žests"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Lai ievietotu atstarpi, velciet uz atstarpes taustiņu."</string>
     <string name="voice_input" msgid="3583258583521397548">"Balss ievades atslēga"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Uz galv. tastatūras"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Uz simbolu tastat."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Izslēgts"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikr.uz galv.tastat."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikr.uz simb.tastat."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Balss iev. atspējota"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nav iespējota neviena balss ievades metode. Pārbaudiet valodas un ievades iestatījumus."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Ievades metožu konfigurēšana"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Ievades valodas"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Sūtīt atsauksmes"</string>
     <string name="select_language" msgid="3693815588777926848">"Ievades valodas"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Pieskarieties vēlreiz, lai saglabātu."</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Ir pieejama vārdnīca."</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Iespējot lietotāju atsauksmes"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Palīdziet uzlabot šo ievades metodes redaktoru, automātiski nosūtot lietojuma statistiku un avāriju pārskatus."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastatūras motīvs"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Angļu valoda (Lielbritānija)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Angļu valoda (ASV)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spāņu (ASV)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Angļu (Lielbritānija) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Angļu (ASV) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spāņu (ASV) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicionālā)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Angļu (Lielbritānija) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Angļu (ASV) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spāņu (ASV) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicionālā)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kirilica)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latīņu)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Nav valodas (alfabēts)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabēts (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabēts (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabēts (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabēts (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Japāņu emocijzīmes"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Krāsu shēma"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Balta"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Zila"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Pielāg. ievades stili"</string>
     <string name="add_style" msgid="6163126614514489951">"Piev. stilu"</string>
     <string name="add" msgid="8299699805688017798">"Pievienot"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Iespējot"</string>
     <string name="not_now" msgid="6172462888202790482">"Vēlāk"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Šāds ievades stils jau pastāv: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Lietojamības izpētes režīms"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Taustiņa ilgās nosp. noildze"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Taust. nosp. vibrācijas ilgums"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Taustiņu nosp. skaņas skaļums"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Ārējās vārdnīcas faila nolasīšana"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Mapē Lejupielādes nav neviena vārdnīcas faila."</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Instalējamā vārdnīcas faila atlasīšana"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Vai instalēt šo failu šādai valodai: <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Vai tiešām instalēt šo failu šādai valodai: <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Radās kļūda"</string>
     <string name="button_default" msgid="3988017840431881491">"Noklusējums"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Laipni lūdzam pakalpojumā <xliff:g id="APPLICATION_NAME">%s</xliff:g>,"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Atsvaidzināt"</string>
     <string name="last_update" msgid="730467549913588780">"Pēdējo reizi atjaunināts"</string>
     <string name="message_updating" msgid="4457761393932375219">"Notiek pārbaude, vai ir pieejami atjauninājumi."</string>
-    <string name="message_loading" msgid="8689096636874758814">"Notiek ielāde..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Notiek ielāde…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Galvenā vārdnīca"</string>
     <string name="cancel" msgid="6830980399865683324">"Atcelt"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Iestatījumi"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalēt"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Atcelt"</string>
     <string name="delete_dict" msgid="756853268088330054">"Dzēst"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Mobilajā ierīcē atlasītajai valodai ir pieejama vārdnīca.&lt;br/&gt;Ieteicams &lt;b&gt;lejupielādēt&lt;/b&gt; vārdnīcu (<xliff:g id="LANGUAGE">%1$s</xliff:g>), lai uzlabotu rakstīšanas iespējas.&lt;br/&gt;&lt;br/&gt;Lejupielāde, izmantojot 3G tīklu, ilgs dažas minūtes. Ja nelietojat &lt;b&gt;neierobežotu datu plānu&lt;/b&gt;, var tikt piemērota maksa.&lt;br/&gt;Ja nezināt, kādu datu plānu lietojat, ieteicams atrast Wi-Fi savienojumu, lai automātiski sāktu lejupielādi.&lt;br/&gt;&lt;br/&gt;Padoms. Vārdnīcas var lejupielādēt un noņemt mobilās ierīces izvēlnes &lt;b&gt;Iestatījumi&lt;/b&gt; sadaļā &lt;b&gt;Valoda un ievade&lt;/b&gt;."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Mobilajā ierīcē atlasītajai valodai ir pieejama vārdnīca.&lt;br/&gt; Ieteicams &lt;b&gt;lejupielādēt&lt;/b&gt; šo vārdnīcu (<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>), lai uzlabotu rakstīšanas iespējas.&lt;br/&gt; &lt;br/&gt; Lejupielāde, izmantojot 3G tīklu, ilgs tikai dažas minūtes. Ja nelietojat &lt;b&gt;neierobežotu datu plānu&lt;/b&gt;, var tikt piemērota maksa.&lt;br/&gt; Ja nezināt, kādu datu plānu lietojat, ieteicams atrast Wi-Fi savienojumu, lai automātiski sāktu lejupielādi.&lt;br/&gt; &lt;br/&gt; Padoms: vārdnīcas var lejupielādēt un noņemt sadaļā &lt;b&gt;Valoda un ievade&lt;/b&gt;, kas atrodas mobilās ierīces izvēlnē &lt;b&gt;Iestatījumi&lt;/b&gt;."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Lejupielādēt tūlīt (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Lejupielādēt, izmantojot Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Ir pieejama vārdnīca šādai valodai: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Ir pieejama vārdnīca šādai valodai: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Nospiediet, lai pārskatītu un lejupielādētu"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Notiek lejupielāde. Drīz būs pieejami ieteikumi šādai valodai: <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Notiek lejupielāde. Drīz būs pieejami ieteikumi šādai valodai: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="version_text" msgid="2715354215568469385">"Versija <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Pievienot"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Pievienot vārdnīcai"</string>
diff --git a/java/res/values-mk-rMK/strings-action-keys.xml b/java/res/values-mk-rMK/strings-action-keys.xml
new file mode 100644
index 0000000..f4fc9ce
--- /dev/null
+++ b/java/res/values-mk-rMK/strings-action-keys.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for label_go_key (4033615332628671065) -->
+    <skip />
+    <!-- no translation found for label_next_key (5586407279258592635) -->
+    <skip />
+    <!-- no translation found for label_previous_key (1421141755779895275) -->
+    <skip />
+    <!-- no translation found for label_done_key (7564866296502630852) -->
+    <skip />
+    <!-- no translation found for label_send_key (482252074224462163) -->
+    <skip />
+    <string name="label_search_key" msgid="7965186050435796642">"Барај"</string>
+    <!-- no translation found for label_pause_key (2225922926459730642) -->
+    <skip />
+    <!-- no translation found for label_wait_key (5891247853595466039) -->
+    <skip />
+</resources>
diff --git a/java/res/values-mk-rMK/strings-letter-descriptions.xml b/java/res/values-mk-rMK/strings-letter-descriptions.xml
new file mode 100644
index 0000000..be21fc8
--- /dev/null
+++ b/java/res/values-mk-rMK/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Женски реден индикатор"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Знак за микро"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Машки реден индикатор"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Остро С"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, со надреден знак"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, со акцент"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, тилда"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, дијареза"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, со прстен горе"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, лигатура"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, седилја"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, со надреден знак"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, со акцент"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, дијареза"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, со надреден знак"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, со акцент"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, дијареза"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Ет"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, тилда"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, со надреден знак"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, со акцент"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, тилда"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, дијареза"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, прецртано"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, со надреден знак"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, со акцент"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, дијареза"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, со акцент"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Трн"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, дијареза"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, макрон"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, бреве"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, огонек"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, со акцент"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, циркумфлекс"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, со точка одозгора"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, карон"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, карон"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, прецртано"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, макрон"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, бреве"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, со точка одозгора"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, огонек"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, карон"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, циркумфлекс"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, бреве"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, со точка одозгора"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, седилја"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, прецртано"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, тилда"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, макрон"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, бреве"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, огонек"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I без точка"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, лигатура"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, седилја"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, со акцент"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, седилја"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, карон"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, средната точка"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, прецртано"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, со акцент"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, седилја"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, карон"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, со апостроф"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Енг"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, макрон"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, бреве"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, со двоен акцент"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, лигатура"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, со акцент"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, седилја"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, карон"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, со акцент"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, циркумфлекс"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, седилја"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, карон"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, седилја"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, карон"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, прецртано"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, тилда"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, макрон"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, бреве"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, со прстен горе"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, со двоен акцент"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, огонек"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, циркумфлекс"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, со акцент"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, со точка одозгора"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, карон"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Долго S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, рог"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, рог"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, запирка подолу"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Т, запирка подолу"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"А, точка подолу"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"А, кука над"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, циркумфлекс и со акцент"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, циркумфлекс и со надреден знак"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, циркумфлекс и кука над"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, циркумфлекс и тилда"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, циркумфлекс и точка подолу"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, бреве и со акцент"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, бреве и со надреден знак"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, бреве и кука над"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, бреве и тилда"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, бреве и точка подолу"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Е, точка подолу"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Е, кука над"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, тилда"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, циркумфлекс и со акцент"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, циркумфлекс и со надреден знак"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, циркумфлекс и кука над"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, циркумфлекс и тилда"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, циркумфлекс и точка подолу"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, кука над"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, точка подолу"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, точка подолу"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, кука над"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, циркумфлекс и со акцент"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, циркумфлекс и со надреден знак"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, циркумфлекс и кука над"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, циркумфлекс и тилда"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, циркумфлекс и точка подолу"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, рог и со акцент"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, рог и со надреден знак"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, рог и кука над"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, рог и тилда"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, рог и точка подолу"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, точка подолу"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, кука над"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, рог и со акцент"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, рог и со надреден знак"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, рог и кука над"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, рог и тилда"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, рог и точка подолу"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, со надреден знак"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, точка подолу"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, кука над"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, тилда"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Превртен извичник"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Леви аглести наводници"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Средна точка"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"На степен еден"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Десни аглести наводници"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Превртен прашалник"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Леви полунаводници"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Десни полунаводници"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Леви 9-полунаводници"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Леви наводници"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Десни наводници"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Крстче"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Дупло крстче"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Знак за промили"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Прим"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Секундум"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Леви аглести полунаводници"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Десни аглести полунаводници"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"На степен четири"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"На степен n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Знак пезо"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Стрелка надесно"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Стрелка надолу"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Празен сет"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Диференцијал"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Помало или еднакво на"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Поголемо или еднакво на"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Црна ѕвезда"</string>
+</resources>
diff --git a/java/res/values-mk-rMK/strings-talkback-descriptions.xml b/java/res/values-mk-rMK/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..12a6413
--- /dev/null
+++ b/java/res/values-mk-rMK/strings-talkback-descriptions.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for spoken_use_headphones (4313642710742229868) -->
+    <skip />
+    <!-- no translation found for spoken_current_text_is (4240549866156675799) -->
+    <skip />
+    <!-- no translation found for spoken_no_text_entered (1711276837961785646) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct (8989324692167993804) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct_obscured (7769449372355268412) -->
+    <skip />
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Непознат знак"</string>
+    <!-- no translation found for spoken_description_shift (7209798151676638728) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift (3483198879916435717) -->
+    <skip />
+    <!-- no translation found for spoken_description_shift_shifted (3122704922642232605) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift_shifted (5179175466878186081) -->
+    <skip />
+    <!-- no translation found for spoken_description_caps_lock (1224851412185975036) -->
+    <skip />
+    <!-- no translation found for spoken_description_delete (3878902286264983302) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_symbol (8244903740201126590) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_alpha (4081215210530031950) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_numeric (4560261331530795682) -->
+    <skip />
+    <!-- no translation found for spoken_description_settings (7281251004003143204) -->
+    <skip />
+    <!-- no translation found for spoken_description_tab (8210782459446866716) -->
+    <skip />
+    <!-- no translation found for spoken_description_space (5908716896642059145) -->
+    <skip />
+    <!-- no translation found for spoken_description_mic (6153138783813452464) -->
+    <skip />
+    <!-- no translation found for spoken_description_emoji (7990051553008088470) -->
+    <skip />
+    <!-- no translation found for spoken_description_return (3183692287397645708) -->
+    <skip />
+    <!-- no translation found for spoken_description_search (5099937658231911288) -->
+    <skip />
+    <!-- no translation found for spoken_description_dot (5644176501632325560) -->
+    <skip />
+    <!-- no translation found for spoken_description_language_switch (6818666779313544553) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_next (431761808119616962) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_previous (2919072174697865110) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_on (5107180516341258979) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_locked (7307477738053606881) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol (111186851131446691) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol_shift (4305607977537665389) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_alpha (4676004119618778911) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone (2061220553756692903) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone_shift (7879963803547701090) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_hidden (2313574218950517779) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_mode (6698257917367823205) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date (6597407244976713364) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date_time (3642804408726668808) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_email (1239682082047693644) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_im (3812086215529493501) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_number (5395042245837996809) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_phone (2486230278064523665) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_text (9138789594969187494) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_time (8558297845514402675) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_url (8072011652949962550) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_recents (4185344945205590692) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_people (8414196269847492817) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_objects (6116297906606195278) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_nature (5018340512472354640) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_places (1163315840948545317) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_symbols (474680659024880601) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_emoticons (456737544787823539) -->
+    <skip />
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Голема буква <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Голема буква I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Голема буква I, со точка одозгора"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Непознат симбол"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Непозната емотикона"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Достапни се алтернативни знаци"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Алтернативните знаци се отфрлени"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Достапни се алтернативни предлози"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Алтернативните предлози се отфрлени"</string>
+</resources>
diff --git a/java/res/values-mk-rMK/strings.xml b/java/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..d7945e3
--- /dev/null
+++ b/java/res/values-mk-rMK/strings.xml
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
+    <skip />
+    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
+    <skip />
+    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
+    <skip />
+    <!-- no translation found for popup_on_keypress (123894815723512944) -->
+    <skip />
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+    <skip />
+    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
+    <skip />
+    <!-- no translation found for settings_system_default (6268225104743331821) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
+    <skip />
+    <!-- no translation found for use_personalized_dicts (5167396352105467626) -->
+    <skip />
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Подобри <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <!-- no translation found for use_double_space_period (8781529969425082860) -->
+    <skip />
+    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
+    <skip />
+    <!-- no translation found for auto_cap (1719746674854628252) -->
+    <skip />
+    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
+    <skip />
+    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
+    <skip />
+    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
+    <skip />
+    <!-- no translation found for main_dictionary (4798763781818361168) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+    <skip />
+    <!-- no translation found for auto_correction (7630720885194996950) -->
+    <skip />
+    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
+    <skip />
+    <!-- no translation found for bigram_prediction (1084449187723948550) -->
+    <skip />
+    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
+    <skip />
+    <!-- no translation found for gesture_input (826951152254563827) -->
+    <skip />
+    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
+    <skip />
+    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware (2078291600664682496) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware_summary (4371385818348528538) -->
+    <skip />
+    <!-- no translation found for voice_input (3583258583521397548) -->
+    <skip />
+    <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
+    <skip />
+    <!-- no translation found for configure_input_method (373356270290742459) -->
+    <skip />
+    <!-- no translation found for language_selection_title (1651299598555326750) -->
+    <skip />
+    <!-- no translation found for send_feedback (1780431884109392046) -->
+    <skip />
+    <!-- no translation found for select_language (3693815588777926848) -->
+    <skip />
+    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
+    <skip />
+    <!-- no translation found for has_dictionary (6071847973466625007) -->
+    <skip />
+    <!-- no translation found for keyboard_layout (8451164783510487501) -->
+    <skip />
+    <!-- no translation found for subtype_en_GB (88170601942311355) -->
+    <skip />
+    <!-- no translation found for subtype_en_US (6160452336634534239) -->
+    <skip />
+    <!-- no translation found for subtype_es_US (5583145191430180200) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_GB (1931018968641592304) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_US (8809311287529805422) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_es_US (510930471167541338) -->
+    <skip />
+    <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
+    <skip />
+    <!-- no translation found for subtype_generic_cyrillic (7486451947618138947) -->
+    <skip />
+    <!-- no translation found for subtype_generic_latin (9128716486310604145) -->
+    <skip />
+    <!-- no translation found for subtype_no_language (7137390094240139495) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
+    <skip />
+    <!-- no translation found for subtype_emoji (7483586578074549196) -->
+    <skip />
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
+    <skip />
+    <!-- no translation found for add_style (6163126614514489951) -->
+    <skip />
+    <!-- no translation found for add (8299699805688017798) -->
+    <skip />
+    <!-- no translation found for remove (4486081658752944606) -->
+    <skip />
+    <!-- no translation found for save (7646738597196767214) -->
+    <skip />
+    <!-- no translation found for subtype_locale (8576443440738143764) -->
+    <skip />
+    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
+    <skip />
+    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
+    <skip />
+    <!-- no translation found for enable (5031294444630523247) -->
+    <skip />
+    <!-- no translation found for not_now (6172462888202790482) -->
+    <skip />
+    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
+    <skip />
+    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
+    <skip />
+    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_confirm_install_message (4782116251651288054) -->
+    <skip />
+    <!-- no translation found for error (8940763624668513648) -->
+    <skip />
+    <!-- no translation found for button_default (3988017840431881491) -->
+    <skip />
+    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
+    <skip />
+    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
+    <skip />
+    <!-- no translation found for setup_start_action (8936036460897347708) -->
+    <skip />
+    <!-- no translation found for setup_next_action (371821437915144603) -->
+    <skip />
+    <!-- no translation found for setup_steps_title (6400373034871816182) -->
+    <skip />
+    <!-- no translation found for setup_step1_title (3147967630253462315) -->
+    <skip />
+    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
+    <skip />
+    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+    <skip />
+    <!-- no translation found for setup_step1_action (4366513534999901728) -->
+    <skip />
+    <!-- no translation found for setup_step2_title (6860725447906690594) -->
+    <skip />
+    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
+    <skip />
+    <!-- no translation found for setup_step2_action (1660330307159824337) -->
+    <skip />
+    <!-- no translation found for setup_step3_title (3154757183631490281) -->
+    <skip />
+    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
+    <skip />
+    <!-- no translation found for setup_step3_action (600879797256942259) -->
+    <skip />
+    <!-- no translation found for setup_finish_action (276559243409465389) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
+    <skip />
+    <!-- no translation found for app_name (6320102637491234792) -->
+    <skip />
+    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
+    <skip />
+    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
+    <skip />
+    <!-- no translation found for download_description (6014835283119198591) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
+    <skip />
+    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
+    <skip />
+    <!-- no translation found for user_dictionaries (3582332055892252845) -->
+    <skip />
+    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
+    <skip />
+    <!-- no translation found for dictionary_available (4728975345815214218) -->
+    <skip />
+    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
+    <skip />
+    <!-- no translation found for dictionary_installed (8081558343559342962) -->
+    <skip />
+    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
+    <skip />
+    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
+    <skip />
+    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
+    <skip />
+    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
+    <skip />
+    <!-- no translation found for last_update (730467549913588780) -->
+    <skip />
+    <!-- no translation found for message_updating (4457761393932375219) -->
+    <skip />
+    <!-- no translation found for message_loading (5638680861387748936) -->
+    <skip />
+    <!-- no translation found for main_dict_description (3072821352793492143) -->
+    <skip />
+    <!-- no translation found for cancel (6830980399865683324) -->
+    <skip />
+    <!-- no translation found for go_to_settings (3876892339342569259) -->
+    <skip />
+    <!-- no translation found for install_dict (180852772562189365) -->
+    <skip />
+    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
+    <skip />
+    <!-- no translation found for delete_dict (756853268088330054) -->
+    <skip />
+    <!-- no translation found for should_download_over_metered_prompt (1583881200688185508) -->
+    <skip />
+    <!-- no translation found for download_over_metered (1643065851159409546) -->
+    <skip />
+    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_title (4583842811218581658) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
+    <skip />
+    <!-- no translation found for toast_downloading_suggestions (6128155879830851739) -->
+    <skip />
+    <!-- no translation found for version_text (2715354215568469385) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+    <skip />
+    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+    <skip />
+</resources>
diff --git a/java/res/values-mk/bools.xml b/java/res/values-mk/bools.xml
deleted file mode 100644
index 840d20c..0000000
--- a/java/res/values-mk/bools.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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>
-    <!-- Whether this input method should be used as the default for a locale. Override it
-         for supported languages. -->
-    <bool name="im_is_default">true</bool>
-</resources>
diff --git a/java/res/values-mk/strings-action-keys.xml b/java/res/values-mk/strings-action-keys.xml
deleted file mode 100644
index 40de51b..0000000
--- a/java/res/values-mk/strings-action-keys.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="label_go_key" msgid="1635148082137219148">"Оди"</string>
-    <string name="label_next_key" msgid="362972844525672568">"Следно"</string>
-    <string name="label_previous_key" msgid="1211868118071386787">"Претходно"</string>
-    <string name="label_done_key" msgid="2441578748772529288">"Готово"</string>
-    <string name="label_send_key" msgid="2815056534433717444">"Испрати"</string>
-    <!-- no translation found for label_pause_key (181098308428035340) -->
-    <skip />
-    <!-- no translation found for label_wait_key (6402152600878093134) -->
-    <skip />
-</resources>
diff --git a/java/res/values-mk/strings.xml b/java/res/values-mk/strings.xml
deleted file mode 100644
index 6f685d3..0000000
--- a/java/res/values-mk/strings.xml
+++ /dev/null
@@ -1,455 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
-    <skip />
-    <!-- no translation found for english_ime_research_log (8492602295696577851) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
-    <skip />
-    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
-    <skip />
-    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
-    <skip />
-    <!-- no translation found for popup_on_keypress (123894815723512944) -->
-    <skip />
-    <!-- no translation found for general_category (1859088467017573195) -->
-    <skip />
-    <!-- no translation found for correction_category (2236750915056607613) -->
-    <skip />
-    <!-- no translation found for gesture_typing_category (497263612130532630) -->
-    <skip />
-    <!-- no translation found for misc_category (6894192814868233453) -->
-    <skip />
-    <!-- no translation found for advanced_settings (362895144495591463) -->
-    <skip />
-    <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
-    <skip />
-    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
-    <skip />
-    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
-    <skip />
-    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
-    <skip />
-    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
-    <skip />
-    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
-    <skip />
-    <!-- no translation found for settings_system_default (6268225104743331821) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
-    <skip />
-    <!-- no translation found for use_double_space_period (8781529969425082860) -->
-    <skip />
-    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
-    <skip />
-    <!-- no translation found for auto_cap (1719746674854628252) -->
-    <skip />
-    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
-    <skip />
-    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
-    <skip />
-    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
-    <skip />
-    <!-- no translation found for main_dictionary (4798763781818361168) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
-    <skip />
-    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
-    <skip />
-    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
-    <skip />
-    <!-- no translation found for auto_correction (7630720885194996950) -->
-    <skip />
-    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
-    <skip />
-    <!-- no translation found for bigram_prediction (1084449187723948550) -->
-    <skip />
-    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
-    <skip />
-    <!-- no translation found for gesture_input (826951152254563827) -->
-    <skip />
-    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
-    <skip />
-    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
-    <skip />
-    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
-    <skip />
-    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
-    <skip />
-    <!-- no translation found for added_word (8993883354622484372) -->
-    <skip />
-    <!-- no translation found for spoken_use_headphones (896961781287283493) -->
-    <skip />
-    <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
-    <skip />
-    <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct (8005997889020109763) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct_obscured (6276420476908833791) -->
-    <skip />
-    <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift (244197883292549308) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
-    <skip />
-    <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
-    <skip />
-    <!-- no translation found for spoken_description_delete (8740376944276199801) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
-    <skip />
-    <!-- no translation found for spoken_description_settings (4627462689603838099) -->
-    <skip />
-    <!-- no translation found for spoken_description_tab (2667716002663482248) -->
-    <skip />
-    <!-- no translation found for spoken_description_space (2582521050049860859) -->
-    <skip />
-    <!-- no translation found for spoken_description_mic (615536748882611950) -->
-    <skip />
-    <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
-    <skip />
-    <!-- no translation found for spoken_description_return (8178083177238315647) -->
-    <skip />
-    <!-- no translation found for spoken_description_search (1247236163755920808) -->
-    <skip />
-    <!-- no translation found for spoken_description_dot (40711082435231673) -->
-    <skip />
-    <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
-    <skip />
-    <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
-    <skip />
-    <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
-    <skip />
-    <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
-    <skip />
-    <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
-    <skip />
-    <!-- no translation found for voice_input (3583258583521397548) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
-    <skip />
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
-    <!-- no translation found for language_selection_title (1651299598555326750) -->
-    <skip />
-    <!-- no translation found for send_feedback (1780431884109392046) -->
-    <skip />
-    <!-- no translation found for select_language (3693815588777926848) -->
-    <skip />
-    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
-    <skip />
-    <!-- no translation found for has_dictionary (6071847973466625007) -->
-    <skip />
-    <!-- no translation found for prefs_enable_log (6620424505072963557) -->
-    <skip />
-    <!-- no translation found for prefs_description_log (7525225584555429211) -->
-    <skip />
-    <!-- no translation found for keyboard_layout (8451164783510487501) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
-    <!-- no translation found for subtype_es_US (5583145191430180200) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
-    <skip />
-    <!-- no translation found for subtype_nepali_traditional (9032247506728040447) -->
-    <skip />
-    <!-- no translation found for subtype_no_language (7137390094240139495) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
-    <skip />
-    <!-- no translation found for subtype_emoji (7483586578074549196) -->
-    <skip />
-    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
-    <skip />
-    <!-- no translation found for add_style (6163126614514489951) -->
-    <skip />
-    <!-- no translation found for add (8299699805688017798) -->
-    <skip />
-    <!-- no translation found for remove (4486081658752944606) -->
-    <skip />
-    <!-- no translation found for save (7646738597196767214) -->
-    <skip />
-    <!-- no translation found for subtype_locale (8576443440738143764) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
-    <skip />
-    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
-    <skip />
-    <!-- no translation found for enable (5031294444630523247) -->
-    <skip />
-    <!-- no translation found for not_now (6172462888202790482) -->
-    <skip />
-    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
-    <skip />
-    <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
-    <skip />
-    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
-    <skip />
-    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
-    <skip />
-    <!-- no translation found for error (8940763624668513648) -->
-    <skip />
-    <!-- no translation found for button_default (3988017840431881491) -->
-    <skip />
-    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
-    <skip />
-    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
-    <skip />
-    <!-- no translation found for setup_start_action (8936036460897347708) -->
-    <skip />
-    <!-- no translation found for setup_next_action (371821437915144603) -->
-    <skip />
-    <!-- no translation found for setup_steps_title (6400373034871816182) -->
-    <skip />
-    <!-- no translation found for setup_step1_title (3147967630253462315) -->
-    <skip />
-    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
-    <skip />
-    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
-    <skip />
-    <!-- no translation found for setup_step1_action (4366513534999901728) -->
-    <skip />
-    <!-- no translation found for setup_step2_title (6860725447906690594) -->
-    <skip />
-    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
-    <skip />
-    <!-- no translation found for setup_step2_action (1660330307159824337) -->
-    <skip />
-    <!-- no translation found for setup_step3_title (3154757183631490281) -->
-    <skip />
-    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
-    <skip />
-    <!-- no translation found for setup_step3_action (600879797256942259) -->
-    <skip />
-    <!-- no translation found for setup_finish_action (276559243409465389) -->
-    <skip />
-    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
-    <skip />
-    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
-    <skip />
-    <!-- no translation found for app_name (6320102637491234792) -->
-    <skip />
-    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
-    <skip />
-    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
-    <skip />
-    <!-- no translation found for download_description (6014835283119198591) -->
-    <skip />
-    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
-    <skip />
-    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
-    <skip />
-    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
-    <skip />
-    <!-- no translation found for user_dictionaries (3582332055892252845) -->
-    <skip />
-    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
-    <skip />
-    <!-- no translation found for dictionary_available (4728975345815214218) -->
-    <skip />
-    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
-    <skip />
-    <!-- no translation found for dictionary_installed (8081558343559342962) -->
-    <skip />
-    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
-    <skip />
-    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
-    <skip />
-    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
-    <skip />
-    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
-    <skip />
-    <!-- no translation found for last_update (730467549913588780) -->
-    <skip />
-    <!-- no translation found for message_updating (4457761393932375219) -->
-    <skip />
-    <!-- no translation found for message_loading (8689096636874758814) -->
-    <skip />
-    <!-- no translation found for main_dict_description (3072821352793492143) -->
-    <skip />
-    <!-- no translation found for cancel (6830980399865683324) -->
-    <skip />
-    <!-- no translation found for install_dict (180852772562189365) -->
-    <skip />
-    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
-    <skip />
-    <!-- no translation found for delete_dict (756853268088330054) -->
-    <skip />
-    <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
-    <skip />
-    <!-- no translation found for download_over_metered (1643065851159409546) -->
-    <skip />
-    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
-    <skip />
-    <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
-    <skip />
-    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
-    <skip />
-    <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
-    <skip />
-    <!-- no translation found for version_text (2715354215568469385) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
-    <skip />
-    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
-    <skip />
-</resources>
diff --git a/java/res/values-ml-rIN/strings-action-keys.xml b/java/res/values-ml-rIN/strings-action-keys.xml
new file mode 100644
index 0000000..46a8cfc
--- /dev/null
+++ b/java/res/values-ml-rIN/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"പോകുക"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"അടുത്തത്"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"മുമ്പത്തെ"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"പൂർത്തിയായി"</string>
+    <string name="label_send_key" msgid="482252074224462163">"അയയ്‌ക്കുക"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"തിരയുക"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"താൽക്കാലികമായി നിർത്തുക"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"കാത്തിരിക്കുക"</string>
+</resources>
diff --git a/java/res/values-ml-rIN/strings-appname.xml b/java/res/values-ml-rIN/strings-appname.xml
new file mode 100644
index 0000000..940ee81
--- /dev/null
+++ b/java/res/values-ml-rIN/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android കീബോർഡ് (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android അക്ഷരത്തെറ്റ് പരിശോധന (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android കീബോർഡ് ക്രമീകരണങ്ങൾ (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android അക്ഷരത്തെറ്റ് പരിശോധനാ ക്രമീകരണങ്ങൾ (AOSP)"</string>
+</resources>
diff --git a/java/res/values-ml-rIN/strings-config-important-notice.xml b/java/res/values-ml-rIN/strings-config-important-notice.xml
new file mode 100644
index 0000000..7cdc17b
--- /dev/null
+++ b/java/res/values-ml-rIN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"നിർദ്ദേശങ്ങൾ മെച്ചപ്പെടുത്തുന്നതിന് നിങ്ങളുടെ ആശയവിനിമയങ്ങൾ, ടൈപ്പുചെയ്‌ത ഡാറ്റ എന്നിവയിൽ നിന്നും അറിയുക"</string>
+</resources>
diff --git a/java/res/values-ml-rIN/strings-letter-descriptions.xml b/java/res/values-ml-rIN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..0a845df
--- /dev/null
+++ b/java/res/values-ml-rIN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ഫെമിനൈൻ ഓർഡിനൽ ഇൻഡിക്കേറ്റർ"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"മൈക്രോ ചിഹ്നം"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"മാസ്‌കുലിൻ ഓർഡിനൽ ഇൻഡിക്കേറ്റർ"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"ഷാർപ്പ് S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, ഗ്രേവ്"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, സർക്കംഫ്‌ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, ടിൽഡ്"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, ഡയേറിസിസ്"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, മുകളിൽ റിംഗ്"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ലിഗാച്ചർ"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, സെഡില്ലാ"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, ഗ്രേവ്"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, ഡയേറിസിസ്"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, ഗ്രേവ്"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, ഡയേറിസിസ്"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"എത്ത്"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, ടിൽഡ്"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, ഗ്രേവ്"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, ടിൽഡ്"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, ഡയേറിസിസ്"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, സ്ട്രോക്ക്"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, ഗ്രേവ്"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, ഡയേറിസിസ്"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"തോൺ"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, ഡയേറിസിസ്"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, മാക്രോൺ"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, ബ്രീവ്"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ഒഗോനെക്"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, മുകളിൽ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, കറോൺ"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, കറോൺ"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, സ്ട്രോക്ക്"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, മാക്രോൺ"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, ബ്രീവ്"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, മുകളിൽ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ഒഗോനെക്"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, കറോൺ"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, ബ്രീവ്"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, മുകളിൽ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, സ്ട്രോക്ക്"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, ടിൽഡ്"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, മാക്രോൺ"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, ബ്രീവ്"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ഒഗോനെക്"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"ഡോട്ട് ഇല്ലാത്ത I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ലിഗാച്ചർ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"ക്ര"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, കറോൺ"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, മധ്യഭാഗത്തെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, സ്ട്രോക്ക്"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, കറോൺ"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, വിശ്ലേഷത്തിന് മുമ്പ്"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"ഇംഗ്"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, മാക്രോൺ"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, ബ്രീവ്"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, ഇരട്ട അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ലിഗാച്ചർ"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, കറോൺ"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, കറോൺ"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, സെഡില്ല"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, കറോൺ"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, സ്ട്രോക്ക്"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, ടിൽഡ്"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, മാക്രോൺ"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, ബ്രീവ്"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, മുകളിൽ റിംഗ്"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, ഇരട്ട അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ഒഗോനെക്"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, സർക്കംഫ്ലെക്‌സ്"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, അക്യൂട്ട്"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, മുകളിൽ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, കറോൺ"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"നീളമുള്ള S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, ഹോൺ"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, ഹോൺ"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, താഴെ കോമ"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, താഴെ കോമ"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"ഷ്വ"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, താഴെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, മുകളിൽ ഹുക്ക്"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, സർക്കംഫ്ലെക്‌സും അക്യൂട്ടും"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, സർക്കംഫ്ലെക്‌സും ഗ്രേവും"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, സർക്കംഫ്ലെക്‌സും മുകളിൽ ഹുക്കും"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, സർക്കംഫ്ലെക്‌സും ടിൽഡും"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, സർക്കംഫ്ലെക്‌സും താഴെ ഡോട്ടും"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, ബ്രീവും അക്യൂട്ടും"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, ബ്രീവും ഗ്രേവും"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, ബ്രീവും മുകളിൽ ഹുക്കും"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, ബ്രീവും ടിൽഡും"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, ബ്രീവും താഴെ ഡോട്ടും"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, താഴെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, മുകളിൽ ഹുക്ക്"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, ടിൽഡ്"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, സർക്കംഫ്ലെക്‌സും അക്യൂട്ടും"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, സർക്കംഫ്ലെക്‌സും ഗ്രേവും"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, സർക്കംഫ്ലെക്‌സും മുകളിൽ ഹുക്കും"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, സർക്കംഫ്ലെക്‌സും ടിൽഡും"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, സർക്കംഫ്ലെക്‌സും താഴെ ഡോട്ടും"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, മുകളിൽ ഹുക്ക്"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, താഴെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, താഴെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, മുകളിൽ ഹുക്ക്"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, സർക്കംഫ്ലെക്‌സും അക്യൂട്ടും"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, സർക്കംഫ്ലെക്‌സും ഗ്രേവും"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, സർക്കംഫ്ലെക്‌സും മുകളിൽ ഹുക്കും"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, സർക്കംഫ്ലെക്‌സും ടിൽഡും"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, സർക്കംഫ്ലെക്‌സും താഴെ ഡോട്ടും"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, ഹോണും അക്യൂട്ടും"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, ഹോണും ഗ്രേവും"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, ഹോണും മുകളിൽ ഹുക്കും"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, ഹോണും ടിൽഡും"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, ഹോണും താഴെ ഡോട്ടും"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, താഴെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, മുകളിൽ ഹുക്ക്"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, ഹോണും അക്യൂട്ടും"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, ഹോണും ഗ്രേവും"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, ഹോണും മുകളിൽ ഹുക്കും"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, ഹോണും ടിൽഡും"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, ഹോണും താഴെ ഡോട്ടും"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, ഗ്രേവ്"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, താഴെ ഡോട്ട്"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, മുകളിൽ ഹുക്ക്"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, ടിൽഡ്"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"വിപരീത ആശ്‌ചര്യ ചിഹ്നം"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"ഇടതുഭാഗം സൂചിപ്പിക്കുന്ന ഇരട്ട കോൺ ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"മദ്ധ്യ ബിന്ദു"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"സൂപ്പർസ്‌ക്രിപ്‌റ്റ് വൺ"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"വലതുഭാഗം സൂചിപ്പിക്കുന്ന ഇരട്ട കോൺ ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"വിപരീത ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"ഇടത് ഏക ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"വലത് ഏക ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"ഏക ലോ-9 ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"ഇടത് ഇരട്ട ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"വലത് ഇരട്ട ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"ഡാഗർ"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"ഇരട്ട ഡാഗർ"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"പെർ മില്ലി ചിഹ്നം"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"പ്രൈം"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"ഇരട്ട പ്രൈം"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"ഇടതുഭാഗം സൂചിപ്പിക്കുന്ന ഏക കോൺ ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"വലതുഭാഗം സൂചിപ്പിക്കുന്ന ഏക കോൺ ഉദ്ദരണി ചിഹ്നം"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"സൂപ്പർസ്‌ക്രിപ്‌റ്റ് നാല്"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"സൂപ്പർസ്‌ക്രിപ്റ്റ് ലാറ്റിൻ ചെറിയക്ഷരം n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"പെസോ ചിഹ്നം"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"കെയർ ഓഫ്"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"വലത്തേയ്ക്കുള്ള അമ്പടയാളം"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"താഴേയ്ക്കുള്ള അമ്പടയാളം"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"എംറ്റി സെറ്റ്"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"വർദ്ധന"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"ഇതിലും ചെറുത് അല്ലെങ്കിൽ ഇതിന് സമം"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"ഇതിലും വലുത് അല്ലെങ്കിൽ ഇതിന് സമം"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"ബ്ലാക്ക് സ്‌റ്റാർ"</string>
+</resources>
diff --git a/java/res/values-ml-rIN/strings-talkback-descriptions.xml b/java/res/values-ml-rIN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..3577bbb
--- /dev/null
+++ b/java/res/values-ml-rIN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"ഉറക്കെ പറയുന്ന പാസ്‌വേഡ് കീകൾ കേൾക്കുന്നതിന് ഒരു ഹെഡ്‌സെറ്റ് പ്ലഗ്ഗുചെയ്യുക"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"നിലവിലെ വാചകം %s ആണ്"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"വാചകമൊന്നും നൽകിയിട്ടില്ല"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>, <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> എന്നത് <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> എന്നതായി തിരുത്തുന്നു"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> യാന്ത്രിക-തിരുത്തൽ നിർവഹിക്കുന്നു"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"അജ്ഞാത പ്രതീകം"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"കൂടുതൽ ചിഹ്നങ്ങൾ"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"ചിഹ്നങ്ങള്‍"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"ഇല്ലാതാക്കുക"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"ചിഹ്നങ്ങള്‍"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"അക്ഷരങ്ങൾ"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"നമ്പറുകൾ"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"ക്രമീകരണങ്ങൾ"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ടാബ്"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"സ്പെയ്സ്"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"വോയ്‌സ് ഇൻപുട്ട്"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ഇമോജി"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"മടങ്ങുക"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"തിരയുക"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ഡോട്ട്"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"ഭാഷ മാറുക"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"അടുത്തത്"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"മുമ്പത്തേത്"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift പ്രവർത്തനക്ഷമമാക്കി"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"ക്യാപ്‌സ് ലോക്ക് പ്രവർത്തനക്ഷമമാക്കി"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"ചിഹ്നങ്ങളുടെ മോഡ്"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"കൂടുതൽ ചിഹ്നങ്ങളുടെ മോഡ്"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"അക്ഷര മോഡ്"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ഫോൺ മോഡ്"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ഫോൺ ചിഹ്നങ്ങളുടെ മോഡ്"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"കീബോർഡ് മറച്ചിരിക്കുന്നു"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> കീബോർഡ് കാണിക്കുന്നു"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"തീയതി"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"തീയതിയും സമയവും"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ഇമെയിൽ"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"സന്ദേശമയയ്‌ക്കൽ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"നമ്പർ"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ഫോൺ"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ടെക്‌സ്‌റ്റ്"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"സമയം"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"പുതിയവ"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"ആളുകൾ"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ഒബ്ജക്റ്റുകൾ"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"പ്രകൃതി"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"സ്ഥലങ്ങള്‍"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"ചിഹ്നങ്ങള്‍"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ഇമോട്ടിക്കോണുകൾ"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"വലിയക്ഷരം <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"വലിയക്ഷരം I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"വലിയക്ഷരം I, മുകളിൽ ഡോട്ട്"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"അജ്ഞാത ചിഹ്നം"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"അജ്ഞാത ഇമോജി"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"ഇതര പ്രതീകങ്ങൾ ലഭ്യമാണ്"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"ഇതര പ്രതീകങ്ങൾ നിരസിച്ചു"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ഇതര നിർദ്ദേശങ്ങൾ ലഭ്യമാണ്"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"ഇതര നിർദ്ദേശങ്ങൾ നിരസിച്ചു"</string>
+</resources>
diff --git a/java/res/values-ml-rIN/strings.xml b/java/res/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..e27df48
--- /dev/null
+++ b/java/res/values-ml-rIN/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"ടൈപ്പുചെയ്യൽ ഓപ്‌ഷനുകൾ"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"കോൺടാക്‌റ്റ് പേരുകൾ തിരയുക"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"അക്ഷരത്തെറ്റ് പരിശോധന, നിങ്ങളുടെ കോൺടാക്‌റ്റ് ലിസ്‌റ്റിൽ നിന്നുള്ള എൻട്രികൾ ഉപയോഗിക്കുന്നു"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"കീ അമർത്തുമ്പോൾ വൈബ്രേറ്റുചെയ്യുക"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"കീ അമർത്തുമ്പോഴുള്ള ശബ്‌ദമുണ്ടാക്കുക"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"കീ അമർത്തുമ്പോൾ പോപ്പ്അപ്പ് ചെയ്യുക"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"മറ്റു ടൈപ്പുചെയ്യൽ രീതികളിലേക്ക് മാറുക"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"ഭാഷ മാറൽ കീയിൽ മറ്റ് ടൈപ്പുചെയ്യൽ രീതികളും ഉൾപ്പെടുന്നു"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"ഭാഷ മാറൽ കീ"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"ഒന്നിലധികം ടൈപ്പുചെയ്യൽ ഭാഷകൾ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ കാണിക്കുക"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"സ്ലൈഡ് ഇൻഡിക്കേറ്റർ കാണിക്കുക"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Shift അല്ലെങ്കിൽ ചിഹ്ന കീകളിൽ നിന്ന് സ്ലൈഡ് ചെയ്യുമ്പോൾ ദൃശ്യ സൂചകം പ്രദർശിപ്പിക്കുക"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"കീ പോപ്പ്അപ്പ് നിരസിക്കൽ കാലതാമസം"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"കാലതാമസമില്ല"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"സ്ഥിരമായത്"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>മി.സെ"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"സ്ഥിരമായ സിസ്റ്റം"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"കോൺടാക്‌റ്റ് പേരുകൾ നിർദ്ദേശിക്കുക"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"നിർദ്ദേശങ്ങൾക്കും തിരുത്തലുകൾക്കുമായി കോൺടാക്‌റ്റുകളിൽ നിന്നുള്ള പേരുകൾ ഉപയോഗിക്കുക"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"വ്യക്തിഗതമാക്കിയ നിർദ്ദേശങ്ങൾ"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> മെച്ചപ്പെടുത്തുക"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"ഇരട്ട-സ്പെയ്സ് വിരാമം"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"സ്‌പെയ്‌സ് ബാറിൽ ഇരട്ട ടാപ്പുചെയ്യുന്നത്, ഒരു സ്‌പെയ്‌സിന് മുമ്പായി വിരാമം ഇടുന്നു"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"യാന്ത്രികമായി വലിയക്ഷരമാക്കൽ"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"ഓരോ വാക്യത്തിന്റെയും ആദ്യ പദം വലിയക്ഷരമാക്കുക"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"വ്യക്തിഗത നിഘണ്ടു"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"ആഡ്-ഓൺ നിഘണ്ടുക്കൾ"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"പ്രധാന നിഘണ്ടു"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"തിരുത്തൽ നിർദ്ദേശങ്ങൾ വായിക്കുക"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"ടൈപ്പുചെയ്യുമ്പോൾ നിർദ്ദേശിച്ച വാക്കുകൾ പ്രദർശിപ്പിക്കുക"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"എല്ലായ്പ്പോഴും ദൃശ്യമാക്കുക"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"പോർട്രെയ്‌റ്റ് മോഡിൽ കാണിക്കുക"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"എല്ലായ്പ്പോഴും മറയ്‌ക്കുക"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"നിന്ദ്യമായ വാക്കുകൾ തടയുക"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"നിന്ദ്യമാകാനിടയുള്ള വാക്കുകൾ നിർദ്ദേശിക്കരുത്"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"യാന്ത്രികമായി-തിരുത്തൽ"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"തെറ്റായി ടൈപ്പുചെയ്‌ത വാക്കുകളിൽ സ്‌പെയ്‌സ് ബാറും ചിഹ്‌നവും യാന്ത്രികമായി തിരുത്തുന്നു"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ഓഫാക്കുക"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"മിതമായി"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"നിർബന്ധിതമായി"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"വളരെ നിർബന്ധിതമായി"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"അടുത്ത-പദ നിർദ്ദേശങ്ങൾ"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"നിർദ്ദേശങ്ങൾ സൃഷ്‌ടിക്കാൻ മുമ്പത്തെ പദം ഉപയോഗിക്കുക"</string>
+    <string name="gesture_input" msgid="826951152254563827">"ജെസ്റ്റർ ടൈപ്പുചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"അക്ഷരങ്ങളിലൂടെ സ്ലൈഡ് ചെയ്‌തുകൊണ്ട് ഒരു പദം ടൈപ്പുചെയ്യുക"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"ജെസ്റ്റർ ട്രെയിൽ കാണിക്കുക"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ചലനാത്മക ഫ്ലോട്ടിംഗ് പ്രിവ്യൂ"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ജെസ്റ്റർ ചെയ്യുമ്പോൾ നിർദ്ദേശിച്ച പദം കാണുക"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"ഫ്രെയ്‌സ് ജെസ്റ്റർ"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"സ്‌പെയ്‌സ് കീയിലേക്ക് ഗ്ലൈഡുചെയ്യുന്നതിലൂടെ ജെസ്റ്റർ ചെയ്യുന്നതിനിടെ സ്‌പെയ്‌സുകൾ നൽകുക"</string>
+    <string name="voice_input" msgid="3583258583521397548">"വോയ്‌സ് ടൈപ്പുചെയ്യൽ കീ"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"വോയ്‌സ് ടൈപ്പുചെയ്യൽ രീതികളൊന്നും പ്രവർത്തനക്ഷമമല്ല. ഭാഷ &amp; ടൈപ്പു ചെയ്യൽ ക്രമീകരണങ്ങൾ പരിശോധിക്കുക."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"ടൈപ്പുചെയ്യൽ രീതികൾ കോൺഫിഗർ ചെയ്യുക"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"ടൈപ്പുചെയ്യൽ ഭാഷകൾ"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"ഫീഡ്‍ബാക്ക് അയയ്ക്കുക"</string>
+    <string name="select_language" msgid="3693815588777926848">"ടൈപ്പുചെയ്യൽ ഭാഷകൾ"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"സംരക്ഷിക്കുന്നതിനായി വീണ്ടും സ്‌പർശിക്കുക"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"നിഘണ്ടു ലഭ്യമാണ്"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"കീബോർഡ് തീം"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ഇംഗ്ലീഷ് (യുകെ)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ഇംഗ്ലീഷ് (യുഎസ്)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"സ്‌പാനിഷ് (യുഎസ്)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ഇംഗ്ലീഷ് (യുകെ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ഇംഗ്ലീഷ് (യുഎസ്) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"സ്‌പാനിഷ് (യുഎസ്) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (പരമ്പരാഗതം)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (സിറിലിക്)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ലാറ്റിൻ)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"ഭാഷയില്ല (അക്ഷരമാല)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"അക്ഷരമാല (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"അക്ഷരമാല (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"അക്ഷരമാല (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"അക്ഷരമാല (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"അക്ഷരമാല (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"അക്ഷരമാല (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"ഇമോജി"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"ഇഷ്‌ടാനുസൃത ടൈപ്പുചെയ്യൽ ശൈലികൾ"</string>
+    <string name="add_style" msgid="6163126614514489951">"ശൈലി ചേർക്കുക"</string>
+    <string name="add" msgid="8299699805688017798">"ചേര്‍ക്കുക"</string>
+    <string name="remove" msgid="4486081658752944606">"നീക്കംചെയ്യുക"</string>
+    <string name="save" msgid="7646738597196767214">"സംരക്ഷിക്കുക"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"ഭാഷ"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"ലേ‌ഔട്ട്"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"നിങ്ങളുടെ ഇഷ്‌ടാനുസൃത ടൈപ്പുചെയ്യൽ ശൈലി ഉപയോഗിക്കാൻ ആരംഭിക്കുന്നതിന് മുമ്പ് അത് പ്രവർത്തനക്ഷമമാക്കേണ്ടതുണ്ട്. ഇപ്പോൾ ഇത് പ്രവർത്തനക്ഷമമാക്കണോ?"</string>
+    <string name="enable" msgid="5031294444630523247">"പ്രവർത്തനക്ഷമമാക്കുക"</string>
+    <string name="not_now" msgid="6172462888202790482">"ഇപ്പോൾ വേണ്ട"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"സമാന ടൈപ്പുചെയ്യൽ ശൈലി ഇതിനകം നിലവിലുണ്ട്: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"കീ ദീർഘനേരം അമർത്തിപ്പിടിക്കൽ കാലതാമസം"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"കീ അമർത്തുമ്പോഴുള്ള വൈബ്രേഷൻ ദൈർഘ്യം"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"കീ അമർത്തുമ്പോഴുള്ള ശബ്‌ദ വോളിയം"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"ബാഹ്യ നിഘണ്ടു ഫയൽ റീഡുചെയ്യുക"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ഡൗൺലോഡുകളുടെ ഫോൾഡറിൽ നിഘണ്ടു ഫയലുകളൊന്നുമില്ല"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ഇൻസ്‌റ്റാൾ ചെയ്യുന്നതിനായി ഒരു നിഘണ്ടു ഫയൽ തിരഞ്ഞെടുക്കുക"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> ഭാഷയ്‌ക്കായി ശരിക്കും ഈ ഫയൽ ഇൻസ്‌റ്റാൾ ചെയ്യണോ?"</string>
+    <string name="error" msgid="8940763624668513648">"ഒരു പിശകുണ്ടായി"</string>
+    <string name="button_default" msgid="3988017840431881491">"സ്ഥിരമായത്"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> എന്നതിലേക്ക് സ്വാഗതം"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"ജെസ്റ്റർ ടൈപ്പുചെയ്യലിനൊപ്പം"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"ആരംഭിക്കുക"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"അടുത്ത ചുവട്"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> സജ്ജമാക്കുന്നു"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> പ്രവർത്തനക്ഷമമാക്കുക"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"നിങ്ങളുടെ ഭാഷ &amp; ടൈപ്പുചെയ്യൽ ക്രമീകരണങ്ങളിൽ \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" പരിശോധിക്കുക. ഇത് നിങ്ങളുടെ ഉപകരണത്തിൽ പ്രവർത്തിക്കാൻ ഇതിന് അംഗീകാരം നൽകും."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"നിങ്ങളുടെ ഭാഷ &amp; ടൈപ്പുചെയ്യൽ ക്രമീകരണങ്ങളിൽ <xliff:g id="APPLICATION_NAME">%s</xliff:g> എന്നത് ഇതിനകം പ്രവർത്തനക്ഷമമാക്കിയതിനാൽ ഈ ഘട്ടം പൂർത്തിയായി. അടുത്ത ഘട്ടത്തിലേക്ക് പോകുക!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"ക്രമീകരണങ്ങളിൽ പ്രവർത്തനക്ഷമമാകുക"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> എന്നതിലേക്ക് മാറുക"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"അടുത്തത്, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" എന്നതിനെ നിങ്ങളുടെ സജീവ വാചക-ടൈപ്പുചെയ്യൽ രീതിയായി തിരഞ്ഞെടുക്കുക."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"ടൈപ്പുചെയ്യൽ രീതികൾ മാറുക"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"അഭിനന്ദനങ്ങൾ, നിങ്ങൾ എല്ലാം പൂർത്തിയാക്കി!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ഉപയോഗിച്ച് നിങ്ങളുടെ പ്രിയപ്പെട്ട എല്ലാ അപ്ലിക്കേഷനുകളിലും ഇപ്പോൾ ടൈപ്പുചെയ്യാനാകും."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"കൂടുതൽ ഭാഷകൾ കോൺഫിഗർ ചെയ്യുക"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"പൂർത്തിയായി"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"അപ്ലിക്കേഷൻ ഐക്കൺ കാണിക്കുക"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"ലോഞ്ചറിൽ അപ്ലിക്കേഷൻ ഐക്കൺ പ്രദർശിപ്പിക്കുക"</string>
+    <string name="app_name" msgid="6320102637491234792">"നിഘണ്ടു ദാതാവ്"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"നിഘണ്ടു ദാതാവ്"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"നിഘണ്ടു സേവനം"</string>
+    <string name="download_description" msgid="6014835283119198591">"നിഘണ്ടു അപ്‌ഡേറ്റുചെയ്യാനുള്ള വിവരം"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"ആഡ്-ഓൺ നിഘണ്ടുക്കൾ"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"നിഘണ്ടു ലഭ്യമാണ്"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"നിഘണ്ടുക്കൾക്കായുള്ള ക്രമീകരണങ്ങൾ"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"ഉപയോക്തൃ നിഘണ്ടുക്കൾ"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"ഉപയോക്തൃ നിഘണ്ടു"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"നിഘണ്ടു ലഭ്യമാണ്"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"നിലവിൽ ഡൗൺലോഡുചെയ്യുന്നു"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"ഇന്‍‌സ്റ്റാളുചെയ്‌തു"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"ഇൻസ്‌റ്റാളുചെയ്‌തെങ്കിലും പ്രവർത്തനരഹിതമായി"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"നിഘണ്ടു സേവനത്തിൽ കണക്റ്റുചെയ്യുന്നതിൽ പ്രശ്‌നം"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"നിഘണ്ടുക്കളൊന്നും ലഭ്യമല്ല"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"പുതുക്കുക"</string>
+    <string name="last_update" msgid="730467549913588780">"അവസാനം അപ്ഡേറ്റുചെയ്തത്"</string>
+    <string name="message_updating" msgid="4457761393932375219">"അപ്‌ഡേറ്റുകൾക്കായി പരിശോധിക്കുന്നു"</string>
+    <string name="message_loading" msgid="5638680861387748936">"ലോഡുചെയ്യുന്നു..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"പ്രധാന നിഘണ്ടു"</string>
+    <string name="cancel" msgid="6830980399865683324">"റദ്ദാക്കുക"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"ക്രമീകരണങ്ങൾ"</string>
+    <string name="install_dict" msgid="180852772562189365">"ഇൻസ്റ്റാളുചെയ്യുക"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"റദ്ദാക്കുക"</string>
+    <string name="delete_dict" msgid="756853268088330054">"ഇല്ലാതാക്കുക"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"നിങ്ങളുടെ മൊബൈലിൽ തിരഞ്ഞെടുത്ത ഭാഷയ്‌ക്ക് നിഘണ്ടു ലഭ്യമാണ്.&lt;br/&gt; നിങ്ങളുടെ ടൈപ്പുചെയ്യൽ അനുഭവം മെച്ചപ്പെടുത്തുന്നതിനായി <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> നിഘണ്ടു &lt;b&gt;ഡൗൺലോഡുചെയ്യാൻ&lt;/b&gt; ഞങ്ങൾ ശുപാർശചെയ്യുന്നു. 3G-യിൽ ഡൗൺലോഡ് ചെയ്യാൻ ഒന്നോ രണ്ടോ മിനിറ്റെടുത്തേക്കാം. നിങ്ങൾക്ക് &lt;b&gt;പരിധിയില്ലാത്ത ഡാറ്റാ പ്ലാൻ&lt;/b&gt; ഇല്ലെങ്കിൽ നിരക്കുകൾ ബാധകമാകാം. നിങ്ങൾക്ക് ഏത് ഡാറ്റ പ്ലാനാണ് ഉള്ളതെന്ന് തീർച്ചയില്ലെങ്കിൽ, ഡൗൺലോഡ് യാന്ത്രികമായി ആരംഭിക്കുന്നതിന് ഒരു Wi-Fi കണക്ഷൻ കണ്ടെത്താൻ ഞങ്ങൾ ശുപാർശചെയ്യുന്നു.&lt;br/&gt; &lt;br/&gt; നുറുങ്ങ്: നിങ്ങളുടെ മൊബൈലിലെ &lt;b&gt;ക്രമീകരണങ്ങൾ&lt;/b&gt; മെനുവിലുള്ള &lt;b&gt;ഭാഷ &amp; ടൈപ്പുചെയ്യൽ&lt;/b&gt; എന്നതിലേക്ക് പോയി നിങ്ങൾക്ക് നിഘണ്ടുക്കൾ ഡൗൺലോഡുചെയ്യാനും നീക്കംചെയ്യാനുമാകും."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"ഇപ്പോൾ ഡൗൺലോഡുചെയ്യുക (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi മുഖേന ഡൗൺലോഡ് ചെയ്യുക"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ഭാഷയ്‌ക്കായി ഒരു നിഘണ്ടു ലഭ്യമാണ്"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"അവലോകനം ചെയ്‌ത് ഡൗൺലോഡ് ചെയ്യാൻ അമർത്തുക"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ഡൗൺലോഡുചെയ്യുന്നു: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ഭാഷയ്‌ക്കുള്ള നിർദ്ദേശങ്ങൾ ഉടൻതന്നെ തയ്യാറാകും."</string>
+    <string name="version_text" msgid="2715354215568469385">"പതിപ്പ് <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"ചേര്‍ക്കുക"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"നിഘണ്ടുവിൽ ചേർക്കുക"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"വാക്യം"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"കൂടുതൽ ഓപ്‌ഷനുകൾ"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"കുറച്ച് ഓപ്‌ഷനുകൾ"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ശരി"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"പദം:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"കുറുക്കുവഴി:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"ഭാഷ:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"ഒരു പദം ടൈപ്പുചെയ്യുക"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ഓപ്‌ഷണൽ കുറുക്കുവഴി"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"പദം എഡിറ്റുചെയ്യുക"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"എഡിറ്റുചെയ്യുക"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"ഇല്ലാതാക്കുക"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"ഉപയോക്തൃ നിഘണ്ടുവിൽ നിങ്ങൾക്ക് പദങ്ങളൊന്നുമില്ല. ചേർക്കൽ (+) ബട്ടൺ സ്‌പർശിച്ച് ഒരു പദം ചേർക്കുക."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"എല്ലാ ഭാഷകൾക്കുമായി"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"കൂടുതൽ ഭാഷകൾ…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"ഇല്ലാതാക്കുക"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-mn-rMN/strings-action-keys.xml b/java/res/values-mn-rMN/strings-action-keys.xml
index 77b8f2c..8ebb5bb 100644
--- a/java/res/values-mn-rMN/strings-action-keys.xml
+++ b/java/res/values-mn-rMN/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Өмнөх"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Дууссан"</string>
     <string name="label_send_key" msgid="482252074224462163">"Илгээх"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Хайлт"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Түр зогсоох"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Хүлээх"</string>
 </resources>
diff --git a/java/res/values-mn-rMN/strings-config-important-notice.xml b/java/res/values-mn-rMN/strings-config-important-notice.xml
new file mode 100644
index 0000000..386d2e7
--- /dev/null
+++ b/java/res/values-mn-rMN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Зөвлөмжүүдийг сайжруулахын тулд таны харилцсан, бичсэн зүйлсээс суралцана"</string>
+</resources>
diff --git a/java/res/values-mn-rMN/strings-emoji-descriptions.xml b/java/res/values-mn-rMN/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..f09a51d
--- /dev/null
+++ b/java/res/values-mn-rMN/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Зохиогчийн эрхийн тэмдэг"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Бүртгэгдсэн тэмдэг"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Давхар анхаарлын тэмдэг"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Анхаарал, асуултын тэмдэг"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Худалдааны тэмдэг"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Мэдээллийн эх сурвалж"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Зүүн баруун сум"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Дээш доош сум"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Баруун хойд сум"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Зүүн хойд сум"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Зүүн өмнөд сум"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Баруун өмнөд сум"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Зүүн дэгээтэй сум"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Баруун дэгээтэй сум"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Үзэх"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Элсэн цаг"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Баруун заасан хар давхар гурвалжин"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Зүүн заасан хар давхар гурвалжин"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Дээш заасан хар давхар гурвалжин"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Доош заасан хар давхар гурвалжин"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Сэрүүлэгтэй цаг"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Урссан элсэн цаг"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Дугуйлсан латин том m үсэг"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Хар жижиг дөрвөлжин"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Цагаан жижиг дөрвөлжин"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Баруун заасан хар гурвалжин"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Зүүн заасан хар гурвалжин"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Цагаан дунд дөрвөлжин"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Хар дунд дөрвөлжин"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Цагаан дунд жижиг дөрвөлжин"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Хар дунд жижиг дөрвөлжин"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Цацрагтай хар нар"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Үүл"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Хар утас"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Чектэй саналын хайрцаг"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Борооны дусалтай шүхэр"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Халуун ундаа"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Цагаан дээш заасан долоовор"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Цагаан инээмсэглэсэн царай"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Хонины орд"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Үхрийн орд"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Ихрийн орд"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Хавчийн орд"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Арслангийн орд"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Охины орд"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Жинлүүрийн орд"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Хилэнцийн орд"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Нумын орд"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Матрын орд"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Бумбын орд"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Загасны орд"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Хар гил хөзөр"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Хар цэцэг хөзөр"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Хар бундан хөзөр"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Хар дөрвөлжин хөзөр"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Халуун рашаан"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Хар дахин боловсруулах тэмдэг"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Тэргэнцэрийн тэмдэг"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Зангуу"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Сануулга тэмдэг"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Өндөр хүчдэлийн тэмдэг"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Дунд зэргийн цагаан тойрог"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Дунд зэргийн хар тойрог"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Хөлбөмбөгийн бөмбөг"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Бейсбол"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Цасгүй цасан хүн"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Үүлний цаадах нар"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Тэнгэрийн мөрөн орд"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Орохыг хориглоно"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Сүм"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Усан оргилуур"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Нүхэндэх туг"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Далбаат завь"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Майхан"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Түлшний насос"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Хар хайч"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Цагаан хүнд чек тэмдэг"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Онгоц"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Дугтуй"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Өргөсөн нударга"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Өргөсөн гар"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Ялалтын гар"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Харандаа"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Хар хошуу"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Хүнд чек тэмдэг"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Хүнд үржүүлэх х"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Цацраг"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Найман үзүүрт од"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Найман үзүүртэй хар од"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Цасан ширхэг"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Цацраг"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Загалмайн тэмдэг"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Сөрөг квадрат дарах тэмдэг"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Хар асуултын тэмдэгэн чимэглэл"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Цагаан асуултын тэмдэгэн чимэглэл"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Цагаан анхаарлын тэмдэгэн чимэглэл"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Хүнд анхаарлын тэмдэгэн симбол"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Хүнд хар зүрх"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Хүнд нэмэх тэмдэг"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Хүнд хасах тэмдэг"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Хүнд хуваах тэмдэг"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Хар баруун сум"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Нуман гогцоо"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Давхар нуман гогцоо"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Баруун зааж дээш эргэсэн сум"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Баруун зааж доош эргэсэн сум"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Зүүн заасан хар сум"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Дээш заасан хар сум"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Доош заасан хар сум"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Хар том дөрвөлжин"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Цагаан том дөрвөлжин"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Цагаан дунд од"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Хүнд том тойрог"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Долгионт зураас"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Хэсэг шилжих тэмдэг"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Дугуй идеограф баяр хүргэлт"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Дугуй идеограф нууц"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Mahjong -н улаан луу"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Хөзөрийн хар хүн"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Цусны А бүлэг"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Цусны В бүлэг"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Цусны O бүлэг"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Машины зогсоол"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Цусны AB бүлэг"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"Дөрвөлжин CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Дөрвөлжин гоё"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Дөрвөлжин чөлөөтэй"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"Дөрвөлжин ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Дөрвөлжин шинэ"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"Дөрвөлжин N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"Дөрвөлжин OK"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"Дөрвөлжин SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Анхаарлын тэмдэгтэй дөрвөлжин"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Дөрвөлжин vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Энд дөрвөлжин катакана"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Дөрвөлжин катакана үйлчилгээ"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Дөрвөлжин идеограф төлбөргүй"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Дөрвөлжин идеограф захиалсан суудал"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Дөрвөлжин идеограф хориг"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Дөрвөлжин идеограф орон тоо"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Дөрвөлжин идеограф зөвшөөрөл"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Дөрвөлжин идеограф бүрэн эзэлсэн"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Дөрвөлжин идеограф төлсөн"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Дөрвөлжин идеограф сараар"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Дөрвөлжин идеограф аппликешн"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Дөрвөлжин идеограф хөнгөлөлт"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Дөрвөлжин идеограф бизнесийн"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Дугуй идеограф давуу тал"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Дугуй идеограф зөвшөөрөх"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Циклон"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Будантай"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Хаасан шүхэр"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Одтой шөнө"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Уулын дээр нар мандах"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Нар мандах"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Үдшийн хот"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Барилга дээр нар жаргах"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Солонго"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Шөнийн гүүр"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Усны давалгаа"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Галт уул"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Сүүн зам"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Дэлхий бөмбөрцөг Европ Африк"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Дэлхий бөмбөрцөг Америк"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Дэлхий бөмбөрцөг Ази-Австрали"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Меридантай бөмбөрцөг"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Шинэ сарны симбол"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Мандах хавирган сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Эхний улирлын сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Мандах бөгтөр сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Бүтэн сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Жаргах бөгтөр сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Сүүлийн улирлын сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Жаргах хавирган сарны тэмдэг"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Хавирган сар"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Нүүртэй шинэ сар"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Нүүртэй эхний улирлын сар"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Нүүртэй сүүлийн улирлын сар"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Нүүртэй бүтэн сар"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Нүүртэй нар"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Гялалзах од"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Сүүлт од"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Туулайн бөөр"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Суулгац"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Мөнх ногоон мод"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Навчит мод"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Далдуу мод"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Кактус"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Алтанзул"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Интоорын дэлбээ"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Сарнай"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Хибискус"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Наранцэцэг"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Дэлбээ"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Эрдэнэ шишийн түрүү"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Цагаан будааны түрүү"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Ургамал"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Дөрвөн навчит хошоонгор"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Агч модны навч"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Унасан навч"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Сэрчигнэх навч"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Мөөг"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Улаан лооль"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Чэс"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Усан үзэм"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Амтат гуа"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Тарвас"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Мандарин"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Лемон"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Банана"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Хан боргоцой"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Улаан алим"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Ногоон алим"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Лийр"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Тоор"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Интоор"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Гүзээлзгэнэ"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Гамбургер"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Пиццаны зүсэм"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Ястай мах"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Тахианы хөл"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Будааны жигнэмэг"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Будааны бөмбөлөг"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Болгосон будаа"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Кари болон будаа"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Ууран аяга"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Шпагетти"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Талх"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Шарсан төмс"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Шарсан чихэрлэг төмс"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Данго"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oден"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Суши"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Шарсан сам хорхой"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Мушгай загасан бялуу"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Зөөлөн зайрмаг"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Хуссан мөс"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Зайрмаг"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Донат"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Печень"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Шоколад"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Чихэр"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Иштэй чихэр"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Шар тос"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Зөгийн бал"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Үелсэн бялуу"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Хоолны сав"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Хоолны тогоо"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Хоол хийх"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Хутга сэрээ"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Бариулгүй цайны аяг"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Сакены лонх болон хундага"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Виноны хундага"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Коктэйлийн хундага"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Халуун орны ундаа"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Пивоны аяга"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Жингэнэсэн пивоны аяга"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Хүүхдийн лонх"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Тууз"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Боодолтой бэлэг"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Төрсөн өдрийн бялуу"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Жак-O-дэнлүү"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Зул сарын гацуур"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Эцэг Христийн баяр"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Галын наадам"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Бенгалийн гал"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Шаар"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Үдэшлэгийн салют"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Чихрэн бөмбөлөг"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Taнабата мод"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Солисон тугнууд"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Нарс модон чимэглэл"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Япон хүүхэлдэй"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Мөрөг загас стример"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Салхины ая"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Сар харах ёслол"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Сургуулийн үүргэвч"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Төгсөгчийн малгай"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Тойруулгын модон морь"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Чөтгөрийн дугуй"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Галзуу хулгана"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Загасны уураг болон загас"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Микрофон"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Кино зургийн аппарат"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Кино"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Чихэвч"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Зураачийн палет"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Бортого малгай"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Циркийн майхан"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Тасалбар"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Кадрын самбар"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Урлагийн тоглолт"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Видео тоглоом"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Шууд хит"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Слот машин"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Билльярд"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Тоглоомын үхэл"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Боулинг"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Хөзрийн цэцэг"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Хөгжмийн нот"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Олон хөгжмийн нот"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Саксофон"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Гитар"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Хөгжмийн даруул"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Бүрээ"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Хийл"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Хөгжмийн оноо"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Гүйдэг цамц, хүрээ"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Теннисны ракет болон бөмбөг"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Цана болон цанын гутал"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Сагсан бөмбөг болон цагираг"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Шоотой туг"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Сноубордчин"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Гүйгч"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Сөрфер"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Цом"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Морин уралдаан"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Америк хөл бөмбөг"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Регби хөл бөмбөг"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Сэлэгч"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Байшин"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Цэцэрлэгтэй байшин"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Оффисын барилга"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Японы шуудан"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Европын шуудан"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Эмнэлэг"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Банк"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Автомат теллер машин"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Зочид буудал"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Секс буудал"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Ая тухтай дэлгүүр"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Сургууль"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Их дэлгүүр"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Үйлдвэр"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Izakaya дэнлүү"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Японы цайз"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Европын цайз"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Харх"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Хулгана"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Шар"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Усны одос"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Үнээ"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Ирвэс"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Молтогчин"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Муур"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Луу"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Матар"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Халим"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Эмгэн хумс"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Могой"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Морь"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Хуц"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Ямаа"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Хонь"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Сармагчин"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Азарган тахиа"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Тахиа"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Нохой"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Гахай"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Зэрлэг гахай"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Заан"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Наймаалж"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Мушгиа дун"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Цох"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Шоргоолж"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Зөгий"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Алтан тэмээ"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Загас"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Халуун орны загас"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Нохой загас"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Яст мэлхий"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Ангаахай"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Дэгдээхий"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Урдаас харсан дэгдээхэй"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Шувуу"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Пенгвин"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Коала"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Пүүдл"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Нэг бөхт тэмээ"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Хоёр бөхт тэмээ"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Делфин"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Хулганы нүүр"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Үнээний нүүр"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Барын нүүр"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Молтогчны нүүр"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Муурны нүүр"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Лууны нүүр"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Ус оргилуулах халим"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Морины нүүр"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Сармагчны нүүр"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Нохойны нүүр"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Гахайн нүүр"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Мэлхийн нүүр"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Хамстерийн нүүр"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Чонын нүүр"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Баавгайн нүүр"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Пандагийн нүүр"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Гахайн хамар"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Саврын мөр"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Нүд"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Чих"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Хамар"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Ам"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Хэл"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Цагаан дээр дээш заасан долоовор"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Цагаан дээр доош заасан долоовор"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Цагаан дээр зүүн заасан долоовор"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Цагаан дээр баруун заасан долоовор"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Зангидсан гарын тэмдэг"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Даллах гарын тэмдэг"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Ok гарын тэмдэг"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Эрхий дээш тэмдэг"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Эрхий доош тэмдэг"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Алга ташсан тэмдэг"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Нээлттэй гарын тэмдэг"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Титэм"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Эмэгтэй малгай"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Нүдний шил"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Зангиа"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Футболк"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Жинс"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Даашинз"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Кимоно"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Бикини"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Эмэгтэй хувцас"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Цүнх"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Гар цүнх"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Даалин"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Эрэгтэй гутал"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Биеийн тамирын гутал"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Өндөр өсгийт"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Эмэгтэй сандаал"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Эмэгтэй түрийтэй гутал"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Хөлийн мөр"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Сүүдрэн хүн"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Сүүдрэн хүмүүс"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Хөвгүүн"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Охин"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Эр хүн"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Эм хүн"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Гэр бүл"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Гар хөтлөлцсөн эр, эм"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Гар хөтлөлцсөн хоёр эр"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Гар хөтлөлцсөн хоёр эм"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Цагдаа"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Бөжин ээмэгтэй эмэгтэй"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Хуримын нөмрөгтэй бүсгүй"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Шаргал үст"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Тоорцогтой эр"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Турбантай эр"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Настай эр"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Настай эм"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Хүүхэд"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Барилгын ажилчин"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Гүнж"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Японы мангас"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Японы чөтгөр"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Сүнс"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Хүүхдийн элч тэнгэр"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Харь гаригийн хүн"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Харь гаригийн мангас"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Бяцхан чөтгөр"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Гавал"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Мэдээллийн ажилтан"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Харуул"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Бүжигчин"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Уруулын будаг"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Хумсны будаг"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Нүүрний массаж"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Үс засалт"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Үсчний реклам"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Тариур"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Эм"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Үнсэлтийн мөр"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Хайрын захиа"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Бөгж"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Эрдэнийн чулуу"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Үнсэлт"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Цэцгийн баглаа"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Зүрхтэй хосууд"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Хурим"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Цохилох зүрх"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Урагдсан зүрх"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Хоёр зүрх"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Оргилуун зүрх"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Томрох зүрх"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Сумтай зүрх"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Цэнхэр зүрх"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Ногоон зүрх"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Шар зүрх"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Нил ягаан өнгийн зүрх"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Туузтай зүрх"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Эргэлдэх зүрх"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Зүрхний чимэглэл"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Цэгтэй даймонд"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Цахилгаан чийдэнгийн шил"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Уурлах тэмдэг"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Бөмбөг"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Унтах тэмдэг"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Мөргөлдөх тэмдэг"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Цацрах хөлсний тэмдэг"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Дусал"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Налуу тэмдэг"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Овоолсон баас"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Булчинтай гар"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Нойрмог тэмдэг"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Үг хэлэх бөмбөлөг"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Бодлын бөмбөг"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Цагаан цэцэг"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Зуун оноо тэмдэг"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Мөнгөний уут"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Валютын арилжаа"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Хүнд долларын тэмдэг"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Кредит карт"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Иен тэмдэгтэй дэвсгэрт"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Долларын тэмдэгт"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Евро тэмдэгтэй дэвсгэрт"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Фунт тэмдэгтэй дэвсгэрт"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Далавчтай мөнгө"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Иен тэмдэгтэй дээш чиглэсэн граф"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Суудал"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Хувийн компьютер"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Чемодан"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Минидиск"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Уян диск"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Оптик диск"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"Dvd"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Файлын хавтас"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Нээлттэй файлын хавтас"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Хуйларсан хуудас"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Дээшээ харсан хуудас"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Календарь"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Урагдсан календарь"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Картын индекс"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Дээш чиглэсэн граф"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Доош чиглэсэн граф"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Хөндөл граф"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Түр санах ой"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Цаас хатгагч"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Цаас хатгагч"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Цаасны клип"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Шулуун шугам"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Гурвалжин шугам"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Хавчуургын таб"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Булшны чулуу"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Тэмдэглэлийн дэвтэр"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Гоёлтой тэмдэглэлийн дэвтэр"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Хаалттай ном"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Нээлттэй ном"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Ногоон ном"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Цэнхэр ном"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Улбар шар өнгийн хавтастай ном"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Ном"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Нэрний тэмдэг"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Гүйлгэх"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Мемо"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Утас хүлээн авагч"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Пэйжер"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Факс машин"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Хиймэл дагуулын антенн"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Нийтэд зарлах чанга яригч"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Хөгжөөн дэмжлэгийн мегафон"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Явсан бичгийн тавиур"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Ирсэн бичгийн тавиур"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Багц"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"И-мэйл тэмдэг"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Ирж буй дугтуй"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Доош сумтай дугтуй"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Доошлуулсан тугтай шуудангийн хайрцаг"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Босгосон тугтай хаагдсан шуудангийн хайрцаг"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Босгосон тугтай нээлттэй шуудангийн хайрцаг"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Доошлуулсан тугтай нээлттэй шуудангийн хайрцаг"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Шуудангийн хайрцаг"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Шуудангийн бүрээ"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Сонин"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Гар утас"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Зүүн талдаа баруун заасан сумтай гар утас"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Чичирхийллийн горим"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Гар утас унтраах"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Гар утас болохгүй"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Хөндөлтэй антенн"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Камер"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Видео камер"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Телевиз"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Радио"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Видео кассет"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Мушгирсан баруун сум"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Зөв баруун, зүүн эргэсэн дугуй сум"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"зөв баруун, зүүн эргэсэн дугуй сум"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Зөв доош, дээш эргэсэн дугуй сум"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Буруу доош, дээш эргэсэн дугуй сум"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Бага гэрэлтүүлэгтэй тэмдэг"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Их гэрэлтүүлэгтэй тэмдэг"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Дарсан зураастай чанга яригч"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Чанга яригч"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Нэг дууны долгиотой чанга яригч"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Гурван дууны долгиотой чанга яригч"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Батерей"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Цахилгаан залгуур"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Зүүн-заасан томруулагч шил"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Баруун-заасан томруулагч шил"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Бэхэн үзэгтэй түгжээ"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Түлхүүртэй цоожлогдсон цоож"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Түлхүүр"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Түгжих"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Нээлттэй цоож"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Хонх"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Дарсан зураастай хонх"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Хавчуурга"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Холбоосын тэмдэг"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Радио товч"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Дээрээ сумтай буцах тэмдэг"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Дээрээ сумтай төгсгөл"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Дээрээ зүүн сумтай анхаарлын тэмдэг"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Дээрээ баруун сумтай удахгүй"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Дээрээ дээш сумтай дээр"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Арван наймаас бага хүн байхгүй тэмдэг"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Аравтын товчлуур"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Латин том үсэгтэй оруулах симбол"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Латин жижиг үсэгтэй оруулах симбол"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Тоо оруулах тэмдэг"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Символ оруулах тэмдэг"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Латин үсэгтэй оруулах тэмдэг"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Гал"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Цахилгаан бамбар"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Түлхүүр"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Алх"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Эрэг, боолт"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Хутга"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Гар буу"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Микроскоф"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Телескоф"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Кристал бөмбөг"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Цэгтэй зургаан хошуут"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Эхлэн сурагчийн Япон тэмдэг"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Сэрээний эмблем"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Хар дөрвөлжин товч"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Цагаан дөрвөлжин товч"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Том улаан дугуй"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Том цэнхэр тойрог"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Том улбар шар даймонд"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Том цэнхэр даймонд"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Жижиг улбар шар даймонд"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Жижиг цэнхэр даймонд"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Дээш заасан улаан гурвалжин"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Доош заасан улаан гурвалжин"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Дээш заасан жижиг улаан гурвалжин"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Доош заасан жижиг улаан гурвалжин"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Цаг нэг цагийг заасан"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Цаг хоёр цагийг заасан"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Цаг гурван цагийг заасан"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Цаг дөрвөн цагийг заасан"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Цаг таван цагийг заасан"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Цаг зургаан цагийг заасан"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Цаг долоон цагийг заасан"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Цаг найман цагийг заасан"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Цаг есөн цагийг заасан"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Цаг арван цагийг заасан"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Цаг арван нэгийг заасан"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Цаг арван хоёрыг заасан"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Цаг нэг гучийг заасан"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Цаг хоёр гучийг заасан"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Цаг гурав гучийг заасан"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Цаг дөрөв гучийг заасан"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Цаг тав гучийг заасан"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Цаг зургаа гучийг заасан"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Цаг долоо гучийг заасан"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Цаг найм гучийг заасан"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Цаг ес гучийг заасан"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Цаг арав гучийг заасан"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Цаг арван нэг гучийг заасан"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Цаг арван хоёр гучийг заасан"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Фүжи уул"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Токио цамхаг"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Эрх чөлөөний хөшөө"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Японы сүүдэр"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Мояай"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Жуумалзсан царай"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Инээсэн нүдтэй жуумалзсан царай"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Баярын нулимстай царай"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Амаа ангайж инээмсэглэсэн царай"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Амаа ангайж инээсэн нүдтэй царай"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Амаа ангайж хүйтэн хөлстэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Амаа ангайж онийсон нүдтэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Хүрээтэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Эвэртэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Ирмэсэн царай"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Инээсэн нүдтэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Амттай хоол тамшаалсан царай"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Тайвширсан царай"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Зүрхэн нүдтэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Нарны шилтэй инээсэн царай"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Мишээсэн царай"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Төв царай"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Хувиралгүй царай"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Гайхашраагүй царай"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Хүйтэн хөлстэй царай"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Бодлогоширсон царай"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Гайхсан царай"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Сандарсан царай"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Үнсэлттэй царай"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Үнсэлт илгээх царай"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Инээсэн нүдтэй үнсэлт илгээх царай"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Аньсан нүдтэй үнсэлт илгээх царай"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Хэлээ цухуйлгасан царай"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Нүдээ ирмэж хэлээ цухуйлгасан царай"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Онийсон нүдтэй хэлээ цухуйлгасан царай"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Сэтгэл дундуур царай"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Санаа нь зовсон царай"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Ууртай царай"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Дорвогор царай"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Уйлсан царай"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Тэвчсэн царай"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Ялгуусан царай"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Сэтгэл дундуур ч тайван царай"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Амаа ангайж барайсан царай"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Шаналсан царай"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Айсан царай"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Ядарсан царай"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Нойрмог царай"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Ядарсан царай"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Ярвайсан царай"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Чанга уйлсан царай"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Амаа ангайсан царай"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Чимээгүй гэсэн царай"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Амаа ангайсан хүйтэн хөлстэй царай"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Айж хашгирсан царай"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Гайхширсан царай"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Уурссан царай"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Унтсан царай"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Дуниартсан царай"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Амгүй царай"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Эмнэлгийн масктай царай"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Инээсэн нүдтэй жуумалзсан муурын царай"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Баярын нулимстай муурын царай"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Амаа ангайж инээмсэглэсэн муурын царай"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Зүрхэн нүдтэй инээсэн муурын царай"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Муруй инээсэн муурын царай"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Аньсан нүдтэй үнсэлт илгээх муурын царай"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Дорвогор муурын царай"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Уйлсан муурын царай"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Ядарсан муурын царай"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Муу гэсэн зангаатай царай"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Сайн гэсэн зангаатай царай"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Мэхийн ёсолсон хүн"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Мууг харахгүй сармагчин"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Мууг сонсохгүй сармагчин"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Мууг ярихгүй сармагчин"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Нэг гараа өргөсөн жаргалтай хүн"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Баярлаж гараа өргөсөн хүн"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Барайсан хүн"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Дорвогор царайтай хүн"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Цээжээ тэвэрсэн хүн"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Пуужин"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Нисдэг тэрэг"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Уур зүтгүүр"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Төмөр замын вагон"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Хурдан галт тэрэг"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Суман хурдан галт тэрэг"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Галт тэрэг"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Метро"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Хөнгөн төмөр зам"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Буудал"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Трамвай"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Трамвай вагон"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Автобус"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Ирж буй автобус"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Тролейбус"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Автобусны зогсоол"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Минибус"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Түргэн тусламж"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Галын машин"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Цагдаагийн машин"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Ирж буй цагдаагийн машин"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Такси"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Ирж буй такси"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Автомашин"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Ирж автомашин"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Амралтын машин"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Хүргэлтийн ачааны машин"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Цуваа тэргэнцэр"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Трактор"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Moнорейл"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Уулын төмөр зам"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Дүүжин төмөр зам"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Уулын кабль зам"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Агаарын трамвай"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Усан онгоц"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Роу завь"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Хурдны завь"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Хэвтээ замын дохио"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Босоо замын дохио"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Барилгын тэмдэг"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Цагдаагийн машины эргэлдэх дохио"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Шуудан гурвалжин туг"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Хаалга"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Орохыг хориглосон тэмдэг"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Тамхи татах тэмдэг"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Тамхи хориглосон тэмдэг"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Хогийг саванд нь хаях тэмдэг"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Хог хаяхгүй тэмдэг"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Ундны усны тэмдэг"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Ундны бус усны тэмдэг"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Дугуй"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Унадаг дугуй болохгүй"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Унадаг дугуйч"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Уулын унадаг дугуйч"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Явган зорчигч"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Явган зорчигч болохгүй"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Хүүхдийн гарц"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Эрэгтэйчүүдийн тэмдэг"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Эмэгтэйчүүдийн тэмдэг"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Ариун цэврийн өрөө"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Хүүхдийн тэмдэг"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Бие засах газар"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Усны сав"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Шүршүүр"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Ванн"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Ванн"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Паспорт хяналт"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Гааль"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Ачаа авах"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Орхисон ачаа"</string>
+</resources>
diff --git a/java/res/values-mn-rMN/strings-letter-descriptions.xml b/java/res/values-mn-rMN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..b8f8d85
--- /dev/null
+++ b/java/res/values-mn-rMN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Эм хүйсийн дугаар заагч"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Микро тэмдэг"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Эр хүйсийн дугаар заагч"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Хурц S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"А, зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"А, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"А, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"А, долгионтой"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"А, хоёр цэгтэй"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, дээрээ цагирагтай"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, залгагдсан"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, хоёр цэгтэй"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, хоёр цэгтэй"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Зураастай ди"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, долгионтой"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, долгионтой"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, хоёр цэгтэй"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, хөндлөн зураастай"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, хоёр цэгтэй"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Гэдэстэй багана"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, хоёр цэгтэй"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, хөндлөн малгайтай"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"А, тавган малгайтай"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"А, сүүлтэй"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"С, дээрээ цэгтэй"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, хөндлөн зураастай"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, хөндлөн малгайтай"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, тавган малгайтай"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, дээрээ цэгтэй"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, сүүлтэй"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, тавган малгайтай"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, дээрээ цэгтэй"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, хөндлөн зураастай"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, долгионтой"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, хөндлөн малгайтай"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, тавган малгайтай"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, сүүлтэй"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Цэггүй I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, залгагдсан"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, дунд цэгтэй"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, хөндлөн зураастай"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N,"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Инг"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, хөндлөн малгайтай"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, тавган малгайтай"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, давхар баруун малгайтай"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, залгагдсан"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, дэвсгэртэй"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, хөндлөн зураастай"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, долгионтой"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, хөндлөн малгайтай"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, тавган малгайтай"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, дээрээ цагирагтай"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, давхар баруун малгайтай"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, сүүлтэй"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, дээвэр малгайтай"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, баруун малгайтай"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, дээрээ цэгтэй"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, аяган малгайтай"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Урт S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, эвэртэй"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, эвэртэй"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, доор таслалтай"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, доор таслалтай"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"А, доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"А, дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, дээвэр болон баруун малгайтай"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"А, дээвэр болон зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"А, дээвэр болон дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"А, дээвэр болон долгионтой"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"А, дээвэр болон доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"А, тавган болон баруун малгайтай"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"А, тавган болон зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"А, тавган болон дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"А, тавган болон долгионтой"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"А, тавган болон доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, долгионтой"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, дээвэр болон баруун малгайтай"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, дээвэр болон зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, дээвэр болон дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, дээвэр болон долгионтой"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, дээвэр болон доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, дээвэр болон баруун малгайтай"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, дээвэр болон зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, дээвэр болон дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, дээвэр болон долгионтой"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, дээвэр болон доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, эвэр болон баруун малгайтай"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, эвэр болон зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, эвэр болон дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, эвэр болон долгионтой"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, эвэр болон доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, эвэр болон баруун малгайтай"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, эвэр болон зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, эвэр болон дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, эвэр болон долгионтой"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, эвэр болон доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, зүүн малгайтай"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, доор цэгтэй"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, дээр дэгээтэй"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, долгионтой"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Урвуу анхаарлын тэмдэг"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Зүүн заасан давхар хашилт"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Дунд цэг"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Мөрний дээрх нэг"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Баруун заасан давхар хашилт"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Урвуу асуултын тэмдэг"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Зүүн дан хашилт"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Баруун дан хашилт"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Дан доогуур-9 хашилт"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Зүүн давхар хашилт"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Баруун давхар хашилт"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Чинжаал"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Давхар чинжаал"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Нэг мильд тэмдэг"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Штрих"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Давхар штрих"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Зүүн заасан дан хашилт"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Баруун заасан дан хашилт"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Мөрний дээрх дөрөв"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Мөрний дээрх жижиг латин n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Песо тэмдэг"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Анхааралд"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Баруун сум"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Доош сум"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Хоосон олонлог"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Өсөлт"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Бага буюу тэнцүү"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Их буюу тэнцүү"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Хар од"</string>
+</resources>
diff --git a/java/res/values-mn-rMN/strings-talkback-descriptions.xml b/java/res/values-mn-rMN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..d2c583e
--- /dev/null
+++ b/java/res/values-mn-rMN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Нууц үгний дуудлагыг сонсох бол чихэвчийг залгана уу."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Одоогийн текст %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Текст оруулаагүй"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> нь <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-г <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> руу залруулна"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> авто-залруулалт хийдэг"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Үл мэдэгдэх тэмдэгт"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Шифт"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Өөр тэмдэгтүүд"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Шифт"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Симбол"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Шифт"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Устгах"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Симбол"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Үсэгнүүд"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Тоонууд"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Тохиргоо"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Таб"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Хоосон зай"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Дуугаар оруулах"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Эможи"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Оруулах"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Хайх"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Цэг"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Хэл солих"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Дараах"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Өмнөх"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Сэлгэхийг идэвхжүүлсэн"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Томоор бичихийг идэвхжүүлсэн"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Симбол төлөв"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Өөр тэмдэгтийн горим"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Үсэгнүүд төлөв"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Утасны төлөв"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Утасны символ төлөв"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Гарыг нуусан"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> гар харуулж байна"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"огноо"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"огноо болон цаг"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"имэйл"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"зурвас"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"тоо"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"утас"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"зурвас"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"цаг"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Саяхны"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Хүмүүс"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Объект"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Байгалийн"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Газар"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Симбол"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Эмотикон"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Том <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Том I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Том I, дээрээ цэгтэй"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Үл мэдэгдэх симбол"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Үл мэдэгдэх эможи"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Бусад тэмдэгтүүд ашиглах боломжтой"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Бусад тэмдэгтүүдийг хаагдсан"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Бусад санал болголтууд ашиглах боломжтой"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Бусад санал болголтууд хаагдсан"</string>
+</resources>
diff --git a/java/res/values-mn-rMN/strings.xml b/java/res/values-mn-rMN/strings.xml
index d417589..4d47dfe 100644
--- a/java/res/values-mn-rMN/strings.xml
+++ b/java/res/values-mn-rMN/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Оруулах сонголтууд"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Судалгааны протоколын командууд"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Харилцагчийн нэр хайх"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Алдаа шалгагч нь таны харилцагчдын жагсаалтаас ашиглана"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Товч дарахад чичрэх"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Товч дарахад дуу гаргах"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Товч дарахад попап гарна"</string>
-    <string name="general_category" msgid="1859088467017573195">"Ерөнхий"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Текст залруулалт"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Зангаагаар бичих"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Бусад сонголтууд"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Дэлгэрэнгүй тохиргоо"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Экспертүүдэд зориулсан тохиргоо"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Оруулгын тохируулга"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Харагдац"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Олон хэлний сонголтууд"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Зангалтын бичих тохируулга"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Текст залруулалт"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Дэлгэрэнгүй"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Оруулах өөр арга руу шилжүүлэх"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Хэл солих түлхүүрт өөр оруулах аргууд мөн багтсан байгаа"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Хэл солих товч"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Системийн үндсэн утга"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Харилцагчдын нэрс санал болгох"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Санал болгох, залруулахда Харилцагчдын нэрсээс ашиглах"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Хувийн тохиргоотой зөвлөмжүүд"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> сайжруулах"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Давхар зайтай цэг"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ардаа зайтай цэг оруулахын тулд Зай авах дээр давхар товшино уу"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Автоматаар томруулах"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Зангасан мөрийг харуулах"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамик хөвөгчөөр урьдчилан харах"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Зангах явцад санал болгож буй үгийг харах"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Хадгалагдсан"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Нууц үгний товчнуудыг чангаар уншихыг сонсохын тулд чихэвчээ залгана уу."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Одоогийн текст %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Текст оруулаагүй"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>-г <xliff:g id="CORRECTED">%3$s</xliff:g> руу залруулна"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> автоматаар залруулна"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Товчийн код %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Сэлгэх"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Сэлгэхийг идэвхжүүлсэн (товшиж идэвхгүйжүүлнэ үү)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Томоор бичихийг асаасан (товшиж идэвхгүйжүүлнэ үү)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Устгах"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Симбол"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Үсэгнүүд"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Тоонууд"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Тохиргоо"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Таб"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Хоосон зай"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Дуугаар оруулах"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Инээсэн царай"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Буцах"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Хайх"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Цэг"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Хэл солих"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Дараах"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Өмнөх"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Сэлгэхийг идэвхжүүлсэн"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Томоор бичихийг идэвхжүүлсэн"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Сэлгэхийг идэвхжүүлээгүй"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Симбол төлөв"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Үсэгнүүд төлөв"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Утасны төлөв"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Утасны символ төлөв"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Гарыг нуусан"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g> гарыг харуулж байна"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"огноо"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"огноо болон цаг"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"и"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"зурвас"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"дугаар"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"утас"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"текст"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"цаг"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Хэллэгийн зангалт"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Зангалтын явцад зай авах товчин дээр гулсуулах замаар зай оруулах"</string>
     <string name="voice_input" msgid="3583258583521397548">"Дуун оруулгын товч"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Үндсэн гар дээр"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Симбол гар дээр"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Идэвхгүй"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Мик үндсэн гар дээр"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Мик симбол гар дээр"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Дуун оруулах идэвхгүйжсэн"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ямар ч дуу оруулах хэрэглүүр идэвхжээгүй байна. Хэл болон оруулалтын тохиргоог шалгана уу."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Оруулах аргуудын тохиргоо"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Оруулах хэл"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Санал хүсэлт илгээх"</string>
     <string name="select_language" msgid="3693815588777926848">"Оруулах хэл"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Хадгалахын тулд дахин хүрнэ үү"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Толь бичиг байна"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Хэрэглэгчийн санал хүсэлтийг идэвхжүүлэх"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Ашиглалтын статистик болон гацалтын репортуудыг автоматаар илгээснээр энэ оруулах арга засагчийг сайжруулахад туслаарай"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Гарын загвар"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Англи (ИБ)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Англи (АНУ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Испани (АНУ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Англи (ИБ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Англи (АНУ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Испани (АНУ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Уламжлалт)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Англи (ИБ) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Англи (АНУ) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Испани (АНУ-ын) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (уламжлалт)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Кирилл)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Латин)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Хэл байхгүй (Цагаан толгой)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Цагаан толгой (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Цагаан толгой (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Цагаан толгой (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Цагаан толгой (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Инээмсэглэл"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Өнгөний схем"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Цагаан"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Хөх"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Гарын загвар"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Холо Цагаан"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Холо Цэнхэр"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Материал Бараан"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Материал Цайвар"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Өөрийн оруулах загвар"</string>
     <string name="add_style" msgid="6163126614514489951">"Загвар нэмэх"</string>
     <string name="add" msgid="8299699805688017798">"Нэмэх"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Идэвхжүүлэх"</string>
     <string name="not_now" msgid="6172462888202790482">"Одоо биш"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Ижилхэн оруулах загвар байна: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Ашиглалтын судалгааны горим"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Товч удаан дарах хугацааны тохиргоо"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Товч дарах чичиргээний хугацаа"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Товчны дууны хэмжээ"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Толь бичгийн гадны файлыг унших"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Татаж авсан фолдерт толь бичгийн файл байхгүй байна"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Суулгах толь бичгийн файлыг сонгоно уу"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"<xliff:g id="LOCALE_NAME">%s</xliff:g>-д зориулсан энэ файлыг үнэхээр суулгах уу?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>-д зориулсан энэ файлыг үнэхээр суулгах уу?"</string>
     <string name="error" msgid="8940763624668513648">"Алдаа гарсан"</string>
     <string name="button_default" msgid="3988017840431881491">"Үндсэн"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Та <xliff:g id="APPLICATION_NAME">%s</xliff:g>-д тавтай морилно уу"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Дахин шинэчлэх"</string>
     <string name="last_update" msgid="730467549913588780">"Сүүлд шинэчлэгдсэн"</string>
     <string name="message_updating" msgid="4457761393932375219">"Шинэчлэлтийг шалгаж байна"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Ачаалж байна..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Ачаалж байна..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Үндсэн толь бичиг"</string>
     <string name="cancel" msgid="6830980399865683324">"Цуцлах"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Тохиргоо"</string>
     <string name="install_dict" msgid="180852772562189365">"Суулгах"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Цуцлах"</string>
     <string name="delete_dict" msgid="756853268088330054">"Устгах"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Таны мобайль төхөөрөмж дээр сонгосон хэлэнд толь бичиг байна.&lt;br/&gt; Тус  <xliff:g id="LANGUAGE">%1$s</xliff:g> толь бичгийг &lt;b&gt;татаж аван&lt;/b&gt; зөв бичилтээ сайжруулахыг бид зөвлөж байна.&lt;br/&gt; &lt;br/&gt; Татаж авахад 3G сүлжээгээр нэг хоёр минут болно. Танд &lt;b&gt;хязгааргүй дата эрх&lt;/b&gt; байхгүй бол нэмэлт төлбөр гарч болно.&lt;br/&gt; Та дата эрхийнхээ талаар сайн мэдэхгүй байгаа бол Wi-Fi холболттой газар очин автоматаар татаж авахыг зөвлөж байна.&lt;br/&gt; &lt;br/&gt; Зөвлөмж: Та өөрийн мобайль төхөөрөмжийн &lt;b&gt;Тохиргоо&lt;/b&gt; цэсний &lt;b&gt;Хэл &amp; оруулах&lt;/b&gt; руу очиж толь бичиг татаж авах буюу устгаж болно."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Таны мобайл төхөөрөмж дээр сонгосон хэлний толь бичиг байна. &lt;br/&gt; Бид танд <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> хэлний толь бичиг &lt;b&gt; татаж аван &lt;/ б&gt; бичихэд хялбар болгохыг зөвлөж байна. &lt;br/&gt; &lt;br/&gt; Татаж авахад 3G дээр нэг, хоёр минут болж магадгүй. Хэрэв та  &lt;b&gt; хязгааргүй дата ашиглах эрхтэй &lt;/ б&gt; биш бол нэмэлт төлбөр гарч болно. Хэрэв та өөрийн дата ашиглалтын эрхийг сайн мэдэхгүй байгаа бол Wi-Fi холболт ашиглан автоматаар татан авахыг эхлүүлэхийг зөвлөж байна.&lt;br/&gt; &lt;br/&gt; &lt;br/&gt; Зөвлөмж: Та өөрийн мобайл төхөөрөмжийн &lt;b&gt; тохиргоо &lt;/ б&gt; цэсэнд &lt;/ б&gt; Хэл &amp; оролт &lt;b&gt; руу очиж толь бичиг татаж авах, устгах боломжтой."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Одоо татах (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi-р татаж авах"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g> хэлний толь бичигтэй"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> хэлний толь ашиглах боломжтой"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Шалгах болон татаж авахын тулд дарна уу"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Татаж байна: <xliff:g id="LANGUAGE">%1$s</xliff:g> хэлний санал болгох үгс удахгүй бэлэн болно."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>-д зориулсан татан авалтын санал болголтууд удахгүй бэлэн болно."</string>
     <string name="version_text" msgid="2715354215568469385">"Хувилбар <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Нэмэх"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Толь бичигт нэмэх"</string>
diff --git a/java/res/values-mr-rIN/strings-action-keys.xml b/java/res/values-mr-rIN/strings-action-keys.xml
new file mode 100644
index 0000000..4dadfea
--- /dev/null
+++ b/java/res/values-mr-rIN/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"जा"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"पुढील"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"मागील"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"पूर्ण झाले"</string>
+    <string name="label_send_key" msgid="482252074224462163">"पाठवा"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"शोधा"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"विराम द्या"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"प्रतीक्षा करा"</string>
+</resources>
diff --git a/java/res/values-mr-rIN/strings-appname.xml b/java/res/values-mr-rIN/strings-appname.xml
new file mode 100644
index 0000000..80f11e7
--- /dev/null
+++ b/java/res/values-mr-rIN/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android कीबोर्ड (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android शब्दलेखन तपासक (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android कीबोर्ड सेटिंग्ज (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android शब्दलेखन तपासक सेटिंग्ज (AOSP)"</string>
+</resources>
diff --git a/java/res/values-mr-rIN/strings-config-important-notice.xml b/java/res/values-mr-rIN/strings-config-important-notice.xml
new file mode 100644
index 0000000..3ec6e26
--- /dev/null
+++ b/java/res/values-mr-rIN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"सूचना सुधारण्यासाठी आपल्या संप्रेषणांमधून आणि टाइप केलेल्या डेटामधून जाणून घ्या"</string>
+</resources>
diff --git a/java/res/values-mr-rIN/strings-letter-descriptions.xml b/java/res/values-mr-rIN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..995aa25
--- /dev/null
+++ b/java/res/values-mr-rIN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"स्त्रीलिंगी क्रमवाचक सूचक"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"सूक्ष्म चिन्ह"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"पुल्लिंगी क्रमवाचक सूचक"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"अणकुचीदार एस"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"ए, अनुदात्त"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"ए, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"ए, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"ए, नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"ए, स्वरवियोग चिन्ह"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"ए, वर रिंग"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"ए, ई, जोडाक्षर"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"सी, सेडिला"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"ई, अनुदात्त"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"ई, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"ई, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"ई, स्वरवियोग चिन्ह"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"आय, अनुदात्त"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"आय, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"आय, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"आय, स्वरवियोग चिन्ह"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"एन, नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"ओ, अनुदात्त"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"ओ, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"ओ, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"ओ, नासिक्यत्व खूण"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"ओ, स्वरवियोग चिन्ह"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"ओ, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"यू, अनुदात्त"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"यू, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"यू, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"यू, स्वरवियोग चिन्ह"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"वाय, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"थॉर्न"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"वाय, स्वरवियोग चिन्ह"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"ए, गुरुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"ए, लघुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"ए, ओगोनेक"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"सी, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"सी, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"सी, वर बिंदू"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"सी, कॅरोन"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"डी, कॅरोन"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"डी, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"ई, गुरुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"ई, लघुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"ई, वर बिंदू"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"ई, ओगोनेक"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"ई, कॅरोन"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"जी, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"जी, लघुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"जी, वर बिंदू"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"जी, सेडिला"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"एच, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"एच, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"आय, नासिकत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"आय, गुरुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"आय, लघुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"आय, ओगोनेक"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"बिंदू नसलेला आय"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"आय, जे जोडाक्षर"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"जे, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"के, सेडिला"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"एल, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"एल, सेडिला"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"एल, कॅरोन"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"एल, मध्य बिंदू"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"एल, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"एन, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"एन, सेडिला"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"एन, कॅरोन"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"एन, अॅपॉस्ट्रॉफी च्या अगोदर"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"ओ, गुरुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"ओ, लघुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"ओ, दुहेरी तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"ओ, ई, जोडाक्षर"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"आर, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"आर, सेडिला"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"आर, कॅरोन"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"एस, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"एस, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"एस, सेडिला"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"एस, कॅरोन"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"टी, सेडिला"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"टी, कॅरोन"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"टी, स्ट्रोक"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"यू, नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"यू, गुरुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"यू, लघुत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"यू, वर रिंग"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"यू, दुहेरी तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"यू, ओगोनेक"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"डब्ल्यू, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"वाय, स्वरितचिन्ह"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"झेड, तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"झेड, वर बिंदू"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"झेड, कॅरॉन"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"मोठा एस"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"ओ, हॉर्न"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"यू, हॉर्न"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"एस, खाली स्वल्पविराम"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"टी, खाली स्वल्पविराम"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"शॉ"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"ए, खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"ए, वर हुक"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"ए, स्वरितचिन्ह आणि तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"ए, स्वरितचिन्ह आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"ए, स्वरितचिन्ह आणि वर हुक"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"ए, स्वरितचिन्ह आणि नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"ए, स्वरितचिन्ह आणि खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"ए, लघुत्व चिन्ह आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"ए, लघुत्व चिन्ह आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"ए, लघुत्व चिन्ह आणि वर हुक"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"ए, लघुत्व चिन्ह आणि नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"ए, लघुत्व चिन्ह आणि खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"ई, खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"ई, वर हुक"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"ई, नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"ई, स्वरितचिन्ह आणि तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"ई, स्वरितचिन्ह आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"ई, स्वरितचिन्ह आणि वर हुक"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"ई, स्वरितचिन्ह आणि नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"ई, स्वरितचिन्ह आणि खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"आय, वर हुक"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"आय, खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"ओ, खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"ओ, वर हुक"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"ओ, स्वरितचिन्ह आणि तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"ओ, स्वरितचिन्ह आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"ओ, स्वरितचिन्ह आणि वर हुक"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"ओ, स्वरितचिन्ह आणि नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"ओ, स्वरितचिन्ह आणि खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"ओ, हॉर्न आणि तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"ओ, हॉर्न आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"ओ, हॉर्न आणि वर हुक"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"ओ, हॉर्न आणि नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"ओ, हॉर्न आणि खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"यू, खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"यू, वर हुक"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"यू, हॉर्न आणि तीक्ष्ण"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"यू, हॉर्न आणि अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"यू, हॉर्न आणि वर हुक"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"यू, हॉर्न आणि नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"यू, हॉर्न आणि खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"वाय, अनुदात्त"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"वाय, खाली बिंदू"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"वाय, वर हुक"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"वाय, नासिक्यत्व चिन्ह"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"उलटे उद्गार चिन्ह"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"डाव्या-दिशेला दुहेरी कोन अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"मध्य बिंदू"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"शिरोरेखित एक"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"उजव्या-दिशेला दुहेरी कोन अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"उलटे प्रश्न चिन्ह"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"डावे एकल अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"उजवे एकल अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"एकल निम्न-9 अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"डावे दुहेरी अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"उजवे दुहेरी अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"डॅगर"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"दुहेरी डॅगर"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"प्रति हजारी चिन्ह"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"अविभाज्य"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"दुहेरी अविभाज्य"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"एकल डाव्या-दिशेला कोन अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"एकल उजव्या-दिशेला कोन अवतरण चिन्ह"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"शिरोरेखित चार"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"शिरोरेखित लॅटिन लहान अक्षर एन"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"पेसो चिन्ह"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"द्वारा"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"उजवीकडे बाण"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"खालच्या दिशेने बाण"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"रिक्त संच"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"वाढ"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"पेक्षा-कमी किंवा समान"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"पेक्षा-मोठे किंवा समान"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"काळा तारा"</string>
+</resources>
diff --git a/java/res/values-mr-rIN/strings-talkback-descriptions.xml b/java/res/values-mr-rIN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..41c64f4
--- /dev/null
+++ b/java/res/values-mr-rIN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"मोठ्याने बोललेल्या संकेतशब्द की ऐकण्यासाठी हेडसेट प्लग इन करा."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"वर्तमान मजकूर %s आहे"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"मजकूर प्रविष्ट केला नाही"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ला <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> मध्ये सुधारणा करते"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> स्वयं-सुधारणा करते"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"अज्ञात वर्ण"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"अधिक चिन्‍हे"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"चिन्‍हे"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"हटवा"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"चिन्हे"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"अक्षरे"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"नंबर"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"सेटिंग्ज"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"व्हॉइस इनपुट"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"इमोजी"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"परत"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"शोधा"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"बिंदू"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"भाषा स्विच करा"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"पुढील"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"मागील"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift सक्षम"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock सक्षम"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"चिन्हे मोड"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"अधिक चिन्‍हे मोड"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"अक्षरे मोड"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"फोन मोड"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"फोन चिन्हे मोड"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"कीबोर्ड लपविलेला आहे"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> कीबोर्ड दर्शवित आहे"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"तारीख"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"तारीख आणि वेळ"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ईमेल"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"संदेशन"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"नंबर"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"फोन"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"मजकूर पाठवा"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"वेळ"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"अलीकडील"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"सहभागी"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ऑब्जेक्टस्"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"निसर्ग"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ठिकाणे"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"चिन्हे"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"इमोटिकॉन"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"कॅपिटल <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"कॅपिटल आय"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"कॅपिटल आय, वर बिंदू"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"अज्ञात प्रतीक"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"अज्ञात इमोजी"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"वैकल्पिक वर्ण उपलब्ध आहेत"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"वैकल्पिक वर्ण डिसमिस केलेले आहेत"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"वैकल्पिक सूचना उपलब्ध आहेत"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"वैकल्पिक सूचना डिसमिस केलेल्या आहेत"</string>
+</resources>
diff --git a/java/res/values-mr-rIN/strings.xml b/java/res/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..3ef3cf2
--- /dev/null
+++ b/java/res/values-mr-rIN/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"इनपुट पर्याय"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"संपर्क नावे शोधा"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"शब्दलेखन तपासक आपल्या संपर्क सूचीमधील प्रविष्ट्या वापरतो"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"कीप्रेस करताना होणारे कंपन"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"कीप्रेस करताना होणारा ध्वनी"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"कीप्रेस करताना पॉपअप"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अन्य इनपुट पद्धतींवर स्विच करा"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"भाषा स्विच की अन्य इनपुट पद्धती देखील समाविष्ट करते"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"भाषा स्विच की"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"एकाधिक इनपुट भाषा सक्षम केलेल्या असताना दर्शवा"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"स्लाइड दर्शक दर्शवा"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Shift किंवा Symbol की वरून स्लाइड करताना व्हिज्युअल सूचक प्रदर्शित करा"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"की पॉपअप विलंब डिसमिस करते"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"विलंब नाही"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"डीफॉल्ट"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>मिसे"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"सिस्टम डीफॉल्ट"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"संपर्क नावे सुचवा"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"सूचनांसाठी आणि सुधारणांसाठी संपर्कांमधील नावे वापरा"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"वैयक्तिकृत केलेल्या सूचना"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> मध्ये सुधारणा करा"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"डबल-स्पेस पूर्णविरामचिन्ह"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"स्पेसबारवर डबल टॅप केल्याने पूर्णविरामचिन्ह व त्यापाठोपाठ स्पेस घातली जाते"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"स्‍वयं-कॅपिटलायझेशन"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"प्रत्येक वाक्याचा पहिला शब्द कॅपिटल करा"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"वैयक्तिक शब्दकोश"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"अॅड-ऑन शब्दकोश"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"मु्ख्य शब्दकोश"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"सुधारणा सूचना दर्शवा"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"टाइप करताना सुचविलेले शब्द प्रदर्शित करा"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"नेहमी दर्शवा"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"पोर्ट्रेट मोडमध्ये दर्शवा"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"नेहमी लपवा"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"आक्षेपार्ह शब्द अवरोधित करा"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"संभाव्य आक्षेपार्ह शब्द सुचवू नका"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"स्‍वयं-सुधारणा"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"चुकीचे टाइप केलेले शब्द स्पेसबार आणि विरामचिन्हे स्वयंचलितपणे सुधारते"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"बंद"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"मर्यादशील"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"आक्रमक"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"खूप आक्रमक"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"पुढील-शब्द सूचना"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"सूचना करताना मागील शब्द वापरा"</string>
+    <string name="gesture_input" msgid="826951152254563827">"जेश्चर टायपिंग सक्षम करा"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"अक्षरांमधून स्लायडिंग करून एक शब्द इनपुट करा"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"जेश्चर अनुचिन्ह दर्शवा"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"डायनॅमिक फ्लोटिंग पूर्वावलोकन"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"जेश्चरींग करत असताना सुचविलेले शब्द पहा"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"वाक्यांश जेश्चर"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"स्पेस की वर ग्लायडिंग करून जेश्चर दरम्यान स्थाने इनपुट करा"</string>
+    <string name="voice_input" msgid="3583258583521397548">"व्हॉइस इनपुट की"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"व्हॉइस इनपुट पद्धती सक्षम केल्या नाहीत. भाषा आणि इनपुट सेटिंग्ज तपासा."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"इनपुट पद्धती कॉन्फिगर करा"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"इनपुट भाषा"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"अभिप्राय पाठवा"</string>
+    <string name="select_language" msgid="3693815588777926848">"इनपुट भाषा"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"जतन करण्यासाठी पुन्हा स्पर्श करा"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"शब्दकोश उपलब्ध"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"कीबोर्ड थीम"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"इंग्रजी (यूके)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"इंग्रजी (यूएस)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"स्पॅनिश (यूएस)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"इंग्रजी (यूके) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"इंग्रजी (यूएस) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"स्पॅनिश (यूएस) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (पारंपारिक)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (सिरिलिक)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (लॅटिन)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"भाषा नाही (वर्णमाला)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"वर्णमाला (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"वर्णमाला (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"वर्णमाला (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"वर्णमाला (ड्व्होरॅक)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"वर्णमाला (कोलमॅक)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"वर्णमाला (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"इमोजी"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"सानुकूल इनपुट शैली"</string>
+    <string name="add_style" msgid="6163126614514489951">"शैली जोडा"</string>
+    <string name="add" msgid="8299699805688017798">"जोडा"</string>
+    <string name="remove" msgid="4486081658752944606">"काढा"</string>
+    <string name="save" msgid="7646738597196767214">"जतन करा"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"भाषा"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"लेआउट"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"आपली सानुकूल इनपुट शैली आपण ती वापरणे प्रारंभ करण्यापूर्वी सक्षम करणे आवश्यक आहे. आपण आता ती सक्षम करू इच्‍छिता?"</string>
+    <string name="enable" msgid="5031294444630523247">"सक्षम करा"</string>
+    <string name="not_now" msgid="6172462888202790482">"आता नाही"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"समान इनपुट शैली आधीपासूनच अस्तित्वात आहे: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"की जास्त दाबण्यात विलंब"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"कीप्रेस कंपन कालावधी"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"कीप्रेस ध्वनी तीव्रता"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"बाह्य शब्दकोश फाईल वाचा"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"डाउनलोड फोल्डरमध्ये शब्दकोश फायली नाहीत"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"स्थापित करण्यासाठी शब्दकोश फाईल निवडा"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> साठी ही फाईल खरोखर स्थापित करायची?"</string>
+    <string name="error" msgid="8940763624668513648">"एक त्रुटी आली"</string>
+    <string name="button_default" msgid="3988017840431881491">"डीफॉल्ट"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> वर स्वागत आहे"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"जेश्चर टायपिंग करून"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"प्रारंभ करा"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"पुढील चरण"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सेट अप करत आहे"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> सक्षम करा"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"कृपया आपल्या भाषेमध्ये आणि इनपुट सेटिंग्जमध्ये \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" तपासा. हे त्याचे आपल्या डिव्हाइसवर चालणे अधिकृत करेल."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> आपल्या भाषेत आणि इनपुट सेटिंग्जमध्ये आधीपासून सक्षम केले आहे, म्हणून हे चरण पूर्ण झाले आहे. पुढच्या चरणावर!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"सेटिंग्जमध्ये सक्षम करा"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> वर स्विच करा"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"पुढे, आपली सक्रिय मजकूर-इनपुट पद्धत म्हणून \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" निवडा."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"इनपुट पद्धती स्विच करा"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"अभिनंदन, आता आपण सज्ज आहात!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"आता आपण <xliff:g id="APPLICATION_NAME">%s</xliff:g> सह आपल्या सर्व आवडत्या अॅप्समध्ये टाइप करू शकता."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"अतिरिक्त भाषा कॉन्फिगर करा"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"समाप्त"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"अॅप चिन्ह दर्शवा"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"लाँचर मध्ये अनुप्रयोग चिन्ह प्रदर्शित करा"</string>
+    <string name="app_name" msgid="6320102637491234792">"शब्दकोश प्रदाता"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"शब्दकोश प्रदाता"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"शब्दकोश सेवा"</string>
+    <string name="download_description" msgid="6014835283119198591">"शब्दकोश अद्यतन माहिती"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"अॅड-ऑन शब्दकोश"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"शब्दकोश उपलब्ध"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"शब्दकोशांसाठी सेटिंग्ज"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"वापरकर्ता शब्दकोश"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"वापरकर्ता शब्दकोश"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"शब्दकोश उपलब्ध"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"सध्या डाउनलोड करत आहे"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"स्थापित केले"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"स्थापित केले, अक्षम केले"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"शब्दकोश सेवेस कनेक्ट करताना समस्या"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"कोणतेही शब्दकोश उपलब्ध नाहीत"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"रीफ्रेश करा"</string>
+    <string name="last_update" msgid="730467549913588780">"अंतिम अद्यतनित"</string>
+    <string name="message_updating" msgid="4457761393932375219">"अद्यतनांसाठी तपासत आहे"</string>
+    <string name="message_loading" msgid="5638680861387748936">"लोड करीत आहे..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"मु्ख्य शब्दकोश"</string>
+    <string name="cancel" msgid="6830980399865683324">"रद्द करा"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"सेटिंग्ज"</string>
+    <string name="install_dict" msgid="180852772562189365">"स्‍थापित करा"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"रद्द करा"</string>
+    <string name="delete_dict" msgid="756853268088330054">"हटवा"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"आपल्या मोबाईल डिव्हाइसवर निवडलेल्या भाषेमध्ये शब्दकोश उपलब्ध आहे.&lt;br/&gt; आम्ही आपला टायपिंग अनुभव सुधारण्यासाठी <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> शब्दकोश &lt;b&gt;डाउनलोड करण्याची&lt;/b&gt; शिफारस करतो.&lt;br/&gt; &lt;br/&gt; डाउनलोड कऱण्यास 3G वर एक किंवा दोन मिनिट लागू शकतात. आपल्याकडे &lt;b&gt;अमर्यादित डेटा योजना&lt;/b&gt; नसल्यास शुल्क लागू शकते. आपल्याकडे असलेल्या डेटा योजनेबद्दल आपण सुनिश्चित नसल्यास, डाउनलोड स्वयंचलितपणे प्रारंभ करण्यासाठी Wi-Fi कनेक्शन शोधण्याची शिफारस आम्ही करतो.&lt;br/&gt; &lt;br/&gt; टीप: आपण आपल्या मोबाईल डिव्हाइसच्या &lt;b&gt;सेटिंग्ज&lt;/b&gt;मेनूमधील &lt;b&gt;भाषा आणि इनपुट&lt;/b&gt; वर जाऊन शब्दकोश डाउनलोड करू आणि काढू शकता."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"आता डाउनलोड करा (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi वर डाउनलोड करा"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> साठी शब्दकोश उपलब्ध आहे"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"पुनरावलोकन करण्यासाठी आणि डाउनलोड करण्यासाठी दाबा"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"डाउनलोड करत आहे: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> साठी सूचना लवकरच तयार होतील."</string>
+    <string name="version_text" msgid="2715354215568469385">"आवृत्ती <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"जोडा"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"शब्दकोशात जोडा"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"वाक्यांश"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"अधिक पर्याय"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"कमी पर्याय"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ठीक"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"शब्द:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"शॉर्टकट:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"भाषा:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"एक शब्द टाईप करा"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"पर्यायी शॉर्टकट"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"शब्द संपादित करा"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"संपादित करा"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"हटवा"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"आपल्याकडे वापरकर्ता शब्दकोशात कोणतेही शब्द नाहीत. जोडा (+) बटणास स्पर्श करून शब्द जोडा."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"सर्व भाषांसाठी"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"अधिक भाषा..."</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"हटवा"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-ms-rMY/strings-action-keys.xml b/java/res/values-ms-rMY/strings-action-keys.xml
index f1a75d2..b839960 100644
--- a/java/res/values-ms-rMY/strings-action-keys.xml
+++ b/java/res/values-ms-rMY/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Sblm"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Siap"</string>
     <string name="label_send_key" msgid="482252074224462163">"Hntr"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Carian"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Jeda"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Tggu"</string>
 </resources>
diff --git a/java/res/values-ms-rMY/strings-config-important-notice.xml b/java/res/values-ms-rMY/strings-config-important-notice.xml
new file mode 100644
index 0000000..705d34e
--- /dev/null
+++ b/java/res/values-ms-rMY/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Perbaik cadangan berdasarkan komunikasi anda dan data yang ditaip"</string>
+</resources>
diff --git a/java/res/values-ms-rMY/strings-emoji-descriptions.xml b/java/res/values-ms-rMY/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..1595a99
--- /dev/null
+++ b/java/res/values-ms-rMY/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Tanda hak cipta"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Tanda berdaftar"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Tanda seruan berkembar"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Tanda tanya seruan"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Tanda cap dagangan"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Sumber maklumat"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Anak panah kiri kanan"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Anak panah atas bawah"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Anak panah barat laut"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Anak panah timur laut"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Anak panah tenggara"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Anak panah barat daya"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Anak panah hala kiri dengan cangkuk"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Anak panah hala kanan dengan cangkuk"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Jam"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Jam pasir"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Segi tiga kembar arah kanan hitam"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Segi tiga kembar arah kiri hitam"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Segi tiga kembar arah atas hitam"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Segi tiga kembar arah bawah hitam"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Jam penggera"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Jam pasir dengan pasir mengalir"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Huruf m besar latin dalam bulatan"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Empat segi kecil hitam"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Empat segi kecil putih"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Segi tiga arah kanan hitam"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Segi tiga arah kiri hitam"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Empat segi sederhana putih"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Empat segi sederhana hitam"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Empat segi sederhana kecil putih"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Empat segi sederhana kecil hitam"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Matahari dengan sinar hitam"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Awan"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Telefon hitam"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Peti undi dengan tanda semak"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Payung dengan titisan hujan"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Minuman panas"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Indeks putih menunjuk ke atas"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Muka tersenyum putih"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Aries"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Taurus"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Gemini"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Cancer"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leo"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Virgo"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Libra"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Scorpius"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Sagittarius"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Capricorn"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Aquarius"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Pisces"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Daun sped hitam"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Daun kelawar hitam"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Daun hati hitam"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Daun berlian hitam"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Air panas"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Simbol kitar semula universal hitam"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Simbol kerusi roda"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Sauh"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Tanda amaran"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Tanda voltan tinggi"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Bulatan putih sederhana"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Bulatan hitam sederhana"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Bola sepak"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Besbol"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Orang salji tanpa salji"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Matahari di sebalik awan"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Ophiuchus"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Dilarang masuk"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Gereja"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Air pancut"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Bendera dalam lubang"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Kapal layar"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Khemah"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Pam minyak"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Gunting hitam"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Tanda semak tebal putih"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Kapal terbang"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Sampul surat"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Penumbuk"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Tangan diangkat"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Tanda menang"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Pensel"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Mata pen hitam"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Tanda semak tebal"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"X darab tebal"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Kilauan"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Asterisk berbucu lapan"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Bintang hitam berbucu lapan"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Emping salji"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Kilauan"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Tanda silang"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Tanda silang empat segi negatif"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Perhiasan tanda tanya hitam"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Perhiasan tanda tanya putih"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Perhiasan tanda seruan putih"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Simbol tanda seruan tebal"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Hati hitam tebal"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Tanda tambah tebal"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Tanda tolak tebal"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Tanda bahagi tebal"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Anak panah hala kanan hitam"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Gelung bergulung"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Gelung bergulung kembar"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Anak panah menghala ke kanan kemudian melengkung ke atas"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Anak panah menghala ke kanan kemudian melengkung ke bawah"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Anak panah hitam hala kiri"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Anak panah hitam hala atas"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Anak panah hitam hala bawah"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Empat segi besar hitam"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Empat segi besar putih"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Bintang sederhana putih"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Bulatan besar tebal"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Sengkang beralun"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Tanda perselangan silih"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Ideograf tahniah bulat"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Ideograf rahsia bulat"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Naga merah jubin mahjong"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Joker hitam daun terup"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Jenis darah A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Jenis darah B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Jenis darah O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Tempat letak kereta"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Jenis darah AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"CL empat segi"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"Tenang empat segi"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"Percuma empat segi"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"ID empat segi"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"Baharu empat segi"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"NG empat segi"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"OK empat segi"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"SOS empat segi"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"Naik dengan tanda seruan empat segi"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"Lawan empat segi"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Katakana di sini empat segi"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Perkhidmatan katakana empat segi"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Ideograf percuma empat segi"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Ideograf tempat duduk yang ditempah empat segi"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Ideograf larangan empat segi"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Ideograf jawatan kosong empat segi"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Ideograf penerimaan empat segi"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Ideograf penuh empat segi"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Ideograf dibayar empat segi"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Ideograf bulanan empat segi"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Ideograf permohonan empat segi"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Ideograf diskaun empat segi"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Ideograf perniagaan dibuka empat segi"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Ideograf kelebihan bulat"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Ideograf terima bulat"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Puting beliung"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Berkabut"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Payung tertutup"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Malam dengan bintang"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Matahari terbit di atas gunung"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Sunrise"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Skap bandar raya waktu senja"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Matahari terbenam di atas bangunan"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Pelangi"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Jambatan pada waktu malam"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Gelombang air"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Gunung Berapi"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Bima sakti"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Glob bumi eropah-afrika"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Glob bumi amerika"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Glob bumi asia-australia"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Glob dengan meridian"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Simbol bulan baharu"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Simbol bulan sabit mengambang"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Simbol bulan suku pertama"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Simbol bulan hampir purnama mengambang"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Simbol bulan purnama"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Simbol bulan hampir purnama surut"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Simbol bulan suku akhir"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Simbol bulan sabit surut"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Bulan sabit"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Bulan baharu dengan muka"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Bulan suku pertama dengan muka"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Bulan suku akhir dengan muka"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Bulan purnama dengan muka"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Matahari dengan muka"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Bintang bersinar"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Tahi bintang"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Buah berangan"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Anak benih"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Pokok malar hijau"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Pokok daun luruh"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Pokok palma"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Kaktus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Tulip"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Bunga sakura"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Ros"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Bunga raya"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Bunga matahari"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Bunga"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Tongkol jagung"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Pokok padi"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Herba"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Empat daun semanggi"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Daun mapel"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Daun gugur"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Daun ditiup angin"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Cendawan"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Tomato"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Terung"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Anggur"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Tembikai"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Tembikai"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Oren Tangerin"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Lemon"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Kuning Pisang"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Nanas"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Epal merah"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Epal hijau"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Pear"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Pic"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Ceri"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Strawberi"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Sepotong piza"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Daging pada tulang"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Kaki ayam"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Keropok beras"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Bebola beras"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Nasi"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Kari dan nasi"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Mangkuk mengukus"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spageti"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Roti"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Kentang goreng"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Ubi keledek panggang"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Udang goreng"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Kek ikan dengan corak pusaran"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Aiskrim lembut"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Ais kisar"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Aiskrim"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Donat"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Biskut"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Bar coklat"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Kandi"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Lolipop"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Kastad"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Bekas madu"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Kek rapuh"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Kotak Bento"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Seperiuk makanan"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Masakan"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Garpu dan pisau"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Cawan tanpa pemegang"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Botol Sake dan cawan"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Gelas wain"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Gelas koktel"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Minuman tropika"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Kole bir"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Kole bir dihantukkan"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Botol bayi"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Reben"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Hadiah berbalut"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Kek hari lahir"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack-o-lantern"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Pokok Krismas"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Santa Klaus"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Bunga api"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Bunga api berlian"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Belon"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Peletus konfeti"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Bola Konfeti"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Pokok Tanabata"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Bendera berpalang"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Hiasan pain"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Anak patung Jepun"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Ular-ular kap"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Loceng angin"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Majlis melihat bulan"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Beg galas sekolah"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Topi graduasi"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Kuda karusel"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Roda Ferris"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Roller-coaster"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Joran dan ikan"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Mikrofon"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Kamera filem"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Pawagam"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Fon kepala"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Palet Artis"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Topi"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Khemas sarkas"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Tiket"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Papan ketap"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Seni persembahan"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Permainan video"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Tepat pada sasaran"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Mesin slot"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Biliard"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Dadu"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Boling"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Daun terup bunga"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Nota muzik"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Pelbagai nota muzik"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saksofon"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Gitar"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Papan nada muzik"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trompet"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Biola"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Skor muzik"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Baju berlari dengan selempang"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Raket dan bola tenis"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Ski dan but ski"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Bola keranjang dan gelung"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Bendera kotak-kotak"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Peluncur salji"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Pelari"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Peluncur"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Trofi"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Lumba kuda"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Bola sepak Amerika"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Bola sepak ragbi"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Perenang"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Bangunan rumah"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Rumah dengan taman"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Bangunan pejabat"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Pejabat pos Jepun"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Pejabat pos Eropah"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Hospital"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Bank"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Mesin teler automatik"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Hotel cinta"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Kedai serbaneka"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Sekolah"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Gedung beli-belah"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Kilang"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Tanglung izakaya"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Istana Jepun"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Istana Eropah"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Tikus"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Tikus"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Lembu jantan"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Kerbau"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Lembu"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Harimau Bintang"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Arnab"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Kucing"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Naga"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Buaya"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Ikan paus"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Siput"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Ular"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Kuda"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Biri-biri jantan"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Kambing"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Biri-biri"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Monyet"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Ayam jantan"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Ayam"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Anjing"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Babi"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Babi hutan"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Gajah"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Kurita"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Cengkerang berpusar"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Pepijat"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Semut"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Lebah madu"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Kumbang kura-kura"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Ikan"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Ikan tropika"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Ikan buntal"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Penyu"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Anak ayam menetas"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Anak ayam"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Anak ayam menghadap depan"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Burung"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Penguin"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Koala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Poodle"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Unta dromedaris"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Unta Bactrian"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Dolfin"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Muka tikus"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Muka lembu"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Muka harimau"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Muka arnab"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Muka kucing"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Muka naga"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Ikan paut memancutkan air"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Muka kuda"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Muka monyet"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Muka anjing"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Muka babi"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Muka katak"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Muka hamster"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Muka serigala"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Muka beruang"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Muka panda"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Hidung babi"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Kesan tapak"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Mata"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Telinga"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Hidung"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Mulut"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Lidah"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Tangan putih menunjuk ke atas"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Tangan putih menunjuk ke bawah"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Tangan putih menunjuk ke kiri"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Tangan putih menunjuk ke kanan"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Isyarat enumbuk"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Isyarat tangan melambai"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Isyarat ok"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Isyarat bagus"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Isyarat tidak bagus"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Isyarat bertepuk tangan"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Isyarat tangan terbuka"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Mahkota"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Topi wanita"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Cermin mata"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Tali leher"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Kemeja T"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Jean"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Gaun"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Pakaian wanita"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Beg duit"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Beg tangan"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Dompet"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Kasut lelaki"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Kasut sukan"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Kasut tumit tinggi"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Sandal wanita"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"But wanita"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Tapak kaki"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Bayang patung"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Bayang patung"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Budak lelaki"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Budak perempuan"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Lelaki"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Wanita"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Keluarga"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Lelaki dan wanita berpegangan tangan"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Dua lelaki berpegangan tangan"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Dua wanita berpegangan tangan"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Pegawai polis"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Wanita dengan telinga arnab"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Pengantin dengan vel"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Orang berambut perang"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Lelaki dengan gua pi mao"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Lelaki berserban"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Lelaki lebih tua"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Wanita lebih tua"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Bayi"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Buruh binaan"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Puteri"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Gergasi Jepun"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Jembalang Jepun"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Bebayang"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Malaikat kecil"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Makhluk asing"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Raksasa asing"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Imp"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Tengkorak"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Orang meja maklumat"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Pengawal"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Penari"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Gincu"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Pengilat kuku"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Urutan muka"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Gunting rambut"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Jalur Tukang Gunting Rambut"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Picagari"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pil"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Tanda ciuman"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Surat cinta"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Cincin"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Batu permata"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Ciuman"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Jambak bunga"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Pasangan dengan hati"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Perkahwinan"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Jantung berdegup"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Patah hati"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Dua hati"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Hati berkilauan"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Hati berkembang"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Hati dengan anak panah"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Hati biru"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Hati hijau"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Hati kuning"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Hati ungu"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Hati dengan riben"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Hati berputar"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Hiasan hati"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Bentuk berlian dengan titik di dalam"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Mentol elektrik"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Simbol kemarahan"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bom"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Simbol tidur"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Simbol pelanggaran"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Simbol peluh memercik"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Titik kecil"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Simbol sengkang"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Timbunan najis"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Biseps dilenturtegang"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Simbol pening"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Belon pertuturan"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Belon pemikiran"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Bunga putih"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Simbol seratus mata"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Beg wang"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Pertukaran mata wang"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Isyarat dolar tebal"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Kad kredit"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Wang kertas dengan tanda yen"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Wang kertas dengan tanda dolar"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Wang kertas dengan tanda euro"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Wang kertas dengan tanda pound"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Wang dengan sayap"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Carta dengan aliran ke atas dan tanda yen"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Tempat duduk"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Komputer peribadi"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Beg bimbit"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minicakera"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Cakera liut"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Cakera optik"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"Dvd"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Folder fail"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Buka folder fail"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Halaman bergulung"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Halaman menghadap ke atas"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Kalendar"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Kalendar koyak"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Kad indeks"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Carta dengan aliran ke atas"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Carta dengan aliran ke bawah"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Carta bar"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Papan Keratan"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Pin tekan"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Pin tekan bulat"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Klip kertas"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Pembaris lurus"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Pembaris segi tiga"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Tab penanda halaman"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Lejar"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Buku Nota"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Buku nota dengan kulit bercorak"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Buku tertutup"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Buku terbuka"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Buku hijau"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Buku biru"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Buku jingga"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Buku"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Lencana nama"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Skrol"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memo"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Gagang telefon"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Alat kelui"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Mesin faks"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Antena satelit"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Pembesar suara pengumuman awam"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Megafon sorakan"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Dulang peti keluar"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Dulang peti masuk"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Pakej"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Simbol e-mel"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Sampul surat masuk"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Sampul surat dengan anak panah ke bawah di atas"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Peti mel tertutup dengan bendera diturunkan"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Peti mel tertutup dengan bendera dinaikkan"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Peti mel terbuka dengan bendera dinaikkan"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Peti mel terbuka dengan bendera diturunkan"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Peti surat"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Hon pos"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Surat khabar"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Telefon mudah alih"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Telefon mudah alih dengan anak panah hala kanan di sebelah kiri"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Mod getaran"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Telefon mudah alih dimatikan"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Tiada telefon mudah alih"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antena dengan bar"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Kamera"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Kamera video"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Televisyen"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Kaset Video"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Anak panah hala kanan berpintal"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Anak panah bulatan terbuka hala kanan dan hala kiri mengikut arah jam"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Anak panah bulatan terbuka hala kanan dan hala kiri mengikut arah jam dengan tindihan satu dalam bulatan"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Anak panah bulatan terbuka menurun dan menaik mengikut arah jam"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Anak panah bulatan terbuka menurun dan menaik lawan arah jam"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Simbol cahaya rendah"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Simbol cahaya tinggi"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Pembesar suara dengan garisan pembatalan"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Pembesar suara"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Pembesar suara dengan satu gelombang bunyi"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Pembesar suara dengan tiga gelombang bunyi"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Bateri"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Palam elektrik"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Kanta pembesar menunjuk ke kiri"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Kata pembesar menunjuk ke kanan"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Mangga dengan pen dakwat"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Mangga tertutup dengan kunci"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Anak kunci"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Mangga"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Mangga terbuka"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Loceng"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Loceng dengan garisan pembatalan"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Penanda halaman"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Simbol pautan"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Butang radio"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Kembali dengan anak panah hala kiri di atas"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"Akhir dengan anak panah hala kiri di atas"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"Hidup dengan tanda seruan dengan anak panah kiri kanan di atas"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Tidak lama lagi dengan anak panah hala kiri di atas"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Atas dengan anak panah hala atas di atas"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Simbol tiada sesiapa di bawah umur 18 tahun"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Butang kekunci sepuluh"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Simbol input huruf besar latin"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Simbol input huruf kecil latin"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Simbol input nombor"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Simbol input untuk simbol"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Simbol input huruf latin"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Api"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Lampu suluh"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Sepana"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Tukul"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Nat dan bolt"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hocho"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistol"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Mikroskop"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Teleskop"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Bola kristal"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Bintang berbucu enam dengan titik tengah"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Simbol Jepun untuk perantis"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Lambang trisula"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Butang empat segi hitam"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Butang empat segi putih"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Bulatan merah besar"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Bulatan biru besar"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Berlian oren besar"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Berlian biru besar"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Berlian oren kecil"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Berlian biru kecil"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Segi tiga merah menunjuk ke atas"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Segi tiga merah menunjuk ke bawah"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Segi tiga merah kecil menunjuk ke atas"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Segi tiga merah kecil menunjuk ke bawah"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Muka jam pukul satu"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Muka jam pukul dua"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Muka jam pukul tiga"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Muka jam pukul empat"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Muka jam pukul lima"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Muka jam pukul enam"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Muka jam pukul tujuh"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Muka jam pukul lapan"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Muka jam pukul sembilan"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Muka jam pukul sepuluh"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Muka jam pukul sebelas"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Muka jam pukul dua belas"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Muka jam pukul satu setengah"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Muka jam pukul dua setengah"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Muka jam pukul tiga setengah"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Muka jam pukul empat setengah"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Muka jam pukul lima setengah"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Muka jam pukul enam setengah"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Muka jam pukul tujuh setengah"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Muka jam pukul lapan setengah"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Muka jam pukul sembilan setengah"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Muka jam pukul sepuluh setengah"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Muka jam pukul sebelas setengah"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Muka jam pukul dua belas setengah"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Gunung fuji"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Menara Tokyo"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Patung Liberty"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Bebayang jepun"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Muka tersengih"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Muka tersengih dengan mata tersenyum"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Muka dengan air mata kegembiraan"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Muka tersenyum dengan mulut terbuka"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Muka tersenyum dengan mulut terbuka dan mata tersenyum"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Muka tersenyum dengan mulut terbuka dan peluh dingin"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Muka tersenyum dengan mulut terbuka dan mata terpejam rapat"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Muka tersenyum dengan halo"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Muka tersenyum dengan tanduk"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Muka mengenyit mata"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Muka tersenyum dengan mata tersenyum"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Muka menikmati makanan lazat"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Muka lega"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Muka tersenyum dengan mata berbentuk hati"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Muka tersenyum dengan cermin mata hitam"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Muka mencebik"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Muka neutral"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Muka tanpa perasaan"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Muka tidak hairan"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Muka dengan peluh dingin"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Muka termenung"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Muka keliru"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Muka bingung"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Muka bercium"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Muka melayangkan ciuman"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Muka bercium dengan mata tersenyum"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Muka bercium dengan mata tertutup"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Muka dengan lidah terjelir"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Muka dengan lidah terjelir dan mengenyitkan mata"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Muka dengan lidah terjelir dan mata tertutup rapat"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Muka kecewa"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Muka bimbang"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Muka marah"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Muka muncung"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Muka menangis"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Muka bersungguh-sungguh"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Muka dengan rupa kemenangan"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Muka kecewa tetapi lega"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Muka muram dengan mulut terbuka"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Muka sedih"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Muka takut"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Muka letih"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Muka mengantuk"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Muka penat"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Muka berkerut"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Muka menangis kuat"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Muka dengan mulut terbuka"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Muka diam"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Muka dengan mulut terbuka dan peluh dingin"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Muka menjerit ketakutan"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Muka terperanjat"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Muka merah"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Muka tidur"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Muka pening"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Muka tanpa mulut"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Muka dengan topeng perubatan"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Muka kucing tersengih dengan mata tersenyum"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Muka kucing dengan air mata kegembiraan"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Muka kucing tersenyum dengan mulut terbuka"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Muka kucing tersenyum dengan mata berbentuk hati"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Muka kucing dengan senyuman sinis"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Muka kucing bercium dengan mata tertutup"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Muka kucing muncung"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Muka kucing menangis"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Muka kucing letih"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Muka tanpa gerak isyarat baik"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Muka dengan gerak isyarat ok"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Orang menunduk lama"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Monyet menutup mata"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Monyet menutup telinga"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Monyet menutup mulut"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Orang gembira mengangkat satu tangan"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Orang mengangkat kedua-dua tangan untuk meraikan"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Orang muram"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Orang dengan muka muncung"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Orang dengan tangan bersilang"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Roket"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helikopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Kepala kereta api wap"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Kereta api"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Kereta api kelajuan tinggi"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Kereta api kelajuan tinggi dengan muncung peluru"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Kereta api"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Aliran ringan"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Stesen"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Trem"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Kereta trem"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Bas"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Bas dari arah depan"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Bas elektrik"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Perhentian bas"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Bas mini"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulans"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Kereta bomba"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Kereta polis"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Kereta polis dari arah depan"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Teksi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Teksi dari arah depan"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Kereta"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Kereta dari arah depan"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Kenderaan rekreasi"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Trak penghantaran"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Lori sambung sendi"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Traktor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monorel"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Kereta api gunung"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Kereta api tergantung"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Kereta kabel gunung"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Trem udara"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Kapal"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Perahu dayung"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Bot laju"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Lampu isyarat mendatar"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Lampu isyarat menegak"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Tanda pembinaan"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Lampu berputar kereta polis"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Bendera segi tiga pada tiang"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Pintu"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Isyarat dilarang masuk"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Simbol merokok"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Simbol dilarang merokok"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Simbol buang sampah di tempatnya"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Simbol jangan buang sampah"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Simbol air boleh diminum"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Simbol air tidak boleh diminum"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Basikal"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Tiada basikal"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Penunggang basikal"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Penunggang basikal gunung"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pejalan kaki"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Tiada pejalan kaki"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Kanak-kanak melintas"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Simbol lelaki"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Simbol wanita"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Tandas"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Simbol bayi"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Tandas"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Tandas"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Pancuran"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Bilik mandi"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Tab mandi"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Kawalan pasport"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Kastam"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Tuntutan bagasi"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Bagasi kiri"</string>
+</resources>
diff --git a/java/res/values-ms-rMY/strings-letter-descriptions.xml b/java/res/values-ms-rMY/strings-letter-descriptions.xml
new file mode 100644
index 0000000..3af5ea2
--- /dev/null
+++ b/java/res/values-ms-rMY/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Penunjuk ordinal feminin"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Tanda mikro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Penunjuk ordinal maskulin"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S tajam"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grava"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, akut"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, gelung di atas"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, huruf kembar"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, sedila"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grava"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, akut"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grava"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, akut"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grava"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, akut"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, strok"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grava"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, akut"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, sirkumfleks"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, akut"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, brif"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, akut"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, sirkumfleks"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, titik di atas"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, strok"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, brif"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, titik di atas"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, sirkumfleks"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, brif"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, titik di atas"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, sedila"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, sirkumfleks"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, strok"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, brif"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I tanpa titik"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, huruf kembar"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, sirkumfleks"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, sedila"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, akut"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, sedila"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, titik tengah"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, strok"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, akut"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, sedila"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, didahului oleh koma terbalik"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, brif"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, akut berganda"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, huruf kembar"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, akut"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, sedila"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, akut"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, sirkumfleks"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, sedila"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, sedila"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, strok"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, brif"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, gelung di atas"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, akut berkembar"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, sirkumfleks"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, sirkumfleks"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, akut"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, titik di atas"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S Panjang"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, tanduk"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, tanduk"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, koma di bawah"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, koma di bawah"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, titik di bawah"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, sirkumfleks dan akut"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, sirkumfleks dan grava"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, sirkumfleks dan cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, sirkumfleks dan tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, sirkumfleks dan titik di bawah"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, brif dan akut"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, brif dan grava"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, brif dan cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, brif dan tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, brif dan titik di bawah"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, titik di bawah"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, sirkumfleks dan akut"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, sirkumfleks dan grava"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, sirkumfleks dan cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, sirkumfleks dan tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, sirkumfleks dan titik di bawah"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, titik di bawah"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, titik di bawah"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, sirkumfleks dan akut"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, sirkumfleks dan grava"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, sirkumfleks dan cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, sirkumfleks dan tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, sirkumfleks dan titik di bawah"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, tanduk dan akut"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, tanduk dan grava"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, tanduk dan cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, tanduk dan tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, tanduk dan titik di bawah"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, titik di bawah"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, cangkuk dan akut"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, tanduk dan grafa"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, tanduk dan cangkuk di atas"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, tanduk dan tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, tanduk dan titik di bawah"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, titik di bawah"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, titik di atas"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Tanda seru terbalik"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Tanda petikan sudut berkembar menunjuk ke kiri"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Titik tengah"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superskrip satu"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Tanda petikan sudut berkembar menunjuk ke kanan"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Tanda soal terbalik"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Tanda petikan tunggal kiri"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Tanda petikan tunggal kanan"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Tanda petikan 9 rendah tunggal"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Tanda petikan berkembar kiri"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Tanda petikan berkembar kanan"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Badik"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Badik berkembar"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Tanda per mille"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prima"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Prima berkembar"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Tanda petikan sudut menunjuk ke kiri tunggal"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Tanda petikan sudut menunjuk ke kanan tunggal"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superskrip empat"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Huruf kecil n superskrip latin"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Tanda Peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Dengan alamat"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Anak panah hala kanan"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Anak panah hala bawah"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Set kosong"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Kenaikan"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kurang daripada atau sama dengan"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Lebih besar daripada atau sama dengan"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Bintang hitam"</string>
+</resources>
diff --git a/java/res/values-ms-rMY/strings-talkback-descriptions.xml b/java/res/values-ms-rMY/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..d5ae637
--- /dev/null
+++ b/java/res/values-ms-rMY/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Pasangkan set kepala untuk mendengar kekunci kata laluan disebut dengan kuat."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Teks semasa adalah %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Tiada teks dimasukkan"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> membetulkan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> menjadi <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> melakukan auto pembetulan"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Aksara yang tidak diketahui"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Lagi simbol"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simbol"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Padam"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simbol"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Huruf"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Nombor"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Tetapan"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"{0}&lt;td class=\"shortcuts\"&gt;{/0} Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Input suara"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Kembali"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Carian"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Titik"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Tukar bahasa"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Slps"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Sebelumnya"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Kunci anjak didayakan"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Kunci huruf besar didayakan"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Mod simbol"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Lagi mod simbol"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Mod huruf"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Mod telefon"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Mod simbol telefon"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Papan kekunci tersembunyi"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Menunjukkan papan kekunci <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"tarikh"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"tarikh dan masa"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mel"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"pemesejan"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"nombor"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teks"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"masa"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Terkini"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Orang"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objek"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Alam Semula Jadi"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Tempat"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simbol"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikon"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Huruf besar <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I huruf besar"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I huruf besar, titik di atas"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbol yang tidak diketahui"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji yang tidak dikethui"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Aksara alternatif adalah tersedia"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Aksara alternatif diketepikan"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Cadangan alternatif tersedia"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Cadangan alternatif diketepikan"</string>
+</resources>
diff --git a/java/res/values-ms-rMY/strings.xml b/java/res/values-ms-rMY/strings.xml
index c9b4a03..1abe4fc 100644
--- a/java/res/values-ms-rMY/strings.xml
+++ b/java/res/values-ms-rMY/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Pilihan input"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Arahan Log Penyelidikan"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Cari nama kenalan"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Penyemak ejaan menggunakan entri dari senarai kenalan anda"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Getar pada tekanan kekunci"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Bunyi pada tekanan kekunci"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop timbul pada tekanan kunci"</string>
-    <string name="general_category" msgid="1859088467017573195">"Umum"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Pembetulan teks"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Taipan gerak isyarat"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Pilihan lain"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Tetapan lanjutan"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Pilihan untuk pakar"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Pilihan input"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Tampilan"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Pilihan berbilang bahasa"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Plhn taipan gerak isyarat"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Pembetulan teks"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Lanjutan"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Tukar ke kaedah input lain"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kunci pertukaran bahasa meliputi kaedah masukan lain juga"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Kekunci tukar bahasa"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Tetapan asal sistem"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Cadangkan nama Kenalan"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Menggunakan nama daripada Kenalan untuk cadangan dan pembetulan"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Cadangan diperibadikan"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Perbaik <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Titik ruang berganda"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Mengetik 2X pada bar ruang memasukkan titik diikuti dengan ruang"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Autopenghurufbesaran"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Tunjukkan jejak gerak isyarat"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Pratonton terapung dinamik"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Lihat perkataan yang dicadangkan semasa membuat gerak isyarat"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Disimpan"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Pasangkan set kepala untuk mendengar kekunci kata laluan disebut dengan kuat."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Teks semasa adalah %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Tiada teks dimasukkan"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> membetulkan <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> menjadi <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> melakukan auto pembetulan"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Kod kunci %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Kunci anjak dihidupkan (ketik untuk melumpuhkan)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Kunci huruf besar dihidupkan (ketik untuk melumpuhkan)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Padam"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simbol"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Huruf"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Numbers"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Tetapan"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Ruang"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Input suara"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Muka senyum"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Kembali"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Cari"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Titik"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Tukar bahasa"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Seterusnya"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Sebelumnya"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift didayakan"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Kunci huruf besar didayakan"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Kunci anjak dilumpuhkan"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Mod simbol"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mod huruf"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mod telefon"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mod simbol telefon"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Papan kekunci tersembunyi"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Menunjukkan <xliff:g id="MODE">%s</xliff:g> papan kekunci"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"tarikh"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"tarikh dan masa"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mel"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"pemesejan"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"nombor"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teks"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"masa"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gerak isyarat frasa"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Luncur ke kekunci ruang untuk masukkan ruang semasa gerak isyarat"</string>
     <string name="voice_input" msgid="3583258583521397548">"Kunci input suara"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pada papan kekunci utama"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pada papan kekunci simbol"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Dimati"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon pada papan kekunci utama"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon pada papan kekunci simbol"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Input suara dilmphkn"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Tiada kaedah input suara didayakan. Semak Bahasa &amp; tetapan input."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurasikan kaedah input"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Bahasa input"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Hantar maklum balas"</string>
     <string name="select_language" msgid="3693815588777926848">"Bahasa input"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Sentuh lagi untuk menyimpan"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Kamus tersedia"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Dayakan maklum balas pengguna"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Bantu memperbaik editor kaedah input ini dengan menghantar statistik penggunaan dan laporan ranap secara automatik"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema papan kekunci"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Bahasa Inggeris (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Bahasa Inggeris (Australia)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Bahasa Sepanyol (AS)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Bahasa Inggeris (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Bahasa Inggeris (AS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Bahasa Sepanyol (AS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Tradisional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Bahasa Inggeris (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Bahasa Inggeris (AS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Bahasa Sepanyol (AS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Tradisional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cyril)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Tiada bahasa (Abjad)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Abjad (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Abjad (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Abjad (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Abjad (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Skim warna"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Putih"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Biru"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Tema papan kekunci"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Putih Halo"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Biru Halo"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Gelap Fizikal"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Terang Fizikal"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Gaya input peribadi"</string>
     <string name="add_style" msgid="6163126614514489951">"Tambah gaya"</string>
     <string name="add" msgid="8299699805688017798">"Tambah"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Dayakan"</string>
     <string name="not_now" msgid="6172462888202790482">"Bukan sekarang"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"The same input style already exists: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Mod kajian kebolehgunaan"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Kelewatan tekan lama kekunci"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Tempoh getaran tekan kekunci"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Kelantangan bunyi tekan kekunci"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Baca fail kamus luaran"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Tiada fail kamus dalam folder Muat Turun"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Pilih fail kamus untuk dipasang"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Betul-betul pasang fail ini untuk <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Betul-betul pasang fail ini untuk <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Berlaku ralat"</string>
     <string name="button_default" msgid="3988017840431881491">"Lalai"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Selamat datang ke <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Muatkan semula"</string>
     <string name="last_update" msgid="730467549913588780">"Kali terakhir dikemas kini"</string>
     <string name="message_updating" msgid="4457761393932375219">"Menyemak kemas kini"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Memuatkan..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Memuatkan…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Kamus utama"</string>
     <string name="cancel" msgid="6830980399865683324">"Batal"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Tetapan"</string>
     <string name="install_dict" msgid="180852772562189365">"Pasang"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Batal"</string>
     <string name="delete_dict" msgid="756853268088330054">"Padam"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Bahasa pilihan pada peranti mudah alih anda mempunyai kamus tersedia.&lt;br/&gt; Kami mengesyorkan &lt;b&gt;memuat turun&lt;/b&gt; kamus <xliff:g id="LANGUAGE">%1$s</xliff:g> untuk memperbaik pengalaman menaip anda.&lt;br/&gt; &lt;br/&gt; Muat turun boleh mengambil masa seminit atau dua melalui 3G. Caj mungkin dikenakan jika anda tidak mempunyai &lt;b&gt;pelan data tanpa had&lt;/b&gt;.&lt;br/&gt; Jika anda tidak pasti jenis pelan data yang anda miliki, kami mengesyorkan agar anda mencari sambungan Wi-Fi untuk mula memuat turun secara automatik.&lt;br/&gt; &lt;br/&gt; Petua: Anda boleh memuat turun dan mengalih keluar kamus dengan pergi ke menu &lt;b&gt;Bahasa &amp; input&lt;/b&gt; dalam &lt;b&gt;Tetapan&lt;/b&gt; peranti mudah alih anda."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Bahasa pilihan pada peranti mudah alih anda sudah mempunyai kamus yang tersedia.&lt;br/&gt; Kami mengesyorkan &lt;b&gt;memuat turun&lt;/b&gt; kamus <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> untuk memperbaik pengalaman menaip anda.&lt;br/&gt; &lt;br/&gt; Muat turun boleh mengambil masa satu atau dua minit melalui 3G. Caj mungkin dikenakan jika anda tidak mempunyai &lt;b&gt;pelan data tanpa had&lt;/b&gt;.&lt;br/&gt; Jika anda tidak pasti jenis pelan data yang anda gunakan, kami mengesyorkan agar anda mencari sambungan Wi-Fi untuk mula memuat turun secara automatik.&lt;br/&gt; &lt;br/&gt; Petua: Anda boleh memuat turun dan mengalih keluar kamus dengan pergi ke menu &lt;b&gt;Bahasa&amp; input&lt;/b&gt; dalam &lt;b&gt;Tetapan&lt;/b&gt; peranti mudah alih anda."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Muat turun sekarang (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Muat turun melalui Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Kamus tersedia untuk <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Kamus tersedia untuk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Tekan untuk mengulas dan memuat turun"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Memuat turun: cadangan untuk <xliff:g id="LANGUAGE">%1$s</xliff:g> akan sedia tidak lama lagi."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Memuat turun: cadangan untuk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> akan sedia tidak lama lagi."</string>
     <string name="version_text" msgid="2715354215568469385">"Versi <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"tambah"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Tambah ke kamus"</string>
diff --git a/java/res/values-my-rMM/strings-action-keys.xml b/java/res/values-my-rMM/strings-action-keys.xml
new file mode 100644
index 0000000..888f551
--- /dev/null
+++ b/java/res/values-my-rMM/strings-action-keys.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for label_go_key (4033615332628671065) -->
+    <skip />
+    <!-- no translation found for label_next_key (5586407279258592635) -->
+    <skip />
+    <!-- no translation found for label_previous_key (1421141755779895275) -->
+    <skip />
+    <!-- no translation found for label_done_key (7564866296502630852) -->
+    <skip />
+    <!-- no translation found for label_send_key (482252074224462163) -->
+    <skip />
+    <string name="label_search_key" msgid="7965186050435796642">"ရှာဖွေရန်"</string>
+    <!-- no translation found for label_pause_key (2225922926459730642) -->
+    <skip />
+    <!-- no translation found for label_wait_key (5891247853595466039) -->
+    <skip />
+</resources>
diff --git a/java/res/values-my-rMM/strings-letter-descriptions.xml b/java/res/values-my-rMM/strings-letter-descriptions.xml
new file mode 100644
index 0000000..6dabe0f
--- /dev/null
+++ b/java/res/values-my-rMM/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ဣထိလိင် အစဉ်ပြ အညွှန်း"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"မိုက်ခရို သင်္ကေတ"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"ပုလိင် အစဉ်ပြ အညွှန်း"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"ပြတ်သားသည့် S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A၊ တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A၊ diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A၊ အပေါ်မှာ ကွင်း"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A၊ E၊ ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C၊ cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E၊ တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E၊ diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I၊ တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I၊ diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N၊ tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O၊ တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O၊ tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O၊ diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O၊ stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U၊ တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U၊ diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y။ စူးရှသော"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y၊ diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A၊ macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A၊ breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A၊ ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C၊ အပေါ်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C၊ caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D၊ caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D၊ stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E၊ macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E၊ breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E၊ အပေါ်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E၊ ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E၊ caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G၊ breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G၊ အပေါ်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G၊ cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H၊ stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I၊ tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I၊ macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I၊ breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I၊ ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"အစက်မပါ I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I၊ J၊ ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K၊ cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L၊ cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L၊ caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L၊ အလယ် အစက်"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L၊ stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N၊ cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N၊ caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N၊ ရှေ့မှာ apostrophe ပါ"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O၊ macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O၊ breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O၊ နှစ်ဆ စူးရှသော"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O၊ E၊ ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R၊ cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R၊ caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S၊ cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S၊ caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T၊ cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T၊ caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T၊ stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U၊ tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U၊ macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U၊ breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U၊ အပေါ်မှာ ကွင်း"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U၊ နှစ်ဆ စူးရှသော"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U၊ ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y၊ သရသံသင်္ကေတ"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z၊ စူးရှသော"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z အစက် အပေါ်မှာ"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z၊ caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S အရှည်"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O၊ horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U၊ horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S၊ အောက်မှာ ကော်မာ"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T၊ အောက်မှာ ကော်မာ"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A၊ အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A၊ သရသံသင်္ကေတ နှင့် စူးရှသော"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A၊ သရသံသင်္ကေတ နှင့် တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A၊ သရသံသင်္ကေတ နှင့် အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A၊ သရသံသင်္ကေတ နှင့် tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A,၊ သရသံသင်္ကေတ နှင့် အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A၊ တည်ငြိမ်သော နှင့် စူးရှသော"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A၊ breve နှင့် တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A၊ breve နှင့် အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A၊ breve နှင့် tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A၊ breve နှင့် အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E၊ အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E၊ အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E၊ tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E၊ သရသံသင်္ကေတ နှင့် စူးရှသော"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E၊ သရသံသင်္ကေတ နှင့် တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E၊ သရသံသင်္ကေတ နှင့် ချိတ် အပေါ်မှာ"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E၊ သရသံသင်္ကေတ နှင့် tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E၊ သရသံသင်္ကေတ နှင့် အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I၊ အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I၊ အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O၊ အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O၊ အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O၊ သရသံသင်္ကေတ နှင့် စူးရှသော"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O၊ သရသံသင်္ကေတ နှင့် တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O၊ သရသံသင်္ကေတ နှင့် အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O၊ သရသံသင်္ကေတ နှင့် tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O၊ သရသံသင်္ကေတ နှင့် အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O၊ horn နှင့် စူးရှသော"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O၊ horn နှင့် တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O၊ horn နှင့် အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O၊ horn နှင့် tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O၊ horn နှင့် အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U၊ အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U၊ အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U၊ horn နှင့် စူးရှသော"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U၊ horn နှင့် တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U၊  horn နှင့် အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U၊ horn နှင့် tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U၊ horn နှင့် အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y၊ တည်ငြိမ်သော"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y၊ အောက်မှာ အစက်"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y၊ အပေါ်မှာ ချိတ်"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y၊ tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"အာမေဍိတ်သံ ပြောင်းပြန်"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"ဘယ်ညွှန်း double angle quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"အလယ် အစက်"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript တစ်"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"ညာညွှန်း double angle quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"မေးခွန်း သင်္ကေတ ပြောင်းပြန်"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"ဘယ် single quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"ညာ single quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Single low-9 quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"ဘယ် double quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"ညာ double quotation သင်္ကေတ"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille သင်္ကေတ"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"ဘယ်ညွှန်း angle quotation သင်္ကေတ တစ်ခု"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"ညာညွှန်း angle quotation သင်္ကေတ တစ်ခု"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript လေး"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript latin စာလုံးသေး n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso သင်္ကေတ"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"ညာညွှန်း မြား"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"အောက်ညွှန်း မြား"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"ပလာ set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"ထက်နည်း သို့မဟုတ် တူညီ"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"ထက်ကြီး သို့မဟုတ် တူညီ"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"အနက်ရောင် ကြယ်"</string>
+</resources>
diff --git a/java/res/values-my-rMM/strings-talkback-descriptions.xml b/java/res/values-my-rMM/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..6908b58
--- /dev/null
+++ b/java/res/values-my-rMM/strings-talkback-descriptions.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for spoken_use_headphones (4313642710742229868) -->
+    <skip />
+    <!-- no translation found for spoken_current_text_is (4240549866156675799) -->
+    <skip />
+    <!-- no translation found for spoken_no_text_entered (1711276837961785646) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct (8989324692167993804) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct_obscured (7769449372355268412) -->
+    <skip />
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"မသိရ စာလုံး"</string>
+    <!-- no translation found for spoken_description_shift (7209798151676638728) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift (3483198879916435717) -->
+    <skip />
+    <!-- no translation found for spoken_description_shift_shifted (3122704922642232605) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift_shifted (5179175466878186081) -->
+    <skip />
+    <!-- no translation found for spoken_description_caps_lock (1224851412185975036) -->
+    <skip />
+    <!-- no translation found for spoken_description_delete (3878902286264983302) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_symbol (8244903740201126590) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_alpha (4081215210530031950) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_numeric (4560261331530795682) -->
+    <skip />
+    <!-- no translation found for spoken_description_settings (7281251004003143204) -->
+    <skip />
+    <!-- no translation found for spoken_description_tab (8210782459446866716) -->
+    <skip />
+    <!-- no translation found for spoken_description_space (5908716896642059145) -->
+    <skip />
+    <!-- no translation found for spoken_description_mic (6153138783813452464) -->
+    <skip />
+    <!-- no translation found for spoken_description_emoji (7990051553008088470) -->
+    <skip />
+    <!-- no translation found for spoken_description_return (3183692287397645708) -->
+    <skip />
+    <!-- no translation found for spoken_description_search (5099937658231911288) -->
+    <skip />
+    <!-- no translation found for spoken_description_dot (5644176501632325560) -->
+    <skip />
+    <!-- no translation found for spoken_description_language_switch (6818666779313544553) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_next (431761808119616962) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_previous (2919072174697865110) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_on (5107180516341258979) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_locked (7307477738053606881) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol (111186851131446691) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol_shift (4305607977537665389) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_alpha (4676004119618778911) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone (2061220553756692903) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone_shift (7879963803547701090) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_hidden (2313574218950517779) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_mode (6698257917367823205) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date (6597407244976713364) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date_time (3642804408726668808) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_email (1239682082047693644) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_im (3812086215529493501) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_number (5395042245837996809) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_phone (2486230278064523665) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_text (9138789594969187494) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_time (8558297845514402675) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_url (8072011652949962550) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_recents (4185344945205590692) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_people (8414196269847492817) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_objects (6116297906606195278) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_nature (5018340512472354640) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_places (1163315840948545317) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_symbols (474680659024880601) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_emoticons (456737544787823539) -->
+    <skip />
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"စာလုံးကြီး <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I အကြီး"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I အကြီး၊ အပေါ်မှာ အစက်"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"မသိရ သင်္ကေတ"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"မသိရ အီမိုဂျီ"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"အစားထိုးစရာ စာလုံးများ ရှိနိုင်"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"အစားထိုးစရာ စာလုံးများကို ပယ်ထား"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"အစားထိုးစရာ အကြံပေးချက်များ ရှိနိုင်"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"အစားထိုးစရာ အကြံပေးချက်များကို ပယ်ထား"</string>
+</resources>
diff --git a/java/res/values-my-rMM/strings.xml b/java/res/values-my-rMM/strings.xml
new file mode 100644
index 0000000..63cbca3
--- /dev/null
+++ b/java/res/values-my-rMM/strings.xml
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
+    <skip />
+    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
+    <skip />
+    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
+    <skip />
+    <!-- no translation found for popup_on_keypress (123894815723512944) -->
+    <skip />
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+    <skip />
+    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
+    <skip />
+    <!-- no translation found for settings_system_default (6268225104743331821) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
+    <skip />
+    <!-- no translation found for use_personalized_dicts (5167396352105467626) -->
+    <skip />
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"မြှင့်တင်ပါ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <!-- no translation found for use_double_space_period (8781529969425082860) -->
+    <skip />
+    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
+    <skip />
+    <!-- no translation found for auto_cap (1719746674854628252) -->
+    <skip />
+    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
+    <skip />
+    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
+    <skip />
+    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
+    <skip />
+    <!-- no translation found for main_dictionary (4798763781818361168) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+    <skip />
+    <!-- no translation found for auto_correction (7630720885194996950) -->
+    <skip />
+    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
+    <skip />
+    <!-- no translation found for bigram_prediction (1084449187723948550) -->
+    <skip />
+    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
+    <skip />
+    <!-- no translation found for gesture_input (826951152254563827) -->
+    <skip />
+    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
+    <skip />
+    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware (2078291600664682496) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware_summary (4371385818348528538) -->
+    <skip />
+    <!-- no translation found for voice_input (3583258583521397548) -->
+    <skip />
+    <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
+    <skip />
+    <!-- no translation found for configure_input_method (373356270290742459) -->
+    <skip />
+    <!-- no translation found for language_selection_title (1651299598555326750) -->
+    <skip />
+    <!-- no translation found for send_feedback (1780431884109392046) -->
+    <skip />
+    <!-- no translation found for select_language (3693815588777926848) -->
+    <skip />
+    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
+    <skip />
+    <!-- no translation found for has_dictionary (6071847973466625007) -->
+    <skip />
+    <!-- no translation found for keyboard_layout (8451164783510487501) -->
+    <skip />
+    <!-- no translation found for subtype_en_GB (88170601942311355) -->
+    <skip />
+    <!-- no translation found for subtype_en_US (6160452336634534239) -->
+    <skip />
+    <!-- no translation found for subtype_es_US (5583145191430180200) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_GB (1931018968641592304) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_US (8809311287529805422) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_es_US (510930471167541338) -->
+    <skip />
+    <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
+    <skip />
+    <!-- no translation found for subtype_generic_cyrillic (7486451947618138947) -->
+    <skip />
+    <!-- no translation found for subtype_generic_latin (9128716486310604145) -->
+    <skip />
+    <!-- no translation found for subtype_no_language (7137390094240139495) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
+    <skip />
+    <!-- no translation found for subtype_emoji (7483586578074549196) -->
+    <skip />
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
+    <skip />
+    <!-- no translation found for add_style (6163126614514489951) -->
+    <skip />
+    <!-- no translation found for add (8299699805688017798) -->
+    <skip />
+    <!-- no translation found for remove (4486081658752944606) -->
+    <skip />
+    <!-- no translation found for save (7646738597196767214) -->
+    <skip />
+    <!-- no translation found for subtype_locale (8576443440738143764) -->
+    <skip />
+    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
+    <skip />
+    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
+    <skip />
+    <!-- no translation found for enable (5031294444630523247) -->
+    <skip />
+    <!-- no translation found for not_now (6172462888202790482) -->
+    <skip />
+    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
+    <skip />
+    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
+    <skip />
+    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_confirm_install_message (4782116251651288054) -->
+    <skip />
+    <!-- no translation found for error (8940763624668513648) -->
+    <skip />
+    <!-- no translation found for button_default (3988017840431881491) -->
+    <skip />
+    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
+    <skip />
+    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
+    <skip />
+    <!-- no translation found for setup_start_action (8936036460897347708) -->
+    <skip />
+    <!-- no translation found for setup_next_action (371821437915144603) -->
+    <skip />
+    <!-- no translation found for setup_steps_title (6400373034871816182) -->
+    <skip />
+    <!-- no translation found for setup_step1_title (3147967630253462315) -->
+    <skip />
+    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
+    <skip />
+    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+    <skip />
+    <!-- no translation found for setup_step1_action (4366513534999901728) -->
+    <skip />
+    <!-- no translation found for setup_step2_title (6860725447906690594) -->
+    <skip />
+    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
+    <skip />
+    <!-- no translation found for setup_step2_action (1660330307159824337) -->
+    <skip />
+    <!-- no translation found for setup_step3_title (3154757183631490281) -->
+    <skip />
+    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
+    <skip />
+    <!-- no translation found for setup_step3_action (600879797256942259) -->
+    <skip />
+    <!-- no translation found for setup_finish_action (276559243409465389) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
+    <skip />
+    <!-- no translation found for app_name (6320102637491234792) -->
+    <skip />
+    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
+    <skip />
+    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
+    <skip />
+    <!-- no translation found for download_description (6014835283119198591) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
+    <skip />
+    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
+    <skip />
+    <!-- no translation found for user_dictionaries (3582332055892252845) -->
+    <skip />
+    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
+    <skip />
+    <!-- no translation found for dictionary_available (4728975345815214218) -->
+    <skip />
+    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
+    <skip />
+    <!-- no translation found for dictionary_installed (8081558343559342962) -->
+    <skip />
+    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
+    <skip />
+    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
+    <skip />
+    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
+    <skip />
+    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
+    <skip />
+    <!-- no translation found for last_update (730467549913588780) -->
+    <skip />
+    <!-- no translation found for message_updating (4457761393932375219) -->
+    <skip />
+    <!-- no translation found for message_loading (5638680861387748936) -->
+    <skip />
+    <!-- no translation found for main_dict_description (3072821352793492143) -->
+    <skip />
+    <!-- no translation found for cancel (6830980399865683324) -->
+    <skip />
+    <!-- no translation found for go_to_settings (3876892339342569259) -->
+    <skip />
+    <!-- no translation found for install_dict (180852772562189365) -->
+    <skip />
+    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
+    <skip />
+    <!-- no translation found for delete_dict (756853268088330054) -->
+    <skip />
+    <!-- no translation found for should_download_over_metered_prompt (1583881200688185508) -->
+    <skip />
+    <!-- no translation found for download_over_metered (1643065851159409546) -->
+    <skip />
+    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_title (4583842811218581658) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
+    <skip />
+    <!-- no translation found for toast_downloading_suggestions (6128155879830851739) -->
+    <skip />
+    <!-- no translation found for version_text (2715354215568469385) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+    <skip />
+    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+    <skip />
+</resources>
diff --git a/java/res/values-nb/strings-action-keys.xml b/java/res/values-nb/strings-action-keys.xml
index d4acd36..0586ce0 100644
--- a/java/res/values-nb/strings-action-keys.xml
+++ b/java/res/values-nb/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Forrige"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Ferdig"</string>
     <string name="label_send_key" msgid="482252074224462163">"Send"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Søk"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Vent"</string>
 </resources>
diff --git a/java/res/values-nb/strings-config-important-notice.xml b/java/res/values-nb/strings-config-important-notice.xml
new file mode 100644
index 0000000..01a774c
--- /dev/null
+++ b/java/res/values-nb/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Bruk kommunikasjonen og inndataene dine for å få bedre forslag"</string>
+</resources>
diff --git a/java/res/values-nb/strings-letter-descriptions.xml b/java/res/values-nb/strings-letter-descriptions.xml
new file mode 100644
index 0000000..ea563a5
--- /dev/null
+++ b/java/res/values-nb/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminin ordensindikator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikrotegn"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Maskulin ordensindikator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Eszett"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A med grav aksent"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A med akutt aksent"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A med tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A med trema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"Å"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Æ"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C med cedille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E med grav aksent"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E med akutt aksent"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E med trema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I med grav aksent"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I med akutt aksent"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I med trema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Edd"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N med tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O med grav aksent"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O med akutt aksent"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O med tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O med trema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Ø"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U med grav aksent"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U med akutt aksent"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U med cirkumfleks"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U med trema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y med akutt aksent"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y med trema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A med makron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A med breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A med kvist"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C med akutt aksent"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C med cirkumfleks"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C med prikk over"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C med hake"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D med hake"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D med strek gjennom"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E med makron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E med breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E med prikk over"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E med kvist"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E med hake"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G med cirkumfleks"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G med breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G med prikk over"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G med cedille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H med cirkumfleks"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H med strek gjennom"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I med tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I med makron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I med breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I med kvist"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I uten prikk"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"IJ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J med cirkumfleks"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K med cedille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L med akutt aksent"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L med cedille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L med hake"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L med flyvende prikk"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L med strek gjennom"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N med akutt aksent"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N med cedille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N med hake"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N med apostrof foran"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O med makron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O med breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O med dobbel akutt aksent"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"OE"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R med akutt aksent"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R med cedille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R med hake"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S med akutt aksent"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S med cirkumfleks"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S med cedille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S med hake"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T med cedille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T med hake"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T med strek gjennom"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U med tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U med makron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U med breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U med ring over"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U med dobbel akutt aksent"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U med kvist"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W med cirkumfleks"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y med cirkumfleks"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z med akutt aksent"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z med prikk over"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z med hake"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Lang s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O med horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U med horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S-komma"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T-komma"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A med prikk under"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A med krok over"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A med cirkumfleks og akutt aksent"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A med cirkumfleks og grav aksent"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A med cirkumfleks og krok over"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A med cirkumfleks og tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A med cirkumfleks og prikk under"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A med breve og akutt aksent"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A med breve og grav aksent"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A med breve og krok over"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A med breve og tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A med breve og prikk under"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E med prikk under"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E med krok over"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E med tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E med cirkumfleks og akutt aksent"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E med cirkumfleks og grav aksent"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E med cirkumfleks og krok over"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E med cirkumfleks og tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E med cirkumfleks og prikk under"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I med krok over"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I med prikk under"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O med prikk under"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O med krok over"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O med cirkumfleks og akutt aksent"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O med cirkumfleks og grav aksent"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O med cirkumfleks og krok over"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O med cirkumfleks og tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O med cirkumfleks og prikk under"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O med horn og akutt aksent"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O med horn og grav aksent"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O med horn og krok over"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O med horn og tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O med horn og prikk under"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U med prikk under"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U med krok over"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U med horn og akutt aksent"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U med horn og grav aksent"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U med horn og krok over"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U med horn og tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U med horn og prikk under"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y med grav aksent"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y med prikk under"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y med krok over"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y med tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Omvendt utropstegn"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Sjevron, venstre"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Flyvende prikk"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Hevet skrift, én"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Sjevron, høyre"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Omvendt spørsmålstegn"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Enkelt anførselstegn, venstre"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Enkelt anførselstegn, høyre"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Enkelt lavt 9-anførselstegn"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Dobbelt anførselstegn, venstre"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Dobbelt anførselstegn, høyre"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kors"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dobbeltkors"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promilletegn"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Primtegn"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dobbelt primtegn"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Enkel sjevron, venstre"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Enkel sjevron, høyre"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Hevet skrift, fire"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Hevet skrift, liten bokstav n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Pesotegn"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"c/o"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Pil til høyre"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pil ned"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tom mengde"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Økning"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mindre enn eller lik"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Større enn eller lik"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Svart stjerne"</string>
+</resources>
diff --git a/java/res/values-nb/strings-talkback-descriptions.xml b/java/res/values-nb/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..cdb6858
--- /dev/null
+++ b/java/res/values-nb/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Koble til hodetelefoner for å høre opplesing av tegnene i passordet."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Gjeldende tekst er %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Ingen tekst er skrevet inn"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> retter <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> til <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> utfører automatisk retting"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Ukjent tegn"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Flere symboler"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboler"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Slett"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboler"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Bokstaver"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Tall"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Innstillinger"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Mellomromstasten"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Stemmedata"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Søk"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Prikk"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Bytt språk"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Neste"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Forrige"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift er aktivert"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock er aktivert"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolmodus"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modus for flere symboler"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Bokstavmodus"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Ringemodus"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Ringemodus med symboler"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastaturet er skjult"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Viser <xliff:g id="KEYBOARD_MODE">%s</xliff:g>-tastatur"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"dato"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dato og klokkeslett"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-post"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"tekstmeldinger"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"tall"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"klokkeslett"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"nettadresse"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Nylige"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Personer"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objekter"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natur"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Steder"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboler"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Smilefjes"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Stor <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Stor I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Stor I med prikk over"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ukjent symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Ukjent emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternative tegn er tilgjengelige"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternative tegn fjernes"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternative forslag er tilgjengelige"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternative forslag fjernes"</string>
+</resources>
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index 00aa10d..29fd367 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Inndataalternativer"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Kommandoer for undersøkelseslogging"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Slå opp kontaktnavn"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Stavekontrollen bruker oppføringer fra kontaktlisten din"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrer ved tastetrykk"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Lyd ved tastetrykk"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Hurtigvindu ved tastetrykk"</string>
-    <string name="general_category" msgid="1859088467017573195">"Generelt"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Tekstkorrigering"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Ordføring"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Andre alternativer"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Avanserte innstillinger"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Alternativer for eksperter"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Bytt inndatametode"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasten for språkbytte dekker også andre inndatametoder"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Nøkkel for språkskifte"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Systemstandard"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Foreslå kontaktnavn"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Bruk navn fra Kontakter til forslag og korrigeringer"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Spesialtilpassede forslag"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Forbedre <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Punktum ved doble mellomrom"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dobbeltrykk på mellomromstasten for punktum etterfulgt av mellomrom"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Stor forbokstav"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Vis bevegelsesspor"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamisk flytende forhåndsvsn."</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Se det foreslåtte ordet mens du utfører bevegelser"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: Lagret"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Koble til hodetelefoner for å høre opplesing av bokstavene i passordet."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Gjeldende tekst er %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Ingen tekst er skrevet inn"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> retter <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> til <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> utfører automatisk retting"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Tastaturkode %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift er på (trykk for å deaktivere)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock er på (trykk for å deaktivere)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Slett"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboler"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Bokstaver"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Tall"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Innstillinger"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulator"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Mellomrom"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Taleinndata"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smilefjes"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Søk"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Prikk"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Bytt språk"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Neste"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Forrige"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift er aktivert"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock er aktivert"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift er deaktivert"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbolmodus"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Bokstavmodus"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Ringemodus"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Ringemodus med symboler"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tastaturet er skjult"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Viser <xliff:g id="MODE">%s</xliff:g>-tastatur"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"dato"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"dato og klokkeslett"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-post"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"tekstmeldinger"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"tall"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"tid"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"Nettadresse"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frasebevegelse"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Sett inn mellomrom ved å dra fingeren til mellomromstasten"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tast for taleinndata"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"På hovedtastatur"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"På talltastatur"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Av"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon på hovedtast."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon på talltastatur"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Taleinndata er deaktiv."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ingen taleinndatametoder er aktivert. Sjekk Språk og inndata-innstillingene."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurer inndatametoder"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Inndataspråk"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Send tilbakemelding"</string>
     <string name="select_language" msgid="3693815588777926848">"Inndataspråk"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Trykk på nytt for å lagre"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Ordbok tilgjengelig"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Aktiver brukertilbakemelding"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Ved å sende bruksstatistikk og programstopprapporter til Google automatisk, hjelper du oss med å gjøre redigeringsfunksjonen for denne inndatametoden enda bedre."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tastaturtema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Engelsk (Storbritannia)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Engelsk (USA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spansk (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engelsk (Storbritannia) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engelsk (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spansk (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradisjonell)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelsk (Storbritannia) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engelsk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spansk (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradisjonelt)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillisk)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Ingen språk (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Fargetema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Hvit"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blå"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Egendefinerte inndata"</string>
     <string name="add_style" msgid="6163126614514489951">"Legg til stil"</string>
     <string name="add" msgid="8299699805688017798">"Legg til"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Aktiver"</string>
     <string name="not_now" msgid="6172462888202790482">"Ikke nå"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Inndatastilen finnes allerede: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Bruksstudiemodus"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Forsinkelse lange tastetrykk"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrasjonstid ved tastetrykk"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Lydstyrke ved tastetrykk"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Bruk en ekstern ordlistefil"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Det ligger ingen ordboksfiler i Nedlastinger-mappen"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Velg ordboksfilen du vil installere"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Vil du virkelig installere denne filen for <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Vil du virkelig installere denne filen for <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Det oppsto en feil"</string>
     <string name="button_default" msgid="3988017840431881491">"Standard"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Velkommen til <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Last inn på nytt"</string>
     <string name="last_update" msgid="730467549913588780">"Sist oppdatert"</string>
     <string name="message_updating" msgid="4457761393932375219">"Ser etter oppdateringer ..."</string>
-    <string name="message_loading" msgid="8689096636874758814">"Laster inn …"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Laster inn …"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Hovedordliste"</string>
     <string name="cancel" msgid="6830980399865683324">"Avbryt"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Innstillinger"</string>
     <string name="install_dict" msgid="180852772562189365">"Installer"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Avbryt"</string>
     <string name="delete_dict" msgid="756853268088330054">"Slett"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Det valgte språket på mobilenheten din har en tilgjengelig ordliste.&lt;br/&gt; Vi anbefaler å &lt;b&gt;laste ned&lt;/b&gt; ordlisten for <xliff:g id="LANGUAGE">%1$s</xliff:g>. Dette forbedrer skriveopplevelsen din.&lt;br/&gt; &lt;br/&gt; Nedlastingen kan ta fra ett til to minutter via 3G. Belastninger kan påløpe hvis du ikke har et abonnement med &lt;b&gt;ubegrenset databruk&lt;/b&gt;.&lt;br/&gt; Hvis du er usikker på hvilken abonnementstype du har, anbefaler vi deg å finne en Wi-Fi-tilkobling for å starte nedlastingen automatisk.&lt;br/&gt; &lt;br/&gt; Tips: Du kan laste ned og fjerne ordlister ved å gå til &lt;b&gt;Språk og inndata&lt;/b&gt; i menyen for &lt;b&gt;Innstillinger&lt;/b&gt; på mobilenheten din."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Det valgte språket på mobilenheten din har en tilgjengelig ordliste.&lt;br/&gt; Vi anbefaler å &lt;b&gt;laste ned&lt;/b&gt; ordlisten for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>. Dette forbedrer skriveopplevelsen din.&lt;br/&gt; &lt;br/&gt; Nedlastingen kan ta fra ett til to minutter via 3G. Belastninger kan påløpe hvis du ikke har et abonnement med &lt;b&gt;ubegrenset databruk&lt;/b&gt;.&lt;br/&gt; Hvis du er usikker på hvilken abonnementstype du har, anbefaler vi deg å finne en Wi-Fi-tilkobling for å starte nedlastingen automatisk.&lt;br/&gt; &lt;br/&gt; Tips: Du kan laste ned og fjerne ordlister ved å gå til &lt;b&gt;Språk og inndata&lt;/b&gt; i menyen for &lt;b&gt;Innstillinger&lt;/b&gt; på mobilenheten din."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Last ned nå (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Last ned via Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"En ordliste er tilgjengelig for <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"En ordliste er tilgjengelig for <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Trykk for å se gjennom og laste ned"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Laster ned: Forslag blir snart tilgjengelige for <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Laster ned: forslag til <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> er snart klare"</string>
     <string name="version_text" msgid="2715354215568469385">"Versjon <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Legg til"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Legg til i ordlisten"</string>
diff --git a/java/res/values-ne-rNP/strings-action-keys.xml b/java/res/values-ne-rNP/strings-action-keys.xml
new file mode 100644
index 0000000..354f8ee
--- /dev/null
+++ b/java/res/values-ne-rNP/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"जानु"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"अर्को"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"पहिलो"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"भयो"</string>
+    <string name="label_send_key" msgid="482252074224462163">"पठाउनुहोस्"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"खोजी गर्नुहोस्"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"रोक्नुहोस्"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"पर्खनुहोस्"</string>
+</resources>
diff --git a/java/res/values-ne-rNP/strings-appname.xml b/java/res/values-ne-rNP/strings-appname.xml
new file mode 100644
index 0000000..8b967e8
--- /dev/null
+++ b/java/res/values-ne-rNP/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"एन्ड्रोइड किबोर्ड (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"एन्ड्रोइड हिज्जे जाँचकी (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"एन्ड्रोइड किबोर्ड सेटिङ्हरू (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"एन्ड्रोइड हिज्जे परीक्षक सेटिङ्हरू(AOSP)"</string>
+</resources>
diff --git a/java/res/values-ne-rNP/strings-config-important-notice.xml b/java/res/values-ne-rNP/strings-config-important-notice.xml
new file mode 100644
index 0000000..8816da7
--- /dev/null
+++ b/java/res/values-ne-rNP/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"सुझावहरू सुधार गर्न सञ्‍चारहरू र टाइप गरिएको डेटाबाट जान्नुहोस्"</string>
+</resources>
diff --git a/java/res/values-ne-rNP/strings-emoji-descriptions.xml b/java/res/values-ne-rNP/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..a3419b8
--- /dev/null
+++ b/java/res/values-ne-rNP/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"प्रतिलिपि अधिकार चिन्ह"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"दर्ता चिन्ह"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"दोहोरो उद्गार मार्क"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"विस्मयादिबोधक प्रश्न चिन्ह"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"व्यापार प्रतिक चिन्ह"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"सूचना स्रोत"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"दायाँ तीर बाँयामा"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"तल तीर माथिमा"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"उत्तर पश्चिम तीर"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"उत्तर पूर्वी तीर"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"दक्षिण पूर्व तीर"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"दक्षिण पश्चिम तीर"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"बायाँ हुक साथ तीर"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"दाँया हुक साथ तीर"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"हेर्नु"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"बलौटे घडी"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"कालो दाँया देखाउने डबल त्रिकोण"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"कालो बायाँ-इशारा डबल त्रिकोण"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"कालो माथि देखाउने डबल त्रिकोण"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"कालो तल-इशारा डबल त्रिकोण"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"सचेतक घडी"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"बग्ने बालुवा साथ बालुवा घडी"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"बृताकार भित्र ठुलो ल्याटिन अक्षर m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"कालो सानो वर्ग"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"श्वेत सानो वर्ग"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"कालो दाँया देखाउने त्रिकोण"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"कालो बायाँ-इशारा त्रिकोण"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"श्वेत मध्यम वर्ग"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"कालो मध्यम वर्ग"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"श्वेत मध्यम सानो वर्ग"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"कालो मध्यम सानो वर्ग"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"किरण साथ कालो सूर्य"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"बादल"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"कालो टेलिफोन"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"जाँच साथ मतदान बक्स"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"वर्षा थोपा साथ छाता"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"तातो पेय"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"श्वेत अप सूचकांक इशारा"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"श्वेत हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"मेष"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"वृष"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"मिथुन"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"कर्कट"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"सिंह"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"कन्या"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"तुला"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"वृष"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"धनु"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"मकर"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"कुंभ"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"मीन"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"कालो कुदाल सुट"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"कालो क्लब सुट"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"कालो हृदय सुट"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"कालो हीरा सुट"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"तातो स्प्रिंग्स"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"कालो विश्वव्यापी रिसाइकिलिंग चिन्ह"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"ह्वीलचेयर चिन्ह"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"अंकुश"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"चेतावनी चिन्ह"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"उच्च भोल्टेज चिन्ह"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"मध्यम सफेद वृत्त"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"मध्यम कालो वृत्त"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"फुटबल"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"बेसबल"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"बिना हिउँ हिममानब"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"बादलको पछाडी सूर्य"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"तारामंडल Ophiuchus"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"प्रवेश निषेध"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"चर्च"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"फोहरा"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"प्वालमा झण्डा"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"जहाजयात्रा"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"पाल"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"इन्धन पम्प"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"कालो कैंची"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"श्वेत भारी चेक मार्क"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"हवाइजहाज"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"खाम"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"उठेको मुट्ठी"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"उठाएको हात"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"विजयी हात"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"शिसाकलम"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"कालो निब"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"भारी चेक मार्क"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"भारी गुणन x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"झिल्काहरु"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"आठधर्के तारांकन"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"आठ चुच्चे कालो तारा"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"हिमपात"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"चमक"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"क्रस चिन्ह"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"उल्टो चारपाते काटिएको चिन्ह"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"कालो प्रश्न चिन्ह आभूषण"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"श्वेत प्रश्न चिन्ह आभूषण"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"श्वेत उद्गार चिन्ह आभूषण"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"भारी उद्गार चिन्ह प्रतिक"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"दह्रो कालो हृदय"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"भारी प्लस चिन्ह"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"भारी ऋण चिन्ह"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"भारी विभाजन चिन्ह"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"कालो दाँयातीर तीर"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"घुम्रिएको फेरो"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"दोहोरो घुम्रिएको फेरो"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"दाँयातीर इशारा तीर त्यसपछि माथिको घुमाँइ"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"दाँयातीर इशारा तीर त्यसपछि तलको घुमाँइ"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"कालोतीर बायाँतर्फ"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"कालो तीर माथि तर्फ"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"कालो तीर तल तर्फ"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"कालो ठूलो वर्ग"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"सेतो ठूलो वर्ग"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"सेतो मध्यम तारा"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"भारी ठूलो वृत्त"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"तरंग ड्यास"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"खण्ड बैकल्पिक मार्क"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"बृताकार भाबाङ्कन बधाई"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"बृताकार भाबाङ्कन रहस्य"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"माजोङ टाइल रातो ड्रागन"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"खेल्ने तास कालो जोकर"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"रक्त प्रकार A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"रक्त प्रकार B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"रक्त प्रकार O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"पार्क्ङिग स्थल"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"रक्त प्रकार AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"चारपाटे CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"चारपाते सुन्दर"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"चारपाते मुक्त"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"चारपाते ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"चारपाते नयाँ"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"चारपाते N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"चारपाते ठीक"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"चारपाते SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"उद्गार चिन्ह साथ चारपाते"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"चारपाते बिरुद्ध"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"यहाँ चारपाते काताकाना"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"चारपाते काताकाना सेवा"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"चारपाते भाबाङ्कन -निःशुल्क"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"चारपाते भाबाङ्कन सुरक्षित-सीट"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"चारपाते भाबाङ्कन निषेध"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"चारपाते भाबाङ्कन रिक्तता"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"चारपाते भाबाङ्कन स्वीकृति"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"चारपाते भाबाङ्कन पूर्ण अधिभोग"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"चारपाते भाबाङ्कन भुक्तानी"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"चारपाते भाबाङ्कन मासिक"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"चारपाते भाबाङ्कन अनुप्रयोग"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"चारपाते भाबाङ्कन छूट"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"व्यापारमा चारपाते भाबाङ्कन"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"बृताकार भाबाङ्कन लाभ"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"बृताकार भाबाङ्कन स्वीकार"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"चक्रवात"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"धुवाँदार"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"बन्द छाता"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"ताराहरूका साथ रात"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"पहाडमा सूर्योदय"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"सूर्योदय"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"धुलो रहित शहर"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"भवनहरुमा सूर्यास्त"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"ईन्द्रेणी"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"रातमा पुल"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"जल लहर"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"ज्वालामुखी"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"दुधेली बाटो"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"पृथ्बी विश्व युरोप-अफ्रिका"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"पृथ्बी विश्व अमेरीकास"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"पृथ्बी विश्व एशिया-अस्ट्रेलिया"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"मेरीडियन साथ विश्व"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"नयाँ चन्द्रमाको चिन्ह"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"पहेँलो अर्धचन्द्राकार चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"पहिलो चौथाई चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"पहेँलो बाँदर चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"पूर्ण चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"थकित बाँदर चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"अन्तिम चौथाई चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"चेतावनी अर्धचन्द्राकार चन्द्र प्रतीक"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"अर्धचन्द्राकार चन्द्र"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"नयाँ चन्द्रामुहार"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"पहिलो चौथाइ चन्द्रामुहार"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"अन्तिम चौथाइ चन्द्रामुहार"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"पूर्ण चन्द्रामुहार"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"सूर्यामुहार"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"चमकिलो तारा"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"सुटिङ तारा"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"ओखर"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"सिडिङ"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"सदाबहार रूख"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"पतझड रूख"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"ताड रूख"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"सिउँडी"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"तुलिप"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"चेरी फूल"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"गुलाब"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"जाभाकुसुम"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"सूर्यमुखी"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"फूल"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"काने मकै"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"काने धान"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"जडिबुटी"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"चार पाते क्लोभर"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"मेपल पातको"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"झरेको पात"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"पात हावामा उड्दै"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"च्याँउ"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"गोलभेंडा"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"डल्लो भन्टा"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"अंगूर"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"तरबूजा"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"खरबूजा"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"सुन्तले रङ"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"लेमन"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"केरा"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"भुईंकतहर"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"रातो स्याउ"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"हरियो स्याउ"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"नाशपाती"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"बयर"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"चेरी"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"स्ट्रबेरी"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"ह्यामबर्गर"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"पिज्जा टुक्रा"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"हड्डीमा मासु"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"कुखुराको खुट्टा"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"चामलको पातलो बिस्कुट"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"भातको बल"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"पकाएको भात"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"करी र भात"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"उमालेको कचौरा"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"स्पैगेट्टी"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"रोटी"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"फ्रान्सेली फ्राइज"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"रोस्ट गरेको मिठो आलु"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"जापानी मिठाई"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"ओदेन (जापानी खाना)"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"भात र काँचो माछा"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"तारेको सानो माछा"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"घुमाउरो डिजाइनमा माछा केक"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"नरम आइसक्रिम"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"चुर्ण बरफ"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"आइसक्रीम"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"डोनट"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"कुकीज"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"चकलेट बार"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"क्यान्डी"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"लालीपप"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"कस्तार्ड"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"महदानी"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"सर्टकेक"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"टिफिन बट्टा"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"खानाको भाँडो"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"पकाउँदै"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"काँटा र चक्कु"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"ह्यान्डल बिनाको चियाकप"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"शाके (जापानी रक्सी) बोतल र प्याला"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"रक्सी गिलास"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"ककटेल गिलास"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"ट्रपिकल पेयपदार्थ"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"बियर मग"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"बियर मग छुआएको"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"बच्चाको बोतल"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"रिबन"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"बेरिएको उपहार"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"जन्मदिनको केक"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"ज्याक-o-लालटिन"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"क्रिसमस रूख"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"सान्ताक्लस"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"आतसबाजी"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"आतसबाजी झिल्का"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"बेलुन"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"पार्टी भंडुवा"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"रङगिन बल"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"तानाबाता रूख"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"क्रस झण्डा"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"पाइन सजावट"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"जापानी गुडिया"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"कार्प तोरण"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"हावा झंकार"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"चन्द्र अबलोकन समारोह"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"स्कूल झोला"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"दिक्षान्त समारोह टोपी"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"खेलाची घोडा"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"रोटेपिङ्"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"रोलर कोस्टर"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"माछामार्ने पोल र माछा"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"माइक्रोफोन"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"चलचित्र क्यामेरा"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"चलचित्र"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"हेडफोन"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"कलाकार रङदानी"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"शीर्ष टोपी"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"सर्कस पाल"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"टिकट"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"क्लापर बोर्ड"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"कला प्रदर्शन"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"भिडियो खेल"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"प्रत्यक्ष निशाना"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"स्लट मिसिन"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"बिलियर्ड्स"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"पोट"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"बलिङ"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"फूलछापे तास"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"साङ्गीतिक अक्षर"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"बहु साङ्गीतिक अक्षर"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"सेक्सोफोन"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"गितार"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"साङ्गीतिक कुञ्जीपाटी"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"बिगुल"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"भ्वायलिन"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"साङ्गीतिक स्कोर"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"तेर्सो धर्के जर्सी"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"टेनिस रैकेट र बल"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"स्की र स्की बुट"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"बास्केटबल र रिंग"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"चेकढाँचा झण्डा"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"स्नोबोर्दर"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"धावक"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"सर्फ़र"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"शिल"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"घोडा दौड"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"अमेरिकी फुटबल"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"रग्बी फुटबल"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"पौडीबाज"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"घर निर्माण"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"बगैचा सहित घर"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"कार्यालय भवन"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"जापानी हुलाक"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"युरोपेली हुलाक"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"अस्पताल"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"बैंक"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"स्वचालित पारंगत मिसिन"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"होटल"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"मायालु होटल"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"सुविधाजनक स्टोर"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"स्कूल"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"डिपार्टमेन्ट स्टोर"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"कारखाना"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"इजाकाया लालटेन"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"जापानी किल्ला"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"युरोपेली किल्ला"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"मुसा"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"घरेलु मुसा"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"साँढे"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"जल भैंसी"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"गाई"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"चितुवा"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"खरायो"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"बिरालो"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"ड्रागन"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"गोही"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"ह्वेल"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"घोंघा"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"साँप"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"घोडा"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"मेष"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"बाख्रा"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"भेडा"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"बाँदर"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"रोस्टर कुखुरा"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"कुखुरा"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"कुकुर"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"सुँगुर"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"बँदेल"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"हात्ती"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"अक्टोपस"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"शंख"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"कनसुत्लो"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"कमिला"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"माहुरी"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"खपटे कीरा"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"माछा"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"ट्रपिकल माछा"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"फुगु"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"कछुवा"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"चल्ला कोरल्नु"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"सानोचल्ला"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"अधोमुख सानोचल्ला"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"चरा"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"पेंगुइन"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"कोआल"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"पूडल"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"अरेबि उँट"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"दुईजुरे उँट"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"डल्फिन"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"मुसा अनुहार"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"गाई अनुहार"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"बाघ अनुहार"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"खरायो अनुहार"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"ड्रागन अनुहार"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"ह्वेल पानीफाल्दै"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"घोडा अनुहार"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"बाँदर अनुहार"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"कुकुर अनुहार"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"सुँगुर अनुहार"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"भ्यागुतो अनुहार"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"लोखर्के अनुहार"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"ब्वाँसो अनुहार"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"भालु अनुहार"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"पाण्डा अनुहार"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"सुँगुर नाक"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"पंजा छाप"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"आँखाहरु"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"कान"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"नाक"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"मुख"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"जिब्रो"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"ठडाएको औंला पछाडिबाट सूचकांक इशारा"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"घोप्ताएको औंला पछाडिबाट सूचकांक इशारा"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"औंला इशारा पछाडिबाट सूचकांक बायाँ"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"औंला इशारा पछाडिबाट सूचकांक दायाँ"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"मुठी चिन्ह"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"हल्लाएको हात चिन्ह"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"ठीक हात चिन्ह"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"औंठा माथी चिन्ह"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"औंठा तल चिन्ह"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"ताली चिन्ह"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"खुला हात चिन्ह"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"श्रीपेच"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"महिला टोपी"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"चश्मा"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"टाई"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"टी-शर्ट"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"जीन्स"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"पोशाक"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"किमोनो"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"बिकिनी"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"महिला लुगा"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"बटुआ"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"हैंडबैग"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"थैली"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"केटा जुत्ता"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"खेलाडी जुत्ता"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"अग्लो हिलको जुत्ता"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"महिला जुत्ता"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"महिला बूट"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"पैताला छाप"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"छाँया चित्र"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"छाँया चित्रहरू"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"केटा"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"केटी"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"मान्छे"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"महिला"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"परिवार"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"स्त्री र पुरुष हातसमात्दै"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"दुई पुरुष हातसमात्दै"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"दुई महिला हातसमात्दै"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"प्रहरी अधिकारी"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"खरायो काने महिला"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"घुम्टोमा दुलही"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"खैरो कपाल व्यक्ति"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"गुआपी माओ पहिरनमा मानिस"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"फेटाधारी मानिस"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"बृढमान्छे"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"बृढा महिला"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"बच्चा"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"निर्माण कामदार"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"राजकुमारी"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"जापानी राक्षस"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"जापानी लुटेरा"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"भूत"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"सानोपरी"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"अन्य ग्रहबासी"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"अन्य ग्रहबासी राक्षस"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"सानो शैतान"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"खोपडी"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"सोधपुछको व्यक्ति"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"पहरेदार"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"नर्तक"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"लिपस्टिक"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"नेल पलिश"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"अनुहार मालिश"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"सैलुन"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"नाई पोल"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"सुई"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"गोली"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"चुम्बन चिन्ह"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"प्रेमपत्र"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"औंठी"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"रत्न पत्थर"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"चुम्बन"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"फूलगुच्छा"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"युगलजोडी"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"विवाह"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"हृदय धड्कन"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"टुटेको हृदय"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"दुई हृदय"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"चम्केको हृदय"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"बढ्दो हृदय"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"तीर सहित हृदय"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"नीलो हृदय"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"हरियो हृदय"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"पहेंलो हृदय"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"बैजनी हृदय"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"रिबन साथ हृदय"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"परिक्रामी हृदय"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"हृदय सजावट"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"भित्र बिन्दु साथ हीरा आकार"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"इलेक्ट्रिक चिम"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"रिस प्रतीक"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"बम"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"सुताहा प्रतीक"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"टकराव प्रतीक"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"उछिट्टिएको पसिना प्रतीक"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"सानो थोपा"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"ड्यास प्रतीक"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"थुप्रो गु"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"पाखुरा प्रदर्शन"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"तारा प्रतीक"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"भाषण बेलुन"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"बैचारिक बेलुन"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"सेतो फूल"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"सय अंक प्रतीक"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"पैसाको थैली"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"मुद्रा विनिमय"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"मोटो डलर चिन्ह"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"क्रेडिट कार्ड"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"येन चिन्ह साथ नोट"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"डलर चिन्ह सहित बैकनोट"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"यूरो चिन्ह साथ नोट"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"पाउन्ड चिन्ह साथ नोट"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"पखेटाली मुद्रा"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"माथिको प्रवृत्ति र येन चिन्ह साथ चित्रपाती"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"सिट"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"निजी कम्प्यूटर"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"ब्रिफकेस"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"सानो डिस्क"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"फ्लपी डिस्क"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"सी डि चक्का"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"डिभिडी"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"फाइल फोल्डर"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"फाइल फोल्डर खोल्नुहोस्"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"दोब्र्याइएको पृष्ठ"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"माथि पत्याएको पृष्ठ"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"पात्रो"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"च्यातेर पठाउने पात्रो"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"कार्ड सूचकांक"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"माथिको प्रवृत्ति साथ चित्रपाती"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"तल प्रवृत्ति साथ चित्रपाती"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"बार चार्ट"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"क्लिपबोर्ड"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"पुस पिन"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"गोल पुस पिन"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"क्लिप"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"फुट"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"त्रिकोणात्मक फुट"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"किताबी ट्याबहरू"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"लेजर"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"नोटबुक"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"सजावटी खोल सहित नोटबुक"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"बन्द पुस्तक"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"खुला पुस्तक"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"हरियो पुस्तक"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"नीलो पुस्तक"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"सुन्तला पुस्तक"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"पुस्तकहरू"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"बिल्ला नाम"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"स्क्रोल"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"मेमो"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"टेलिफोन रिसीभर"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"पेजर"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"फ्याक्स मेसिन"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"स्याटलाइट एंटीना"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"आकाशबाणी"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"ढ्वांग फुक्नु"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"आउटबक्स ट्रे"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"इनबक्समा ट्रे"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"प्याकेज"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"इमेल प्रतीक"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"आगमन खाम"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"माथि तीर तल देखाइएको साथ खाम"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"माथि झण्डा साथ बन्द मेलबक्स"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"उठाएको झन्डा साथ बन्द मेलबक्स"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"उठाएको झन्डा साथ खुला मेलबक्स"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"तल झण्डा साथ खुला मेलबक्स"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"पत्र पेटिका"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"पोस्टल सीङ"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"अखबार"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"मोबाइल फोन"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"दाँया तीर साथ मोबाइल फोन बायाँ"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"कम्पन ढाँचाः"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"मोबाइल फोन बन्द"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"बिना मोबाइल फोनहरु"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"बारहरू साथ एंटीना"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"क्यामेरा"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"भिडियो क्यामेरा"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"टेलिभिजन"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"रेडियो"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"भिडियोक्यासेट"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"दाँया बटारिएको तीर"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"दाँया र बायाँ खुला वृत्त तीर घडीकोदिशामा"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"वृत्त दोबारेको साथ दाँया र बायाँ खुला वृत्त तीर घडीकोदिशामा"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"घडीको दिशामा तल र माथिको तर्फ खुला वृत्त तीर"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"उल्टा घडीको दिशामा तल र माथिको तर्फ खुला वृत्त तीर"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"कम चमक प्रतीक"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"उच्च चमक प्रतीक"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"ध्वोंनी निषेध स्ट्रोक"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"स्पिकर"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"एक तरङ्ग साथ स्पिकर"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"तीन ध्वनि लहरहरु साथ स्पिकर"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"ब्याट्री"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"बिद्धुतीय प्लग"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"बाँया-इशारा आबर्धक लेन्स"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"दायाँ इशारा आबर्धक लेन्स"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"मसी कलमले बन्द"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"साँचो साथ बन्द ताला"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"साँचो"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"लक गर्नुहोस्"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"खुला ताला"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"घन्टी"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"रद्द स्ट्रोक साथ घन्टी"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"बुकमार्क"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"संपर्क प्रतीक"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"रेडियो बटन"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"बायाँ माथि तीर साथ फर्काएको"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"बायाँ माथि तीर साथ अन्त्य"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"बायाँ साथ उद्गार चिन्हले दाँया माथि तीर"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"दाँया माथि तीर साथ चाँडै"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"माथिको माथि तीर साथ माथि"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"अठार मुनिका प्रतीक निषेधित"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"किक्याप दस"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"ठुलो ल्याटिन अक्षरका आगत प्रतीक"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"सानो ल्याटिन अक्षरका आगत प्रतीक"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"संख्याका लागि आगत प्रतीक"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"प्रतीकको लागि प्रतीक प्रविष्ट गर्नुहोस्"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"ल्याटिन अक्षरका आगत प्रतीक"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"आगो"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"बिजुली बत्ती"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"रेंच"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"हथौडा"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"नट बोल्ट"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"जापानी चक्कु होचो"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"पिस्तौल"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"माइक्रोस्कोप"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"टेलिस्कोप"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"क्रिस्टल बल"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"बीचमा थोप्ला निहित छ चुच्चे तारा"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"शुरुवातको लागि जापानी प्रतीक"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"त्रिशूल प्रतीक"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"कालो वर्ग बटन"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"सेतो वर्ग बटन"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"ठूलो लाल वृत्त"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"ठूलो नीलो वृत्त"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"ठूलो सुन्तला हीरा"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"ठूलो नीलो हीरा"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"लघु सुन्तला हीरा"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"लघु नीलो हीरा"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"माथी-इशारा रातो त्रिकोण"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"तल-इशारा रातो त्रिकोण"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"माथी इशारा सानो रातो त्रिकोण"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"तल-इशारा सानो रातो त्रिकोण"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"घडी अनुहार एक बजे"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"घडी अनुहार दुई बजे"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"घडी अनुहार तीन बजे"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"घडी अनुहार चार बजे"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"घडी अनुहार पाँच बजे"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"घडी अनुहार छ बजे"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"घडी अनुहार सात बजे"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"घडी अनुहार आठ बजे"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"घडी अनुहार नौ बजे"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"घडी अनुहार दश बजे"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"घडी अनुहार एघार बजे"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"घडी अनुहार बाह्र बजे"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"घडी अनुहार एक-तिस"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"घडी अनुहार दुई-तिस"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"घडी अनुहार तीन तीस"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"घडी अनुहार चार-तिस"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"घडी अनुहार पाँच-तिस"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"घडी अनुहार छ-तिस"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"घडी अनुहार सात-तिस"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"घडी अनुहार आठ-तिस"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"घडी अनुहार नौ-तिस"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"घडी अनुहार दश-तिस"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"घडी अनुहार एघार-तिस"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"घडी अनुहार बाह्र-तिस"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"माउन्ट फुजी"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"टोकियो टावर"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"स्वतन्त्रताको प्रतिमा"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"जापानको छान्य मुर्ति"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"मोयै"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"अनुहार ङिच्च हँसाइ"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"हँसिल आँखाको साथ ङिच्च हँसाइ"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"आनन्द आँसुको साथ अनुहार"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"खुला मुखको साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"खुला मुखको र हँसिलो आँखा साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"खुला मुख र चिसो पसिना साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"खुला मुख र बन्द आँखाको साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"हेलो साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"सिंगहरु साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"आँखा झिम्काएको अनुहार"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"हँसिलो आँखाले साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"स्वादिष्ट भोजन savoring अनुहार"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"ढुक्क अनुहार"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"हृदय आकारको आँखाले हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"घाम साथ हँसिलो अनुहार"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"स्वाँग पारेको अनुहार"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"सामान्य अनुहार"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"भाबबिहिन अनुहार"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"निराश अनुहार"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"चिसो पसिना साथ अनुहार"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"चिंताग्रस्त अनुहार"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"गोलमाल अनुहार"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"आघातको अवस्थामा अनुहार"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"चुम्बन अनुहार"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"चुम्बन फालिएको अनुहार"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"हँसिलो आँखा साथ चुम्बन अनुहार"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"बन्द आँखा साथ चुम्बन अनुहार"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"बाहिर जिब्रो साथ अनुहार"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"बाहिर जिब्रो र झिम्काएको आँखा साथ अनुहार"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"बाहिर जिब्रो र बेस्सरी बन्द आँखा साथ अनुहार"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"निराश अनुहार"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"चिन्तित अनुहार"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"आक्रोशित अनुहार"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"दुखी अनुहार"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"कराएको अनुहार"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"संरक्षित अनुहार"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"विजय नजर अनुहार"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"निराश तर राहत अनुहार"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"खुला मुखको साथ निन्याउरो अनुहार"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"विचलित अनुहार"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"डराएको अनुहार"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"थकित अनुहार"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"निदाएको अनुहार"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"थकित अनुहार"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"कित्किताएको अनुहार"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"चर्को सोरले कराएको अनुहार"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"खुला मुख अनुहार"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"चुप अनुहार"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"खुला मुख र चिसो पसिना अनुहार"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"डरमा चिल्लाएको अनुहार"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"छक्क अनुहार"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"निर्लज्ज अनुहार"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"निन्द्रे अनुहार"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"चक्करलागेको अनुहार"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"मुख नभएको अनुहार"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"चिकित्सक माक्स लगाएको अनुहार"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"हँसिलो आँखा साथ ङीच्च बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"आनन्द आँसु झार्दै बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"खुला मुखले हँसिलो बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"हृदय आकारको आँखाले हँसिलो बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"छट्टु मुस्कान साथ बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"बन्द आँखा साथ चुम्बन बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"दुखी बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"कराएको बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"वाक्क भइसकेको बिरालो अनुहार"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"कुनै राम्रो सङ्केत बिना साथ अनुहार"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"ठीक इशारा साथ अनुहार"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"गहिरो निहुरेको व्यक्ति"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"हेर्नुहोस्-कुनै-दुष्ट बाँदर"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"सुन-कुनै-दुष्ट बाँदर"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"बोल्नु-कुनै-दुष्ट बाँदर"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"खुसी व्यक्ति एक हात उठाउँदै"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"उत्सवमा दुवै हात उठाँउदैको व्यक्ति"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"निराश व्यक्ति"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"दुखी अनुहार व्यक्ति"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"नतमस्तक व्यक्ति"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"रकेट"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"हेलिकोप्टर"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"भापद्वारा चल्ने यातायात"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"रेलवे कार"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"उच्च गति रेल"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"गोली नाक साथ उच्च गतिमा रेल"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"रेल"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"मेट्रो"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"प्रकाश रेल"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"स्टेशन"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"ट्राम"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"ट्राम कार"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"बस"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"आउदैको बस"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"ट्रलीबस"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"बस बिसौना"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"सानो बस"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"एम्बुलेन्स"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"दमकल"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"प्रहरी कार"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"आऊदैको प्रहरी कार"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"ट्याक्सी"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"आऊदैको ट्याक्सी"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"अटोमोबाइल"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"आऊदैको गाडी"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"मनोरंजन वाहन"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"वितरण ट्रक"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"जोडिएको ठूलोगाडी"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"ट्रयाक्टर"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"एकतर्फी रेल"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"पहाडी रेलवे"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"सस्पेंशन रेलवे"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"पहाडी केवलवे"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"हवाई ट्रामगाडी"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"पानीजहाज"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"डुंगा"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"द्रुत डुंगा"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"तेर्सो यातायात बत्ती"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"ठाडो यातायात प्रकाश"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"निर्माण चिन्ह"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"प्रहरी कारको परिक्रामी प्रकाश"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"पोस्टमा त्रिकोणात्मक झण्डा"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"ढोका"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"प्रवेश निषेध चिन्ह"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"धूम्रपान चिन्ह"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"धुम्रपान निषेधित चिन्ह"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"फोहर राख्ने ठाउँ चिन्ह"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"फोहर फाल्न निषेधित चिन्ह"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"पेय जल चिन्ह"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"गैह्र पिउने पानी चिन्ह"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"साइकल"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"साइकल निषेध"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"साइकल यात्री"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"पहाडी साइकल् यात्री"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"पैदल यात्री"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"पैदल यात्री निषेध"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"बच्चाहरु बाटो काट्दै"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"पुरुष चिन्ह"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"महिला चिन्ह"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"शौचालय"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"बच्चा चिन्ह"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"शौचालय"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"कम्बोथ"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"फोहरा"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"स्नान"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"बाथटब"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"राहदानी नियन्त्रण"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"भन्सार"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"सामान दाबी"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"छुटेको सामान"</string>
+</resources>
diff --git a/java/res/values-ne-rNP/strings-letter-descriptions.xml b/java/res/values-ne-rNP/strings-letter-descriptions.xml
new file mode 100644
index 0000000..46708b3
--- /dev/null
+++ b/java/res/values-ne-rNP/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro sign"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Masculine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring above"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dot above"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dot above"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dot above"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, middle dot"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, preceded by apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring above"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dot above"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, Caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, comma below"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, comma below"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dot below"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook above"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve and acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve and grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve and hook above"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve and tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve and dot below"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dot below"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook above"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook above"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dot below"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dot below"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook above"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex and acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex and grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex and hook above"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex and tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex and dot below"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn and acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn and grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dot below"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook above"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn and acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn and grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn and hook above"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn and tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn and dot below"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dot below"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook above"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Inverted exclamation mark"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Left-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Middle dot"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript one"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Right-pointing double angle quotation mark"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Inverted question mark"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Left single quotation mark"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Right single quotation mark"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Single low-9 quotation mark"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Left double quotation mark"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Right double quotation mark"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille sign"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Single left-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Single right-pointing angle quotation mark"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript four"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript latin small letter n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso sign"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Rightwards arrow"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Downwards arrow"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Less-than or equal to"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Greater-than or equal to"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Black star"</string>
+</resources>
diff --git a/java/res/values-ne-rNP/strings-talkback-descriptions.xml b/java/res/values-ne-rNP/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..2bbd178
--- /dev/null
+++ b/java/res/values-ne-rNP/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"पासवर्ड कुञ्जीहरू ठूलो स्वरमा बोलेको आवाज सुन्नका लागि हेडसेट जोड्नुहोस्।"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"वर्तमान पाठ %s हो"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"कुनै पाठ प्रविष्टि गरिएको छैन"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ले <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> लाई <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> मा सच्याउँछ"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ले स्वतः सच्याउने गर्छ"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"अज्ञात वर्ण"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"सिफ्ट"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"थप प्रतीकहरु"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"सिफ्ट"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"प्रतीकहरू"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"सिफ्ट"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"मेटाउनुहोस्"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"प्रतिकहरू"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"अक्षरहरू"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"नम्बरहरू"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"सेटिङ्हरू"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ट्याब"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"स्पेस"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"आवाज निवेश"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"इमोजी"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"फर्कनुहोस्"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"खोजी गर्नुहोस्"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"डट्"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"भाषा स्विच गर्नुहोस्"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"अर्को"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"अघिल्लो"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"सिफ्ट सक्षम पारिएको छ"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"क्याप्स लक सक्षम पारिएको छ"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"प्रतिक ढाँचा"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"थप प्रतीक मोड"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"अक्षर ढाँचा"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"फोन ढाँचा"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"फोन प्रतिक मोड"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"किबोर्ड लुकाइएको छ"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> किबोर्ड देखाउँदै"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"मिति"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"मिति र समय"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"इमेल"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"सन्देश पठाइदै"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"सङ्ख्या"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"फोन"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"पाठ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"समय"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"हालैका"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"मानिसहरू"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"वस्तुहरू"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"प्रकृति"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"स्थानहरू"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"प्रतिकहरू"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ईमोटिकन्स"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Capital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Capital I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, dot above"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"अज्ञात प्रतीक"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"अज्ञात इमोजी"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"वैकल्पिक वर्णहरू उपलब्ध छन्"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"वैकल्पिक वर्णहरू खारेज गरियो"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"वैकल्पिक सुझावहरू उपलब्ध छन्"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"वैकल्पिक सुझावहरू खारिज गरियो"</string>
+</resources>
diff --git a/java/res/values-ne-rNP/strings.xml b/java/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..3220169
--- /dev/null
+++ b/java/res/values-ne-rNP/strings.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"इनपुट विकल्पहरू"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"सम्पर्क नामहरू हेर्नुहोस्"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"तपाईँको सम्पर्क सूचीबाट हिज्जे परीक्षकले प्रविष्टिहरूको प्रयोग गर्छ"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"कुञ्जी थिच्दा भाइब्रेट"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"कुञ्जी थिच्दा आवाज"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"कुञ्जी दबाउँदा पपअप"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"निवेश प्राथमिकता"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"उपस्थिति"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"बहुभाषी विकल्प"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"इशारा टाइप प्राथमिकता"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"पाठ सुधार"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"उन्नत"</string>
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"अन्य इनपुट विधिमा स्विच गर्नुहोस्"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"भाषा स्विच किले अन्य इनपुट विधि पनि समेट्छ"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"भाषा स्विच कुञ्जी"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"जब बहुसङ्ख्यक इनपुट भाषाहरू सक्षम भएपछि देखाउनुहोस्"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"स्लाइड सूचक देखाउनुहोस्"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"सिफ्ट वा प्रतिक कुञ्जीमा स्लाइड गर्ने बेला दृश्य सङ्केत देखाउनुहोस्"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"कि पपअप खारेजी ढिलाइ"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ढिलाइ छैन"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"पूर्वनिर्धारित"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> मिलिसेकेन्ड"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"प्रणाली पूर्वनिर्धारित"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"सम्पर्क नामहरू सुझाव गर्नुहोस्"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"सुझाव र सुधारका लागि सम्पर्कबाट नामहरू प्रयोग गर्नुहोस्"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"निजीकृत सुझावहरू"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>सुधार गर्नुहोस्"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"डबल-स्पेस पूर्णविराम"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"स्पेसबारमा डबल ट्याप गर्नाले पूर्णविरामपछि स्पेस राख्दछ"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"स्वतः पूँजिकरण"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"प्रत्येक वाक्यको पहिलो शब्द क्यापिटल गर्नुहोस्"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"व्यक्तिगत शब्दकोश"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"एड-अन शब्दकोश"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"मुख्य शब्दकोश"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"सुधार सुझावहरू देखाउने"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"टाइप गर्ने बेलामा सुझाव शब्दहरू देखाउनुहोस्"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"सधैँ देखाउने"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"चित्र मोडमा देखाउनुहोस्"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"सधैँ लुकाउने"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"आपत्तिजनक शब्दहरूलाई रोक्नुहोस्"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"सम्भावित आपत्तिजनक शब्दहरू सुझाव नगर्नुहोस्"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"स्वतः सुधार"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"गल्ती टाइप भएका शब्दहरूलाई स्पेसबार र पङ्चुएसनले स्वचालित रूपमा सच्याउँछन्।"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"बन्द"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"सामान्य"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"आक्रामक"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"ज्यादै आक्रामक"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"अर्को शब्द सुझाव"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"सुझावहरू निर्माण गर्न अघिल्लो शब्द प्रयोग गर्नुहोस्"</string>
+    <string name="gesture_input" msgid="826951152254563827">"इशारा टाइप गर्ने सक्षम पार्नुहोस्"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"अक्षर स्लाइड गरी शब्द इनपुट गर्नुहोस्"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"इशारा ट्रेल देखाउनुहोस्"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"गतिशील फ्लोटिङ पूर्वावलोकन"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"इशारा गर्दा सुझाव दिइएको शब्द हेर्नुहोस्"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"वाक्यांश इशारा"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"इशाराको बखतमा स्पेस कुञ्जीमा ग्लाईडिंग द्वारा आगत खाली ठाउँहरू"</string>
+    <string name="voice_input" msgid="3583258583521397548">"आवाज इनपुट कुञ्जी"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"कुनै आवाज इनपुट विधिहरू सक्षम गरिएका छैनन्। भाषा र इनपुट सेटिङहरूको जाँच गर्नुहोस्।"</string>
+    <string name="configure_input_method" msgid="373356270290742459">"इनपुट विधिहरू कन्फिगर गर्नुहोस्"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"इनपुट भाषाहरू"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"प्रतिक्रिया पठाउनुहोस्"</string>
+    <string name="select_language" msgid="3693815588777926848">"इनपुट भाषाहरू"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"बचत गर्न पुनः छुनुहोस्"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"उपलब्ध शब्दकोश"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"किबोर्ड थिम"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"अंग्रेजी (युके)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"अंग्रेजी (युएस्)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"स्पेनिस (युएस्)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"अंग्रेजी (बेलायत) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"अंग्रेजी (अमेरिका) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"स्पेनेली (अमेरिका) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (परम्परागत)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (सिरिलिक)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ल्याटिन)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"कुनै भाषा होइन (वर्णमाला)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"वर्णमाला (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"वर्णमाला (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"वर्णमाला (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"वर्णमाला (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"वर्णमाला (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"वर्णमाला (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"इमोजी"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"किबोर्ड थिम"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"होलो सेतो"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"होलो नीलो"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"सामाग्री कालो"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"सामाग्री प्रकाश"</string>
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"अनुकूलन इनपुट शैली"</string>
+    <string name="add_style" msgid="6163126614514489951">"शैली थप्नुहोस्"</string>
+    <string name="add" msgid="8299699805688017798">"थप्नुहोस्"</string>
+    <string name="remove" msgid="4486081658752944606">"हटाउनुहोस्"</string>
+    <string name="save" msgid="7646738597196767214">"बचत गर्नुहोस्"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"भाषा"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"लेआउट"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"तपाईँले प्रयोग गर्न सुरु गर्न अघि तपाईँको अनुकूलन इनपुट शैली सक्षम पारिनु पर्छ। के तपाईँ यसलाई अहिले सक्षम पार्न चाहनु हुन्छ?"</string>
+    <string name="enable" msgid="5031294444630523247">"सक्षम पार्नुहोस्"</string>
+    <string name="not_now" msgid="6172462888202790482">"अहिले होइन"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"यस्तो इनपुट शैली पहिले नै अवस्थित छ: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"कुञ्जी लामो थिचाइ ढिलाइ"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"कुञ्जी थिचाइ भाइब्रेसन अवधि"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"कुञ्जी थिचाइ आवाज भोल्युम"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"बाह्य शब्दकोश फाइल पढ्नुहोस्"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"डाउनलोड फोल्डरमा कुनै शब्दकोश फाइलहरू छैनन्।"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"स्थापना गर्न कुनै शब्दकोश फाइल चयन गर्नुहोस्"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"वास्तवमै <xliff:g id="LANGUAGE_NAME">%s</xliff:g> को लागि यो फाइल स्थापना गर्नुहुन्छ?"</string>
+    <string name="error" msgid="8940763624668513648">"कुनै त्रुटि भयो"</string>
+    <string name="button_default" msgid="3988017840431881491">"पूर्वनिर्धारित"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"तपाईँलाई स्वागत छ<xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"इशारा टाइप गर्नेसँग"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"सुरु गरौं"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"अर्को चरण"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"स्थापना गर्दै <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"सक्षम पार्नुहोस् <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"कृपया जाँच गर्नुहोस् \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" तपाईँको भाषा र इनपुट सेटिङमा। यसले तपाईँलाई तपाईँको उपकरणमा सञ्चालन गर्न आधिकारिकता प्रदान गर्छ।"</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> पहिले नै तपाईँको भाषा र इनपुट सेटिङमा सक्षम पारिएको छ, त्यसैले यो कदम सकिसकिएको छ। अर्कोमा जानुहोस्!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"सेटिङहरूमा सक्षम पार्नुहोस्"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>मा स्विच गर्नुहोस्"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"त्यसपछि, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" लाई तपाईँको सक्रिय पाठ इनपुट विधिका रूपमा चयन गर्नुहोस्।"</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"इनपुट विधि स्विच गर्नुहोस्"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"बधाई छ, तपाईँले सेट पुरा गर्नुभयो!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"अब तपाईँ <xliff:g id="APPLICATION_NAME">%s</xliff:g>का साथ तपाईँका सम्पूर्ण मनपर्ने अनुप्रयोगहरू टाइप गर्न सक्नुहुन्छ।"</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"थप भाषाहरू कन्फिगर गर्नुहोस्"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"समाप्त भयो"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"अनुप्रयोग आइकन देखाउनुहोस्"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"लन्चरमा अनुप्रयोग आइकन देखाउनुहोस्"</string>
+    <string name="app_name" msgid="6320102637491234792">"शब्दकोश प्रदायक"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"शब्दकोश प्रदायक"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"शब्दकोश सेवा"</string>
+    <string name="download_description" msgid="6014835283119198591">"शब्दकोश अद्यावधिक जानकारी"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"एड-अन शब्दकोश"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"उपलब्ध शब्दकोश"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"शब्दकोशहरूका लागि सेटिङहरू"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"प्रयोगकर्ता शब्दकोशहरू"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"प्रयोगकर्ता शब्दकोश"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"उपलब्ध शब्दकोश"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"हाल डाउनलोड गर्दै"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"स्थापित"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"स्थापित, असक्षम पारिएको"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"शब्दकोश सेवासँग जोड्न समस्या"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"शब्दकोशहरू उपलब्ध छैनन्"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"पुनः ताजा गर्नुहोस्"</string>
+    <string name="last_update" msgid="730467549913588780">"पछिल्लो अद्यावधिक"</string>
+    <string name="message_updating" msgid="4457761393932375219">"अद्यावधिकको लागि जाँच गर्दै"</string>
+    <string name="message_loading" msgid="5638680861387748936">"लोड हुँदै..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"मुख्य शब्दकोश"</string>
+    <string name="cancel" msgid="6830980399865683324">"रद्द गर्नुहोस्"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"सेटिङ्हरू"</string>
+    <string name="install_dict" msgid="180852772562189365">"स्थापना गर्नुहोस्"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"रद्द गर्नुहोस्"</string>
+    <string name="delete_dict" msgid="756853268088330054">"मेट्नुहोस्"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"तपाईँको मोबाइल उपकरणमा चयन गरिएको भाषाको शब्दकोश उपलब्ध छ। &lt;br/&gt; तपाईँको टाइप गर्ने अनुभव सुधार गर्न हामी <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>को शब्दकोश &lt;b&gt; डाउनलोड गर्न &lt;/b&gt; सिफारिस गर्दछौँ।  यो डाउनलोड गर्न 3G मा एक वा दुई मिनेट लिन सक्छ। तपाईँ एक &lt;b&gt; तपाईँको असीमित डेटा योजना &lt;/b&gt; छैन भने शुल्क लागू हुन सक्छ। तपाईँसँग कुन डेटा योजना छ भन्ने निश्चित छैन भने Wi-Fi जडान गरेर स्वचालित डाउनलोड गर्न हामी सिफारिस गर्दछौँ। युक्ति: तपाईँ  आफ्नो मोबाइल उपकरणको &lt;/b&gt; भाषा र इनपुट &lt;b&gt; &lt;b&gt;सेटिङ &lt;/b&gt; मेनुमा गएर शब्दकोशलाई डाउनलोड र हटाउन सक्नुहुन्छ।"</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"(अब डाउनलोड गर्नुहोस्<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"वाइ-फाइको माध्ययमद्वार डाउनलोड गर्नुहोस्"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>को लागि एउटा शब्दकोश उपलब्ध छ"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"समीक्षा गर्न थिच्नुहोस् र डाउनलोड गर्नुहोस्"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"डाउनलोड गर्दै: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>को लागि सुझावहरू चाँडै नै तयार हुने छ।"</string>
+    <string name="version_text" msgid="2715354215568469385">"संस्करण <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"थप्नुहोस्"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"शब्दकोशमा थप्नुहोस्"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"पदावली"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"थप विकल्पहरू"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"कम विकल्पहरू"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ठीक छ"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"शब्द:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"सर्टकट:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"भाषा:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"एउटा शब्द टाइप गर्नुहोस्"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"वैकल्पिक सर्टकट"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"शब्द सम्पादन गर्नुहोस्"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"सम्पादन गर्नुहोस्"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"मेट्नुहोस्"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"तपाईँसँग प्रयोगकर्ता शब्दकोशमा कुनै शब्द छैन।\"थप्नुहोस्\"(+) बटनमा छोएर एउटा शब्द थप्नुहोस्।"</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"सबै भाषाहरूका लागि"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"थप भाषाहरू..."</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"मेट्नुहोस्"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-nl/strings-action-keys.xml b/java/res/values-nl/strings-action-keys.xml
index c1ce25a..4dd5349 100644
--- a/java/res/values-nl/strings-action-keys.xml
+++ b/java/res/values-nl/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Vorig"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Klaar"</string>
     <string name="label_send_key" msgid="482252074224462163">"Verz."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Zoeken"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauze"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Wacht"</string>
 </resources>
diff --git a/java/res/values-nl/strings-config-important-notice.xml b/java/res/values-nl/strings-config-important-notice.xml
new file mode 100644
index 0000000..a340c99
--- /dev/null
+++ b/java/res/values-nl/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Suggesties verbeteren met uw communicatie en getypte gegevens"</string>
+</resources>
diff --git a/java/res/values-nl/strings-letter-descriptions.xml b/java/res/values-nl/strings-letter-descriptions.xml
new file mode 100644
index 0000000..8bd3aaf
--- /dev/null
+++ b/java/res/values-nl/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Superscript a"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro-teken"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Superscript o"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Scherpe S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, accent grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, accent aigu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, trema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring erboven"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligatuur"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedille"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, accent grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, accent aigu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, trema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, accent grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, accent aigu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, trema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, accent grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, accent aigu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, trema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, schuine streep"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, accent grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, accent aigu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, accent circonflexe"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, trema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, accent aigu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, trema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, lengteteken"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, boogje"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, accent aigu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, accent circonflexe"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punt erboven"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, schuine streep"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, lengteteken"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, boogje"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punt erboven"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, accent circonflexe"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, boogje"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punt erboven"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedille"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, schuine streep"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, lengteteken"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, boogje"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I zonder punt"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligatuur"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedille"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, accent aigu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedille"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, midden-punt"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, schuine streep"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, accent aigu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedille"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, voorafgegaan door apostrof"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, lengteteken"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, boogje"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, dubbel accent aigu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligatuur"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, accent aigu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedille"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, accent aigu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, accent circonflexe"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedille"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedille"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, schuine streep"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, lengteteken"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, boogje"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring erboven"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, dubbel accent aigu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, accent circonflexe"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, accent circonflexe"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, accent aigu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punt erboven"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Lange S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, hoorntje"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, hoorntje"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, komma eronder"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, komma eronder"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punt eronder"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, haakje erboven"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, accent circonflexe en accent aigu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, accent circonflexe en accent grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, accent circonflexe en haakje erboven"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, accent circonflexe en tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, accent circonflexe en punt eronder"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, boogje en accent aigu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, boogje en accent grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, boogje en haakje erboven"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, boogje en tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, boogje en punt eronder"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punt eronder"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, haakje erboven"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, accent circonflexe en accent aigu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, accent circonflexe en accent grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, accent circonflexe en haakje erboven"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, accent circonflexe en tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, accent circonflexe en punt eronder"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, haakje erboven"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punt eronder"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punt eronder"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, haakje erboven"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, accent circonflexe en accent aigu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, accent circonflexe en accent grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, accent circonflexe en haakje erboven"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, accent circonflexe en tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, accent circonflexe en punt eronder"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, hoorntje en accent aigu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, hoorntje en accent grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, hoorntje en haakje erboven"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, hoorntje en tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, hoorntje en punt eronder"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punt eronder"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, haakje erboven"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, hoorntje en accent aigu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, hoorntje en accent grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, hoorntje en haakje erboven"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, hoorntje en tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, hoorntje en punt eronder"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, accent grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punt eronder"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, haakje erboven"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Omgekeerd uitroepteken"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Dubbel aanhalingsteken naar links"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Midden-punt"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript 1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Dubbel aanhalingsteken naar rechts"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Omgekeerd vraagteken"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Enkel aanhalingsteken links"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Enkel aanhalingsteken rechts"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Enkel omgekeerd laag aanhalingsteken"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Dubbel aanhalingsteken links"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Dubbel aanhalingsteken rechts"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kruisje"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dubbel kruisje"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per duizend-teken"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Accent"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dubbel accent"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Enkel aanhalingsteken naar links"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Enkel aanhalingsteken naar rechts"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript 4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript Latijnse kleine letter N"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Teken voor Peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Ten attentie van"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Pijl naar rechts"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pijl omlaag"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Lege verzameling"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Verhoging"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kleiner dan of gelijk aan"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Groter dan of gelijk aan"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Zwarte ster"</string>
+</resources>
diff --git a/java/res/values-nl/strings-talkback-descriptions.xml b/java/res/values-nl/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..c59f3f2
--- /dev/null
+++ b/java/res/values-nl/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Sluit een headset aan om wachtwoordtoetsen hardop te laten voorlezen."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Huidige tekst is %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Geen tekst ingevoerd"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Met <xliff:g id="KEY_NAME">%1$s</xliff:g> wordt <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> gecorrigeerd naar <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Met <xliff:g id="KEY_NAME">%1$s</xliff:g> voert u automatische correctie uit"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Onbekend teken"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Meer symbolen"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbolen"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Verwijderen"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbolen"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letters"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Cijfers"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Instellingen"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Spatiebalk"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Spraakinvoer"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Zoeken"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punt"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Taal wijzigen"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Volgende"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Vorige"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ingeschakeld"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock ingeschakeld"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolen"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modus voor meer symbolen"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Alfanumeriek toetsenbord"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Toetsenbord telefoon"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefoonsymbolen"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Toetsenbord verborgen"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Toetsenbord voor <xliff:g id="KEYBOARD_MODE">%s</xliff:g> wordt weergegeven"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum en tijd"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"berichten"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"nummer"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefoon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"tijd"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recent"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Mensen"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objecten"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natuur"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Plaatsen"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbolen"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Hoofdletter <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Hoofdletter I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Hoofdletter I, punt erboven"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Onbekend symbool"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Onbekende emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatieve tekens zijn beschikbaar"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatieve tekens worden verwijderd"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatieve suggesties zijn beschikbaar"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatieve suggesties worden verwijderd"</string>
+</resources>
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index dcbf2c0..33350b1 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Invoeropties"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Opdrachten in onderzoekslogbestand"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Contactnamen opzoeken"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"De spellingcontrole gebruikt items uit uw contactenlijst"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Trillen bij toetsaanslag"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Geluid bij toetsaanslag"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up bij toetsaanslag"</string>
-    <string name="general_category" msgid="1859088467017573195">"Algemeen"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Tekstcorrectie"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Typen via tekenen"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Andere opties"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Geavanceerde instellingen"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opties voor experts"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Invoermeth. overschakelen"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Schakelknop voor taal ook van toepassing op andere invoermethoden"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Schakelknop voor taal"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Systeemstandaard"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Contactnamen suggereren"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Namen uit Contacten gebruiken voor suggesties en correcties"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Gepersonaliseerde suggesties"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> verbeteren"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dubbeltik is punt, spatie"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dubbeltik op spatiebalk voor een punt gevolgd door een spatie"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Auto-hoofdlettergebruik"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Gebarenspoor weergeven"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamisch zwevend voorbeeld"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Het voorgestelde woord weergeven tijdens het tekenen"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: opgeslagen"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Sluit een headset aan om wachtwoordtoetsen hardop te laten voorlezen."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Huidige tekst is %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Geen tekst ingevoerd"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Met <xliff:g id="KEY">%1$s</xliff:g> wordt <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> gecorrigeerd naar <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Met <xliff:g id="KEY">%1$s</xliff:g> voert u automatische correctie uit"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Toetscode %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift aan (tik om uit te schakelen)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock aan (tik om uit te schakelen)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Verwijderen"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symbolen"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letters"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Cijfers"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Instellingen"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Spatie"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Spraakinvoer"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley-gezichtje"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Zoeken"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Stip"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Taal wijzigen"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Volgende"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Vorige"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift ingeschakeld"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock ingeschakeld"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift uitgeschakeld"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbolen"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Alfanumeriek toetsenbord"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Toetsenbord telefoon"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefoonsymbolen"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Toetsenbord verborgen"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g> toetsenbord wordt weergegeven"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datum en tijd"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"berichten"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"nummer"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefoon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"tijd"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gebaar voor woordgroep"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Spaties invoeren bij gebaren door naar de spatietoets te bewegen"</string>
     <string name="voice_input" msgid="3583258583521397548">"Toets voor spraakinvoer"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Op hoofdtoetsenbord"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Op symbooltoetsenb."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Uitgeschakeld"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Microfoon op hoofdtoetsenbord"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic op symb.toetsb."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Spraakinvoer is uit"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Geen spraakinvoermethoden ingeschakeld. Ga naar \'Instellingen voor taal en invoer\'."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Invoermethoden configureren"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Invoertalen"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Feedback verzenden"</string>
     <string name="select_language" msgid="3693815588777926848">"Invoertalen"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Raak nogmaals aan om op te slaan"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Woordenboek beschikbaar"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Gebruikersfeedback inschakelen."</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Help deze invoermethode te verbeteren door automatisch gebruiksstatistieken en crashmeldingen te verzenden."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Toetsenbordthema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Engels (GB)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Engels (VS)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spaans (VS)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engels (VK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engels (VS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spaans (VS) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditioneel)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engels (VK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engels (VS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spaans (VS) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditioneel)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cyrillisch)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latijns)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Geen taal (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (pc)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Kleurenschema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Wit"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blauw"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Aangep. invoerstijlen"</string>
     <string name="add_style" msgid="6163126614514489951">"Stijl toev."</string>
     <string name="add" msgid="8299699805688017798">"Toevoegen"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Inschakelen"</string>
     <string name="not_now" msgid="6172462888202790482">"Niet nu"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Dezelfde invoerstijl bestaat al: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modus voor gebruiksvriendelijkheidsonderzoek"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Vertraging toets lang indrukkn"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Trilingsduur bij toetsgebruik"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Geluidsvolume bij toetsgebruik"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Extern woordenboekbestand lezen"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Geen woordenboekbestanden in de map \'Downloads\'"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selecteer een woordenboekbestand om te installeren"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Wilt u dit bestand voor <xliff:g id="LOCALE_NAME">%s</xliff:g> echt installeren?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Wilt u dit bestand voor het <xliff:g id="LANGUAGE_NAME">%s</xliff:g> echt installeren?"</string>
     <string name="error" msgid="8940763624668513648">"Er is een fout opgetreden"</string>
     <string name="button_default" msgid="3988017840431881491">"Standaard"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Welkom bij <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Vernieuwen"</string>
     <string name="last_update" msgid="730467549913588780">"Laatst bijgewerkt"</string>
     <string name="message_updating" msgid="4457761393932375219">"Controleren op updates"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Wordt geladen…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Laden…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Algemeen woordenboek"</string>
     <string name="cancel" msgid="6830980399865683324">"Annuleren"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Instellingen"</string>
     <string name="install_dict" msgid="180852772562189365">"Installeren"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Annuleren"</string>
     <string name="delete_dict" msgid="756853268088330054">"Verwijderen"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Er is een woordenboek voor de geselecteerde taal beschikbaar op uw mobiele apparaat.&lt;br/&gt; We raden u aan het woordenboek voor het <xliff:g id="LANGUAGE">%1$s</xliff:g> te &lt;b&gt;downloaden&lt;/b&gt; om uw typvaardigheid te verbeteren.&lt;br/&gt; &lt;br/&gt; De download kan één of twee minuten duren via 3G. Er kunnen kosten worden berekend als u geen &lt;b&gt;onbeperkt gegevensabonnement&lt;/b&gt; heeft.&lt;br/&gt; Als u niet zeker weet welk gegevensabonnement u heeft, raden we u aan een wifi-verbinding te zoeken om de download automatisch te starten.&lt;br/&gt; &lt;br/&gt; Tip: u kunt woordenboeken downloaden en verwijderen via &lt;b&gt;Taal en invoer&lt;/b&gt; in het menu &lt;b&gt;Instellingen&lt;/b&gt; van uw mobiele apparaat."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Er is een woordenboek beschikbaar voor de geselecteerde taal op uw mobiele apparaat.&lt;br/&gt; We raden u aan het woordenboek voor het <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> te &lt;b&gt;downloaden&lt;/b&gt; om uw typvaardigheid te verbeteren.&lt;br/&gt; &lt;br/&gt; De download kan één of twee minuten duren via 3G. Er kunnen kosten worden berekend als u geen &lt;b&gt;onbeperkt gegevensabonnement&lt;/b&gt; heeft.&lt;br/&gt; Als u niet zeker weet welk gegevensabonnement u heeft, raden we u aan een wifi-verbinding te zoeken om de download automatisch te starten.&lt;br/&gt; &lt;br/&gt; Tip: u kunt woordenboeken downloaden en verwijderen via &lt;b&gt;Taal en invoer&lt;/b&gt; in het menu &lt;b&gt;Instellingen&lt;/b&gt; van uw mobiele apparaat."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Nu downloaden (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Downloaden via wifi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Er is een woordenboek beschikbaar voor het <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Er is een woordenboek beschikbaar voor het <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Druk om te controleren en te downloaden"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Downloaden: suggesties voor het <xliff:g id="LANGUAGE">%1$s</xliff:g> zijn straks beschikbaar."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Downloaden: suggesties voor het <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> zijn straks beschikbaar."</string>
     <string name="version_text" msgid="2715354215568469385">"Versie <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Toevoegen"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Toevoegen aan woordenboek"</string>
diff --git a/java/res/values-pl/strings-action-keys.xml b/java/res/values-pl/strings-action-keys.xml
index 2984b98..6ca0b0c 100644
--- a/java/res/values-pl/strings-action-keys.xml
+++ b/java/res/values-pl/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Wróć"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Gotowe"</string>
     <string name="label_send_key" msgid="482252074224462163">"Wyślij"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Szukaj"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauza"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Czekaj"</string>
 </resources>
diff --git a/java/res/values-pl/strings-config-important-notice.xml b/java/res/values-pl/strings-config-important-notice.xml
new file mode 100644
index 0000000..315a61b
--- /dev/null
+++ b/java/res/values-pl/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Analizuj wiadomości i wpisywane dane, by ulepszać podpowiedzi"</string>
+</resources>
diff --git a/java/res/values-pl/strings-letter-descriptions.xml b/java/res/values-pl/strings-letter-descriptions.xml
new file mode 100644
index 0000000..7b1463c
--- /dev/null
+++ b/java/res/values-pl/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Wskaźnik rodzaju żeńskiego liczebnika porządkowego"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Znak mikro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Wskaźnik rodzaju męskiego liczebnika porządkowego"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Ostre S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A z odwrotną kreską"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A z kreską"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A z daszkiem"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A z tyldą"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A z dwiema kropkami"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A z kółkiem"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligatura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C z haczykiem"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E z odwrotną kreską"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E z kreską"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E z daszkiem"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E z dwiema kropkami"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I z odwrotną kreską"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I z kreską"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I z daszkiem"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I z dwiema kropkami"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N z tyldą"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O z odwrotną kreską"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O z kreską"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O z daszkiem"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O z tyldą"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O z dwiema kropkami"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O z przekreśleniem"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U z odwrotną kreską"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U z kreską"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U z daszkiem"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U z dwiema kropkami"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y z kreską"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y z dwiema kropkami"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A z makronem"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A z łuczkiem"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A z ogonkiem"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C z kreską"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C z daszkiem"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C z kropką"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C z ptaszkiem"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D z ptaszkiem"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D z przekreśleniem"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E z makronem"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E z łuczkiem"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E z kropką u góry"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E z ogonkiem"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E z ptaszkiem"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G z daszkiem"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G z łuczkiem"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G z kropką u góry"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G z haczykiem"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H z daszkiem"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H z przekreśleniem"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I z tyldą"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I z makronem"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I z łuczkiem"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I z ogonkiem"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I bez kropki"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligatura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J z daszkiem"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K z haczykiem"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L z kreską"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L z haczykiem"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L z ptaszkiem"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L z kropką pośrodku"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L z przekreśleniem"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N z kreską"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N z haczykiem"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N z ptaszkiem"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N poprzedzone apostrofem"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O z makronem"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O z łuczkiem"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O z podwójną kreską"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligatura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R z kreską"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R z haczykiem"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R z ptaszkiem"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S z kreską"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S z daszkiem"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S z haczykiem"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S z ptaszkiem"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T z haczykiem"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T z ptaszkiem"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T z przekreśleniem"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U z tyldą"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U z makronem"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U z łuczkiem"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U z kółkiem"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U z podwójną kreską"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U z ogonkiem"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W z daszkiem"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y z daszkiem"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z z kreską"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z z kropką"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z z ptaszkiem"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Długie S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O z rogiem"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U z rogiem"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S z przecinkiem u dołu"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T z przecinkiem u dołu"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Szwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A z kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A z zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A z daszkiem i kreską"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A z daszkiem i odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A z daszkiem i zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A z daszkiem i tyldą"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A z daszkiem i kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A z łuczkiem i kreską"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A z łuczkiem i odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A z łuczkiem i zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A z łuczkiem i tyldą"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A z łuczkiem i kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E z kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E z zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E z tyldą"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E z daszkiem i kreską"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E z daszkiem i odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E z daszkiem i zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E z daszkiem i tyldą"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E z daszkiem i kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I z zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I z kropką u dołu"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O z kropką u dołu"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O z zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O z daszkiem i kreską"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O z daszkiem i odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O z daszkiem i zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O z daszkiem i tyldą"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O z daszkiem i kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O z rogiem i kreską"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O z rogiem i odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O z rogiem i zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O z rogiem i tyldą"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O z rogiem i kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U z kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U z zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U z rogiem i kreską"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U z rogiem i odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U z rogiem i zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U z rogiem i tyldą"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U z rogiem i kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y z odwrotną kreską"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y z kropką u dołu"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y z zawijasem u góry"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y z tyldą"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Odwrócony wykrzyknik"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Lewy cudzysłów kątowy"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Kropka pośrodku"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Pierwsza potęga"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Prawy cudzysłów kątowy"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Odwrócony pytajnik"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Lewy cudzysłów definicyjny"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Prawy cudzysłów definicyjny"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Cudzysłów pojedynczy"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Lewy cudzysłów apostrofowy"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Prawy cudzysłów apostrofowy"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Krzyżyk"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Podwójny krzyżyk"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promil"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prim"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Bis"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Lewy francuski cudzysłów pojedynczy"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Prawy francuski cudzysłów pojedynczy"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Czwarta potęga"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Małe n w górnym indeksie"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Znak peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Znak „przez grzeczność”"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Strzałka w prawo"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Strzałka w dół"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Zbiór pusty"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Przyrost"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mniejsze lub równe"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Większe lub równe"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Czarna gwiazdka"</string>
+</resources>
diff --git a/java/res/values-pl/strings-talkback-descriptions.xml b/java/res/values-pl/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..43fca5f
--- /dev/null
+++ b/java/res/values-pl/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Podłącz zestaw słuchawkowy, by usłyszeć znaki hasła wypowiadane na głos."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Aktualny tekst: %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nie wpisano tekstu"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> poprawia <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> wykonuje autokorektę"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Nieznany znak"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Więcej symboli"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symbole"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Usuń"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symbole"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Litery"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Liczby"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Ustawienia"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Karta"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Spacja"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Rozpoznawanie mowy"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emotikony"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Szukaj"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Kropka"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Przełącz język"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Dalej"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Wstecz"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift włączony"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock włączony"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Tryb symboli"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Tryb dodatkowych symboli"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Tryb liter"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Tryb telefonu"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Tryb symboli telefonu"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Klawiatura ukryta"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Pokazuję klawiaturę w trybie <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"data i godzina"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"SMS"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"liczba"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"tekst"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"godzina"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"adres URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Niedawne"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Osoby"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Obiekty"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Przyroda"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Miejsca"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symbole"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikony"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Wielka litera <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Wielka litera I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Wielka litera I z kropką"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Nieznany symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Nieznany emotikon"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatywne znaki są dostępne"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatywne znaki zostały zamknięte"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatywne propozycje są dostępne"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatywne propozycje zostały zamknięte"</string>
+</resources>
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index c78674a..af1d2ce 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -21,19 +21,24 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opcje wprowadzania"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Polecenia dziennika badań"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Przeszukaj kontakty"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Sprawdzanie pisowni bierze pod uwagę wpisy z listy kontaktów."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Wibracja przy naciśnięciu"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Dźwięk przy naciśnięciu"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Powiększ po naciśnięciu"</string>
-    <string name="general_category" msgid="1859088467017573195">"Ogólne"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Poprawianie tekstu"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Pisanie gestami"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Inne opcje"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Ustawienia zaawansowane"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opcje dla ekspertów"</string>
-    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Włącz inne metody wprowadzania"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Inne metody wprowadzania"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Klawisz zmiany języka obejmuje też inne metody wprowadzania"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Klawisz zmiany języka"</string>
     <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Pokaż, gdy włączonych jest kilka języków wprowadzania"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Ustawienie domyślne"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Proponuj osoby z kontaktów"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"W propozycjach i poprawkach użyj nazwisk z kontaktów"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Spersonalizowane sugestie"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Popraw aplikację <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Szybka kropka ze spacją"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dwukrotne kliknięcie spacji wstawia kropkę ze spacją"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Wstawiaj wielkie litery"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Pokazuj ślad gestu"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamiczny podgląd słowa"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Podczas gestykulacji będzie widoczne podpowiadane słowo"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Zapisano"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Podłącz zestaw słuchawkowy, aby usłyszeć znaki hasła wypowiadane na głos."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Aktualny tekst: %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nie wprowadzono tekstu"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> poprawia <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> wykonuje autokorektę"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Kod klawisza: %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift włączony (kliknij, by wyłączyć)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock włączony (kliknij, by wyłączyć)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Usuń"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symbole"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Litery"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Liczby"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Ustawienia"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Spacja"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Rozpoznawanie mowy"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Uśmiechnięta buźka"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Szukaj"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punkt"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Przełącz język"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Dalej"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Wstecz"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift włączony"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock włączony"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift wyłączony"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Tryb symboli"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Tryb liter"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Tryb telefonu"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Tryb symboli telefonu"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Klawiatura ukryta"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Pokazuję klawiaturę w trybie <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"data"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"data i godzina"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"SMS"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"liczba"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"tekst"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"godzina"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gest wyrażenia"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Wpisuj spacje podczas gestów, przesuwając palec do klawisza spacji"</string>
     <string name="voice_input" msgid="3583258583521397548">"Klawisz rozpoznawania mowy"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na klawiaturze głównej"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na klawiaturze z symbolami"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Wyłącz"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofon na klawiaturze głównej"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofon na klawiaturze z symbolami"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Rozpoznawanie mowy jest wyłączone"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nie włączono żadnych metod wprowadzania głosowego. Sprawdź ustawienia języka i wprowadzania."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfiguruj metody wprowadzania"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Języki wprowadzania"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Prześlij opinię"</string>
     <string name="select_language" msgid="3693815588777926848">"Języki wprowadzania"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Dotknij ponownie, aby zapisać"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Słownik dostępny"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Włącz przesyłanie opinii użytkownika"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Pomóż ulepszyć edytor wprowadzania tekstu, automatycznie wysyłając statystyki użycia i raporty o awariach."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Motyw klawiatury"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"angielski (Wielka Brytania)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"angielski (Stany Zjednoczone)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"hiszpański (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angielski (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angielski (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"hiszpański (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradycyjny)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Angielski (Wielka Brytania) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Angielski (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Hiszpański (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradycyjny)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cyrylica)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (alfabet łaciński)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Bez języka (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emotikony"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Schemat kolorów"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Biały"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Niebieski"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Style niestandardowe"</string>
     <string name="add_style" msgid="6163126614514489951">"Dodaj styl"</string>
     <string name="add" msgid="8299699805688017798">"Dodaj"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Włącz"</string>
     <string name="not_now" msgid="6172462888202790482">"Nie teraz"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Taki styl wprowadzania już istnieje: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Tryb badania przydatności"</string>
-    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Opóźn. przy przytrzym. przycisku"</string>
-    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Czas wibr. przy naciśn. przycisku"</string>
-    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Głośność przy naciśn. przycisku"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Opóźnienie przy długim naciśnięciu"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Wibracja przy naciśniętym klawiszu"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Głośność przy naciśniętym klawiszu"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Odczyt zewnętrznego pliku słownika"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Brak plików słownika w folderze Pobrane pliki"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Wybierz plik słownika do zainstalowania"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Czy na pewno zainstalować ten plik dla języka: <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Czy na pewno zainstalować ten plik dla języka: <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Wystąpił błąd"</string>
     <string name="button_default" msgid="3988017840431881491">"Domyślne"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Witamy w aplikacji <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Odśwież"</string>
     <string name="last_update" msgid="730467549913588780">"Ostatnia aktualizacja"</string>
     <string name="message_updating" msgid="4457761393932375219">"Sprawdzanie dostępności aktualizacji"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Wczytuję..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Wczytuję…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Słownik główny"</string>
     <string name="cancel" msgid="6830980399865683324">"Anuluj"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Ustawienia"</string>
     <string name="install_dict" msgid="180852772562189365">"Zainstaluj"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Anuluj"</string>
     <string name="delete_dict" msgid="756853268088330054">"Usuń"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Dla języka, którego używasz na swoim urządzeniu przenośnym, jest dostępny słownik.&lt;br/&gt; Warto &lt;b&gt;pobrać&lt;/b&gt; ten słownik <xliff:g id="LANGUAGE">%1$s</xliff:g>, by ułatwić sobie pisanie.&lt;br/&gt; &lt;br/&gt; Pobieranie trwa do dwóch minut (przez 3G). Jeśli nie masz &lt;b&gt;abonamentu z nieograniczoną transmisją danych&lt;/b&gt;, operator może naliczyć opłatę.&lt;br/&gt; Jeśli nie wiesz, jaki masz abonament, połącz się z Wi-Fi, by automatycznie rozpocząć pobieranie.&lt;br/&gt; &lt;br/&gt; Wskazówka: słowniki możesz pobierać i usuwać na urządzeniu w sekcji &lt;b&gt;Język, klawiatura, głos&lt;/b&gt; w menu &lt;b&gt;Ustawienia&lt;/b&gt;."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Do języka, którego używasz na swoim urządzeniu przenośnym, jest dostępny słownik.&lt;br/&gt; Warto &lt;b&gt;pobrać&lt;/b&gt; ten słownik <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>, by ułatwić sobie pisanie.&lt;br/&gt; &lt;br/&gt; Pobieranie trwa do dwóch minut (przez 3G). Jeśli nie masz &lt;b&gt;abonamentu z nieograniczoną transmisją danych&lt;/b&gt;, operator może naliczyć opłatę.&lt;br/&gt; Jeśli nie wiesz, jaki masz abonament, połącz się z Wi-Fi, by automatycznie rozpocząć pobieranie.&lt;br/&gt; &lt;br/&gt; Wskazówka: słowniki możesz pobierać i usuwać w sekcji &lt;b&gt;Język, klawiatura, głos&lt;/b&gt; w menu &lt;b&gt;Ustawienia&lt;/b&gt; na urządzeniu."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Pobierz teraz (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Pobierz przez Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Dostępny jest słownik <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Dostępny jest słownik <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Naciśnij, by sprawdzić i pobrać"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Pobieranie – wkrótce będą dostępne sugestie w tym języku: <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Pobieranie – wkrótce będą dostępne sugestie w tym języku: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="version_text" msgid="2715354215568469385">"Wersja <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Dodaj"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Dodaj do słownika"</string>
diff --git a/java/res/values-port/setup-dimens-small-phone-port.xml b/java/res/values-port/setup-dimens-small-phone-port.xml
index 8ac72ea..cf2751f 100644
--- a/java/res/values-port/setup-dimens-small-phone-port.xml
+++ b/java/res/values-port/setup-dimens-small-phone-port.xml
@@ -20,7 +20,6 @@
     <dimen name="setup_welcome_description_text_size">20sp</dimen>
     <dimen name="setup_step_bullet_text_size">18sp</dimen>
     <dimen name="setup_step_triangle_indicator_height">18dp</dimen>
-    <dimen name="setup_step_indicator_height">18dp</dimen>
     <dimen name="setup_step_title_text_size">18sp</dimen>
     <dimen name="setup_step_instruction_text_size">14sp</dimen>
     <dimen name="setup_step_action_text_size">16sp</dimen>
diff --git a/java/res/values-pt-rPT/strings-action-keys.xml b/java/res/values-pt-rPT/strings-action-keys.xml
index 7a7559f..73a6c49 100644
--- a/java/res/values-pt-rPT/strings-action-keys.xml
+++ b/java/res/values-pt-rPT/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Ant."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Conc."</string>
     <string name="label_send_key" msgid="482252074224462163">"Env."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Pesquisar"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pausa"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Esp."</string>
 </resources>
diff --git a/java/res/values-pt-rPT/strings-config-important-notice.xml b/java/res/values-pt-rPT/strings-config-important-notice.xml
new file mode 100644
index 0000000..38e2499
--- /dev/null
+++ b/java/res/values-pt-rPT/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprender com comunicações e dados introd. para melhorar sugestões"</string>
+</resources>
diff --git a/java/res/values-pt-rPT/strings-letter-descriptions.xml b/java/res/values-pt-rPT/strings-letter-descriptions.xml
new file mode 100644
index 0000000..377b157
--- /dev/null
+++ b/java/res/values-pt-rPT/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicador ordinal feminino"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Sinal de micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicador ordinal masculino"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S curto"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, agudo"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circunflexo"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, til"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diérese"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, anel sobreposto"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligadura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilha"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, agudo"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circunflexo"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diérese"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, agudo"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circunflexo"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diérese"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, til"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, agudo"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circunflexo"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, til"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diérese"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, traço"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, agudo"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circunflexo"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diérese"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, agudo"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diérese"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, mácron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, agudo"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circunflexo"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, ponto sobreposto"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, traço"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, mácron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, ponto sobreposto"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circunflexo"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, ponto sobreposto"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilha"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circunflexo"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, traço"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, til"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, mácron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I sem ponto"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligadura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circunflexo"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilha"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, agudo"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilha"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, ponto intermédio"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, traço"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, agudo"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilha"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedido de apóstrofe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, mácron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, duplo agudo"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligadura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, agudo"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilha"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, agudo"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circunflexo"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilha"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilha"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, traço"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, til"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, mácron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, anel sobreposto"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, duplo agudo"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circunflexo"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circunflexo"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, agudo"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, ponto sobreposto"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S longo"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, chifre"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, chifre"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, vírgula subposta"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, vírgula subposta"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, ponto subposto"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circunflexo e grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circunflexo e gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circunflexo e ponto subposto"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve e agudo"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve e grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve e gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve e til"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve e ponto subposto"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, ponto subposto"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, til"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circunflexo e grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circunflexo e gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circunflexo e ponto subposto"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, ponto subposto"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, ponto subposto"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circunflexo e grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circunflexo e gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circunflexo e ponto subposto"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, chifre e agudo"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, chifre e grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, chifre e gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, chifre e til"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, chifre e ponto subposto"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, ponto subposto"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, chifre e agudo"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, chifre e grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, chifre e gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, chifre e til"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, chifre e ponto subposto"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, ponto subposto"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, gancho sobreposto"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, til"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Ponto de exclamação invertido"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Aspas angulares duplas esquerdas"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Ponto intermédio"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Um sobrescrito"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Aspas angulares duplas direitas"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Ponto de interrogação invertido"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Aspa simples esquerda"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Aspa simples direita"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Aspa simples subposta"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Aspas duplas esquerdas"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Aspas duplas direitas"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Adaga"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Adaga dupla"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Sinal de permilagem"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Plica"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Plica dupla"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Aspa angular simples esquerda"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Aspa angular simples direita"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Quatro sobrescrito"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"N latino minúsculo sobrescrito"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Sinal de peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Ao cuidado de"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Seta para a direita"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Seta para baixo"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Conjunto vazio"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Delta"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menor do que ou igual a"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Maior do que ou igual a"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Estrela negra"</string>
+</resources>
diff --git a/java/res/values-pt-rPT/strings-talkback-descriptions.xml b/java/res/values-pt-rPT/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..30bbd3f
--- /dev/null
+++ b/java/res/values-pt-rPT/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Ligar auscultadores com microfone integrado para ouvir as teclas da palavra-passe."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"O texto atual é %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nenhum texto digitado"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> para <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> executa a correção automática"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Caráter desconhecido"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Mais símbolos"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Símbolos"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Eliminar"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Símbolos"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letras"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Números"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Definições"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Separador"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espaço"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Entrada de voz"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Voltar"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Pesquisar"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Ponto"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Mudar de idioma"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Seguinte"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ativado"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock ativado"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo de símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modo Mais símbolos"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo de letras"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo de telemóvel"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo de símbolos de telemóvel"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Teclado oculto"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"A mostrar o teclado de <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"data e hora"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mensagens"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"números"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telemóvel"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"texto"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"hora"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recentes"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Pessoas"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objetos"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natureza"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Locais"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Ícones expressivos"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiúsculo"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiúsculo"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiúsculo, ponto sobreposto"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconhecido"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconhecido"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Os carateres alternativos estão disponíveis"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Os carateres alternativos são ignorados"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"As sugestões alternativas estão disponíveis"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"As sugestões alternativas são ignoradas"</string>
+</resources>
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index c277581..4c7f486 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opções de introdução"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Comandos de Reg. Invest."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Procurar nomes de contac."</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"O corretor ortográfico utiliza entradas da sua lista de contactos"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao primir as teclas"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao premir as teclas"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Mostrar popup ao premir tecla"</string>
-    <string name="general_category" msgid="1859088467017573195">"Geral"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Correção de texto"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Escrita por toque"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Outras opções"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Definições avançadas"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opções para especialistas"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Mudar p/ outros mét. ent."</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla de mudança de idioma abrange outros métodos de entrada"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla alterar idioma"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Predef. do sistema"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sugerir nomes de Contactos"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizar nomes dos Contactos para sugestões e correções"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Sugestões personalizadas"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Melhorar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Ponto de espaço duplo"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Tocar duas vezes na barra espaço insere ponto seguido de espaço"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Letras maiúsculas automáticas"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostrar percurso do gesto"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Pré-visual. flutuante dinâmica"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Ver palavra sugerida enquanto toca"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: guardada"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Ligar auscultadores com microfone integrado para ouvir as teclas da palavra-passe."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"O texto atual é %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nenhum texto digitado"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> para <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> executa correção automática"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Código da tecla %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift ativado (tocar para desativar)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock ativado (tocar para desativar)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Símbolos"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letras"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Números"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Definições"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Espaço"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Cara sorridente"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Pesquisar"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Ponto"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Mudar de idioma"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Seguinte"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Anterior"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift ativado"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock ativado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift desativado"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Modo de símbolos"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo de letras"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo de telemóvel"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo de símbolos de telemóvel"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Teclado oculto"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"A mostrar teclado de <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"data"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"data e hora"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"mensagens"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"números"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telemóvel"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"texto"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URLs"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Toque de expressão"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Deslize p/ a tecla de espaço p/ introduzir espaços durante toques"</string>
     <string name="voice_input" msgid="3583258583521397548">"Chave de entrada de voz"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"No teclado principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"No teclado símbolos"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Desligar"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. tecl. principal"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. tecl. símbolos"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Entr. voz desact."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nenhum método de entrada de texto por voz ativado. Verifique as definições de Idioma e introdução."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de introdução"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Enviar comentários"</string>
     <string name="select_language" msgid="3693815588777926848">"Idiomas de introdução"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toque novamente para guardar"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Ativar comentários do utilizador"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Envie automaticamente estatísticas de utilização e relatórios de falhas e ajude-nos a melhorar este editor do método de introdução."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Inglês (RU)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Inglês (EUA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Espanhol (EUA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglês (RU) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglês (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Espanhol (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Tradicional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglês (RU) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglês (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Espanhol (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cirílico)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latim)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Sem idioma (alfabeto)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeto (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeto (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Esquema de cor"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Branco"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Azul"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos entrada pers."</string>
     <string name="add_style" msgid="6163126614514489951">"Adic. estilo"</string>
     <string name="add" msgid="8299699805688017798">"Adicionar"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Ativar"</string>
     <string name="not_now" msgid="6172462888202790482">"Agora não"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Já existe o mesmo estilo de introdução: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo da capacidade de utilização"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Atraso ao manter tecla premida"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Duração vibr. ao premir teclas"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume do som ao premir teclas"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Ler ficheiro de dicionário externo"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Não há ficheiros de dicionário na pasta Transferências"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selecione um ficheiro de dicionário para instalar"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Instalar mesmo este ficheiro para <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Instalar mesmo este ficheiro para <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Ocorreu um erro"</string>
     <string name="button_default" msgid="3988017840431881491">"Predefinido"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Bem-vindo(a) a <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Atualizar"</string>
     <string name="last_update" msgid="730467549913588780">"Última atualização"</string>
     <string name="message_updating" msgid="4457761393932375219">"A verificar existência de atualizações"</string>
-    <string name="message_loading" msgid="8689096636874758814">"A carregar..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"A carregar…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Dicionário principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Definições"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalar"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
     <string name="delete_dict" msgid="756853268088330054">"Eliminar"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"O idioma selecionado no dispositivo móvel tem um dicionário disponível.&lt;br/&gt; Recomendamos que &lt;b&gt;transfira&lt;/b&gt; o dicionário de <xliff:g id="LANGUAGE">%1$s</xliff:g> para melhorar a sua experiência de introdução de texto.&lt;br/&gt; &lt;br/&gt; A transferência pode demorar um ou dois minutos acima de 3G. Poderão ser aplicadas taxas se não tiver um &lt;b&gt;plano de dados ilimitado&lt;/b&gt;.&lt;br/&gt; Se não tiver a certeza do plano de dados que tem, recomendamos que localize uma ligação Wi-Fi para começar a transferência automaticamente.&lt;br/&gt; &lt;br/&gt; Sugestão: pode transferir e remover dicionários acedendo a &lt;b&gt;Idioma e introdução&lt;/b&gt; no menu &lt;b&gt;Definições&lt;/b&gt; do disp. móvel."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"O idioma selecionado no disp. móvel tem um dicionário disponível.&lt;br/&gt; Recomendamos que &lt;b&gt;transfira&lt;/b&gt; o dicionário de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> para melhorar a sua experiência de introdução de texto.&lt;br/&gt; &lt;br/&gt; A transferência pode demorar um ou dois minutos através de 3G. Poderão ser aplicadas taxas se não tiver um &lt;b&gt;plano de dados ilimitado&lt;/b&gt;.&lt;br/&gt; Se não tiver a certeza do plano de dados que tem, recomendamos que procure uma ligação Wi-Fi para começar a transferência automaticamente.&lt;br/&gt; &lt;br/&gt; Sugestão: Pode transferir e remover dicionários acedendo a &lt;b&gt;Idioma e introdução&lt;/b&gt; no menu &lt;b&gt;Definições&lt;/b&gt; do disp. móvel."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Transferir agora (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Transferir via Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Está disponível um dicionário para <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Está disponível um dicionário de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Prima para consultar e transferir"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"A transferir: as sugestões para <xliff:g id="LANGUAGE">%1$s</xliff:g> estarão prontas em breve."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"A transferir: as sugestões para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> estarão prontas em breve"</string>
     <string name="version_text" msgid="2715354215568469385">"Versão <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Adicionar"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Adicionar ao dicionário"</string>
diff --git a/java/res/values-pt/strings-action-keys.xml b/java/res/values-pt/strings-action-keys.xml
index 1d8e760..5c83665 100644
--- a/java/res/values-pt/strings-action-keys.xml
+++ b/java/res/values-pt/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Ant."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Conc."</string>
     <string name="label_send_key" msgid="482252074224462163">"Env."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Pesquisar"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pausa"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Esp."</string>
 </resources>
diff --git a/java/res/values-pt/strings-config-important-notice.xml b/java/res/values-pt/strings-config-important-notice.xml
new file mode 100644
index 0000000..86af5ff
--- /dev/null
+++ b/java/res/values-pt/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Aprender com mensagens e dados digitados para melhorar sugestões"</string>
+</resources>
diff --git a/java/res/values-pt/strings-emoji-descriptions.xml b/java/res/values-pt/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..84e2cc0
--- /dev/null
+++ b/java/res/values-pt/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Símbolo de copyright"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Símbolo de marca registrada"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Ponto de exclamação duplo"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Ponto de exclamação e ponto de interrogação"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Símbolo de marca comercial"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Fonte de informação"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Seta para esquerda e para direita"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Seta para cima e para baixo"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Seta para o noroeste"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Seta para o nordeste"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Seta para o sudeste"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Seta para o sudoeste"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Seta para a esquerda com gancho"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Seta para a direita com gancho"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Relógio de pulso"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Ampulheta"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Triângulo duplo preto para a direita"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Triângulo duplo preto para a esquerda"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Triângulo duplo preto para cima"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Triângulo duplo preto para baixo"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Despertador"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Ampulheta com areia correndo"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Letra M maiúscula contida em círculo"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Quadrado pequeno preto"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Quadrado pequeno branco"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Triângulo preto para a direita"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Triângulo preto para a esquerda"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Quadrado médio branco"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Quadrado médio preto"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Quadrado médio branco"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Quadrado médio preto"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Sol preto com raios"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Nuvem"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Telefone preto"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Urna de votação com marca de verificação"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Guarda-chuva com gotas de chuva"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Bebida quente"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Dedo indicador branco apontando para cima de frente"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Rosto sorridente branco"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Áries"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Touro"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Gêmeos"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Câncer"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leão"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Virgem"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Libra"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Escorpião"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Sagitário"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Capricórnio"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Aquário"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Peixes"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Naipe preto de espadas"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Naipe preto de paus"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Naipe preto de copas"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Naipe preto de ouros"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Águas termais"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Símbolo de reciclagem universal preto"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Símbolo de cadeira de rodas"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Âncora"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Sinal de aviso"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Sinal de alta tensão"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Círculo branco médio"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Círculo preto médio"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Bola de futebol"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Bola de beisebol"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Boneco de neve sem neve"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Sol atrás da nuvem"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Serpentário"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Entrada proíbida"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Igreja"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fonte"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Bandeira no buraco"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Barco a vela"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Barraca"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Bomba de combustível"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Tesoura preta"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Marca de verificação grossa branca"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Avião"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Envelope"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Punho levantado"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Mão levantada"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Mão de vitória"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Lápis"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Ponta de caneta-tinteiro preta"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Marca de verificação grossa"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Sinal de multiplicação x grosso"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Brilhos"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Asterisco de oito pontas"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Estrela preta de oito pontas"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Floco de neve"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Brilho"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Sinal de cruzamento"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"egativo de sinal de cruzamento contido em quadrado"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Ornamento de ponto de interrogação preto"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Ornamento de ponto de interrogação branco"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Ornamento de ponto de exclamação branco"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Símbolo de ponto de exclamação grosso"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Coração preto grosso"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Sinal de adição grosso"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Sinal de subtração grosso"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Sinal de divisão grosso"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Seta para a direita preta"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Laçada"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Laçada dupla"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Seta para a direita com curva para cima"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Seta para a direita com curva para baixo"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Seta preta para a esquerda"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Seta preta para cima"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Seta preta para baixo"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Quadrado grande preto"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Quadrado grande branco"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Estrela média branca"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Círculo grande grosso"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Traço ondulado"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Marca de alternação de parte"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Ideograma \"parabéns\" contido em círculo"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Ideograma \"segredo\" contido em círculo"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Pedra de mahjong do dragão vermelho"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Curinga preto de baralho"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Tipo sanguíneo A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Tipo sanguíneo B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Tipo sanguíneo O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Estacionamento"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Tipo sanguíneo AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"\"CL\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"\"COOL\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"\"‘FREE\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"\"ID\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"\"NEW\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"\"NG\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"\"OK\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"\"SOS\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"\"UP!\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"\"VS\" em letras de fôrma"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"Caracteres koko em katakana contidos em quadrado"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"Caractere sa em katakana contido em quadrado"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Ideograma \"gratuito\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Ideograma \"lugar reservado\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Ideograma \"proibição\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Ideograma \"vaga\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Ideograma \"aceitação\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Ideograma \"lotação esgotada\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Ideograma \"pago\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Ideograma \"mensal\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Ideograma \"aplicação\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Ideograma \"desconto\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Ideograma \"em atividade\" contido em quadrado"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Ideograma \"vantagem\" contido em círculo"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Ideograma \"aceitar\" contido em círculo"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Ciclone"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Enevoado"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Guarda-chuva fechado"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Noite estrelada"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Nascer do sol nas montanhas"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Nascer do sol"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Cidade ao entardecer"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Pôr do sol nos prédios"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Arco-íris"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Ponte à noite"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Onda do mar"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Vulcão"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Via Láctea"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Globo terrestre Europa/África"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Globo terrestre Américas"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Globo terrestre Ásia/Austrália"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Globo com meridianos"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Símbolo da lua nova"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Símbolo da lua crescente"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Símbolo da lua em quarto crescente"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Símbolo da lua crescente gibosa"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Símbolo da lua cheia"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Símbolo da lua minguante gibosa"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Símbolo da lua em quarto minguante"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Símbolo da lua minguante"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Lua crescente"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Lua nova com rosto"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Lua em quarto crescente com rosto"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Lua em quarto minguante com rosto"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Lua cheia com rosto"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Sol com rosto"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Estrela brilhante"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Estrela cadente"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Castanha"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Muda"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Árvore perenifólia"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Árvore decídua"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palmeira"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Cacto"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Tulipa"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Flor de cerejeira"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Rosa"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hibisco"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Girassol"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Florescência"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Espiga de milho"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Espiga de arroz"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Erva"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Trevo de quatro folhas"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Folha de bordo"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Folha caída"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Folha ao sabor do vento"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Cogumelo"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Tomate"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Berinjela"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Uvas"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Melão"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Melancia"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Tangerina"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Limão"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banana"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Abacaxi"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Maçã vermelha"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Maçã verde"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Pera"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Pêssego"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Cerejas"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Morango"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hambúrguer"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Fatia de pizza"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Carne com osso"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Coxa de frango"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Biscoito de arroz japonês"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Bolinho de arroz japonês"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Arroz cozido"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Arroz com curry"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Tigela quente"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Espaguete"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Pão"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Batatas fritas"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Batata doce assada"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Camarão frito"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Kamaboko com design de espiral"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Sorvete de massa"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Raspadinha"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Sorvete"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Rosquinha"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Cookie"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Barra de chocolate"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Doce"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Pirulito"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Flan"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Pote de mel"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Torta"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Marmiteira bento"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Tigela de comida"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Cozinha"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Garfo e faca"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Xícara sem asa"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Garrafa e copo para saquê"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Copo para vinho"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Copo para coquetel"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Bebida tropical"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Caneca de cerveja"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Canecas de cerveja brindando"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Mamadeira"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Fita de presente"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Presente embrulhado"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Bolo de aniversário"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack Lanterna"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Árvore de Natal"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Papai Noel"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Fogos de artifício"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Estrelinha"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Balão"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Lança confetes"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Bola de confetes"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Árvore de Tanabata"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Bandeiras cruzadas"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Decoração Kadomatsu"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Bonecas japonesas"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Biruta de carpa Koinobori"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Sinos de vento"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Cerimônia de contemplação da lua Otsukimi"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Mochila escolar"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Capelo"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Carrossel de cavalinho"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Roda-gigante"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Montanha russa"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Vara de pescar e peixe"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Microfone"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Câmera cinematográfica"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Cinema"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Fone de ouvido"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Aquarela"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Cartola"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Tenda de circo"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Ingresso"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Claquete"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Artes cênicas"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Videogame"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Bela pontaria"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Caça-níqueis"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Bilhar"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Dados"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Boliche"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Baralho temático de flores"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Nota musical"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Várias notas musicais"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saxofone"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Guitarra"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Teclado musical"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trompete"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Violino"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Partitura"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Camiseta de corrida com faixa"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Raquete e bola de tênis"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Esqui e bota de esqui"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Bola de basquete e cesto"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Bandeira xadrez"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Snowboarder"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Corredor"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Surfista"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Troféu"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Corridas de cavalos"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Futebol americano"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Bola de rugby"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Nadador"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Construção de casas"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Casa com jardim"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Edifício comercial"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Correio japonês"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Correio europeu"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Hospital"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Banco"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Caixa eletrônico"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Motel"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Loja de conveniência"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Escola"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Loja de departamentos"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Fábrica"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Luminária izakaya"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Castelo japonês"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Castelo europeu"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Rato"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Camundongo"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Boi"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Búfalo asiático"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Vaca"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopardo"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Coelho"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Gato"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Dragão"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Crocodilo"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Baleia"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Caracol"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Serpente"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Cavalo"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Carneiro"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Cabra"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Ovelha"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Macaco"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Galo"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Galinha"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Cachorro"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Porco"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Javali"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Elefante"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Polvo"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Concha espiral"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Inseto"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Formiga"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Abelha"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Joaninha"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Peixe"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Peixe tropical"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Peixe-balão"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Tartaruga"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Pintinho nascendo"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Pintinho"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Pintinho de frente"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Pássaro"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Pinguim"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Coala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Poodle"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Dromedário"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Camelo bactriano"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Golfinho"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Smiley de rato"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Smiley de vaca"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Smiley de tigre"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Smiley de coelho"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Smiley de gato"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Smiley de dragão"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Baleia jorrando água"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Smiley de cavalo"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Smiley de macaco"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Smiley de cachorro"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Smiley de porco"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Smiley de sapo"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Smiley de porquinho-da-índia"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Smiley de lobo"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Smiley de urso"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Smiley de panda"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Focinho de porco"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Pegadas de patas"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Olhos"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Orelha"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nariz"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Boca"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Língua"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Dedo indicador branco apontando para cima"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Dedo indicador branco apontando para baixo"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Dedo indicador branco apontando para a esquerda"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Dedo indicador branco apontando para a direita"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Sinal de mão em punho"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Sinal de mão acenando"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Sinal de mão indicando OK"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Sinal com polegar para cima"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Sinal com polegar para baixo"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Sinal de bater palmas"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Sinal de mãos abertas"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Coroa"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Chapéu de mulher"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Óculos de grau"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Gravata"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Camiseta"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Calça jeans"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Vestido"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Quimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Biquíni"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Roupas de mulher"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Bolsinha"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Bolsa"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Bolsa saco"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Sapato masculino"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Tênis"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Sapato de salto alto"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Sandália feminina"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Botas femininas"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Pegadas"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Busto em silhueta"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Bustos em silhueta"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Menino"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Menina"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Homem"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Mulher"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Família"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Homem e mulher de mãos dadas"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Dois homens de mãos dadas"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Duas mulheres de mãos dadas"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Policial"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Mulher com orelhas de coelho"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Noiva com véu"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Pessoa loira"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Homem com gua pi mao"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Homem com turbante"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Idoso"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Idosa"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Bebê"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Operário de construção civil"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Princesa"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Ogro japonês"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Gnomo japonês"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Fantasma"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Anjo bebê"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Alienígena"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Monstro alienígena"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Duende"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Caveira"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Recepcionista de balcão de informações"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Guarda"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Dançarina"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Batom"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Esmalte"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Massagem facial"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Corte de cabelo"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Poste de barbearia"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Seringa"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Comprimido"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Marca de beijo"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Carta de amor"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Anel"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Gema"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Beijo"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Buquê"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Casal com coração"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Casamento"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Coração batendo"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Coração partido"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Dois corações"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Coração brilhando"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Coração crescendo"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Coração com flecha"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Coração azul"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Coração verde"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Coração amarelo"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Coração roxo"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Coração com fita"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Corações em círculo"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Decoração de coração"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Forma de losango com ponto interno"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Lâmpada elétrica"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Símbolo de raiva"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bomba"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Símbolo de sono"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Símbolo de colisão"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Símbolo da gota de suor"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Gota"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Símbolo de traço"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Cocô"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Bíceps contraídos"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Símbolo de tontura"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Balão de fala"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Balão de pensamento"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Flor branca"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Símbolo de cem pontos"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Saco de dinheiro"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Câmbio de moeda"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Sinal de cifrão grosso"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Cartão de crédito"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Nota bancária com sinal de iene"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Nota bancária com sinal de dólar"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Nota bancária com sinal de euro"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Nota bancária com sinal de libra"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Dinheiro com asas"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Gráfico com tendência ascendente e símbolo de iene"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Assento"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Computador pessoal"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Valise"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisco"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Disquete"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Disco óptico"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Pasta de arquivos"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Pasta de arquivos aberta"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Página com curva"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Página voltada para cima"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Calendário"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Calendário destacável"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Índice de cartões"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Gráfico com tendência ascendente"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Gráfico com tendência descendente"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Gráfico de barras"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Prancheta"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Alfinete"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Alfinete redondo"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Clipe de papel"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Régua reta"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Régua triangular"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Guias de marca-página"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Livro-razão"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Bloco de anotações"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Bloco de anotações com capa decorativa"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Livro fechado"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Livro aberto"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Livro verde"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Livro azul"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Livro laranja"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Livros"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Crachá"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Pergaminho"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memorando"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telefone"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Pager"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Aparelho de fax"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Antena de satélite"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Alto-falante para discursos públicos"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Megafone em uso"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Bandeja da caixa de saída"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Bandeja da caixa de entrada"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Pacote"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Símbolo de e-mail"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Envelope recebido"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Envelope com seta para baixo"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Caixa de correio fechada com bandeira abaixada"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Caixa de correio fechada com bandeira levantada"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Caixa de correio aberta com bandeira levantada"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Caixa de correio aberta com bandeira abaixada"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Caixa de correio"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Corneta de correio"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Jornal"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Celular"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Celular com seta para a direita"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Modo de vibração"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Celular desligado"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Proibido usar celular"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antena com barras"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Câmera"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Filmadora"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Televisão"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Rádio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videocassete"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Setas entrelaçadas para a direita"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Setas para a esquerda e para a direita em sentido horário"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Setas para a esquerda e para a direita em sentido horário com \"1\""</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Setas para baixo e para cima em sentido horário"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Setas para baixo e para cima em sentido anti-horário"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Símbolo de baixo brilho"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Símbolo de alto brilho"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Alto-falante cortado"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Alto-falante"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Alto-falante com onda sonora"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Alto-falante com três ondas sonoras"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Bateria"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Tomada elétrica"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Lente de aumento virada para a esquerda"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Lente de aumento virada para a direita"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Cadeado com caneta-tinteiro"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Cadeado fechado com chave"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Chave"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Cadeado"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Cadeado aberto"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Sino"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Sino cortado"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Marca-página"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Símbolo de link"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Botão de opção"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"\"Back\" com seta para a esquerda"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"\"End\" com seta para a esquerda"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"\"On!\" com seta para a esquerda e para a direita"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"\"Soon\" com seta para a direita"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"\"Top\" com seta para cima"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Símbolo de proibido para menores de 18"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Tecla do dez"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Símbolo de entrada de letras latinas maiúsculas"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Símbolo de entrada de letras latinas minúsculas"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Símbolo de entrada de números"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Símbolo de entrada de símbolos"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Símbolo de entrada de letras latinas"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Fogo"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Tocha elétrica"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Chave inglesa"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Martelo"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Porca e parafuso"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Facão"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistola"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Microscópio"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Telescópio"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Bola de cristal"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Estrela de seis pontas com ponto central"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Símbolo japonês para iniciante"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Emblema de tridente"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Botão quadrado preto"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Botão quadrado branco"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Círculo grande vermelho"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Círculo grande azul"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Losango grande laranja"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Losango grande azul"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Losango pequeno laranja"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Losango pequeno azul"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Triângulo vermelho apontando para cima"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Triângulo vermelho apontando para baixo"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Triângulo pequeno vermelho apontando para cima"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Triângulo pequeno vermelho apontando para baixo"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Relógio mostrando 01h00"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Relógio mostrando 02h00"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Relógio mostrando 03h00"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Relógio mostrando 04h00"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Relógio mostrando 05h00"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Relógio mostrando 06h00"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Relógio mostrando 07h00"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Relógio mostrando 08h00"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Relógio mostrando 09h00"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Relógio mostrando 10h00"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Relógio mostrando 11h00"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Relógio mostrando 12h00"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Relógio mostrando 01h30"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Relógio mostrando 02h30"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Relógio mostrando 03h30"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Relógio mostrando 04h30"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Relógio mostrando 05h30"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Relógio mostrando 06h30"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Relógio mostrando 07h30"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Relógio mostrando 08h30"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Relógio mostrando 09h30"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Relógio mostrando 10h30"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Relógio mostrando 11h30"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Relógio mostrando 12h30"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Monte Fuji"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Torre de Tóquio"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Estátua da Liberdade"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Silhueta do Japão"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Rosto mostrando os dentes"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Rosto mostrando os dentes com olhos sorridentes"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Rosto com lágrimas de alegria"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Rosto sorridente com boca aberta"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Rosto sorridente com boca aberta e olhos sorridentes"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Rosto sorridente com boca aberta e suando frio"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Rosto sorridente com boca aberta e olhos bem fechados"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Rosto sorridente com auréola"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Rosto sorridente com chifres"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Rosto com olho piscando"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Rosto sorridente com olhos sorridentes"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Rosto saboreando comida deliciosa"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Rosto aliviado"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Rosto sorridente com olhos de coração"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Rosto sorridente com óculos de sol"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Rosto com meio sorriso"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Rosto neutro"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Rosto sem expressão"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Rosto de desinteressado"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Rosto suando frio"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Rosto pensativo"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Rosto confuso"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Rosto desconcertado"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Rosto beijando"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Rosto jogando beijo"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Rosto beijando com olhos sorridentes"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Rosto beijando com olhos fechados"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Rosto com língua de fora"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Rosto com língua de fora e piscando"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Rosto com língua de fora e olhos bem fechados"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Rosto de frustrado"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Rosto preocupado"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Rosto nervoso"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Rosto de desaprovação"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Rosto chorando"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Rosto de perseverante"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Rosto com aparência de triunfo"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Rosto com misto de decepção e alívio"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Rosto franzido com boca aberta"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Rosto angustiado"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Rosto temeroso"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Rosto fatigado"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Rosto sonolento"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Rosto cansado"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Rosto mostrando os dentes"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Rosto chorando alto"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Rosto com boca aberta"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Rosto silenciado"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Rosto com boca aberta e suando frio"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Rosto gritando de medo"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Rosto surpreso"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Rosto enrubescido"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Rosto dormindo"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Rosto tonto"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Rosto sem boca"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Rosto com máscara hospitalar"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Smiley de gato feliz com olhos sorridentes"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Smiley de gato com lágrimas de alegria"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Smiley de gato sorridente com boca aberta"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Smiley de gato sorridente com olhos de coração"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Smiley de gato com sorriso maroto"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Smiley de gato beijando com olhos fechados"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Smiley de gato de desaprovação"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Smiley de gato chorando"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Smiley de gato fatigado"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Smiley com gesto de reprovação"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Smiley com gesto de ok"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Pessoa curvando-se bastante"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Macaco cego"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Macaco surdo"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Macaco mudo"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Pessoa feliz levantando uma mão"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Pessoa levantando as mãos em comemoração"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Pessoa franzindo a testa"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Pessoa com rosto de desaprovação"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Pessoa com mãos unidas em oração"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Foguete"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helicóptero"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Locomotiva a vapor"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Vagão"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Trem de alta velocidade"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Trem-bala de alta velocidade"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Trem"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metrô"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Metrô leve"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Estação"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Bonde"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Elétrico"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Ônibus"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Ônibus de frente"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Trólebus"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Ponto de ônibus"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Micro-ônibus"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulância"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Caminhão de bombeiros"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Viatura policial"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Viatura policial de frente"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Táxi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Táxi de frente"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automóvel"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Automóvel de frente"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Veículo recreativo"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Caminhão de entrega"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Caminhão articulado"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Trator"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monotrilho"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Trem de montanha"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Trem suspenso"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Bondinho"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Teleférico"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Navio"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Barco a remo"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Lancha"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Semáforo horizontal"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Semáforo vertical"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Sinal de construção"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Giroflex de viaturas policiais"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Bandeira triangular em poste"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Porta"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Sinal de entrada proibida"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Símbolo de permitido fumar"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Símbolo de proibido fumar"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Símbolo de \"jogue o lixo no lixo\""</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Símbolo de proibido jogar lixo"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Símbolo de água potável"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Símbolo de água não potável"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicicleta"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Proibido bicicletas"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Ciclista"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Ciclista de montanha"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pedestre"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Proibido pedestres"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Travessia de crianças"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Símbolo masculino"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Símbolo feminino"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Banheiro"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Símbolo de bebê"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Vaso sanitário"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"WC"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Chuveiro"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Banho"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Banheira"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Controle de passaportes"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Alfândega"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Esteira de bagagem"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Bagagem abandonada"</string>
+</resources>
diff --git a/java/res/values-pt/strings-letter-descriptions.xml b/java/res/values-pt/strings-letter-descriptions.xml
new file mode 100644
index 0000000..d49d5f6
--- /dev/null
+++ b/java/res/values-pt/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicador ordinal feminino"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicador ordinal masculino"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Eszett"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, crase"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, agudo"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circunflexo"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, til"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, trema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ångström"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligadura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilha"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, crase"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, agudo"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circunflexo"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, trema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, crase"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, agudo"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circunflexo"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, trema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, til"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, crase"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, agudo"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circunflexo"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, til"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, trema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, traço"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, crase"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, agudo"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circunflexo"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, trema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, agudo"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, trema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, mácron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, bráquia"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, agudo"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circunflexo"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, ponto acima"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, traço"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, mácron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, bráquia"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, ponto acima"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circunflexo"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, bráquia"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, ponto acima"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilha"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circunflexo"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, traço"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, til"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, mácron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, bráquia"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I sem ponto"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligadura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circunflexo"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilha"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, agudo"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilha"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, ponto médio"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, traço"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, agudo"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilha"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedida por apóstrofe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, mácron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, bráquia"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, agudo duplo"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligadura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, agudo"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilha"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, agudo"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circunflexo"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilha"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilha"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, traço"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, til"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, mácron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"L, bráquia"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ångström"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, agudo duplo"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circunflexo"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circunflexo"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, agudo"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, ponto acima"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S longo"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, chifre"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, chifre"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, vírgula abaixo"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, vírgula abaixo"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, gancho acima"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circunflexo e crase"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circunflexo e gancho acima"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circunflexo e ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Um, bráquia e agudo"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, bráquia e crase"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, bráquia e gancho acima"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, bráquia e til"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, bráquia e ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, gancho acima"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, til"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circunflexo e crase"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circunflexo e gancho acima"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circunflexo e ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, gancho acima"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, ponto abaixo"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, ponto abaixo"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, gancho acima"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circunflexo e agudo"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circunflexo e crase"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circunflexo e gancho acima"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circunflexo e til"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circunflexo e ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, chifre e agudo"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, chifre e crase"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, chifre e gancho acima"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, chifre e til"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, chifre e ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, gancho acima"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, chifre e agudo"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, chifre e crase"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, chifre e gancho acima"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, chifre e til"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, chifre e ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, crase"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, ponto abaixo"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, gancho acima"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, til"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Ponto de exclamação invertido"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Aspa dupla angular esquerda"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Ponto médio"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Um sobrescrito"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Aspa dupla angular direita"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Ponto de interrogação invertido"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Aspa simples esquerda"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Aspa simples direita"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Aspa baixa simples"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Aspa dupla esquerda"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Aspa dupla direita"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Adaga"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Adaga dupla"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Sinal de \"por mil\""</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Símbolo de minutos"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Símbolo de segundos"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Aspa simples angular esquerda"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Aspa simples angular direita"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Quatro sobrescrito"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"n latina minúscula sobrescrita"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Símbolo de peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Aos cuidados de"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Seta para a direita"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Seta para baixo"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Conjunto vazio"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Incremento"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menor ou igual a"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Maior ou igual a"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Estrela preta"</string>
+</resources>
diff --git a/java/res/values-pt/strings-talkback-descriptions.xml b/java/res/values-pt/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..f4e28fc
--- /dev/null
+++ b/java/res/values-pt/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Conecte um fone de ouvido para ouvir as chaves de senha."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"O texto atual é %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nenhum texto digitado"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> para <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> realiza correção automática"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Caractere desconhecido"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Mais símbolos"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Símbolos"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Excluir"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Símbolos"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Letras"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Números"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Configurações"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Espaço"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Entrada de texto por voz"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emojis"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Pesquisar"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Ponto"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Alterar idioma"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Próximo"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Anterior"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift ativado"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock ativado"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modo de símbolos"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modo mais símbolos"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modo de letras"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modo de telefone"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modo de símbolos do telefone"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Teclado oculto"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Mostrando teclado <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"data e hora"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mensagens"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"número"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefone"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"texto"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"hora"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recentes"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Pessoas"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Objetos"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natureza"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Lugares"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Símbolos"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticons"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> maiúscula"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I maiúscula"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I maiúscula, ponto acima"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Símbolo desconhecido"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji desconhecido"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Caracteres alternativos estão disponíveis"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Caracteres alternativos foram descartados"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sugestões alternativas estão disponíveis"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Sugestões alternativas foram descartadas"</string>
+</resources>
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index f98ef8c..c819ff3 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -21,43 +21,44 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opções de entrada"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Pesq. comandos de reg."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Buscar nomes de contatos"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"O corretor ortográfico usa entradas de sua lista de contatos"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar ao tocar a tecla"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Som ao tocar a tecla"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Exibir pop-up ao digitar"</string>
-    <string name="general_category" msgid="1859088467017573195">"Geral"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Correção de texto"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Escrita com gestos"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Outras opções"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Configurações avançadas"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opções para especialistas"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Preferências de entrada"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Aparência"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Opções multilíngues"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Pref. da entr. por gestos"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Correção de texto"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Avançadas"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Outros métodos de entrada"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"A tecla p/ mudar o idioma também cobre outros métodos de entrada"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tecla de seleção de idioma"</string>
     <string name="show_language_switch_key_summary" msgid="7343403647474265713">"Mostrar quando vários idiomas de entrada estiverem ativados"</string>
     <string name="sliding_key_input_preview" msgid="6604262359510068370">"Mostrar indicador de deslize"</string>
     <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Mostrar indicação visual ao deslizar teclas Shift ou de símbolos"</string>
-    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Dispens. atraso chave princ."</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"Duração de popup da tecla"</string>
     <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"Sem atraso"</string>
     <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"Padrão"</string>
     <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g> ms"</string>
     <string name="settings_system_default" msgid="6268225104743331821">"Padrão do sistema"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sugerir nomes de contato"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Usar nomes dos Contatos para sugestões e correções"</string>
-    <string name="use_double_space_period" msgid="8781529969425082860">"Duplo espaço p/ ponto"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Sugestões personalizadas"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Melhorar <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"Duplo espaço para ponto"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Toque duplo na barra de espaço insere um ponto seguido de espaço"</string>
-    <string name="auto_cap" msgid="1719746674854628252">"Capitaliz. automática"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"Capitalização automática"</string>
     <string name="auto_cap_summary" msgid="7934452761022946874">"Iniciar a primeira palavra de cada frase com letra maiúscula"</string>
     <string name="edit_personal_dictionary" msgid="3996910038952940420">"Dicionário pessoal"</string>
     <string name="configure_dictionaries_title" msgid="4238652338556902049">"Dicionários complementares"</string>
     <string name="main_dictionary" msgid="4798763781818361168">"Dicionário principal"</string>
-    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Exibir sugestões de correção"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"Mostrar sugestões de correção"</string>
     <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"Exibir sugestões de palavras durante a digitação"</string>
     <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"Mostrar sempre"</string>
     <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"Mostrar em modo retrato"</string>
-    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Sempre ocultar"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"Não mostrar"</string>
     <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"Bloquear palavras ofensivas"</string>
     <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"Não sugerir palavras potencialmente ofensivas"</string>
     <string name="auto_correction" msgid="7630720885194996950">"Correção automática"</string>
@@ -66,79 +67,33 @@
     <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"Moderado"</string>
     <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"Agressivo"</string>
     <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"Muito agressivo"</string>
-    <string name="bigram_prediction" msgid="1084449187723948550">"Sugestões para a palavra seguinte"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"Sugerir palavra seguinte"</string>
     <string name="bigram_prediction_summary" msgid="3896362682751109677">"Usar a palavra anterior ao fazer sugestões"</string>
     <string name="gesture_input" msgid="826951152254563827">"Ativar a escrita com gestos"</string>
     <string name="gesture_input_summary" msgid="9180350639305731231">"Inserir uma palavra deslizando os dedos pelas letras"</string>
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Mostrar percurso do gesto"</string>
-    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Visualizaç. dinâmica flutuante"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Previsão dinâmica flutuante"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Ver a palavra sugerida ao usar gestos"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Salvo"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Conecte um fone de ouvido para ouvir as chaves de senha em voz alta."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"O texto atual é %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nenhum texto digitado"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corrige <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> para <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> realiza correção automática"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Código de tecla %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift ativado (toque para desativar)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock ativado (toque para desativar)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Excluir"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Símbolos"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Letras"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Números"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Configurações"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Espaço"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Entrada de voz"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Carinha sorridente"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Voltar"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Pesquisar"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Ponto"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Alterar idioma"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Próximo"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Anterior"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift ativado"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock ativado"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift desativado"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Modo de símbolos"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modo de cartas"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modo de telefone"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modo de símbolos de telefone"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Teclado oculto"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Mostrando teclado <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"data"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"data e hora"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"mensagens"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"número"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefone"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"texto"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"hora"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
-    <string name="voice_input" msgid="3583258583521397548">"Chave de entrada de texto por voz"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"No teclado principal"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"No teclado de símb."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Desativado"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. no teclado"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic. no teclado"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Texto por voz desat."</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gesto de frase"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Inserir espaços durante gestos deslizando até a tecla de espaço"</string>
+    <string name="voice_input" msgid="3583258583521397548">"Tecla p/ inserir texto por voz"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nenhum método de entrada de texto por voz ativado. Verifique as configurações \"Idioma e entrada\"."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configurar métodos de entrada"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Idiomas de entrada"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Enviar comentários"</string>
     <string name="select_language" msgid="3693815588777926848">"Idiomas de entrada"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Toque novamente para salvar"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dicionário disponível"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Ativar comentário do usuário"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Ajude a melhorar este editor de método de entrada enviando automaticamente estatísticas de uso e relatórios de falhas."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema do teclado"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"inglês (Reino Unido)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"inglês (EUA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"espanhol (EUA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Inglês (Reino Unido) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Inglês (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"espanhol (EUA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Inglês (Reino Unido) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Inglês (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Espanhol (EUA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cirílico)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latino)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Nenhum idioma (alfabeto)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeto (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeto (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeto (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeto (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Esquema de cores"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Branco"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Azul"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Tema do teclado"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Holo branco"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Holo azul"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Material escuro"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Material claro"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Estilos personalizados"</string>
     <string name="add_style" msgid="6163126614514489951">"Adic. estilo"</string>
     <string name="add" msgid="8299699805688017798">"Adicionar"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Ativar"</string>
     <string name="not_now" msgid="6172462888202790482">"Agora não"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"O estilo de entrada já existe: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modo de estudo de utilização"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Atraso ao pressionar teclas"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Duração da vibração ao tocar"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume ao tocar na tela"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Ler arquivo de dicionário externo"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Nenhum arquivo de dicionário na pasta Downloads"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selecione um arquivo de dicionário para instalar"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Deseja instalar este arquivo para <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Deseja instalar este arquivo para <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Ocorreu um erro"</string>
     <string name="button_default" msgid="3988017840431881491">"Padrão"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Bem-vindo ao <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Atualizar"</string>
     <string name="last_update" msgid="730467549913588780">"Última atualização"</string>
     <string name="message_updating" msgid="4457761393932375219">"Verificando atualizações"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Carregando..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Carregando…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Dicionário principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Cancelar"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Configurações"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalar"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Cancelar"</string>
     <string name="delete_dict" msgid="756853268088330054">"Excluir"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"O idioma selecionado em seu dispositivo móvel tem um dicionário disponível.&lt;br/&gt; Recomendamos &lt;b&gt;fazer o download&lt;/b&gt; do dicionário de <xliff:g id="LANGUAGE">%1$s</xliff:g> para melhorar sua experiência de digitação.&lt;br/&gt; O download pode levar um ou dois minutos por conexão 3G. Tarifas podem ser aplicáveis caso você não tenha um &lt;b&gt;plano de dados ilimitado&lt;/b&gt;.&lt;br/&gt; Se você não tem certeza quanto a seu plano de dados, recomendamos encontrar uma conexão Wi-Fi para iniciar o download automaticamente.&lt;br/&gt; Dica: você pode fazer o download de dicionários e removê-los acessando &lt;b&gt;Idioma e entrada&lt;/b&gt; no menu &lt;b&gt;Configurações&lt;/b&gt; de seu dispositivo móvel."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"O idioma selecionado em seu dispositivo móvel tem um dicionário disponível.&lt;br/&gt; Recomendamos &lt;b&gt;fazer o download&lt;/b&gt; do dicionário de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> para melhorar sua experiência de digitação.&lt;br/&gt; O download pode levar um ou dois minutos por conexão 3G. Tarifas podem ser aplicáveis caso você não tenha um &lt;b&gt;plano de dados ilimitado&lt;/b&gt;.&lt;br/&gt; Se você não tem certeza quanto a seu plano de dados, recomendamos encontrar uma conexão Wi-Fi para iniciar o download automaticamente.&lt;br/&gt; Dica: você pode fazer o download de dicionários e removê-los acessando &lt;b&gt;Idioma e entrada&lt;/b&gt; no menu &lt;b&gt;Configurações&lt;/b&gt; do dispositivo móvel."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Fazer o download agora (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Fazer o download por Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Há um dicionário disponível para <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Há um dicionário disponível para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Pressione para consultar e fazer o download"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Download em andamento: as sugestões para <xliff:g id="LANGUAGE">%1$s</xliff:g> estarão prontas em breve."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Download em andamento: as sugestões para <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> estarão disponíveis em breve."</string>
     <string name="version_text" msgid="2715354215568469385">"Versão <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Adicionar"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Adicionar ao dicionário"</string>
diff --git a/java/res/values-rm/strings-action-keys.xml b/java/res/values-rm/strings-action-keys.xml
deleted file mode 100644
index fbe84b5..0000000
--- a/java/res/values-rm/strings-action-keys.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="label_go_key" msgid="1635148082137219148">"Dai"</string>
-    <string name="label_next_key" msgid="362972844525672568">"Vinavant"</string>
-    <!-- no translation found for label_previous_key (1211868118071386787) -->
-    <skip />
-    <string name="label_done_key" msgid="2441578748772529288">"Finì"</string>
-    <string name="label_send_key" msgid="2815056534433717444">"Trametter"</string>
-    <!-- no translation found for label_pause_key (181098308428035340) -->
-    <skip />
-    <!-- no translation found for label_wait_key (6402152600878093134) -->
-    <skip />
-</resources>
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
deleted file mode 100644
index 3f0bab9..0000000
--- a/java/res/values-rm/strings.xml
+++ /dev/null
@@ -1,446 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-/*
-**
-** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
-    <skip />
-    <!-- no translation found for english_ime_research_log (8492602295696577851) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
-    <skip />
-    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
-    <skip />
-    <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrar cun smatgar in buttun"</string>
-    <string name="sound_on_keypress" msgid="6093592297198243644">"Tun cun smatgar in buttun"</string>
-    <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up cun smatgar ina tasta"</string>
-    <!-- no translation found for general_category (1859088467017573195) -->
-    <skip />
-    <!-- no translation found for correction_category (2236750915056607613) -->
-    <skip />
-    <!-- no translation found for gesture_typing_category (497263612130532630) -->
-    <skip />
-    <!-- no translation found for misc_category (6894192814868233453) -->
-    <skip />
-    <!-- no translation found for advanced_settings (362895144495591463) -->
-    <skip />
-    <!-- no translation found for advanced_settings_summary (4487980456152830271) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
-    <skip />
-    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
-    <skip />
-    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
-    <skip />
-    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
-    <skip />
-    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
-    <skip />
-    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
-    <skip />
-    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
-    <skip />
-    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
-    <skip />
-    <!-- no translation found for settings_system_default (6268225104743331821) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
-    <skip />
-    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
-    <skip />
-    <!-- no translation found for use_double_space_period (8781529969425082860) -->
-    <skip />
-    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
-    <skip />
-    <string name="auto_cap" msgid="1719746674854628252">"Maiusclas automaticas"</string>
-    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
-    <skip />
-    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
-    <skip />
-    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
-    <skip />
-    <!-- no translation found for main_dictionary (4798763781818361168) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
-    <skip />
-    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
-    <skip />
-    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
-    <skip />
-    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
-    <skip />
-    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
-    <skip />
-    <!-- no translation found for auto_correction (7630720885194996950) -->
-    <skip />
-    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
-    <skip />
-    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
-    <skip />
-    <!-- no translation found for bigram_prediction (1084449187723948550) -->
-    <skip />
-    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
-    <skip />
-    <!-- no translation found for gesture_input (826951152254563827) -->
-    <skip />
-    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
-    <skip />
-    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
-    <skip />
-    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
-    <skip />
-    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
-    <skip />
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Memorisà"</string>
-    <!-- no translation found for spoken_use_headphones (896961781287283493) -->
-    <skip />
-    <!-- no translation found for spoken_current_text_is (2485723011272583845) -->
-    <skip />
-    <!-- no translation found for spoken_no_text_entered (7479685225597344496) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct (8005997889020109763) -->
-    <skip />
-    <!-- no translation found for spoken_auto_correct_obscured (6276420476908833791) -->
-    <skip />
-    <!-- no translation found for spoken_description_unknown (3197434010402179157) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift (244197883292549308) -->
-    <skip />
-    <!-- no translation found for spoken_description_shift_shifted (1681877323344195035) -->
-    <skip />
-    <!-- no translation found for spoken_description_caps_lock (3276478269526304432) -->
-    <skip />
-    <!-- no translation found for spoken_description_delete (8740376944276199801) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_symbol (5486340107500448969) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_alpha (23129338819771807) -->
-    <skip />
-    <!-- no translation found for spoken_description_to_numeric (591752092685161732) -->
-    <skip />
-    <!-- no translation found for spoken_description_settings (4627462689603838099) -->
-    <skip />
-    <!-- no translation found for spoken_description_tab (2667716002663482248) -->
-    <skip />
-    <!-- no translation found for spoken_description_space (2582521050049860859) -->
-    <skip />
-    <!-- no translation found for spoken_description_mic (615536748882611950) -->
-    <skip />
-    <!-- no translation found for spoken_description_smiley (2256309826200113918) -->
-    <skip />
-    <!-- no translation found for spoken_description_return (8178083177238315647) -->
-    <skip />
-    <!-- no translation found for spoken_description_search (1247236163755920808) -->
-    <skip />
-    <!-- no translation found for spoken_description_dot (40711082435231673) -->
-    <skip />
-    <!-- no translation found for spoken_description_language_switch (5507091328222331316) -->
-    <skip />
-    <!-- no translation found for spoken_description_action_next (8636078276664150324) -->
-    <skip />
-    <!-- no translation found for spoken_description_action_previous (800872415009336208) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_on (5700440798609574589) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_locked (593175803181701830) -->
-    <skip />
-    <!-- no translation found for spoken_description_shiftmode_off (657219998449174808) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_symbol (7183343879909747642) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_alpha (3528307674390156956) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone (6520207943132026264) -->
-    <skip />
-    <!-- no translation found for spoken_description_mode_phone_shift (5499629753962641227) -->
-    <skip />
-    <!-- no translation found for announce_keyboard_hidden (8718927835531429807) -->
-    <skip />
-    <!-- no translation found for announce_keyboard_mode (4729081055438508321) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_date (3137520166817128102) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_date_time (339593358488851072) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_email (6216248078128294262) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_im (1137405089766557048) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_number (7991623440699957069) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_phone (6851627527401433229) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_text (6479436687899701619) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_time (4381856885582143277) -->
-    <skip />
-    <!-- no translation found for keyboard_mode_url (1519819835514911218) -->
-    <skip />
-    <!-- no translation found for voice_input (3583258583521397548) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_main_keyboard (3360660341121083174) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_symbols_keyboard (7203213240786084067) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_off (3745699748218082014) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_main_keyboard (6586544292900314339) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_symbols_keyboard (5233725927281932391) -->
-    <skip />
-    <!-- no translation found for voice_input_modes_summary_off (63875609591897607) -->
-    <skip />
-    <!-- no translation found for configure_input_method (373356270290742459) -->
-    <skip />
-    <string name="language_selection_title" msgid="1651299598555326750">"Linguas da cumonds vocals"</string>
-    <!-- no translation found for send_feedback (1780431884109392046) -->
-    <skip />
-    <!-- no translation found for select_language (3693815588777926848) -->
-    <skip />
-    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
-    <skip />
-    <string name="has_dictionary" msgid="6071847973466625007">"Dicziunari disponibel"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Activar il feedback da l\'utilisader"</string>
-    <!-- no translation found for prefs_description_log (7525225584555429211) -->
-    <skip />
-    <!-- no translation found for keyboard_layout (8451164783510487501) -->
-    <skip />
-    <!-- no translation found for subtype_en_GB (88170601942311355) -->
-    <skip />
-    <!-- no translation found for subtype_en_US (6160452336634534239) -->
-    <skip />
-    <!-- no translation found for subtype_es_US (5583145191430180200) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_en_GB (2179097748724725906) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_en_US (1362581347576714579) -->
-    <skip />
-    <!-- no translation found for subtype_with_layout_es_US (6261791057007890189) -->
-    <skip />
-    <!-- no translation found for subtype_nepali_traditional (9032247506728040447) -->
-    <skip />
-    <!-- no translation found for subtype_no_language (7137390094240139495) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
-    <skip />
-    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
-    <skip />
-    <!-- no translation found for subtype_emoji (7483586578074549196) -->
-    <skip />
-    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
-    <skip />
-    <!-- no translation found for add_style (6163126614514489951) -->
-    <skip />
-    <!-- no translation found for add (8299699805688017798) -->
-    <skip />
-    <!-- no translation found for remove (4486081658752944606) -->
-    <skip />
-    <!-- no translation found for save (7646738597196767214) -->
-    <skip />
-    <!-- no translation found for subtype_locale (8576443440738143764) -->
-    <skip />
-    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
-    <skip />
-    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
-    <skip />
-    <!-- no translation found for enable (5031294444630523247) -->
-    <skip />
-    <!-- no translation found for not_now (6172462888202790482) -->
-    <skip />
-    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
-    <skip />
-    <!-- no translation found for prefs_usability_study_mode (1261130555134595254) -->
-    <skip />
-    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
-    <skip />
-    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
-    <skip />
-    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
-    <skip />
-    <!-- no translation found for read_external_dictionary_confirm_install_message (6898610163768980870) -->
-    <skip />
-    <!-- no translation found for error (8940763624668513648) -->
-    <skip />
-    <!-- no translation found for button_default (3988017840431881491) -->
-    <skip />
-    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
-    <skip />
-    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
-    <skip />
-    <!-- no translation found for setup_start_action (8936036460897347708) -->
-    <skip />
-    <!-- no translation found for setup_next_action (371821437915144603) -->
-    <skip />
-    <!-- no translation found for setup_steps_title (6400373034871816182) -->
-    <skip />
-    <!-- no translation found for setup_step1_title (3147967630253462315) -->
-    <skip />
-    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
-    <skip />
-    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
-    <skip />
-    <!-- no translation found for setup_step1_action (4366513534999901728) -->
-    <skip />
-    <!-- no translation found for setup_step2_title (6860725447906690594) -->
-    <skip />
-    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
-    <skip />
-    <!-- no translation found for setup_step2_action (1660330307159824337) -->
-    <skip />
-    <!-- no translation found for setup_step3_title (3154757183631490281) -->
-    <skip />
-    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
-    <skip />
-    <!-- no translation found for setup_step3_action (600879797256942259) -->
-    <skip />
-    <!-- no translation found for setup_finish_action (276559243409465389) -->
-    <skip />
-    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
-    <skip />
-    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
-    <skip />
-    <!-- no translation found for app_name (6320102637491234792) -->
-    <skip />
-    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
-    <skip />
-    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
-    <skip />
-    <!-- no translation found for download_description (6014835283119198591) -->
-    <skip />
-    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
-    <skip />
-    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
-    <skip />
-    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
-    <skip />
-    <!-- no translation found for user_dictionaries (3582332055892252845) -->
-    <skip />
-    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
-    <skip />
-    <!-- no translation found for dictionary_available (4728975345815214218) -->
-    <skip />
-    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
-    <skip />
-    <!-- no translation found for dictionary_installed (8081558343559342962) -->
-    <skip />
-    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
-    <skip />
-    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
-    <skip />
-    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
-    <skip />
-    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
-    <skip />
-    <!-- no translation found for last_update (730467549913588780) -->
-    <skip />
-    <!-- no translation found for message_updating (4457761393932375219) -->
-    <skip />
-    <!-- no translation found for message_loading (8689096636874758814) -->
-    <skip />
-    <!-- no translation found for main_dict_description (3072821352793492143) -->
-    <skip />
-    <string name="cancel" msgid="6830980399865683324">"Interrumper"</string>
-    <!-- no translation found for install_dict (180852772562189365) -->
-    <skip />
-    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
-    <skip />
-    <!-- no translation found for delete_dict (756853268088330054) -->
-    <skip />
-    <!-- no translation found for should_download_over_metered_prompt (2878629598667658845) -->
-    <skip />
-    <!-- no translation found for download_over_metered (1643065851159409546) -->
-    <skip />
-    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
-    <skip />
-    <!-- no translation found for dict_available_notification_title (6514288591959117288) -->
-    <skip />
-    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
-    <skip />
-    <!-- no translation found for toast_downloading_suggestions (1313027353588566660) -->
-    <skip />
-    <!-- no translation found for version_text (2715354215568469385) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
-    <skip />
-    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
-    <skip />
-    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
-    <skip />
-</resources>
diff --git a/java/res/values-ro/strings-action-keys.xml b/java/res/values-ro/strings-action-keys.xml
index 51aa82f..1a15415 100644
--- a/java/res/values-ro/strings-action-keys.xml
+++ b/java/res/values-ro/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Înap."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Gata"</string>
     <string name="label_send_key" msgid="482252074224462163">"Trim."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Căutați"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauză"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Așt."</string>
 </resources>
diff --git a/java/res/values-ro/strings-config-important-notice.xml b/java/res/values-ro/strings-config-important-notice.xml
new file mode 100644
index 0000000..f481e89
--- /dev/null
+++ b/java/res/values-ro/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Utilizează mesajele și datele introduse pt. a îmbunătăți sugestiile"</string>
+</resources>
diff --git a/java/res/values-ro/strings-emoji-descriptions.xml b/java/res/values-ro/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..f44a0b9
--- /dev/null
+++ b/java/res/values-ro/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"Semnul Copyright"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"Semnul Marcă înregistrată"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Semn de exclamare dublu"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Semn de exclamare și întrebare"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Semn marcă înregistrată"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Sursă de informații"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Săgeată stânga-dreapta"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Săgeată sus-jos"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"Săgeată nord-vest"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"Săgeată nord-est"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"Săgeată sud-est"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"Săgeată sud-vest"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Săgeată încovoiată spre stânga"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Săgeată încovoiată spre dreapta"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"Ceas de mână"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Clepsidră"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"Triunghi dublu, negru, orientat spre dreapta"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"Triunghi dublu, negru, orientat spre stânga"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"Triunghi dublu, negru, orientat în sus"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"Triunghi dublu, negru, orientat în jos"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"Ceas deşteptător"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Clepsidră cu nisip"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"Majuscula „M”, din alfabetul latin, încercuită"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"Pătrat mic negru"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"Pătrat mic alb"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"Triunghi negru, orientat spre dreapta"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"Triunghi negru, orientat spre stânga"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"Pătrat mediu alb"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"Pătrat negru mediu"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"Pătrat alb, mijlociu spre mic"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"Pătrat negru, mijlociu spre mic"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"Soare negru cu raze"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"Nor"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"Telefon negru"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"Casetă cu bifă"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"Umbrelă cu picături de ploaie"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"Băuturi calde"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"Deget arătător alb, orientat în sus"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"Față zâmbitoare albă"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"Berbec"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"Taur"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"Gemeni"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"Rac"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"Leu"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"Fecioară"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"Balanţă"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"Scorpion"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"Săgetător"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"Capricorn"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"Vărsător"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"Peşti"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"Pică neagră"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"Treflă neagră"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"Inimă neagra"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"Romb negru"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"Izvoare termale"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"Simbol negru, universal, de reciclare"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"Simbol pentru scaun cu rotile"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"Ancoră"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"Semn de avertizare"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"Semn de înaltă tensiune"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"Cerc alb mediu"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"Cerc negru mediu"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"Minge de fotbal"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"Minge de baseball"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"Om de zăpadă fără zăpadă"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"Soare în spatele unui nor"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"Ophiuchus"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"Intrarea interzisă"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"Biserică"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"Fântână"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"Steag în gaură"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"Barcă cu pânze"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"Cort"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"Pompă de combustibil"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"Foarfece negru"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"Bifă albă îngroșată"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"Avion"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"Plic"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"Pumn ridicat"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"Mână ridicată"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"Mână cu semnul victoriei"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"Creion"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"Peniță neagră"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"Bifă îngroșată"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"Înmulțire complexă x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"Scântei"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"Asterisc cu opt colțuri"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"Stea neagră, cu opt colțuri"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"Fulg de nea"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"Scânteie"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"Semn x"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"Semn x alb pe fond negru în pătrat"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"Semn de întrebare ornamental negru"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"Semn de întrebare ornamental alb"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"Semn de exclamare ornamental alb"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"Semn de exclamare îngroșat"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"Inimă neagră îngroșată"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"Semn plus îngroșat"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"Semn minus îngroșat"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"Semn de împărțire îngroșat"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"Săgeată neagră, spre dreapta"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"Buclă ondulată"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"Buclă ondulată dublă"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"Săgeată orientată spre dreapta, apoi curbată în sus"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"Săgeată orientată spre dreapta, apoi curbată în jos"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"Săgeată neagră orientată spre stânga"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"Săgeată neagră orientată în sus"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"Săgeată neagră orientată în jos"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"Pătrat negru mare"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"Pătrat alb mare"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"Stea albă medie"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"Cerc îngroșat, mare"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"Liniuță ondulată"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"Semn de modificare"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"Ideogramă încercuită - felicitări"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"Ideogramă încercuită - secret"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"Piesă Mahjong dragon roșu"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"Carte de joc joker negru"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"Grupa de sânge A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"Grupa de sânge B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"Grupa de sânge O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"Parcare"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"Grupa de sânge AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"„CL” în pătrat"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"„COOL” în pătrat"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"„FREE” în pătrat"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"„ID” în pătrat"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"„NEW” în pătrat"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"„N G” în pătrat"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"„OK” în pătrat"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"„SOS” în pătrat"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"„UP” cu semn de exclamare în pătrat"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"„VS” în pătrat"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"„Katakana” în pătrat"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"„Servicii Katakana” în pătrat"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"Caracter ideografic „Gratuit” în pătrat"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"Caracter ideografic „Loc rezervat” în pătrat"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"Caracter ideografic „Interzis” în pătrat"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"Caracter ideografic „Loc liber” în pătrat"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"Caracter ideografic „Aprobare” în pătrat"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"Caracter ideografic „Nu sunt locuri libere” în pătrat"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"Caracter ideografic „Cu plată” în pătrat"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"Caracter ideografic „Lunar” în pătrat"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"Caracter ideografic „Înscriere” în pătrat"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"Caracter ideografic „Reducere” în pătrat"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"Caracter ideografic „În activitate” în pătrat"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"Caracter ideografic „Avantaj” în pătrat"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"Caracter ideografic „Acord” în pătrat"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"Ciclon"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"Ceaţă"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"Umbrelă închisă"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"Noapte cu stele"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"Răsărit peste munți"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"Răsărit"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"Peisaj urban la asfințit"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"Apus de soare deasupra clădirilor"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"Curcubeu"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"Pod noaptea"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"Val"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"Vulcan"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"Calea Lactee"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"Globul pământesc: Europa-Africa"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"Globul pământesc: continentul american"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"Globul pământesc: Asia-Australia"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"Glob pământesc cu meridiane"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"Simbolul Lună nouă"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"Simbolul Lună nouă"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"Simbolul Primul pătrar"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"Simbolul Înainte de lună plină"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"Simbolul Lună plină"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"Simbolul După lună plină"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"Simbolul Ultimul pătrar"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"Simbolul Înainte de lună nouă"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"Semilună"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"Lună nouă, cu chip"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"Lună în primul pătrar, cu chip"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"Lună în ultimul pătrar, cu chip"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"Lună plină, cu chip"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"Soare cu chip"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"Stea strălucitoare"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"Stea căzătoare"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"Castană"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"Puiet"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"Copac veșnic verde"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"Copac cu frunze căzătoare"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"Palmier"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"Cactus"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"Lalea"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"Floare de cireș"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"Trandafir"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"Hibiscus"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"Floarea-soarelui"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"Floare"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"Spic de porumb"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"Spic de orez"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"Plantă"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"Trifoi cu patru foi"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"Frunză de arțar"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"Frunză căzută"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"Frunză în vânt"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"Ciupercă"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"Roșie"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"Vânătă"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"Struguri"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"Pepene galben"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"Pepene verde"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"Mandarină"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"Lămâie"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"Banană"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"Ananas"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"Măr roșu"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"Măr verde"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"Pară"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"Piersic"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"Cireșe"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"Căpșună"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"Hamburger"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"Felie de pizza"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"Carne pe os"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"Picior de pasăre"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"Biscuite de orez"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"Chiftea de orez"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"Orez gătit"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"Orez cu curry"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"Castron aburind"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"Spaghete"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"Pâine"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"Cartofi prăjiți"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"Cartof dulce copt"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"Dango"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"Oden"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"Sushi"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"Creveți prăjiți"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"Plăcintă de pește cu model ondulat"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"Cornet de înghețată"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"Fulgi de gheață"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"Înghețată"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"Gogoașă"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"Biscuit"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"Ciocolată"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"Bomboane"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"Acadea"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"Budincă"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"Oală de miere"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"Prăjitură"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"Cutie Bento"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"Oală cu mâncare"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"Gătit"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"Furculiță și cuțit"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"Ceașcă fără toartă"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"Sticlă și ceașcă de sake"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"Pahar de vin"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"Pahar de cocktail"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"Băutură tropicală"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"Halbă de bere"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"Halbe de bere ciocnindu-se"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"Biberon"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"Panglică"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"Cadou ambalat"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"Tort"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Felinar din dovleac"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"Pom de Crăciun"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"Moș Crăciun"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"Focuri de artificii"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"Artificiu"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"Balon"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"Tun de confetti"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"Minge de confetti"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"Copac Tanabata"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"Steaguri încrucișate"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"Decorațiune de Crăciun"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"Păpuși japoneze"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"Steaguri în formă de pește"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"Clopoței de vânt"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"Ceremonia contemplării lunii"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"Ghiozdan"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"Tocă de absolvire"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"Cal de carusel"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"Roata mare"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"Montaigne-russe"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"Undiță și pește"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"Microfon"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"Cameră video"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"Cinema"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"Căști"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"Paletă de pictură"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"Joben"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"Cort de circ"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"Bilet"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"Clachetă"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"Arta spectacolului"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"Joc video"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"Lovitură drept la țintă"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"Jocuri mecanice"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"Biliard"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"Zaruri"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"Popice"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"Cărți de joc cu flori"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"Notă muzicală"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"Mai multe note muzicale"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"Saxofon"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"Chitară"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"Claviatură"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"Trompetă"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"Vioară"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"Partitură"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"Maieu de sport cu dungă"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"Rachetă de tenis și minge"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"Schi și gheată de schi"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"Minge și inel de baschet"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"Steag în carouri"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"Practicant de snowboard"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"Alergător"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"Practicant de surf"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"Trofeu"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"Curse de cai"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"Fotbal american"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"Rugby"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"Înnotător"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"Clădire"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"Casă cu grădină"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"Clădire de birouri"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"Oficiu poștal japonez"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"Oficiu poștal european"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"Spital"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"Bancă"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"Bancomat"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"Hotel"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"Hoteluri pentru îndrăgostiți"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"Alimentară"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"Şcoală"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"Magazin universal"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"Fabrică"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"Felinar Izakaya"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"Castel japonez"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"Castel european"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"Șobolan"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"Șoarece"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"Bou"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"Bivol de apă"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"Vacă"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"Leopard"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"Iepure"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"Pisică"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"Dragon"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"Crocodil"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"Balenă"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"Melc"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"Șarpe"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"Cal"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"Berbec"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"Capră"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"Oaie"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"Maimuţă"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"Cocoș"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"Pui"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"Câine"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"Porc"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"Porc mistreț"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"Elefant"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"Caracatiță"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"Scoică spiralată"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"Insectă"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"Furnică"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"Albină"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"Buburuză"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"Pești"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"Pești tropicali"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"Pește lună"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"Broască țestoasă"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"Pui ieșind din ou"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"Pui de găină"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"Pui văzut din față"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"Pasăre"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"Pinguin"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"Urs koala"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"Pudel"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"Dromader"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"Cămilă cu două cocoașe"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"Delfin"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"Cap de șoarece"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"Cap de vacă"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"Cap de tigru"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"Cap de iepure"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"Cap de pisică"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"Cap de dragon"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"Balenă cenușie"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"Cap de cal"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"Cap de maimuță"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"Cap de câine"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"Cap de porc"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"Cap de broască"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"Cap de hamster"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"Cap de  lup"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"Cap de urs"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"Cap de urs panda"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"Rât de porc"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"Urme de labe"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"Ochi"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"Ureche"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"Nas"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"Gură"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"Limbă scoasă"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"Deget arătător alb, orientat în sus"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"Deget arătător alb, orientat în jos"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"Deget arătător alb, orientat la stânga"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"Deget arătător alb, orientat la dreapta"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"Semn pumn strâns"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"Semn palmă deschisă"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"Semn OK"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"Semn de aprobare"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"Semn de dezaprobare"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"Semn Aplauze"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"Semn Palme deschise"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"Coroană"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"Pălărie de damă"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"Ochelari"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"Cravată"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"Tricou"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"Blugi"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"Rochie"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"Kimono"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"Bikini"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"Haine de damă"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"Poșetă"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"Geantă"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"Borsetă"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"Pantofi bărbătești"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"Încălțăminte sport"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"Pantof cu toc înalt"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"Sandale de damă"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"Cizme de damă"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"Urme de pași"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"Bust siluetă"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"Busturi siluetă"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"Băiat"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"Fată"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"Bărbat"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"Femeie"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"Familie"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"Bărbat și femeie ținându-se de mână"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"Doi bărbați ținându-se de mână"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"Două femei ținându-se de mână"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"Polițist"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"Femeie cu urechi de iepure"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"Mireasă cu voal"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"Persoană cu păr blond"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"Bărbat cu gua pi mao"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"Bărbat cu turban"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"Bătrân"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"Bătrână"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"Bebeluș"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"Muncitor în construcții"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"Prinţesă"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"Căpcăun japonez"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"Goblin japonez"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"Fantomă"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"Îngeraș"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"Extraterestru"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"Monstru extraterestru"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Demon"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"Craniu"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"Persoană la ghișeul de informații"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"Paznic"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"Dansator"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"Ruj"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"Lac de unghii"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"Masaj facial"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"Tunsoare"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"Simbol pentru bărbier"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"Seringă"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"Pilulă"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"Semn de sărut"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"Scrisoare de dragoste"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"Inel"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"Piatră prețioasă"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"Sărut"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"Buchet"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"Cuplu cu inimă"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"Nuntă"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"Inimă bătând"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"Inimă zdrobită"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"Două inimi"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"Inimă strălucitoare"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"Inimă care crește"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"Inimă cu sageată"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"Inimă albastră"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"Inimă verde"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"Inimă galbenă"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"Inimă violet"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"Inimăcu panglică"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"Inimi care se rotesc"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"Ornament inimă"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"Formă romboidală cu un punct înăuntru"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"Bec electric"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"Simbol pentru furie"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"Bombă"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"Simbol pentru somn"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"Simbol pentru accident"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"Simbol stropi de transpirație"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"Picătură"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"Simbol liniuță"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"Excremente"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"Biceps flexat"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"Simbol pentru amețeală"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"Balon de dialog"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"Balon de gândire"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"Floare albă"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"Simbol pentru o sută de puncte"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"Sac cu bani"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"Schimb valutar"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"Semn dolar îngroșat"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"Card de credit"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"Bancnotă cu simbolul yen"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"Bancnotă cu simbolul dolar"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"Bancnotă cu simbolul euro"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"Bancnotă cu simbolul liră"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"Bani cu aripi"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"Diagramă reprezentând o tendință crescătoare și simbolul yen"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"Loc"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"Computer"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"Servietă"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"Minidisc"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"Dischetă"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"Disc optic"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"DVD"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"Dosar cu fișiere"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"Dosar deschis"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"Pagină îndoită"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"Pagină orientată în sus"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"Calendar"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"Calendar cu file detașabile"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"Index cărți de vizită"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"Diagramă reprezentând o tendință crescătoare"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"Diagramă reprezentând o tendință descrescătoare"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"Diagramă cu bare"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"Clipboard"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Piuneză"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Piuneză rotundă"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Agrafă de birou"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Riglă dreaptă"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Riglă triunghiulară"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"File de marcaj"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"Registru"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"Blocnotes"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Blocnotes cu copertă decorativă"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Carte închisă"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Carte deschisă"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Carte verde"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Carte albastră"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Carte portocalie"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"Cărți"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Insignă cu numele"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"Sul"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Notă"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Receptor de telefon"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"Pager"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Fax"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Antenă satelit"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Megafon"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Megafon"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Tavă de ieșiri"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Tavă de intrări"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"Pachet"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"Simbolul E-mail"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Plic primit"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Plic cu săgeată în jos deasupra"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Cutie poștală închisă cu steag coborât"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Cutie poștală închisă cu steag ridicat"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Cutie poștală deschisă cu steag ridicat"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Cutie poștală deschisă cu steag coborât"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Cutie poștală"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Simbolul poștal"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Ziar"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Telefon mobil"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Telefon mobil cu săgeată spre dreapta la stânga"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Modul vibrații"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Telefon mobil închis"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"Telefoanele mobile interzise"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"Antenă cu bare"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"Cameră foto"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Cameră video"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"Emisiuni TV"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"Radio"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Casetă video"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Săgeți răsucite spre dreapta"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Săgeți în formă de cerc deschis, orientate spre dreapta și spre stânga, în sensul acelor de ceasornic"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Săgeți în formă de cerc deschis, orientate spre dreapta și spre stânga, în sensul acelor de ceasornic, cu suprapunerea cifrei 1 într-un cerc"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Săgeți în formă de cerc deschis, orientate în sus și în jos, în sens orar"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"Săgeți în formă de cerc deschis, orientate în sus și în jos, în sens antiorar"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Simbol de luminozitate scăzută"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"Simbol de luminozitate ridicată"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Difuzor cu simbol de anulare"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"Difuzor"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Difuzor cu un val de sunet"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Difuzor cu trei valuri de sunet"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"Baterie"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Alimentare electrică"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Lupă orientată spre stânga"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Lupă orientată spre dreapta"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lacăt cu stilou"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Lacăt închis cu cheie"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Cheie"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"Lacăt"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Lacăt deschis"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Clopoțel"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Clopoțel cu simbol de anulare"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Marcaj"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Simbol lanț"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Buton radio"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"„BACK” cu săgeată spre stânga deasupra"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"„END” cu săgeată spre stânga deasupra"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"„ON” cu semn de exclamare și cu săgeată stânga-dreapta deasupra"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"„SOON” cu săgeată spre dreapta deasupra"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"„TOP” cu săgeată în sus deasupra"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"Simbolul „Interzis sub optsprezece ani”"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Tastă zece"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Simbol de introducere a majusculelor latine"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Simbol de introducere a literelor mici latine"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Simbol de introducere a cifrelor"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"Simbol de introducere a simbolurilor"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Simbol de introducere a literelor latine"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"Foc"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Lanternă"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Cheie"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Ciocan"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Piuliță și șurub"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hocho"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistol"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Microscop"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Telescop"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Glob de cristal"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"Stea cu șase colțuri cu punct în mijloc"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"Simbolul japonez pentru începători"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Emblemă trident"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"Buton negru pătrat"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"Buton alb pătrat"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Cerc mare roșu"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Cerc mare albastru"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Romb mare portocaliu"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Romb mare albastru"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Romb mic portocaliu"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Romb mic albastru"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Triunghi roșu, îndreptat în sus"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Triunghi roșu, îndreptat în jos"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Triunghi mic roșu, îndreptat în sus"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Triunghi mic roșu, îndreptat în jos"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Ceas cu ora unu"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Ceas cu ora două"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Ceas cu ora trei"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Ceas cu ora patru"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Ceas cu ora cinci"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Ceas cu ora șase"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Ceas cu ora șapte"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Ceas cu ora opt"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Ceas cu ora nouă"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Ceas cu ora zece"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Ceas cu ora unsprezece"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Ceas cu ora douăsprezece"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Ceas cu ora unu și jumătate"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Ceas cu ora două și jumătate"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Ceas cu ora trei și jumătate"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Ceas cu ora patru și jumătate"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Ceas cu ora cinci și jumătate"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Ceas cu ora șase și jumătate"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Ceas cu ora șapte și jumătate"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Ceas cu ora opt și jumătate"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Ceas cu ora nouă și jumătate"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Ceas cu ora zece și jumătate"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Ceas cu ora unsprezece și jumătate"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Ceas cu ora douăsprezece și jumătate"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Muntele Fuji"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Turnul Tokyo"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Statuia Libertății"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Conturul Japoniei"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Față rânjind"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Față rânjind cu ochi zâmbitori"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"Față cu lacrimi de bucurie"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Față zâmbitoare cu gura deschisă"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Față zâmbitoare cu gura deschisă și ochi zâmbitori"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Față zâmbitoare, cu gura deschisă și sudoare rece"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Față zâmbitoare cu gura deschisă și ochii închiși"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Față zâmbitoare cu aură"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Față zâmbitoare cu coarne"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Față care face cu ochiul"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Față zâmbitoare, cu ochii zâmbitori"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"Față savurând mâncare delicioasă"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Față ușurată"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Față zâmbitoare, cu ochii în formă de inimă"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Față zâmbitoare cu ochelari de soare"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Față zâmbind șiret"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Față neutră"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Față fără expresie"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Față serioasă"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"Față cu sudoare rece"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Față meditativă"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Față confuză"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Față confuză"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Față care sărută"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"Față care trimite bezele"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Față care sărută cu ochi zâmbitori"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Față care sărută cu ochii închiși"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"Față care scoate limba"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"Față care scoate limba și face cu ochiul"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"Față care scoate limba, cu ochii închiși"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Față dezamăgită"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Față îngrijorată"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Față furioasă"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Față bosumflată"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Față care plânge"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Față perseverentă"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"Față cu privire triumfătoare"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Față dezamăgită dar ușurată"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Față încruntată cu gura deschisă"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Față chinuită"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Față înfricoșată"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Față obosită"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Față somnoroasă"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Față obosită"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Față cu grimasă"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Față plângând în hohote"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"Față cu gura deschisă"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Față redusă la tăcere"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"Față cu gura deschisă și sudoare rece"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"Față țipând de frică"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Față uimită"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Față congestionată"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Față care doarme"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Față amețită"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"Față fără gura"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"Față cu mască medicală"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Față de pisică rânjind, cu ochi zâmbitori"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"Față de pisică cu lacrimi de bucurie"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Față zâmbitoare de pisică, cu gura deschisă"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Față zâmbitoare pisică, cu ochii în formă de inimă"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"Față de pisică cu zâmbet crispat"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Față de pisică sărutând cu ochii închiși"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Față de pisică bosumflată"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Față de pisică plângând"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Față de pisică obosită"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"Față cu gest „nu are niciun rost”"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"Față cu gest „OK”"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Persoană care face plecăciuni"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"Maimuță care-și acoperă ochii"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Maimuță care-și acoperă urechile"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Maimuță care-și acoperă gura"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Persoană fericită, ridicând o mână"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"Persoană fericită ridicând ambele mâini de bucurie"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Persoană încruntată"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Persoană cu fața bosumflată"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Persoană cu mâinile împreunate"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Rachetă"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Elicopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Locomotivă cu abur"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Vagon de tren"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"Tren de mare viteză"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"Tren de mare viteză cu vârf ascuțit"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Tren"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metrou"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Metrou ușor"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Stație"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tramvai"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Vagon de tramvai"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Autobuz"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Autobuz sosind din față"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Troleibuz"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Stație de autobuz"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Maxi-taxi"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulanță"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Mașină de pompieri"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Mașină de poliție"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Mașină de poliție sosind din față"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taxi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Taxi sosind din față"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automobil"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Automobil sosind din față"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Vehicul de agrement"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Camion pentru livrări"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"Camion cu remorcă"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Tractor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monoșină"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Cale ferată montană"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Cale ferată suspendată"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Teleferic montan"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Tramvai aerian"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Vapor"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Barcă cu vâsle"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Barcă cu motor"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"Semafor orizontal"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Semafor vertical"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Semn de construcție"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Sirena de la mașina de poliție"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Stâlp cu steag triunghiular"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Ușă"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"Semn Intrarea oprită"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Simbol Fumatul permis"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"Simbol Fumatul interzis"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Simbol Aruncați gunoiul în locuri amenajate"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Simbol Păstrați curățenia"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Simbol Apă potabilă"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Simbol Apă care nu este potabilă"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicicletă"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"Interzis accesul cu bicicleta"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Biciclist"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Biciclist pe trasee montane"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pieton"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"Accesul pietonilor interzis"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Copii traversând"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Simbol Bărbați"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Simbol Femei"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Toaletă"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Simbol Bebeluș"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toaletă"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"WC"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Duș"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Baie"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Cadă"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Control pașapoarte"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Vamă"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Revendicarea bagajului"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Bagaj în custodie"</string>
+</resources>
diff --git a/java/res/values-ro/strings-letter-descriptions.xml b/java/res/values-ro/strings-letter-descriptions.xml
new file mode 100644
index 0000000..cb42529
--- /dev/null
+++ b/java/res/values-ro/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indicator de ordine feminin"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Semnul miu"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indicator de ordine masculin"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S ascuțit"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, accent grav"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, accent ascuțit"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, accent circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tildă"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, tremă"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, cerc deasupra"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligatură"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, sedilă"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, accent grav"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, accent ascuțit"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, accent circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, tremă"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, accent grav"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, accent ascuțit"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, accent circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, tremă"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tildă"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, accent grav"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, accent ascuțit"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, accent circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tildă"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, tremă"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, tăiat cu linie"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, accent grav"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, accent ascuțit"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, accent circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, tremă"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, accent ascuțit"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, tremă"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, căciulă"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, accent ascuțit"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, accent circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punct deasupra"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, tăiat cu linie"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, căciulă"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punct deasupra"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, accent circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, căciulă"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punct deasupra"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, sedilă"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, accent circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, tăiat cu linie"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tildă"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, căciulă"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I fără punct"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligatură"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, accent circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, sedilă"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, accent ascuțit"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, sedilă"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, punct la mijloc"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, tăiat cu linie"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, accent ascuțit"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, sedilă"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, precedat de apostrof"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, căciulă"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, accent ascuțit dublu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligatură"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, accent ascuțit"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, sedilă"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, accent ascuțit"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, accent circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, sedilă"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, sedilă"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, tăiat cu linie"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tildă"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, căciulă"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, cerc deasupra"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, accent ascuțit dublu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, accent circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, accent circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, accent ascuțit"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punct deasupra"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S lung"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, corn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, corn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, virgulă dedesubt"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, virgulă dedesubt"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, accent circumflex și ascuțit"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, accent circumflex și grav"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, accent circumflex și cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, accent circumflex și tildă"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, accent circumflex și punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, căciulă și accent ascuțit"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, căciulă și accent grav"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, căciulă și cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, căciulă și tildă"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, căciulă și punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tildă"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, accent circumflex și ascuțit"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, accent circumflex și grav"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, accent circumflex și cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, accent circumflex și tildă"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, accent circumflex și punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punct dedesubt"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punct dedesubt"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, accent circumflex și ascuțit"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, accent circumflex și grav"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, accent circumflex și cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, accent circumflex și tildă"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, accent circumflex și punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, corn și accent ascuțit"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, corn și accent grav"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, corn și cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, corn și tildă"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, corn și punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, corn și accent ascuțit"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, corn și accent grav"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, corn și cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, corn și tildă"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, corn și punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, accent grav"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punct dedesubt"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, cârlig deasupra"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tildă"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Semnul exclamării inversat"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Ghilimele unghiulare duble la stânga"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Punct la mijloc"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Unu exponent"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Ghilimele unghiulare duble la dreapta"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Semnul întrebării inversat"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Ghilimele simple la stânga"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Ghilimele simple la dreapta"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Ghilimele simple jos"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Ghilimele duble la stânga"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Ghilimele duble la dreapta"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Cruce"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Cruce dublă"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Semnul la mie"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prim"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Prim dublu"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Ghilimele unghiulare simple la stânga"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Ghilimele unghiulare simple la dreapta"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Patru exponent"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"n latin exponent"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Semnul peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"În atenția"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Săgeată la dreapta"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Săgeată în jos"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Mulțime vidă"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mai mic sau egal cu"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Mai mare sau egal cu"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Stea neagră"</string>
+</resources>
diff --git a/java/res/values-ro/strings-talkback-descriptions.xml b/java/res/values-ro/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..7a90162
--- /dev/null
+++ b/java/res/values-ro/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Conectați un set căști-microfon pentru a auzi tastele apăsate când introduceți parola."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Textul curent este %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nu a fost introdus text"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> corectează <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> cu <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> efectuează corectare automată"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Caracter necunoscut"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Mai multe simboluri"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboluri"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Ștergeți"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simboluri"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Litere"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Cifre"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Setări"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Tasta Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Intrare vocală"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoticonuri"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Căutați"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Bulină"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Schimbați limba"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Înai."</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Înapoi"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Tasta Shift a fost activată"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Tasta Caps Lock este activată"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Modul Simboluri"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Modul Mai multe simboluri"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Modul Alfanumeric"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Modul Telefon"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Modul Telefon cu simboluri"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tastatura este ascunsă"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Se afișează tastatura pentru <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"data"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"date și ore"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"adrese de e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mesaje"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"numere"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefoane"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ore"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"adrese URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Recente"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Persoane"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Obiecte"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natură"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Locații"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboluri"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emoticonuri"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> mare"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I mare"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I mare, punct deasupra"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Simbol necunoscut"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji necunoscut"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Sunt disponibile caractere alternative"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"S-au închis caracterele alternative"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Sunt disponibile sugestii alternative"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"S-au închis sugestiile alternative"</string>
+</resources>
diff --git a/java/res/values-ro/strings.xml b/java/res/values-ro/strings.xml
index 147f83e..985a81e 100644
--- a/java/res/values-ro/strings.xml
+++ b/java/res/values-ro/strings.xml
@@ -21,18 +21,17 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Opţiuni de introducere text"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Comenzi jurnal cercetare"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Verificare nume în agendă"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Verificatorul ortografic utilizează intrări din lista de contacte"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrare la apăsarea tastei"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Sunet la apăsarea tastei"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Pop-up la apăsarea tastei"</string>
-    <string name="general_category" msgid="1859088467017573195">"General"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Corectare text"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Tastare gestuală"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Alte opţiuni"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Setări avansate"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Opţiuni pentru experţi"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"Preferințe pentru intrare"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"Aspect"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"Opțiuni pt. diverse limbi"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"Prefer. tastare gestuală"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"Corectare text"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"Setări avansate"</string>
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Comut. alte metode de introd."</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tasta de comutare între limbi include şi alte metode de introd."</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tastă comutare limbi"</string>
@@ -46,6 +45,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Valoare prestabilită"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sugeraţi nume din Agendă"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Utilizaţi numele din Agendă pentru sugestii şi corecţii"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Sugestii personalizate"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Îmbunătățiți <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Inserează punct spațiu"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dubla atingere a barei de spațiu inserează punct urmat de spațiu"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Scriere automată cu majuscule"</string>
@@ -73,72 +74,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Se afişează urma gestului"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Sugestie flotantă dinamică"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Afişaţi cuvântul sugerat când utilizaţi gesturi"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: salvat"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Conectaţi un set căşti-microfon pentru a auzi tastele apăsate când introduceţi parola."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Textul curent este %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nu a fost introdus text"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> corectează <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> cu <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> efectuează corectare automată"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Tasta cu codul %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Tasta Shift este activată (apăsaţi pentru a o dezactiva)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Tasta Caps Lock este activată (apăsaţi pentru a o dezactiva)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simboluri"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Litere"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Cifre"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Setări"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Spaţiu"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Intrare vocală"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Faţă zâmbitoare"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Căutaţi"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punct"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Schimbaţi limba"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Înainte"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Înapoi"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Tasta Shift a fost activată"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Tasta Caps Lock a fost activată"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Tasta Shift a fost dezactivată"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Modul Simboluri"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Modul Alfanumeric"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Modul Telefon"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Modul Telefon cu simboluri"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tastatura este ascunsă"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Se afișează tastatura pentru <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"date"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"date și ore"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"adrese de e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"mesaje"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"numere"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefoane"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ore"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"adrese URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Gest expresie"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Introduceți spații în timpul gesturilor, glisând pe tasta spațiu"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tastă pentru intrarea vocală"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Pe tastat. princip."</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Pe tastat. simbol."</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Dezactivată"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic. pe tast. princ."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micr. pe tast. simb."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Intr. vocală dezact."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nicio metodă de intrare vocală activată. Verificați setările pentru limbă și introducere de text."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Configuraţi metodele de intrare"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Selectaţi limba"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Trimiteți feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Limbi de introducere de text"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Atingeţi din nou pentru a salva"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Dicţionar disponibil"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Activaţi feedback de la utilizatori"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Ajutați la îmbunătățirea acestui instrument de editare a metodelor de introducere a textului trimițând în mod automat statistici de utilizare și rapoarte de blocare."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Temă pentru tastatură"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"engleză (Regatul Unit)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"engleză (S.U.A.)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"spaniolă (S.U.A.)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engleză (Regatul Unit) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engleză (S.U.A.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spaniolă (S.U.A.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradițional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engleză (Regatul Unit) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engleză (S.U.A.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spaniolă (S.U.A.) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradițională)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Chirilică)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latină)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Nicio limbă (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +102,11 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Schemă de culori"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Alb"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Albastru"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"Temă pentru tastatură"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"Holo White"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"Holo Blue"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"Material Dark"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"Material Light"</string>
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Stiluri personalizate"</string>
     <string name="add_style" msgid="6163126614514489951">"Stil"</string>
     <string name="add" msgid="8299699805688017798">"Adăugaţi"</string>
@@ -161,14 +118,13 @@
     <string name="enable" msgid="5031294444630523247">"Activaţi"</string>
     <string name="not_now" msgid="6172462888202790482">"Nu acum"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Acelaşi stil de introducere există deja: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modul Studiu privind utilizarea"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Timpul apăsării lungi a tastei"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrare după apăsarea tastei"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Sunet la apăsarea tastelor"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Citiți fișierul de dicționar extern"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Nu există fișiere dicționar în dosarul Descărcări"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Selectați un fișier dicționar de instalat"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Doriți să instalați acest fișier pentru <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Doriți să instalați acest fișier pentru <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"A apărut o eroare"</string>
     <string name="button_default" msgid="3988017840431881491">"Prestabilit"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Bun venit la <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +163,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Actualizați"</string>
     <string name="last_update" msgid="730467549913588780">"Data ultimei modificări"</string>
     <string name="message_updating" msgid="4457761393932375219">"Se verifică existența actualizărilor"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Se încarcă..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Se încarcă..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Dicționar principal"</string>
     <string name="cancel" msgid="6830980399865683324">"Anulaţi"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Setări"</string>
     <string name="install_dict" msgid="180852772562189365">"Instalați"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Anulați"</string>
     <string name="delete_dict" msgid="756853268088330054">"Ștergeți"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Limba selectată pe dispozitivul mobil are un dicționar disponibil.&lt;br/&gt; Vă recomandăm să &lt;b&gt;descărcați&lt;/b&gt; dicționarul de <xliff:g id="LANGUAGE">%1$s</xliff:g> pentru a vă îmbunătăți experiența la introducerea textului.&lt;br/&gt; &lt;br/&gt; Descărcarea prin 3G poate dura un minut sau două. Se pot aplica taxe dacă nu aveți un &lt;b&gt;plan de date nelimitat&lt;/b&gt;.&lt;br/&gt; Dacă nu știți sigur ce plan de date aveți, găsiți o conexiune Wi-Fi și descărcați automat.&lt;br/&gt; &lt;br/&gt; Sfat: puteți să descărcați și să eliminați dicționare accesând &lt;b&gt;Limbă și introducere de text&lt;/b&gt; din meniul &lt;b&gt;Setări&lt;/b&gt;, pe dispozitivul mobil."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Pentru limba selectată pe dispozitivul dvs. mobil este disponibil un dicționar.&lt;br/&gt; Vă recomandăm să &lt;b&gt;descărcați&lt;/b&gt; dicționarul de <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> pentru o mai bună experiență a introducerii de text.&lt;br/&gt; &lt;br/&gt; Descărcarea poate dura un minut sau două prin 3G. Dacă nu aveți un &lt;b&gt;plan de date nelimitat&lt;/b&gt;, se pot aplica taxe.&lt;br/&gt; Dacă nu știți sigur ce plan de date aveți, vă recomandăm să căutați o conexiune Wi-Fi pentru a începe automat descărcarea.&lt;br/&gt; &lt;br/&gt; Sfat: puteți să descărcați și să ștergeți dicționare accesând opțiunea &lt;b&gt;Limbă și introducere de text&lt;/b&gt; din meniul &lt;b&gt;Setări&lt;/b&gt; al dispozitivului mobil."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Descărcați acum (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Descărcați prin Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Este disponibil un dicționar pentru <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Este disponibil un dicționar pentru <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Apăsați pentru examinare și descărcare"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Se descarcă: sugestiile pentru <xliff:g id="LANGUAGE">%1$s</xliff:g> vor fi gata în curând."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Se descarcă: sugestiile pentru <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> vor fi gata în curând."</string>
     <string name="version_text" msgid="2715354215568469385">"Versiunea <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Adăugați"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Adăugați în dicționar"</string>
diff --git a/java/res/values-ru/strings-action-keys.xml b/java/res/values-ru/strings-action-keys.xml
index d5080ce..d276384 100644
--- a/java/res/values-ru/strings-action-keys.xml
+++ b/java/res/values-ru/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Назад"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Готово"</string>
     <string name="label_send_key" msgid="482252074224462163">"Отправить"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Поиск"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Пауза"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Пауза"</string>
 </resources>
diff --git a/java/res/values-ru/strings-config-important-notice.xml b/java/res/values-ru/strings-config-important-notice.xml
new file mode 100644
index 0000000..5e6999c
--- /dev/null
+++ b/java/res/values-ru/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Устройство будет запоминать то, что вы вводите чаще всего"</string>
+</resources>
diff --git a/java/res/values-ru/strings-letter-descriptions.xml b/java/res/values-ru/strings-letter-descriptions.xml
new file mode 100644
index 0000000..bbc4974
--- /dev/null
+++ b/java/res/values-ru/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Женский порядковый индикатор."</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Знак микро."</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Мужской порядковый индикатор."</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Эсцет."</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Латинская A с грависом."</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Латинская A с акутом."</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"Латинская A с циркумфлексом."</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"Латинская A с тильдой."</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"Латинская A с умляутом."</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"Латинская A с кружком сверху."</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Лигатура из латинских A и E."</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Латинская C с седилью."</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Латинская E с грависом."</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Латинская E с акутом."</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Латинская E с циркумфлексом."</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Латинская E с умляутом."</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Латинская I с грависом."</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Латинская I с акутом."</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"Латинская I с циркумфлексом."</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"Латинская I с умляутом."</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth."</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Латинская N с тильдой."</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Латинская O с грависом."</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Латинская O с акутом."</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"Латинская O с циркумфлексом."</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"Латинская O с тильдой."</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"Латинская O с умляутом."</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Латинская O, диагонально перечеркнутая."</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Латинская U с грависом."</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Латинская U с акутом."</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"Латинская U с циркумфлексом."</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"Латинская U с умляутом."</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Латинская Y с акутом."</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Торн."</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Латинская Y с умляутом."</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"Латинская A с макроном."</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"Латинская A с бревисом."</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"Латинская A с огонэком."</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Латинская C с акутом."</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Латинская C с циркумфлексом."</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Латинская C с точкой сверху."</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Латинская C с гачеком."</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Латинская D с гачеком."</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Латинская D с чертой."</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Латинская E с макроном."</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Латинская E с бревисом."</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Латинская E с точкой сверху."</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Латинская E с огонэком."</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Латинская E с гачеком."</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Латинская G с циркумфлексом."</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Латинская G с бревисом."</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Латинская G с точкой сверху."</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Латинская G с седилью."</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Латинская H с циркумфлексом."</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Латинская H с чертой."</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"Латинская I с тильдой."</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"Латинская I с макроном."</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"Латинская I с бревисом."</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"Латинская I с огонэком."</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Латинская I без точки."</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Лигатура из латинских I и J."</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Латинская J с циркумфлексом."</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"Латинская K с седилью."</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Латинская L с акутом."</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"Латинская L с седилью."</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Латинская L с гачеком."</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"Латинская L с точкой сбоку."</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Латинская L с чертой."</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Латинская N с акутом."</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Латинская N с седилью."</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Латинская N с гачеком."</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"Латинская N с апострофом слева."</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Энг"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"Латинская O с макроном."</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"Латинская O с бревисом."</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"Латинская O с двойным акутом."</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Лигатура из латинских O и E"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Латинская R с акутом"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Латинская R с седилью."</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Латинская R с гачеком."</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Латинская S с акутом."</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"Латинская S с циркумфлексом."</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"Латинская S с седилью."</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Латинская S с гачеком."</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Латинская T с седилью."</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Латинская T с гачеком."</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Латинская T с чертой."</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"Латинская U с тильдой."</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"Латинская U с макроном."</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"Латинская U с бревисом."</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"Латинская U с кружком сверху."</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"Латинская U с двойным акутом."</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"Латинская U с огонэком."</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Латинская W с циркумфлексом."</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Латинская Y с циркумфлексом."</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Латинская Z с акутом."</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Латинская Z с точкой сверху."</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Латинская Z с гачеком."</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Латинская S длинная."</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"Латинская O с крючком."</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"Латинская U с крючком."</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"Латинская S с запятой снизу."</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Латинская T с запятой снизу."</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва."</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"Латинская A с точкой снизу."</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"Латинская A с крючком сверху."</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"Латинская A с циркумфлексом и акутом."</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"Латинская A с циркумфлексом и грависом."</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"Латинская A с крючком сверху и циркумфлексом."</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"Латинская A с циркумфлексом и тильдой."</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"Латинская A с точкой снизу и циркумфлексом."</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Латинская A с бревисом и акутом."</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"Латинская A с бревисом и грависом."</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"Латинская A с крючком сверху и бревисом."</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"Латинская A с бревисом и тильдой."</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"Латинская A с точкой снизу и бревисом."</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Латинская E с точкой снизу."</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Латинская E с крючком сверху."</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"Латинская E с тильдой."</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"Латинская E с циркумфлексом и акутом."</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"Латинская E с циркумфлексом и грависом."</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Латинская E с крючком сверху и циркумфлексом."</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Латинская E с циркумфлексом и тильдой."</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"Латинская E с точкой снизу и циркумфлексом."</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"Латинская I с крючком сверху."</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"Латинская I с точкой снизу."</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"Латинская O с точкой снизу."</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"Латинская O с крючком сверху."</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"Латинская O с циркумфлексом и акутом."</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"Латинская O с циркумфлексом и грависом."</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"Латинская O с крючком сверху и циркумфлексом."</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"Латинская O с циркумфлексом и тильдой."</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"Латинская O с точкой снизу и циркумфлексом."</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"Латинская O с рожком и акутом."</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"Латинская O с рожком и грависом."</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"Латинская O с крючком сверху и рожком."</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"Латинская O с крючком и тильдой."</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"Латинская O с точкой снизу и крючком."</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"Латинская U с точкой снизу."</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"Латинская U с крючком сверху."</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"Латинская U с крючком и акутом."</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"Латинская U с крючком и грависом."</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"Латинская U с крючком и крючком сверху."</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"Латинская U с крючком и тильдой."</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"Латинская U с точкой снизу и крючком."</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Латинская Y с грависом."</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Латинская Y с точкой снизу."</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Латинская Y с крючком сверху."</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Латинская Y с тильдой."</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Перевернутый восклицательный знак."</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Открывающая двойная французская кавычка."</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Интерпункт."</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Единица в надстрочном начертании."</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Закрывающая двойная французская кавычка."</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Перевернутый вопросительный знак."</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Открывающая одиночная английская кавычка."</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Закрывающая одиночная английская кавычка."</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Одиночная нижняя кавычка."</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Открывающая двойная английская кавычка."</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Закрывающая двойная английская кавычка."</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Типографский крестик."</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Двойной крестик."</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Знак промилле."</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Штрих."</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Двойной штрих."</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Открывающая одиночная угловая кавычка."</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Закрывающая одиночная угловая кавычка."</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Четверка в надстрочном начертании."</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Строчная латинская n в надстрочном начертании."</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Знак песо."</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Знак Care of."</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Стрелка вправо."</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Стрелка вниз."</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Знак пустого множества."</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Дельта."</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Меньше или равно."</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Больше или равно."</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Черная звезда."</string>
+</resources>
diff --git a/java/res/values-ru/strings-talkback-descriptions.xml b/java/res/values-ru/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..b23d40d
--- /dev/null
+++ b/java/res/values-ru/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Подключите гарнитуру, чтобы услышать пароль."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Введенный текст: %s."</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Текст не введен."</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"При нажатии клавиши <xliff:g id="KEY_NAME">%1$s</xliff:g> слово <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> будет исправлено на <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>."</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Клавиша <xliff:g id="KEY_NAME">%1$s</xliff:g> выполняет автоисправление."</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Неизвестный символ."</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Клавиша верхнего регистра."</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Дополнительные символы."</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Клавиша верхнего регистра."</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Символы."</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Клавиша верхнего регистра."</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Удалить."</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Символы."</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Буквы."</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Цифры."</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Настройки."</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Клавиша Tab."</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Пробел."</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Голосовой ввод."</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Смайлики."</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Ввод."</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Поиск."</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Маркер списка."</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Сменить язык."</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Далее."</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Назад."</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Верхний регистр включен."</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock включен."</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим добавления символов."</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Режим дополнительных символов."</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим ввода текста."</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим набора номера."</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим телефонных символов."</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Клавиатура скрыта."</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Включен режим <xliff:g id="KEYBOARD_MODE">%s</xliff:g>."</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ввода даты"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ввода даты и времени"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ввода адреса электронной почты"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ввода сообщения"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"ввода цифр"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"набора номера"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ввода текста"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ввода времени"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"ввода URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Недавно использованные."</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Люди."</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Объекты."</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Природа."</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Места."</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Символы."</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Смайлики."</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Заглавная <xliff:g id="LOWER_LETTER">%s</xliff:g>."</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Заглавная латинская I."</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Заглавная латинская I с точкой сверху."</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Неизвестный символ."</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Неизвестный смайлик."</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Доступны дополнительные символы."</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Дополнительные символы скрыты."</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Доступны дополнительные подсказки."</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Дополнительные подсказки скрыты."</string>
+</resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 8bbaead..cac1865 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Настройки"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Все команды"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Поиск контактов"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Обращаться к списку контактов при проверке правописания"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Виброотклик клавиш"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук клавиш"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Увеличение нажатых"</string>
-    <string name="general_category" msgid="1859088467017573195">"Общие"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Исправление текста"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Непрерывный ввод"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Другие варианты"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Расширенные настройки"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Для опытных пользователей"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Смена способов ввода"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Клавиша переключения языков также служит для смены способа ввода"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Клавиша смены языка"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"По умолчанию"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Подсказывать имена"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Подсказывать исправления на основе имен из списка контактов"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Пользовательские словари"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Помочь улучшить <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Ставить точки автоматически"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Вводить точку с пробелом двойным нажатием кнопки \"Пробел\"."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Заглавные автоматически"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Рисовать линию"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Показывать подсказки"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Показывать подсказки при вводе текста"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: сохранено"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Подключите гарнитуру, чтобы услышать пароль."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Введенный текст: %s."</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Текст не введен"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"При нажатии клавиши \"<xliff:g id="KEY">%1$s</xliff:g>\" слово \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" будет исправлено на \"<xliff:g id="CORRECTED">%3$s</xliff:g>\""</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Для клавиши \"<xliff:g id="KEY">%1$s</xliff:g>\" назначена функция автоисправления"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Код клавиши:%d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Клавиша верхнего регистра"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Верхний регистр включен (нажмите, чтобы отключить)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock включен (нажмите, чтобы отключить)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Клавиша удаления"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Клавиша символов"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Буквы"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Цифры"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Настройки"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Клавиша табуляции"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Пробел"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Голосовой ввод"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлик"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Клавиша \"Ввод\""</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Поиск"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Точка"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Сменить язык"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Далее"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Назад"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Верхний регистр включен"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock включен"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Верхний регистр отключен"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Режим добавления символов"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим ввода текста"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим набора номера"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим телефонных символов"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Клавиатура скрыта"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Включен режим <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"ввода даты"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"ввода даты и времени"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"ввода адреса электронной почты"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"ввода сообщения"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"ввода цифр"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"набора номера"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"ввода текста"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ввода времени"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"ввода URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Непрерывный ввод фраз"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Проводите по клавише пробела после каждого слова"</string>
     <string name="voice_input" msgid="3583258583521397548">"Кнопка голосового ввода"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Значок на основной клавиатуре"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Значок на клавиатуре символов"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Выкл."</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Значок на основной клавиатуре"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Значок на клавиатуре символов"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голосовой ввод откл."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Голосовой способ ввода не включен. Проверьте раздел настроек \"Язык и ввод\"."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Настройка способов ввода"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Языки ввода"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Отправить отзыв"</string>
     <string name="select_language" msgid="3693815588777926848">"Языки ввода"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Нажмите, чтобы сохранить"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Доступен словарь"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Включить отправку сведений"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Помогите усовершенствовать редактор способа ввода, разрешив отправку статистики и отчетов о сбоях"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Тема клавиатуры"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"английский (Великобритания)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"английский (США)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Испанский (США)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Английская (Великобр.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Английская (США) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Испанский (США): <xliff:g id="LAYOUT">%s</xliff:g>"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (традиционный)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Английский (Великобритания, <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Английский (США, <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Испанский (США, <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (классическая)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (кириллица)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (латиница)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Язык не определен (латиница)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Латиница (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Латиница (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Латиница (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Латиница (ПК)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Эмодзи"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Цветовая гамма"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Белый"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Синий"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Персонализированные стили"</string>
     <string name="add_style" msgid="6163126614514489951">"Добавить стиль"</string>
     <string name="add" msgid="8299699805688017798">"Добавить"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Включить"</string>
     <string name="not_now" msgid="6172462888202790482">"Не сейчас"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Такой стиль ввода уже существует: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим проверки удобства использования"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Долгое нажатие"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Вибросигнал при нажатии клавиш"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Звук при нажатии клавиш"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Загрузить словарь из файла"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"В папке \"Загрузки\" нет словарей"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Выберите файл словаря"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Установить этот файл для следующего языка: <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Установить этот файл для следующего языка: <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Ошибка"</string>
     <string name="button_default" msgid="3988017840431881491">"По умолчанию"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Представляем приложение \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\""</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Обновить"</string>
     <string name="last_update" msgid="730467549913588780">"Последнее обновление"</string>
     <string name="message_updating" msgid="4457761393932375219">"Проверка обновлений…"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Загрузка..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Загрузка…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Основной словарь"</string>
     <string name="cancel" msgid="6830980399865683324">"Отмена"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Настройки"</string>
     <string name="install_dict" msgid="180852772562189365">"Установить"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Отмена"</string>
     <string name="delete_dict" msgid="756853268088330054">"Удалить"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Доступен <xliff:g id="LANGUAGE">%1$s</xliff:g> словарь для проверки правописания.&lt;br/&gt;Рекомендуем &lt;b&gt;установить&lt;/b&gt; его, чтобы быстрее вводить текст.&lt;br/&gt;&lt;br/&gt;Если вашим тарифом предусмотрена &lt;b&gt;безлимитная передача данных&lt;/b&gt;, словарь можно загрузить через сеть 3G (это займет всего пару минут).&lt;br/&gt;Если вы не помните подробностей своего тарифного плана, лучше подключитесь к сети Wi-Fi (загрузка начнется автоматически).&lt;br/&gt;&lt;br/&gt;Совет. Чтобы добавить, удалить или настроить словарь, откройте раздел &lt;b&gt;Язык и ввод&lt;/b&gt; в настройках своего устройства."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Доступен словарь для проверки правописания (<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>).&lt;br/&gt;Рекомендуем &lt;b&gt;установить&lt;/b&gt; его, чтобы быстрее вводить текст.&lt;br/&gt;&lt;br/&gt;Если вашим тарифом предусмотрена &lt;b&gt;безлимитная передача данных&lt;/b&gt;, словарь можно загрузить через сеть 3G (это займет всего пару минут).&lt;br/&gt;Если вы не помните подробностей своего тарифного плана, лучше подключитесь к сети Wi-Fi (загрузка начнется автоматически).&lt;br/&gt;&lt;br/&gt;Совет. Чтобы добавлять, удалять и настраивать словари, откройте раздел &lt;b&gt;Язык и ввод&lt;/b&gt; в настройках устройства."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Загрузить (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> МБ)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Загрузить через Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Доступен словарь: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Доступен словарь: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Нажмите, чтобы просмотреть и загрузить"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Загрузка словаря: <xliff:g id="LANGUAGE">%1$s</xliff:g>…"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Загрузка словаря (<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>)…"</string>
     <string name="version_text" msgid="2715354215568469385">"Версия <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Добавить"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Добавление в словарь"</string>
diff --git a/java/res/values-si-rLK/strings-action-keys.xml b/java/res/values-si-rLK/strings-action-keys.xml
new file mode 100644
index 0000000..2271ce9
--- /dev/null
+++ b/java/res/values-si-rLK/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"යන්න"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"මීළඟ"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"පෙර"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"හරි"</string>
+    <string name="label_send_key" msgid="482252074224462163">"යවන්න"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"සොයන්න"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"විරාමය"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"රැඳීම"</string>
+</resources>
diff --git a/java/res/values-si-rLK/strings-appname.xml b/java/res/values-si-rLK/strings-appname.xml
new file mode 100644
index 0000000..1081048
--- /dev/null
+++ b/java/res/values-si-rLK/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android යතුරු පුවරුව (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android අක්ෂර වින්‍යාස පරීක්ෂක (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android යතුරු පුවරු සැකසීම් (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android අක්ෂර වින්‍යාස පරීක්ෂක සැකසීම් (AOSP)"</string>
+</resources>
diff --git a/java/res/values-si-rLK/strings-config-important-notice.xml b/java/res/values-si-rLK/strings-config-important-notice.xml
new file mode 100644
index 0000000..b13f724
--- /dev/null
+++ b/java/res/values-si-rLK/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"යෝජනා දියුණුවට, ඔබගේ සන්නිවේදන සහ ටයිප් කළ දත්තවලින් ඉගෙන ගන්න"</string>
+</resources>
diff --git a/java/res/values-si-rLK/strings-emoji-descriptions.xml b/java/res/values-si-rLK/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..14187a6
--- /dev/null
+++ b/java/res/values-si-rLK/strings-emoji-descriptions.xml
@@ -0,0 +1,851 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_emoji_00A9" msgid="2859822817116803638">"ප්‍රකාශන හිමිකම් ලකුණ"</string>
+    <string name="spoken_emoji_00AE" msgid="7708335454134589027">"ලියාපදිංචි කළ ලකුණ"</string>
+    <string name="spoken_emoji_203C" msgid="153340916701508663">"Double exclamation mark"</string>
+    <string name="spoken_emoji_2049" msgid="4877256448299555371">"Exclamation question mark"</string>
+    <string name="spoken_emoji_2122" msgid="9188440722954720429">"Trade mark සලකුණ"</string>
+    <string name="spoken_emoji_2139" msgid="9114342638917304327">"Information source"</string>
+    <string name="spoken_emoji_2194" msgid="8055202727034946680">"Left right ඊතලය"</string>
+    <string name="spoken_emoji_2195" msgid="8028122253301087407">"Up down ඊතලය"</string>
+    <string name="spoken_emoji_2196" msgid="4019164898967854363">"North west ඊතලය"</string>
+    <string name="spoken_emoji_2197" msgid="4255723717709017801">"North east ඊතලය"</string>
+    <string name="spoken_emoji_2198" msgid="1452063451313622090">"South east ඊතලය"</string>
+    <string name="spoken_emoji_2199" msgid="6942722693368807849">"South west ඊතලය"</string>
+    <string name="spoken_emoji_21A9" msgid="5204750172335111188">"Leftwards ඊතලය සමඟ hook"</string>
+    <string name="spoken_emoji_21AA" msgid="3950259884359247006">"Rightwards ඊතලය සමඟ hook"</string>
+    <string name="spoken_emoji_231A" msgid="6751448803233874993">"නරඹන්න"</string>
+    <string name="spoken_emoji_231B" msgid="5956428809948426182">"Hourවීදුරුව"</string>
+    <string name="spoken_emoji_23E9" msgid="4022497733535162237">"කළු right-pointing double triangle"</string>
+    <string name="spoken_emoji_23EA" msgid="2251396938087774944">"කළු left-pointing double triangle"</string>
+    <string name="spoken_emoji_23EB" msgid="3746885195641491865">"කළු up-pointing double triangle"</string>
+    <string name="spoken_emoji_23EC" msgid="7852372752901163416">"කළු down-pointing double triangle"</string>
+    <string name="spoken_emoji_23F0" msgid="8474219588750627870">"සීනු ඔරලෝසුව"</string>
+    <string name="spoken_emoji_23F3" msgid="166900119581024371">"Hourවීදුරුව සමඟ flowing sසහ"</string>
+    <string name="spoken_emoji_24C2" msgid="3948348737566038470">"කව කළ latin capital letter m"</string>
+    <string name="spoken_emoji_25AA" msgid="7865181015100227349">"කළු small square"</string>
+    <string name="spoken_emoji_25AB" msgid="6446532820937381457">"සුදු small square"</string>
+    <string name="spoken_emoji_25B6" msgid="2423897708496040947">"කළු right-pointing triangle"</string>
+    <string name="spoken_emoji_25C0" msgid="3595083440074484934">"කළු left-pointing triangle"</string>
+    <string name="spoken_emoji_25FB" msgid="4838691986881215419">"සුදු මධ්‍යම square"</string>
+    <string name="spoken_emoji_25FC" msgid="7008859564991191050">"කළු මධ්‍යම square"</string>
+    <string name="spoken_emoji_25FD" msgid="7673439755069217479">"සුදු මධ්‍යම small square"</string>
+    <string name="spoken_emoji_25FE" msgid="6782214109919768923">"කළු මධ්‍යමකුඩා"</string>
+    <string name="spoken_emoji_2600" msgid="2272722634618990413">"රැස් සමඟ කළු ඉරු"</string>
+    <string name="spoken_emoji_2601" msgid="6205136889311537150">"වලාකුළ"</string>
+    <string name="spoken_emoji_260E" msgid="8670395193046424238">"කළු දුරකථනය"</string>
+    <string name="spoken_emoji_2611" msgid="4530550203347054611">"හරි සමඟ ඡන්ද පෙට්ටිය"</string>
+    <string name="spoken_emoji_2614" msgid="1612791247861229500">"වැහි බිංදු සමඟ කුඩය"</string>
+    <string name="spoken_emoji_2615" msgid="3320562382424018588">"උණුසුම් බීම"</string>
+    <string name="spoken_emoji_261D" msgid="4690554173549768467">"ඉහළට දිගුකර සිටින සුචිය"</string>
+    <string name="spoken_emoji_263A" msgid="3170094381521989300">"සුදු සිනාසෙන මුහුණ"</string>
+    <string name="spoken_emoji_2648" msgid="4621241062667020673">"මේෂ"</string>
+    <string name="spoken_emoji_2649" msgid="7694461245947059086">"වෘෂභ"</string>
+    <string name="spoken_emoji_264A" msgid="1258074605878705030">"මිථුන"</string>
+    <string name="spoken_emoji_264B" msgid="4409219914377810956">"කටක"</string>
+    <string name="spoken_emoji_264C" msgid="6520255367817054163">"සිංහ"</string>
+    <string name="spoken_emoji_264D" msgid="1504758945499854018">"කන්‍යා"</string>
+    <string name="spoken_emoji_264E" msgid="2354847104530633519">"තුලා"</string>
+    <string name="spoken_emoji_264F" msgid="5822933280406416112">"වෘශ්චික"</string>
+    <string name="spoken_emoji_2650" msgid="4832481156714796163">"ධනු"</string>
+    <string name="spoken_emoji_2651" msgid="840953134601595090">"මකර"</string>
+    <string name="spoken_emoji_2652" msgid="3586925968718775281">"කුම්භ"</string>
+    <string name="spoken_emoji_2653" msgid="8420547731496254492">"මීන"</string>
+    <string name="spoken_emoji_2660" msgid="4541170554542412536">"කළු ඉස්කෝප්ප කට්ටළය"</string>
+    <string name="spoken_emoji_2663" msgid="3669352721942285724">"කළු කලාබර කට්ටළය"</string>
+    <string name="spoken_emoji_2665" msgid="6347941599683765843">"කළු හරත කට්ටළය"</string>
+    <string name="spoken_emoji_2666" msgid="8296769213401115999">"කළු දියමන්ති කට්ටළය"</string>
+    <string name="spoken_emoji_2668" msgid="7063148281053820386">"උණුසුම් දුනු"</string>
+    <string name="spoken_emoji_267B" msgid="21716857176812762">"කළු පොදු ප්‍රතිචක්‍රකරණය කිරීමේ සංකේතය"</string>
+    <string name="spoken_emoji_267F" msgid="8833496533226475443">"රෝද පුටුවේ සංකේතය"</string>
+    <string name="spoken_emoji_2693" msgid="7443148847598433088">"නැංගුරම"</string>
+    <string name="spoken_emoji_26A0" msgid="6272635532992727510">"අනතුරු ඇඟවීමේ සලකුණ"</string>
+    <string name="spoken_emoji_26A1" msgid="5604749644693339145">"ඉහළ වෝල්ටියතා සලකුණ"</string>
+    <string name="spoken_emoji_26AA" msgid="8005748091690377153">"මධ්‍යම සුදු කවය"</string>
+    <string name="spoken_emoji_26AB" msgid="1655910278422753244">"මධ්‍යම කළු කවය"</string>
+    <string name="spoken_emoji_26BD" msgid="1545218197938889737">"පාපන්දුබෝලය"</string>
+    <string name="spoken_emoji_26BE" msgid="8959760533076498209">"බේස්බෝල්"</string>
+    <string name="spoken_emoji_26C4" msgid="3045791757044255626">"හිම නොමැතිව හිමෙන් සෑදු මිනිසා"</string>
+    <string name="spoken_emoji_26C5" msgid="5580129409712578639">"වලාකුළු වලට පිටුපසින් ඉර"</string>
+    <string name="spoken_emoji_26CE" msgid="8963656417276062998">"ඔෆිචුස්"</string>
+    <string name="spoken_emoji_26D4" msgid="2231451988209604130">"ඇතුළත් වීමට බෑ"</string>
+    <string name="spoken_emoji_26EA" msgid="7513319636103804907">"දේවස්ථානය"</string>
+    <string name="spoken_emoji_26F2" msgid="7134115206158891037">"ජලාශය"</string>
+    <string name="spoken_emoji_26F3" msgid="4912302210162075465">"හිල තුළ කොඩිය"</string>
+    <string name="spoken_emoji_26F5" msgid="4766328116769075217">"රුවල් බෝට්ටුව"</string>
+    <string name="spoken_emoji_26FA" msgid="5888017494809199037">"කූඩාරම"</string>
+    <string name="spoken_emoji_26FD" msgid="2417060622927453534">"ඉන්ධන පොම්පය"</string>
+    <string name="spoken_emoji_2702" msgid="4005741160717451912">"කළු කතුර"</string>
+    <string name="spoken_emoji_2705" msgid="164605766946697759">"සුදු විශාල හරි ලකුණ"</string>
+    <string name="spoken_emoji_2708" msgid="7153840886849268988">"ගුවන් යානය"</string>
+    <string name="spoken_emoji_2709" msgid="2217319160724311369">"ලියුම් කවරය"</string>
+    <string name="spoken_emoji_270A" msgid="508347232762319473">"ඉහළට එසවූ අතේ මිට"</string>
+    <string name="spoken_emoji_270B" msgid="6640562128327753423">"ඉහළට එසවූ අත"</string>
+    <string name="spoken_emoji_270C" msgid="1344288035704944581">"ජයග්‍රහි අත"</string>
+    <string name="spoken_emoji_270F" msgid="6108251586067318718">"පැන්සල"</string>
+    <string name="spoken_emoji_2712" msgid="6320544535087710482">"කළු තුඩ"</string>
+    <string name="spoken_emoji_2714" msgid="1968242800064001654">"විශාල හරි x"</string>
+    <string name="spoken_emoji_2716" msgid="511941294762977228">"විශාල වැඩි කිරීමේ x"</string>
+    <string name="spoken_emoji_2728" msgid="5650330815808691881">"දිලිසෙනවා"</string>
+    <string name="spoken_emoji_2733" msgid="8915809595141157327">"ගරාදිය අටක් ඇති තරු ලකුණ"</string>
+    <string name="spoken_emoji_2734" msgid="4846583547980754332">"ලක්ෂ අටක් ඇති කළු තුරු"</string>
+    <string name="spoken_emoji_2744" msgid="4350636647760161042">"හිම මල්"</string>
+    <string name="spoken_emoji_2747" msgid="3718282973916474455">"දිලිසෙනවා"</string>
+    <string name="spoken_emoji_274C" msgid="2752145886733295314">"හරස් ලකුණ"</string>
+    <string name="spoken_emoji_274E" msgid="4262918689871098338">"ඍණ සමචතුරස‍්‍රගත හරස් ලකුණ"</string>
+    <string name="spoken_emoji_2753" msgid="6935897159942119808">"කළු ප්‍රශ්නාර්ථ ලකුණු සැරසිල්ල"</string>
+    <string name="spoken_emoji_2754" msgid="7277504915105532954">"සුදු ප්‍රශ්නාර්ථ ලකුණු සැරසිල්ල"</string>
+    <string name="spoken_emoji_2755" msgid="6853076969826960210">"සුදු විශාල අසිර්වද ලකුණු සැරසිල්ල"</string>
+    <string name="spoken_emoji_2757" msgid="3707907828776912174">"විශාල අසිර්වද ලකුණු සංකේතය"</string>
+    <string name="spoken_emoji_2764" msgid="4214257843609432167">"අධික කළු හෘදය"</string>
+    <string name="spoken_emoji_2795" msgid="6563954833786162168">"විශාල ධන සංඥාව"</string>
+    <string name="spoken_emoji_2796" msgid="5990926508250772777">"විශාල ඍණ සංඥාව"</string>
+    <string name="spoken_emoji_2797" msgid="24694184172879174">"විශාල බෙදීමේ සංඥාව"</string>
+    <string name="spoken_emoji_27A1" msgid="3513434778263100580">"කළු දකුණට ඇති ඊතලය"</string>
+    <string name="spoken_emoji_27B0" msgid="203395646864662198">"වක්‍ර ලූපය"</string>
+    <string name="spoken_emoji_27BF" msgid="4940514642375640510">"ද්විත්ව වක්‍ර ලූපය"</string>
+    <string name="spoken_emoji_2934" msgid="9062130477982973457">"ඊතලය දකුණට ඉලක්කගතව ඉන් පසු ඉහළට වක්‍රවේ"</string>
+    <string name="spoken_emoji_2935" msgid="6198710960720232074">"ඊතලය දකුණට ඉලක්කගතව ඉන් පසු පහළට වක්‍රවේ"</string>
+    <string name="spoken_emoji_2B05" msgid="4813405635410707690">"වමට කළු ඊතලය"</string>
+    <string name="spoken_emoji_2B06" msgid="1223172079106250748">"ඉහළට කළු ඊතලය"</string>
+    <string name="spoken_emoji_2B07" msgid="1599124424746596150">"පහළට ඇති කළු ඊතලය"</string>
+    <string name="spoken_emoji_2B1B" msgid="3461247311988501626">"කළු විශාල කොටුව"</string>
+    <string name="spoken_emoji_2B1C" msgid="5793146430145248915">"සුදු විශාල කොටුව"</string>
+    <string name="spoken_emoji_2B50" msgid="3850845519526950524">"සුදු මධ්‍යම තුරු"</string>
+    <string name="spoken_emoji_2B55" msgid="9137882158811541824">"බර විශාල රවුම"</string>
+    <string name="spoken_emoji_3030" msgid="4609172241893565639">"රැලි ඉර"</string>
+    <string name="spoken_emoji_303D" msgid="2545833934975907505">"කොටස් ප්‍රත්‍යාවර්තන ලකුණ"</string>
+    <string name="spoken_emoji_3297" msgid="928912923628973800">"කව කළ භාවලේඛය සතුට පළ කිරීම"</string>
+    <string name="spoken_emoji_3299" msgid="3930347573693668426">"කව කළ භාවලේඛය රහස"</string>
+    <string name="spoken_emoji_1F004" msgid="1705216181345894600">"මහ්ජෝන් ටයිල් රතු මකරා"</string>
+    <string name="spoken_emoji_1F0CF" msgid="7601493592085987866">"කළු කවටයා කාඩ් ක්‍රීඩා කරමින්"</string>
+    <string name="spoken_emoji_1F170" msgid="3817698686602826773">"ලේ වර්ගය A"</string>
+    <string name="spoken_emoji_1F171" msgid="3684218589626650242">"ලේ වර්ගය B"</string>
+    <string name="spoken_emoji_1F17E" msgid="2978809190364779029">"ලේ වර්ගය O"</string>
+    <string name="spoken_emoji_1F17F" msgid="463634348668462040">"වාහන නැවැත් වීමේ තැන"</string>
+    <string name="spoken_emoji_1F18E" msgid="1650705325221496768">"ලේ වර්ගය AB"</string>
+    <string name="spoken_emoji_1F191" msgid="5386969264431429221">"සමචතුරස‍්‍රගත CL"</string>
+    <string name="spoken_emoji_1F192" msgid="8324226436829162496">"සමචතුරස‍්‍රගත සිසිල්"</string>
+    <string name="spoken_emoji_1F193" msgid="4731758603321515364">"සමචතුරස‍්‍රගත නිදහස්"</string>
+    <string name="spoken_emoji_1F194" msgid="4903128609556175887">"සමචතුරස‍්‍රගත ID"</string>
+    <string name="spoken_emoji_1F195" msgid="1433142500411060924">"සමචතුරස‍්‍රගත අලුත්"</string>
+    <string name="spoken_emoji_1F196" msgid="8825160701159634202">"සමචතුරස‍්‍රගත N G"</string>
+    <string name="spoken_emoji_1F197" msgid="7841079241554176535">"සමචතුරස‍්‍රගත හරි"</string>
+    <string name="spoken_emoji_1F198" msgid="7020298909426960622">"සමචතුරස‍්‍රගත SOS"</string>
+    <string name="spoken_emoji_1F199" msgid="5971252667136235630">"කෑගැසීමේ ලකුණ සමඟ සමචතුරස‍්‍රගත ඉහළ"</string>
+    <string name="spoken_emoji_1F19A" msgid="4557270135899843959">"සමචතුරස‍්‍රගත vs"</string>
+    <string name="spoken_emoji_1F201" msgid="7000490044681139002">"මෙතැන සමචතුරස‍්‍රගත කටකන"</string>
+    <string name="spoken_emoji_1F202" msgid="8560906958695043947">"සමචතුරස‍්‍රගත කටකන සේවාව"</string>
+    <string name="spoken_emoji_1F21A" msgid="1496435317324514033">"සමචතුරස‍්‍රගත භාවලේඛය අය කිරීම් වලින්-නිදහස්"</string>
+    <string name="spoken_emoji_1F22F" msgid="609797148862445402">"සමචතුරස‍්‍රගත භාවලේඛය වෙන් කළ-ආසනය"</string>
+    <string name="spoken_emoji_1F232" msgid="8125716331632035820">"සමචතුරස‍්‍රගත භාවලේඛය තහනම් කරනවා"</string>
+    <string name="spoken_emoji_1F233" msgid="8749401090457355028">"සමචතුරස‍්‍රගත භාවලේඛය පුරප්පාඩුව"</string>
+    <string name="spoken_emoji_1F234" msgid="3546951604285970768">"සමචතුරස‍්‍රගත භාවලේඛය පිළිගැනීම"</string>
+    <string name="spoken_emoji_1F235" msgid="5320186982841793711">"සමචතුරස‍්‍රගත භාවලේඛය සම්පූර්ණ පදිංචි කාලය"</string>
+    <string name="spoken_emoji_1F236" msgid="879755752069393034">"සමචතුරස‍්‍රගත භාවලේඛය ගෙවන ලද"</string>
+    <string name="spoken_emoji_1F237" msgid="6741807001205851437">"සමචතුරස‍්‍රගත භාවලේඛය මාස්පතා"</string>
+    <string name="spoken_emoji_1F238" msgid="5504414186438196912">"සමචතුරස‍්‍රගත භාවලේඛය ඉල්ලුම් පත්‍රය"</string>
+    <string name="spoken_emoji_1F239" msgid="1634067311597618959">"සමචතුරස‍්‍රගත භාවලේඛය වට්ටම"</string>
+    <string name="spoken_emoji_1F23A" msgid="3107862957630169536">"සමචතුරස‍්‍රගත භාවලේඛය තුළ ව්‍යාපාර"</string>
+    <string name="spoken_emoji_1F250" msgid="6586943922806727907">"කව කළ භාවලේඛය වාසිය"</string>
+    <string name="spoken_emoji_1F251" msgid="9099032855993346948">"කව කළ භාවලේඛය පිළිගන්නවා"</string>
+    <string name="spoken_emoji_1F300" msgid="4720098285295840383">"සුළි සුළඟ"</string>
+    <string name="spoken_emoji_1F301" msgid="3601962477653752974">"මීදුමෙන් වැසුණු"</string>
+    <string name="spoken_emoji_1F302" msgid="3404357123421753593">"වසන ලද කුඩය"</string>
+    <string name="spoken_emoji_1F303" msgid="3899301321538188206">"තරු සමඟ රාත්‍රිය"</string>
+    <string name="spoken_emoji_1F304" msgid="2767148930689050040">"කදු මුදුන් වලට උඩින් හිරු උදාව"</string>
+    <string name="spoken_emoji_1F305" msgid="9165812924292061196">"හිරු උදාව"</string>
+    <string name="spoken_emoji_1F306" msgid="5889294736109193104">"සන්ධ්‍යාවේ නගර භූ දර්ශනය"</string>
+    <string name="spoken_emoji_1F307" msgid="2714290867291163713">"ගොඩනැගිලි වලට උඩින් හිරු උදාව"</string>
+    <string name="spoken_emoji_1F308" msgid="688704703985173377">"දේදුන්න"</string>
+    <string name="spoken_emoji_1F309" msgid="6217981957992313528">"රාත්‍රියට පාලම උඩ"</string>
+    <string name="spoken_emoji_1F30A" msgid="4329309263152110893">"ජල රැල්ල"</string>
+    <string name="spoken_emoji_1F30B" msgid="5729430693700923112">"යමහල්"</string>
+    <string name="spoken_emoji_1F30C" msgid="2961230863217543082">"ක්ෂීර පථය"</string>
+    <string name="spoken_emoji_1F30D" msgid="1113905673331547953">"පෘථිවිය ගෝලය යුරෝපය-අප්‍රිකාව"</string>
+    <string name="spoken_emoji_1F30E" msgid="5278512600749223671">"පෘථිවිය ගෝලය අමෙරිකාව"</string>
+    <string name="spoken_emoji_1F30F" msgid="5718144880978707493">"පෘථිවිය ගෝලය ආසියාව-ඕස්ටෙ‍්‍රලියාව"</string>
+    <string name="spoken_emoji_1F310" msgid="2959618582975247601">"මධ්‍යහ්න රේඛාව සමඟ පෘථිවිය"</string>
+    <string name="spoken_emoji_1F311" msgid="623906380914895542">"නව සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F312" msgid="4458575672576125401">"පුරපක්ෂයේ අඬ සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F313" msgid="7599181787989497294">"මුල් කාර්තුවේ සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F314" msgid="4898293184964365413">"පුරපක්ෂයේ කුදු සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F315" msgid="3218117051779496309">"පූර්ණ සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F316" msgid="2061317145777689569">"අවපක්ෂයේ කුදු සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F317" msgid="2721090687319539049">"අවසාන කාර්තුවේ සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F318" msgid="3814091755648887570">"අවපක්ෂයේ අඬ සඳ සංකේතය"</string>
+    <string name="spoken_emoji_1F319" msgid="4074299824890459465">"අඬ සඳ"</string>
+    <string name="spoken_emoji_1F31A" msgid="3092285278116977103">"නව සඳ සමඟ මුහුණ"</string>
+    <string name="spoken_emoji_1F31B" msgid="2658562138386927881">"මුල් කාර්තුවේ සඳ සමඟ මුහුණ"</string>
+    <string name="spoken_emoji_1F31C" msgid="7914768515547867384">"අවසාන කාර්තුවේ සඳ සමඟ මුහුණ"</string>
+    <string name="spoken_emoji_1F31D" msgid="1925730459848297182">"පූර්ණ සඳ සමඟ මුහුණ"</string>
+    <string name="spoken_emoji_1F31E" msgid="8022112382524084418">"ඉරු සමඟ මුහුණ"</string>
+    <string name="spoken_emoji_1F31F" msgid="1051661214137766369">"ජ්වලිත තුරු"</string>
+    <string name="spoken_emoji_1F320" msgid="5450591979068216115">"උල්කාපාත තුරු"</string>
+    <string name="spoken_emoji_1F330" msgid="3115760035618051575">"චෙස්ට්නට්"</string>
+    <string name="spoken_emoji_1F331" msgid="5658888205290008691">"බීජ පැළය"</string>
+    <string name="spoken_emoji_1F332" msgid="2935650450421165938">"සදාහරිත ගස"</string>
+    <string name="spoken_emoji_1F333" msgid="5898847427062482675">"පතනශිල ගස"</string>
+    <string name="spoken_emoji_1F334" msgid="6183375224678417894">"තාල ගස"</string>
+    <string name="spoken_emoji_1F335" msgid="5352418412103584941">"පතොක්"</string>
+    <string name="spoken_emoji_1F337" msgid="3839107352363566289">"ටියුලිප්"</string>
+    <string name="spoken_emoji_1F338" msgid="6389970364260468490">"චෙරි මල"</string>
+    <string name="spoken_emoji_1F339" msgid="9128891447985256151">"රෝස"</string>
+    <string name="spoken_emoji_1F33A" msgid="2025828400095233078">"වද මල"</string>
+    <string name="spoken_emoji_1F33B" msgid="8163868254348448552">"සූරියකාන්ත"</string>
+    <string name="spoken_emoji_1F33C" msgid="6850371206262335812">"මල"</string>
+    <string name="spoken_emoji_1F33D" msgid="9033484052864509610">"බඩ ඉරිඟු කරල"</string>
+    <string name="spoken_emoji_1F33E" msgid="2540173396638444120">"වී කරල"</string>
+    <string name="spoken_emoji_1F33F" msgid="4384823344364908558">"ඖෂධ"</string>
+    <string name="spoken_emoji_1F340" msgid="3494255459156499305">"කොළ හතරේ කොළය"</string>
+    <string name="spoken_emoji_1F341" msgid="4581959481754990158">"මේපල් කොළය"</string>
+    <string name="spoken_emoji_1F342" msgid="3119068426871821222">"වැටුණු කොළය"</string>
+    <string name="spoken_emoji_1F343" msgid="2663317495805149004">"සුළගේ කොළය වැනීම"</string>
+    <string name="spoken_emoji_1F344" msgid="2738517881678722159">"හතු"</string>
+    <string name="spoken_emoji_1F345" msgid="6135288642349085554">"තක්කාලි"</string>
+    <string name="spoken_emoji_1F346" msgid="2075395322785406367">"වම්බටු"</string>
+    <string name="spoken_emoji_1F347" msgid="7753453754963890571">"මිදි"</string>
+    <string name="spoken_emoji_1F348" msgid="1247076837284932788">"කොමඩු"</string>
+    <string name="spoken_emoji_1F349" msgid="5563054555180611086">"දිය කොමඩු"</string>
+    <string name="spoken_emoji_1F34A" msgid="4688661208570160524">"ජවනාරන්"</string>
+    <string name="spoken_emoji_1F34B" msgid="4335318423164185706">"දෙහි"</string>
+    <string name="spoken_emoji_1F34C" msgid="3712827239858159474">"කෙසෙල්"</string>
+    <string name="spoken_emoji_1F34D" msgid="7712521967162622936">"අන්නාසි"</string>
+    <string name="spoken_emoji_1F34E" msgid="1859466882598614228">"රතු ඇපල්"</string>
+    <string name="spoken_emoji_1F34F" msgid="8251711032295005633">"කොළ ඇපල්"</string>
+    <string name="spoken_emoji_1F350" msgid="625802980159197701">"පෙයර්"</string>
+    <string name="spoken_emoji_1F351" msgid="4269460120610911895">"පීච්"</string>
+    <string name="spoken_emoji_1F352" msgid="965600953360182635">"චෙරි"</string>
+    <string name="spoken_emoji_1F353" msgid="7068623879906925592">"ස්ට්‍රෝබෙරි"</string>
+    <string name="spoken_emoji_1F354" msgid="45162285238888494">"හැම්බර්ගර්"</string>
+    <string name="spoken_emoji_1F355" msgid="9157587635526433283">"පීසා කැල්ල"</string>
+    <string name="spoken_emoji_1F356" msgid="2667196119149852244">"මස් කටු"</string>
+    <string name="spoken_emoji_1F357" msgid="8022817413851052256">"කුකුළු කකුල"</string>
+    <string name="spoken_emoji_1F358" msgid="3042693264748036476">"හාල් විස්කෝතු"</string>
+    <string name="spoken_emoji_1F359" msgid="3988148661730121958">"බත් බෝල"</string>
+    <string name="spoken_emoji_1F35A" msgid="1763824172198327268">"උයන ලද හාල්"</string>
+    <string name="spoken_emoji_1F35B" msgid="62530406745717835">"ව්‍යංජනය සහ බත්"</string>
+    <string name="spoken_emoji_1F35C" msgid="7537756539198945509">"හුමාලය භාජනය"</string>
+    <string name="spoken_emoji_1F35D" msgid="8173523083861875196">"ස්පැගටි"</string>
+    <string name="spoken_emoji_1F35E" msgid="2935428307894662571">"පාන්"</string>
+    <string name="spoken_emoji_1F35F" msgid="4840297386785728443">"ෆ්‍රේන්ච් ෆ්‍රියිස්"</string>
+    <string name="spoken_emoji_1F360" msgid="4094659855684686801">"කර කරන ලද රසවත් අර්තාපල්"</string>
+    <string name="spoken_emoji_1F361" msgid="6475486395784096109">"ඩෑන්ගෝ"</string>
+    <string name="spoken_emoji_1F362" msgid="5004692577661076275">"ඔඩින්"</string>
+    <string name="spoken_emoji_1F363" msgid="1606603765717743806">"සුෂි"</string>
+    <string name="spoken_emoji_1F364" msgid="6550457766169570811">"බදින ලද කූනිස්සා"</string>
+    <string name="spoken_emoji_1F365" msgid="4963815540953316307">"මාළු කේක් සමඟ දිය සුළි මෝස්තරය"</string>
+    <string name="spoken_emoji_1F366" msgid="7862401745277049404">"මෘදු අයිස් ක්‍රීම්"</string>
+    <string name="spoken_emoji_1F367" msgid="7447972978281980414">"සහින ලද අයිස්"</string>
+    <string name="spoken_emoji_1F368" msgid="7790003146142724913">"අයිස් ක්‍රීම්"</string>
+    <string name="spoken_emoji_1F369" msgid="7383712944084857350">"ඩෝනට්"</string>
+    <string name="spoken_emoji_1F36A" msgid="2726271795913042295">"කුකීය"</string>
+    <string name="spoken_emoji_1F36B" msgid="6342163604299875931">"චොකලට් බාරය"</string>
+    <string name="spoken_emoji_1F36C" msgid="2168934753998218790">"පැණිරස"</string>
+    <string name="spoken_emoji_1F36D" msgid="3671507903799975792">"ලොලිපොප්"</string>
+    <string name="spoken_emoji_1F36E" msgid="4630541402785165902">"කස්ටට්"</string>
+    <string name="spoken_emoji_1F36F" msgid="5577915387425169439">"මී පැණි මුට්ටිය"</string>
+    <string name="spoken_emoji_1F370" msgid="7243244547866114951">"ෂොට් කේක්"</string>
+    <string name="spoken_emoji_1F371" msgid="6731527040552916358">"බෙන්ටෝ පෙට්ටිය"</string>
+    <string name="spoken_emoji_1F372" msgid="1635035323832181733">"කෑම හැළිය"</string>
+    <string name="spoken_emoji_1F373" msgid="7799289534289221045">"කෑම පිසීම"</string>
+    <string name="spoken_emoji_1F374" msgid="5973820884987069131">"ගෑරුප්පුව සහ පිහිය"</string>
+    <string name="spoken_emoji_1F375" msgid="1074832087699617700">"හැඬලය නැතිව තේ කෝප්පය"</string>
+    <string name="spoken_emoji_1F376" msgid="6499274685584852067">"සකේ බෝතලය සහ කෝප්පය"</string>
+    <string name="spoken_emoji_1F377" msgid="1762398562314172075">"වයින් වීදුරුව"</string>
+    <string name="spoken_emoji_1F378" msgid="5528234560590117516">"කොක්ටේල් වීදුරුව"</string>
+    <string name="spoken_emoji_1F379" msgid="790581290787943325">"නිවර්තන බීම"</string>
+    <string name="spoken_emoji_1F37A" msgid="391966822450619516">"බීර ජෝගුව"</string>
+    <string name="spoken_emoji_1F37B" msgid="9015043286465670662">"බීර ජෝගු ගැට්ට වීම"</string>
+    <string name="spoken_emoji_1F37C" msgid="2532113819464508894">"බිළිඳාගේ බෝතලය"</string>
+    <string name="spoken_emoji_1F380" msgid="3487363857092458827">"රිබනය"</string>
+    <string name="spoken_emoji_1F381" msgid="614180683680675444">"කවර කරන ලද තෑග්ග"</string>
+    <string name="spoken_emoji_1F382" msgid="4720497171946687501">"උපන් දින කේක්"</string>
+    <string name="spoken_emoji_1F383" msgid="3536505941578757623">"Jack-o-ලන්තෑරුම"</string>
+    <string name="spoken_emoji_1F384" msgid="1797870204479059004">"නත්තල් ගස"</string>
+    <string name="spoken_emoji_1F385" msgid="1754174063483626367">"නත්තල් සීයා"</string>
+    <string name="spoken_emoji_1F386" msgid="2130445450758114746">"ගිනිකෙළි"</string>
+    <string name="spoken_emoji_1F387" msgid="3403182563117999933">"ගිනිකෙළි දියමන්තිය"</string>
+    <string name="spoken_emoji_1F388" msgid="2903047203723251804">"බැලුන"</string>
+    <string name="spoken_emoji_1F389" msgid="2352830665883549388">"සාද ලොකු බොත්තම"</string>
+    <string name="spoken_emoji_1F38A" msgid="6280428984773641322">"සරුවපිත්තල බෝල"</string>
+    <string name="spoken_emoji_1F38B" msgid="4902225837479015489">"ටනබාටා ගස"</string>
+    <string name="spoken_emoji_1F38C" msgid="7623268024030989365">"කතිර කළ කොඩි"</string>
+    <string name="spoken_emoji_1F38D" msgid="8237542796124408528">"සරල සැරසිලි"</string>
+    <string name="spoken_emoji_1F38E" msgid="5373397476238212371">"ජපන් බෝනික්කා"</string>
+    <string name="spoken_emoji_1F38F" msgid="8754091376829552844">"කාපියා ධජය"</string>
+    <string name="spoken_emoji_1F390" msgid="8903307048095431374">"සුළං ඝණ්ටානාදය"</string>
+    <string name="spoken_emoji_1F391" msgid="2134952069191911841">"සඳ බැලීමේ උත්සවය"</string>
+    <string name="spoken_emoji_1F392" msgid="6380405493914304737">"පාසල් බෑගය"</string>
+    <string name="spoken_emoji_1F393" msgid="6947890064872470996">"උපාධි තොප්පිය"</string>
+    <string name="spoken_emoji_1F3A0" msgid="3572095190082826057">"කැරෝසල් අශ්වයා"</string>
+    <string name="spoken_emoji_1F3A1" msgid="4300565511681058798">"කතුරු ඔංචිල්ලාව"</string>
+    <string name="spoken_emoji_1F3A2" msgid="15486093912232140">"රෝලර් යාත්‍රාව"</string>
+    <string name="spoken_emoji_1F3A3" msgid="921739319504942924">"බිලීපිත්ත සහ මාඑ"</string>
+    <string name="spoken_emoji_1F3A4" msgid="7497596355346856950">"මයික්‍රෝෆෝනය"</string>
+    <string name="spoken_emoji_1F3A5" msgid="4290497821228183002">"චිත්‍රපට කැමරාව"</string>
+    <string name="spoken_emoji_1F3A6" msgid="26019057872319055">"සිනමාව"</string>
+    <string name="spoken_emoji_1F3A7" msgid="837856608794094105">"හෙඩ්ෆෝන්"</string>
+    <string name="spoken_emoji_1F3A8" msgid="2332260356509244587">"චිත්‍ර ශිල්පියාගේ වර්ණ එලකය"</string>
+    <string name="spoken_emoji_1F3A9" msgid="9045869366525115256">"උස් තොප්පිය"</string>
+    <string name="spoken_emoji_1F3AA" msgid="5728760354237132">"සර්කස් කූඩාරම"</string>
+    <string name="spoken_emoji_1F3AB" msgid="1657997517193216284">"ප්‍රවේශපත්‍ර"</string>
+    <string name="spoken_emoji_1F3AC" msgid="4317366554314492152">"ටකපෝරුව"</string>
+    <string name="spoken_emoji_1F3AD" msgid="607157286336130470">"අභිවාහ්‍ය කලා"</string>
+    <string name="spoken_emoji_1F3AE" msgid="2902308174671548150">"වීඩියෝ ක්‍රීඩා"</string>
+    <string name="spoken_emoji_1F3AF" msgid="5420539221790296407">"ඉලක්කයට වැදීම"</string>
+    <string name="spoken_emoji_1F3B0" msgid="7440244806527891956">"තව් යන්ත්‍රය"</string>
+    <string name="spoken_emoji_1F3B1" msgid="545544382391379234">"බිලියර්ඩ්"</string>
+    <string name="spoken_emoji_1F3B2" msgid="8302262034774787493">"සූදු දාදු කැටය"</string>
+    <string name="spoken_emoji_1F3B3" msgid="5180870610771027520">"බොලින් ක්‍රීඩාව"</string>
+    <string name="spoken_emoji_1F3B4" msgid="4723852033266071564">"මල් ක්‍රීඩා කරන කාඩ්පත්"</string>
+    <string name="spoken_emoji_1F3B5" msgid="1998470239850548554">"සංගීත ස්වරය"</string>
+    <string name="spoken_emoji_1F3B6" msgid="3827730457113941705">"බහු 	සංගීත ස්වර"</string>
+    <string name="spoken_emoji_1F3B7" msgid="5503403099445042180">"සැක්සෆෝනය"</string>
+    <string name="spoken_emoji_1F3B8" msgid="3985658156795011430">"ගිටාරය"</string>
+    <string name="spoken_emoji_1F3B9" msgid="5596295757967881451">"සංගීතය යතුරු පුවරුව"</string>
+    <string name="spoken_emoji_1F3BA" msgid="4284064120340683558">"ට්‍රම්පටය"</string>
+    <string name="spoken_emoji_1F3BB" msgid="2856598510069988745">"වයලීනය"</string>
+    <string name="spoken_emoji_1F3BC" msgid="1608424748821446230">"සංගීත විභ්නය"</string>
+    <string name="spoken_emoji_1F3BD" msgid="5490786111375627777">"දුවන කමිසය සමඟ සැෂ්"</string>
+    <string name="spoken_emoji_1F3BE" msgid="1851613105691627931">"ටෙනිස් පිත්ත සහ බෝලය"</string>
+    <string name="spoken_emoji_1F3BF" msgid="6862405997423247921">"ස්කි සහ ස්කි සපත්තුව"</string>
+    <string name="spoken_emoji_1F3C0" msgid="7421420756115104085">"පැසිපන්දු සහ වළල්ල"</string>
+    <string name="spoken_emoji_1F3C1" msgid="6926537251677319922">"අල්ලි වැටුණු කොඩිය"</string>
+    <string name="spoken_emoji_1F3C2" msgid="5708596929237987082">"හිම මත ලිස්සා යන්නා"</string>
+    <string name="spoken_emoji_1F3C3" msgid="5850982999510115824">"ධාවකයා"</string>
+    <string name="spoken_emoji_1F3C4" msgid="8468355585994639838">"සර්ෆ"</string>
+    <string name="spoken_emoji_1F3C6" msgid="9094474706847545409">"කුසලාන"</string>
+    <string name="spoken_emoji_1F3C7" msgid="8172206200368370116">"අශ්වයින් තරඟයට දිවීම"</string>
+    <string name="spoken_emoji_1F3C8" msgid="5619171461277597709">"ඇමරිකානු පාපන්දු"</string>
+    <string name="spoken_emoji_1F3C9" msgid="6371294008765871043">"රග්බි පාපන්දු"</string>
+    <string name="spoken_emoji_1F3CA" msgid="130977831787806932">"පීනන්නා"</string>
+    <string name="spoken_emoji_1F3E0" msgid="6277213201655811842">"නිවාස ගොඩනැඟිල්ල"</string>
+    <string name="spoken_emoji_1F3E1" msgid="233476176077538885">"නිවාස සමඟ ගෙවත්ත"</string>
+    <string name="spoken_emoji_1F3E2" msgid="919736380093964570">"කාර්යාලය ගොඩනැඟිල්ල"</string>
+    <string name="spoken_emoji_1F3E3" msgid="6177606081825094184">"ජපන් තැපැල් කාර්යාලය"</string>
+    <string name="spoken_emoji_1F3E4" msgid="717377871070970293">"යුරෝපීය තැපැල් කාර්යාලය"</string>
+    <string name="spoken_emoji_1F3E5" msgid="1350532500431776780">"රෝහල"</string>
+    <string name="spoken_emoji_1F3E6" msgid="342132788513806214">"බැංකුව"</string>
+    <string name="spoken_emoji_1F3E7" msgid="6322352038284944265">"ස්වයංක‍්‍රියකෘත ටෙලර් යන්ත‍්‍රය"</string>
+    <string name="spoken_emoji_1F3E8" msgid="5864918444350599907">"හෝටලය"</string>
+    <string name="spoken_emoji_1F3E9" msgid="7830416185375326938">"ආදර හෝටලය"</string>
+    <string name="spoken_emoji_1F3EA" msgid="5081084413084360479">"පහසු වෙළඳසල"</string>
+    <string name="spoken_emoji_1F3EB" msgid="7010966528205150525">"පාසල"</string>
+    <string name="spoken_emoji_1F3EC" msgid="4845978861878295154">"දෙපාර්තමේන්තුව වෙළඳසල"</string>
+    <string name="spoken_emoji_1F3ED" msgid="3980316226665215370">"කර්මාන්තශාලාව"</string>
+    <string name="spoken_emoji_1F3EE" msgid="1253964276770550248">"ලැසකායා ලන්තෑරුම"</string>
+    <string name="spoken_emoji_1F3EF" msgid="1128975573507389883">"ජපන් මාළිගාව"</string>
+    <string name="spoken_emoji_1F3F0" msgid="1544632297502291578">"යුරෝපීය මාළිගාව"</string>
+    <string name="spoken_emoji_1F400" msgid="2063034795679578294">"මීයා"</string>
+    <string name="spoken_emoji_1F401" msgid="6736421616217369594">"මීයා"</string>
+    <string name="spoken_emoji_1F402" msgid="7276670995895485604">"ඔක්ස්"</string>
+    <string name="spoken_emoji_1F403" msgid="8045709541897118928">"මී හරකා"</string>
+    <string name="spoken_emoji_1F404" msgid="5240777285676662335">"එළදෙන"</string>
+    <string name="spoken_emoji_1F406" msgid="5163461930159540018">"දිවියා"</string>
+    <string name="spoken_emoji_1F407" msgid="6905370221172708160">"හාවා"</string>
+    <string name="spoken_emoji_1F408" msgid="1362164550508207284">"පූසා"</string>
+    <string name="spoken_emoji_1F409" msgid="8476130983168866013">"මකරා"</string>
+    <string name="spoken_emoji_1F40A" msgid="1149626786411545043">"කිඹුලා"</string>
+    <string name="spoken_emoji_1F40B" msgid="5199104921208397643">"තල්මසා"</string>
+    <string name="spoken_emoji_1F40C" msgid="2704006052881702675">"ගොළුබෙල්ලා"</string>
+    <string name="spoken_emoji_1F40D" msgid="8648186663643157522">"සර්පයා"</string>
+    <string name="spoken_emoji_1F40E" msgid="7219137467573327268">"අශ්වයා"</string>
+    <string name="spoken_emoji_1F40F" msgid="7834336676729040395">"බැටළුවා"</string>
+    <string name="spoken_emoji_1F410" msgid="8686765722255775031">"එළුවා"</string>
+    <string name="spoken_emoji_1F411" msgid="3585715397876383525">"බැටළුවා"</string>
+    <string name="spoken_emoji_1F412" msgid="4924794582980077838">"වඳුරා"</string>
+    <string name="spoken_emoji_1F413" msgid="1460475310405677377">"කුකුළා"</string>
+    <string name="spoken_emoji_1F414" msgid="5857296282631892219">"කුකුල් පැටියා"</string>
+    <string name="spoken_emoji_1F415" msgid="5920041074892949527">"බල්ලා"</string>
+    <string name="spoken_emoji_1F416" msgid="4362403392912540286">"ඌරා"</string>
+    <string name="spoken_emoji_1F417" msgid="6836978415840795128">"ඌරා"</string>
+    <string name="spoken_emoji_1F418" msgid="7926161463897783691">"අලියා"</string>
+    <string name="spoken_emoji_1F419" msgid="1055233959755784186">"බූවල්ලා"</string>
+    <string name="spoken_emoji_1F41A" msgid="5195666556511558060">"සර්පිල සිප්පිය"</string>
+    <string name="spoken_emoji_1F41B" msgid="7652480167465557832">"මකුණා"</string>
+    <string name="spoken_emoji_1F41C" msgid="1123461148697574239">"කුහුඹියා"</string>
+    <string name="spoken_emoji_1F41D" msgid="718579308764058851">"මී මැස්සා"</string>
+    <string name="spoken_emoji_1F41E" msgid="6766305509608115467">"ගැහැණු කුරුමිණියා"</string>
+    <string name="spoken_emoji_1F41F" msgid="1207261298343160838">"මාළුවා"</string>
+    <string name="spoken_emoji_1F420" msgid="1041145003133609221">"නිවර්තන මාළුවා"</string>
+    <string name="spoken_emoji_1F421" msgid="1748378324417438751">"බ්ලොව්ෆිෂ්"</string>
+    <string name="spoken_emoji_1F422" msgid="4106724877523329148">"කැස්බෑවා"</string>
+    <string name="spoken_emoji_1F423" msgid="4077407945958691907">"කුකුළු පැටවා බිහිවන"</string>
+    <string name="spoken_emoji_1F424" msgid="6911326019270172283">"බිළිදු කුකුළු පැටවා"</string>
+    <string name="spoken_emoji_1F425" msgid="5466514196557885577">"ඉදිරියට-මුහුණ දමා සිටින බිළිදු කුකුළු පැටවා"</string>
+    <string name="spoken_emoji_1F426" msgid="2163979138772892755">"කුරුල්ලා"</string>
+    <string name="spoken_emoji_1F427" msgid="3585670324511212961">"පෙන්ගුවින්"</string>
+    <string name="spoken_emoji_1F428" msgid="7955440808647898579">"කොවාලා"</string>
+    <string name="spoken_emoji_1F429" msgid="5028269352809819035">"පූඩ්ල්"</string>
+    <string name="spoken_emoji_1F42A" msgid="4681926706404032484">"මොල්ලික් ඇති ඔටුවා"</string>
+    <string name="spoken_emoji_1F42B" msgid="2725166074981558322">"මොල්ලි දෙකක් ඇති ඔටුවා"</string>
+    <string name="spoken_emoji_1F42C" msgid="6764791873413727085">"ඩොල්ෆින්"</string>
+    <string name="spoken_emoji_1F42D" msgid="1033643138546864251">"ඩොල්ෆින් මුහුණ"</string>
+    <string name="spoken_emoji_1F42E" msgid="8099223337120508820">"ගව මුහුණ"</string>
+    <string name="spoken_emoji_1F42F" msgid="2104743989330781572">"කොටි මුහුණ"</string>
+    <string name="spoken_emoji_1F430" msgid="525492897063150160">"හා මුහුණ"</string>
+    <string name="spoken_emoji_1F431" msgid="6051358666235016851">"පූස් මුහුණ"</string>
+    <string name="spoken_emoji_1F432" msgid="7698001871193018305">"මකර මුහුණ"</string>
+    <string name="spoken_emoji_1F433" msgid="3762356053512899326">"දිය විදින තල්මසා"</string>
+    <string name="spoken_emoji_1F434" msgid="3619943222159943226">"අශ්ව මුහුණ"</string>
+    <string name="spoken_emoji_1F435" msgid="59199202683252958">"වඳුරු මුහුණ"</string>
+    <string name="spoken_emoji_1F436" msgid="340544719369009828">"බලු මුහුණ"</string>
+    <string name="spoken_emoji_1F437" msgid="1219818379784982585">"ඌරා මුහුණ"</string>
+    <string name="spoken_emoji_1F438" msgid="9128124743321008210">"ගෙබි මුහුණ"</string>
+    <string name="spoken_emoji_1F439" msgid="1424161319554642266">"හම්ස්ටර් මුහුණ"</string>
+    <string name="spoken_emoji_1F43A" msgid="6727645488430385584">"වෘක මුහුණ"</string>
+    <string name="spoken_emoji_1F43B" msgid="5397170068392865167">"වලස් මුහුණ"</string>
+    <string name="spoken_emoji_1F43C" msgid="2715995734367032431">"පැන්ඩාගේ මුහුණ"</string>
+    <string name="spoken_emoji_1F43D" msgid="6005480717951776597">"ඌරා නහය"</string>
+    <string name="spoken_emoji_1F43E" msgid="8917626103219080547">"අඩි මුද්‍රණය"</string>
+    <string name="spoken_emoji_1F440" msgid="7144338258163384433">"ඇස්"</string>
+    <string name="spoken_emoji_1F442" msgid="1905515392292676124">"කන්"</string>
+    <string name="spoken_emoji_1F443" msgid="1491504447758933115">"නහය"</string>
+    <string name="spoken_emoji_1F444" msgid="3654613047946080332">"කට"</string>
+    <string name="spoken_emoji_1F445" msgid="7024905244040509204">"දිව"</string>
+    <string name="spoken_emoji_1F446" msgid="2150365643636471745">"පිටි අතේ ඇගිල්ල ඉහළට දිගුකර සිටින සුචිය"</string>
+    <string name="spoken_emoji_1F447" msgid="8794022344940891388">"පිටි අතේ ඇගිල්ල පහළට දිගුකර සිටින සුචිය"</string>
+    <string name="spoken_emoji_1F448" msgid="3261812959215550650">"පිටි අතේ ඇගිල්ල වමට දිගුකර සිටින සුචිය"</string>
+    <string name="spoken_emoji_1F449" msgid="4764447975177805991">"පිටි අතේ ඇගිල්ල දකුණට දිගුකර සිටින සුචිය"</string>
+    <string name="spoken_emoji_1F44A" msgid="7197417095486424841">"අත මිට මොළවා සිටින සලකුණ"</string>
+    <string name="spoken_emoji_1F44B" msgid="1975968945250833117">"අත වනන සලකුණ"</string>
+    <string name="spoken_emoji_1F44C" msgid="3185919567897876562">"හරි අත් සලකුණ"</string>
+    <string name="spoken_emoji_1F44D" msgid="6182553970602667815">"ඇගිල්ල ඉහළට දමන සලකුණ"</string>
+    <string name="spoken_emoji_1F44E" msgid="8030851867365111809">"ඇගිල්ල පහළට දමන සලකුණ"</string>
+    <string name="spoken_emoji_1F44F" msgid="5148753662268213389">"අත්පොළසන් දෙන අත් සලකුණ"</string>
+    <string name="spoken_emoji_1F450" msgid="1012021072085157054">"විවෘත අත් සලකුණ"</string>
+    <string name="spoken_emoji_1F451" msgid="8257466714629051320">"ඔටුන්න"</string>
+    <string name="spoken_emoji_1F452" msgid="4567394011149905466">"කාන්තා හිස්වැස්ම"</string>
+    <string name="spoken_emoji_1F453" msgid="5978410551173163010">"ඇස් කණ්නාඩි"</string>
+    <string name="spoken_emoji_1F454" msgid="348469036193323252">"කරපටිය"</string>
+    <string name="spoken_emoji_1F455" msgid="5665118831861433578">"ටී-ෂර්ටය"</string>
+    <string name="spoken_emoji_1F456" msgid="1890991330923356408">"ඩෙනිම් කලිසම"</string>
+    <string name="spoken_emoji_1F457" msgid="3904310482655702620">"ඇඳුම"</string>
+    <string name="spoken_emoji_1F458" msgid="5704243858031107692">"කිමෝනෝව"</string>
+    <string name="spoken_emoji_1F459" msgid="3553148747050035251">"බිකිනි"</string>
+    <string name="spoken_emoji_1F45A" msgid="1389654639484716101">"කාන්තා ඇදුම්"</string>
+    <string name="spoken_emoji_1F45B" msgid="1113293170254222904">"පසුම්බිය"</string>
+    <string name="spoken_emoji_1F45C" msgid="3410257778598006936">"අත්බෑග්ය"</string>
+    <string name="spoken_emoji_1F45D" msgid="812176504300064819">"පැස"</string>
+    <string name="spoken_emoji_1F45E" msgid="2901741399934723562">"පිරිමි සපත්තුව"</string>
+    <string name="spoken_emoji_1F45F" msgid="6828566359287798863">"ධාවන සපත්තුව"</string>
+    <string name="spoken_emoji_1F460" msgid="305863879170420855">"අඩි උස සපත්තුව"</string>
+    <string name="spoken_emoji_1F461" msgid="5160493217831417630">"කාන්තා සෙරෙප්පුව"</string>
+    <string name="spoken_emoji_1F462" msgid="1722897795554863734">"කාන්තා අඩි උස සපත්තුව"</string>
+    <string name="spoken_emoji_1F463" msgid="5850772903593010699">"පා සළකුණු"</string>
+    <string name="spoken_emoji_1F464" msgid="1228335905487734913">"කැලිසේයාව තුළ උඩුකය"</string>
+    <string name="spoken_emoji_1F465" msgid="4461307702499679879">"කැලිසේයාව තුළ උඩුකයන්"</string>
+    <string name="spoken_emoji_1F466" msgid="1938873085514108889">"කොල්ලා"</string>
+    <string name="spoken_emoji_1F467" msgid="8237080594860144998">"කෙල්ල"</string>
+    <string name="spoken_emoji_1F468" msgid="6081300722526675382">"පිරිමියා"</string>
+    <string name="spoken_emoji_1F469" msgid="1090140923076108158">"ගැහැනිය"</string>
+    <string name="spoken_emoji_1F46A" msgid="5063570981942606595">"පවුල"</string>
+    <string name="spoken_emoji_1F46B" msgid="6795882374287327952">"පිරිමියා සහ ගැහැනිය අත් අල්ලා ගෙන සිටි"</string>
+    <string name="spoken_emoji_1F46C" msgid="6844464165783964495">"පිරිමි දෙන්නෙක් අත් අල්ලා ගෙන සිටි"</string>
+    <string name="spoken_emoji_1F46D" msgid="2316773068014053180">"ගැහැනු දෙන්නෙක් අත් අල්ලා ගෙන සිටි"</string>
+    <string name="spoken_emoji_1F46E" msgid="5897625605860822401">"පොලිස් නිලධාරියා"</string>
+    <string name="spoken_emoji_1F46F" msgid="7716871657717641490">"ගැහැනියක් හා කන් පැළඳ සිටි"</string>
+    <string name="spoken_emoji_1F470" msgid="6409995400510338892">"වේල් සමඟ මනමාලිය"</string>
+    <string name="spoken_emoji_1F471" msgid="3058247860441670806">"තඹවන් කොණ්ඩය සමඟ පුද්ගලයා"</string>
+    <string name="spoken_emoji_1F472" msgid="3928854667819339142">"ගුආ පි මාඕ සමඟ පිරිමියා"</string>
+    <string name="spoken_emoji_1F473" msgid="5921952095808988381">"තලප්පාව සමඟ පිරිමියා"</string>
+    <string name="spoken_emoji_1F474" msgid="1082237499496725183">"වයසක පිරිමියා"</string>
+    <string name="spoken_emoji_1F475" msgid="7280323988642212761">"වයසක ගැහැනිය"</string>
+    <string name="spoken_emoji_1F476" msgid="4713322657821088296">"බිළිඳා"</string>
+    <string name="spoken_emoji_1F477" msgid="2197036131029221370">"ඉදි කිරීමේ කම්කරුවා"</string>
+    <string name="spoken_emoji_1F478" msgid="7245521193493488875">"කුමාරිකාව"</string>
+    <string name="spoken_emoji_1F479" msgid="6876475321015553972">"ජපන් රාක්ෂසයා"</string>
+    <string name="spoken_emoji_1F47A" msgid="3900813633102703571">"ජපන් පිශාචයා"</string>
+    <string name="spoken_emoji_1F47B" msgid="2608250873194079390">"භූතයා"</string>
+    <string name="spoken_emoji_1F47C" msgid="3838699131276537421">"බිළිදු දෙව්දුව"</string>
+    <string name="spoken_emoji_1F47D" msgid="2874077455888369538">"පාරභෞම පරදේශියා"</string>
+    <string name="spoken_emoji_1F47E" msgid="3642607168625579507">"පරදේශී රාක්ෂසයා"</string>
+    <string name="spoken_emoji_1F47F" msgid="441605977269926252">"Imp"</string>
+    <string name="spoken_emoji_1F480" msgid="3696253485164878739">"හිස්කබල"</string>
+    <string name="spoken_emoji_1F481" msgid="320408708521966893">"තොරතුරු මේසයේ පුද්ගලයා"</string>
+    <string name="spoken_emoji_1F482" msgid="3424354860245608949">"රාජ්‍යාරක්ෂක භටයා"</string>
+    <string name="spoken_emoji_1F483" msgid="3221113594843849083">"නැට්ටුවා"</string>
+    <string name="spoken_emoji_1F484" msgid="7348014979080444885">"තොල් සායම්"</string>
+    <string name="spoken_emoji_1F485" msgid="6133507975565116339">"නිය ඔපදමනවා"</string>
+    <string name="spoken_emoji_1F486" msgid="9085459968247394155">"මුහුණ සම්බාහනය"</string>
+    <string name="spoken_emoji_1F487" msgid="1479113637259592150">"කොණ්ඩා මෝස්තරය"</string>
+    <string name="spoken_emoji_1F488" msgid="6922559285234100252">"කරණවෑමි කණුව"</string>
+    <string name="spoken_emoji_1F489" msgid="8114863680950147305">"නළය"</string>
+    <string name="spoken_emoji_1F48A" msgid="8526843630145963032">"ගුලිය"</string>
+    <string name="spoken_emoji_1F48B" msgid="2538528967897640292">"හාදු ලකුණ"</string>
+    <string name="spoken_emoji_1F48C" msgid="1681173271652890232">"ආදර හසුන"</string>
+    <string name="spoken_emoji_1F48D" msgid="8259886164999042373">"රිංග් කරන්න"</string>
+    <string name="spoken_emoji_1F48E" msgid="8777981696011111101">"මැණික් ගල්"</string>
+    <string name="spoken_emoji_1F48F" msgid="741593675183677907">"සිප ගැනීම"</string>
+    <string name="spoken_emoji_1F490" msgid="4482549128959806736">"මල් පොකුර"</string>
+    <string name="spoken_emoji_1F491" msgid="2305245307882441500">"හදවත සමඟ යුවළ"</string>
+    <string name="spoken_emoji_1F492" msgid="3884119934804475732">"විවාහ"</string>
+    <string name="spoken_emoji_1F493" msgid="1208828371565525121">"තැළීණු හදවත"</string>
+    <string name="spoken_emoji_1F494" msgid="6198876398509338718">"කැඩුණු හදවත"</string>
+    <string name="spoken_emoji_1F495" msgid="9206202744967130919">"හදවත් දෙකක්"</string>
+    <string name="spoken_emoji_1F496" msgid="5436953041732207775">"දීප්තිමත් හදවත"</string>
+    <string name="spoken_emoji_1F497" msgid="7285142863951448473">"වැඩෙන හදවත"</string>
+    <string name="spoken_emoji_1F498" msgid="7940131245037575715">"ඊතලය සමඟ හදවත"</string>
+    <string name="spoken_emoji_1F499" msgid="4453235040265550009">"නිල් හදවත"</string>
+    <string name="spoken_emoji_1F49A" msgid="6262178648366971405">"කොළ හදවත"</string>
+    <string name="spoken_emoji_1F49B" msgid="8085384999750714368">"කහ හදවත"</string>
+    <string name="spoken_emoji_1F49C" msgid="453829540120898698">"දම් හදවත"</string>
+    <string name="spoken_emoji_1F49D" msgid="3460534750224161888">"පීත්ත පටිය සමඟ හදවත"</string>
+    <string name="spoken_emoji_1F49E" msgid="4490636226072523867">"කැරකෙන හදවත්"</string>
+    <string name="spoken_emoji_1F49F" msgid="2059319756421226336">"හදවත් සැරසිල්ල"</string>
+    <string name="spoken_emoji_1F4A0" msgid="1954850380550212038">"ඇතුළත තිත සමඟ දියමන්ති හැඩය"</string>
+    <string name="spoken_emoji_1F4A1" msgid="403137413540909021">"විදුලි ආලෝක බල්බය"</string>
+    <string name="spoken_emoji_1F4A2" msgid="2604192053295622063">"කෝප සංකේතය"</string>
+    <string name="spoken_emoji_1F4A3" msgid="6378351742957821735">"බෝම්බය"</string>
+    <string name="spoken_emoji_1F4A4" msgid="7217736258870346625">"නිඳන සංකේතය"</string>
+    <string name="spoken_emoji_1F4A5" msgid="5401995723541239858">"හැප්පීම සංකේතය"</string>
+    <string name="spoken_emoji_1F4A6" msgid="3837802182716483848">"වැගිරීමේ දහඩිය සංකේතය"</string>
+    <string name="spoken_emoji_1F4A7" msgid="5718438987757885141">"බිඳිත්ත"</string>
+    <string name="spoken_emoji_1F4A8" msgid="4472108229720006377">"ඉරි සංකේතය"</string>
+    <string name="spoken_emoji_1F4A9" msgid="1240958472788430032">"පයිල් ඔෆ් පූ"</string>
+    <string name="spoken_emoji_1F4AA" msgid="8427525538635146416">"නමන ලද ද්වීමූර්ධකය"</string>
+    <string name="spoken_emoji_1F4AB" msgid="5484114759939427459">"ඉස කරකැවෙන සංකේතය"</string>
+    <string name="spoken_emoji_1F4AC" msgid="5571196638219612682">"කථන බැලූනය"</string>
+    <string name="spoken_emoji_1F4AD" msgid="353174619257798652">"සිතුවිලි බැලූනය"</string>
+    <string name="spoken_emoji_1F4AE" msgid="1223142786927162641">"සුදු මල්"</string>
+    <string name="spoken_emoji_1F4AF" msgid="3526278354452138397">"ශතකයේ ලකුණු සංකේතය"</string>
+    <string name="spoken_emoji_1F4B0" msgid="4124102195175124156">"මුදල් බෑගය"</string>
+    <string name="spoken_emoji_1F4B1" msgid="8339494003418572905">"මුදල් හුවමාරුව"</string>
+    <string name="spoken_emoji_1F4B2" msgid="3179159430187243132">"අධික ඩොලර ලකුණ"</string>
+    <string name="spoken_emoji_1F4B3" msgid="5375412518221759596">"ණය පත"</string>
+    <string name="spoken_emoji_1F4B4" msgid="1068592463669453204">"යෙන් ලකුණ සමඟ බැංකු නෝට්ටුව"</string>
+    <string name="spoken_emoji_1F4B5" msgid="1426708699891832564">"ඩොලරය ලකුණ සමඟ බැංකු නෝට්ටුව"</string>
+    <string name="spoken_emoji_1F4B6" msgid="8289249930736444837">"යුරෝ ලකුණ සමඟ බැංකු නෝට්ටුව"</string>
+    <string name="spoken_emoji_1F4B7" msgid="5245100496860739429">"පවුම් ලකුණ සමඟ බැංකු නෝට්ටුව"</string>
+    <string name="spoken_emoji_1F4B8" msgid="4401099580477164440">"මුදල් සමඟ පියාපත"</string>
+    <string name="spoken_emoji_1F4B9" msgid="647509393536679903">"යෙන් ලකුණ සහ ඉහළට නැඹුරුතාව සමඟ ප්‍රස්තාරය"</string>
+    <string name="spoken_emoji_1F4BA" msgid="1269737854891046321">"ආසනය"</string>
+    <string name="spoken_emoji_1F4BB" msgid="6252883563347816451">"පෞද්ගලික පරිගණකය"</string>
+    <string name="spoken_emoji_1F4BC" msgid="6182597732218446206">"ලිපි කොපුව"</string>
+    <string name="spoken_emoji_1F4BD" msgid="5820961044768829176">"කුඩා තැටිය"</string>
+    <string name="spoken_emoji_1F4BE" msgid="4754542485835379808">"නම්‍ය ඩිස්කය"</string>
+    <string name="spoken_emoji_1F4BF" msgid="2237481756984721795">"ප්‍රකාශ තැටිය"</string>
+    <string name="spoken_emoji_1F4C0" msgid="491582501089694461">"Dvd"</string>
+    <string name="spoken_emoji_1F4C1" msgid="6645461382494158111">"ගොනුවේ ෆෝල්ඩරය"</string>
+    <string name="spoken_emoji_1F4C2" msgid="8095638715523765338">"ගොනුව ෆෝල්ඩරය විවෘත කරන්න"</string>
+    <string name="spoken_emoji_1F4C3" msgid="3727274466173970142">"රැල්ල සමඟ පිටුව"</string>
+    <string name="spoken_emoji_1F4C4" msgid="4382570710795501612">"උඩුකුරු පිටුව"</string>
+    <string name="spoken_emoji_1F4C5" msgid="8693944622627762487">"දින දර්ශනය"</string>
+    <string name="spoken_emoji_1F4C6" msgid="8469908708708424640">"ඉරෙන දින දර්ශනය"</string>
+    <string name="spoken_emoji_1F4C7" msgid="2665313547987324495">"කාඩ්පත් සුචිය"</string>
+    <string name="spoken_emoji_1F4C8" msgid="8007686702282833600">"ඉහළට නැඹුරුතාව සමඟ ප්‍රස්තාරය"</string>
+    <string name="spoken_emoji_1F4C9" msgid="2271951411192893684">"පහළට නැඹුරුතාව සමඟ ප්‍රස්තාරය"</string>
+    <string name="spoken_emoji_1F4CA" msgid="3525692829622381444">"තීර ප්‍රස්ථාර"</string>
+    <string name="spoken_emoji_1F4CB" msgid="977639227554095521">"පසුරු පුවරුව"</string>
+    <string name="spoken_emoji_1F4CC" msgid="156107396088741574">"Pushpin"</string>
+    <string name="spoken_emoji_1F4CD" msgid="4266572175361190231">"Round pushpin"</string>
+    <string name="spoken_emoji_1F4CE" msgid="6294288509864968290">"Paperclip"</string>
+    <string name="spoken_emoji_1F4CF" msgid="149679400831136810">"Straight ruler"</string>
+    <string name="spoken_emoji_1F4D0" msgid="8130339336619202915">"Triangular ruler"</string>
+    <string name="spoken_emoji_1F4D1" msgid="5852176364856284968">"Bookmark tabs"</string>
+    <string name="spoken_emoji_1F4D2" msgid="2276810154105920052">"ලෙජරය"</string>
+    <string name="spoken_emoji_1F4D3" msgid="5873386492793610808">"නෝට්බුක්"</string>
+    <string name="spoken_emoji_1F4D4" msgid="4754469936418776360">"Notebook සමඟ decorative cover"</string>
+    <string name="spoken_emoji_1F4D5" msgid="4642713351802778905">"Closed book"</string>
+    <string name="spoken_emoji_1F4D6" msgid="6987347918381807186">"Open book"</string>
+    <string name="spoken_emoji_1F4D7" msgid="7813394163241379223">"Green book"</string>
+    <string name="spoken_emoji_1F4D8" msgid="7189799718984979521">"Blue book"</string>
+    <string name="spoken_emoji_1F4D9" msgid="3874664073186440225">"Orange book"</string>
+    <string name="spoken_emoji_1F4DA" msgid="872212072924287762">"ග්‍රන්ථ"</string>
+    <string name="spoken_emoji_1F4DB" msgid="2015183603583392969">"Name badge"</string>
+    <string name="spoken_emoji_1F4DC" msgid="5075845110932456783">"අනුචලනය කරන්න"</string>
+    <string name="spoken_emoji_1F4DD" msgid="2494006707147586786">"Memo"</string>
+    <string name="spoken_emoji_1F4DE" msgid="7883008605002117671">"Telephone receiver"</string>
+    <string name="spoken_emoji_1F4DF" msgid="3538610110623780465">"පේජරය"</string>
+    <string name="spoken_emoji_1F4E0" msgid="2960778342609543077">"Fax machine"</string>
+    <string name="spoken_emoji_1F4E1" msgid="6269733703719242108">"Satellite කුහුඹියාenna"</string>
+    <string name="spoken_emoji_1F4E2" msgid="1987535386302883116">"Public address loudspeaker"</string>
+    <string name="spoken_emoji_1F4E3" msgid="5588916572878599224">"Cheering megaphone"</string>
+    <string name="spoken_emoji_1F4E4" msgid="2063561529097749707">"Outbox tray"</string>
+    <string name="spoken_emoji_1F4E5" msgid="3232462702926143576">"Inbox tray"</string>
+    <string name="spoken_emoji_1F4E6" msgid="3399454337197561635">"පැකේජය"</string>
+    <string name="spoken_emoji_1F4E7" msgid="5557136988503873238">"ඊ-තැපැල් සංකේතය"</string>
+    <string name="spoken_emoji_1F4E8" msgid="30698793974124123">"Incoming envelope"</string>
+    <string name="spoken_emoji_1F4E9" msgid="5947550337678643166">"Envelope සමඟ downwards ඊතලය above"</string>
+    <string name="spoken_emoji_1F4EA" msgid="772614045207213751">"Closed mailbox සමඟ lowered flag"</string>
+    <string name="spoken_emoji_1F4EB" msgid="6491414165464146137">"Closed mailbox සමඟ raised flag"</string>
+    <string name="spoken_emoji_1F4EC" msgid="7369517138779988438">"Open mailbox සමඟ raised flag"</string>
+    <string name="spoken_emoji_1F4ED" msgid="5657520436285454241">"Open mailbox සමඟ lowered flag"</string>
+    <string name="spoken_emoji_1F4EE" msgid="8464138906243608614">"Postbox"</string>
+    <string name="spoken_emoji_1F4EF" msgid="8801427577198798226">"Postal horn"</string>
+    <string name="spoken_emoji_1F4F0" msgid="6330208624731662525">"Newspaper"</string>
+    <string name="spoken_emoji_1F4F1" msgid="3966503935581675695">"Mobile phone"</string>
+    <string name="spoken_emoji_1F4F2" msgid="1057540341746100087">"Mobile phone සමඟ rightwards ඊතලය at left"</string>
+    <string name="spoken_emoji_1F4F3" msgid="5003984447315754658">"Vibration mode"</string>
+    <string name="spoken_emoji_1F4F4" msgid="5549847566968306253">"Mobile phone off"</string>
+    <string name="spoken_emoji_1F4F5" msgid="3660199448671699238">"No mobile phones"</string>
+    <string name="spoken_emoji_1F4F6" msgid="2676974903233268860">"කුහුඹියාenna සමඟ bars"</string>
+    <string name="spoken_emoji_1F4F7" msgid="2643891943105989039">"කැමරාව"</string>
+    <string name="spoken_emoji_1F4F9" msgid="4475626303058218048">"Video camera"</string>
+    <string name="spoken_emoji_1F4FA" msgid="1079796186652960775">"රූපවාහිනිය"</string>
+    <string name="spoken_emoji_1F4FB" msgid="3848729587403760645">"රේඩියෝව"</string>
+    <string name="spoken_emoji_1F4FC" msgid="8370432508874310054">"Videocassette"</string>
+    <string name="spoken_emoji_1F500" msgid="2389947994502144547">"Twisted rightwards ඊතලයs"</string>
+    <string name="spoken_emoji_1F501" msgid="2132188352433347009">"Clockwise rightwards සහ leftwards open කවය ඊතලයs"</string>
+    <string name="spoken_emoji_1F502" msgid="2361976580513178391">"Clockwise rightwards සහ leftwards open කවය ඊතලයs සමඟ කව කළ one overlay"</string>
+    <string name="spoken_emoji_1F503" msgid="8936283551917858793">"Clockwise downwards සහ upwards open කවය ඊතලයs"</string>
+    <string name="spoken_emoji_1F504" msgid="708290317843535943">"කුහුඹියාiclockwise downwards සහ upwards open කවය ඊතලයs"</string>
+    <string name="spoken_emoji_1F505" msgid="6348909939004951860">"Low brightness සංකේතය"</string>
+    <string name="spoken_emoji_1F506" msgid="4449609297521280173">"High brightness සංකේතය"</string>
+    <string name="spoken_emoji_1F507" msgid="7136386694923708448">"Speaker සමඟ cancellation stroke"</string>
+    <string name="spoken_emoji_1F508" msgid="5063567689831527865">"නාදකය"</string>
+    <string name="spoken_emoji_1F509" msgid="3948050077992370791">"Speaker සමඟ one sound wave"</string>
+    <string name="spoken_emoji_1F50A" msgid="5818194948677277197">"Speaker සමඟ three sound waves"</string>
+    <string name="spoken_emoji_1F50B" msgid="8083470451266295876">"බැටරිය"</string>
+    <string name="spoken_emoji_1F50C" msgid="7793219132036431680">"Electric plug"</string>
+    <string name="spoken_emoji_1F50D" msgid="8140244710637926780">"Left-pointing magnifying වීදුරුව"</string>
+    <string name="spoken_emoji_1F50E" msgid="4751821352839693365">"Right-pointing magnifying වීදුරුව"</string>
+    <string name="spoken_emoji_1F50F" msgid="915079280472199605">"Lock සමඟ ink pen"</string>
+    <string name="spoken_emoji_1F510" msgid="7658381761691758318">"Closed lock සමඟ key"</string>
+    <string name="spoken_emoji_1F511" msgid="262319867774655688">"Key"</string>
+    <string name="spoken_emoji_1F512" msgid="5628688337255115175">"අඟුළුලන්න"</string>
+    <string name="spoken_emoji_1F513" msgid="8579201846619420981">"Open lock"</string>
+    <string name="spoken_emoji_1F514" msgid="7027268683047322521">"Bell"</string>
+    <string name="spoken_emoji_1F515" msgid="8903179856036069242">"Bell සමඟ cancellation stroke"</string>
+    <string name="spoken_emoji_1F516" msgid="108097933937925381">"Bookmark"</string>
+    <string name="spoken_emoji_1F517" msgid="2450846665734313397">"Link සංකේතය"</string>
+    <string name="spoken_emoji_1F518" msgid="7028220286841437832">"Radio button"</string>
+    <string name="spoken_emoji_1F519" msgid="8211189165075445687">"Back සමඟ leftwards ඊතලය above"</string>
+    <string name="spoken_emoji_1F51A" msgid="823966751787338892">"End සමඟ leftwards ඊතලය above"</string>
+    <string name="spoken_emoji_1F51B" msgid="5920570742107943382">"On සමඟ exclamation mark සමඟ left right ඊතලය above"</string>
+    <string name="spoken_emoji_1F51C" msgid="110609810659826676">"Soon සමඟ rightwards ඊතලය above"</string>
+    <string name="spoken_emoji_1F51D" msgid="4087697222026095447">"Top සමඟ upwards ඊතලය above"</string>
+    <string name="spoken_emoji_1F51E" msgid="8512873526157201775">"No one under eighteen සංකේතය"</string>
+    <string name="spoken_emoji_1F51F" msgid="8673370823728653973">"Keycap ten"</string>
+    <string name="spoken_emoji_1F520" msgid="7335109890337048900">"Input සංකේතය for latin capital letters"</string>
+    <string name="spoken_emoji_1F521" msgid="2693185864450925778">"Input සංකේතය for latin small letters"</string>
+    <string name="spoken_emoji_1F522" msgid="8419130286280673347">"Input සංකේතය for numbers"</string>
+    <string name="spoken_emoji_1F523" msgid="3318053476401719421">"සංකේත සඳහා ආදාන සංකේතය"</string>
+    <string name="spoken_emoji_1F524" msgid="1625073997522316331">"Input සංකේතය for latin letters"</string>
+    <string name="spoken_emoji_1F525" msgid="4083884189172963790">"ගින්න"</string>
+    <string name="spoken_emoji_1F526" msgid="2035494936742643580">"Electric torch"</string>
+    <string name="spoken_emoji_1F527" msgid="134257142354034271">"Wrench"</string>
+    <string name="spoken_emoji_1F528" msgid="700627429570609375">"Hammer"</string>
+    <string name="spoken_emoji_1F529" msgid="7480548235904988573">"Nut සහ bolt"</string>
+    <string name="spoken_emoji_1F52A" msgid="7613580031502317893">"Hocho"</string>
+    <string name="spoken_emoji_1F52B" msgid="4554906608328118613">"Pistol"</string>
+    <string name="spoken_emoji_1F52C" msgid="1330294501371770790">"Microscope"</string>
+    <string name="spoken_emoji_1F52D" msgid="7549551775445177140">"Telescope"</string>
+    <string name="spoken_emoji_1F52E" msgid="4457099417872625141">"Crystal ball"</string>
+    <string name="spoken_emoji_1F52F" msgid="8899031001317442792">"මැද තිත සමඟ තුඩු හයක් කළ තරුව"</string>
+    <string name="spoken_emoji_1F530" msgid="3572898444281774023">"ජපන් සංකේතය for beginner"</string>
+    <string name="spoken_emoji_1F531" msgid="5225633376450025396">"Trident emblem"</string>
+    <string name="spoken_emoji_1F532" msgid="9169568490485180779">"කළු square button"</string>
+    <string name="spoken_emoji_1F533" msgid="6554193837201918598">"සුදු square button"</string>
+    <string name="spoken_emoji_1F534" msgid="8339298801331865340">"Large red කවය"</string>
+    <string name="spoken_emoji_1F535" msgid="1227403104835533512">"Large blue කවය"</string>
+    <string name="spoken_emoji_1F536" msgid="5477372445510469331">"Large orange diamond"</string>
+    <string name="spoken_emoji_1F537" msgid="3158915214347274626">"Large blue diamond"</string>
+    <string name="spoken_emoji_1F538" msgid="4300084249474451991">"Small orange diamond"</string>
+    <string name="spoken_emoji_1F539" msgid="6535159756325742275">"Small blue diamond"</string>
+    <string name="spoken_emoji_1F53A" msgid="3728196273988781389">"Up-pointing red triangle"</string>
+    <string name="spoken_emoji_1F53B" msgid="7182097039614128707">"Down-pointing red triangle"</string>
+    <string name="spoken_emoji_1F53C" msgid="4077022046319615029">"Up-pointing small red triangle"</string>
+    <string name="spoken_emoji_1F53D" msgid="3939112784894620713">"Down-pointing small red triangle"</string>
+    <string name="spoken_emoji_1F550" msgid="7761392621689986218">"Clock මුහුණ one oclock"</string>
+    <string name="spoken_emoji_1F551" msgid="2699448504113431716">"Clock මුහුණ two oclock"</string>
+    <string name="spoken_emoji_1F552" msgid="5872107867411853750">"Clock මුහුණ three oclock"</string>
+    <string name="spoken_emoji_1F553" msgid="8490966286158640743">"Clock මුහුණ four oclock"</string>
+    <string name="spoken_emoji_1F554" msgid="7662585417832909280">"Clock මුහුණ five oclock"</string>
+    <string name="spoken_emoji_1F555" msgid="5564698204520412009">"Clock මුහුණ six oclock"</string>
+    <string name="spoken_emoji_1F556" msgid="7325712194836512205">"Clock මුහුණ seven oclock"</string>
+    <string name="spoken_emoji_1F557" msgid="4398343183682848693">"Clock මුහුණ eight oclock"</string>
+    <string name="spoken_emoji_1F558" msgid="3110507820404018172">"Clock මුහුණ nine oclock"</string>
+    <string name="spoken_emoji_1F559" msgid="2972160366448337839">"Clock මුහුණ ten oclock"</string>
+    <string name="spoken_emoji_1F55A" msgid="5568112876681714834">"Clock මුහුණ eleven oclock"</string>
+    <string name="spoken_emoji_1F55B" msgid="6731739890330659276">"Clock මුහුණ twelve oclock"</string>
+    <string name="spoken_emoji_1F55C" msgid="7838853679879115890">"Clock මුහුණ one-thirty"</string>
+    <string name="spoken_emoji_1F55D" msgid="3518832144255922544">"Clock මුහුණ two-thirty"</string>
+    <string name="spoken_emoji_1F55E" msgid="3092760695634993002">"Clock මුහුණ three-thirty"</string>
+    <string name="spoken_emoji_1F55F" msgid="2326720311892906763">"Clock මුහුණ four-thirty"</string>
+    <string name="spoken_emoji_1F560" msgid="5771339179963924448">"Clock මුහුණ five-thirty"</string>
+    <string name="spoken_emoji_1F561" msgid="3139944777062475382">"Clock මුහුණ six-thirty"</string>
+    <string name="spoken_emoji_1F562" msgid="8273944611162457084">"Clock මුහුණ seven-thirty"</string>
+    <string name="spoken_emoji_1F563" msgid="8643976903718136299">"Clock මුහුණ eight-thirty"</string>
+    <string name="spoken_emoji_1F564" msgid="3511070239796141638">"Clock මුහුණ nine-thirty"</string>
+    <string name="spoken_emoji_1F565" msgid="4567451985272963088">"Clock මුහුණ ten-thirty"</string>
+    <string name="spoken_emoji_1F566" msgid="2790552288169929810">"Clock මුහුණ eleven-thirty"</string>
+    <string name="spoken_emoji_1F567" msgid="9026037362100689337">"Clock මුහුණ twelve-thirty"</string>
+    <string name="spoken_emoji_1F5FB" msgid="9037503671676124015">"Mount fuji"</string>
+    <string name="spoken_emoji_1F5FC" msgid="1409415995817242150">"Tokyo tower"</string>
+    <string name="spoken_emoji_1F5FD" msgid="2562726956654429582">"Statue of liberty"</string>
+    <string name="spoken_emoji_1F5FE" msgid="1184469756905210580">"Silhouette of japan"</string>
+    <string name="spoken_emoji_1F5FF" msgid="6003594799354942297">"Moyai"</string>
+    <string name="spoken_emoji_1F600" msgid="7601109464776835283">"Grinning මුහුණ"</string>
+    <string name="spoken_emoji_1F601" msgid="746026523967444503">"Grinning මුහුණ සමඟ smiling eyes"</string>
+    <string name="spoken_emoji_1F602" msgid="8354558091785198246">"මුහුණ සමඟ tears of joy"</string>
+    <string name="spoken_emoji_1F603" msgid="3861022912544159823">"Smiling මුහුණ සමඟ open කට"</string>
+    <string name="spoken_emoji_1F604" msgid="5119021072966343531">"Smiling මුහුණ සමඟ open කට සහ smiling eyes"</string>
+    <string name="spoken_emoji_1F605" msgid="6140813923973561735">"Smiling මුහුණ සමඟ open කට සහ cold sweat"</string>
+    <string name="spoken_emoji_1F606" msgid="3549936813966832799">"Smiling මුහුණ සමඟ open කට සහ tightly-closed eyes"</string>
+    <string name="spoken_emoji_1F607" msgid="2826424078212384817">"Smiling මුහුණ සමඟ halo"</string>
+    <string name="spoken_emoji_1F608" msgid="7343559595089811640">"Smiling මුහුණ සමඟ horns"</string>
+    <string name="spoken_emoji_1F609" msgid="5481030187207504405">"Winking මුහුණ"</string>
+    <string name="spoken_emoji_1F60A" msgid="5023337769148679767">"Smiling මුහුණ සමඟ smiling eyes"</string>
+    <string name="spoken_emoji_1F60B" msgid="3005248217216195694">"මුහුණ savouring delicious food"</string>
+    <string name="spoken_emoji_1F60C" msgid="349384012958268496">"Relieved මුහුණ"</string>
+    <string name="spoken_emoji_1F60D" msgid="7921853137164938391">"Smiling මුහුණ සමඟ heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F60E" msgid="441718886380605643">"Smiling මුහුණ සමඟ ඉරුවීදුරුවes"</string>
+    <string name="spoken_emoji_1F60F" msgid="2674453144890180538">"Smirking මුහුණ"</string>
+    <string name="spoken_emoji_1F610" msgid="3225675825334102369">"Neutral මුහුණ"</string>
+    <string name="spoken_emoji_1F611" msgid="7199179827619679668">"Expressionless මුහුණ"</string>
+    <string name="spoken_emoji_1F612" msgid="985081329745137998">"Unamused මුහුණ"</string>
+    <string name="spoken_emoji_1F613" msgid="5548607684830303562">"මුහුණ සමඟ cold sweat"</string>
+    <string name="spoken_emoji_1F614" msgid="3196305665259916390">"Pensive මුහුණ"</string>
+    <string name="spoken_emoji_1F615" msgid="3051674239303969101">"Confused මුහුණ"</string>
+    <string name="spoken_emoji_1F616" msgid="8124887056243813089">"Confounded මුහුණ"</string>
+    <string name="spoken_emoji_1F617" msgid="7052733625511122870">"Kissing මුහුණ"</string>
+    <string name="spoken_emoji_1F618" msgid="408207170572303753">"මුහුණ throwing a kiss"</string>
+    <string name="spoken_emoji_1F619" msgid="8645430335143153645">"Kissing මුහුණ සමඟ smiling eyes"</string>
+    <string name="spoken_emoji_1F61A" msgid="2882157190974340247">"Kissing මුහුණ සමඟ closed eyes"</string>
+    <string name="spoken_emoji_1F61B" msgid="3765927202787211499">"මුහුණ සමඟ stuck-out දිව"</string>
+    <string name="spoken_emoji_1F61C" msgid="198943912107589389">"මුහුණ සමඟ stuck-out දිව සහ winking eye"</string>
+    <string name="spoken_emoji_1F61D" msgid="7643546385877816182">"මුහුණ සමඟ stuck-out දිව සහ tightly-closed eyes"</string>
+    <string name="spoken_emoji_1F61E" msgid="1528732952202098364">"Disappointed මුහුණ"</string>
+    <string name="spoken_emoji_1F61F" msgid="1853664164636082404">"Worried මුහුණ"</string>
+    <string name="spoken_emoji_1F620" msgid="6051942001307375830">"Angry මුහුණ"</string>
+    <string name="spoken_emoji_1F621" msgid="2114711878097257704">"Pouting මුහුණ"</string>
+    <string name="spoken_emoji_1F622" msgid="29291014645931822">"Crying මුහුණ"</string>
+    <string name="spoken_emoji_1F623" msgid="7803959833595184773">"Persevering මුහුණ"</string>
+    <string name="spoken_emoji_1F624" msgid="8637637647725752799">"මුහුණ සමඟ look of triumph"</string>
+    <string name="spoken_emoji_1F625" msgid="6153625183493635030">"Disappointed but relieved මුහුණ"</string>
+    <string name="spoken_emoji_1F626" msgid="6179485689935562950">"Frowning මුහුණ සමඟ open කට"</string>
+    <string name="spoken_emoji_1F627" msgid="8566204052903012809">"Anguished මුහුණ"</string>
+    <string name="spoken_emoji_1F628" msgid="8875777401624904224">"Fearful මුහුණ"</string>
+    <string name="spoken_emoji_1F629" msgid="1411538490319190118">"Weary මුහුණ"</string>
+    <string name="spoken_emoji_1F62A" msgid="4726686726690289969">"Sleepy මුහුණ"</string>
+    <string name="spoken_emoji_1F62B" msgid="3221980473921623613">"Tired මුහුණ"</string>
+    <string name="spoken_emoji_1F62C" msgid="4616356691941225182">"Grimacing මුහුණ"</string>
+    <string name="spoken_emoji_1F62D" msgid="4283677508698812232">"Loudly crying මුහුණ"</string>
+    <string name="spoken_emoji_1F62E" msgid="726083405284353894">"මුහුණ සමඟ open කට"</string>
+    <string name="spoken_emoji_1F62F" msgid="7746620088234710962">"Hushed මුහුණ"</string>
+    <string name="spoken_emoji_1F630" msgid="3298804852155581163">"මුහුණ සමඟ open කට සහ cold sweat"</string>
+    <string name="spoken_emoji_1F631" msgid="1603391150954646779">"මුහුණ screaming in fear"</string>
+    <string name="spoken_emoji_1F632" msgid="4846193232203976013">"Astonished මුහුණ"</string>
+    <string name="spoken_emoji_1F633" msgid="4023593836629700443">"Flushed මුහුණ"</string>
+    <string name="spoken_emoji_1F634" msgid="3155265083246248129">"Sleeping මුහුණ"</string>
+    <string name="spoken_emoji_1F635" msgid="4616691133452764482">"Dizzy මුහුණ"</string>
+    <string name="spoken_emoji_1F636" msgid="947000211822375683">"මුහුණ සමඟout කට"</string>
+    <string name="spoken_emoji_1F637" msgid="1269551267347165774">"මුහුණ සමඟ medical mask"</string>
+    <string name="spoken_emoji_1F638" msgid="3410766467496872301">"Grinning පූසා මුහුණ සමඟ smiling eyes"</string>
+    <string name="spoken_emoji_1F639" msgid="1833417519781022031">"පූසා මුහුණ සමඟ tears of joy"</string>
+    <string name="spoken_emoji_1F63A" msgid="8566294484007152613">"Smiling පූසා මුහුණ සමඟ open කට"</string>
+    <string name="spoken_emoji_1F63B" msgid="74417995938927571">"Smiling පූසා මුහුණ සමඟ heart-shaped eyes"</string>
+    <string name="spoken_emoji_1F63C" msgid="6472812005729468870">"පූසා මුහුණ සමඟ wry smile"</string>
+    <string name="spoken_emoji_1F63D" msgid="1638398369553349509">"Kissing පූසා මුහුණ සමඟ closed eyes"</string>
+    <string name="spoken_emoji_1F63E" msgid="6788969063020278986">"Pouting පූසා මුහුණ"</string>
+    <string name="spoken_emoji_1F63F" msgid="1207234562459550185">"Crying පූසා මුහුණ"</string>
+    <string name="spoken_emoji_1F640" msgid="6023054549904329638">"Weary පූසා මුහුණ"</string>
+    <string name="spoken_emoji_1F645" msgid="5202090629227587076">"මුහුණ සමඟ no good gesture"</string>
+    <string name="spoken_emoji_1F646" msgid="6734425134415138134">"මුහුණ සමඟ ok gesture"</string>
+    <string name="spoken_emoji_1F647" msgid="1090285518444205483">"Person bowing deeply"</string>
+    <string name="spoken_emoji_1F648" msgid="8978535230610522356">"See-no-evil වඳුරා"</string>
+    <string name="spoken_emoji_1F649" msgid="8486145279809495102">"Hear-no-evil වඳුරා"</string>
+    <string name="spoken_emoji_1F64A" msgid="1237524974033228660">"Speak-no-evil වඳුරා"</string>
+    <string name="spoken_emoji_1F64B" msgid="4251150782016370475">"Happy person raising one hසහ"</string>
+    <string name="spoken_emoji_1F64C" msgid="5446231430684558344">"සමරන විට පුද්ගලයන් ඇත දෙකම ඔසවයි"</string>
+    <string name="spoken_emoji_1F64D" msgid="4646485595309482342">"Person frowning"</string>
+    <string name="spoken_emoji_1F64E" msgid="3376579939836656097">"Person සමඟ pouting මුහුණ"</string>
+    <string name="spoken_emoji_1F64F" msgid="1044439574356230711">"Person සමඟ folded hසහs"</string>
+    <string name="spoken_emoji_1F680" msgid="513263736012689059">"Rocket"</string>
+    <string name="spoken_emoji_1F681" msgid="9201341783850525339">"Helicopter"</string>
+    <string name="spoken_emoji_1F682" msgid="8046933583867498698">"Steam locomotive"</string>
+    <string name="spoken_emoji_1F683" msgid="8772750354339223092">"Railway car"</string>
+    <string name="spoken_emoji_1F684" msgid="346396777356203608">"High-speed train"</string>
+    <string name="spoken_emoji_1F685" msgid="1237059817190832730">"High-speed train සමඟ bullet නහය"</string>
+    <string name="spoken_emoji_1F686" msgid="3525197227223620343">"Train"</string>
+    <string name="spoken_emoji_1F687" msgid="5110143437960392837">"Metro"</string>
+    <string name="spoken_emoji_1F688" msgid="4702085029871797965">"Light rail"</string>
+    <string name="spoken_emoji_1F689" msgid="2375851019798817094">"Station"</string>
+    <string name="spoken_emoji_1F68A" msgid="6368370859718717198">"Tබැටළුවා"</string>
+    <string name="spoken_emoji_1F68B" msgid="2920160427117436633">"Tබැටළුවා car"</string>
+    <string name="spoken_emoji_1F68C" msgid="1061520934758810864">"Bus"</string>
+    <string name="spoken_emoji_1F68D" msgid="2890059031360969304">"Oncoming bus"</string>
+    <string name="spoken_emoji_1F68E" msgid="6234042976027309654">"Trolleybus"</string>
+    <string name="spoken_emoji_1F68F" msgid="5871099334672012107">"Bus stop"</string>
+    <string name="spoken_emoji_1F690" msgid="8080964620200195262">"Minibus"</string>
+    <string name="spoken_emoji_1F691" msgid="999173032408730501">"Ambulance"</string>
+    <string name="spoken_emoji_1F692" msgid="1712863785341849487">"Fire engine"</string>
+    <string name="spoken_emoji_1F693" msgid="7987109037389768934">"Police car"</string>
+    <string name="spoken_emoji_1F694" msgid="6061658916653884608">"Oncoming police car"</string>
+    <string name="spoken_emoji_1F695" msgid="6913445460364247283">"Taxi"</string>
+    <string name="spoken_emoji_1F696" msgid="6391604457418285404">"Oncoming taxi"</string>
+    <string name="spoken_emoji_1F697" msgid="7978399334396733790">"Automobile"</string>
+    <string name="spoken_emoji_1F698" msgid="7006050861129732018">"Oncoming automobile"</string>
+    <string name="spoken_emoji_1F699" msgid="630317052666590607">"Recreational vehicle"</string>
+    <string name="spoken_emoji_1F69A" msgid="4739797891735823577">"Delivery truck"</string>
+    <string name="spoken_emoji_1F69B" msgid="4715997280786620649">"ඈඳූ ලොරිය"</string>
+    <string name="spoken_emoji_1F69C" msgid="5557395610750818161">"Tractor"</string>
+    <string name="spoken_emoji_1F69D" msgid="5467164189942951047">"Monorail"</string>
+    <string name="spoken_emoji_1F69E" msgid="169238196389832234">"Mountain railway"</string>
+    <string name="spoken_emoji_1F69F" msgid="7508128757012845102">"Suspension railway"</string>
+    <string name="spoken_emoji_1F6A0" msgid="8733056213790160147">"Mountain cableway"</string>
+    <string name="spoken_emoji_1F6A1" msgid="4666516337749347253">"Aerial tබැටළුවාway"</string>
+    <string name="spoken_emoji_1F6A2" msgid="4511220588943129583">"Ship"</string>
+    <string name="spoken_emoji_1F6A3" msgid="8412962252222205387">"Rowboat"</string>
+    <string name="spoken_emoji_1F6A4" msgid="8867571300266339211">"Speedboat"</string>
+    <string name="spoken_emoji_1F6A5" msgid="7650260812741963884">"තිරස් මාර්ග තදබද පහන"</string>
+    <string name="spoken_emoji_1F6A6" msgid="485575967773793454">"Vertical traffic light"</string>
+    <string name="spoken_emoji_1F6A7" msgid="6411048933816976794">"Construction සලකුණ"</string>
+    <string name="spoken_emoji_1F6A8" msgid="6345717218374788364">"Police cars revolving light"</string>
+    <string name="spoken_emoji_1F6A9" msgid="6586380356807600412">"Triangular flag on post"</string>
+    <string name="spoken_emoji_1F6AA" msgid="8954448167261738885">"Door"</string>
+    <string name="spoken_emoji_1F6AB" msgid="5313946262888343544">"No entry සලකුණ"</string>
+    <string name="spoken_emoji_1F6AC" msgid="6946858177965948288">"Smoking සංකේතය"</string>
+    <string name="spoken_emoji_1F6AD" msgid="6320088669185507241">"දුම්පානය කරන්න එපා සංකේතය"</string>
+    <string name="spoken_emoji_1F6AE" msgid="1062469925352817189">"Put litter in its place සංකේතය"</string>
+    <string name="spoken_emoji_1F6AF" msgid="2286668056123642208">"Do not litter සංකේතය"</string>
+    <string name="spoken_emoji_1F6B0" msgid="179424763882990952">"Potable water සංකේතය"</string>
+    <string name="spoken_emoji_1F6B1" msgid="5585212805429161877">"Non-potable water සංකේතය"</string>
+    <string name="spoken_emoji_1F6B2" msgid="1771885082068421875">"Bicycle"</string>
+    <string name="spoken_emoji_1F6B3" msgid="8033779581263314408">"No bicycles"</string>
+    <string name="spoken_emoji_1F6B4" msgid="1999538449018476947">"Bicyclist"</string>
+    <string name="spoken_emoji_1F6B5" msgid="340846352660993117">"Mountain bicyclist"</string>
+    <string name="spoken_emoji_1F6B6" msgid="4351024386495098336">"Pedestrian"</string>
+    <string name="spoken_emoji_1F6B7" msgid="4564800655866838802">"No pedestrians"</string>
+    <string name="spoken_emoji_1F6B8" msgid="3020531906940267349">"Children crossing"</string>
+    <string name="spoken_emoji_1F6B9" msgid="1207095844125041251">"Mens සංකේතය"</string>
+    <string name="spoken_emoji_1F6BA" msgid="2346879310071017531">"Womens සංකේතය"</string>
+    <string name="spoken_emoji_1F6BB" msgid="2370172469642078526">"Restroom"</string>
+    <string name="spoken_emoji_1F6BC" msgid="5558827593563530851">"Baby සංකේතය"</string>
+    <string name="spoken_emoji_1F6BD" msgid="9213590243049835957">"Toilet"</string>
+    <string name="spoken_emoji_1F6BE" msgid="394016533781742491">"Water closet"</string>
+    <string name="spoken_emoji_1F6BF" msgid="906336365928291207">"Shower"</string>
+    <string name="spoken_emoji_1F6C0" msgid="4592099854378821599">"Bath"</string>
+    <string name="spoken_emoji_1F6C1" msgid="2845056048320031158">"Bathtub"</string>
+    <string name="spoken_emoji_1F6C2" msgid="8117262514698011877">"Passport control"</string>
+    <string name="spoken_emoji_1F6C3" msgid="1176342001834630675">"Customs"</string>
+    <string name="spoken_emoji_1F6C4" msgid="1477622834179978886">"Baggage claim"</string>
+    <string name="spoken_emoji_1F6C5" msgid="2495834050856617451">"Left luggage"</string>
+</resources>
diff --git a/java/res/values-si-rLK/strings-letter-descriptions.xml b/java/res/values-si-rLK/strings-letter-descriptions.xml
new file mode 100644
index 0000000..0673e19
--- /dev/null
+++ b/java/res/values-si-rLK/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ස්ත්‍රී ක්‍රමාංකය දර්ශකය"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"මයික්‍රො ලකුණ"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"පුරුෂ ක්‍රමාංකය දර්ශකය"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"සියුම් S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, ගම්භීර"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, තියුණු"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, වකුටු"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, ස්වර"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, වළල්ලට ඉහළ"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, බැම්ම"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, ගම්භීර"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, තියුණු"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, වකුටු"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, ස්වර"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, ගම්භීර"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, තියුණු"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, වකුටු"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, ස්වර"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"එත්"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, ගම්භීර"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, තියුණු"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, වකුටු"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, ස්වර"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, වාරය"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, ගම්භීර"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, තියුණු"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, වකුටු"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, ස්වර"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, තියුණු"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"කටුව"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, ස්වර"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, මුද්‍රිත"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, බ්‍රේව්"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ඔගොනෙක්"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, තියුණු"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, වකුටු"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, ඉහළින් තිත"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, කරෝන්"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, කරෝන්"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, වාරය"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, මුද්‍රිත"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, බ්‍රේව්"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, ඉහළින් තිත"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ඔගොනෙක්"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, කරෝන්"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, වකුටු"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, බ්‍රේව්"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, ඉහළින් තිත"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, වකුටු"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, වාරය"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, මුද්‍රිත"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, බ්‍රේව්"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ඔගොනෙක්"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"තිත නැති I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, බැම්ම"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, වකුටු"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"ක්‍ර"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, තියුණු"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, කරෝන්"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, මැද තිත"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, වාරය"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, තියුණු"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, කරෝන්"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, පෙර මඟින් ආමන්ත්‍රණයක්"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"එන්ග්"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, මුද්‍රිත"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, බ්‍රේව්"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, ද්විත්ව තියුණු"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, බැම්ම"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, තියුණු"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, කරෝන්"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, තියුණු"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, වකුටු"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, කරෝන්"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, සකාර ලකුණ"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, කරෝන්"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, වාරය"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, මුද්‍රිත"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, බ්‍රේව්"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, වළල්ලට ඉහළ"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, ද්විත්ව තියුණු"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ඔගොනෙක්"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, වකුටු"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, වකුටු"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, තියුණු"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, ඉහළින් තිත"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, කරෝන්"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"දිග S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, අං"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, අං"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, පහළ කොමාව"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, පහළ කොමාව"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"ස්චාව"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, වකුටු සහ තියුණු"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, වකුටු සහ ගම්භීර"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, වකුටු සහ ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, වකුටු සහ නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, වකුටු සහ පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, බ්‍රේව් සහ තියුණු"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, බ්‍රේව් සහ ගම්භීර"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, බ්‍රේව් සහ පහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, බ්‍රේව් සහ නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, බ්‍රේව් සහ පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, වකුටු සහ තියුණු"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, වකුටු සහ ගම්භීර"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, වකුටු සහ ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, වකුටු සහ නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, වකුටු සහ පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, පහළ තිත"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, පහළ තිත"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, වකුටු සහ තියුණු"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, වකුටු සහ ගම්භීර"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, වකුටු සහ ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, වකුටු සහ නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, වකුටු සහ පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, අං සහ තියුණු"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, අං සහ ගම්භීර"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, අං සහ ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, අං සහ නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, අං සහ පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, අං සහ තියුණු"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, අං සහ ගම්භීර"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, අං සහ ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, අං සහ නාසික්‍ය"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, අං සහ පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, ගම්භීර"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, පහළ තිත"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, ඉහළ කොක්ක"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, නාසික්‍ය"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"යටිකුරු කළ හර්ෂදී ලකුණ"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"වමට-ලක්ෂ ගත ද්විත්ව අනාත කළ උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"මැද තිත"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"උඩු ලකුණු එක"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"දකුණට-ලක්ෂ ගත ද්විත්ව අනාත කළ උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"යටිකුරු කළ ප්‍රශ්ණාර්ථ ලකුණ"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"වම් ද්විත්ව උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"දකුණු තනි උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"තනි 9-අඩු උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"වම් ද්විත්ව උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"දකුණු ද්විත්ව උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"සිරිය"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"ද්විත්ව සිරිය"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"මිල්ලේ ලකුණ"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"මූලික"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"ද්විත්ව මූලික"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"තනි වමට-ලක්ෂ ගත අනාත කළ උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"තනිව දකුණට-ලක්ෂ ගත අනාත කළ උද්ධෘත ලකුණ"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"උඩු ලකුණු හතර"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"උඩු ලකුණු ලතින් කුඩා n අකුර"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"පෙසෝ ලකුණ"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"බාරේ"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"දකුණට ඇති ඊතලය"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"කළු ඊතලය"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"හිස් කුලකය"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"වැඩිවීම"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"කුඩා හෝ සමානයි"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"විශාලයි  හෝ සමානයි"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"කළු තුරු"</string>
+</resources>
diff --git a/java/res/values-si-rLK/strings-talkback-descriptions.xml b/java/res/values-si-rLK/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..85cb5f6
--- /dev/null
+++ b/java/res/values-si-rLK/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"මුරපදයේ යතුරු හඬ හොඳින් ඇසීමට හෙඩ්සෙටය සම්බන්ධ කරන්න."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"වර්තමාන පෙළ %s ය"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"පෙළ ඇතුළු කර නැත"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> සිට <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> වෙත නිවැරදි කරයි"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ස්වයං-නිවැරදි කිරීම සිදු කරයි"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"නොදන්නා අකුර"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"ෂිෆ්ට්"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"තව සංකේත"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"ෂිෆ්ට්"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"සංකේත"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"ෂිෆ්ට්"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"මකන්න"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"සංකේත"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"අකුරු"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"අංක"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"සැකසීම්"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ටැබය"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"ස්පේස්"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"හඬ ආදානය"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ඉමොජි"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"ආපසු එවන්න"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"සොයන්න"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"තිත"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"භාෂාව මාරු කරන්න"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"මීළඟ"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"පෙර"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"ෂිෆ්ට් සබල කර ඇත"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"කැප්ස් ලොක් සබල කර ඇත"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"සංකේත ආකාරය"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"තව සංකේත ආකාර"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"අකුරු ආකාරය"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"දුරකථන ආකාරය"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"දුරකථන සංකේත ආකාරය"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"යතුරු පුවරුව සැඟවී ඇත"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> යතුරුපුවරුව පෙන්වමින්"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"දිනය"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"දිනය සහ වේලාව"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ඊ-තැපෑල"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"පණිවිඩ යැවීම"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"අංකය"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"දුරකථනය"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"පෙළ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"කාලය"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"මෑත"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"පුද්ගලයින්"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"වස්තුව"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"සොබාදහම"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"ස්ථාන"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"සංකේත"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ඉමෝටිකොන්"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"ලොකු <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"ලොකු I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"ලොකු I, ඉහළින් තිත"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"නොදන්නා සංකේතය"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"නොදන්නා ඉමොජි"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"විකල්ප අකුරු තිබේ"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"විකල්ප අකුරු අස් කරන ලදි"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"විකල්ප යෝජනා තිබේ"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"විකල්ප යෝජනා අස් කරන ලදි"</string>
+</resources>
diff --git a/java/res/values-si-rLK/strings.xml b/java/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..e4e0b8e
--- /dev/null
+++ b/java/res/values-si-rLK/strings.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"ආදාන විකල්ප"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"සබඳතා නම් විමසන්න"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"අක්ෂර වින්‍යාස පරික්ෂකය ඔබගේ සබඳතා ලැයිස්තුව වෙතින් ඇතුළත් කිරීම් භාවිතා කරයි"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"යතුර එබීමට කම්පනය කිරීම සක්‍රියයි"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"යතුරු එබිම මත හඬ"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"යතුරු එබීම මත උත්පතනය"</string>
+    <string name="settings_screen_input" msgid="2808654300248306866">"ආදාන මනාපය"</string>
+    <string name="settings_screen_appearances" msgid="3611951947835553700">"පෙනුම"</string>
+    <string name="settings_screen_multi_lingual" msgid="6829970893413937235">"බහු මූර්ධජ අක්ෂර විකල්ප"</string>
+    <string name="settings_screen_gesture" msgid="9113437621722871665">"ඉංගිතයෙන් ටයිප් කිරීමේ මනාපය"</string>
+    <string name="settings_screen_correction" msgid="1616818407747682955">"පෙළ නිවැරදි කිරීම"</string>
+    <string name="settings_screen_advanced" msgid="7472408607625972994">"උසස්"</string>
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"වෙනත් ආදාන ක්‍රම වෙත මාරුවන්න"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"භාෂා මාරු යතුර වෙනත් ආදාන ක්‍රමද ආවරණය කරයි"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"භාෂා මාරු යතුර"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"බහුවිධ ආදාන භාෂා සබල කර ඇති විට පෙන්වන්න"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"සර්පණ දර්ශකය පෙන්වන්න"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"ෂිෆ්ට් හෝ සංකේත යතුරු වෙතින් සර්පණය කරන අතරතුර දෘෂ්‍ය ඉඟි දර්ශනය කරන්න"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"යතුරු උත්පතන ඉවත් කිරීමේ ප්‍රමාදය"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ප්‍රමාද නැත"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"සුපුරුදු"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>ms"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"පද්ධති සුපුරුදු"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"සබඳතා නම් යෝජනා කරන්න"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"යෝජනා සහ නිවැරදි කිරීම් සඳහා සබඳතා වෙතින් නම් භාවිතා කරන්න"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"පෞද්ගලීකරණය කළ යෝජනා"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"දියුණු <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"දෙවරක්-ඉඩ නැවතීමේ ලකුණ"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"ඉඩ යතුර මත දෙවරක් තට්ටු කිරීම හිස් තැනකට අනුගාමිව නැවතීමේ ලකුණක් ඇතුළත් කරයි."</string>
+    <string name="auto_cap" msgid="1719746674854628252">"ස්වයං-ලොකු අකුරු කරණය"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"එක් එක් වාක්‍යයේ පළමු වචනය ලොකු අකුරු කරන්න"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"පුද්ගලික ශබ්ද කෝෂය"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"ඈඳුම් ශබ්දකෝෂ"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"ප්‍රධාන ශබ්ද කෝෂය"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"නිවැරදි කිරීම් යෝජනා පෙන්වන්න"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"ටයිප් කරන අතරතුර යෝජිත වචන දර්ශනය කරන්න"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"සැමවිටම පෙන්වන්න"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"සිරස් ආකෘති ප්‍රකාරය තුළ පෙන්වන්න"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"සැමවිට සඟවන්න"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"අප්‍රසන්න වචන අවහිර කරන්න"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"විභව්‍යව අප්‍රසන්න වචන යෝජනා නොකරන්න"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"ස්වයං-නිවැරදි කිරීම"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"ඉඩ යතුර සහ විරාම ලකුණ වැරදියට ටයිප් කළ වචන ස්වයංක්‍රියව නිවැරදි කරයි"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"අක්‍රියයි"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"මධ්‍යස්"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"ආක්‍රමණකාරී"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"ඉතා ආක්‍රමණකාරී"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"ඊළඟ-වචනයේ යෝජනා"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"යෝජනා කිරීමේදී පෙර වචනය භාවිතා කරන්න"</string>
+    <string name="gesture_input" msgid="826951152254563827">"ඉංගිතයෙන් ටයිප් කිරීම සබල කරන්න"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"අකුරු ඔස්සේ සර්පණය කිරීමෙන් වචනයක් ආදානය කරන්න"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"ඉංගිතයෙන් මඟ පෙන්වන්න"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ගතිකව ඉපිලෙන පෙරදසුන"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ඉංගිතය කරන අතරතුර යෝජිත වචන බලන්න"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"ජේද ඉංගිතය"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ඉංගිතයන් අතරතුර space යතුර වෙත ලිස්සීම මඟින් ඉඩ ඇතුල් කරන්න"</string>
+    <string name="voice_input" msgid="3583258583521397548">"හඬ ආදාන යතුර"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"හඬ ආදාන සබල කර නැත. භාෂාව සහ ආදාන සැකසීම් පරීක්ෂා කරන්න."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"ආදාන ක්‍රම වින්‍යාස කරන්න"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"ආදාන භාෂා"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"ප්‍රතිපෝෂණ යවන්න"</string>
+    <string name="select_language" msgid="3693815588777926848">"ආදාන භාෂා"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"සුරැකීමට නැවත ස්පර්ශ කරන්න"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"ශබ්ද කෝෂය ලබාගත හැක"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"යතුරු පුවරු තේමාව"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ඉංග්‍රීසි (UK)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ඉංග්‍රීසි (US)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"ස්පාඤ්ඤ (US)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ඉංග්‍රීසි (එ.රා) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ඉංග්‍රීසි (එ.ජ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ස්පාඤ්ඤ (එ.ජ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (සාම්ප්‍රදායික)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (සිරිලික්)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ලතින්)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"භාෂාවක් නැත (අකාරාදිය)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"අකාරාදිය (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"අකාරාදිය (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"අකාරාදිය (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"අකාරාදිය (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"අකාරාදිය (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"අකාරාදිය (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"ඉමොජි"</string>
+    <string name="keyboard_theme" msgid="4909551808526178852">"යතුරු පුවරු තේමාව"</string>
+    <string name="keyboard_theme_holo_white" msgid="8506588144096428751">"හොලෝ සුදු"</string>
+    <string name="keyboard_theme_holo_blue" msgid="192400518003397418">"හොලෝ නිල්"</string>
+    <string name="keyboard_theme_material_dark" msgid="2701178578784760596">"ද්‍රව්‍යමය අඳුරු"</string>
+    <string name="keyboard_theme_material_light" msgid="3479400901818790331">"ද්‍රව්‍යමය ළා"</string>
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"අභිරුචි ආදාන විලාස"</string>
+    <string name="add_style" msgid="6163126614514489951">"විලාසය එක් කරන්න"</string>
+    <string name="add" msgid="8299699805688017798">"එක් කරන්න"</string>
+    <string name="remove" msgid="4486081658752944606">"ඉවත් කරන්න"</string>
+    <string name="save" msgid="7646738597196767214">"සුරකින්න"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"භාෂාව"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"පිරිසැලසුම"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"ඔබ එය භාවිතය ආරම්භ කිරීමට පෙර ඔබගේ අභිරුචි ආදාන විලාසය සබල කිරීමට අවශ්‍යය. ඔබට එය දැන් සබල කිරීමට අවශ්‍යද?"</string>
+    <string name="enable" msgid="5031294444630523247">"සබල කරන්න"</string>
+    <string name="not_now" msgid="6172462888202790482">"දැන් නොවේ"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"සමාන ආදාන විලාසය දැනටමත් පවතී: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"යතුරු දිගු එබීම් ප්‍රමාදය"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"යතුරු එබිම් කම්පන කාලපරිච්ඡේදය"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"යතුරු එබීම් හඬ තීව්‍රතාවය"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"බාහිර ශබ්ද කෝෂ ගොනුව කියවන්න"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"බාගැනීම් ෆෝල්ඩරය තුළ ශබ්දකෝෂ ගොනු නොමැත"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ස්ථාපනය කිරීමට ශබ්ද කෝෂ ගොනුවක් තෝරන්න"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> සඳහා ඇත්තටම මෙම ගොනුව ස්ථාපනය කරන්නද?"</string>
+    <string name="error" msgid="8940763624668513648">"දෝෂයක් ඇති විය"</string>
+    <string name="button_default" msgid="3988017840431881491">"සුපුරුදු"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> වෙත සාදරයෙන් පිළිගනිමු"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"ඉංගිත ටයිප් කිරීම් සමග"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"අරඹන්න"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"ඊළඟ පියවර"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> සැකසෙමින් පවතී"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> සබල කරන්න"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"කරණාකර ඔබගේ භාෂවෙහි සහ ආදාන සැකසීම් වල \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" පරික්ෂා කරන්න. මෙය ඔබගේ උපාංගය මත එයට ධාවනය වීමට අනුමැතිය දෙනු ඇත."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> දැනටමත් ඔබගේ භාෂාවෙන් සහ ආදාන සැකසීම්වල සබල කර ඇත, එම නිසා මෙම පියවර නිමයි. ඊළග එක වෙතට!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"සැකසීම් තුළ සබල කරන්න"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> වෙත මාරුවන්න"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"ඊළඟට, ඔබගේ සක්‍රිය පෙළ-ආදාන ක්‍රමය ලෙස \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" තෝරන්න."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"ආදාන ක්‍රම මාරු කරන්න"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"සුබපැතුම්, ඔබ සියල්ල පිහිටුවා ඇත!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"දැන් ඔබට <xliff:g id="APPLICATION_NAME">%s</xliff:g> සමගින් ඔබගේ  සියළුම ප්‍රියතම යෙදුම් වලින් ටයිප් කළ හැක."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"අතිරේක භාෂා වින්‍යාස කරන්න"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"අවසන්"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"යෙදුම් නිරූපකය පෙන්වන්න"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"දියත්කරනය තුළ යෙදුම් නිරූපකය දර්ශනය කරන්න"</string>
+    <string name="app_name" msgid="6320102637491234792">"ශබ්දකෝෂ සැපයුම්කරු"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"ශබ්දකෝෂ සැපයුම්කරු"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"ශබ්ද කෝෂ සේවාව"</string>
+    <string name="download_description" msgid="6014835283119198591">"ශබ්ද කෝෂ යාවත්කාලීන තොරතුරු"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"ඈඳුම් ශබ්ද කෝෂ"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"ශබ්දකෝෂය ලබාගත හැක"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"ශබ්ද කෝෂ සඳහා සැකසීම්"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"පරිශීලක ශබ්ද කෝෂ"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"පරිශීලක ශබ්ද කෝෂය"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"ශබ්දකෝෂය ලබාගත හැක"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"දැනට බාගැනේ"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"ස්ථාපිතයි"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"ස්ථාපනය කළ, අබල කළ"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"ශබ්දකෝෂ සේවාව වෙත සම්බන්ධ වීමට ගැටලුවක්ද"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"ශබ්ද කෝෂ ලබාගත නොහැක"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"නැවුම් කරන්න"</string>
+    <string name="last_update" msgid="730467549913588780">"අවසන් වරට යාවත්කාලීන කළේ"</string>
+    <string name="message_updating" msgid="4457761393932375219">"යාවත්කාලීන සඳහා පරික්ෂා කෙරේ"</string>
+    <string name="message_loading" msgid="5638680861387748936">"පූරණය වෙමින්..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"ප්‍රධාන ශබ්ද කෝෂය"</string>
+    <string name="cancel" msgid="6830980399865683324">"අවලංගු කරන්න"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"සැකසීම්"</string>
+    <string name="install_dict" msgid="180852772562189365">"ස්ථාපනය"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"අවලංගු කරන්න"</string>
+    <string name="delete_dict" msgid="756853268088330054">"මකන්න"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ඔබගේ ජංගම උපාංගය මත තෝරාගත් භාෂාවට ලබාගත හැකි ශබ්ද කෝෂයක් ඇත.&lt;br/&gt; අප ඔබගේ ටයිප් කිරීමේ පළපුරුද්ද වැඩි දියුණු කිරීමට <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ශබ්ද කෝෂය &lt;b&gt;බාගැනීම&lt;/b&gt; නිර්දේශ කරමු.&lt;br/&gt; &lt;br/&gt; 3G හරහා බාගැනීම මිනිත්තුවක් හෝ දෙකක් ගත හැකිය. ඔබට &lt;b&gt;සීමාරහිත දත්ත සැලසුමක්&lt;/b&gt; නොමැති නම් ගාස්තු අදාළ විය හැක.&lt;br/&gt; ඔබට තිබෙන්නේ කුමන දත්ත සැලසුමක්ද යන්න පිළිබඳ විශ්වාසයක් නොමැති නම්, බාගැනීම ස්වයංක්‍රියව ආරම්භ කිරීමට Wi-Fi සම්බන්ධයක් සොයා ගැනීම අප නිර්දේශ කරමු.&lt;br/&gt; &lt;br/&gt; ඉඟිය: ඔබට ඔබගේ ජංගම උපාංගයේ &lt;b&gt;සැකසීම්&lt;/b&gt; මෙනුව තුළ &lt;b&gt;භාෂාව සහ ආදානය&lt;/b&gt; වෙත යාම මගින් ශබ්දකෝෂ බාගැනීමට සහ ඉවත් කිරීමට හැක."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"දැන් බාගන්න (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi හරහා බාගන්න"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> සඳහා ශබ්දකෝෂයක් නොමැත"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"සමාලෝචනය කිරීමට සහ බාගැනීමට ඔබන්න"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"බාගතකරමින්: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> සඳහා යෝජනා ඉක්මනින් සුදානම් වනු ඇත."</string>
+    <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> අනුවාදය"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"එක් කරන්න"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"ශබ්ද කෝෂය වෙත එක් කරන්න"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"වාක්‍ය ඛණ්ඩය"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"තවත් විකල්ප"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"අඩු විකල්ප"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"හරි"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"වචනය:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"කෙටිමග:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"භාෂාව:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"වචනයක් ටයිප් කරන්න"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"විකල්පමය කෙටිමග"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"වචනය සංස්කරණය කරන්න"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"සංස්කරණය කරන්න"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"මකන්න"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"ඔබට පරිශීලක ශබ්ද කෝෂය තුළ වචන කිසිවක් නැත. එක් කරන්න (+) බොත්තම ස්පර්ශ කිරීම මගින් වචනයක් එක් කරන්න."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"සියලු භාෂාවන් සඳහා"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"තවත් භාෂා…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"මකන්න"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-sk/strings-action-keys.xml b/java/res/values-sk/strings-action-keys.xml
index 3586fb1..84e1c31 100644
--- a/java/res/values-sk/strings-action-keys.xml
+++ b/java/res/values-sk/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Pred."</string>
     <string name="label_done_key" msgid="7564866296502630852">"OK"</string>
     <string name="label_send_key" msgid="482252074224462163">"Posl."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Hľadať"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pauza"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Čakať"</string>
 </resources>
diff --git a/java/res/values-sk/strings-config-important-notice.xml b/java/res/values-sk/strings-config-important-notice.xml
new file mode 100644
index 0000000..9b15ac9
--- /dev/null
+++ b/java/res/values-sk/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Zlepšovať návrhy na základe komunikácie a zadaných údajov"</string>
+</resources>
diff --git a/java/res/values-sk/strings-letter-descriptions.xml b/java/res/values-sk/strings-letter-descriptions.xml
new file mode 100644
index 0000000..e6bba4a
--- /dev/null
+++ b/java/res/values-sk/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Indikátor radovej číslovky ženského rodu"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Znak mikro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Indikátor radovej číslovky mužského rodu"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Ostré S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A s opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A s dĺžňom"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A s vokáňom"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A s vlnovkou"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A s dvoma bodkami"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A s krúžkom"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Ligatúra písmen A, E"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E s opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E s dĺžňom"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E s vokáňom"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E s dvoma bodkami"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I s opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I s dĺžňom"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I s vokáňom"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I s dvoma bodkami"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N s vlnovkou"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O s opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O s dĺžňom"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O s vokáňom"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O s vlnovkou"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O s dvoma bodkami"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Prečiarknuté O"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U s opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U s dĺžňom"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U s vokáňom"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U s dvoma bodkami"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y s dĺžňom"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y s dvoma bodkami"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A s vodorovnou čiarkou"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A s oblúčikom"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A s nožičkou"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C s dĺžňom"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C s vokáňom"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C s bodkou nad písmenom"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C s mäkčeňom"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D s mäkčeňom"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Prečiarknuté D"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E s vodorovnou čiarkou"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E s oblúčikom"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E s bodkou nad písmenom"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E s nožičkou"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E s mäkčeňom"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G s vokáňom"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G s oblúčikom"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G s bodkou nad písmenom"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H s vokáňom"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Prečiarknuté H"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I s vlnovkou"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I s vodorovnou čiarkou"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I s oblúčikom"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I s nožičkou"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I bez bodky"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Ligatúra písmen I, J"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J s vokáňom"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L s dĺžňom"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L s mäkčeňom"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L s bodkou uprostred"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Prečiarknuté L"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N s dĺžňom"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N s mäkčeňom"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N s apostrofom na začiatku"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O s vodorovnou čiarkou"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O s oblúčikom"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O s dvoma dĺžňami"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Ligatúra písmen O, E"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R s dĺžňom"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R s mäkčeňom"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S s dĺžňom"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S s vokáňom"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S s mäkčeňom"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T s háčikom pod písmenom"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T s mäkčeňom"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Prečiarknuté T"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U s vlnovkou"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U s vodorovnou čiarkou"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U s oblúčikom"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U s krúžkom"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U s dvoma dĺžňami"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U s nožičkou"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W s vokáňom"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y s vokáňom"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z s dĺžňom"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z s bokou nad písmenom"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z s mäkčeňom"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Dlhé S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O s rohom"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U s rohom"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S s čiarkou pod písmenom"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T s čiarkou pod písmenom"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A s bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A s háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A s vokáňom aj dĺžňom"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A s vokáňom aj opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A s vokáňom aj háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A s vokáňom aj vlnovkou"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A s vokáňom aj bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A s oblúčikom aj dĺžňom"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A s oblúčikom aj opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A s oblúčikom aj háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A s oblúčikom aj vlnovkou"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A s oblúčikom aj bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E s bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E s háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E s vlnovkou"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E s vokáňom aj dĺžňom"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E s vokáňom aj opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E s vokáňom aj háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E s vokáňom aj vlnovkou"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E s vokáňom aj bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I s háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I s bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O s bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O s háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O s vokáňom aj dĺžňom"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O s vokáňom aj opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O s vokáňom aj háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O s vokáňom aj vlnovkou"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O s vokáňom aj bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O s rohom aj dĺžňom"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O s rohom aj opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O s rohom aj háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O s rohom aj vlnovkou"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O s rohom aj bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U s bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U s háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U s rohom aj dĺžňom"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U s rohom aj opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U s rohom aj háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U s rohom aj vlnovkou"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U s rohom aj bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y s opačným dĺžňom"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y s bodkou pod písmenom"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y s háčikom nad písmenom"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y s vlnovkou"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Obrátený výkričník"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Lomené ľavé dvojité úvodzovky"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Bodka uprostred"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Jednotka v hornom indexe"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Lomené pravé dvojité úvodzovky"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Obrátený otáznik"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Ľavé jednoduché úvodzovky"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Pravé jednoduché úvodzovky"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Dolné jednoduché úvodzovky"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Ľavé dvojité úvodzovky"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Pravé dvojité úvodzovky"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Krížik"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dvojitý krížik"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Znak promile"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Indexová čiarka"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dvojitá indexová čiarka"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Jednoduché ľavé úvodzovky"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Jednoduché pravé úvodzovky"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Štvorka v hornom indexe"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Latinka – malé písmeno n v hornom indexe"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Znak pesa"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Malé písmená c a o oddelené lomkou"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Šípka vpravo"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Šípka nadol"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Prázdna množina"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Prírastok"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Menšie alebo rovné ako"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Väčšie alebo rovné ako"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Čierna hviezda"</string>
+</resources>
diff --git a/java/res/values-sk/strings-talkback-descriptions.xml b/java/res/values-sk/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..2cd094e
--- /dev/null
+++ b/java/res/values-sk/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Ak si chcete pri zadávaní hesla vypočuť nahlas vyslovené klávesy, pripojte náhlavnú súpravu."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Aktuálny text je %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Nie je zadaný žiadny text"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Klávesom <xliff:g id="KEY_NAME">%1$s</xliff:g> opravíte slovo <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Klávesom <xliff:g id="KEY_NAME">%1$s</xliff:g> spustíte automatické opravy"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Neznámy znak"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Ďalšie symboly"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboly"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Odstrániť"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboly"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Písmená"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Čísla"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Nastavenia"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Karta"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Medzerník"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Hlasový vstup"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Hľadať"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Bodka"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Prepnúť jazyk"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Ďalej"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Naspäť"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Kláves Shift je povolený"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Kláves Caps Lock je povolený"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Režim symbolov"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Režim ďalších symbolov"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Režim písmen"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Režim telefónu"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Režim telefónnych symbolov"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Klávesnica je skrytá"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Je zobrazená klávesnica <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"dátum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"dátum a čas"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-mail"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"odosielanie správ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"číslo"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefón"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"čas"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"Adresa URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Nedávne"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Ľudia"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Predmety"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Príroda"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Miesta"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboly"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Emotikony"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Veľké písmeno – <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Veľké I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Veľké I s bodkou nad písmenom"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Neznámy symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Neznámy symbol Emodži"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatívne znaky sú dostupné"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatívne znaky boli zrušené"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatívne návrhy sú dostupné"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatívne návrhy boli zrušené"</string>
+</resources>
diff --git a/java/res/values-sk/strings.xml b/java/res/values-sk/strings.xml
index d1f966c..40e1db4 100644
--- a/java/res/values-sk/strings.xml
+++ b/java/res/values-sk/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti zadávania textu a údajov"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Príkazy denníka výskumu"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Vyhľadať kontakty"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Kontrola pravopisu používa záznamy z vášho zoznamu kontaktov"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Pri stlačení klávesu vibrovať"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvuk pri stlačení klávesu"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Zobraziť znaky pri stlačení klávesu"</string>
-    <string name="general_category" msgid="1859088467017573195">"Všeobecné"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Oprava textu"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Písanie gestami"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Ďalšie možnosti"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Rozšírené nastavenia"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Možnosti pre odborníkov"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prepnúť na iné metódy vstupu"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Kláves na prepnutie jazyka pokrýva aj ďalšie metódy vstupu"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Kľúč na prepínanie jazyka"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Predvolené nastav."</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Navrhnúť mená kontaktov"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Používať mená z Kontaktov na návrhy a opravy"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Prispôsobené návrhy"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Zlepšiť aplikáciu <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Bodka s medzerou"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dvojitým klepnutím na medzerník vložíte bodku a medzeru."</string>
     <string name="auto_cap" msgid="1719746674854628252">"Veľké písmená automaticky"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Zobrazovať stopu gesta"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamická plávajúca ukážka"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Zobrazenie navrhovaného slova pri písaní gestami"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Uložené"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Ak si chcete pri zadávaní hesla vypočuť nahlas vyslovené klávesy, pripojte náhlavnú súpravu."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Aktuálny text je %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Nie je zadaný žiadny text"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Klávesom <xliff:g id="KEY">%1$s</xliff:g> opravíte slovo <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> na <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Klávesom <xliff:g id="KEY">%1$s</xliff:g> spustíte automatické opravy"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Kód klávesu %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Kláves Shift je zapnutý (zakážete ho klepnutím)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Kláves Caps Lock je zapnutý (zakážete ho klepnutím)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboly"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Písmená"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Čísla"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Nastavenia"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Karta"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Medzerník"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Hlasový vstup"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Usmiata tvár"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Hľadať"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Bodka"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Prepnúť jazyk"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Ďalšie"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Predchádzajúce"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Kláves Shift je povolený"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Kláves Caps Lock je povolený"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Kláves Shift je zakázaný"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Režim symbolov"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Režim písmen"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Režim telefónu"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Režim telefónnych symbolov"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Klávesnica je skrytá"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Zobrazenie klávesnice v režime <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"dátum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"dátum a čas"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-mail"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"odosielanie správ"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"číslo"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefón"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"čas"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"Adresa URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frázové gesto"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Medzery medzi gestá vložíte prejdením po klávese medzerníka"</string>
     <string name="voice_input" msgid="3583258583521397548">"Kľúč hlasového vstupu"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na hlavnej klávesnici"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na klávesnici so symbolmi"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Vypnuté"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mikrofón na hlavnej klávesnici"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mikrofón na klávesnici so symbolmi"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hlasový vstup je zakázaný"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Nie sú povolené žiadne metódy hlasového vstupu. Skontrolujte nastavenia položky Jazyk a vstup."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurovať metódy vstupu"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Jazyky vstupu"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Odoslať spätnú väzbu"</string>
     <string name="select_language" msgid="3693815588777926848">"Jazyky vstupu"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Opätovným dotykom uložíte"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"K dispozícii je slovník"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Povoliť spätnú väzbu od používateľov"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Automatickým zasielaním štatistík o využívaní editora metódy vstupu a správ o jeho zlyhaní môžete prispieť k vylepšeniu tohto nástroja"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Motív klávesnice"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Anglická klávesnica (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Anglická klávesnica (US)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"španielčina (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"angličtina (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"angličtina (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"španielčina (USA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradičná)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"angličtina (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"angličtina (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"španielčina (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradičná)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cyrilika)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latinka)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Žiadny jazyk (latinka)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Latinka (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Latinka (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Latinka (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Latinka (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Farebná schéma"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Biela"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Modrá"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Vlastné štýly vstupu"</string>
     <string name="add_style" msgid="6163126614514489951">"Pridať štýl"</string>
     <string name="add" msgid="8299699805688017798">"Pridať"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Povoliť"</string>
     <string name="not_now" msgid="6172462888202790482">"Teraz nie"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Rovnaký štýl vstupu už existuje: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Režim štúdie použiteľnosti"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Oneskor. pri stlač. a podržaní"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Trvanie vibrov. pri stlač. kl."</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Hlasitosť pri stlačení klávesu"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Čítať súbor externého slovníka"</string>
-    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"V priečinku Preberanie nie sú žiadne súbory slovníka"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"V priečinku Sťahovanie nie sú žiadne súbory slovníka"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Vyberte súbor slovníka, ktorý chcete nainštalovať"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Chcete nainštalovať tento súbor pre jazyk <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Chcete nainštalovať tento súbor pre jazyk <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Vyskytla sa chyba"</string>
     <string name="button_default" msgid="3988017840431881491">"Predvolené"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Vitajte v aplikácii <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -199,7 +166,7 @@
     <string name="user_dictionaries" msgid="3582332055892252845">"Používateľské slovníky"</string>
     <string name="default_user_dict_pref_name" msgid="1625055720489280530">"Používateľský slovník"</string>
     <string name="dictionary_available" msgid="4728975345815214218">"K dispozícii je slovník"</string>
-    <string name="dictionary_downloading" msgid="2982650524622620983">"Aktuálne sa preberá"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"Aktuálne sa sťahuje"</string>
     <string name="dictionary_installed" msgid="8081558343559342962">"Nainštalované"</string>
     <string name="dictionary_disabled" msgid="8950383219564621762">"Nainštalovaný, zakázaný"</string>
     <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"Probl. s prip. k sl."</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Obnoviť"</string>
     <string name="last_update" msgid="730467549913588780">"Posledná aktualizácia"</string>
     <string name="message_updating" msgid="4457761393932375219">"Prebieha kontrola aktualizácií"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Načítava sa..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Prebieha načítavanie..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Hlavný slovník"</string>
     <string name="cancel" msgid="6830980399865683324">"Zrušiť"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Nastavenia"</string>
     <string name="install_dict" msgid="180852772562189365">"Inštalovať"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Zrušiť"</string>
     <string name="delete_dict" msgid="756853268088330054">"Odstrániť"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Pre vybratý jazyk mobilného zariadenia je k dispozícii slovník.&lt;br/&gt; Slovník jazyka <xliff:g id="LANGUAGE">%1$s</xliff:g> vám odporúčame &lt;b&gt;prevziať&lt;/b&gt;. Pomôže vám pri zadávaní textu.&lt;br/&gt; &lt;br/&gt; V sieti 3G môže preberanie chvíľu trvať. Ak nemáte &lt;b&gt;neobmedzený dátový program&lt;/b&gt;, môžu sa účtovať poplatky.&lt;br/&gt; Ak s určitosťou neviete aký dátový program používate, vyhľadajte pripojenie k sieti Wi-Fi a preberanie sa spustí automaticky.&lt;br/&gt; &lt;br/&gt; Tip: Slovníky môžete v mobilnom zariadení preberať a odstraňovať v časti &lt;b&gt;Jazyk a vstup&lt;/b&gt; ponuky &lt;b&gt;Nastavenia&lt;/b&gt;."</string>
-    <string name="download_over_metered" msgid="1643065851159409546">"Prevziať (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
-    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Prevziať cez sieť Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"K dispozícii je slovník pre jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Pre vybratý jazyk mobilného zariadenia je k dispozícii slovník.&lt;br/&gt; Slovník jazyka <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> vám odporúčame &lt;b&gt;stiahnuť&lt;/b&gt;. Pomôže vám pri zadávaní textu.&lt;br/&gt; &lt;br/&gt; V sieti 3G môže sťahovanie trvať jednu až dve minúty. Ak nemáte &lt;b&gt;neobmedzený dátový program&lt;/b&gt;, môžu sa účtovať poplatky.&lt;br/&gt; Ak s určitosťou neviete aký dátový program používate, vyhľadajte pripojenie k sieti Wi-Fi a sťahovanie sa spustí automaticky.&lt;br/&gt; &lt;br/&gt; Tip: Slovníky môžete v mobilnom zariadení sťahovať a odstraňovať v časti &lt;b&gt;Jazyk a vstup&lt;/b&gt; ponuky &lt;b&gt;Nastavenia&lt;/b&gt;."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"Stiahnuť (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Stiahnuť cez sieť Wi-Fi"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"K dispozícii je slovník pre jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Stlačením skontrolujete a prevezmete"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Preberanie: návrhy pre jazyk <xliff:g id="LANGUAGE">%1$s</xliff:g> budú čoskoro k dispozícii."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Sťahovanie: návrhy pre jazyk <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> budú čoskoro k dispozícii."</string>
     <string name="version_text" msgid="2715354215568469385">"Verzia <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Pridať"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Pridať do slovníka"</string>
diff --git a/java/res/values-sl/strings-action-keys.xml b/java/res/values-sl/strings-action-keys.xml
index 0235887..dc0c44f 100644
--- a/java/res/values-sl/strings-action-keys.xml
+++ b/java/res/values-sl/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Prej."</string>
     <string name="label_done_key" msgid="7564866296502630852">"Konec"</string>
     <string name="label_send_key" msgid="482252074224462163">"Pošl."</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Iskanje"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Zaus."</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Čakaj"</string>
 </resources>
diff --git a/java/res/values-sl/strings-config-important-notice.xml b/java/res/values-sl/strings-config-important-notice.xml
new file mode 100644
index 0000000..d5bed6f
--- /dev/null
+++ b/java/res/values-sl/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Vaša sporočila in vnesene podatke uporabi za boljše predloge"</string>
+</resources>
diff --git a/java/res/values-sl/strings-letter-descriptions.xml b/java/res/values-sl/strings-letter-descriptions.xml
new file mode 100644
index 0000000..6415c99
--- /dev/null
+++ b/java/res/values-sl/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Kazalec ženskega vrstilnika"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Znak »mikro«"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Kazalec moškega vrstilnika"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Ostri S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A s krativcem"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A z ostrivcem"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A s tildo"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A z dierezo"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A s krogcem"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Ligatura AE"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C s sedijem"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E s krativcem"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E z ostrivcem"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E z dierezo"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I s krativcem"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I z ostrivcem"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I z dierezo"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Latinska črka Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N s tildo"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O s krativcem"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O z ostrivcem"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O s tildo"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O z dierezo"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O s črtico"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U s krativcem"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U z ostrivcem"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U z dierezo"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y z ostrivcem"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Latinska črka Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y z dierezo"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A z dolžino"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A s polkrogcem"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A z repkom spodaj"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C z ostrivcem"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C s piko zgoraj"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C s strešico"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D s strešico"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D s črtico"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E z dolžino"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E s polkrogcem"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E s piko zgoraj"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E z repkom spodaj"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E s strešico"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G s polkrogcem"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G s piko zgoraj"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G s sedijem"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H s črtico"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I s tildo"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I z dolžino"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I s polkrogcem"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I z repkom spodaj"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I brez pike"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Ligatura IJ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K s sedijem"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Latinska črka Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L z ostrivcem"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L s sedijem"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L s strešico"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L s srednjo piko"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L s črtico"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N z ostrivcem"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N s sedijem"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N s strešico"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N z opuščajem spredaj"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Latinska črka Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O z dolžino"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O s polkrogcem"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O z dvojnim ostrivcem"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Ligatura OE"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R z ostrivcem"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R s sedijem"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R s strešico"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S z ostrivcem"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S s sedijem"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S s strešico"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T s sedijem"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T s strešico"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T s črtico"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U s tildo"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U z dolžino"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U s polkrogcem"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U s krogcem zgoraj"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U z dvojnim ostrivcem"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U z repkom spodaj"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y s cirkumfleksom"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z z ostrivcem"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z s piko zgoraj"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z s strešico"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Dolgi S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O z buckastim ostrivcem"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U z buckastim ostrivcem"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S z vejico spodaj"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T z vejico spodaj"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Latinska črka Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A s piko spodaj"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A z zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A s cirkumfleksom in ostrivcem"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A s cirkumfleksom in krativcem"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A s cirkumfleksom in zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A s cirkumfleksom in tildo"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A s cirkumfleksom in piko spodaj"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A s polkrogcem in ostrivcem"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A s polkrogcem in krativcem"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A s polkrogcem in zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A s polkrogcem in tildo"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A s polkrogcem in piko spodaj"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E s piko spodaj"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E z zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E s tildo"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E s cirkumfleksom in ostrivcem"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E s cirkumfleksom in krativcem"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E s cirkumfleksom in zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E s cirkumfleksom in tildo"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E s cirkumfleksom in piko spodaj"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I z zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I s piko spodaj"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O s piko spodaj"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O z zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O s cirkumfleksom in ostrivcem"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O s cirkumfleksom in krativcem"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O s cirkumfleksom in zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O s cirkumfleksom in tildo"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O s cirkumfleksom in piko spodaj"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O z buckastim ostrivcem in ostrivcem"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O z buckastim ostrivcem in krativcem"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O z buckastim ostrivcem in zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O z buckastim ostrivcem in tildo"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O z buckastim ostrivcem in piko spodaj"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U s piko spodaj"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U z zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U z buckastim ostrivcem in ostrivcem"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U z buckastim ostrivcem in krativcem"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U z buckastim ostrivcem in zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U z buckastim ostrivcem in tildo"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U z buckastim ostrivcem in piko spodaj"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y s krativcem"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y s piko spodaj"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y z zanko zgoraj"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y s tildo"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Obrnjeni klicaj"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Desni sredinski narekovaj"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Srednja pika"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Nadpisana enka"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Levi sredinski narekovaj"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Obrnjeni vprašaj"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Levi enojni zgornji narekovaj"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Desni enojni zgornji narekovaj"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Enojni spodnji narekovaj"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Levi dvojni zgornji narekovaj"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Desni dvojni zgornji narekovaj"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Križec"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dvojni križec"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Znak za promile"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Simbol za označevanje minut ali čevljev"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dvojni simbol za označevanje minut ali čevljev"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Enojni desni sredinski narekovaj"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Enojni levi sredinski narekovaj"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Nadpisana štirica"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Nadpisana latinska majhna črka n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Znak za pesos"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Znak za »Care of«"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Puščica desno"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Puščica navzdol"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Prazna množica"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Prirastek"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Manj od ali enako"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Več od ali enako"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Črna zvezda"</string>
+</resources>
diff --git a/java/res/values-sl/strings-talkback-descriptions.xml b/java/res/values-sl/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..baef01f
--- /dev/null
+++ b/java/res/values-sl/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Priključite slušalke, če želite slišati izgovorjene tipke gesla."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Trenutno besedilo je %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Ni vnesenega besedila"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Tipka <xliff:g id="KEY_NAME">%1$s</xliff:g> popravi <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> v <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Tipka <xliff:g id="KEY_NAME">%1$s</xliff:g> izvede samopopravek"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Neznan znak"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Več simbolov"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simboli"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Izbriši"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simboli"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Črke"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Števila"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Nastavitve"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Preslednica"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Glasovni vnos"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Znaki »emoji«"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Iskanje"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Pika"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Preklop jezika"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Naprej"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Nazaj"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Način »Shift« je omogočen"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Funkcija »Caps Lock« je omogočena"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Način simbolov"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Način za več simbolov"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Način črk"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Način telefona"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Način simbolov telefona"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tipkovnica je skrita"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Prikaz tipkovnice <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum in ura"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-pošta"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"sporočila"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"števila"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"besedilo"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"ura"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Nedavni"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Osebe"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Predmeti"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Narava"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mesta"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simboli"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Čustveni simboli"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Velika črka <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Velika črka I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Velika črka I s piko zgoraj"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Neznan simbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Neznan znak »emoji«"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Nadomestni znaki so na voljo"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Nadomestni znaki se ne upoštevajo"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Nadomestni predlogi so na voljo"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Nadomestni predlogi se ne upoštevajo"</string>
+</resources>
diff --git a/java/res/values-sl/strings.xml b/java/res/values-sl/strings.xml
index a0f83c1..09392e5 100644
--- a/java/res/values-sl/strings.xml
+++ b/java/res/values-sl/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Možnosti vnosa"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Ukazi za dnevnik raziskav"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Iskanje imen stikov"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Črkovalnik uporablja vnose s seznama stikov"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibriranje ob pritisku tipke"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Zvok ob pritisku tipke"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Povečaj črko ob pritisku"</string>
-    <string name="general_category" msgid="1859088467017573195">"Splošno"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Popravljanje besedila"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Vnos s potezami"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Druge možnosti"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Dodatne nastavitve"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Možnosti za strokovnjake"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Prekl. na drug nač. vnosa"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Tipka za preklop jezika, ki vključuje tudi druge načine vnosa"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Tipka za preklop med jeziki"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Privzeto v sistemu"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Predlagaj imena stikov"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Uporaba imen iz stikov za predloge in popravke"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Prilagojeni predlogi"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Izboljšava aplikacije <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dva presl. za vnos pike"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Z dvojnim dotikom preslednice vstavite piko in za njo presledek"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Samod. velike začetnice"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Prikaži pot poteze"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamični plavajoči predogled"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Prikaz predlagane besede med vnosom s prstom"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: shranjeno"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Priključite slušalke, če želite slišati izgovorjene tipke gesla."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Trenutno besedilo je %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Ni vnesenega besedila"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Tipka <xliff:g id="KEY">%1$s</xliff:g> popravi <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> v <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Tipka <xliff:g id="KEY">%1$s</xliff:g> izvede samodejno popravljanje"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Koda tipke %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift je vklopljen (dotaknite se, da onemogočite)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock je vklopljen (dotaknite se, da onemogočite)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simboli"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Pisma"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Številke"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Nastavitve"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabulator"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Presledek"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Glasovni vnos"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smeško"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Vračalka"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Iskanje"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Pika"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Preklop jezika"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Naprej"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Nazaj"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Način »Shift« je omogočen"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Način »Caps Lock« je omogočen"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Način »Shift« je onemogočen"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Način simbolov"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Način črk"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Način telefona"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Način simbolov telefona"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tipkovnica je skrita"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Prikaz tipkovnice: <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datum in ura"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-pošta"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"sporočila"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"števila"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"besedilo"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"ura"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Vnos besed s potezami"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Vnos presledkov pri vnašanju s potezami z drsenjem po preslednici"</string>
     <string name="voice_input" msgid="3583258583521397548">"Tipka za glasovni vnos"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Na glavni tipkovnici"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Na tipk. s simboli"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Izklopljeno"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mik. na glavni tipk."</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mik. na tipk. s sim."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Glas. vnos je onem."</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ni omogočenih glasovnih načinov vnosa. Preverite nastavitve v razdelku »Jezik in vnos«."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Nastavitev načinov vnosa"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Jeziki vnosa"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Pošljite povratne informacije"</string>
     <string name="select_language" msgid="3693815588777926848">"Jeziki vnosa"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Dotaknite se še enkrat, da shranite"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Slovar je na voljo"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Omogoči povratne informacije uporabnikov"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"S samodejnim pošiljanjem statističnih podatkov o uporabi in poročil o zrušitvah nam pomagate izboljšati urejevalnik načina vnosa."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema tipkovnice"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"angleščina (Združeno kraljestvo)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"angleščina (ZDA)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"španščina (ZDA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Angleška (Zdr. kralj.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Angleška (ZDA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"španščina (ZDA) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (tradicionalna)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"angleščina (VB) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"angleščina (ZDA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"španščina (ZDA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tradicionalna)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cirilica)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latinica)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Brez jezika (latinice)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Latinica (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Latinica (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Latinica (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Latinica (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Znaki »emoji«"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Barvna shema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Bela"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Modra"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Slogi vnosa po meri"</string>
     <string name="add_style" msgid="6163126614514489951">"Dodaj slog"</string>
     <string name="add" msgid="8299699805688017798">"Dodaj"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Omogoči"</string>
     <string name="not_now" msgid="6172462888202790482">"Ne zdaj"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Isti slog vnosa že obstaja: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Način za preučevanje uporabnosti"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Zakasn. za dolg pritisk tipke"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Trajanje vibr. ob prit. tipke"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Glasn. zvoka ob pritisku tipke"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Branje zunanje datoteke slovarja"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"V mapi »Prenosi« ni nobene datoteke slovarja"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Izberite datoteko slovarja, ki jo želite namestiti"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Zares želite namestiti to datoteko za jezik <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Zares želite namestiti to datoteko za ta jezik: <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Prišlo je do napake"</string>
     <string name="button_default" msgid="3988017840431881491">"Privzeto"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Pozdravljeni v aplikaciji <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Osveži"</string>
     <string name="last_update" msgid="730467549913588780">"Nazadnje posodobljeno"</string>
     <string name="message_updating" msgid="4457761393932375219">"Iskanje posodobitev"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Nalaganje ..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Nalaganje …"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Glavni slovar"</string>
     <string name="cancel" msgid="6830980399865683324">"Prekliči"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Nastavitve"</string>
     <string name="install_dict" msgid="180852772562189365">"Namesti"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Prekliči"</string>
     <string name="delete_dict" msgid="756853268088330054">"Izbriši"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Za izbrani jezik v mobilni napravi je na voljo slovar.&lt;br/&gt; Za izboljšano izkušnjo tipkanja priporočamo, da &lt;b&gt;prenesete&lt;/b&gt; slovar za ta jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>.&lt;br/&gt; &lt;br/&gt; Prenos prek povezave 3G lahko traja minuto ali dve. Če nimate &lt;b&gt;neomejenega podatkovnega paketa&lt;/b&gt;.&lt;br/&gt;, boste morda morali plačati prenos podatkov. Če ne veste, kateri podatkovni paket imate, priporočamo, da poiščete omrežje Wi-Fi in prenos začnete samodejno.&lt;br/&gt; &lt;br/&gt; Nasvet: Slovarje lahko prenesete in odstranite tako, da v meniju &lt;b&gt;Nastavitve&lt;/b&gt; v mobilni napravi odprete &lt;b&gt;Jezik in vnos&lt;/b&gt;."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Za izbrani jezik v mobilni napravi je na voljo slovar.&lt;br/&gt; Za izboljšano izkušnjo tipkanja priporočamo, da &lt;b&gt;prenesete&lt;/b&gt; slovar za ta jezik: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>.&lt;br/&gt; &lt;br/&gt; Prenos prek povezave 3G lahko traja minuto ali dve. Če nimate &lt;b&gt;neomejenega podatkovnega paketa&lt;/b&gt;.&lt;br/&gt;, boste morda morali plačati prenos podatkov. Če ne veste, kateri podatkovni paket imate, priporočamo, da poiščete omrežje Wi-Fi in prenos začnete samodejno.&lt;br/&gt; &lt;br/&gt; Nasvet: slovarje lahko prenesete in odstranite tako, da v meniju &lt;b&gt;Nastavitve&lt;/b&gt; v mobilni napravi odprete &lt;b&gt;Jezik in vnos&lt;/b&gt;."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Prenesi zdaj (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Prenos prek povezave Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Slovar je na voljo za jezik <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Na voljo je slovar za ta jezik: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Pritisnite za pregled in prenos"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Predlogi za prenos za jezik <xliff:g id="LANGUAGE">%1$s</xliff:g> bodo kmalu pripravljeni."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Prenos: predlogi za jezik <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> bodo kmalu na voljo."</string>
     <string name="version_text" msgid="2715354215568469385">"Različica <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Dodaj"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Dodaj v slovar"</string>
diff --git a/java/res/values-sr/strings-action-keys.xml b/java/res/values-sr/strings-action-keys.xml
index 1ce0ed7..c130bed 100644
--- a/java/res/values-sr/strings-action-keys.xml
+++ b/java/res/values-sr/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Претх"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Готов"</string>
     <string name="label_send_key" msgid="482252074224462163">"Шаљи"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Тражи"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Пауза"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Чекај"</string>
 </resources>
diff --git a/java/res/values-sr/strings-config-important-notice.xml b/java/res/values-sr/strings-config-important-notice.xml
new file mode 100644
index 0000000..943135c
--- /dev/null
+++ b/java/res/values-sr/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Користи комуникације и унете податке ради побољшања предлога"</string>
+</resources>
diff --git a/java/res/values-sr/strings-letter-descriptions.xml b/java/res/values-sr/strings-letter-descriptions.xml
new file mode 100644
index 0000000..51cabc3
--- /dev/null
+++ b/java/res/values-sr/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Знак за редни број у женском роду"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Знак микро"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Знак за редни број у мушком роду"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Оштро с"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Краткоузлазно а"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Дугоузлазно а"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"А са циркумфлексом"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"А са тилдом"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"А са умлаутом"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"А са кружићем изнад"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"Лигатура а и е"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Ц са седиљом"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Краткоузлазно е"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Дугоузлазно е"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Е са циркумфлексом"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Е са умлаутом"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Краткоузлазно и"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Дугоузлазно и"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"И са циркумфлексом"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"И са умлаутом"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Ет"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Н са тилдом"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Краткоузлазно о"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Дугоузлазно о"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"О са циркумфлексом"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"О са тилдом"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"О са умлаутом"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"Прецртано о"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Краткоузлазно у"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Дугоузлазно у"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"У са циркумфлексом"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"У са умлаутом"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Дугоузлазни ипсилон"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Торн"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Ипсилон са умлаутом"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"А са макроном"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"А са бревом"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"А са огонеком"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Дугоузлазно ц"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Ц са циркумфлексом"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Ц са тачком изнад"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Ч"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Д са квачицом"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"Ђ"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Е са макроном"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Е са бревом"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Е са тачком изнад"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Е са огонеком"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Е са квачицом"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Г са циркумфлексом"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Г са бревом"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Г са тачком изнад"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Г са седиљом"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Х са циркумфлексом"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"Прецртано х"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"И са тилдом"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"И са макроном"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"И са бревом"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"И са огонеком"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"И без тачке"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"Лигатура и и ј"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Ј са циркумфлексом"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"К са седиљом"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Дугоузлазно л"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"Л са седиљом"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Л са квачицом"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"Л са тачком на средини"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"Прецртано л"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Дугоузлазно н"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Н са седиљом"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Н са квачицом"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"Н коме претходи апостроф"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Ангма"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"О са макроном"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"О са бревом"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"О са двоструким акутним акцентом"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"Лигатура о и е"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Дугоузлазно р"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Р са седиљом"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Р са квачицом"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Дугоузлазно с"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"С са циркумфлексом"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"С са седиљом"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Ш"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Т са седиљом"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Т са квачицом"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"Прецртано т"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"У са тилдом"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"У са макроном"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"У са бревом"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"У са кружићем изнад"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"У са двоструким акутним акцентом"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"У са огонеком"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Дупло ве са циркумфлексом"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Ипсилон са циркумфлексом"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Дугоузлазно з"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"З са тачком изнад"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Ж"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Дуго с"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"О са рогом"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"У са рогом"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"С са зарезом испод"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Т са зарезом испод"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"А са тачком испод"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"А са куком изнад"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"А са циркумфлексом, дугоузлазно"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"А са циркумфлексом, краткоузлазно"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"А са циркумфлексом и куком изнад"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"А са циркумфлексом и тилдом"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"А са циркумфлексом и тачком испод"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"А са бревом, дугоузлазно"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"А са бревом, краткоузлазно"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"А са бревом и куком изнад"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"А са бревом и тилдом"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"А са бревом и тачком испод"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Е са тачком испод"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Е са куком изнад"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"Е са тилдом"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"Е са циркумфлексом, дугоузлазно"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"Е са циркумфлексом, краткоузлазно"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Е са циркумфлексом и куком изнад"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Е са циркумфлексом и тилдом"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"Е са циркумфлексом и тачком испод"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"И са куком изнад"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"И са тачком испод"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"О са тачком испод"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"О са куком изнад"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"О са циркумфлексом, дугоузлазно"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"О са циркумфлексом, краткоузлазно"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"О са циркумфлексом и куком изнад"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"О са циркумфлексом и тилдом"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"О са циркумфлексом и тачком испод"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"О са рогом, дугоузлазно"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"О са рогом, краткоузлазно"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"О са рогом и куком изнад"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"О са рогом и тилдом"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"О са рогом и тачком испод"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"У са тачком испод"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"У са куком изнад"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"У са рогом, дугоузлазно"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"У са рогом, краткоузлазно"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"У са рогом и куком изнад"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"У са рогом и тилдом"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"У са рогом и тачком испод"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Краткоузлазни ипсилон"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Ипсилон са тачком испод"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Ипсилон са куком изнад"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Ипсилон са тилдом"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Обрнути знак узвика"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Леви двоструки угласти наводници"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Тачка на средини"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Један у експонентном тексту"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Десни двоструки угласти наводници"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Обрнути знак питања"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Леви једноструки наводник"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Десни једноструки наводник"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Једноструки доњи отворени наводник"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Леви двоструки наводник"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Десни двоструки наводник"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Обелиск"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Двоструки обелиск"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Знак за промил"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Прим"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Дупли прим"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Леви једноструки угласти наводник"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Десни једноструки угласти наводник"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Четири у експонентном тексту"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Мало латинично н у експонентном тексту"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Знак за пезо"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"За"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Стрелица надесно"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Стрелица надоле"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Празан скуп"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Повећање"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Мање или једнако"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Веће или једнако"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Црна звездица"</string>
+</resources>
diff --git a/java/res/values-sr/strings-talkback-descriptions.xml b/java/res/values-sr/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..974ad3a
--- /dev/null
+++ b/java/res/values-sr/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Укључите слушалице да бисте чули наглас изговорене тастере за лозинку."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Тренутни текст је %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Текст није унет"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> исправља <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> у <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> обавља аутоматско исправљање"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Непознати знак"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Још симбола"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Симболи"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Избриши"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Симболи"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Слова"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Бројеви"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Подешавања"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Картица"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Размак"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Гласовни унос"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Емоџи"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Претражи"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Тачка"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Пребаци језик"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Претходно"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Следеће"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift је омогућен"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock је омогућен"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим симбола"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Режим Још симбола"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим слова"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим телефона"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим симбола телефона"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Тастатура је сакривена"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Приказујемо тастатуру у режиму <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"датум"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"датум и време"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"имејл"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"размена порука"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"број"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"телефон"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"текст"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"време"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Недавни контакти"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Људи"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Предмети"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Природа"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Места"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Симболи"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Емотикони"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Велико <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Велико И"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Велико И са тачком изнад"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Непознат симбол"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Непознати емоџи"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Доступни су алтернативни знаци"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Алтернативни знаци су одбачени"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Доступни су алтернативни предлози"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Алтернативни предлози су одбачени"</string>
+</resources>
diff --git a/java/res/values-sr/strings.xml b/java/res/values-sr/strings.xml
index ce4978f..4f1e426 100644
--- a/java/res/values-sr/strings.xml
+++ b/java/res/values-sr/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Опције уноса"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Команде евиденције истраживања"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Потражи имена контаката"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Контролор правописа користи уносе са листе контаката"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вибрирај на притисак тастера"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук на притисак тастера"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Искачући прозор приликом притиска тастера"</string>
-    <string name="general_category" msgid="1859088467017573195">"Опште"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Исправљање текста"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Унос покретом"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Друге опције"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Напредна подешавања"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Опције за стручњаке"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Пребаци на друге методе уноса"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Тастер за пребацивање језика обухвата и друге методе уноса"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Тастер за пребацивање језика"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Подразумевано"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Предложи имена контаката"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Користи имена из Контаката за предлоге и исправке"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Персонализовани предлози"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Побољшајте апликацију <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Тачка и размак"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Двоструким додиром размака умеће се тачка праћена размаком"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Аутоматски унос великих слова"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Прикажи траг покрета"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамички плутајући преглед"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Приказује предложену реч при уносу покретом"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Сачувано"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Укључите слушалице да бисте чули наглас изговорене тастере за лозинку."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Тренутни текст је %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Текст није унет"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> исправља <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> у <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> обавља функцију аутоматског исправљања"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Кôд тастера %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift је укључен (додирните да бисте га онемогућили)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock је укључен (додирните да бисте га онемогућили)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Симболи"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Слова"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Бројеви"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Подешавања"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Размак"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Гласовни унос"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Смајли"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Претражи"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Тачка"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Пребаци језик"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Следеће"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Претходно"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift је омогућен"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock је омогућен"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift је онемогућен"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Режим симбола"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим слова"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим телефона"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим симбола телефона"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Тастатура је сакривена"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Приказује се тастатура у режиму <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"датум"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"датум и време"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"адреса е-поште"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"размена порука"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"број"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"телефон"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"текст"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"време"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Покрет за фразе"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Уносите размаке током покрета преласком до тастера за размак"</string>
     <string name="voice_input" msgid="3583258583521397548">"Тастер за гласовни унос"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На главној тастатури"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"На тастатури са симболима"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Искључи"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Микрофон на главној тастатури"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Микрофон на тастатури са симболима"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Гласовни унос је онемогућен"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ниједан метод гласовног уноса није омогућен. Проверите Подешавања језика и уноса."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Конфигурисање метода уноса"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Језици за унос"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Пошаљи повратне информације"</string>
     <string name="select_language" msgid="3693815588777926848">"Језици уноса"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Поново додирните да бисте сачували"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Речник је доступан"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Омогући повратну информацију корисника"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Помозите нам да побољшамо овај уређивач метода уноса тако што ћете аутоматски слати статистику коришћења и извештаје о отказивању"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Тема тастатуре"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"енглески (УК)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"енглески (САД)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"шпански (САД)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"енглески (УК) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"енглески (САД) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"шпански (САД) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (традиционални)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"енглески (УК) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"енглески (САД) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"шпански (САД) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (традиционални)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ћирилица)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (латиница)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Нема језика (абецеда)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Абецеда (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Абецеда (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Абецеда (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Абецеда (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Емотикони"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Шема боја"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Бела"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Плава"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Прилаг. стилови уноса"</string>
     <string name="add_style" msgid="6163126614514489951">"Додав. стила"</string>
     <string name="add" msgid="8299699805688017798">"Додај"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Омогући"</string>
     <string name="not_now" msgid="6172462888202790482">"Не сада"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Исти стил уноса већ постоји: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим за студију могућности коришћења"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Одлагање при дугом притиску"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Трајање вибрације при притиску"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Јачина звука при притиску"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Читање датотеке спољног речника"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"У директоријуму Преузимања нема датотека речника"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Избор датотеке речника за инсталирање"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Желите ли стварно да инсталирате ову датотеку за <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Желите ли стварно да инсталирате ову датотеку за <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Дошло је до грешке"</string>
     <string name="button_default" msgid="3988017840431881491">"Подразумевано"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Добро дошли у <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Освежи"</string>
     <string name="last_update" msgid="730467549913588780">"Последње ажурирање"</string>
     <string name="message_updating" msgid="4457761393932375219">"Тражење ажурирања"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Учитавање..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Учитавање…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Главни речник"</string>
     <string name="cancel" msgid="6830980399865683324">"Откажи"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Подешавања"</string>
     <string name="install_dict" msgid="180852772562189365">"Инсталирај"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Откажи"</string>
     <string name="delete_dict" msgid="756853268088330054">"Избриши"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Доступан је речник за изабрани језик на мобилном уређају.&lt;br/&gt; Препоручујемо да &lt;b&gt;преузмете &lt;/b&gt; речник за <xliff:g id="LANGUAGE">%1$s</xliff:g> да бисте побољшали доживљај куцања.&lt;br/&gt; &lt;br/&gt; Преузимање може да траје минут или два преко 3G мреже. Трошкови ће можда бити наплаћени ако немате &lt;b&gt;претплатнички пакет без ограничења&lt;/b&gt;.&lt;br/&gt; Ако нисте сигурни који претплатнички пакет имате, препоручујемо да пронађете Wi-Fi везу да бисте аутоматски започели преузимање.&lt;br/&gt; &lt;br/&gt; Савет: Речнике можете да преузимате и уклањате тако што ћете посетити &lt;b&gt;Језик и унос&lt;/b&gt; у менију &lt;b&gt;Подешавања&lt;/b&gt; мобилног уређаја."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Доступан је речник за изабрани језик на мобилном уређају.&lt;br/&gt; Препоручујемо вам да &lt;b&gt;преузмете&lt;/b&gt; речник за <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> да бисте побољшали доживљај куцања.&lt;br/&gt; &lt;br/&gt; Преузимање може да траје минут или два преко 3G мреже. Трошкови ће можда бити наплаћени ако немате &lt;b&gt;претплатнички пакет без ограничења&lt;/b&gt;.&lt;br/&gt; Ако нисте сигурни који претплатнички пакет имате, препоручујемо вам да пронађете Wi-Fi везу да бисте аутоматски започели преузимање.&lt;br/&gt; &lt;br/&gt; Савет: Речнике можете да преузимате и уклањате ако одете на &lt;b&gt;Језик и унос&lt;/b&gt; у менију &lt;b&gt;Подешавања&lt;/b&gt; на мобилном уређају."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Преузми одмах (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Преузми преко Wi-Fi-ја"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Речник је доступан за <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Доступан је речник за <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Притисните за преглед и преузимање"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Преузимање: Предлози за <xliff:g id="LANGUAGE">%1$s</xliff:g> ће ускоро бити спремни."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Преузимање: Предлози за <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ће ускоро бити спремни."</string>
     <string name="version_text" msgid="2715354215568469385">"Верзија <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Додај"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Додавање у речник"</string>
diff --git a/java/res/values-sv/strings-action-keys.xml b/java/res/values-sv/strings-action-keys.xml
index e138608..87926fb 100644
--- a/java/res/values-sv/strings-action-keys.xml
+++ b/java/res/values-sv/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Föreg"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Klart"</string>
     <string name="label_send_key" msgid="482252074224462163">"Sänd"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Sökning"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pausa"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Vänta"</string>
 </resources>
diff --git a/java/res/values-sv/strings-config-important-notice.xml b/java/res/values-sv/strings-config-important-notice.xml
new file mode 100644
index 0000000..9b9b92e
--- /dev/null
+++ b/java/res/values-sv/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Få bättre förslag genom att använda tidigare angiven data och annan kommunikation"</string>
+</resources>
diff --git a/java/res/values-sv/strings-letter-descriptions.xml b/java/res/values-sv/strings-letter-descriptions.xml
new file mode 100644
index 0000000..a0a594f
--- /dev/null
+++ b/java/res/values-sv/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminin ordningsindikator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikrotecken"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Maskulin ordningsindikator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Dubbel-s"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grav accent"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, akut accent"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, cirkumflex accent"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, trema"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring ovanför"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligatur"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilj"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grav accent"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, akut accent"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, cirkumflex accent"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, trema"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grav accent"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, akut accent"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, cirkumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, trema"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grav accent"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, akut accent"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, cirkumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, trema"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, snedstreck"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grav accent"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, akut accent"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, cirkumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, trema"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, akut accent"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, trema"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, streck ovanför"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, brevis"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, svans"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, akut accent"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, cirkumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, punkt ovanför"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, hake"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, hake"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, snedstreck"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, streck ovanför"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, brevis"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, punkt ovanför"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, svans"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, hake"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, cirkumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, brevis"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, punkt ovanför"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilj"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, cirkumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, snedstreck"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, streck ovanför"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, brevis"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, svans"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I utan punkt"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligatur"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, cirkumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilj"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, akut accent"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilj"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, hake"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, halvhög punkt"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, snedstreck"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, akut accent"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilj"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, hake"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, med apostrof före"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, diakritiskt tecken"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, brevis"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, dubbel akut accent"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligatur"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, akut accent"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilj"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, hake"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, akut accent"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, cirkumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilj"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, hake"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilj"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, hake"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, snedstreck"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, streck ovanför"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, brevis"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring ovanför"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, dubbel akut accent"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, svans"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, cirkumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, cirkumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, akut accent"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, punkt ovanför"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, hake"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Långt s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, komma nedanför"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, komma nedanför"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hake ovanför"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, cirkumflex och akut accent"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, cirkumflex och grav accent"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, cirkumflex och hake ovanför"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, cirkumflex och tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, cirkumflex och punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, brevis och akut accent"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, brevis och grav accent"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, brevis och hake ovanför"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, brevis och tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, brevis och punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hake ovanför"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, cirkumflex och akut accent"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, cirkumflex och grav accent"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, cirkumflex och hake ovanför"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, cirkumflex och tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, cirkumflex och punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hake ovanför"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, punkt nedanför"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, punkt nedanför"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hake ovanför"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, cirkumflex och akut accent"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, cirkumflex och grav accent"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, cirkumflex och hake ovanför"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, cirkumflex och tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, cirkumflex och punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn och akut accent"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn och grav accent"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn och hake ovanför"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn och tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn och punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hake ovanför"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn och akut accent"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn och grav accent"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn och hake ovanför"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn och tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn och punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grav accent"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, punkt nedanför"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hake ovanför"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Upp och nedvänt utropstecken"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Gåsögon som pekar åt vänster"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Halvhög punkt"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Upphöjt läge (ett)"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Gåsögon som pekar åt höger"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Upp och nedvänt frågetecken"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Vänsterställt enkelt citattecken"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Högerställt enkelt citattecken"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Enkelt lågt 9-citattecken"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Vänsterställt dubbelt citattecken"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Högerställt dubbelt citattecken"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kors"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dubbelkors"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promilletecken"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Primtecken"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Dubbelprimtecken"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Vänsterställt enkelt vinkelcitationstecken"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Högerställt enkelt vinkelcitationstecken"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Upphöjt läge (fyra)"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Upphöjt läge, litet latinskt n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Pesotecken"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"c/o"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Högerpil"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Nedåtpil"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tomma mängden"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Öka"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Mindre än eller lika med"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Större än eller lika med"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Svart stjärna"</string>
+</resources>
diff --git a/java/res/values-sv/strings-talkback-descriptions.xml b/java/res/values-sv/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..e3f7ca1
--- /dev/null
+++ b/java/res/values-sv/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Anslut hörlurar om du vill att lösenordet ska läsas upp."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Nuvarande text är %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Ingen text har angetts"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Om du trycker på <xliff:g id="KEY_NAME">%1$s</xliff:g> rättas <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> till <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Om du trycker på <xliff:g id="KEY_NAME">%1$s</xliff:g> utförs autokorrigering"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Okänt tecken"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Skift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Fler symboler"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Skift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Symboler"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Skift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Ta bort"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Symboler"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Bokstäver"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Siffror"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Inställningar"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tabb"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Blanksteg"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Röstindata"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Retur"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Sökning"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Punkt"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Byt språk"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Nästa"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Föregående"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Skift aktiverat"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock är aktiverat"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbolläge"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Läge med fler symboler"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Bokstavsläge"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefonläge"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefonsymbolläge"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Tangentbordet är dolt"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Tangentbord för <xliff:g id="KEYBOARD_MODE">%s</xliff:g> visas"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"datum"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"datum och tid"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-post"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"sms/mms"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"siffror"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefonnummer"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"text"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"klockslag"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"webbadresser"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Senaste"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Personer"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Föremål"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Natur"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Platser"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Symboler"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Uttryckssymboler"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Versalt <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Versalt I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Versalt I, punkt ovanför"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Okänd symbol"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Okänd emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternativa tecken är tillgängliga"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternativa tecken avvisas"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternativa förslag är tillgängliga"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternativa förslag avvisas"</string>
+</resources>
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index afe349a..798b26e 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Inmatningsalternativ"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Loggkommandon"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Sök namn på kontakter"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"I stavningskontrollen används poster från kontaktlistan"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Vibrera vid tangenttryck"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Knappljud"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Popup vid knapptryck"</string>
-    <string name="general_category" msgid="1859088467017573195">"Allmänt"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Textkorrigering"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Svepskrivning"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Andra alternativ"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Avancerade inställningar"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Alternativ för experter"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Byt till annan inmatning"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Språkbytesknappen omfattar även andra inmatningsmetoder"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Knapp för att byta språk"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Standardinställning"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Föreslå kontaktnamn"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Använd namn från Kontakter för förslag och korrigeringar"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Anpassade förslag"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Förbättra <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dubbelt blanksteg = punkt"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Dubbelt blanksteg ger en punkt följt av mellanslag"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Automatiska versaler"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Visa spår efter rörelse"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Visa ordförslag vid svepskrivning"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Ordförslaget visas i rörelsen medan du skriver"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>: sparat"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Anslut hörlurar om du vill att lösenordet ska läsas upp."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Nuvarande text är %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Ingen text har angetts"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Om du trycker på <xliff:g id="KEY">%1$s</xliff:g> rättas <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> till <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Om du trycker på <xliff:g id="KEY">%1$s</xliff:g> utförs autokorrigering"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Nyckelkod %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Skift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Skift på (knacka lätt för att inaktivera)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock på (knacka lätt för att inaktivera)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Symboler"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Bokstäver"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Siffror"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Inställningar"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tabb"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Blanksteg"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Röstinmatning"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Uttryckssymbol"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Retur"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Sök"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Punkt"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Byt språk"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Nästa"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Föregående"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Skift är aktiverat"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock är aktiverat"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Skift är inaktiverat"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Symbolläge"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Bokstavsläge"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefonläge"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefonsymbolläge"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Tangentbordet är dolt"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Tangentbord för <xliff:g id="MODE">%s</xliff:g> visas"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"datum"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"datum och tid"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-post"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"sms"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"siffror"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefonnummer"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"text"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"klockslag"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"webbadresser"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Frasrörelse"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Infoga blanksteg genom att dra fingret över blankstegstangenten"</string>
     <string name="voice_input" msgid="3583258583521397548">"Röstinmatningsknapp"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"På huvudtangentbord"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"På symboltangentbord"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Av"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mick huvudtangentbord"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mick bland symboler"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Röstinmatning inaktiv"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Ingen röstinmatningsmetod har aktiverats. Kontrollera språk- och inmatningsinställningarna."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Konfigurera inmatningsmetoder"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Inmatningsspråk"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Skicka feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Inmatningsspråk"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Spara genom att trycka igen"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"En ordlista är tillgänglig"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Aktivera synpunkter från användare"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Du kan hjälpa till att förbättra inmatningsmetoden genom att automatiskt skicka användningsstatistik och felrapporter"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tangentbordstema"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Engelskt (brittiskt)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Engelskt (amerikanskt)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"spanska (USA)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Engelskt (brittiskt) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Engelskt (amerikanskt) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"spanska (USA (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (traditionell)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Engelska (Storbritannien) <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Engelska (USA) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spanska (USA (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (traditionell)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (kyrillisk)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (latinsk)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Inget språk (alfabet)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabet (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabet (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabet (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabet (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Humörsymbol"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Färgschema"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Vit"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Blå"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Anpassade indatastilar"</string>
     <string name="add_style" msgid="6163126614514489951">"Ny stil"</string>
     <string name="add" msgid="8299699805688017798">"Lägg till"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Aktivera"</string>
     <string name="not_now" msgid="6172462888202790482">"Inte nu"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Samma indatastil finns redan: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Läge för studie av användbarhet"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Fördröjning vid långt tryck"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Vibrationslängd för tangenter"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Ljudvolym för tangenter"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Läs extern ordboksfil"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Inga ordboksfiler i mappen Hämtningar"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Välj en ordboksfil att installera"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Vill du verkligen installera filen för <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Vill du verkligen installera filen för <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Ett fel uppstod"</string>
     <string name="button_default" msgid="3988017840431881491">"Standard"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Välkommen till <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Uppdatera"</string>
     <string name="last_update" msgid="730467549913588780">"Informationen uppdaterades senast"</string>
     <string name="message_updating" msgid="4457761393932375219">"Söker efter uppdateringar"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Läser in ..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Läser in …"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Huvudordlista"</string>
     <string name="cancel" msgid="6830980399865683324">"Avbryt"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Inställningar"</string>
     <string name="install_dict" msgid="180852772562189365">"Installera"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Avbryt"</string>
     <string name="delete_dict" msgid="756853268088330054">"Ta bort"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Det finns en ordlista för språket du har valt i din mobila enhet.&lt;br/&gt; Vi rekommenderar att du &lt;b&gt;hämtar&lt;/b&gt; ordlistan för <xliff:g id="LANGUAGE">%1$s</xliff:g> så att det blir enklare att skriva.&lt;br/&gt; &lt;br/&gt; Det kan ta någon minut att hämta den via 3G. Avgifter kan tillkomma om du inte har ett abonnemang med &lt;b&gt;obegränsad datatrafik&lt;/b&gt;.&lt;br/&gt; Om du är osäker på vilket abonnemang du har rekommenderar vi att du ansluter till ett Wi-Fi-nätverk och hämtar ordlistan automatiskt.&lt;br/&gt; &lt;br/&gt; Tips! Du kan hämta och ta bort ordlistor under &lt;b&gt;Språk och inmatning&lt;/b&gt; i menyn &lt;b&gt;Inställningar&lt;/b&gt; på den mobila enheten."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Det finns en ordbok för språket du har valt på din mobila enhet.&lt;br/&gt; Vi rekommenderar att du &lt;b&gt;hämtar&lt;/b&gt; ordboken på <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>. Då blir det enklare och smidigare att skriva.&lt;br/&gt; &lt;br/&gt; Hämtningen tar en minut eller två om du använder 3G. Avgifter kan tillkomma om du inte har ett &lt;b&gt;abonnemang med obegränsad data&lt;/b&gt;.&lt;br/&gt; Om du inte är säker på vad som ingår i ditt abonnemang rekommenderar vi att du hittar en Wi-Fi-anslutning och påbörjar hämtningen automatiskt.&lt;br/&gt; &lt;br/&gt; Tips: Du kan hämta och ta bort ordböcker via &lt;b&gt;Språk och inmatning&lt;/b&gt; i menyn &lt;b&gt;Inställningar&lt;/b&gt; på din mobila enhet."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Hämta nu (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Hämta via Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"En ordlista är tillgänglig för <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"En ordlista för <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> är tillgänglig"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Tryck om du vill granska och hämta"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Hämtar: förslag för <xliff:g id="LANGUAGE">%1$s</xliff:g> är snart klara."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Hämtar: förslag för <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> är snart klara."</string>
     <string name="version_text" msgid="2715354215568469385">"Version <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Lägg till"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Lägg till i ordlista"</string>
diff --git a/java/res/values-sw/strings-action-keys.xml b/java/res/values-sw/strings-action-keys.xml
index 7d8822e..21ed881 100644
--- a/java/res/values-sw/strings-action-keys.xml
+++ b/java/res/values-sw/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Nyuma"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Imekamilika"</string>
     <string name="label_send_key" msgid="482252074224462163">"Tuma"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Tafuta"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Sitisha"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Subiri"</string>
 </resources>
diff --git a/java/res/values-sw/strings-config-important-notice.xml b/java/res/values-sw/strings-config-important-notice.xml
new file mode 100644
index 0000000..7b10085
--- /dev/null
+++ b/java/res/values-sw/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Jifunze kutoka kwenye mawasiliano yako na data iliyocharazwa ili kuboresha mapendekezo"</string>
+</resources>
diff --git a/java/res/values-sw/strings-letter-descriptions.xml b/java/res/values-sw/strings-letter-descriptions.xml
new file mode 100644
index 0000000..2265817
--- /dev/null
+++ b/java/res/values-sw/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Alama ya herufi \"a\" inayowekwa sehemu ya juu ya nambari kama ishara ya nambari zinazowakilisha nafasi au mtiririko"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Ishara ndogo"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Alama ya herufi \"o\" inayowekwa sehemu ya juu ya nambari kama ishara ya nambari zinazowakilisha nafasi au mtiririko"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S inayotamkwa kwa sauti ya shada, yaani SS"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, ya kutamkwa kwa sauti ya mwendelezo wenye kiwimbi"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, inayotamkwa kwa kuumba mdomo kama o"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, zinazotamkwa kama neno moja"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, sedila"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e."</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Alama ya Kilatini inayofanana na p yenye kistari kilichopitiliza kwenda upande wa juu"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, yenye nukta mbili juu ikiwa ni msisitizo wa kuitamka kama ilivyo bila kuiunganisha kama silabi"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, alama ya koma iliyogeuzwa inayowekwa sehemu ya chini ya irabu"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C,inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e."</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, alama ya koma iliyogeuzwa inayowekwa sehemu ya chini ya irabu"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, yenye kijistari kilichojikunja kuelekea juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida ya kukatiza"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, alama ya koma iliyogeuzwa inayowekwa sehemu ya chini ya irabu"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I isiyokuwa na kitone sehemu ya juu"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, zinazotamkwa kama neno moja"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Alama inayofanana herufi \"k\" lakini inayotamkwa kama herufi \"g\" katika alfabeti ya Grinlandi"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, yenye alama ya kitone sehemu ya kati kati"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e."</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, inayotanguliwa na alama ya koma katika kona ya juu kushoto"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Alama ya herufi \"n\" ndogo katika alfabeti ya Kilatini"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, inayotamkwa kwa sauti ya shada inayopazwa"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, zinazotamkwa kama neno moja"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, inayotamkwa kwa sauti nyororo"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, iliyokatwa kwa kijistari kilicholala kuelekea upande wa kulia inayotamkwa kwa kuumba mdomo kama o na kumalizia kama e"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, alama ya kijistari juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kuvuta"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, yenye kijistari kilichojikunja kuelekea juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida ya kukatiza"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, inayotamkwa kwa kuumba mdomo kama o"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, inayotamkwa kwa sauti ya shada inayopazwa"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, inayowekewa kijimkia kwa upande wa kulia chini ikisisitiza irabu kutamkwa kwa sauti ya kubanwa puani"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Herufi ya \"Z\" yenye alama ya \"v\" upande wa juu wa herufi inayotamkwa kwa sauti yenye mwelekeo wa kuanzia juu kisha kushuka na kupanda tena"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, alama  ya koma inayowekwa kwenye sehemu ya chini ya baadhi ya herufi katika alfabeti ya Kilatini"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, alama  ya koma inayowekwa kwenye sehemu ya chini ya baadhi ya herufi katika alfabeti ya Kilatini"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Alama ya herufi \"e\" iliyogeuzwa inayotumiwa katika baadhi ya irabu"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda pamoja na inayotamkwa kwa sauti ya juu inayopazwa"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, inayotamkwa kwa sauti yenye mwelekeo wa kujipinda pamoja na inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, alama ya kijistari cha kujikunja juu ya irabu kuifanya itamkwe kwa sauti ya kawaida lakini ya kukatana kwa sauti iliyopazwa"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, alama ya kijistari cha kujikunja juu ya irabu kuifanya ya kutamkwa kwa sauti ya kawaida lakini ya kukata na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya kupazwa"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya kupazwa"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, inayotamkwa kwa sauti yenye mwelekeo wa kwenda na kurudi au kujikunja na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, inayotofautisha matamshi kwa sauti ya kupaza"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na inayotamkwa kwa sauti ya juu kali"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na ya kutamkwa kwa sauti ya mwendelezo yenye wimbi"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, alama ya koma inayowekwa kwenye kona ya juu kulia ya herufi \"o\" na \"u\" katika alfabeti ya Kivietnamu na alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, inayotamkwa kwa sauti ya chini nyembamba"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, alama ya kitone inayowekwa sehemu ya chini ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, alama inayofanana na alama ya kuuliza isiyokuwa na kitone chini inayowekwa juu ya irabu kwenye alfabeti ya Kivietnamu inayoifanya itamkwe kwa kupandisha na kushusha sauti"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, ya kutamkwa kwa sauti ya mwendelezo wa kiwimbi"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Alama hisi iliyogeuzwa juu chini"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Alama ya kunukuu yenye pembe mbili zinazoelekea kushoto"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Kitone cha kati"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Nambari moja iliyoandikwa kwa juu kidogo"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Alama ya kunukuu yenye pembe mbili zinazoelekeza kulia"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Kiulizi kilichogeuzwa juu chini"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Alama moja ya kunukuu ya kushoto"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Alama moja ya kunukuu ya kulia"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Alama moja ya koma inayowekwa sehemu ya chini ya baadhi ya herufi"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Alama mbili za kunukuu za kushoto"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Alama mbili za kunukuu za kulia"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Alama ya kurejea"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Alama mbili za kurejea"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Alama ya kuonyesha sehemu moja ya elfu"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Alama inayofanana alama ya koma inayotumiwa kuonyesha aina tofauti za vipimo"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Alama mbili zinazofanana alama za koma inayotumiwa kuonyesha aina tofauti za vipimo"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Alama moja ya kunukuu yenye pembe inayoelekeza kushoto"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Alama moja ya kunukuu yenye pembe inayoelekeza kulia"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Nambari \"4\" inayotumika kama alama inayowekwa kona ya juu kulia ya baadhi ya herufi"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Herufi ndogo ya \"n\" ya kilatini inayowekwa kona ya juu kulia ya baadhi ya herufi"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Alama ya Peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Kupitia kwa"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Kishale kinachoelekeza kulia"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Kishale kinachoelekeza chini"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Seti isiyokuwa na kitu chochote"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Ongezeko"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Ndogo kuliko au sawa na"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Kubwa kuliko au sawa na"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Nyota Nyeusi"</string>
+</resources>
diff --git a/java/res/values-sw/strings-talkback-descriptions.xml b/java/res/values-sw/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..6f84aa8
--- /dev/null
+++ b/java/res/values-sw/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Chomeka kifaa cha sauti ili usikie vitufe vya nenosiri vikitamkwa kwa sauti."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Maandishi ya sasa ni %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Hakuna maandishi yaliyoingizwa"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> hurekebisha <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kuwa <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> hufanya marekebisho otomatiki"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Herufi isiyojulikana"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Alama zaidi"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Alama"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Futa"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Alama"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Herufi"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Nambari"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Mipangilio"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Kichupo"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Nafasi"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Kuweka data kwa kutamka"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Rudi"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Utafutaji"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Nukta"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Badilisha lugha"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Linalofuata"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Iililotangulia"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift imewashwa"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock imewashwa"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Hali ya alama"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Hali ya alama zaidi"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Hali ya herufi"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Hali ya simu"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Hali ya alama za simu"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Kibodi imefichwa"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Inaonyesha kibodi ya  <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"tarehe"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"tarehe na wakati"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"barua pepe"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"utumaji ujumbe"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"nambari"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"simu"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"maandishi"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"wakati"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Zilizotumika majuzi"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Watu"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Vitu"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Maumbile"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Maeneo"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Alama"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Vikaragosi"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Herufi kubwa <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Herufi I kubwa"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Herufi I kubwa, alama ya kitone inayowekwa sehemu ya juu ya herufi katika alfabeti za Kilatini na Kivietnamu"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Alama isiyojulikana"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Emoji isiyojulikana"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Herufi mbadala zinapatikana"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Herufi mbadala huondolewa"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Mapendekezo mbadala yanapatikana"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Mapendekezo mbadala huondolewa"</string>
+</resources>
diff --git a/java/res/values-sw/strings.xml b/java/res/values-sw/strings.xml
index 191ad97..8f2a662 100644
--- a/java/res/values-sw/strings.xml
+++ b/java/res/values-sw/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Chaguo za uingizaji"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Amri za Kumbukumbu za Utafiti"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Angalia majina ya unaowasiliana nao"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Kikagua tahajia hutumia majina yaliyoingizwa katika orodha yako ya anwani"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Tetema unabofya kitufe"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Toa sauti unapobofya kitufe"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ibuka kitufe kinapobonyezwa"</string>
-    <string name="general_category" msgid="1859088467017573195">"Kawaida"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Marekebisho ya maandishi"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Kuandika kwa ishara"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Chaguo zingine"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Mipangilio ya kina"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Chaguo za wataalamu"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Badilisha hadi kwa mbinu zingine za ingizo"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Ufunguo wa kubadilisha lugha unashughulikia mbinu zingine za ingizo pia"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Kitufe cha kubadilisha lugha"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Chaguo-msingi la mfumo"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Pendekeza majini ya Anwani"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Tumia majina kutoka kwa Anwani kwa mapendekezo na marekebisho"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Mapendekezo yaliyobadilishwa kukufaa"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Boresha <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Kitone baada ya nafasi mbili"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Kugonga mara mbili kwenye upau nafasi kunaingiza kitone kikifuatiwa na nafasi"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Uwekaji wa herufi kubwa kiotomatiki"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Onyesha njia ya ishara"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Kihakiki kinachobadilika cha kuelea"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Onyesha neno lililopendekezwa unapoonyesha ishara"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Imehifadhiwa"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Chomeka plagi ya kifaa cha kichwa cha kusikiza ili kusikiliza msimbo wa nenosiri inayozungumwa kwa sauti ya juu."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Maandishi ya sasa ni %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Hakuna maandishi yaliyoingizwa"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> hurekebisha <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kuwa <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> hurekebisha kiotomatiki"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Msimbo wa kitufe %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Badilisha"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift imewashwa (gonga ili kulemaza)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock imewashwa (gonga ili kulemaza)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Futa"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Alama"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Herufi"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Nambari"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Mipangilio"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Kichupo"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Nafasi"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Kuweka data kwa kutamka"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Uso wenye tabasamu"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Rudi"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Tafuta"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Nukta"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Badili lugha"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Inayofuata"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Iliyotangulia"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift imewezeshwa"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps lock imewezeshwa"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift imelemazwa"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Hali ya alama"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Hali ya barua"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Hali ya simu"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Hali ya alama za simu"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Kibodi imefichwa"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Inaonyesha kibodi <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"tarehe"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"tarehe na wakati"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"barua pepe"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"Utumaji ujumbe"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"nambari"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"simu"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"maandishi"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"wakati"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Ishara ya fungu la maneno"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Weka nafasi wakati wa ishara kwa kuelea katika kitufe cha nafasi"</string>
     <string name="voice_input" msgid="3583258583521397548">"Kibao cha kuweka data kwa kutamka"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Kwenye kibodi kuu"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Kwenye kibodi ya ishara"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Zima"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Maikrofoni kwenye kibodi kuu"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Maikrofoni kwenye kibodi ya ishara"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Kipengele cha kuweka data kwa kutamka kimezimwa"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Hakuna mbinu ya kuweka data kwa kutamka iliyowashwa. Angalia Lugha na mipangilio ya kuingiza data."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Sanidi mbinu za uingizaji"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Lugha za uingizaji"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Tuma maoni"</string>
     <string name="select_language" msgid="3693815588777926848">"Lugha zinazoruhusiwa"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Gusa tena ili kuhifadhi"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Kamusi inapatikana"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Wezesha maoni ya watumiaji"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Saidia kuimarisha mbinu hii ya uingizaji wa kihariri, kwa kutuma takwimu za matumizi na ripoti za kuvurugika kiotomatiki"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Maandhari ya kibodi"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Kiingereza cha (Uingereza)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Kiingereza cha (Marekani)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Kihispania (Marekani)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Kiingereza (Uingereza) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Kiingereza (Marekani) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Kihispania (Marekani) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Asili)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Kiingereza (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Kiingereza (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Kihispania (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (cha Jadi)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Kikriliki)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Kilatini)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Hakuna lugha (Alfabeti)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabeti (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabeti (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabeti (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabeti (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Mpangilio wa rangi"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Nyeupe"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Samawati"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Mitindo maalum ya ingizo"</string>
     <string name="add_style" msgid="6163126614514489951">"Ongeza mtindo"</string>
     <string name="add" msgid="8299699805688017798">"Ongeza"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Washa"</string>
     <string name="not_now" msgid="6172462888202790482">"Sio sasa"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Mfumo sawa wa maingizo tayari upo: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Modi ya uchunguzi wa utumizi"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Ubofyaji kitufe kunakochelewa"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Bonyeza kitufe cha muda wa kutetema"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Bonyeza kitufe cha kiwango cha sauti"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Soma faili ya kamusi ya nje"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Hakuna faili za kamusi katika folda ya Vilivyopakuliwa"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Chagua faili ya kamusi ya kusakinisha"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Isakinishe faili hii kwa <xliff:g id="LOCALE_NAME">%s</xliff:g> kweli?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Ungependa kusakinisha faili hii ya <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Kulikuwa na hitilafu"</string>
     <string name="button_default" msgid="3988017840431881491">"Chaguo-msingi"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Karibu kwenye <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Onyesha upya"</string>
     <string name="last_update" msgid="730467549913588780">"Ilibadilishwa mwisho"</string>
     <string name="message_updating" msgid="4457761393932375219">"Inatafuta sasisho..."</string>
-    <string name="message_loading" msgid="8689096636874758814">"Inapakia..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Inapakia…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Kamusi kuu"</string>
     <string name="cancel" msgid="6830980399865683324">"Ghairi"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Mipangilio"</string>
     <string name="install_dict" msgid="180852772562189365">"Sakinisha"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Ghairi"</string>
     <string name="delete_dict" msgid="756853268088330054">"Futa"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Lugha iliyochaguliwa kwenye kifaa chako cha mkononi ina kamusi inayopatikana.&lt;br/&gt; Tunapendekeza&lt;b&gt;upakuaji wa kamusi&lt;/b&gt; <xliff:g id="LANGUAGE">%1$s</xliff:g> ili kuboresha hali yako ya kucharaza.&lt;br/&gt; &lt;br/&gt; Upakuaji unaweza kuchukua dakika moja au mbili kukamilika kwenye 3G. Unaweza kutozwa pesa ikiwa huna mpango wa data &lt;b&gt;usio na kipimo &lt;/b&gt;.&lt;br/&gt;Ikiwa huna uhakika una mpango gani wa data, tunapendekeza utafute muunganisho wa Wi-Fi ili uanze upakuaji moja kwa moja.&lt;br/&gt; &lt;br/&gt; Kidokezo: Unaweza kupakua na kuondoa kamusi kwa kuenda kwenye&lt;b&gt;Ingizo la &amp; Lugha&lt;/b&gt; katika &lt;b&gt;menyu ya Mipangilio&lt;/b&gt; ya kifaa chako cha mkononi."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Lugha iliyochaguliwa kwenye kifaa chako cha mkononi ina kamusi inayopatikana.&lt;br/&gt; Tunapendekeza&lt;b&gt;upakuaji wa kamusi ya&lt;/b&gt; <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ili kuboresha hali yako ya kuchapa.&lt;br/&gt; &lt;br/&gt; Upakuaji unaweza kuchukua dakika moja au mbili kukamilika kwenye mtandao wa 3G. Unaweza kutozwa ada ikiwa huna mpango wa data &lt;b&gt;usio na kipimo &lt;/b&gt;.&lt;br/&gt;Ikiwa huna uhakika una mpango gani wa data, tunapendekeza utafute muunganisho wa Wi-Fi ili uanze upakuaji kiotomatiki.&lt;br/&gt; &lt;br/&gt; Kidokezo: Unaweza kupakua na kuondoa kamusi kwa kuenda kwenye&lt;b&gt;Lugha na Zana za Kuingiza Datalt;/b&gt; katika &lt;b&gt;menyu ya Mipangilio&lt;/b&gt; ya kifaa chako cha mkononi."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Pakua sasa (MB<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Pakua kwenye Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Kamusi ya <xliff:g id="LANGUAGE">%1$s</xliff:g> inapatikana"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Kamusi inapatikana ya <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Bonyeza ili kukagua na kupakua"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Inapakua: mapendekezo ya <xliff:g id="LANGUAGE">%1$s</xliff:g> yatakuwa tayari hivi karibuni."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Inapakua: mapendekezo ya <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> yatakuwa tayari hivi karibuni."</string>
     <string name="version_text" msgid="2715354215568469385">"Toleo la <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Ongeza"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Ongeza kwenye kamusi"</string>
diff --git a/java/res/values-sw430dp/config-per-form-factor.xml b/java/res/values-sw430dp/config-per-form-factor.xml
new file mode 100644
index 0000000..8868081
--- /dev/null
+++ b/java/res/values-sw430dp/config-per-form-factor.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Configuration values for Large Phone. -->
+<resources>
+    <bool name="config_enable_show_key_preview_popup_option">true</bool>
+    <!-- Whether or not Popup on key press is enabled by default -->
+    <bool name="config_default_key_preview_popup">true</bool>
+    <bool name="config_default_sound_enabled">false</bool>
+    <bool name="config_enable_show_voice_key_option">true</bool>
+    <bool name="config_key_selection_by_dragging_finger">true</bool>
+    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
+         false -->
+    <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
+    <bool name="config_use_fullscreen_mode">false</bool>
+</resources>
diff --git a/java/res/values-sw430dp/config-screen-metrics.xml b/java/res/values-sw430dp/config-screen-metrics.xml
new file mode 100644
index 0000000..bc1c964
--- /dev/null
+++ b/java/res/values-sw430dp/config-screen-metrics.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_LARGE_PHONE}. -->
+    <integer name="config_screen_metrics">1</integer>
+</resources>
diff --git a/java/res/values-sw540dp-land/config.xml b/java/res/values-sw540dp-land/config.xml
deleted file mode 100644
index b3cd727..0000000
--- a/java/res/values-sw540dp-land/config.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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>
-    <bool name="config_use_fullscreen_mode">false</bool>
-</resources>
diff --git a/java/res/values-sw540dp-land/dimens.xml b/java/res/values-sw540dp-land/dimens.xml
deleted file mode 100644
index 0024937..0000000
--- a/java/res/values-sw540dp-land/dimens.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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>
-    <!-- Preferable keyboard height in absolute scale: 45.0mm -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">283.5dp</dimen>
-    <fraction name="minKeyboardHeight">45%p</fraction>
-
-    <fraction name="keyboard_top_padding_gb">2.444%p</fraction>
-    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
-    <fraction name="key_bottom_gap_gb">5.200%p</fraction>
-    <fraction name="key_horizontal_gap_gb">1.447%p</fraction>
-
-    <fraction name="keyboard_top_padding_holo">2.727%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">0.0%p</fraction>
-    <fraction name="key_bottom_gap_holo">4.5%p</fraction>
-    <fraction name="key_horizontal_gap_holo">0.9%p</fraction>
-
-    <dimen name="popup_key_height">81.9dp</dimen>
-
-    <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_padding">18dp</dimen>
-
-    <fraction name="key_letter_ratio">50%</fraction>
-    <fraction name="key_large_letter_ratio">48%</fraction>
-    <fraction name="key_label_ratio">32%</fraction>
-    <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">34%</fraction>
-    <fraction name="key_uppercase_letter_ratio">29%</fraction>
-    <fraction name="spacebar_text_ratio">30.0%</fraction>
-    <dimen name="key_uppercase_letter_padding">4dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5row">62%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">36%</fraction>
-
-    <dimen name="suggestions_strip_padding">252.0dp</dimen>
-    <integer name="max_more_suggestions_row">5</integer>
-    <fraction name="min_more_suggestions_width">50%</fraction>
-
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">26dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">76dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">26dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">17dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">10%p</fraction>
-    <fraction name="emoji_keyboard_row_height">33%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">70%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">30</integer>
-
-</resources>
diff --git a/java/res/values-sw540dp/config.xml b/java/res/values-sw540dp/config.xml
deleted file mode 100644
index 027780c..0000000
--- a/java/res/values-sw540dp/config.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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>
-    <bool name="config_enable_show_option_of_key_preview_popup">false</bool>
-    <bool name="config_enable_bigram_suggestions_option">false</bool>
-    <!-- Whether or not Popup on key press is enabled by default -->
-    <bool name="config_default_key_preview_popup">false</bool>
-    <bool name="config_default_sound_enabled">true</bool>
-    <bool name="config_auto_correction_spacebar_led_enabled">false</bool>
-    <!-- The language is never displayed if == 0, always displayed if < 0 -->
-    <integer name="config_delay_before_fadeout_language_on_spacebar">1200</integer>
-    <integer name="config_max_more_keys_column">5</integer>
-    <!--
-        Configuration for MainKeyboardView
-    -->
-    <dimen name="config_key_hysteresis_distance">40.0dp</dimen>
-    <bool name="config_sliding_key_input_enabled">false</bool>
-    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
-         false -->
-    <bool name="config_show_more_keys_keyboard_at_touched_point">true</bool>
-</resources>
diff --git a/java/res/values-sw540dp/dimens.xml b/java/res/values-sw540dp/dimens.xml
deleted file mode 100644
index 801b7ac..0000000
--- a/java/res/values-sw540dp/dimens.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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>
-    <!-- Preferable keyboard height in absolute scale: 48.0mm -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">302.4dp</dimen>
-    <fraction name="maxKeyboardHeight">46%p</fraction>
-    <fraction name="minKeyboardHeight">-35.0%p</fraction>
-
-    <dimen name="popup_key_height">63.0dp</dimen>
-
-    <fraction name="keyboard_top_padding_gb">2.291%p</fraction>
-    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
-    <fraction name="key_bottom_gap_gb">4.625%p</fraction>
-    <fraction name="key_horizontal_gap_gb">2.113%p</fraction>
-
-    <fraction name="keyboard_top_padding_holo">2.335%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">4.0%p</fraction>
-    <fraction name="key_bottom_gap_holo">4.5%p</fraction>
-    <fraction name="key_horizontal_gap_holo">1.565%p</fraction>
-
-    <dimen name="more_keys_keyboard_key_horizontal_padding">6dp</dimen>
-    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
-    <!-- popup_key_height x 1.2 -->
-    <dimen name="more_keys_keyboard_slide_allowance">98.3dp</dimen>
-    <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction_gb">-81.9dp</dimen>
-
-    <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_padding">6dp</dimen>
-    <dimen name="key_hint_letter_padding">3dp</dimen>
-    <dimen name="key_uppercase_letter_padding">3dp</dimen>
-
-    <fraction name="key_letter_ratio">42%</fraction>
-    <fraction name="key_large_letter_ratio">45%</fraction>
-    <fraction name="key_label_ratio">25%</fraction>
-    <fraction name="key_large_label_ratio">32%</fraction>
-    <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">28%</fraction>
-    <fraction name="key_uppercase_letter_ratio">22%</fraction>
-    <fraction name="key_preview_text_ratio">50%</fraction>
-    <fraction name="spacebar_text_ratio">28.0%</fraction>
-    <dimen name="key_preview_height">94.5dp</dimen>
-    <dimen name="key_preview_offset_gb">16.0dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5row">52%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">27%</fraction>
-
-    <dimen name="key_preview_offset_holo">8.0dp</dimen>
-    <!-- popup_key_height x -0.5 -->
-    <dimen name="more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen>
-
-    <dimen name="suggestions_strip_height">44dp</dimen>
-    <dimen name="more_suggestions_row_height">44dp</dimen>
-    <integer name="max_more_suggestions_row">6</integer>
-    <fraction name="min_more_suggestions_width">90%</fraction>
-    <dimen name="suggestions_strip_padding">94.5dp</dimen>
-    <dimen name="suggestion_min_width">48.0dp</dimen>
-    <dimen name="suggestion_padding">12dp</dimen>
-    <dimen name="suggestion_text_size">22dp</dimen>
-    <dimen name="more_suggestions_hint_text_size">33dp</dimen>
-
-    <!-- Gesture trail parameters -->
-    <dimen name="gesture_trail_width">2.5dp</dimen>
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">28dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">87dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">28dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">19dp</dimen>
-    <dimen name="gesture_floating_preview_round_radius">3dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">12.5%p</fraction>
-    <fraction name="emoji_keyboard_row_height">33%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">60%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">24</integer>
-
-</resources>
diff --git a/java/res/values-sw540dp/touch-position-correction.xml b/java/res/values-sw540dp/touch-position-correction.xml
deleted file mode 100644
index 932b8fc..0000000
--- a/java/res/values-sw540dp/touch-position-correction.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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">
-    <!-- Note that correctionX is obsolete (See com.android.inputmethod.keyboard.internal.TouchPositionCorrection)
-        An entry of the touch_position_correction word should be:
-        1. correctionX: (touch_center_x - hitbox_center_x) / hitbox_width
-        2. correctionY: (touch_center_y - hitbox_center_y) / hitbox_height
-        3. correctionR: sweet_spot_radius / sqrt(hitbox_width^2 + hitbox_height^2)
-    -->
-
-    <string-array
-        name="touch_position_correction_data_default"
-        translatable="false"
-    >
-        <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
-             correctionX = 0.0f
-             correctionY = 0.0f
-             correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
-        -->
-    </string-array>
-
-    <string-array
-        name="touch_position_correction_data_gb"
-        translatable="false"
-    >
-        <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
-             correctionX = 0.0f
-             correctionY = 0.0f
-             correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
-        -->
-    </string-array>
-
-    <string-array
-        name="touch_position_correction_data_holo"
-        translatable="false"
-    >
-        <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
-             correctionX = 0.0f
-             correctionY = 0.0f
-             correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
-        -->
-    </string-array>
-</resources>
diff --git a/java/res/values-sw600dp-land/config.xml b/java/res/values-sw600dp-land/config.xml
new file mode 100644
index 0000000..6368eef
--- /dev/null
+++ b/java/res/values-sw600dp-land/config.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.
+*/
+-->
+
+<!-- Configuration values for Small Tablet Landscape. -->
+<resources>
+    <!-- Preferable keyboard height in absolute scale: 45.0mm -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">283.5dp</dimen>
+    <fraction name="config_min_keyboard_height">45%p</fraction>
+
+    <dimen name="config_more_keys_keyboard_key_height">81.9dp</dimen>
+
+    <fraction name="config_keyboard_top_padding_holo">2.727%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">4.5%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">0.9%p</fraction>
+
+    <fraction name="config_key_letter_ratio">50%</fraction>
+    <fraction name="config_key_large_letter_ratio">48%</fraction>
+    <fraction name="config_key_label_ratio">32%</fraction>
+    <fraction name="config_key_hint_letter_ratio">23%</fraction>
+    <fraction name="config_key_hint_label_ratio">34%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">29%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">30.0%</fraction>
+    <dimen name="config_key_shifted_letter_hint_padding">4dp</dimen>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">3.20%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">62%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">36%</fraction>
+
+    <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">180.0dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
+    <integer name="config_max_more_suggestions_row">5</integer>
+    <fraction name="config_min_more_suggestions_width">50%</fraction>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">26dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">76dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">26dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">17dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">10%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">70%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">30</integer>
+</resources>
diff --git a/java/res/values-sw600dp/config-per-form-factor.xml b/java/res/values-sw600dp/config-per-form-factor.xml
new file mode 100644
index 0000000..aa9a054
--- /dev/null
+++ b/java/res/values-sw600dp/config-per-form-factor.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Configuration values for Small Tablet. -->
+<resources>
+    <bool name="config_enable_show_key_preview_popup_option">false</bool>
+    <!-- Whether or not Popup on key press is enabled by default -->
+    <bool name="config_default_key_preview_popup">false</bool>
+    <bool name="config_default_sound_enabled">true</bool>
+    <bool name="config_enable_show_voice_key_option">false</bool>
+    <bool name="config_key_selection_by_dragging_finger">false</bool>
+    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
+         false -->
+    <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
+    <bool name="config_use_fullscreen_mode">false</bool>
+</resources>
diff --git a/java/res/values-sw600dp/config-screen-metrics.xml b/java/res/values-sw600dp/config-screen-metrics.xml
new file mode 100644
index 0000000..d16c925
--- /dev/null
+++ b/java/res/values-sw600dp/config-screen-metrics.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_SMALL_TABLET}. -->
+    <integer name="config_screen_metrics">3</integer>
+</resources>
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml
index e72e494..9d16e2c 100644
--- a/java/res/values-sw600dp/config.xml
+++ b/java/res/values-sw600dp/config.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2013, The Android Open Source Project
+** 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.
@@ -18,6 +18,69 @@
 */
 -->
 
+<!-- Configuration values for Small Tablet Portrait. -->
 <resources>
-    <bool name="config_enable_show_voice_key_option">false</bool>
+    <dimen name="config_key_hysteresis_distance">40.0dp</dimen>
+
+    <!-- Preferable keyboard height in absolute scale: 48.0mm -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">302.4dp</dimen>
+    <fraction name="config_max_keyboard_height">46%p</fraction>
+    <fraction name="config_min_keyboard_height">-35.0%p</fraction>
+
+    <dimen name="config_more_keys_keyboard_key_height">63.0dp</dimen>
+    <dimen name="config_more_keys_keyboard_key_horizontal_padding">6dp</dimen>
+    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+    <!-- config_more_keys_keyboard_key_height x 1.2 -->
+    <dimen name="config_more_keys_keyboard_slide_allowance">98.3dp</dimen>
+
+    <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">4.0%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">4.5%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">1.565%p</fraction>
+    <!-- config_more_keys_keyboard_key_height x -0.5 -->
+    <dimen name="config_more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen>
+    <dimen name="config_key_preview_offset_holo">8.0dp</dimen>
+
+    <dimen name="config_key_preview_height">94.5dp</dimen>
+    <fraction name="config_key_preview_text_ratio">50%</fraction>
+    <fraction name="config_key_letter_ratio">42%</fraction>
+    <fraction name="config_key_large_letter_ratio">45%</fraction>
+    <fraction name="config_key_label_ratio">25%</fraction>
+    <fraction name="config_key_large_label_ratio">32%</fraction>
+    <fraction name="config_key_hint_letter_ratio">23%</fraction>
+    <fraction name="config_key_hint_label_ratio">28%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">22%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">28.0%</fraction>
+    <dimen name="config_key_hint_letter_padding">3dp</dimen>
+    <dimen name="config_key_shifted_letter_hint_padding">3dp</dimen>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">3.20%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">52%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">27%</fraction>
+
+    <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">54dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
+    <dimen name="config_more_suggestions_row_height">44dp</dimen>
+    <integer name="config_max_more_suggestions_row">6</integer>
+    <fraction name="config_min_more_suggestions_width">90%</fraction>
+    <dimen name="config_suggestion_min_width">48.0dp</dimen>
+    <dimen name="config_suggestion_text_horizontal_padding">10dp</dimen>
+    <dimen name="config_suggestion_text_size">22dp</dimen>
+    <dimen name="config_more_suggestions_hint_text_size">33dp</dimen>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">28dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">87dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">28dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">19dp</dimen>
+    <dimen name="config_gesture_floating_preview_round_radius">3dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">12.5%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">60%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">24</integer>
 </resources>
diff --git a/java/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml b/java/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..9cc555f
--- /dev/null
+++ b/java/res/values-sw600dp/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations">:,;,\",(,),\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-sw600dp/touch-position-correction.xml b/java/res/values-sw600dp/touch-position-correction.xml
new file mode 100644
index 0000000..6aaa605
--- /dev/null
+++ b/java/res/values-sw600dp/touch-position-correction.xml
@@ -0,0 +1,49 @@
+<?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">
+    <!-- Note that correctionX is obsolete (See com.android.inputmethod.keyboard.internal.TouchPositionCorrection)
+        An entry of the touch_position_correction word should be:
+        1. correctionX: (touch_center_x - hitbox_center_x) / hitbox_width
+        2. correctionY: (touch_center_y - hitbox_center_y) / hitbox_height
+        3. correctionR: sweet_spot_radius / sqrt(hitbox_width^2 + hitbox_height^2)
+    -->
+
+    <string-array
+        name="touch_position_correction_data_default"
+        translatable="false"
+    >
+        <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
+             correctionX = 0.0f
+             correctionY = 0.0f
+             correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
+        -->
+    </string-array>
+
+    <string-array
+        name="touch_position_correction_data_holo"
+        translatable="false"
+    >
+        <!-- The default touch position data (See com.android.inputmethod.keyboard.ProximityInfo)
+             correctionX = 0.0f
+             correctionY = 0.0f
+             correctionR = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
+        -->
+    </string-array>
+</resources>
diff --git a/java/res/values-sw768dp-land/config.xml b/java/res/values-sw768dp-land/config.xml
index b3cd727..a1659b4 100644
--- a/java/res/values-sw768dp-land/config.xml
+++ b/java/res/values-sw768dp-land/config.xml
@@ -18,6 +18,49 @@
 */
 -->
 
+<!-- Configuration values for Large Tablet Landscape. -->
 <resources>
-    <bool name="config_use_fullscreen_mode">false</bool>
+    <!-- Preferable keyboard height in absolute scale: 58.0mm -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">365.4dp</dimen>
+    <fraction name="config_min_keyboard_height">45%p</fraction>
+
+    <fraction name="config_keyboard_top_padding_holo">1.896%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">3.690%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">1.030%p</fraction>
+    <dimen name="config_key_preview_offset_holo">8.0dp</dimen>
+
+    <dimen name="config_more_keys_keyboard_key_height">81.9dp</dimen>
+
+    <dimen name="config_key_preview_height">107.1dp</dimen>
+    <fraction name="config_key_letter_ratio">43%</fraction>
+    <fraction name="config_key_large_letter_ratio">42%</fraction>
+    <fraction name="config_key_label_ratio">28%</fraction>
+    <fraction name="config_key_hint_letter_ratio">23%</fraction>
+    <fraction name="config_key_hint_label_ratio">28%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">24%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">24.00%</fraction>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">2.65%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">53%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">30%</fraction>
+
+    <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">340dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
+    <fraction name="config_min_more_suggestions_width">50%</fraction>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">32dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">100dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">32dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">21dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">7.69%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">60%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">39</integer>
 </resources>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
deleted file mode 100644
index 653f5e7..0000000
--- a/java/res/values-sw768dp-land/dimens.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?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>
-    <!-- Preferable keyboard height in absolute scale: 58.0mm -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">365.4dp</dimen>
-    <fraction name="minKeyboardHeight">45%p</fraction>
-
-    <fraction name="keyboard_top_padding_gb">1.896%p</fraction>
-    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
-    <fraction name="key_bottom_gap_gb">3.896%p</fraction>
-    <fraction name="key_horizontal_gap_gb">1.195%p</fraction>
-
-    <fraction name="keyboard_top_padding_holo">1.896%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">0.0%p</fraction>
-    <fraction name="key_bottom_gap_holo">3.690%p</fraction>
-    <fraction name="key_horizontal_gap_holo">1.030%p</fraction>
-
-    <dimen name="popup_key_height">81.9dp</dimen>
-
-    <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_padding">18dp</dimen>
-
-    <fraction name="key_letter_ratio">43%</fraction>
-    <fraction name="key_large_letter_ratio">42%</fraction>
-    <fraction name="key_label_ratio">28%</fraction>
-    <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">28%</fraction>
-    <fraction name="key_uppercase_letter_ratio">24%</fraction>
-    <fraction name="spacebar_text_ratio">24.00%</fraction>
-    <dimen name="key_preview_height">107.1dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">2.65%p</fraction>
-    <fraction name="key_letter_ratio_5row">53%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">30%</fraction>
-
-    <dimen name="key_preview_offset_holo">8.0dp</dimen>
-
-    <dimen name="suggestions_strip_padding">252.0dp</dimen>
-    <fraction name="min_more_suggestions_width">50%</fraction>
-
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">32dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">100dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">32dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">21dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">7.69%p</fraction>
-    <fraction name="emoji_keyboard_row_height">33%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">60%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">39</integer>
-
-</resources>
diff --git a/java/res/values-sw768dp/config-per-form-factor.xml b/java/res/values-sw768dp/config-per-form-factor.xml
new file mode 100644
index 0000000..b90fbae
--- /dev/null
+++ b/java/res/values-sw768dp/config-per-form-factor.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Configuration values for Large Tablet. -->
+<resources>
+    <bool name="config_enable_show_key_preview_popup_option">false</bool>
+    <!-- Whether or not Popup on key press is enabled by default -->
+    <bool name="config_default_key_preview_popup">false</bool>
+    <bool name="config_default_sound_enabled">true</bool>
+    <bool name="config_enable_show_voice_key_option">false</bool>
+    <bool name="config_key_selection_by_dragging_finger">false</bool>
+    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
+         false -->
+    <bool name="config_show_more_keys_keyboard_at_touched_point">true</bool>
+    <bool name="config_use_fullscreen_mode">false</bool>
+</resources>
diff --git a/java/res/values-sw768dp/config-screen-metrics.xml b/java/res/values-sw768dp/config-screen-metrics.xml
new file mode 100644
index 0000000..7769ad8
--- /dev/null
+++ b/java/res/values-sw768dp/config-screen-metrics.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_LARGE_TABLET}. -->
+    <integer name="config_screen_metrics">2</integer>
+</resources>
diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml
index e1c07d6..635061d 100644
--- a/java/res/values-sw768dp/config.xml
+++ b/java/res/values-sw768dp/config.xml
@@ -18,28 +18,67 @@
 */
 -->
 
+<!-- Configuration values for Large Tablet Portrait. -->
 <resources>
-    <bool name="config_enable_show_voice_key_option">false</bool>
-    <bool name="config_enable_show_option_of_key_preview_popup">false</bool>
-    <bool name="config_enable_bigram_suggestions_option">false</bool>
-    <!-- Whether or not Popup on key press is enabled by default -->
-    <bool name="config_default_key_preview_popup">false</bool>
-    <bool name="config_default_sound_enabled">true</bool>
-    <bool name="config_auto_correction_spacebar_led_enabled">false</bool>
-    <integer name="config_max_more_keys_column">5</integer>
-    <!--
-        Configuration for MainKeyboardView
-    -->
-    <bool name="config_sliding_key_input_enabled">false</bool>
-    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
-         false -->
-    <bool name="config_show_more_keys_keyboard_at_touched_point">true</bool>
-    <!--  Screen metrics for logging.
-            0 = "mdpi phone screen"
-            1 = "hdpi phone screen"
-            2 = "mdpi 11 inch tablet screen"
-            3 = "xhdpi phone screen?"
-            4 = ?
-    -->
-    <integer name="log_screen_metrics">2</integer>
+    <!-- Preferable keyboard height in absolute scale: 48.0mm -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">302.4dp</dimen>
+    <fraction name="config_max_keyboard_height">46%p</fraction>
+    <fraction name="config_min_keyboard_height">-35.0%p</fraction>
+
+    <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">0.0%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">3.312%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">1.066%p</fraction>
+    <!-- config_more_keys_keyboard_key_height x -0.5 -->
+    <dimen name="config_more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen>
+    <dimen name="config_key_preview_offset_holo">8.0dp</dimen>
+
+    <dimen name="config_more_keys_keyboard_key_height">63.0dp</dimen>
+    <dimen name="config_more_keys_keyboard_key_horizontal_padding">12dp</dimen>
+    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+    <!-- config_more_keys_keyboard_key_height x 1.2 -->
+    <dimen name="config_more_keys_keyboard_slide_allowance">98.3dp</dimen>
+
+    <dimen name="config_key_preview_height">94.5dp</dimen>
+    <fraction name="config_key_preview_text_ratio">50%</fraction>
+    <fraction name="config_key_letter_ratio">40%</fraction>
+    <fraction name="config_key_large_letter_ratio">42%</fraction>
+    <fraction name="config_key_label_ratio">28%</fraction>
+    <fraction name="config_key_large_label_ratio">28%</fraction>
+    <fraction name="config_key_hint_letter_ratio">23%</fraction>
+    <fraction name="config_key_hint_label_ratio">28%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">26%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">29.03%</fraction>
+    <dimen name="config_key_hint_letter_padding">3dp</dimen>
+    <dimen name="config_key_shifted_letter_hint_padding">3dp</dimen>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">2.95%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">51%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">33%</fraction>
+
+    <dimen name="config_suggestions_strip_height">44dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">100dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">54dp</dimen>
+    <dimen name="config_more_suggestions_row_height">44dp</dimen>
+    <integer name="config_max_more_suggestions_row">6</integer>
+    <fraction name="config_min_more_suggestions_width">90%</fraction>
+    <dimen name="config_suggestion_min_width">46dp</dimen>
+    <dimen name="config_suggestion_text_horizontal_padding">10dp</dimen>
+    <dimen name="config_suggestion_text_size">22dp</dimen>
+    <dimen name="config_more_suggestions_hint_text_size">33dp</dimen>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">26dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">86dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">26dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">17dp</dimen>
+    <dimen name="config_gesture_floating_preview_round_radius">3dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">10%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">68%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">30</integer>
 </resources>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
deleted file mode 100644
index 4671aa2..0000000
--- a/java/res/values-sw768dp/dimens.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?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>
-    <!-- Preferable keyboard height in absolute scale: 48.0mm -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">302.4dp</dimen>
-    <fraction name="maxKeyboardHeight">46%p</fraction>
-    <fraction name="minKeyboardHeight">-35.0%p</fraction>
-
-    <fraction name="keyboard_top_padding_gb">2.291%p</fraction>
-    <fraction name="keyboard_bottom_padding_gb">0.0%p</fraction>
-    <fraction name="key_bottom_gap_gb">4.687%p</fraction>
-    <fraction name="key_horizontal_gap_gb">1.272%p</fraction>
-
-    <fraction name="keyboard_top_padding_holo">2.335%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">0.0%p</fraction>
-    <fraction name="key_bottom_gap_holo">3.312%p</fraction>
-    <fraction name="key_horizontal_gap_holo">1.066%p</fraction>
-
-    <dimen name="popup_key_height">63.0dp</dimen>
-
-    <dimen name="more_keys_keyboard_key_horizontal_padding">12dp</dimen>
-    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
-    <!-- popup_key_height x 1.2 -->
-    <dimen name="more_keys_keyboard_slide_allowance">98.3dp</dimen>
-    <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction_gb">-81.9dp</dimen>
-
-    <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_padding">6dp</dimen>
-    <dimen name="key_hint_letter_padding">3dp</dimen>
-    <dimen name="key_uppercase_letter_padding">3dp</dimen>
-
-    <fraction name="key_letter_ratio">40%</fraction>
-    <fraction name="key_large_letter_ratio">42%</fraction>
-    <fraction name="key_label_ratio">28%</fraction>
-    <fraction name="key_large_label_ratio">28%</fraction>
-    <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">28%</fraction>
-    <fraction name="key_uppercase_letter_ratio">26%</fraction>
-    <fraction name="key_preview_text_ratio">50%</fraction>
-    <fraction name="spacebar_text_ratio">29.03%</fraction>
-    <dimen name="key_preview_height">94.5dp</dimen>
-    <dimen name="key_preview_offset_gb">16.0dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">2.95%p</fraction>
-    <fraction name="key_letter_ratio_5row">51%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">33%</fraction>
-
-    <dimen name="key_preview_offset_holo">8.0dp</dimen>
-    <!-- popup_key_height x -0.5 -->
-    <dimen name="more_keys_keyboard_vertical_correction_holo">-31.5dp</dimen>
-
-    <dimen name="suggestions_strip_height">44dp</dimen>
-    <dimen name="more_suggestions_row_height">44dp</dimen>
-    <integer name="max_more_suggestions_row">6</integer>
-    <fraction name="min_more_suggestions_width">90%</fraction>
-    <dimen name="suggestions_strip_padding">94.5dp</dimen>
-    <dimen name="suggestion_min_width">46dp</dimen>
-    <dimen name="suggestion_padding">8dp</dimen>
-    <dimen name="suggestion_text_size">22dp</dimen>
-    <dimen name="more_suggestions_hint_text_size">33dp</dimen>
-
-    <!-- Gesture trail parameters -->
-    <dimen name="gesture_trail_width">2.5dp</dimen>
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">26dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">86dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">26dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">17dp</dimen>
-    <dimen name="gesture_floating_preview_round_radius">3dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">10%p</fraction>
-    <fraction name="emoji_keyboard_row_height">33%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">68%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">30</integer>
-
-</resources>
diff --git a/java/res/values-ta-rIN/strings-action-keys.xml b/java/res/values-ta-rIN/strings-action-keys.xml
new file mode 100644
index 0000000..c07de35
--- /dev/null
+++ b/java/res/values-ta-rIN/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"செல்"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"அடுத்து"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"முன்"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"முடிந்தது"</string>
+    <string name="label_send_key" msgid="482252074224462163">"அனுப்பு"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"தேடு"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"இடைநிறுத்து"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"காத்திரு"</string>
+</resources>
diff --git a/java/res/values-ta-rIN/strings-appname.xml b/java/res/values-ta-rIN/strings-appname.xml
new file mode 100644
index 0000000..5ad5eae
--- /dev/null
+++ b/java/res/values-ta-rIN/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android Keyboard (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android Spell Checker (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android Keyboard Settings (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android Spell Checker Settings (AOSP)"</string>
+</resources>
diff --git a/java/res/values-ta-rIN/strings-config-important-notice.xml b/java/res/values-ta-rIN/strings-config-important-notice.xml
new file mode 100644
index 0000000..ae9a4ca
--- /dev/null
+++ b/java/res/values-ta-rIN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"தொடர்புகளிலிருந்தும், உள்ளிட்ட தரவிலிருந்தும் பரிந்துரைகளை மேம்படுத்த அறியவும்"</string>
+</resources>
diff --git a/java/res/values-ta-rIN/strings-letter-descriptions.xml b/java/res/values-ta-rIN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..e1254aa
--- /dev/null
+++ b/java/res/values-ta-rIN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ஃபெமினைன் ஆர்டினல் இன்டிகேட்டர்"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"மைக்ரோ குறி"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"மாஸ்குலின் ஆர்டினல் இன்டிகேட்டர்"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"ஷார்ப் S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, கிரேவ்"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, அக்யூட்"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, வளைவு"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, டில்டு"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, டையாரேசிஸ்"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, மேல் வளையம்"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, லிகஷர்"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, செடில்லா"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, கிரேவ்"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, அக்யூட்"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, வளைவு"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, டையாரேசிஸ்"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, கிரேவ்"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, அக்யூட்"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, வளைவு"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, டையாரேசிஸ்"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"ஈத்"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, டில்டு"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, கிரேவ்"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, அக்யூட்"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, வளைவு"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, டில்டு"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, டையாரேசிஸ்"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, ஸ்ட்ரோக்"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, கிரேவ்"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, அக்யூட்"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, வளைவு"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, டையாரேசிஸ்"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, அக்யூட்"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"தோர்ன்"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, டையாரேசிஸ்"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, மேக்ரான்"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, பிரீவ்"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ஒகோனெக்"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, அக்யூட்"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, வளைவு"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, மேல் புள்ளி"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, கேரன்"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, கேரன்"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, ஸ்ட்ரோக்"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, மேக்ரான்"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, பிரீவ்"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, மேல் புள்ளி"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ஒகோனேக்"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, கேரன்"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, வளைவு"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, பிரீவ்"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, மேல் புள்ளி"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, செடில்லா"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, வளைவு"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, ஸ்ட்ரோக்"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, டில்டு"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, மேக்ரான்"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, பிரீவ்"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ஒகோனேக்"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"புள்ளியற்ற I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, லிகஷர்"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, வளைவு"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, செடில்லா"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"க்ரா"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, அக்யூட்"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, செடில்லா"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, கேரன்"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, நடுப் புள்ளி"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, ஸ்ட்ரோக்"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, அக்யூட்"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, செடில்லா"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, கேரன்"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, தனிமேற்கோள் குறிக்கு அடுத்துவருவது"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"இங்க்"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, மேக்ரான்"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, பிரீவ்"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, டபுள் அக்யூட்"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, லிகஷர்"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, அக்யூட்"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, செடில்லா"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, கேரன்"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, அக்யூட்"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, வளைவு"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, செடில்லா"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, கேரன்"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, செடில்லா"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, கேரன்"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, ஸ்ட்ரோக்"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, டில்டு"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, மேக்ரான்"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, பிரீவ்"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, மேல் வளையம்"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, டபுள் அக்யூட்"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ஒகோனேக்"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, வளைவு"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, வளைவு"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, அக்யூட்"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, மேல் புள்ளி"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, கேரன்"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"நீண்ட S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, ஹார்ன்"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, ஹார்ன்"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, கீழ் காற்புள்ளி"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, கீழ் காற்புள்ளி"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"செச்சுவா"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, வளைவு மற்றும் அக்யூட்"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, வளைவு மற்றும் கிரேவ்"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, வளைவு மற்றும் மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, வளைவு மற்றும் டில்டு"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, வளைவு மற்றும் கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, பிரீவ் மற்றும் அக்யூட்"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, பிரீவ் மற்றும் கிரேவ்"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, பிரீவ் மற்றும் மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, பிரீவ் மற்றும் டில்டு"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, பிரீவ் மற்றும் கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, டில்டு"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, வளைவு மற்றும் அக்யூட்"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, வளைவு மற்றும் கிரேவ்"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, வளைவு மற்றும் மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, வளைவு மற்றும் டில்டு"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, வளைவு மற்றும் கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, வளைவு மற்றும் அக்யூட்"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, வளைவு மற்றும் கிரேவ்"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, வளைவு மற்றும் மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, வளைவு மற்றும் டில்டு"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, வளைவு மற்றும் கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, ஹார்ன் மற்றும் அக்யூட்"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, ஹார்ன் மற்றும் கிரேவ்"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, ஹார்ன் மற்றும் மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, ஹார்ன் மற்றும் டில்டு"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, ஹார்ன் மற்றும் கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, ஹார்ன் மற்றும் அக்யூட்"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, ஹார்ன் மற்றும் கிரேவ்"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, ஹார்ன் மற்றும் மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, ஹார்ன் மற்றும் டில்டு"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, ஹார்ன் மற்றும் கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, கிரேவ்"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, கீழ் புள்ளி"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, மேல் ஹூக்"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, டில்டு"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"தலைகீழ் ஆச்சரியக் குறி"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"இடது பிரான்சிய வலது மேற்கோள்குறி"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"நடுப் புள்ளி"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"சூப்பர்ஸ்கிரிப்ட் ஒன்"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"வலது பிரான்சிய இரட்டை மேற்கோள்குறி"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"தலைகீழ் கேள்விக் குறி"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"இடது ஒற்றை மேற்கோள் குறி"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"வலது ஒற்றை மேற்கோள் குறி"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"ஒற்றை லோ-9 மேற்கோள் குறி"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"இடது இரட்டை மேற்கோள் குறி"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"வலது இரட்டை மேற்கோள் குறி"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"டேகர்"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"இரட்டை டேகர்"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"விழுக்காட்டுச் சின்னம்"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"அளவுக்குறி"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"இரட்டை அளவுக்குறி"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"இடது பிரான்சிய ஒற்றை மேற்கோள்குறி"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"வலது பிரான்சிய ஒற்றை மேற்கோள்குறி"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"சூப்பர்ஸ்கிரிப்ட் நான்கு"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"சூப்பர்ஸ்கிரிப்ட் லத்தீன் சிற்றெழுத்து n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"பெஸோ குறி"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"கேர் ஆஃப்"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"வலது நோக்கிய அம்பு"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"கீழ் நோக்கிய அம்பு"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"வெற்று கணம்"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"இன்கிரிமென்ட்"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"குறைவு அல்லது சமம்"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"அதிகம் அல்லது சமம்"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"கருப்பு நட்சத்திரம்"</string>
+</resources>
diff --git a/java/res/values-ta-rIN/strings-talkback-descriptions.xml b/java/res/values-ta-rIN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..a65c8de
--- /dev/null
+++ b/java/res/values-ta-rIN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"சத்தமாகக் கூறப்படும் கடவுச்சொல் விசைகளைக் கேட்பதற்கு ஹெட்செட்டைச் செருகவும்."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"நடப்பு உரை %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"உரை எதுவும் உள்ளிடப்படவில்லை"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> இலிருந்து <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> ஆக <xliff:g id="KEY_NAME">%1$s</xliff:g> திருத்துகிறது"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> தன்னியக்க திருத்தத்தைச் செயல்படுத்துகிறது"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"அறியப்படாத எழுத்துக்குறி"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"ஷிஃப்டு"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"கூடுதல் குறியீடுகள்"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"ஷிஃப்டு"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"குறியீடுகள்"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"ஷிஃப்டு"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"நீக்கு"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"சின்னங்கள்"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"எழுத்துகள்"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"எண்கள்"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"அமைப்புகள்"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"டேப்"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"ஸ்பேஸ்"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"குரல் உள்ளீடு"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ஈமோஜி"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"திரும்பு"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"தேடல்"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"புள்ளி"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"மொழியை மாற்று"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"அடுத்து"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"முந்தையது"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"ஷிப்டு இயக்கப்பட்டது"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"பேரெழுத்தாக்கம் இயக்கப்பட்டது"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"குறியீடுகள் பயன்முறை"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"கூடுதல் குறியீடுகள் முறை"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"எழுத்துகள் பயன்முறை"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ஃபோன் பயன்முறை"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ஃபோன் குறியீடுகள் பயன்முறை"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"விசைப்பலகை மறைக்கப்பட்டது"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> விசைப்பலகையைக் காட்டுகிறது"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"தேதி"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"தேதி மற்றும் நேரம்"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"மின்னஞ்சல்"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"செய்தியிடல்"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"எண்"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ஃபோன்"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"உரை"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"நேரம்"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"சமீபத்தியவை"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"நபர்கள்"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"பொருட்கள்"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"இயற்கை"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"இடங்கள்"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"சின்னங்கள்"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"எமோடிகான்ஸ்"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"பேரெழுத்து <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"பேரெழுத்து I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"பேரெழுத்து I, மேல் புள்ளி"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"அறியப்படாத குறியீடு"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"அறியப்படாத ஈமோஜி"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"மாற்று எழுத்துக்குறிகள் உள்ளன"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"மாற்று எழுத்துக்குறிகள் நிராகரிக்கப்பட்டன"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"மாற்று பரிந்துரைகள் உள்ளன"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"மாற்று பரிந்துரைகள் நிராகரிக்கப்பட்டன"</string>
+</resources>
diff --git a/java/res/values-ta-rIN/strings.xml b/java/res/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..14f64c6
--- /dev/null
+++ b/java/res/values-ta-rIN/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"உள்ளீட்டு விருப்பங்கள்"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"தொடர்பு பெயர்களை ஆய்வுசெய்"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"உங்கள் தொடர்புபட்டியலில் இருந்து உள்ளீடுகளை பிழைத்திருத்தி பயன்படுத்துகிறது"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"விசையழுத்தின்போது அதிர்வுரு"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"விசையழுத்தத்தின்போது ஒலியெழுப்பு"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"விழை அழுத்தத்தின்போது பாப்அப் செய்"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"பிற உள்ளீட்டு முறைகளுக்கு மாறு"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"மொழி மாற்றல் விசை பிற உள்ளீட்டு முறைகளையும் கட்டுப்படுத்துகிறது"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"மொழி மாற்ற விசை"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"பல உள்ளீட்டு மொழிகள் இயக்கப்பட்டிருக்கும்போது காட்டு"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"இழுத்தல் குறிப்பானைக் காட்டு"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"ஷிப்ட் அல்லது குறியீட்டு விசைகளிலிருந்து இழுத்து செல்லும்போது காட்சித் தடத்தைக் காட்டு"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"விசை பாப்அப் விலக்கின் தாமதம்"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"தாமதம் வேண்டாம்"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"இயல்புநிலை"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>மி.வி."</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"அமைப்பின் இயல்புநிலை"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"தொடர்பு பெயர்களைப் பரிந்துரை"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"பரிந்துரைகள், திருத்தங்கள் ஆகியவற்றிற்கு தொடர்புகளிலிருந்து பெயர்களை பயன்படுத்து"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"தனிப்பட்ட பரிந்துரைகள்"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ஐ மேம்படுத்து"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"புள்ளியைத் தொடர்ந்து இடைவெளியை உள்ளிடு"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"ஸ்பேஸ் பட்டியை இருமுறை தட்டுவது, புள்ளியை தொடர்ந்து இடைவெளியை உள்ளிடும்"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"தன்னியக்க பேரெழுத்தாக்கல்"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"வரியின் முதல் எழுத்தை பேரெழுத்தாக்கும்"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"தனிப்பட்ட அகராதி"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"துணை அகராதிகள்"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"முதன்மை அகராதி"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"திருத்துதல் விருப்பங்களைக் காட்டு"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"உள்ளிடும்போது பரிந்துரைக்கப்பட்ட வார்த்தைகளைக் காட்டும்"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"எப்போதும் காட்டு"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"நிலைப்பதிப்பு பயன்முறையில் காட்டு"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"எப்போதும் மறை"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"தீங்குவிளைவிக்கும் வார்த்தைகளை தடு"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"தீங்குவிளைவிக்க சாத்தியமுள்ளதான வார்த்தைகளைப் பரிந்துரைக்க வேண்டாம்"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"தன்னியக்க திருத்தம்"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"ஸ்பேஸ்பாரும், நிறுத்தற்குறிகளும் தவறாக உள்ளிடப்பட்ட வார்த்தைகளை தானாக திருத்தும்"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"முடக்கத்தில்"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"மிதமாக"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"தீவிரமாக"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"மிகத் தீவிரமாக"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"அடுத்த வார்த்தை பரிந்துரைகள்"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"பரிந்துரைகளை உருவாக்க முந்தைய வார்த்தைகளைப் பயன்படுத்தும்"</string>
+    <string name="gesture_input" msgid="826951152254563827">"சைகை உள்ளீட்டை இயக்கு"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"எழுத்துகள் வழியாக இழுப்பதன் மூலம் வார்த்தையை உள்ளிடலாம்"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"சைகை தடத்தைக் காட்டு"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ஆற்றல்மிகு மிதக்கும் மாதிரிக்காட்சி"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"சைகையிடும் போது பரிந்துரைக்கும் வார்த்தையைப் பார்க்கலாம்"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"சொற்றொடர் சைகை"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ஸ்பேஸ் விசைக்கு இழுப்பதன் மூலம் சைகைகளுக்கு இடையே இடைவெளிகளை உள்ளிடலாம்"</string>
+    <string name="voice_input" msgid="3583258583521397548">"குரல் உள்ளீட்டு விசை"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"குரல் உள்ளீட்டு முறைகள் எதுவும் இயக்கப்படவில்லை. மொழி &amp; உள்ளீட்டு அமைப்புகளைச் சரிபார்க்கவும்."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"உள்ளீட்டு முறைகளை உள்ளமைத்தல்"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"உள்ளீட்டு மொழிகள்"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"கருத்தை அனுப்பு"</string>
+    <string name="select_language" msgid="3693815588777926848">"உள்ளீட்டு மொழிகள்"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"சேமிக்க தொடவும்"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"அகராதி உள்ளது"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"விசைப்பலகை தீம்"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ஆங்கிலம் (யூகே)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ஆங்கிலம் (யூஎஸ்)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"ஸ்பானிஷ் (யூஎஸ்)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ஆங்கிலம் (யூகே) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ஆங்கிலம் (யூஎஸ்) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ஸ்பானிஷ் (யூஎஸ்) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (பாரம்பரியமானது)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (சிரிலிக்)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (இலத்தீன்)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"மொழியில்லை (அகரவரிசை)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"அகரவரிசை (க்வெர்டி)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"அகரவரிசை (க்வெர்ட்ச்)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"அகரவரிசை (எசெர்டி)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"அகரவரிசை (ட்வொராக்)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"அகரவரிசை (கொல்மக்)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"அகரவரிசை (பிசி)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"எமோஜி"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"தனிப்பயன் உள்ளீட்டு நடைகள்"</string>
+    <string name="add_style" msgid="6163126614514489951">"நடையைச் சேர்"</string>
+    <string name="add" msgid="8299699805688017798">"சேர்"</string>
+    <string name="remove" msgid="4486081658752944606">"அகற்று"</string>
+    <string name="save" msgid="7646738597196767214">"சேமி"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"மொழி"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"தளவமைப்பு"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"உங்கள் தனிப்பயன் உள்ளீட்டு நடையை பயன்படுத்த தொடங்கும் முன்பு, அதை இயக்க வேண்டும். அதை இப்போது இயக்க விரும்புகிறீர்களா?"</string>
+    <string name="enable" msgid="5031294444630523247">"இயக்கு"</string>
+    <string name="not_now" msgid="6172462888202790482">"இப்பொழுது வேண்டாம்"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"இதே உள்ளீட்டு நடை ஏற்கனவே உள்ளது: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"விசையின் நீண்ட அழுத்தத்தின் தாமதம்"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"விசையழுத்த அதிர்வின் காலஅளவு"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"விசையழுத்த ஒலியளவு"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"வெளிப்புற அகராதி கோப்பைப் படித்தல்"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"பதிவிறக்கங்கள் கோப்புறையில் அகராதி கோப்புகள் எதுவும் இல்லை"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"நிறுவுவதற்கு அகராதி கோப்பைத் தேர்ந்தெடுக்கவும்"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> மொழிக்கான இந்தக் கோப்பை நிச்சயமாக நிறுவ வேண்டுமா?"</string>
+    <string name="error" msgid="8940763624668513648">"பிழை ஏற்பட்டது"</string>
+    <string name="button_default" msgid="3988017840431881491">"இயல்புநிலை"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாட்டிற்கு வரவேற்கிறோம்"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"சைகை உள்ளீடு மூலம்"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"தொடங்குக"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"அடுத்த கட்டம்"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாட்டை அமைக்கிறது"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாட்டை இயக்கவும்"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"உங்கள் மொழி &amp; உள்ளீட்டு அமைப்புகளில் \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" பயன்பாட்டைச் சரிபார்க்கவும். உங்கள் சாதனத்தில் பயன்பாட்டை இயக்குவதை இது அங்கீகரிக்கும்."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"உங்கள் மொழி &amp; உள்ளீட்டு அமைப்புகளில் <xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாடு ஏற்கனவே இயக்கப்பட்டுவிட்டது, அதனால் இந்தப் படிமுறை முடிந்தது. அடுத்த படிமுறைக்குச் செல்கிறது!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"அமைப்புகளில் இயக்கு"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> க்கு மாறவும்"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"அடுத்து, உங்கள் செயலில் உள்ள உரை உள்ளீட்டு முறையாக \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" பயன்பாட்டைத் தேர்ந்தெடுக்கவும்."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"உள்ளீட்டு முறைகளை மாற்றவும்"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"வாழ்த்துகள், தயாராகிவிட்டீர்கள்!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> பயன்பாடு மூலம் உங்களுக்கு விருப்பமான எல்லா பயன்பாடுகளிலும் நீங்கள் உள்ளிடலாம்."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"கூடுதல் மொழிகளை உள்ளமை"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"முடிந்தது"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"பயன்பாட்டு ஐகானைக் காட்டு"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"துவக்கியில் பயன்பாட்டு ஐகானைக் காட்டும்"</string>
+    <string name="app_name" msgid="6320102637491234792">"அகராதி வழங்கி"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"அகராதி வழங்கி"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"அகராதி சேவை"</string>
+    <string name="download_description" msgid="6014835283119198591">"அகராதியின் புதுப்பிப்பு தகவல்"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"துணை அகராதிகள்"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"அகராதி கிடைக்கிறது"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"அகராதிகளுக்கான அமைப்புகள்"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"பயனர் அகராதிகள்"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"பயனர் அகராதி"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"அகராதி கிடைக்கிறது"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"தற்போது பதிவிறக்குகிறது"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"நிறுவப்பட்டது"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"நிறுவப்பட்டது, முடக்கப்பட்டது"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"அகராதி சேவையில் இணைப்பதில் பிரச்சனை ஏற்பட்டது"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"அகராதிகள் எதுவும் இல்லை"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"புதுப்பி"</string>
+    <string name="last_update" msgid="730467549913588780">"இறுதியாகப் புதுப்பித்தது"</string>
+    <string name="message_updating" msgid="4457761393932375219">"புதுப்பிப்புகளுக்காக சரிபார்கிறது"</string>
+    <string name="message_loading" msgid="5638680861387748936">"ஏற்றுகிறது..."</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"முதன்மை அகராதி"</string>
+    <string name="cancel" msgid="6830980399865683324">"ரத்துசெய்"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"அமைப்புகள்"</string>
+    <string name="install_dict" msgid="180852772562189365">"நிறுவு"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"ரத்துசெய்"</string>
+    <string name="delete_dict" msgid="756853268088330054">"நீக்கு"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"உங்கள் மொபைலில் தேர்ந்தெடுத்த மொழிக்கு அகராதி உள்ளது.&lt;br/&gt; உங்கள் உள்ளீட்டு அனுபவத்தை மேம்படுத்த <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> அகராதியைப்  &lt;b&gt;பதிவிறக்குவதைப்&lt;/b&gt; பரிந்துரைக்கிறோம்.&lt;br/&gt; &lt;br/&gt; 3G இல் பதிவிறக்கத்திற்கு ஒன்று அல்லது இரண்டு நிமிடங்கள் ஆகலாம். உங்களிடம் &lt;b&gt;வரம்பில்லா தரவு திட்டம்&lt;/b&gt; இல்லையெனில் கட்டணம் விதிக்கப்படலாம்.&lt;br/&gt; உங்களிடம் எந்தத் தரவு திட்டம் உள்ளது என்பது உறுதியாகத் தெரியவில்லையெனில், பதிவிறக்கத்தைத் தானாகத் துவங்க, Wi-Fi இணைப்பைக் கண்டறிவதைப் பரிந்துரைக்கிறோம்.&lt;br/&gt; &lt;br/&gt; உதவிக்குறிப்பு: உங்கள் மொபைல் சாதனத்தில் &lt;b&gt;அமைப்புகள்&lt;/b&gt; மெனுவில் உள்ள &lt;b&gt;மொழி &amp; உள்ளீடு&lt;/b&gt; என்பதற்குச் செலவதன் மூலம் அகராதிகளைப் பதிவிறக்கலாம் மற்றும் அகற்றலாம்."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"இப்போது பதிவிறக்கு (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>மெ.பை.)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi வழியாகப் பதிவிறக்கு"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> மொழிக்கு அகராதி கிடைக்கிறது"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"மதிப்பாய்வு செய்து பதிவிறக்க அழுத்தவும்"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"பதிவிறக்குகிறது: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> க்கான பரிந்துரைகள் விரைவில் தயாராகிவிடும்."</string>
+    <string name="version_text" msgid="2715354215568469385">"<xliff:g id="VERSION_NUMBER">%1$s</xliff:g> பதிப்பு"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"சேர்"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"அகராதியில் சேர்"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"சொற்றொடர்"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"மேலும் விருப்பங்கள்"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"குறைவான விருப்பங்கள்"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"சரி"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"வார்த்தை:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"குறுக்குவழி:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"மொழி:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"வார்த்தையை உள்ளிடவும்"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"விருப்பத்திற்குரிய குறுக்குவழி"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"வார்த்தையைத் திருத்து"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"திருத்து"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"நீக்கு"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"பயனர் அகராதியில் உங்களுக்கு எந்த வார்த்தைகளும் இல்லை. சேர் (+) என்ற பொத்தானைத் தொடுவதன் மூலம் வார்த்தையைச் சேர்க்கவும்."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"எல்லா மொழிகளுக்கும்"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"மேலும் மொழிகள்..."</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"நீக்கு"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-te-rIN/strings-action-keys.xml b/java/res/values-te-rIN/strings-action-keys.xml
new file mode 100644
index 0000000..279b7fd
--- /dev/null
+++ b/java/res/values-te-rIN/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"వెళ్లు"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"తదుపరి"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"మునుపటి"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"పూర్తి"</string>
+    <string name="label_send_key" msgid="482252074224462163">"పంపు"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"శోధించు"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"పాజ్ చేయి"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"వేచి ఉ."</string>
+</resources>
diff --git a/java/res/values-te-rIN/strings-appname.xml b/java/res/values-te-rIN/strings-appname.xml
new file mode 100644
index 0000000..c644e5f
--- /dev/null
+++ b/java/res/values-te-rIN/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"Android కీబోర్డ్ (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"Android అక్షరక్రమ తనిఖీ (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"Android కీబోర్డ్ సెట్టింగ్‌లు (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"Android అక్షరక్రమ తనిఖీ సెట్టింగ్‌లు (AOSP)"</string>
+</resources>
diff --git a/java/res/values-te-rIN/strings-config-important-notice.xml b/java/res/values-te-rIN/strings-config-important-notice.xml
new file mode 100644
index 0000000..92ea883
--- /dev/null
+++ b/java/res/values-te-rIN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"సూచనలను మెరుగుపరచడానికి మీ కమ్యూనికేషన్‌లు మరియు టైప్ చేయబడిన డేటా నుండి తెలుసుకోండి"</string>
+</resources>
diff --git a/java/res/values-te-rIN/strings-letter-descriptions.xml b/java/res/values-te-rIN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..a1d0258
--- /dev/null
+++ b/java/res/values-te-rIN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"ఫెమినైన్ ఆర్డినల్ సూచిక"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"సూక్ష్మ గుర్తు"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"మాస్క్యూలిన్ ఆర్డినల్ సూచిక"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"షార్ప్ S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, గ్రేవ్"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, అక్యూట్"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, టిల్డ్"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, డయేరిసిస్"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ఎగువన రింగ్"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, లిగేచర్"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, గ్రేవ్"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, అక్యూట్"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, డయేరిసిస్"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, గ్రేవ్"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, అక్యూట్"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, డయేరిసిస్"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"ఈథ్"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, టిల్డ్"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, గ్రేవ్"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, అక్యూట్"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, టిల్డ్"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, డయేరిసిస్"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, స్ట్రోక్"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, గ్రేవ్"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, అక్యూట్"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, డయేరిసిస్"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, అక్యూట్"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"థార్న్"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, డయేరిసిస్"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, మ్యాక్రాన్"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, బ్రీవ్"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ఒగోనెక్"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, అక్యూట్"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, ఎగువన చుక్క"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, క్యారాన్"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, క్యారాన్"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, స్ట్రోక్"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, మ్యాక్రాన్"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, బ్రీవ్"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, ఎగువన చుక్క"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ఒగోనెక్"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, క్యారాన్"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, బ్రీవ్"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, ఎగువన చుక్క"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, స్ట్రోక్"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, టిల్డ్"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, మ్యాక్రాన్"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, బ్రీవ్"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ఒగోనెక్"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"డాట్‌లెస్ I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, లిగేచర్"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"క్రా"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, అక్యూట్"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, క్యారాన్"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, మధ్యలో చుక్క"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, స్ట్రోక్"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, అక్యూట్"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, క్యారాన్"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, ముందు భాగంలో అపాస్ట్రఫీ"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"ఇంజి"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, మ్యాక్రాన్"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, బ్రీవ్"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, డబుల్ అక్యూట్"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, లిగేచర్"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, అక్యూట్"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, క్యారాన్"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, అక్యూట్"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, క్యారాన్"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, సిడిల్లా"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, క్యారాన్"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, స్ట్రోక్"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, టిల్డ్"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, మ్యాక్రాన్"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, బ్రీవ్"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ఎగువన రింగ్"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, డబుల్ అక్యూట్"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ఒగోనెక్"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, సర్కమ్‌ఫ్లెక్స్"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, అక్యూట్"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, ఎగువన చుక్క"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, క్యారాన్"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"పొడవైన S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, హార్న్"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, హార్న్"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, దిగువన కామా"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, దిగువన కామా"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"ష్వా"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, సర్కమ్‌ఫ్లెక్స్ మరియు అక్యూట్"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, సర్కమ్‌ఫ్లెక్స్ మరియు గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, సర్కమ్‌‌ఫ్లెక్స్ మరియు ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, సర్కమ్‌ఫ్లెక్స్ మరియు టిల్డ్"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, సర్కమ్‌ఫ్లెక్స్ మరియు దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, బ్రీవ్ మరియు అక్యూట్"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, బ్రీవ్ మరియు గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, బ్రీవ్ మరియు ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, బ్రీవ్ మరియు టిల్డ్"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, బ్రీవ్ మరియు దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, ఎగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, టిల్డ్"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, సర్కమ్‌ఫ్లెక్ మరియు అక్యూట్"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, సర్కమ్‌ఫ్లెక్స్ మరియు గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, సర్కమ్‌ఫ్లెక్స్ మరియు ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, సర్కమ్‌ఫ్లెక్స్ మరియు టిల్డ్"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, సర్కమ్‌ఫ్లెక్స్ మరియు దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, సర్కమ్‌ఫ్లెక్స్ మరియు అక్యూట్"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, సర్కమ్‌ఫ్లెక్స్ మరియు గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, సర్కమ్‌ఫ్లెక్స్ మరియు ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, సర్కమ్‌ఫ్లెక్స్ మరియు టిల్డ్"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, సర్కమ్‌ఫ్లెక్స్ మరియు దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, హార్న్ మరియు అక్యూట్"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, హార్న్ మరియు గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, హార్న్ మరియు ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, హార్న్ మరియు టిల్డ్"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, హార్న్ మరియు దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, హార్న్ మరియు అక్యూట్"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, హార్న్ మరియు గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, హార్న్ మరియు ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, హార్న్ మరియు టిల్డ్"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, హార్న్ మరియు దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, గ్రేవ్"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, దిగువన చుక్క"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, ఎగువన హుక్"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, టిల్డ్"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"విలోమ ఆశ్చర్యార్థక గుర్తు"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"ఎడమవైపుకి ఉండే డబుల్ యాంగిల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"మధ్యలో చుక్క"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"సూపర్‌స్క్రిప్ట్ ఒకటి"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"కుడివైపుకి ఉండే డబుల్ యాంగిల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"విలోమ ప్రశార్థక గుర్తు"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"ఎడమవైపు సింగిల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"కుడివైపు సింగిల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"ఒక దిగువ-9 కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"ఎడమవైపు డబుల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"కుడివైపు డబుల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"డ్యాగర్"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"డబుల్ డ్యాగర్"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"ఒక మిల్లేకి గుర్తు"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"ప్రైమ్"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"డబుల్ ప్రైమ్"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"ఒకటి ఎడమవైపుకి ఉండే యాంగిల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"ఒకటి కుడివైపుకి ఉండే యాంగిల్ కొటేషన్ గుర్తు"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"సూపర్‌స్క్రిప్ట్ నాలుగు"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"సూపర్‌స్క్రిప్ట్ లాటిన్ చిన్న అక్షరం n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"పెసో గుర్తు"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"కేరాఫ్"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"కుడివైపుకి ఉండే బాణం"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"దిగువకు ఉండే బాణం"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"శూన్య సమితి"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"వృద్ధి"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"దీని కంటే తక్కువ లేదా దీనికి సమానం"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"దీని కంటే ఎక్కువ లేదా దీనికి సమానం"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"నలుపు రంగు నక్షత్రం"</string>
+</resources>
diff --git a/java/res/values-te-rIN/strings-talkback-descriptions.xml b/java/res/values-te-rIN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..175b13e
--- /dev/null
+++ b/java/res/values-te-rIN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"బిగ్గరగా చదివి వినిపించే పాస్‌వర్డ్ కీలను వినడానికి హెడ్‌సెట్‌ను ప్లగిన్ చేయండి."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"ప్రస్తుత వచనం %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"వచనం ఏదీ నమోదు చేయబడలేదు"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>ని <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>గా సరి చేస్తుంది"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> స్వీయ-సవరణను అమలు చేస్తుంది"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"తెలియని అక్షరం"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"షిప్ట్"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"మరిన్ని గుర్తులు"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"షిప్ట్"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"గుర్తులు"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"షిప్ట్"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"తొలగించు"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"గుర్తులు"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"అక్షరాలు"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"సంఖ్యలు"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"సెట్టింగ్‌లు"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"ట్యాబ్"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"స్పేస్"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"వాయిస్ ఇన్‌పుట్"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"ఎమోజి"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"తిరిగి వెళ్లు"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"శోధించు"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"చుక్క"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"భాషను మార్చండి"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"తదుపరి"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"మునుపటి"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"షిఫ్ట్ ప్రారంభించబడింది"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps lock ప్రారంభించబడింది"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"గుర్తుల మోడ్"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"మరిన్ని గుర్తుల మోడ్"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"అక్షరాల మోడ్"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"ఫోన్ మోడ్"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"ఫోన్ గుర్తుల మోడ్"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"కీబోర్డ్ దాచబడింది"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> కీబోర్డ్‌ను చూపుతోంది"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"తేదీ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"తేదీ మరియు సమయం"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ఇమెయిల్"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"సందేశం"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"సంఖ్య"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ఫోన్"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"వచనం"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"సమయం"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"ఇటీవలివి"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"వ్యక్తులు"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"ఆబ్జెక్ట్‌లు"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ప్రకృతి"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"స్థలాలు"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"గుర్తులు"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ఎమోటికాన్‌లు"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"క్యాపిటల్ <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"క్యాపిటల్ I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"క్యాపిటల్ I, ఎగువన చుక్క"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"తెలియని చిహ్నం"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"తెలియని ఎమోజీ"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"ప్రత్యామ్నాయ అక్షరాలు అందుబాటులో ఉన్నాయి"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"ప్రత్యామ్నాయ అక్షరాలు తీసివేయబడ్డాయి"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ప్రత్యామ్నాయ సూచనలు అందుబాటులో ఉన్నాయి"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"ప్రత్యామ్నాయ సూచనలు తీసివేయబడ్డాయి"</string>
+</resources>
diff --git a/java/res/values-te-rIN/strings.xml b/java/res/values-te-rIN/strings.xml
new file mode 100644
index 0000000..fa46f64
--- /dev/null
+++ b/java/res/values-te-rIN/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"ఇన్‌పుట్ ఎంపికలు"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"పరిచయ పేర్లను వెతకండి"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"అక్షరక్రమ తనిఖీ మీ పరిచయ జాబితా నుండి నమోదులను ఉపయోగిస్తుంది"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"కీని నొక్కినప్పుడు వైబ్రేట్"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"కీని నొక్కినప్పుడు ధ్వని"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"కీని నొక్కినప్పుడు పాప్‌అప్ చూపు"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ఇతర ఇన్‌పుట్ పద్ధతులకు మారండి"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"భాష మార్పు కీ ఇతర ఇన్‌పుట్ పద్ధతులను కూడా కవర్ చేస్తుంది"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"భాష మార్పు కీ"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"బహుళ ఇన్‌పుట్ భాషలు ప్రారంభించబడినప్పుడు చూపు"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"స్లైడ్ సూచికను చూపు"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"Shift లేదా గుర్తు కీల నుండి స్లైడ్ చేసేటప్పుడు దృశ్యమాన సంకేతాన్ని ప్రదర్శించు"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"కీ పాప్‌అప్ తీసివేత ఆలస్యం"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"ఆలస్యం లేదు"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"డిఫాల్ట్"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>మిసె"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"సిస్టమ్ డిఫాల్ట్"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"పరిచయ పేర్లను సూచించు"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"సూచనలు మరియు సవరణల కోసం పరిచయాల నుండి పేర్లను ఉపయోగించు"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"వ్యక్తిగతీకరించబడిన సూచనలు"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ని మెరుగుపరచండి"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"రెండు-అంతరాల చుక్క గుర్తు"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"స్పేస్ బార్‌పై రెండుసార్లు నొక్కడం వలన చుక్క, దాని ప్రక్కన అంతరం చొప్పించబడుతుంది"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"స్వీయ-పెద్ద అక్షరాలు"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"ప్రతి వాక్యంలో మొదటి పదాన్ని పెద్ద అక్షరాలుగా చేయి"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"వ్యక్తిగత నిఘంటువు"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"నిఘంటువులను జోడించు"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"ప్రధాన నిఘంటువు"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"సవరణ సూచనలను చూపు"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"టైప్ చేసేటప్పుడు సూచిత పదాలను ప్రదర్శించు"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"ఎల్లప్పుడూ చూపు"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"పోర్ట్రెయిట్ మోడ్‌లో చూపు"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ఎల్లప్పుడూ దాచు"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"అభ్యంతరకరమైన పదాలను బ్లాక్ చేయి"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"సంభావ్యంగా అభ్యంతరకరమైన పదాలను సూచించవద్దు"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"స్వీయ-సవరణ"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"స్పేస్ బార్ మరియు విరామ చిహ్నాలు తప్పుగా టైప్ చేసిన పదాలను స్వయంచాలకంగా సరి చేస్తాయి"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"ఆఫ్‌ చేయి"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"మధ్యస్థం"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"తీవ్రం"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"చాలా తీవ్రం"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"తదుపరి-పదం సూచనలు"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"సూచనలను రూపొందించడంలో మునుపటి పదాన్ని ఉపయోగించు"</string>
+    <string name="gesture_input" msgid="826951152254563827">"సంజ్ఞ టైపింగ్‌ను ప్రారంభించండి"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"అక్షరాల గుండా స్లైడ్ చేయడం ద్వారా పదాన్ని ఇన్‌పుట్ చేయండి"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"సంజ్ఞ ట్రయిల్‌ను చూపు"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"డైనమిక్ ఫ్లోటింగ్ పరిదృశం"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"సంజ్ఞలు చేసేటప్పుడు సూచిత పదాన్ని చూడండి"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"పదబంధం సంజ్ఞ"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"స్పేస్ కీకి గ్లైడ్ చేయడం ద్వారా సంజ్ఞల సమయంలో అంతరాలను ఇన్‌పుట్ చేయండి"</string>
+    <string name="voice_input" msgid="3583258583521397548">"వాయిస్ ఇన్‌పుట్ కీ"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"వాయిస్ ఇన్‌పుట్ పద్ధతులు ఏవీ ప్రారంభించబడలేదు. భాష &amp; ఇన్‌పుట్ సెట్టింగ్‌లను తనిఖీ చేయండి."</string>
+    <string name="configure_input_method" msgid="373356270290742459">"ఇన్‌పుట్ పద్ధతులను కాన్ఫిగర్ చేయండి"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"ఇన్‌పుట్ భాషలు"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"అభిప్రాయాన్ని పంపండి"</string>
+    <string name="select_language" msgid="3693815588777926848">"ఇన్‌పుట్ భాషలు"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"సేవ్ చేయడానికి మళ్లీ తాకండి"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"నిఘంటువు అందుబాటులో ఉంది"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"కీబోర్డ్ థీమ్"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"ఆంగ్లం (యుకె)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"ఆంగ్లం (యుఎస్)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"స్పానిష్ (యుఎస్)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"ఆంగ్లం (యుకె) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"ఆంగ్లం (యుఎస్) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"స్పానిష్ (యుఎస్) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (సాంప్రదాయకం)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (సిరిలిక్)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (లాటిన్)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"భాష లేదు (ఆల్ఫాబెట్)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"ఆల్ఫాబెట్ (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"ఆల్ఫాబెట్ (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"ఆల్ఫాబెట్ (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"ఆల్ఫాబెట్ (డ్వోరక్)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"ఆల్ఫాబెట్ (కోల్‌మాక్)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"ఆల్ఫాబెట్ (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"ఎమోజి"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"అనుకూల ఇన్‌పుట్ శైలులు"</string>
+    <string name="add_style" msgid="6163126614514489951">"శైలిని జోడించండి"</string>
+    <string name="add" msgid="8299699805688017798">"జోడించండి"</string>
+    <string name="remove" msgid="4486081658752944606">"తీసివేయి"</string>
+    <string name="save" msgid="7646738597196767214">"సేవ్ చేయి"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"భాష"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"లేఅవుట్"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"మీరు మీ అనుకూల ఇన్‌పుట్ శైలిని ఉపయోగించడం ప్రారంభించడానికి ముందు దీన్ని ప్రారంభించాల్సి ఉంటుంది. మీరు ఇప్పుడు దీన్ని ప్రారంభించాలనుకుంటున్నారా?"</string>
+    <string name="enable" msgid="5031294444630523247">"ప్రారంభించండి"</string>
+    <string name="not_now" msgid="6172462888202790482">"ఇప్పుడు కాదు"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ఇదే ఇన్‌పుట్ శైలి ఇప్పటికే ఉంది: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"కీని ఎక్కువసేపు నొక్కి ఉంచాల్సిన సమయంలో ఆలస్యం"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"కీని నొక్కినప్పుడు వైబ్రేషన్ వ్యవధి"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"కీని నొక్కినప్పుడు చేసే ధ్వని వాల్యూమ్"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"బాహ్య నిఘంటువు ఫైల్‌ను చదవండి"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"డౌన్‌లోడ్‌ల ఫోల్డర్‌లో నిఘంటువు ఫైల్‌లు ఏవీ లేవు"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"ఇన్‌స్టాల్ చేయాల్సిన నిఘంటువు ఫైల్‌ను ఎంచుకోండి"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> కోసం ఈ ఫైల్‌ను నిజంగానే ఇన్‌స్టాల్ చేయాలా?"</string>
+    <string name="error" msgid="8940763624668513648">"లోపం ఏర్పడింది"</string>
+    <string name="button_default" msgid="3988017840431881491">"డిఫాల్ట్"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>కు స్వాగతం"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"సంజ్ఞ టైపింగ్‌తో"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"ప్రారంభించండి"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"తదుపరి దశ"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ని సెటప్ చేయడం"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>ని ప్రారంభించండి"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"దయచేసి మీ భాష &amp; ఇన్‌పుట్ సెట్టింగ్‌ల్లో \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\"ని తనిఖీ చేయండి. ఇది మీ పరికరంలో అమలు చేయబడటానికి దీన్ని ప్రామాణీకరిస్తుంది."</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ఇప్పటికే మీ భాష &amp; ఇన్‌పుట్ సెట్టింగ్‌ల్లో ప్రారంభించబడింది, కనుక ఈ దశ పూర్తయింది. తదుపరి దశకు వెళ్లండి!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"సెట్టింగ్‌ల్లో ప్రారంభించండి"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g>కు మారండి"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"తర్వాత, \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\"ని మీ సక్రియ వచన-ఇన్‌పుట్ పద్ధతిగా ఎంచుకోండి."</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"ఇన్‌పుట్ పద్ధతులను మార్చు"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"అభినందనలు, మీరు అంతా పూర్తి చేసారు!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"ఇప్పుడు మీరు <xliff:g id="APPLICATION_NAME">%s</xliff:g>తో మీకు ఇష్టమైన అన్ని అనువర్తనాల్లో టైప్ చేయవచ్చు."</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"అదనపు భాషలను కాన్ఫిగర్ చేయండి"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"పూర్తయింది"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"అనువర్తన చిహ్నాన్ని చూపు"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"లాంచర్‌లో అనువర్తన చిహ్నాన్ని ప్రదర్శించు"</string>
+    <string name="app_name" msgid="6320102637491234792">"నిఘంటువు ప్రదాత"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"నిఘంటువు ప్రదాత"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"నిఘంటువు సేవ"</string>
+    <string name="download_description" msgid="6014835283119198591">"నిఘంటువు నవీకరణ సమాచారం"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"నిఘంటువులను జోడించండి"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"నిఘంటువు అందుబాటులో ఉంది"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"నిఘంటువుల కోసం సెట్టింగ్‌లు"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"వినియోగదారు నిఘంటువులు"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"వినియోగదారు నిఘంటువు"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"నిఘంటువు అందుబాటులో ఉంది"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"ప్రస్తుతం డౌన్‌లోడ్ చేస్తోంది"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"ఇన్‌స్టాల్ చేయబడింది"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"ఇన్‌స్టాల్ చేయబడింది, నిలిపివేయబడింది"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"నిఘంటువు సేవకు కనెక్ట్ చేయడంలో సమస్య"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"నిఘంటువులు ఏవీ అందుబాటులో లేవు"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"రీఫ్రెష్ చేయండి"</string>
+    <string name="last_update" msgid="730467549913588780">"చివరిగా నవీకరించబడినది"</string>
+    <string name="message_updating" msgid="4457761393932375219">"నవీకరణల కోసం తనిఖీ చేస్తోంది"</string>
+    <string name="message_loading" msgid="5638680861387748936">"లోడ్ చేస్తోంది…"</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"ప్రధాన నిఘంటువు"</string>
+    <string name="cancel" msgid="6830980399865683324">"రద్దు చేయి"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"సెట్టింగ్‌లు"</string>
+    <string name="install_dict" msgid="180852772562189365">"ఇన్‌స్టాల్ చేయి"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"రద్దు చేయి"</string>
+    <string name="delete_dict" msgid="756853268088330054">"తొలగించు"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"మీ మొబైల్ పరికరంలో ఎంచుకున్న భాషకు నిఘంటువు అందుబాటులో ఉంది.&lt;br/&gt; మీ టైపింగ్ అనుభవాన్ని మెరుగుపరచుకోవడానికి <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> నిఘంటువుని &lt;b&gt;డౌన్‌లోడ్ చేయాల్సిందిగా&lt;/b&gt; మేము సిఫార్సు చేస్తున్నాము.&lt;br/&gt; &lt;br/&gt; డౌన్‌లోడ్ చేయడానికి 3Gలో ఒకటి లేదా రెండు నిమిషాలు పట్టవచ్చు. మీకు &lt;b&gt;అపరిమిత డేటా ప్లాన్&lt;/b&gt; లేకపోతే, ఛార్జీలు వర్తించవచ్చు.&lt;br/&gt; మీరు ఏ డేటా ప్లాన్‌ను కలిగి ఉన్నారనే విషయం సరిగ్గా తెలియకపోతే, డౌన్‌లోడ్‌ను స్వయంచాలకంగా ప్రారంభించడానికి Wi-Fi కనెక్షన్‌ను కనుగొనాల్సిందిగా మేము సిఫార్సు చేస్తున్నాము.&lt;br/&gt; &lt;br/&gt; చిట్కా: మీరు మీ మొబైల్ పరికరం యొక్క &lt;b&gt;సెట్టింగ్‌‌లు&lt;/b&gt; మెనులో &lt;b&gt;భాష &amp; ఇన్‌పుట్&lt;/b&gt;కి వెళ్లడం ద్వారా నిఘంటువులను డౌన్‌లోడ్ చేయవచ్చు మరియు తీసివేయవచ్చు."</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"ఇప్పుడే డౌన్‌లోడ్ చేయండి (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"Wi-Fi ద్వారా డౌన్‌లోడ్ చేయండి"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> కోసం నిఘంటువు అందుబాటులో ఉంది"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"సమీక్షించి, డౌన్‌లోడ్ చేయడానికి నొక్కండి"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"డౌన్‌లోడ్ చేస్తోంది: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> కోసం సూచనలు త్వరలో సిద్ధం చేయబడతాయి."</string>
+    <string name="version_text" msgid="2715354215568469385">"సంస్కరణ <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"జోడించు"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"నిఘంటువుకి జోడించు"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"పదబంధం"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"మరిన్ని ఎంపికలు"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"తక్కువ ఎంపికలు"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"సరే"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"పదం:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"సత్వరమార్గం:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"భాష:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"పదాన్ని టైప్ చేయి"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ఐచ్ఛిక సత్వరమార్గం"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"పదాన్ని సవరించు"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"సవరించు"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"తొలగించు"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"మీరు వినియోగదారు నిఘంటువులో పదాలు ఏవీ కలిగి లేరు. జోడించు (+) బటన్‌ను తాకడం ద్వారా పదాన్ని జోడించండి."</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"అన్ని భాషల కోసం"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"మరిన్ని భాషలు…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"తొలగించు"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-th/donottranslate.xml b/java/res/values-th/donottranslate-config-spacing-and-punctuations.xml
similarity index 100%
rename from java/res/values-th/donottranslate.xml
rename to java/res/values-th/donottranslate-config-spacing-and-punctuations.xml
diff --git a/java/res/values-th/strings-action-keys.xml b/java/res/values-th/strings-action-keys.xml
index f23bfbc..1e828a1 100644
--- a/java/res/values-th/strings-action-keys.xml
+++ b/java/res/values-th/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"ก่อน"</string>
     <string name="label_done_key" msgid="7564866296502630852">"เสร็จ"</string>
     <string name="label_send_key" msgid="482252074224462163">"ส่ง"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"ค้นหา"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"หยุด"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"รอ"</string>
 </resources>
diff --git a/java/res/values-th/strings-appname.xml b/java/res/values-th/strings-appname.xml
index af6d1a9..0419368 100644
--- a/java/res/values-th/strings-appname.xml
+++ b/java/res/values-th/strings-appname.xml
@@ -20,8 +20,8 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="english_ime_name" msgid="5940510615957428904">"แป้นพิมพ์แอนดรอยด์ (AOSP)"</string>
-    <string name="spell_checker_service_name" msgid="1254221805440242662">"เครื่องตรวจตัวสะกดแอนดรอยด์ (AOSP)"</string>
-    <string name="english_ime_settings" msgid="5760361067176802794">"การตั้งค่าแป้นพิมพ์แอนดรอยด์ (AOSP)"</string>
-    <string name="android_spell_checker_settings" msgid="6123949487832861885">"การตั้งค่าเครื่องตรวจตัวสะกดแอนดรอยด์ (AOSP)"</string>
+    <string name="english_ime_name" msgid="5940510615957428904">"แป้นพิมพ์ Android (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"เครื่องตรวจตัวสะกด Android (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"การตั้งค่าแป้นพิมพ์ Android (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"การตั้งค่าเครื่องตรวจตัวสะกด Android (AOSP)"</string>
 </resources>
diff --git a/java/res/values-th/strings-config-important-notice.xml b/java/res/values-th/strings-config-important-notice.xml
new file mode 100644
index 0000000..3f0b603
--- /dev/null
+++ b/java/res/values-th/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"เรียนรู้จากการสื่อสารและข้อมูลที่พิมพ์ของคุณเพื่อปรับปรุงคำแนะนำ"</string>
+</resources>
diff --git a/java/res/values-th/strings-letter-descriptions.xml b/java/res/values-th/strings-letter-descriptions.xml
new file mode 100644
index 0000000..84b9b2d
--- /dev/null
+++ b/java/res/values-th/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"เครื่องหมายกำกับเลขลำดับนามเพศหญิง"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"สัญลักษณ์ไมโคร"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"เครื่องหมายกำกับเลขลำดับนามเพศชาย"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"S ชาร์ป"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A เติมเกรฟ"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A เติมทิลเดอ"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A เติมไดเอเรซิส"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A เติมริงด้านบน"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"อักษรรวม A กับ E"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E เติมเกรฟ"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E เติมไดเอเรซิส"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I เติมเกรฟ"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I เติมไดเอเรซิส"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N เติมทิลเดอ"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O เติมเกรฟ"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O เติมทิลเดอ"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O เติมไดเอเรซิส"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O เติมสโตรก"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U เติมเกรฟ"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U เติมไดเอเรซิส"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"ธอร์น"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y เติมไดเอเรซิส"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A เติมแมครอน"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A เติมบรีฟ"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A เติมออกอแนก"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C เติมจุดด้านบน"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C เติมแครอน"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D เติมแครอน"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D เติมสโตรก"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"อี เติมแมครอน"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"อี เติมบรีฟ"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E เติมจุดด้านบน"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E เติมออกอแนก"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E เติมแครอน"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G เติมบรีฟ"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G เติมจุดด้านบน"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H เติมสโตรก"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I เติมทิลเดอ"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I เติมแมครอน"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I เติมบรีฟ"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I เติมออกอแนก"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I ไม่มีจุด"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"อักษรรวม I กับ J"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L เติมแครอน"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L เติมจุดตรงกลาง"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L เติมสโตรก"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N เติมแครอน"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N นำหน้าด้วยเครื่องหมายอะพอสทรอฟี"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O เติมแมครอน"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O เติมบรีฟ"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O เติมอะคิวต์คู่"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"อักษรรวม O กับ E"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R เติมแครอน"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S เติมแครอน"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T เติมซิดิลลา"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T เติมแครอน"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T เติมสโตรก"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U เติมทิลเดอ"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U เติมแมครอน"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U เติมบรีฟ"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U เติมริงด้านบน"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U เติมอะคิวต์คู่"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U เติมออกอแนก"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y เติมเซอร์คัมเฟลกซ์"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z เติมอะคิวต์"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z เติมจุดด้านบน"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z เติมแครอน"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S ยาว"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O เติมฮอร์น"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U เติมฮอร์น"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S เติมจุลภาคด้านล่าง"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T เติมจุลภาคด้านล่าง"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"ชวา"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A เติมจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A เติมฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A เติมเซอร์คัมเฟลกซ์และอะคิวต์"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A เติมเซอร์คัมเฟลกซ์และเกรฟ"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A เติมเซอร์คัมเฟลกซ์และฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A เติมเซอร์คัมเฟลกซ์และทิลเดอ"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A เติมเซอร์คัมเฟลกซ์และจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"B เติมบรีฟและเกรฟ"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A เติมบรีฟและเกรฟ"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A เติมบรีฟและฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A เติมบรีฟและทิลเดอ"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A เติมบรีฟและจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E เติมจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E เติมฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E เติมทิลเดอ"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E เติมเซอร์คัมเฟลกซ์และอะคิวต์"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E เติมเซอร์คัมเฟลกซ์และเกรฟ"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E เติมเซอร์คัมเฟลกซ์และฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E เติมเซอร์คัมเฟลกซ์และทิลเดอ"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E เติมเซอร์คัมเฟลกซ์และจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I เติมฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I เติมจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O เติมจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O เติมฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O เติมเซอร์คัมเฟลกซ์และอะคิวต์"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O เติมเซอร์คัมเฟลกซ์และเกรฟ"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O เติมเซอร์คัมเฟลกซ์และฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O เติมเซอร์คัมเฟลกซ์และทิลเดอ"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O เติมเซอร์คัมเฟลกซ์และจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O เติมฮอร์นและอะคิวต์"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O เติมฮอร์นและเกรฟ"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O เติมฮอร์นและฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O เติมฮอร์นและทิวเดอ"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O เติมฮอร์นและจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U เติมจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U เติมฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U เติมฮอร์นและอะคิวต์"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U เติมฮอร์นและเกรฟ"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U เติมฮอร์นและฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U เติมฮอร์นและทิลเดอ"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U เติมฮอร์นและจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y เติมเกรฟ"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y เติมจุดด้านล่าง"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y เติมฮุกด้านบน"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y เติมทิลเดอ"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"เครื่องหมายอัศเจรีย์คว่ำ"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"เครื่องหมายคำพูดสองขีดชี้ไปทางด้านซ้าย"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"จุดตรงกลาง"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"เลขหนึ่งแบบตัวยก"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"เครื่องหมายคำพูดสองขีดชี้ไปทางด้านขวา"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"เครื่องหมายคำถามคว่ำ"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"เครื่องหมายคำพูดขีดเดียวทางด้านซ้าย"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"เครื่องหมายคำพูดขีดเดียวทางด้านขวา"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"เครื่องหมายคำพูดเลขเก้าต่ำขีดเดียว"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"เครื่องหมายคำพูดสองขีดทางด้านซ้าย"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"เครื่องหมายคำพูดสองขีดทางด้านขวา"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"เครื่องหมายกริช"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"เครื่องหมายกริชคู่"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"สัญลักษณ์พันละ"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"สัญลักษณ์ไพร์ม"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"สัญลักษณ์ไพร์มคู่"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"เครื่องหมายคำพูดขีดเดียวชี้ไปทางด้านซ้าย"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"เครื่องหมายคำพูดขีดเดียวชี้ไปทางด้านขวา"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"เลขสี่แบบตัวยก"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"อักษรละติน n เล็กแบบตัวยก"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"สัญลักษณ์เปโซ"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"ลูกศรชี้ไปทางขวา"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"ลูกศรชี้ลง"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"เซตว่าง"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"การเพิ่ม"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"น้อยกว่าหรือเท่ากับ"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"มากกว่าหรือเท่ากับ"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"ดาวสีดำ"</string>
+</resources>
diff --git a/java/res/values-th/strings-talkback-descriptions.xml b/java/res/values-th/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..5d70d71
--- /dev/null
+++ b/java/res/values-th/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"เสียบชุดหูฟังเพื่อฟังเสียงเมื่อพิมพ์รหัสผ่าน"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"ข้อความปัจจุบันคือ %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"ไม่มีข้อความ"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> แก้ไข <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> เป็น <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> ทำการแก้ไขอัตโนมัติ"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"อักขระที่ไม่รู้จัก"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"สัญลักษณ์เพิ่มเติม"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"สัญลักษณ์"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"นำออก"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"สัญลักษณ์"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"ตัวอักษร"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"หมายเลข"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"การตั้งค่า"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"แท็บ"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"วรรค"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"การป้อนข้อมูลด้วยเสียง"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"อีโมจิ"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"ส่งคืน"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"ค้นหา"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"จุด"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"เปลี่ยนภาษา"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"ถัดไป"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"ก่อนหน้า"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"เปิดใช้งาน Shift แล้ว"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"เปิดใช้งาน Caps Lock แล้ว"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"โหมดสัญลักษณ์"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"โหมดสัญลักษณ์เพิ่มเติม"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"โหมดตัวอักษร"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"โหมดโทรศัพท์"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"โหมดสัญลักษณ์โทรศัพท์"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"ซ่อนแป้นพิมพ์แล้ว"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"กำลังแสดงแป้นพิมพ์ <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"วันที่"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"วันที่และเวลา"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"อีเมล"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"ข้อความ"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"หมายเลข"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"โทรศัพท์"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"ข้อความ"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"เวลา"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"ล่าสุด"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"ผู้คน"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"วัตถุ"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"ธรรมชาติ"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"สถานที่"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"สัญลักษณ์"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"ไอคอนสื่ออารมณ์"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> ตัวใหญ่"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I ตัวใหญ่"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I ตัวใหญ่เติมจุดด้านบน"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"สัญลักษณ์ที่ไม่รู้จัก"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"อีโมจิที่ไม่รู้จัก"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"อักขระทางเลือกพร้อมใช้งาน"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"ปิดอักขระทางเลือกแล้ว"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"ข้อเสนอแนะทางเลือกพร้อมใช้งาน"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"ปิดข้อเสนอแนะทางเลือกแล้ว"</string>
+</resources>
diff --git a/java/res/values-th/strings.xml b/java/res/values-th/strings.xml
index 9249c05..43391a5 100644
--- a/java/res/values-th/strings.xml
+++ b/java/res/values-th/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"ตัวเลือกการป้อนข้อมูล"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"คำสั่งบันทึกการวิจัย"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"ค้นหารายชื่อติดต่อ"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"เครื่องมือตรวจการสะกดใช้รายการจากรายชื่อติดต่อของคุณ"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"สั่นเมื่อกดปุ่ม"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"ส่งเสียงเมื่อกดปุ่ม"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"ป๊อปอัปเมื่อกดแป้น"</string>
-    <string name="general_category" msgid="1859088467017573195">"ทั่วไป"</string>
-    <string name="correction_category" msgid="2236750915056607613">"การแก้ไขข้อความ"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"การพิมพ์ด้วยท่าทางสัมผัส"</string>
-    <string name="misc_category" msgid="6894192814868233453">"ตัวเลือกอื่นๆ"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"การตั้งค่าขั้นสูง"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"ตัวเลือกสำหรับผู้เชี่ยวชาญ"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"ใช้วิธีการป้อนข้อมูลอื่น"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"แป้นสลับภาษาครอบคลุมวิธีการป้อนข้อมูลอื่นๆ ด้วย"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"แป้นสลับภาษา"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"ค่าเริ่มต้นของระบบ"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"แนะนำชื่อผู้ติดต่อ"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"ใช้ชื่อจากรายชื่อติดต่อสำหรับคำแนะนำและการแก้ไข"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"คำแนะนำในแบบของคุณ"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"ปรับปรุง <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"แตะ Space สองครั้งแทรกจุด"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"แตะ Spacebar สองครั้งจะแทรกจุดตามด้วยช่องว่างหนึ่งช่อง"</string>
     <string name="auto_cap" msgid="1719746674854628252">"ปรับเป็นตัวพิมพ์ใหญ่อัตโนมัติ"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"แสดงรอยทางเดินของท่าทางสัมผัส"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ดูตัวอย่างลอยแบบไดนามิก"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"ดูคำแนะนำในขณะที่ใช้ท่าทางสัมผัส"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : บันทึกแล้ว"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"เสียบชุดหูฟังเพื่อฟังเสียงเมื่อพิมพ์รหัสผ่าน"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"ข้อความปัจจุบันคือ %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"ไม่มีข้อความ"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> แก้ไข <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> เป็น <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> ทำการแก้ไขอัตโนมัติ"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"รหัสคีย์ %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift เปิดอยู่ (แตะเพื่อปิดใช้งาน)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock เปิดอยู่ (แตะเพื่อปิดใช้งาน)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"ลบ"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"สัญลักษณ์"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"ตัวอักษร"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"หมายเลข"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"การตั้งค่า"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"แท็บ"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Space"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"การป้อนข้อมูลด้วยเสียง"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"หน้ายิ้ม"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"ค้นหา"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"เครื่องหมายจุด"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"เปลี่ยนภาษา"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"ถัดไป"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"ก่อนหน้า"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"เปิดใช้งาน Shift แล้ว"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"เปิดใช้งาน Caps Lock แล้ว"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"ปิดใช้งาน Shift แล้ว"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"โหมดสัญลักษณ์"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"โหมดตัวอักษร"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"โหมดโทรศัพท์"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"โหมดสัญลักษณ์โทรศัพท์"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"ซ่อนแป้นพิมพ์แล้ว"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"กำลังแสดงแป้นพิมพ์ <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"วันที่"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"วันที่และเวลา"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"อีเมล"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"ข้อความ"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"หมายเลข"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"โทรศัพท์"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"ข้อความ"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"เวลา"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"ท่าทางสัมผัสสำหรับวลี"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"ใส่ช่องว่างระหว่างท่าทางสัมผัสโดยเลื่อนไปยังแป้นเคาะวรรค"</string>
     <string name="voice_input" msgid="3583258583521397548">"แป้นการป้อนข้อมูลด้วยเสียง"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"บนแป้นพิมพ์หลัก"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"บนแป้นพิมพ์สัญลักษณ์"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"ปิด"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"ไมค์บนแป้นพิมพ์หลัก"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"ไมค์บนแป้นพิมพ์สัญลักษณ์"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"ปิดใช้งานป้อนข้อมูลด้วยเสียง"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"ไม่ได้เปิดใช้วิธีการป้อนข้อมูลด้วยเสียง ตรวจสอบภาษาและการตั้งค่าการป้อนข้อมูล"</string>
     <string name="configure_input_method" msgid="373356270290742459">"กำหนดค่าวิธีการป้อนข้อมูล"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"ภาษาในการป้อนข้อมูล"</string>
     <string name="send_feedback" msgid="1780431884109392046">"ส่งข้อเสนอแนะ"</string>
     <string name="select_language" msgid="3693815588777926848">"ภาษาสำหรับการป้อนข้อมูล"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"แตะอีกครั้งเพื่อบัน​​ทึก"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"มีพจนานุกรมให้ใช้งาน"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"เปิดใช้งานการแสดงความคิดเห็นจากผู้ใช้"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"ช่วยปรับปรุงตัวแก้ไขวิธีการป้อนข้อมูลนี้โดยการส่งสถิติการใช้งานและรายงานการขัดข้องโดยอัตโนมัติ"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"ชุดรูปแบบแป้นพิมพ์"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"อังกฤษ (สหราชอาณาจักร)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"อังกฤษ (อเมริกัน)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"สเปน (สหรัฐอเมริกา)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"อังกฤษ (สหราชอาณาจักร) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"อังกฤษ (สหรัฐอเมริกา) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"สเปน (สหรัฐอเมริกา) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (ดั้งเดิม)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"อังกฤษ (สหราชอาณาจักร) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"อังกฤษ (สหรัฐอเมริกา) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"สเปน (สหรัฐอเมริกา) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ดั้งเดิม)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ซีริลลิก)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (ละติน)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"ไม่มีภาษา (ตัวอักษรละติน)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"ตัวอักษร (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"ตัวอักษร (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"ตัวอักษร (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"ตัวอักษร (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"อีโมจิ"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"รูปแบบสี"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"ขาว"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"น้ำเงิน"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"รูปแบบอินพุตกำหนดเอง"</string>
     <string name="add_style" msgid="6163126614514489951">"เพิ่มสไตล์"</string>
     <string name="add" msgid="8299699805688017798">"เพิ่ม"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"เปิดใช้งาน"</string>
     <string name="not_now" msgid="6172462888202790482">"ข้ามไปก่อน"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"รูปแบบการป้อนข้อมูลเดียวกันนี้มีอยู่แล้ว: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"โหมดศึกษาประโยชน์ในการใช้งาน"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"การหน่วงเวลาของการกดแป้นค้าง"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"ระยะเวลาการสั่นเมื่อกดแป้นพิมพ์"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"ระดับเสียงเมื่อกดแป้นพิมพ์"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"อ่านไฟล์พจนานุกรมภายนอก"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ไม่มีไฟล์พจนานุกรมในโฟลเดอร์ดาวน์โหลด"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"เลือกไฟล์พจนานุกรมที่จะติดตั้ง"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"ติดตั้งไฟล์นี้สำหรับ <xliff:g id="LOCALE_NAME">%s</xliff:g> จริงๆ หรือ"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"ต้องการติดตั้งไฟล์นี้สำหรับ <xliff:g id="LANGUAGE_NAME">%s</xliff:g> จริงหรือ"</string>
     <string name="error" msgid="8940763624668513648">"เกิดข้อผิดพลาด"</string>
     <string name="button_default" msgid="3988017840431881491">"ค่าเริ่มต้น"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"ยินดีต้อนรับสู่ <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"รีเฟรช"</string>
     <string name="last_update" msgid="730467549913588780">"ปรับปรุงแก้ไขครั้งล่าสุด"</string>
     <string name="message_updating" msgid="4457761393932375219">"กำลังตรวจสอบการอัปเดต"</string>
-    <string name="message_loading" msgid="8689096636874758814">"กำลังโหลด..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"กำลังโหลด…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"พจนานุกรมหลัก"</string>
     <string name="cancel" msgid="6830980399865683324">"ยกเลิก"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"การตั้งค่า"</string>
     <string name="install_dict" msgid="180852772562189365">"ติดตั้ง"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"ยกเลิก"</string>
-    <string name="delete_dict" msgid="756853268088330054">"ลบ"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"ภาษาที่คุณเลือกใช้ในอุปกรณ์เคลื่อนที่มีพจนานุกรมที่สามารถใช้ได้&lt;br/&gt; เราขอแนะนำให้คุณ &lt;b&gt;ดาวน์โหลด&lt;/b&gt; พจนานุกรม <xliff:g id="LANGUAGE">%1$s</xliff:g> เพื่อรับประสบการณ์การพิมพ์ที่ดียิ่งขึ้น&lt;br/&gt; &lt;br/&gt;การดาวน์โหลดจะใช้เวลาหนึ่งถึงสองนาทีผ่านทาง 3G ซึ่งอาจมีการเรียกเก็บเงินหากคุณไม่ได้ใช้ &lt;b&gt;แผนบริการข้อมูลแบบไม่จำกัดปริมาณ&lt;/b&gt; &lt;br/&gt;หากคุณไม่แน่ใจว่าคุณใช้แผนบริการข้อมูลแบบใด เราขอแนะนำให้คุณเชื่อมต่อ WiFi เพื่อเริ่มการดาวน์โหลดอัตโนมัติ&lt;br/&gt; &lt;br/&gt;เคล็ดลับ: คุณสามารถดาวน์โหลดและนำพจนานุกรมออกได้โดยไปที่ &lt;b&gt;ภาษาและการป้อนข้อมูล&lt;/b&gt; ในเมนู &lt;b&gt;การตั้งค่า&lt;/b&gt; ในอุปกรณ์เคลื่อนที่ของคุณ"</string>
+    <string name="delete_dict" msgid="756853268088330054">"นำออก"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"ภาษาที่คุณเลือกในอุปกรณ์เคลื่อนที่มีพจนานุกรมที่สามารถใช้ได้&lt;br/&gt; เราขอแนะนำให้คุณ &lt;b&gt;ดาวน์โหลด&lt;/b&gt; พจนานุกรม <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> เพื่อรับประสบการณ์การพิมพ์ที่ดียิ่งขึ้น&lt;br/&gt; &lt;br/&gt; การดาวน์โหลดอาจใช้เวลาหนึ่งถึงสองนาทีผ่านทาง 3G ซึ่งอาจมีการเรียกเก็บเงินหากคุณไม่ได้ใช้ &lt;b&gt;แผนบริการข้อมูลแบบไม่จำกัดปริมาณ&lt;/b&gt;.&lt;br/&gt; หากไม่แน่ใจว่าใช้แผนบริการข้อมูลแบบใด เราขอแนะนำให้คุณเชื่อมต่อ Wi-Fi เพื่อเริ่มการดาวน์โหลดอัตโนมัติ&lt;br/&gt; &lt;br/&gt; เคล็ดลับ: คุณสามารถดาวน์โหลดและนำออกพจนานุกรมออกได้โดยไปที่ &lt;b&gt;ภาษาและการป้อนข้อมูล&lt;/b&gt; ในเมนู &lt;b&gt;การตั้งค่า&lt;/b&gt; ในอุปกรณ์เคลื่อนที่ของคุณ"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"ดาวน์โหลดเลย (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"ดาวน์โหลดผ่าน WiFi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"มีพจนานุกรมให้ใช้งานในภาษา <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"มีพจนานุกรมให้ใช้งานสำหรับ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"กดเพื่อตรวจสอบและดาวน์โหลด"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"กำลังดาวน์โหลด: คำแนะนำสำหรับ <xliff:g id="LANGUAGE">%1$s</xliff:g> จะพร้อมใช้งานเร็วๆ นี้"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"กำลังดาวน์โหลด: คำแนะนำสำหรับ <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> จะพร้อมใช้งานเร็วๆ นี้"</string>
     <string name="version_text" msgid="2715354215568469385">"เวอร์ชัน <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"เพิ่ม"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"เพิ่มในพจนานุกรม"</string>
@@ -233,10 +201,10 @@
     <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"ทางลัดที่ไม่บังคับ"</string>
     <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"แก้ไขคำ"</string>
     <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"แก้ไข"</string>
-    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"ลบ"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"นำออก"</string>
     <string name="user_dict_settings_empty_text" msgid="558499587532668203">"คุณไม่มีคำในพจนานุกรมผู้ใช้เลย เพิ่มคำโดยแตะปุ่มเพิ่ม (+)"</string>
     <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"สำหรับทุกภาษา"</string>
     <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"ภาษาเพิ่มเติม…"</string>
-    <string name="user_dict_settings_delete" msgid="110413335187193859">"ลบ"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"นำออก"</string>
     <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
 </resources>
diff --git a/java/res/values-tl/strings-action-keys.xml b/java/res/values-tl/strings-action-keys.xml
index a7f4cc7..9f24f5d 100644
--- a/java/res/values-tl/strings-action-keys.xml
+++ b/java/res/values-tl/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Nauna"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Tapos"</string>
     <string name="label_send_key" msgid="482252074224462163">"Send"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Maghanap"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Pause"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Intay"</string>
 </resources>
diff --git a/java/res/values-tl/strings-config-important-notice.xml b/java/res/values-tl/strings-config-important-notice.xml
new file mode 100644
index 0000000..d8dd919
--- /dev/null
+++ b/java/res/values-tl/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Pahusayin ang suhestiyon batay sa iyong pag-uusap at na-type na data"</string>
+</resources>
diff --git a/java/res/values-tl/strings-letter-descriptions.xml b/java/res/values-tl/strings-letter-descriptions.xml
new file mode 100644
index 0000000..3f8b93b
--- /dev/null
+++ b/java/res/values-tl/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Feminine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Simbolo ng micro"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Masculine ordinal indicator"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring sa itaas"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, tuldok sa itaas"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, tuldok sa itaas"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, tuldok sa itaas"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Walang tuldok na I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, gitnang tuldok"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, may kudlit sa unahan"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, ring sa itaas"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, tuldok sa itaas"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, kuwit sa ibaba"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, kuwit sa ibaba"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex at acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex at grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex at hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex at tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex at tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve at acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve at grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve at hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve at tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve at tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex at acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex at grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex at hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex at tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex at tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, hook sa itaas"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, hook sa itaas"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex at acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex at grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex at hook sa itaas"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex at tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex at tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn at acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn at grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn at hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn at tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn at tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn at acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn at grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn at hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn at tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn at tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, tuldok sa ibaba"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, hook sa itaas"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Nakabaligtad na exclamation mark"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Paniping nakaturo sa kaliwa at may double angle"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Gitnang tuldok"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Superscript one"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Paniping nakaturo sa kanan at may double angle"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Nakabaligtad na question mark"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Isang kaliwang panipi"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Isang kanang panipi"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Isang low-9 na panipi"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Dobleng kaliwang panipi"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Dobleng kanang panipi"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Simbolong per mille"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Isang angle na paniping nakaturo sa kaliwa"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Isang angle na paniping nakaturo sa kanan"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript four"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Superscript latin maliit na titik n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Simbolo ng peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Care of"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Pakanang arrow"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pababang arrow"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Empty set"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Increment"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Less-than or equal to"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Greater-than or equal to"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Black star"</string>
+</resources>
diff --git a/java/res/values-tl/strings-talkback-descriptions.xml b/java/res/values-tl/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..f601ad4
--- /dev/null
+++ b/java/res/values-tl/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Mag-plug in ng headset upang marinig ang mga password key na binabanggit nang malakas."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Ang kasalukuyang teksto ay %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Walang tekstong inilagay"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"Itinatama ng <xliff:g id="KEY_NAME">%1$s</xliff:g> ang <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> sa <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"Nagsasagawa ang <xliff:g id="KEY_NAME">%1$s</xliff:g> ng auto-correction"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Hindi alam na character"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Marami pang simbolo"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Mga Simbolo"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Tanggalin"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Mga Simbolo"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Mga Titik"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Mga Numero"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Mga Setting"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Space"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Input ng boses"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Bumalik"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Maghanap"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Tuldok"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Magpalit ng wika"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Sunod"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Nauna"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Naka-enable ang shift"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Naka-enable ang caps lock"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Symbols mode"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Mode na marami pang simbolo"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Letters mode"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Phone mode"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Phone symbols mode"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Nakatago ang keyboard"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Ipinapakita ang keyboard na <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"petsa"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"petsa at oras"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"pagmemensahe"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"numero"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telepono"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"teksto"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"oras"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Mga Kamakailang Ginamit"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Mga Tao"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Mga Bagay"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Kalikasan"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Mga Lugar"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Mga Simbolo"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Mga Emoticon"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Capital <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Capital I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Capital I, tuldok sa itaas"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Hindi alam na simbolo"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Hindi alam na emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Available ang mga alternatibong character"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Dini-dismiss ang mga alternatibong character"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Available ang mga alternatibong suhestyon"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Dini-dismiss ang mga alternatibong suhestyon"</string>
+</resources>
diff --git a/java/res/values-tl/strings.xml b/java/res/values-tl/strings.xml
index df6bda0..8282678 100644
--- a/java/res/values-tl/strings.xml
+++ b/java/res/values-tl/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Mga pagpipilian sa input"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Cmmnd sa Log ng Pnnliksik"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Maghanap pangalan contact"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Gumagamit ang Spell Checker ng entries mula sa iyong contact list."</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Mag-vibrate sa keypress"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Tumunog sa keypress"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Mag-popup sa keypress"</string>
-    <string name="general_category" msgid="1859088467017573195">"Pangkalahatan"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Pagwawasto ng teksto"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Gesture na pag-type"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Iba pang mga pagpipilian"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Mga advanced na setting"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Mga pagpipilian para sa mga dalubhasa"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Lipat iba paraan ng input"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Saklaw din ng key ng pagpalit ng wika ang ibang paraan ng input"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Key ng panlipat ng wika"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Default ng system"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Mungkahi pangalan Contact"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Gamitin pangalan mula Mga Contact sa mga mungkahi\'t pagwawasto"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Personalized suggestions"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Pahusayin ang <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Double-space period"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Naglalagay ng tuldok na may puwang ang pag-double tap sa spacebar"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Auto-capitalization"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Ipakita ang trail ng galaw"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dynamic na floating preview"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Tingnan ang iminungkahing salita habang gumagalaw"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Na-save"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Mag-plug in ng headset upang marinig ang mga password key na binabanggit nang malakas."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Ang kasalukuyang teksto ay %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Walang tekstong inilagay"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"Itatama at gagawing <xliff:g id="CORRECTED">%3$s</xliff:g> ng <xliff:g id="KEY">%1$s</xliff:g> ang <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"Magsasagawa ng auto-correction ang <xliff:g id="KEY">%1$s</xliff:g>"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Code ng key %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Naka-on ang shift (i-tap upang huwag paganahin)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Naka-on ang caps lock (i-tap upang huwag paganahin)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Tanggalin"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Mga Simbolo"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Mga Titik"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Mga Numero"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Mga Setting"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Puwang"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Input ng boses"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Smiley na mukha"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Bumalik"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Paghahanap"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Tuldok"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Magpalit ng wika"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Susunod"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Nakaraan"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Pinagana ang shift"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Pinagana ang caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Hindi pinagana ang shift"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Mode ng mga simbolo"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Mode ng mga titik"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Mode ng telepono"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Mode ng mga simbolo ng telepono"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Nakatago ang keyboard"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Ipinapakita ang <xliff:g id="MODE">%s</xliff:g> keyboard"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"petsa"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"petsa at oras"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"pagmemensahe"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"numero"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telepono"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"teksto"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"oras"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Phrase gesture"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Maglagay ng espasyo sa pamamagitan ng pag-glide sa space key"</string>
     <string name="voice_input" msgid="3583258583521397548">"Voice input key"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Sa pangunahing keyboard"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Sa keyboard ng mga simbolo"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Naka-off"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Mic sa pangunahing keyboard"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Mic sa keyboard ng mga simbolo"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Hindi pinagana ang voice input"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Walang naka-enable na pamamaraan ng pag-input ng boses. Suriin ang mga setting ng Pag-input ng wika."</string>
     <string name="configure_input_method" msgid="373356270290742459">"I-configure ang mga pamamaraan ng pag-input"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Mag-input ng mga wika"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Magpadala ng feedback"</string>
     <string name="select_language" msgid="3693815588777926848">"Mga wika ng input"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Pinduting muli upang i-save"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Available ang diksyunaryo"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Paganahin ang feedback ng user"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Tumulong na pahusayin ang editor ng pamamaraan ng pag-input na ito sa pamamagitan ng awtomatikong pagpapadala ng mga istatistika ng paggamit at ulat ng pag-crash"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Tema ng keyboard"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Ingles (UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Ingles (Estados Unidos)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Spanish (US)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Ingles (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Ingles (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Spanish (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Traditional)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Ingles (UK) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Ingles (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Spanish (US) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Traditional)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Cyrillic)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Walang wika (Alpabeto)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alpabeto (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alpabeto (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alpabeto (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alpabeto (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Scheme ng kulay"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Puti"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Asul"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Custom style ng input"</string>
     <string name="add_style" msgid="6163126614514489951">"Dagdag style"</string>
     <string name="add" msgid="8299699805688017798">"Idagdag"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Paganahin"</string>
     <string name="not_now" msgid="6172462888202790482">"Hindi ngayon"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Umiiral na ang parehong estilo ng input: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Study mode ng pagiging kapaki-pakinabang"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Key long press delay"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Tagal ng vibration ng keypress"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Volume ng tunog ng keypress"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Magbasa ng panlabas na file ng diksyunaryo"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Walang mga file ng diksyunaryo sa folder na Mga Download"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Pumili ng file ng diksyunaryo na ii-install"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"I-install talaga ang file na ito para sa <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Talagang ii-install ang file na ito para sa <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Nagkaroon ng error"</string>
     <string name="button_default" msgid="3988017840431881491">"Default"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Maligayang pagdating sa <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"I-refresh"</string>
     <string name="last_update" msgid="730467549913588780">"Huling na-update"</string>
     <string name="message_updating" msgid="4457761393932375219">"Tumitingin ng mga update"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Naglo-load..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Naglo-load…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Pangunahing diksyunaryo"</string>
     <string name="cancel" msgid="6830980399865683324">"Kanselahin"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Mga Setting"</string>
     <string name="install_dict" msgid="180852772562189365">"I-install"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Kanselahin"</string>
     <string name="delete_dict" msgid="756853268088330054">"Tanggalin"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"May available na diksyunaryo ang piniling wika sa iyong mobile device.&lt;br/&gt; Inirerekomenda namin ang &lt;b&gt;pag-download&lt;/b&gt; sa diksyunaryong <xliff:g id="LANGUAGE">%1$s</xliff:g> upang mapabuti ang iyong karanasan sa pag-type.&lt;br/&gt; &lt;br/&gt; Maaaring umabot ng isa hanggang dalawang minuto ang pag-download gamit ang 3G. Maaaring may malapat na mga pagsingil kung wala kang &lt;b&gt;data plan na walang limitasyon&lt;/b&gt;.&lt;br/&gt; Kung hindi ka sigurado kung aling data plan ang mayroon ka, inirerekomenda naming maghanap ng koneksyon sa Wi-Fi upang awtomatikong simulan ang pag-download.&lt;br/&gt; &lt;br/&gt; Tip: Maaari kang mag-download at mag-alis ng mga diksyunaryo sa pamamagitan ng pagpunta sa &lt;b&gt;Wika at input&lt;/b&gt; sa menu na &lt;b&gt;Mga Setting&lt;/b&gt; ng iyong mobile device."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"May available na diksyunaryo ang napiling wika sa iyong mobile device.&lt;br/&gt; Inirerekomenda naming &lt;b&gt;i-download&lt;/b&gt; ang diksyunaryo ng <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> upang pagbutihin ang iyong karanasan sa pagta-type.&lt;br/&gt; &lt;br/&gt; Maaaring magtagal nang ilang minuto ang pag-download sa 3G. Maaaring magkaroon ng mga pagsingil kung wala kang &lt;b&gt;unlimited data plan&lt;/b&gt;.&lt;br/&gt; Kung hindi ka sigurado kung anong data plan ang mayroon ka, inirerekomenda naming maghanap ng koneksyon sa Wi-Fi upang awtomatikong masimulan ang pag-download.&lt;br/&gt; &lt;br/&gt; Tip: Maaari kang mag-download at mag-alis ng mga diksyunaryo sa pamamagitan ng pagpunta sa &lt;b&gt;Wika &amp; input&lt;/b&gt; sa menu ng &lt;b&gt;Mga Setting&lt;/b&gt; ng iyong mobile device."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"I-download ngayon (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"I-download gamit ang Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"May available na diksyunaryo para sa <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"May available na diksyunaryo para sa <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Pindutin upang suriin at i-download"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Dina-download: malapit nang maging handa ang mga suhestiyon para sa <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Nagda-download: magkakaron ng mga suhestiyon para sa <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sa lalong madaling panahon."</string>
     <string name="version_text" msgid="2715354215568469385">"Bersyon <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Idagdag"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Idagdag sa diksyunaryo"</string>
diff --git a/java/res/values-tr/strings-action-keys.xml b/java/res/values-tr/strings-action-keys.xml
index b34c576..049d4fe 100644
--- a/java/res/values-tr/strings-action-keys.xml
+++ b/java/res/values-tr/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Geri"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Bitti"</string>
     <string name="label_send_key" msgid="482252074224462163">"Gönder"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Arama"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Dur"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Bekle"</string>
 </resources>
diff --git a/java/res/values-tr/strings-config-important-notice.xml b/java/res/values-tr/strings-config-important-notice.xml
new file mode 100644
index 0000000..7d9f6ab
--- /dev/null
+++ b/java/res/values-tr/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Önerileri iyileştirmek için iletşmlrmdn. ve yazılan verilerden öğren"</string>
+</resources>
diff --git a/java/res/values-tr/strings-letter-descriptions.xml b/java/res/values-tr/strings-letter-descriptions.xml
new file mode 100644
index 0000000..f0b765c
--- /dev/null
+++ b/java/res/values-tr/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Dişil sıra göstergesi"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro işareti"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Eril sıra göstergesi"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sert S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, aksanlı"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, vurgulu"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, dalga işaretli"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, iki noktalı"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, üstte halkalı"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, bağ işaretli"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, çengelli"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, aksanlı"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, vurgulu"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, iki noktalı"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, aksanlı"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, vurgulu"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, iki noktalı"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, dalga işaretli"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, aksanlı"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, vurgulu"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, dalga işaretli"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, iki noktalı"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, orta çizgili"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, aksanlı"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, vurgulu"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, iki noktalı"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, vurgulu"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, iki noktalı"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, uzatma işaretli"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, kısaltma işaretli"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, kancalı"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, vurgulu"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, üstte noktalı"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, orta çizgili"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, uzatma işaretli"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, kısaltma işaretli"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, üstte noktalı"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, kancalı"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, kısaltma işaretli"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, üstte noktalı"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, çengelli"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, orta çizgili"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, dalga işaretli"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, uzatma işaretli"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, kısaltma işaretli"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, kancalı"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Noktasız I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, bağ işaretli"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, çengelli"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, vurgulu"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, çengelli"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, orta noktalı"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, orta çizgili"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, vurgulu"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, çengelli"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, öncesinde üstten virgül"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, uzatma işaretli"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, kısaltma işaretli"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, çift vurgulu"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, bağ işaretli"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, vurgulu"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, çengelli"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, vurgulu"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, çengelli"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, çengelli"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, orta çizgili"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, dalga işaretli"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, uzatma işaretli"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, kısaltma işaretli"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, üstte halkalı"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, çift vurgulu"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, kancalı"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, inceltme işaretli"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, vurgulu"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, üstte nokta"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, yumuşatma işaretli"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Uzun S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, duyarga işaretli"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, duyarga işaretli"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, alt virgüllü"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, alt virgüllü"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, alt noktalı"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, üst çengelli"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, inceltme işaretli ve vurgulu"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, inceltme işaretli ve aksanlı"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, inceltme işaretli ve üst çengelli"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, inceltme işaretli ve uzatma işareti"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, inceltme işaretli ve alt noktalı"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, kısaltma işaretli ve vurgulu"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, kısaltma işaretli ve aksanlı"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, kısaltma işaretli ve üst çengelli"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, kısaltma işaretli ve dalga işaretli"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, kısaltma işaretli ve alt noktalı"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, alt noktalı"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, üst çengelli"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, dalga işaretli"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, inceltme işaretli ve vurgulu"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, inceltme işaretli ve aksanlı"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, inceltme işaretli ve üst çengelli"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, inceltme işaretli ve dalga işaretli"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, inceltme işaretli ve alt noktalı"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, üst çengelli"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, alt noktalı"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, alt noktalı"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, üst çengelli"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, inceltme işaretli ve vurgulu"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, inceltme işaretli ve aksanlı"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, inceltme işaretli ve üst çengelli"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, inceltme işaretli ve dalga işaretli"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, inceltme işaretli ve alt noktalı"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, duyarga işaretli ve vurgulu"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, duyarga işaretli ve aksanlı"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, duyarga işaretli ve üst çengelli"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, duyarga işaretli ve dalga işaretli"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, duyarga işaretli ve alt noktalı"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, alt noktalı"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, üst çengelli"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, duyarga işaretli ve vurgulu"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, duyarga işaretli ve aksanlı"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, duyarga işaretli ve üst çengelli"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, duyarga işaretli ve dalga işaretli"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, duyarga işaretli ve alt noktalı"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, aksanlı"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, alt noktalı"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, üst çengelli"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, dalga işaretli"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Ters soru işareti"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Sola bakan açılı çift tırnak işareti"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Orta noktalı"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Üst simge bir"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Sağa bakan açılı çift tırnak işareti"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Ters soru işareti"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Sol tekli tırnak işareti"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Sağ tekli tırnak işareti"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Tekli alt 9 tırnak işareti"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Sol çift tırnak işareti"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Sağ çift tırnak işareti"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Kama"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Çift kama"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille işareti"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Üs"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Çift üs"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Sola bakan açılı tek tırnak işareti"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Sağa bakan açılı tek tırnak işareti"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Üst simge dört"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Üst simge latin küçük harf n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Pezo işareti"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Yüzde işareti"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Sağa bakan ok"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Aşağı bakan ok"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Boş küme"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Artış işareti"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Küçüktür veya eşittir"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Büyüktür veya eşittir"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Siyah yıldız"</string>
+</resources>
diff --git a/java/res/values-tr/strings-talkback-descriptions.xml b/java/res/values-tr/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..a810eda
--- /dev/null
+++ b/java/res/values-tr/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Şifre tuşlarının sesli okunmasını dinlemek için kulaklık takın."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Mevcut metin: %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Metin girilmedi"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g>, <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kelimesini <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> olarak düzeltir"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> otomatik düzeltme yapar"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Bilinmeyen karakter"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Üst karakter"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Diğer simgeler"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Üst karakter"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Simgeler"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Üst karakter"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Sil"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Simgeler"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Harfler"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Rakamlar"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Ayarlar"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Sekme"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Boşluk çubuğu"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Ses girişi"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Enter"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Arama"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Nokta"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Dili değiştir"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Sonraki"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Önceki"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Üst karakter etkin"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Büyük harf etkin"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Sembol modu"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Diğer simgeler modu"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Harf modu"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Telefon modu"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Telefon sembolleri modu"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Klavye gizli"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> klavyesi görüntüleniyor"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"tarih"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"tarih ve saat"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"e-posta"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"mesajlaşma"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"rakam"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"telefon"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"metin"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"saat"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Son Kullanılanlar"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Kişiler"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Nesneler"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Doğa"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Yerler"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Simgeler"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"İfadeler"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Büyük Harf <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Büyük Harf I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Büyük Harf I, üst noktalı"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Bilinmeyen simge"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Bilinmeyen emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Alternatif karakterler kullanılabilir"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Alternatif karakterler yoksayılır"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Alternatif öneriler kullanılabilir"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Alternatif öneriler yoksayılır"</string>
+</resources>
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index a142951..d48ab7b 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Giriş seçenekleri"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Araştırma Günlüğü Komutları"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Kişi adlarını denetle"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Yazım denetleyici, kişi listenizdeki girişleri kullanır"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Tuşa basıldığında titret"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Tuşa basıldığında ses çıkar"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Tuşa basıldığında pop-up aç"</string>
-    <string name="general_category" msgid="1859088467017573195">"Genel"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Metin düzeltme"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Hareketle yazma"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Diğer seçenekler"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Gelişmiş ayarlar"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Uzmanlar için seçenekler"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Diğer giriş yöntemine geç"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Dil geçiş tuşu diğer giriş yöntemlerini de kapsar"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Dil değiştirme tuşu"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Sistem varsayılanı"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Kişi Adları öner"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Öneri ve düzeltmeler için Kişiler\'deki adları kullan"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Kişisel öneriler"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> uygulamasını iyileştir"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Çift boşlukla nokta ekleme"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Boşluk çubuğuna iki kez vurmak nokta ve ardından bir boşluk ekler"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Otomatik olarak büyük harf yap"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Hareket izini göster"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Dinamik kayan önizleme"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Hareket sırasında önerilen kelimeyi göster"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Kaydedildi"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Şifre tuşlarının sesli okunmasını dinlemek için mikrofonlu kulaklık takın."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Mevcut metin: %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Hiç metin girilmedi"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> tuşu <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kelimesini <xliff:g id="CORRECTED">%3$s</xliff:g> olarak düzeltir"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> tuşu otomatik düzeltme gerçekleştirir"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Tuş kodu: %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Üst Karakter"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Üst karakter açık (devre dışı bırakmak için hafifçe vurun)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Büyük harf kilidi açık (devre dışı bırakmak içinn hafifçe vurun)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Simgeler"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Harfler"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Rakamlar"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Ayarlar"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Sekme"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Boşluk"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Ses girişi"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Gülen yüz"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Enter"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Ara"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Nokta"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Dili değiştir"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Sonraki"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Önceki"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Üst karakter etkin"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Büyük harf kilidi etkin"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Üst karakter devre dışı"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Sembol modu"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Harf modu"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Telefon modu"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Telefon sembolleri modu"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Klavye gizli"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"<xliff:g id="MODE">%s</xliff:g> klavyesi gösteriliyor"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"tarih"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"tarih ve saat"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"e-posta"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"mesajlaşma"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"rakam"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"telefon"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"metin"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"saat"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Kelime öbeği hareketi"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Hareketle girişte boşlukları, boşluk tuşuna kaydırarak girin"</string>
     <string name="voice_input" msgid="3583258583521397548">"Ses girişi tuşu"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Ana klavyede"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Simge klavyesinde"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Kapalı"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Ana klavyedeki mikrofon"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Simge klavysnd mikrf"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Sesle grş devre dışı"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Hiçbir ses girişi yöntemi etkinleştirilmedi. Dil ve giriş ayarlarını kontrol edin."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Giriş yöntemlerini yapılandır"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Giriş dilleri"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Geri bildirim gönder"</string>
     <string name="select_language" msgid="3693815588777926848">"Giriş dilleri"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Kaydetmek için tekrar dokunun"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Sözlük kullanılabilir"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Kullanıcı geri bildirimini etkinleştir"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Kullanım istatistiklerini ve kilitlenme raporlarını otomatik olarak göndererek bu giriş yöntemi düzenleyicisinin iyileştirilmesine yardımcı olun."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Klavye teması"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"İngilizce (BK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"İngilizce (ABD)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"İspanyolca (ABD)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"İngilizce (İngiltere) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"İngilizce (ABD) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"İspanyolca (ABD) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Geleneksel)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"İngilizce (İngiltere) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"İngilizce (ABD) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"İspanyolca (ABD) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Geleneksel)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Kiril)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Dil yok (Alfabe)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabe (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabe (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabe (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabe (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Renk şeması"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Beyaz"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Mavi"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Özel giriş stilleri"</string>
     <string name="add_style" msgid="6163126614514489951">"Stil ekle"</string>
     <string name="add" msgid="8299699805688017798">"Ekle"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Etkinleştir"</string>
     <string name="not_now" msgid="6172462888202790482">"Şimdi değil"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Aynı giriş stili zaten var: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Kullanılabilirlik çalışması modu"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Tuşa uzun basma gecikmesi"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Tuşa basma titreşim süresi"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Tuşa basma ses seviyesi"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Harici sözlük dosyasını oku"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"İndirilenler klasöründe sözlük dosyası yok"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Yüklemek için bir sözlük dosyası seçin"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"<xliff:g id="LOCALE_NAME">%s</xliff:g> için bu dosya gerçekten yüklensin mi?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> için bu dosya gerçekten yüklensin mi?"</string>
     <string name="error" msgid="8940763624668513648">"Bir hata oluştu"</string>
     <string name="button_default" msgid="3988017840431881491">"Varsayılan"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> uygulamasına hoş geldiniz"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Yenile"</string>
     <string name="last_update" msgid="730467549913588780">"Son güncelleme tarihi"</string>
     <string name="message_updating" msgid="4457761393932375219">"Güncellemeler denetleniyor"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Yükleniyor..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Yükleniyor…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Ana sözlük"</string>
     <string name="cancel" msgid="6830980399865683324">"İptal"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Ayarlar"</string>
     <string name="install_dict" msgid="180852772562189365">"Yükle"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"İptal"</string>
     <string name="delete_dict" msgid="756853268088330054">"Sil"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Mobil cihazınızda seçili dile ait kullanılabilir bir sözlük mevcut.&lt;br/&gt; Daha iyi yazabilmek için bu <xliff:g id="LANGUAGE">%1$s</xliff:g> sözlüğü &lt;b&gt;indirmenizi&lt;/b&gt; öneririz.&lt;br/&gt; &lt;br/&gt; İndirme işlemi 3G üzerinden bir veya iki dakika sürebilir. &lt;b&gt;Sınırsız veri planınız&lt;/b&gt; yoksa ücret alınabilir.&lt;br/&gt; Ne tür bir veri planına sahip olduğunuzdan emin değilseniz, otomatik olarak indirmeye başlamak için bir Kablosuz bağlantı bulmanızı öneririz.&lt;br/&gt; &lt;br/&gt; İpucu: Sözlükleri, mobil cihazınızın &lt;b&gt;Ayarlar&lt;/b&gt; menüsünde &lt;b&gt;Dil ve giriş&lt;/b&gt; seçeneğine giderek indirebilir ve silebilirsiniz."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Mobil cihazınızda seçili dile ait kullanılabilir bir sözlük var.&lt;br/&gt; Daha iyi yazabilmek için bu <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sözlüğü &lt;b&gt;indirmenizi&lt;/b&gt; öneririz.&lt;br/&gt; &lt;br/&gt; İndirme işlemi 3G üzerinden bir veya iki dakika sürebilir. &lt;b&gt;Sınırsız veri planınız &lt;/b&gt;yoksa ücret alınabilir.&lt;br/&gt; Ne tür bir veri planına sahip olduğunuzdan emin değilseniz, otomatik olarak indirmeye başlamak için bir Kablosuz bağlantı bulmanızı öneririz.&lt;br/&gt; &lt;br/&gt; İpucu: Sözlükleri, mobil cihazınızın &lt;b&gt;Ayarlar&lt;/b&gt; menüsünde &lt;b&gt;Dil ve giriş&lt;/b&gt; seçeneğine giderek indirebilir ve silebilirsiniz."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Hemen indir (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Kablosuz üzerinden indir"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g> için kullanılabilecek bir sözlük mevcut"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> için kullanılabilir bir sözlük var"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"İncelemek ve indirmek için basın"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"<xliff:g id="LANGUAGE">%1$s</xliff:g> için önerilerin indirilmesine kısa süre içinde başlanacak."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> için önerilerin indirilmesine kısa süre içinde başlanacak."</string>
     <string name="version_text" msgid="2715354215568469385">"Sürüm <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Ekle"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Sözlüğe ekle"</string>
diff --git a/java/res/values-uk/strings-action-keys.xml b/java/res/values-uk/strings-action-keys.xml
index 3e5762b..206fcf0 100644
--- a/java/res/values-uk/strings-action-keys.xml
+++ b/java/res/values-uk/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Назад"</string>
     <string name="label_done_key" msgid="7564866296502630852">"ОК"</string>
     <string name="label_send_key" msgid="482252074224462163">"Слати"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Пошук"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Пауза"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Ждати"</string>
 </resources>
diff --git a/java/res/values-uk/strings-config-important-notice.xml b/java/res/values-uk/strings-config-important-notice.xml
new file mode 100644
index 0000000..b95b72c
--- /dev/null
+++ b/java/res/values-uk/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Пристрій буде запам’ятовувати, що ви пишете, надсилаєте й отримуєте"</string>
+</resources>
diff --git a/java/res/values-uk/strings-letter-descriptions.xml b/java/res/values-uk/strings-letter-descriptions.xml
new file mode 100644
index 0000000..1199771
--- /dev/null
+++ b/java/res/values-uk/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Індикатор порядкового числівника жіночого роду"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Знак мікро"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Індикатор порядкового числівника чоловічого роду"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Есцет"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, гравіс"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, акут"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, тильда"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, трема"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, кільце вгорі"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, лігатура"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, седиль"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, гравіс"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, акут"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, трема"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, гравіс"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, акут"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, трема"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Ет"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, тильда"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, гравіс"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, акут"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, тильда"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, трема"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, риска"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, гравіс"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, акут"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, циркумфлекс"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, трема"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, акут"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Торн"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, трема"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, макрон"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, бреве"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, хвостик"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, акут"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, циркумфлекс"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, крапка вгорі"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, гачек"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, гачек"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, риска"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, макрон"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, бреве"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, крапка вгорі"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, хвостик"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, гачек"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, циркумфлекс"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, бреве"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, крапка вгорі"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, седиль"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, риска"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, тильда"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, макрон"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, бреве"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, хвостик"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I без крапки"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, лігатура"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, седиль"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Кра"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, акут"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, седіль"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, гачек"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, інтерпункт"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, риска"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, акут"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, седиль"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, гачек"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, після апострофа"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Енг"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, макрон"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, бреве"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, подвійний акут"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, лігатура"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, акут"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, седиль"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, гачек"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, акут"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, циркумфлекс"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, седиль"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, гачек"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, седиль"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, гачек"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, риска"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, тильда"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, макрон"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, бреве"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, кільце вгорі"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, подвійний акут"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, хвостик"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, циркумфлекс"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, циркумфлекс"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, акут"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, крапка вгорі"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, гачек"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Довгий звук S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, ріг"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, ріг"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, кома внизу"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, кома внизу"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Шва"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, крапка внизу"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, гачок угорі"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, циркумфлекс і акут"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, циркумфлекс і гравіс"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, циркумфлекс і гачок угорі"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, циркумфлекс і тильда"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, циркумфлекс і крапка внизу"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, бреве й акут"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, бреве та гравіс"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, бреве та гачок угорі"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, бреве та тильда"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, бреве та крапка внизу"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, крапка внизу"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, гачок угорі"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, тильда"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, циркумфлекс і акут"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, циркумфлекс і гравіс"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, циркумфлекс і гачок угорі"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, циркумфлекс і тильда"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, циркумфлекс і крапка внизу"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, гачок угорі"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, крапка внизу"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, крапка внизу"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, гачок угорі"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, циркумфлекс і акут"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, циркумфлекс і гравіс"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, циркумфлекс і гачок угорі"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, циркумфлекс і тильда"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, циркумфлекс і крапка внизу"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, ріг і акут"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, ріг і гравіс"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, ріг і гачок угорі"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, ріг і тильда"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, ріг і крапка внизу"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, крапка внизу"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, гачок угорі"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, ріг і акут"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, ріг і гравіс"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, ріг і гачок угорі"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, ріг і тильда"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, ріг і крапка внизу"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, гравіс"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, крапка внизу"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, гачок угорі"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, тильда"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Перевернутий знак оклику"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Ліві подвійні кутові лапки"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Інтерпункт"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Верхній індекс, один"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Праві подвійні кутові лапки"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Перевернутий знак запитання"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Ліві одинарні лапки"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Праві одинарні лапки"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Ліві нижні одинарні лапки"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Ліві подвійні лапки"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Праві подвійні лапки"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Хрестик"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Подвійний хрестик"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Знак проміле"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Штрих"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Подвійний штрих"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Ліві одинарні кутові лапки"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Праві одинарні кутові лапки"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Верхній індекс, чотири"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Верхній індекс, мала латинська літера n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Знак песо"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Через"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Стрілка праворуч"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Стрілка вниз"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Порожня множина"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Крок"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Менше або дорівнює"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Більше або дорівнює"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Чорна зірка"</string>
+</resources>
diff --git a/java/res/values-uk/strings-talkback-descriptions.xml b/java/res/values-uk/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..80e4710
--- /dev/null
+++ b/java/res/values-uk/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Підключіть гарнітуру, щоб слухати озвучені символи пароля."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Поточний текст: %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Текст не введено"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> виправляє слово \"<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>\" на \"<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>\""</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> автоматично виправляє"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Невідомий символ"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Більше символів"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Клавіша Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Символи"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Клавіша Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Видалити"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Символи"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Літери"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Цифри"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Налаштування"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Пробіл"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Голосовий ввід"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Cмайли Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Повернутися"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Пошук"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Крапка"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Змінити мову"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Далі"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Назад"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift увімкнено"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Caps Lock увімкнено"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Режим символів"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Режим \"Більше символів\""</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Режим літер"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Режим номерів телефону"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Режим телефонних символів"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Клавіатуру сховано"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Режим клавіатури: <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"дата"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"дата й час"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"електронні адреси"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"повідомлення"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"цифри"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"номери телефону"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"текст"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"час"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL-адреси"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Останні"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Люди"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Об’єкти"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Природа"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Місця"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Символи"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Смайли"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Велика <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Велика I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Велика I, крапка вгорі"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Невідомий символ"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Невідомий смайл Emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Доступні альтернативні символи"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Альтернативні символи відхилено"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Доступні альтернативні пропозиції"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Альтернативні пропозиції відхилено"</string>
+</resources>
diff --git a/java/res/values-uk/strings.xml b/java/res/values-uk/strings.xml
index da26d50..c59bed6 100644
--- a/java/res/values-uk/strings.xml
+++ b/java/res/values-uk/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Парам. введення"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Команди журналу дослідж."</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Шукати імена контактів"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Програма перевірки правопису використ. записи зі списку контактів"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Вібр. при натисканні клавіш"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Звук при натиску клав."</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Сплив. при нат.клав."</string>
-    <string name="general_category" msgid="1859088467017573195">"Загальні"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Виправлення тексту"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Ввід жестами"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Інші опції"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Розширені налаштування"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Налаштування для досвідчених користувачів"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Інші методи введення"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Клавіша зміни мови дозволяє змінювати методи введення"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Клавіша зміни мови"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"За умовчанням"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Пропон. імена контактів"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Використ. імена зі списку контактів для пропозицій і виправлень"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Персональні пропозиції"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Покращувати додаток <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Крапка подвійним пробілом"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Подвійне натискання пробілу вставляє крапку з пробілом після неї"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Авто викор. вел. літер"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Показувати слід жестів"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Динамічний спливаючий перегляд"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Показувати пропоноване слово під час введення тексту жестами"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : збережено"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Підключіть гарнітуру, щоб прослухати відтворені вголос символи пароля."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Поточний текст – %s."</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Текст не введено"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> виправляє <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> на <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> здійснює автоматичне виправлення"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Код клавіші – %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Клавіша Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift увімкнено (швидко торкніться, щоб вимкнути)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps Lock увімкнено (швидко торкніться, щоб вимкнути)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Клавіша Delete"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Символи"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Літери"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Цифри"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Налаштування"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Вкладка"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Пробіл"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Голосовий ввід"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Смайлик"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Клавіша Return"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Пошук"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Крапка"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Змінити мову"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Далі"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Назад"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift увімкнено"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Caps Lock увімкнено"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift вимкнено"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Режим символів"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Режим букв і цифр"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Режим набору номера"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Режим набору символів"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Клавіатуру сховано"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Режим клавіатури: <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"дата"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"дата й час"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"електронні адреси"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"повідомлення"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"цифри"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"номери телефонів"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"текст"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"час"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL-адреси"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Безперервний ввід фраз"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Вставляйте пробіли, проводячи пальцем по клавіші пробілу"</string>
     <string name="voice_input" msgid="3583258583521397548">"Ключ голосового вводу"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"На основ. клавіатурі"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Символьна клавіатура"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Вимк."</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Мікрофон на основній клавіатурі"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Miкр. на симв. клавіат."</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Голос. ввід вимкнено"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Способи голосового вводу не ввімкнено. Перейдіть у налаштування \"Мова та введення\"."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Налаштування методів введення"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Мови вводу"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Надіслати відгук"</string>
     <string name="select_language" msgid="3693815588777926848">"Мови введення"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Торкніться знову, щоб зберегти"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Словник доступний"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Увімк. відгуки корист."</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Допоможіть покращити цей редактор методу введення, автоматично надсилаючи в Google статистику використання та звіти про аварійне завершення роботи."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Тема клавіатури"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Англійська (Великобританія)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Англійська (США)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"іспанська (США)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Англійська (Великобр.) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Англійська (США) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"іспанська (США) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (традиційна)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Англійська (Британія) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Англійська (США) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Іспанська (США) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (традиційна)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (кирилиця)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (латиниця)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Стандартна (латиниця)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Латиниця (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Латиниця (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Латиниця (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Латиниця (ПК)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Cмайли Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Схема кольорів"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Біла"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Синя"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Персональні стилі введення"</string>
     <string name="add_style" msgid="6163126614514489951">"Додати стиль"</string>
     <string name="add" msgid="8299699805688017798">"Додати"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Увімкнути"</string>
     <string name="not_now" msgid="6172462888202790482">"Не зараз"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Такий стиль введення вже існує: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Режим вивчення зручності у використанні"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Затримка довгого натискання"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Вібрація при натисканні клавіш"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Гучність натискання клавіш"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Читати файл зовнішнього словника"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"У папці \"Завантаження\" немає файлів словника"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Вибрати файл словника, який потрібно встановити"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Справді встановити цей файл для такої мови: <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Справді встановити цей файл для такої мови: <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Сталася помилка"</string>
     <string name="button_default" msgid="3988017840431881491">"За умовчанням"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Вітаємо в програмі <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Оновити"</string>
     <string name="last_update" msgid="730467549913588780">"Останнє оновлення"</string>
     <string name="message_updating" msgid="4457761393932375219">"Перевірка наявності оновлень"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Завантаження…"</string>
+    <string name="message_loading" msgid="5638680861387748936">"Завантаження…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Основний словник"</string>
     <string name="cancel" msgid="6830980399865683324">"Скасувати"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Налаштування"</string>
     <string name="install_dict" msgid="180852772562189365">"Установити"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Скасувати"</string>
     <string name="delete_dict" msgid="756853268088330054">"Видалити"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Для вибраної на вашому мобільному пристрої мови доступний словник.&lt;br/&gt; Радимо &lt;b&gt;завантажити&lt;/b&gt; словник для цієї мови (<xliff:g id="LANGUAGE">%1$s</xliff:g>), щоб покращити введення тексту.&lt;br/&gt; &lt;br/&gt; У мережі 3G завантаження триває 1–2 хвилини. Якщо у вас не &lt;b&gt;безлімітний тарифний план Інтернету&lt;/b&gt;, може стягуватися плата.&lt;br/&gt; Якщо ви не впевнені щодо тарифного плану, радимо скористатися з’єднанням Wi-Fi, щоб автоматично почати завантаження.&lt;br/&gt; &lt;br/&gt; Порада: завантажувати та вилучати словники можна в меню &lt;b&gt;Налаштування&lt;/b&gt; в розділі &lt;b&gt;Мова та введення&lt;/b&gt; вашого мобільного пристрою."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Для вибраної на вашому мобільному пристрої мови доступний словник.&lt;br/&gt; Радимо &lt;b&gt;завантажити&lt;/b&gt; словник для цієї мови (<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>), щоб покращити введення тексту.&lt;br/&gt; &lt;br/&gt; У мережі 3G завантаження триває 1–2 хвилини. Якщо у вас не &lt;b&gt;безлімітний тарифний план Інтернету&lt;/b&gt;, може стягуватися плата.&lt;br/&gt; Якщо ви не впевнені щодо тарифного плану, радимо скористатися з’єднанням Wi-Fi, щоб автоматично почати завантаження.&lt;br/&gt; &lt;br/&gt; Порада: завантажувати та видаляти словники можна в меню &lt;b&gt;Налаштування&lt;/b&gt; в розділі &lt;b&gt;Мова та введення&lt;/b&gt; вашого мобільного пристрою."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Завантажити зараз (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> Mб)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Завантажити через Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Доступний словник для такої мови: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Доступний словник для такої мови: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Натисніть, щоб переглянути та завантажити"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Скоро почнеться завантаження пропозицій для такої мови: <xliff:g id="LANGUAGE">%1$s</xliff:g>."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Завантаження. Скоро будуть готові пропозиції для такої мови: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>."</string>
     <string name="version_text" msgid="2715354215568469385">"Версія <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Додати"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Додати в словник"</string>
diff --git a/java/res/values-ur-rPK/strings-action-keys.xml b/java/res/values-ur-rPK/strings-action-keys.xml
new file mode 100644
index 0000000..e081363
--- /dev/null
+++ b/java/res/values-ur-rPK/strings-action-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="label_go_key" msgid="4033615332628671065">"جائیں"</string>
+    <string name="label_next_key" msgid="5586407279258592635">"اگلا"</string>
+    <string name="label_previous_key" msgid="1421141755779895275">"پيچھے"</string>
+    <string name="label_done_key" msgid="7564866296502630852">"ہوگیا"</string>
+    <string name="label_send_key" msgid="482252074224462163">"بھیجیں"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"تلاش"</string>
+    <string name="label_pause_key" msgid="2225922926459730642">"موقوف"</string>
+    <string name="label_wait_key" msgid="5891247853595466039">"انتظار"</string>
+</resources>
diff --git a/java/res/values-ur-rPK/strings-appname.xml b/java/res/values-ur-rPK/strings-appname.xml
new file mode 100644
index 0000000..0ecca5a
--- /dev/null
+++ b/java/res/values-ur-rPK/strings-appname.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_name" msgid="5940510615957428904">"‏Android کی بورڈ (AOSP)"</string>
+    <string name="spell_checker_service_name" msgid="1254221805440242662">"‏Android ہجے چیک کنندہ (AOSP)"</string>
+    <string name="english_ime_settings" msgid="5760361067176802794">"‏Android کی بورڈ کی ترتیبات (AOSP)"</string>
+    <string name="android_spell_checker_settings" msgid="6123949487832861885">"‏Android ہجے چیک کنندہ کی ترتیبات ‎(AOSP)‎"</string>
+</resources>
diff --git a/java/res/values-ur-rPK/strings-config-important-notice.xml b/java/res/values-ur-rPK/strings-config-important-notice.xml
new file mode 100644
index 0000000..56d3ff1
--- /dev/null
+++ b/java/res/values-ur-rPK/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"تجاویز کو بہتر بنانے کیلئے اپنی مواصلات اور ٹائپ کردہ ڈیٹا سے سیکھیں"</string>
+</resources>
diff --git a/java/res/values-ur-rPK/strings-letter-descriptions.xml b/java/res/values-ur-rPK/strings-letter-descriptions.xml
new file mode 100644
index 0000000..23aa8cf
--- /dev/null
+++ b/java/res/values-ur-rPK/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"مؤنث علامتِ ترتيب"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"مائیکرو کا نشان"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"مذکر علامتِ ترتيب"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"‏شارپ S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"‏A، گریو"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"‏A، اکیوٹ"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"‏A، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"‏A، ٹلڈا"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"‏A، ڈایاریسس"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"‏A، اوپر رِنگ"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"‏A, E، لیگاچر"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"‏C، سڈِلا"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"‏E، گریو"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"‏E، اکیوٹ"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"‏E، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"‏E، ڈایاریسس"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"‏I، گریو"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"‏I، اکیوٹ"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"‏I، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"‏I، ڈایاریسس"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"‏N، ٹلڈا"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"‏O، گریو"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"‏O، اکیوٹ"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"‏O، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"‏O، ٹلڈا"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"‏O، ڈایاریسس"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"‏O، اسٹروک"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"‏U، گریو"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"‏U، اکیوٹ"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"‏U، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"‏U، ڈایاریسس"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"‏Y، اکیوٹ"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"تھورن"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"‏Y، ڈایاریسس"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"‏A، میکران"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"‏A، بریو"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"‏A، اوگونیک"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"‏C، اکیوٹ"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"‏C، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"‏C، اوپر ڈاٹ"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"‏C، کیران"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"‏D، کیران"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"‏D، اسٹروک"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"‏E، میکران"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"‏E، بریو"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"‏E، اوپر ڈاٹ"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"‏E، اوگونیک"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"‏E، کیران"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"‏G، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"‏G، بریو"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"‏G، اوپر ڈاٹ"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"‏G، سڈِلا"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"‏H، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"‏H، اسٹروک"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"‏I، ٹلڈا"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"‏I، میکران"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"‏I، بریو"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"‏I، اوگونیک"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"‏بغیر ڈاٹ والی I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"‏I, J لیگاچر"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"‏J، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"‏K، سڈِلا"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"‏L، اکیوٹ"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"‏L، سڈِلا"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"‏L، کیران"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"‏L، درمیانی ڈاٹ"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"‏L، اسٹروک"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"‏N، اکیوٹ"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"‏N، سڈِلا"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"‏N، کیران"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"‏N، جس سے پہلے علامت حذف ہو"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"‏O، میکران"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"‏O، بریو"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"‏O، ڈبل اکیوٹ"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"‏O, E، لیگاچر"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"‏R، اکیوٹ"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"‏R، سڈِلا"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"‏R، کیران"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"‏S، اکیوٹ"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"‏S، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"‏S، سڈِلا"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"‏S، کیران"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"‏T، سڈِلا"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"‏T، کیران"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"‏T، اسٹروک"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"‏U، ٹلڈا"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"‏U، میکران"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"‏U، بریو"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"‏U، اوپر رِنگ"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"‏U، ڈبل اکیوٹ"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"‏U، اوگونیک"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"‏W، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"‏Y، سرکمفلیکس"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"‏Z، اکیوٹ"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"‏Z، اوپر ڈاٹ"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"‏Z، کیران"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"‏طویل S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"‏O، ہورن"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"‏U، ہورن"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"‏S، ذیل میں کوما"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"‏T، ذیل میں کوما"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"شوا"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"‏A، ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"‏A، اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"‏A، سرکمفلیکس اور اکیوٹ"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"‏A، سرکمفلیکس اور گریو"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"‏A، سرکمفلیکس اور اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"‏A، سرکمفلیکس اور ٹلڈا"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"‏A، سرکمفلیکس اور ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"‏A، بریو اور اکیوٹ"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"‏A، بریو اور گریو"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"‏A، بریو اور اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"‏A، بریو اور ٹلڈا"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"‏A، بریو اور ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"‏E، ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"‏E، اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"‏E، ٹلڈا"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"‏E، سرکمفلیکس اور اکیوٹ"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"‏E، سرکمفلیکس اور گریو"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"‏E، سرکمفلیکس اور اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"‏E، سرکمفلیکس اور ٹلڈا"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"‏E، سرکمفلیکس اور ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"‏I، اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"‏I، ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"‏O، ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"‏O، اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"‏O، سرکمفلیکس اور اکیوٹ"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"‏O، سرکمفلیکس اور گریو"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"‏O، سرکمفلیکس اور اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"‏O، سرکمفلیکس اور ٹلڈا"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"‏O، سرکمفلیکس اور ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"‏O، ہورن اور اکیوٹ"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"‏O، ہورن اور گریو"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"‏O، ہورن اور اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"‏O، ہورن اور ٹلڈا"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"‏O، ہورن اور ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"‏U، ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"‏U، اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"‏U، ہورن اور اکیوٹ"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"‏U، ہورن اور گریو"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"‏U، اوپر ہورن اور ہوک"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"‏U، ہورن اور ٹلڈا"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"‏U، ہورن اور ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"‏Y، گریو"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"‏Y، ذیل میں ڈاٹ"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"‏Y، اوپر ہوک"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"‏Y، ٹلڈا"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"الٹی علامت استعجاب"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"بائیں طرف اشارہ کرنے والا دو زاویہ علامت قوسین"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"درمیانی ڈاٹ"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"سپر اسکرپٹ ایک"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"دائیں طرف اشارہ کرنے والا دو زاویہ علامت اقتباس"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"الٹا سوالیہ نشان"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"بائیں طرف والی ایک علامت اقتباس"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"دائیں طرف والی ایک علامت اقتباس"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"واحد ذیلی 9 علامت اقتباس"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"بائیں طرف والی دہری علامت اقتباس"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"دائیں دہری علامت اقتباس"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"ڈیگر"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"ڈبل ڈیگر"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"فی ملی علامت"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"پرائم"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"ڈبل پرائم"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"بائیں طرف اشارہ کرنے والا ایک زاویہ علامت اقتباس"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"دائیں طرف اشارہ کرنے والا ایک زاویہ علامت اقتباس"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"سپر اسکرپٹ چار"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"‏سپر اسکرپٹ لاطینی چھوٹا حرف n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"پیسو علامت"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"کیئر آف"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"دائیں طرف کا تیر کا نشان"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"نیچے کی طرف کا تیر کا نشان"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"خالی سیٹ"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"اضافہ"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"اس سے کم یا اس کے برابر"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"اس سے بڑا یا اس کے برابر"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"سیاہ ستارہ کا نشان"</string>
+</resources>
diff --git a/java/res/values-ur-rPK/strings-talkback-descriptions.xml b/java/res/values-ur-rPK/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..5820372
--- /dev/null
+++ b/java/res/values-ur-rPK/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"پاس ورڈ کلیدوں کی آواز اونچی آواز میں سننے کیلئے ایک ہیڈ سیٹ پلگ ان کریں۔"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"‏موجودہ  متن %s ہے"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"کوئی متن درج نہیں کیا گیا"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> کو ٹھیک کر کے <xliff:g id="CORRECTED_WORD">%3$s</xliff:g> کر دیتی ہے"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> خود کار اصلاح کو انجام دیتی ہے"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"نامعلوم حرف"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"مزید علامات"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"علامات"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"حذف کریں"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"علامات"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"حروف"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"نمبرز"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"ترتیبات"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"اسپیس"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"صوتی ان پٹ"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"واپس جائیں"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"تلاش کریں"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"ڈاٹ"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"زبان سوئچ کریں"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"اگلا"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"پچھلا"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"‏Shift فعال ہے"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"‏Caps lock فعال ہے"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"علامات وضع"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"مزید علامات کی وض‏ع"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"حروف وضع"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"فون وضع"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"فون علامات کی وضع"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"کی بورڈ مخفی ہے"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"<xliff:g id="KEYBOARD_MODE">%s</xliff:g> کی بورڈ دکھائی دے رہا ہے"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"تاریخ"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"تاریخ اور وقت"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"ای میل"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"پیغام رسانی"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"نمبر"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"فون"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"متن"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"وقت"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"حالیہ"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"لوگ"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"اشیاء"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"فطرت"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"مقامات"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"علامات"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"جذباتی اشکال"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"بڑی <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"‏بڑی I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"‏بڑی I، اوپر ڈاٹ"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"نامعلوم علامت"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"‏نامعلوم emoji"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"متبادل حروف دستیاب ہیں"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"متبادل حروف کو مسترد کر دیا گیا ہے"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"متبادل تجاویز دستیاب ہیں"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"متبادل تجاویز کو مسترد کر دیا گیا ہے"</string>
+</resources>
diff --git a/java/res/values-ur-rPK/strings.xml b/java/res/values-ur-rPK/strings.xml
new file mode 100644
index 0000000..8439cb5
--- /dev/null
+++ b/java/res/values-ur-rPK/strings.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="english_ime_input_options" msgid="3909945612939668554">"ان پٹ اختیارات"</string>
+    <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"رابطوں میں سے نام ڈھونڈیں"</string>
+    <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"ہجے چیک کنندہ آپ کی رابطہ فہرست سے اندراجات کا استعمال کرتا ہے"</string>
+    <string name="vibrate_on_keypress" msgid="5258079494276955460">"کلید دبانے پر وائبریٹ کریں"</string>
+    <string name="sound_on_keypress" msgid="6093592297198243644">"کلید دبانے پر آواز"</string>
+    <string name="popup_on_keypress" msgid="123894815723512944">"کلید دبانے پر پاپ اپ"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"دیگر اندراج طریقوں پر سوئچ کریں"</string>
+    <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"زبان سوئچ کرنے کی کلید اندراج کے دیگر طریقوں کا بھی احاطہ کرتی ہے"</string>
+    <string name="show_language_switch_key" msgid="5915478828318774384">"زبان سوئچ کرنے کی کلید"</string>
+    <string name="show_language_switch_key_summary" msgid="7343403647474265713">"متعدد ان پٹ زبانیں فعال ہونے پر دکھائیں"</string>
+    <string name="sliding_key_input_preview" msgid="6604262359510068370">"سلائیڈ انڈیکیٹر کو دکھائیں"</string>
+    <string name="sliding_key_input_preview_summary" msgid="6340524345729093886">"‏Shift یا علامت کلیدوں سے سلائیڈ کرتے ہوئے بصری اشارہ ڈسپلے کریں"</string>
+    <string name="key_preview_popup_dismiss_delay" msgid="6213164897443068248">"کلید پاپ اپ رفع کی تاخیر"</string>
+    <string name="key_preview_popup_dismiss_no_delay" msgid="2096123151571458064">"کوئی تاخیر نہیں"</string>
+    <string name="key_preview_popup_dismiss_default_delay" msgid="2166964333903906734">"ڈیفالٹ"</string>
+    <string name="abbreviation_unit_milliseconds" msgid="8700286094028323363">"<xliff:g id="MILLISECONDS">%s</xliff:g>ملی سیکنڈ"</string>
+    <string name="settings_system_default" msgid="6268225104743331821">"سسٹم ڈیفالٹ"</string>
+    <string name="use_contacts_dict" msgid="4435317977804180815">"رابطہ ناموں کی تجویز کریں"</string>
+    <string name="use_contacts_dict_summary" msgid="6599983334507879959">"تجاویز اور اصلاحات کیلئے رابطوں سے ناموں کی تجویز کریں"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"ذاتی نوعیت کی تجاویز"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> کو بہتر بنائیں"</string>
+    <string name="use_double_space_period" msgid="8781529969425082860">"ڈبل اسپیس پیریڈ"</string>
+    <string name="use_double_space_period_summary" msgid="6532892187247952799">"سپیس بار دو بار تھپتھپانے سے سپیس کے بعد پیریڈ داخل ہوجاتا ہے۔"</string>
+    <string name="auto_cap" msgid="1719746674854628252">"بڑے حروف میں خودکار تبدیلی"</string>
+    <string name="auto_cap_summary" msgid="7934452761022946874">"ہر جملے کا پہلا لفظ بڑے حروف میں لکھیں"</string>
+    <string name="edit_personal_dictionary" msgid="3996910038952940420">"ذاتی لغت"</string>
+    <string name="configure_dictionaries_title" msgid="4238652338556902049">"اضافی لغات"</string>
+    <string name="main_dictionary" msgid="4798763781818361168">"مرکزی لغت"</string>
+    <string name="prefs_show_suggestions" msgid="8026799663445531637">"اصلاح کی تجاویز دکھائیں"</string>
+    <string name="prefs_show_suggestions_summary" msgid="1583132279498502825">"ٹائپ کرتے وقت تجویز کردہ الفاظ ڈسپلے کریں"</string>
+    <string name="prefs_suggestion_visibility_show_name" msgid="3219916594067551303">"ہمیشہ دکھائیں"</string>
+    <string name="prefs_suggestion_visibility_show_only_portrait_name" msgid="3859783767435239118">"پورٹریٹ وضع میں دکھائیں"</string>
+    <string name="prefs_suggestion_visibility_hide_name" msgid="6309143926422234673">"ہمیشہ چھپائیں"</string>
+    <string name="prefs_block_potentially_offensive_title" msgid="5078480071057408934">"ناگوار الفاظ مسدود کریں"</string>
+    <string name="prefs_block_potentially_offensive_summary" msgid="2371835479734991364">"ممکنہ طور پر ناگوار الفاظ تجویز نہ کریں"</string>
+    <string name="auto_correction" msgid="7630720885194996950">"خود کار اصلاح"</string>
+    <string name="auto_correction_summary" msgid="5625751551134658006">"اسپیس بار اور رموز اوقاف غلط ٹائپ کردہ الفاظ کی اصلاح کریں"</string>
+    <string name="auto_correction_threshold_mode_off" msgid="8470882665417944026">"آف"</string>
+    <string name="auto_correction_threshold_mode_modest" msgid="8788366690620799097">"معتدل"</string>
+    <string name="auto_correction_threshold_mode_aggressive" msgid="7319007299148899623">"پر جوش"</string>
+    <string name="auto_correction_threshold_mode_very_aggressive" msgid="1853309024129480416">"بہت پر جوش"</string>
+    <string name="bigram_prediction" msgid="1084449187723948550">"اگلے الفاظ کی تجاویز"</string>
+    <string name="bigram_prediction_summary" msgid="3896362682751109677">"تجاویز پیش کرتے وقت گزشتہ لفظ استعمال کریں"</string>
+    <string name="gesture_input" msgid="826951152254563827">"اشارہ ٹائپنگ کو فعال کریں"</string>
+    <string name="gesture_input_summary" msgid="9180350639305731231">"حروف پر سلائیڈ کر کے ایک لفظ درج کریں"</string>
+    <string name="gesture_preview_trail" msgid="3802333369335722221">"اشارہ ٹریل دکھائیں"</string>
+    <string name="gesture_floating_preview_text" msgid="4443240334739381053">"ڈائنیمک فلوٹنگ پیش منظر"</string>
+    <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"اشارہ کرتے ہوئے تجویز کردہ لفظ دیکھیں"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"جملہ کا اشارہ"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"اسپیس کلید کو گلائیڈ کر کے اشاروں کے درمیان خالی جگہیں درج کریں"</string>
+    <string name="voice_input" msgid="3583258583521397548">"صوتی ان پٹ کلید"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"کوئی صوتی اندراج کے طریقے فعال نہیں ہیں۔ زبان اور ان پٹ ترتیبات کو چیک کریں۔"</string>
+    <string name="configure_input_method" msgid="373356270290742459">"اندراج کے طریقے کنفیگر کریں"</string>
+    <string name="language_selection_title" msgid="1651299598555326750">"ان پٹ زبانیں"</string>
+    <string name="send_feedback" msgid="1780431884109392046">"تاثرات بھیجیں"</string>
+    <string name="select_language" msgid="3693815588777926848">"ان پٹ زبانیں"</string>
+    <string name="hint_add_to_dictionary" msgid="573678656946085380">"محفوظ کرنے کیلئے دوبارہ ٹچ کریں"</string>
+    <string name="has_dictionary" msgid="6071847973466625007">"لغت دستیاب ہے"</string>
+    <string name="keyboard_layout" msgid="8451164783510487501">"کی بورڈ تھیم"</string>
+    <string name="subtype_en_GB" msgid="88170601942311355">"انگریزی (برطانیہ)"</string>
+    <string name="subtype_en_US" msgid="6160452336634534239">"انگریزی (امریکہ)"</string>
+    <string name="subtype_es_US" msgid="5583145191430180200">"ہسپانوی (امریکہ)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"انگریزی (برطانیہ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"انگریزی (امریکہ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"ہسپانوی (امریکہ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (روایتی)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (سیریلک)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (لاطینی)"</string>
+    <string name="subtype_no_language" msgid="7137390094240139495">"کوئی زبان نہیں (الفابیٹ)"</string>
+    <string name="subtype_no_language_qwerty" msgid="244337630616742604">"‏حروف تہجی (QWERTY)"</string>
+    <string name="subtype_no_language_qwertz" msgid="443066912507547976">"‏حروف تہجی (QWERTZ)"</string>
+    <string name="subtype_no_language_azerty" msgid="8144348527575640087">"‏حروف تہجی (AZERTY)"</string>
+    <string name="subtype_no_language_dvorak" msgid="1564494667584718094">"‏حروف تہجی (Dvorak)"</string>
+    <string name="subtype_no_language_colemak" msgid="5837418400010302623">"‏حروف تہجی (Colemak)"</string>
+    <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"‏حروف تہجی (PC)"</string>
+    <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <string name="custom_input_styles_title" msgid="8429952441821251512">"حسب ضرورت ان پٹ اسٹائلز"</string>
+    <string name="add_style" msgid="6163126614514489951">"اسٹائل شامل کریں"</string>
+    <string name="add" msgid="8299699805688017798">"شامل کریں"</string>
+    <string name="remove" msgid="4486081658752944606">"ہٹائیں"</string>
+    <string name="save" msgid="7646738597196767214">"محفوظ کریں"</string>
+    <string name="subtype_locale" msgid="8576443440738143764">"زبان"</string>
+    <string name="keyboard_layout_set" msgid="4309233698194565609">"لے آؤٹ"</string>
+    <string name="custom_input_style_note_message" msgid="8826731320846363423">"آپ کیلئے اپنا حسب ضرورت ان پٹ اسٹائل استعمال کرنے سے پہلے اسے فعال کرنا ضروری ہے۔ کیا آپ اسے ابھی فعال کرنا چاہتے ہیں؟"</string>
+    <string name="enable" msgid="5031294444630523247">"فعال کریں"</string>
+    <string name="not_now" msgid="6172462888202790482">"ابھی نہیں"</string>
+    <string name="custom_input_style_already_exists" msgid="8008728952215449707">"ایسا ہی ان پٹ اسٹائل پہلے سے موجود ہے: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
+    <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"کلید کو دیر تک دبانے کی تاخیر"</string>
+    <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"کلید دبانے پر وائبریشن کا دورانیہ"</string>
+    <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"کلید دبانے پر آواز کا والیوم"</string>
+    <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"خارجی لغت کی فائل پڑھیں"</string>
+    <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"ڈاؤن لوڈز فولڈر میں کوئی لغت فائلیں نہیں ہیں"</string>
+    <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"انسٹال کرنے کیلئے ایک لغت فائل منتخب کریں"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> کیلئے واقعی اس فائل کو انسٹال کریں؟"</string>
+    <string name="error" msgid="8940763624668513648">"ایک خرابی پیش آگئی"</string>
+    <string name="button_default" msgid="3988017840431881491">"ڈیفالٹ"</string>
+    <string name="setup_welcome_title" msgid="6112821709832031715">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> میں خوش آمدید"</string>
+    <string name="setup_welcome_additional_description" msgid="8150252008545768953">"اشارہ ٹائپنگ کے ساتھ"</string>
+    <string name="setup_start_action" msgid="8936036460897347708">"شروع کریں"</string>
+    <string name="setup_next_action" msgid="371821437915144603">"اگلا مرحلہ"</string>
+    <string name="setup_steps_title" msgid="6400373034871816182">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ترتیب دینا"</string>
+    <string name="setup_step1_title" msgid="3147967630253462315">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> کو فعال کریں"</string>
+    <string name="setup_step1_instruction" msgid="2578631936624637241">"براہ کرم \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" کو اپنی زبان اور ان پٹ ترتیبات میں چیک کریں۔ اس سے اس کو آپ کے آلہ پر چلانے کی اجازت مل جائے گی۔"</string>
+    <string name="setup_step1_finished_instruction" msgid="10761482004957994">"‏<xliff:g id="APPLICATION_NAME">%s</xliff:g> پہلے ہی آپ کی زبان ‎اور‎ ان پٹ ترتیبات میں فعال ہے، لہذا یہ مرحلہ مکمل ہو گیا ہے۔ اگلے پر!"</string>
+    <string name="setup_step1_action" msgid="4366513534999901728">"ترتیبات میں فعال کریں"</string>
+    <string name="setup_step2_title" msgid="6860725447906690594">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> پر سوئچ کریں"</string>
+    <string name="setup_step2_instruction" msgid="9141481964870023336">"آگے، \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" کو اپنے فعال متنی اندراج کے طریقہ کے بطور منتخب کریں۔"</string>
+    <string name="setup_step2_action" msgid="1660330307159824337">"اندراج کے طریقے سوئچ کریں"</string>
+    <string name="setup_step3_title" msgid="3154757183631490281">"مبارک ہو، آپ بالکل تیار ہیں!"</string>
+    <string name="setup_step3_instruction" msgid="8025981829605426000">"اب آپ <xliff:g id="APPLICATION_NAME">%s</xliff:g> کے ساتھ اپنی سبھی پسندیدہ ایپس میں ٹائپ کر سکتے ہیں۔"</string>
+    <string name="setup_step3_action" msgid="600879797256942259">"اضافی زبانیں کنفیگر کریں"</string>
+    <string name="setup_finish_action" msgid="276559243409465389">"مکمل ہو گیا"</string>
+    <string name="show_setup_wizard_icon" msgid="5008028590593710830">"ایپ آئیکن دکھائیں"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"لانچر میں ایپلیکیشن آئیکن کو ڈسپلے کریں"</string>
+    <string name="app_name" msgid="6320102637491234792">"لغت فراہم کنندہ"</string>
+    <string name="dictionary_provider_name" msgid="3027315045397363079">"لغت فراہم کنندہ"</string>
+    <string name="dictionary_service_name" msgid="6237472350693511448">"لغت سروس"</string>
+    <string name="download_description" msgid="6014835283119198591">"لغت اپ ڈیٹ کی معلومات"</string>
+    <string name="dictionary_settings_title" msgid="8091417676045693313">"اضافی لغات"</string>
+    <string name="dictionary_install_over_metered_network_prompt" msgid="3587517870006332980">"لغت دستیاب ہے"</string>
+    <string name="dictionary_settings_summary" msgid="5305694987799824349">"لغات کیلئے ترتیبات"</string>
+    <string name="user_dictionaries" msgid="3582332055892252845">"صارف لغات"</string>
+    <string name="default_user_dict_pref_name" msgid="1625055720489280530">"صارف کی لغت"</string>
+    <string name="dictionary_available" msgid="4728975345815214218">"لغت دستیاب ہے"</string>
+    <string name="dictionary_downloading" msgid="2982650524622620983">"فی الحال ڈاؤن لوڈ ہو رہی ہے"</string>
+    <string name="dictionary_installed" msgid="8081558343559342962">"انسٹال کردہ"</string>
+    <string name="dictionary_disabled" msgid="8950383219564621762">"انسٹال کردہ، غیر فعال"</string>
+    <string name="cannot_connect_to_dict_service" msgid="9216933695765732398">"لغت سروس سے مربوط ہونے میں مسئلہ"</string>
+    <string name="no_dictionaries_available" msgid="8039920716566132611">"کوئی لغت دستیاب نہیں"</string>
+    <string name="check_for_updates_now" msgid="8087688440916388581">"ریفریش کریں"</string>
+    <string name="last_update" msgid="730467549913588780">"آخری بار اپ ڈیٹ کردہ"</string>
+    <string name="message_updating" msgid="4457761393932375219">"اپ ڈیٹس چیک کر رہے ہیں"</string>
+    <string name="message_loading" msgid="5638680861387748936">"لوڈ ہو رہی ہے…"</string>
+    <string name="main_dict_description" msgid="3072821352793492143">"مرکزی لغت"</string>
+    <string name="cancel" msgid="6830980399865683324">"منسوخ کریں"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"ترتیبات"</string>
+    <string name="install_dict" msgid="180852772562189365">"انسٹال کریں"</string>
+    <string name="cancel_download_dict" msgid="7843340278507019303">"منسوخ کریں"</string>
+    <string name="delete_dict" msgid="756853268088330054">"حذف کریں"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"‏آپ کے موبائل آلہ پر منتخب کردہ زبان کیلئے ایک لغت دستیاب ہے۔&lt;br/&gt; آپ کے ٹائپنگ تجربہ کو بہتر بنانے کیلئے ہم <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> لغت کو &lt;b&gt;ڈاؤن لوڈ کرنے&lt;/b&gt; کی تجویز کرتے ہیں۔&lt;br/&gt; &lt;br/&gt; ڈاؤن لوڈ میں 3G پر ایک یا دو منٹ لگ سکتے ہیں۔ اگر آپ کے پاس &lt;b&gt;غیر محدود ڈیٹا پلان&lt;/b&gt; نہیں ہے تو چارجز لاگو ہو سکتے ہیں۔&lt;br/&gt; اگر آپ کو یقین نہیں ہے کہ آپ کے پاس کون سا ڈیٹا پلان ہے تو ہم ڈاؤن لوڈ خود کار طور پر شروع کرنے کیلئے ایک Wi-Fi کنکشن تلاش کرنے کی تجویز کرتے ہیں۔&lt;br/&gt; &lt;br/&gt; تجویز: آپ اپنے موبائل آلہ کے &lt;b&gt;ترتیبات&lt;/b&gt; مینو میں <b>زبان اور ان پٹ</b> پر جا کر لغات کو ڈاؤن لوڈ کر سکتے اور ہٹا سکتے ہیں"</string>
+    <string name="download_over_metered" msgid="1643065851159409546">"‏ابھی ڈاؤن لوڈ کریں (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
+    <string name="do_not_download_over_metered" msgid="2176209579313941583">"‏Wi-Fi پر ڈاؤن لوڈ کریں"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> کیلئے ایک لغت دستیاب ہے"</string>
+    <string name="dict_available_notification_description" msgid="1075194169443163487">"جائزہ لینے اور ڈاؤن لوڈ کرنے کیلئے دبائیں"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"ڈاؤن لوڈ ہو رہا ہے: <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> کیلئے تجاویز جلد ہی تیار ہو جائیں گی۔"</string>
+    <string name="version_text" msgid="2715354215568469385">"ورژن <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
+    <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"شامل کریں"</string>
+    <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"لغت میں شامل کریں"</string>
+    <string name="user_dict_settings_add_screen_title" msgid="5818914331629278758">"جملہ"</string>
+    <string name="user_dict_settings_add_dialog_more_options" msgid="5671682004887093112">"مزید اختیارات"</string>
+    <string name="user_dict_settings_add_dialog_less_options" msgid="2716586567241724126">"کم اختیارات"</string>
+    <string name="user_dict_settings_add_dialog_confirm" msgid="4703129507388332950">"ٹھیک ہے"</string>
+    <string name="user_dict_settings_add_word_option_name" msgid="6665558053408962865">"لفظ:"</string>
+    <string name="user_dict_settings_add_shortcut_option_name" msgid="3094731590655523777">"شارٹ کٹ:"</string>
+    <string name="user_dict_settings_add_locale_option_name" msgid="4738643440987277705">"زبان:"</string>
+    <string name="user_dict_settings_add_word_hint" msgid="4902434148985906707">"ایک لفظ ٹائپ کریں"</string>
+    <string name="user_dict_settings_add_shortcut_hint" msgid="2265453012555060178">"اختیاری شارٹ کٹ"</string>
+    <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"لفظ میں ترمیم کریں"</string>
+    <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"ترمیم کریں"</string>
+    <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"حذف کریں"</string>
+    <string name="user_dict_settings_empty_text" msgid="558499587532668203">"صارف لغت میں آپ کے پاس کوئی الفاظ نہيں ہیں۔ شامل کریں (+) بٹن کو ٹچ کر کے ایک لفظ شامل کریں۔"</string>
+    <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"سبھی زبانوں کیلئے"</string>
+    <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"مزید زبانیں…"</string>
+    <string name="user_dict_settings_delete" msgid="110413335187193859">"حذف کریں"</string>
+    <string name="user_dict_fast_scroll_alphabet" msgid="5431919401558285473">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
+</resources>
diff --git a/java/res/values-uz-rUZ/strings-action-keys.xml b/java/res/values-uz-rUZ/strings-action-keys.xml
new file mode 100644
index 0000000..1bb617c
--- /dev/null
+++ b/java/res/values-uz-rUZ/strings-action-keys.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for label_go_key (4033615332628671065) -->
+    <skip />
+    <!-- no translation found for label_next_key (5586407279258592635) -->
+    <skip />
+    <!-- no translation found for label_previous_key (1421141755779895275) -->
+    <skip />
+    <!-- no translation found for label_done_key (7564866296502630852) -->
+    <skip />
+    <!-- no translation found for label_send_key (482252074224462163) -->
+    <skip />
+    <string name="label_search_key" msgid="7965186050435796642">"Qidiruv"</string>
+    <!-- no translation found for label_pause_key (2225922926459730642) -->
+    <skip />
+    <!-- no translation found for label_wait_key (5891247853595466039) -->
+    <skip />
+</resources>
diff --git a/java/res/values-uz-rUZ/strings-letter-descriptions.xml b/java/res/values-uz-rUZ/strings-letter-descriptions.xml
new file mode 100644
index 0000000..fc1c3ff
--- /dev/null
+++ b/java/res/values-uz-rUZ/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Ayol jinsiga oid tartib ko‘rsatkichi"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Mikro belgisi"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Erkak jinsiga oid tartib ko‘rsatkichi"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"O‘tkir S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"Gravisli A"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"Akutli A"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"Sirkumfleksli A"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"Tildali A"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"Diyerezisli A"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"Tepasida halqasi bor A"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"AE-ligatura"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"Sedillali C"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"Gravisli E"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"Akutli E"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"Sirkumfleksli E"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"Diyerezisli E"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"Gravisli I"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"Akutli I"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"Sirkumfleksli I"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"Diyerezisli I"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Et"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"Tildali N"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"Gravisli O"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"Akutli O"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"Sirkumfleksli O"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"Tildali O"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"Diyerezisli O"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O‘rtasi chizilgan O"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"Gravisli U"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"Akutli U"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"Sirkumfleksli U"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"Diyerezisli U"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Akutli Y"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Torn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Diyerezisli Y"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"Makronli A"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"Brevisli A"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"Dumli A"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"Akutli C"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"Sirkumfleksli C"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"Tepasida nuqtasi bor C"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"Gajakli C"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"Gajakli D"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"O‘rtasi chizilgan D"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"Makronli E"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"Brevisli E"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"Tepasida nuqtasi bor E"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"Dumli E"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"Gajakli E"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"Sirkumfleksli G"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"Brevisli G"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"Tepasida nuqtasi bor G"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"Sedillali G"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"Sirkumfleksli H"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"O‘rtasi chizilgan H"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"Tildali I"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"Makronli I"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"Brevisli I"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"Dumli I"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Nuqtasiz I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"IJ-ligatura"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"Sirkumfleksli J"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"Sedillali K"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"Akutli L"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"Sedillali L"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"Gajakli L"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"O‘rtasida nuqtasi bor L"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"O‘rtasi chizilgan L"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"Akutli N"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"Sedillali N"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"Gajakli N"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"Apostrofli N"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Ng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"Makronli O"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"Brevisli O"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"Qo‘sh akutli O"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"OE-ligatura"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"Akutli R"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"Sedillali R"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"Gajakli R"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"Akutli S"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"Sirkumfleksli S"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"Sedillali S"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"Gajakli S"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"Sedillali T"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"Gajakli T"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"O‘rtasi chizilgan T"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"Tildali U"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"Makronli U"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"Brevisli U"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"Tepasida halqasi bor U"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"Qo‘sh akutli U"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"Dumli U"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"Sirkumfleksli W"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Sirkumfleksli Y"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Akutli Z"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Tepasida nuqtasi bor Z"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Gajakli Z"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Uzun S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"Shohli O"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"Shohli U"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"Ostida verguli bor S"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"Ostida verguli bor T"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Shva"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"Ostida nuqtasi bor A"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"Tepasida ilmog‘i bor A"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"Sirkumfleks va akutli A"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"Sirkumfleks va gravisli A"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"Sirkumfleks va tepasida ilmog‘i bor A"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"Sirkumfleks va tildali A"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"Sirkumfleks va ostida nuqtasi bor A"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"Brevis va akutli A"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"Brevis va gravisli A"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"Brevis va tepasida ilmog‘i bor A"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"Brevis va tildali A"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"Brevis va ostida nuqtasi bor A"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"Ostida nuqtasi bor E"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"Tepasida ilmog‘i bor E"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"Tildali E"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"Sirkumfleks va akutli E"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"Sirkumfleks va gravisli E"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"Sirkumfleks va tepasida ilmog‘i bor E"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"Sirkumfleks va tildali E"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"Sirkumfleks va ostida nuqtasi bor E"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"Tepasida ilmog‘i bor I"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"Ostida nuqtasi bor I"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"Ostida nuqtasi bor O"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"Tepasida ilmog‘i bor O"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"Sirkumfleks va akutli O"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"Sirkumfleks va gravisli O"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"Sirkumfleks va tepasida ilmog‘i bor O"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"Sirkumfleks va tildali O"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"Sirkumfleks va ostida nuqtasi bor O"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"Shoh va akutli O"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"Shoh va akutli O"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"Shoh va tepasida ilmog‘i bor O"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"Shoh va tildali O"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"Shoh va ostida nuqtasi bor O"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"Ostida nuqtasi bor U"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"Tepasida nuqtasi bor U"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"Shoh va akutli U"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"Shoh va gravisli U"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"Shoh va tepasida ilmog‘i bor U"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"Shoh va tildali U"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"Shoh va ostida nuqtasi bor U"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Gravisli Y"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Ostida nuqtasi bor Y"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Tepasida ilmog‘i bor Y"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Tildali Y"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Teskari undov belgisi"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Chapga qaragan burchakli qo‘shtirnoq belgisi"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Markazlashgan nuqta"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Darajada joylashgan bir"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"O‘ngga qaragan burchakli qo‘shtirnoq belgisi"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Teskari so‘roq belgisi"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Chap bir tirnoq belgisi"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"O‘ng bir tirnoq belgisi"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Indeksda joylashgan 9 ko‘rinishidagi bir tirnoq belgisi"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Chap qo‘shtirnoq belgisi"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"O‘ng qo‘shtirnoq belgisi"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Xoch belgisi"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Qo‘sh xoch belgisi"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Promille belgisi"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Kertma belgisi"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Qo‘sh kertma belgisi"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Chapga qaragan burchakli bir tirnoq belgisi"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"O‘ngga qaragan burchakli bir tirnoq belgisi"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Darajada joylashgan to‘rt"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Darajada joylashgan lotincha kichik n harfi"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Peso belgisi"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Orqali (c/o) belgisi"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"O‘ngga qaragan ko‘rsatkichli chiziqcha"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Pastga qaragan ko‘rsatkichli chiziqcha"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Bo‘sh to‘plam"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Delta belgisi"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Kichik yoki teng"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Katta yoki teng"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Qora yulduzcha"</string>
+</resources>
diff --git a/java/res/values-uz-rUZ/strings-talkback-descriptions.xml b/java/res/values-uz-rUZ/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..589790b
--- /dev/null
+++ b/java/res/values-uz-rUZ/strings-talkback-descriptions.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for spoken_use_headphones (4313642710742229868) -->
+    <skip />
+    <!-- no translation found for spoken_current_text_is (4240549866156675799) -->
+    <skip />
+    <!-- no translation found for spoken_no_text_entered (1711276837961785646) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct (8989324692167993804) -->
+    <skip />
+    <!-- no translation found for spoken_auto_correct_obscured (7769449372355268412) -->
+    <skip />
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Noma’lum belgi"</string>
+    <!-- no translation found for spoken_description_shift (7209798151676638728) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift (3483198879916435717) -->
+    <skip />
+    <!-- no translation found for spoken_description_shift_shifted (3122704922642232605) -->
+    <skip />
+    <!-- no translation found for spoken_description_symbols_shift_shifted (5179175466878186081) -->
+    <skip />
+    <!-- no translation found for spoken_description_caps_lock (1224851412185975036) -->
+    <skip />
+    <!-- no translation found for spoken_description_delete (3878902286264983302) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_symbol (8244903740201126590) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_alpha (4081215210530031950) -->
+    <skip />
+    <!-- no translation found for spoken_description_to_numeric (4560261331530795682) -->
+    <skip />
+    <!-- no translation found for spoken_description_settings (7281251004003143204) -->
+    <skip />
+    <!-- no translation found for spoken_description_tab (8210782459446866716) -->
+    <skip />
+    <!-- no translation found for spoken_description_space (5908716896642059145) -->
+    <skip />
+    <!-- no translation found for spoken_description_mic (6153138783813452464) -->
+    <skip />
+    <!-- no translation found for spoken_description_emoji (7990051553008088470) -->
+    <skip />
+    <!-- no translation found for spoken_description_return (3183692287397645708) -->
+    <skip />
+    <!-- no translation found for spoken_description_search (5099937658231911288) -->
+    <skip />
+    <!-- no translation found for spoken_description_dot (5644176501632325560) -->
+    <skip />
+    <!-- no translation found for spoken_description_language_switch (6818666779313544553) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_next (431761808119616962) -->
+    <skip />
+    <!-- no translation found for spoken_description_action_previous (2919072174697865110) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_on (5107180516341258979) -->
+    <skip />
+    <!-- no translation found for spoken_description_shiftmode_locked (7307477738053606881) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol (111186851131446691) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_symbol_shift (4305607977537665389) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_alpha (4676004119618778911) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone (2061220553756692903) -->
+    <skip />
+    <!-- no translation found for spoken_description_mode_phone_shift (7879963803547701090) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_hidden (2313574218950517779) -->
+    <skip />
+    <!-- no translation found for announce_keyboard_mode (6698257917367823205) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date (6597407244976713364) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_date_time (3642804408726668808) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_email (1239682082047693644) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_im (3812086215529493501) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_number (5395042245837996809) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_phone (2486230278064523665) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_text (9138789594969187494) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_time (8558297845514402675) -->
+    <skip />
+    <!-- no translation found for keyboard_mode_url (8072011652949962550) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_recents (4185344945205590692) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_people (8414196269847492817) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_objects (6116297906606195278) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_nature (5018340512472354640) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_places (1163315840948545317) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_symbols (474680659024880601) -->
+    <skip />
+    <!-- no translation found for spoken_descrption_emoji_category_emoticons (456737544787823539) -->
+    <skip />
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Bosh harf bilan yozilgan <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Katta I harfi"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Tepasida nuqtasi bor katta I harfi"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Noma’lum belgi"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Noma’lum kulgich"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Muqobil belgilar mavjud"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Muqobil belgilar tushirib qoldirildi"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Muqobil takliflar mavjud"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Muqobil takliflar tushirib qoldirildi"</string>
+</resources>
diff --git a/java/res/values-uz-rUZ/strings.xml b/java/res/values-uz-rUZ/strings.xml
new file mode 100644
index 0000000..2b5da53
--- /dev/null
+++ b/java/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2008, 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- no translation found for english_ime_input_options (3909945612939668554) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_title (5374120998125353898) -->
+    <skip />
+    <!-- no translation found for use_contacts_for_spellchecking_option_summary (8754413382543307713) -->
+    <skip />
+    <!-- no translation found for vibrate_on_keypress (5258079494276955460) -->
+    <skip />
+    <!-- no translation found for sound_on_keypress (6093592297198243644) -->
+    <skip />
+    <!-- no translation found for popup_on_keypress (123894815723512944) -->
+    <skip />
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list (4533689960308565519) -->
+    <skip />
+    <!-- no translation found for include_other_imes_in_language_switch_list_summary (840637129103317635) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key (5915478828318774384) -->
+    <skip />
+    <!-- no translation found for show_language_switch_key_summary (7343403647474265713) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview (6604262359510068370) -->
+    <skip />
+    <!-- no translation found for sliding_key_input_preview_summary (6340524345729093886) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_delay (6213164897443068248) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_no_delay (2096123151571458064) -->
+    <skip />
+    <!-- no translation found for key_preview_popup_dismiss_default_delay (2166964333903906734) -->
+    <skip />
+    <!-- no translation found for abbreviation_unit_milliseconds (8700286094028323363) -->
+    <skip />
+    <!-- no translation found for settings_system_default (6268225104743331821) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict (4435317977804180815) -->
+    <skip />
+    <!-- no translation found for use_contacts_dict_summary (6599983334507879959) -->
+    <skip />
+    <!-- no translation found for use_personalized_dicts (5167396352105467626) -->
+    <skip />
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ilovasini takomillashtirish"</string>
+    <!-- no translation found for use_double_space_period (8781529969425082860) -->
+    <skip />
+    <!-- no translation found for use_double_space_period_summary (6532892187247952799) -->
+    <skip />
+    <!-- no translation found for auto_cap (1719746674854628252) -->
+    <skip />
+    <!-- no translation found for auto_cap_summary (7934452761022946874) -->
+    <skip />
+    <!-- no translation found for edit_personal_dictionary (3996910038952940420) -->
+    <skip />
+    <!-- no translation found for configure_dictionaries_title (4238652338556902049) -->
+    <skip />
+    <!-- no translation found for main_dictionary (4798763781818361168) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions (8026799663445531637) -->
+    <skip />
+    <!-- no translation found for prefs_show_suggestions_summary (1583132279498502825) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_name (3219916594067551303) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_show_only_portrait_name (3859783767435239118) -->
+    <skip />
+    <!-- no translation found for prefs_suggestion_visibility_hide_name (6309143926422234673) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_title (5078480071057408934) -->
+    <skip />
+    <!-- no translation found for prefs_block_potentially_offensive_summary (2371835479734991364) -->
+    <skip />
+    <!-- no translation found for auto_correction (7630720885194996950) -->
+    <skip />
+    <!-- no translation found for auto_correction_summary (5625751551134658006) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_off (8470882665417944026) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_modest (8788366690620799097) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_aggressive (7319007299148899623) -->
+    <skip />
+    <!-- no translation found for auto_correction_threshold_mode_very_aggressive (1853309024129480416) -->
+    <skip />
+    <!-- no translation found for bigram_prediction (1084449187723948550) -->
+    <skip />
+    <!-- no translation found for bigram_prediction_summary (3896362682751109677) -->
+    <skip />
+    <!-- no translation found for gesture_input (826951152254563827) -->
+    <skip />
+    <!-- no translation found for gesture_input_summary (9180350639305731231) -->
+    <skip />
+    <!-- no translation found for gesture_preview_trail (3802333369335722221) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text (4443240334739381053) -->
+    <skip />
+    <!-- no translation found for gesture_floating_preview_text_summary (4472696213996203533) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware (2078291600664682496) -->
+    <skip />
+    <!-- no translation found for gesture_space_aware_summary (4371385818348528538) -->
+    <skip />
+    <!-- no translation found for voice_input (3583258583521397548) -->
+    <skip />
+    <!-- no translation found for voice_input_disabled_summary (8141750303464726129) -->
+    <skip />
+    <!-- no translation found for configure_input_method (373356270290742459) -->
+    <skip />
+    <!-- no translation found for language_selection_title (1651299598555326750) -->
+    <skip />
+    <!-- no translation found for send_feedback (1780431884109392046) -->
+    <skip />
+    <!-- no translation found for select_language (3693815588777926848) -->
+    <skip />
+    <!-- no translation found for hint_add_to_dictionary (573678656946085380) -->
+    <skip />
+    <!-- no translation found for has_dictionary (6071847973466625007) -->
+    <skip />
+    <!-- no translation found for keyboard_layout (8451164783510487501) -->
+    <skip />
+    <!-- no translation found for subtype_en_GB (88170601942311355) -->
+    <skip />
+    <!-- no translation found for subtype_en_US (6160452336634534239) -->
+    <skip />
+    <!-- no translation found for subtype_es_US (5583145191430180200) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_GB (1931018968641592304) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_en_US (8809311287529805422) -->
+    <skip />
+    <!-- no translation found for subtype_with_layout_es_US (510930471167541338) -->
+    <skip />
+    <!-- no translation found for subtype_generic_traditional (8584594350973800586) -->
+    <skip />
+    <!-- no translation found for subtype_generic_cyrillic (7486451947618138947) -->
+    <skip />
+    <!-- no translation found for subtype_generic_latin (9128716486310604145) -->
+    <skip />
+    <!-- no translation found for subtype_no_language (7137390094240139495) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwerty (244337630616742604) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_qwertz (443066912507547976) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_azerty (8144348527575640087) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_dvorak (1564494667584718094) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_colemak (5837418400010302623) -->
+    <skip />
+    <!-- no translation found for subtype_no_language_pcqwerty (5354918232046200018) -->
+    <skip />
+    <!-- no translation found for subtype_emoji (7483586578074549196) -->
+    <skip />
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
+    <!-- no translation found for custom_input_styles_title (8429952441821251512) -->
+    <skip />
+    <!-- no translation found for add_style (6163126614514489951) -->
+    <skip />
+    <!-- no translation found for add (8299699805688017798) -->
+    <skip />
+    <!-- no translation found for remove (4486081658752944606) -->
+    <skip />
+    <!-- no translation found for save (7646738597196767214) -->
+    <skip />
+    <!-- no translation found for subtype_locale (8576443440738143764) -->
+    <skip />
+    <!-- no translation found for keyboard_layout_set (4309233698194565609) -->
+    <skip />
+    <!-- no translation found for custom_input_style_note_message (8826731320846363423) -->
+    <skip />
+    <!-- no translation found for enable (5031294444630523247) -->
+    <skip />
+    <!-- no translation found for not_now (6172462888202790482) -->
+    <skip />
+    <!-- no translation found for custom_input_style_already_exists (8008728952215449707) -->
+    <skip />
+    <!-- no translation found for prefs_key_longpress_timeout_settings (6102240298932897873) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_vibration_duration_settings (7918341459947439226) -->
+    <skip />
+    <!-- no translation found for prefs_keypress_sound_volume_settings (6027007337036891623) -->
+    <skip />
+    <!-- no translation found for prefs_read_external_dictionary (2588931418575013067) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_no_files_message (4947420942224623792) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_multiple_files_title (7637749044265808628) -->
+    <skip />
+    <!-- no translation found for read_external_dictionary_confirm_install_message (4782116251651288054) -->
+    <skip />
+    <!-- no translation found for error (8940763624668513648) -->
+    <skip />
+    <!-- no translation found for button_default (3988017840431881491) -->
+    <skip />
+    <!-- no translation found for setup_welcome_title (6112821709832031715) -->
+    <skip />
+    <!-- no translation found for setup_welcome_additional_description (8150252008545768953) -->
+    <skip />
+    <!-- no translation found for setup_start_action (8936036460897347708) -->
+    <skip />
+    <!-- no translation found for setup_next_action (371821437915144603) -->
+    <skip />
+    <!-- no translation found for setup_steps_title (6400373034871816182) -->
+    <skip />
+    <!-- no translation found for setup_step1_title (3147967630253462315) -->
+    <skip />
+    <!-- no translation found for setup_step1_instruction (2578631936624637241) -->
+    <skip />
+    <!-- no translation found for setup_step1_finished_instruction (10761482004957994) -->
+    <skip />
+    <!-- no translation found for setup_step1_action (4366513534999901728) -->
+    <skip />
+    <!-- no translation found for setup_step2_title (6860725447906690594) -->
+    <skip />
+    <!-- no translation found for setup_step2_instruction (9141481964870023336) -->
+    <skip />
+    <!-- no translation found for setup_step2_action (1660330307159824337) -->
+    <skip />
+    <!-- no translation found for setup_step3_title (3154757183631490281) -->
+    <skip />
+    <!-- no translation found for setup_step3_instruction (8025981829605426000) -->
+    <skip />
+    <!-- no translation found for setup_step3_action (600879797256942259) -->
+    <skip />
+    <!-- no translation found for setup_finish_action (276559243409465389) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon (5008028590593710830) -->
+    <skip />
+    <!-- no translation found for show_setup_wizard_icon_summary (4119998322536880213) -->
+    <skip />
+    <!-- no translation found for app_name (6320102637491234792) -->
+    <skip />
+    <!-- no translation found for dictionary_provider_name (3027315045397363079) -->
+    <skip />
+    <!-- no translation found for dictionary_service_name (6237472350693511448) -->
+    <skip />
+    <!-- no translation found for download_description (6014835283119198591) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_title (8091417676045693313) -->
+    <skip />
+    <!-- no translation found for dictionary_install_over_metered_network_prompt (3587517870006332980) -->
+    <skip />
+    <!-- no translation found for dictionary_settings_summary (5305694987799824349) -->
+    <skip />
+    <!-- no translation found for user_dictionaries (3582332055892252845) -->
+    <skip />
+    <!-- no translation found for default_user_dict_pref_name (1625055720489280530) -->
+    <skip />
+    <!-- no translation found for dictionary_available (4728975345815214218) -->
+    <skip />
+    <!-- no translation found for dictionary_downloading (2982650524622620983) -->
+    <skip />
+    <!-- no translation found for dictionary_installed (8081558343559342962) -->
+    <skip />
+    <!-- no translation found for dictionary_disabled (8950383219564621762) -->
+    <skip />
+    <!-- no translation found for cannot_connect_to_dict_service (9216933695765732398) -->
+    <skip />
+    <!-- no translation found for no_dictionaries_available (8039920716566132611) -->
+    <skip />
+    <!-- no translation found for check_for_updates_now (8087688440916388581) -->
+    <skip />
+    <!-- no translation found for last_update (730467549913588780) -->
+    <skip />
+    <!-- no translation found for message_updating (4457761393932375219) -->
+    <skip />
+    <!-- no translation found for message_loading (5638680861387748936) -->
+    <skip />
+    <!-- no translation found for main_dict_description (3072821352793492143) -->
+    <skip />
+    <!-- no translation found for cancel (6830980399865683324) -->
+    <skip />
+    <!-- no translation found for go_to_settings (3876892339342569259) -->
+    <skip />
+    <!-- no translation found for install_dict (180852772562189365) -->
+    <skip />
+    <!-- no translation found for cancel_download_dict (7843340278507019303) -->
+    <skip />
+    <!-- no translation found for delete_dict (756853268088330054) -->
+    <skip />
+    <!-- no translation found for should_download_over_metered_prompt (1583881200688185508) -->
+    <skip />
+    <!-- no translation found for download_over_metered (1643065851159409546) -->
+    <skip />
+    <!-- no translation found for do_not_download_over_metered (2176209579313941583) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_title (4583842811218581658) -->
+    <skip />
+    <!-- no translation found for dict_available_notification_description (1075194169443163487) -->
+    <skip />
+    <!-- no translation found for toast_downloading_suggestions (6128155879830851739) -->
+    <skip />
+    <!-- no translation found for version_text (2715354215568469385) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_menu_title (1254195365689387076) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_title (4096700390211748168) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_screen_title (5818914331629278758) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_more_options (5671682004887093112) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_less_options (2716586567241724126) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_dialog_confirm (4703129507388332950) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_option_name (6665558053408962865) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_option_name (3094731590655523777) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_locale_option_name (4738643440987277705) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_word_hint (4902434148985906707) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_add_shortcut_hint (2265453012555060178) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_edit_dialog_title (3765774633869590352) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_edit_title (6812255903472456302) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_context_menu_delete_title (8142932447689461181) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_empty_text (558499587532668203) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_all_languages (8276126583216298886) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_more_languages (7131268499685180461) -->
+    <skip />
+    <!-- no translation found for user_dict_settings_delete (110413335187193859) -->
+    <skip />
+    <!-- no translation found for user_dict_fast_scroll_alphabet (5431919401558285473) -->
+    <skip />
+</resources>
diff --git a/java/res/values-v21/platform-theme.xml b/java/res/values-v21/platform-theme.xml
new file mode 100644
index 0000000..2a54798
--- /dev/null
+++ b/java/res/values-v21/platform-theme.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="platformActivityTheme" parent="@android:style/Theme.DeviceDefault.Light" />
+    <style name="platformSettingsTheme" parent="@android:style/Theme.DeviceDefault.Light" />
+    <style name="platformDialogTheme" parent="@android:style/Theme.DeviceDefault.Light.Dialog" />
+</resources>
diff --git a/java/res/values-vi/strings-action-keys.xml b/java/res/values-vi/strings-action-keys.xml
index ceb780e..3c40608 100644
--- a/java/res/values-vi/strings-action-keys.xml
+++ b/java/res/values-vi/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Trước"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Xong"</string>
     <string name="label_send_key" msgid="482252074224462163">"Gửi"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Tìm kiếm"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Tdừng"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Đợi"</string>
 </resources>
diff --git a/java/res/values-vi/strings-config-important-notice.xml b/java/res/values-vi/strings-config-important-notice.xml
new file mode 100644
index 0000000..828f0b6
--- /dev/null
+++ b/java/res/values-vi/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Tìm hiểu từ thư từ trao đổi và dữ liệu đã nhập của bạn để cải tiến đề xuất"</string>
+</resources>
diff --git a/java/res/values-vi/strings-letter-descriptions.xml b/java/res/values-vi/strings-letter-descriptions.xml
new file mode 100644
index 0000000..74f199f
--- /dev/null
+++ b/java/res/values-vi/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Chỉ báo thứ tự giống cái"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Ký hiệu micrô"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Chỉ báo thứ tự giống đực"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, dấu huyền"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, dấu sắc"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, dấu mũ"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, dấu ngã"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, dấu tách đôi"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, dấu nhẫn phía trên"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, dấu gạch nối"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, dấu huyền"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, dấu sắc"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, dấu mũ"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, dấu tách đôi"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, dấu huyền"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, dấu sắc"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, dấu mũ"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, dấu tách đôi"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, dấu ngã"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, dấu huyền"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, dấu sắc"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, dấu mũ"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, dấu ngã"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, dấu tách đôi"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, nét gạch"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, dấu huyền"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, dấu sắc"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, dấu mũ"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, dấu tách đôi"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, dấu sắc"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Dấu móc"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, dấu tách đôi"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, sự làm dấu"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, dấu ngân"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, một cái đuôi nhỏ"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, dấu sắc"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, dấu mũ"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, dấu chấm phía trên"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, nét gạch"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, sự làm dấu"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, dấu ngân"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, dấu chấm phía trên"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, một cái đuôi nhỏ"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, dấu mũ"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, dấu ngân"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, dấu chấm phía trên"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, dấu mũ"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, nét gạch"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, dấu ngã"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, sự làm dấu"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, dấu ngân"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, một cái đuôi nhỏ"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"I không dấu chấm"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, dấu gạch nối"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, dấu mũ"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, dấu sắc"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, chấm ở giữa"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, nét gạch"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, dấu sắc"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, theo sau dấu móc lửng"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, sự làm dấu"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, dấu ngân"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, hai dấu sắc"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, dấu gạch nối"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, dấu sắc"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, dấu sắc"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, dấu mũ"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, dấu móc dưới"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, nét gạch"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, dấu ngã"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, sự làm dấu"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, dấu ngân"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, dấu nhẫn ở trên"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, hai dấu sắc"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, một cái đuôi nhỏ"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, dấu mũ"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, dấu mũ"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, dấu sắc"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, dấu chấm phía trên"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, dấu mũ ngược"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"S dài"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, dấu móc"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, dấu móc"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, dấu phẩy phía dưới"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, dấu phẩy phía dưới"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Âm Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, dấu móc phía trên"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, dấu mũ và dấu sắc"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, dấu mũ và dấu huyền"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, dấu mũ và móc phía trên"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, dấu mũ và dấu ngã"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, dấu mũ và dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, dấu ngân và dấu sắc"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, dấu ngân và dấu huyền"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, dấu ngân và móc phía trên"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, dấu ngân và dấu ngã"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, dấu ngân và dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, móc phía trên"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, dấu ngã"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, dấu mũ và dấu sắc"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, dấu mũ và dấu huyền"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, dấu mũ và móc phía trên"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, dấu mũ và dấu ngã"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, dấu mũ và dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, móc phía trên"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, móc phía trên"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, dấu mũ và dấu sắc"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, dấu mũ và dấu huyền"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, dấu mũ và móc phía trên"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, dấu mũ và dấu ngã"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, dấu mũ và dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, dấu móc và dấu sắc"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, dấu móc và dấu huyền"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, dấu móc và móc phía trên"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, dấu móc và dấu ngã"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, dấu móc và dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, móc phía trên"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, dấu móc và dấu sắc"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, dấu móc và dấu huyền"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, dấu móc và móc phía trên"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, dấu móc và dấu ngã"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, dấu móc và dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, dấu huyền"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, dấu chấm phía dưới"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, móc phía trên"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, dấu ngã"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Dấu cảm thán đảo ngược"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Dấu ngoặc kép mở"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Dấu chấm ở giữa"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"Chỉ số trên một"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Dấu ngoặc kép đóng"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Dấu hỏi đảo ngược"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Dấu ngoặc đơn mở"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Dấu ngoặc đơn đóng"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Dấu trích dẫn đơn"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Dấu ngoặc kép mở"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Dấu ngoặc kép đóng"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dấu chữ thập"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Dấu chữ thập kép"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Dấu cho mỗi ngàn"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Dấu phẩy"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Hai phẩy"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Dấu ngoặc đơn mở"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Dấu ngoặc đơn đóng"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Chỉ số trên bốn"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"Chỉ số trên của n thường"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Ký hiệu đồng Pêsô"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Dấu phần trăm"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Mũi tên về phía phải"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Mũi tên xuống dưới"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Tập rỗng"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Tăng dần"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Nhỏ hơn hoặc bằng"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Lớn hơn hoặc bằng"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Sao đen"</string>
+</resources>
diff --git a/java/res/values-vi/strings-talkback-descriptions.xml b/java/res/values-vi/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..659b1d3
--- /dev/null
+++ b/java/res/values-vi/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Cắm tai nghe để nghe mật khẩu được đọc to."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Ký tự hiện tại là %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Không có ký tự nào được nhập"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"<xliff:g id="KEY_NAME">%1$s</xliff:g> sửa <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> thành <xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"<xliff:g id="KEY_NAME">%1$s</xliff:g> tự động sửa"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Ký tự không xác định"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Biểu tượng khác"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Biểu tượng"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Xóa"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Biểu tượng"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Chữ cái"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Số"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Cài đặt"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Dấu cách"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Nhập bằng giọng nói"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"Biểu tượng cảm xúc"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Quay lại"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Tìm kiếm"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Dấu chấm"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Chuyển ngôn ngữ"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Tiếp theo"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Trước"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Đã bật Shift"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Đã bật Caps lock"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Chế độ biểu tượng"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Chế độ biểu tượng khác"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Chế độ chữ cái"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Chế độ điện thoại"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Chế độ biểu tượng điện thoại"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Bàn phím bị ẩn"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Hiển thị bàn phím <xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"ngày"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"ngày và giờ"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"email"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"nhắn tin"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"số"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"điện thoại"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"văn bản"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"giờ"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Gần đây"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Con người"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Đồ vật"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Tự nhiên"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Địa điểm"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Biểu tượng"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Biểu tượng cảm xúc"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"<xliff:g id="LOWER_LETTER">%s</xliff:g> hoa"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"I hoa"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"I hoa, dấu chấm phía trên"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Ký hiệu không xác định"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"Biểu tượng cảm xúc không xác định"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Có ký tự thay thế"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Ký tự thay thế đã bị loại bỏ"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Có đề xuất thay thế"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Đề xuất thay thế đã bị loại bỏ"</string>
+</resources>
diff --git a/java/res/values-vi/strings.xml b/java/res/values-vi/strings.xml
index 81cd373..ccb8668 100644
--- a/java/res/values-vi/strings.xml
+++ b/java/res/values-vi/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Tùy chọn nhập"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Lệnh ghi nhật ký cho nghiên cứu"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Tra cứu tên liên hệ"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Trình kiểm tra chính tả sử dụng các mục nhập từ danh sách liên hệ của bạn"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Rung khi nhấn phím"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Âm thanh khi nhấn phím"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Cửa sổ bật lên khi nhấn phím"</string>
-    <string name="general_category" msgid="1859088467017573195">"Chung"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Sửa văn bản"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Nhập bằng cử chỉ"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Tùy chọn khác"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Cài đặt nâng cao"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Tùy chọn dành cho chuyên gia"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Phương thức nhập khác"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Khóa chuyển ngôn ngữ bao gồm cả các phương thức nhập liệu khác"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Phím chuyển đổi ngôn ngữ"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Mặc định của hệ thống"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Đề xuất tên liên hệ"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Sử dụng tên từ Danh bạ cho các đề xuất và chỉnh sửa"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Đề xuất được cá nhân hóa"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Cải thiện <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Dấu cách đôi"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Nhấn đúp vào phím cách sẽ chèn thêm một dấu sau dấu cách"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Tự động viết hoa"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Hiển thị vệt cử chỉ"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Xem trước nổi động"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Xem từ được đề xuất trong khi dùng cử chỉ"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Đã lưu"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Cắm tai nghe để nghe mật khẩu."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Ký tự hiện tại là %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Không có ký tự nào được nhập"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"<xliff:g id="KEY">%1$s</xliff:g> sửa <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> thành <xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"<xliff:g id="KEY">%1$s</xliff:g> thực hiện tự động sửa"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Mã phím %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift đang bật (bấm để tắt)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Caps lock đang bật (bấm để tắt)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Xóa"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Biểu tượng"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Chữ cái"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Số"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Cài đặt"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Dấu cách"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Nhập dữ liệu bằng giọng nói"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Mặt cười"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Quay lại"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Tìm kiếm"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Dấu chấm"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Chuyển ngôn ngữ"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Tiếp theo"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Trước"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Đã bật Shift"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Đã bật Caps lock"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Đã tắt Shift"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Chế độ biểu tượng"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Chế độ chữ cái"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Chế độ điện thoại"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Chế độ biểu tượng điện thoại"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Bàn phím bị ẩn"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Hiển thị bàn phím <xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"ngày"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"ngày và giờ"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"email"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"nhắn tin"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"số"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"điện thoại"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"văn bản"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"giờ"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Cử chỉ nhập cụm từ"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Nhập dấu cách khi thực hiện cử chỉ bằng cách trượt tới phím cách"</string>
     <string name="voice_input" msgid="3583258583521397548">"Khóa nhập giọng nói"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Trên bàn phím chính"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Trên bàn phím biểu tượng"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"Tắt"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"Micrô trên bàn phím chính"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Micrô trên bàn phím biểu tượng"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Nhập liệu bằng giọng nói đã bị tắt"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Không có phương thức nhập bằng giọng nói nào được bật. Kiểm tra cài đặt Ngôn ngữ và phương thức nhập."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Định cấu hình phương thức nhập"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Ngôn ngữ nhập"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Gửi phản hồi"</string>
     <string name="select_language" msgid="3693815588777926848">"Ngôn ngữ nhập"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Chạm lại để lưu"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Có sẵn từ điển"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Bật phản hồi của người dùng"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Giúp cải tiến trình chỉnh sửa phương thức nhập này bằng cách tự động gửi thống kê sử dụng và báo cáo sự cố"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Chủ đề bàn phím"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"Tiếng Anh (Anh)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"Tiếng Anh (Mỹ)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"Tiếng Tây Ban Nha (Mỹ)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"Tiếng Anh (Anh) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"Tiếng Anh (Mỹ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"Tiếng Tây Ban Nha (Mỹ) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Truyền thống)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"Tiếng Anh (Anh) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"Tiếng Anh (Mỹ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Tiếng Tây Ban Nha (Mỹ) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Truyền thống)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tiếng Kirin)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (tiếng Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Không ngôn ngữ nào (Bảng chữ cái)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Bảng chữ cái (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Bảng chữ cái (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Bảng chữ cái (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Bảng chữ cái (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Biểu tượng cảm xúc"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Phối màu"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Trắng"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Lam"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Kiểu nhập tùy chỉnh"</string>
     <string name="add_style" msgid="6163126614514489951">"Thêm kiểu"</string>
     <string name="add" msgid="8299699805688017798">"Thêm"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Bật"</string>
     <string name="not_now" msgid="6172462888202790482">"Để sau"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Đã tồn tại kiểu nhập tương tự: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Chế độ nghiên cứu tính khả dụng"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Tgian chờ cho nhấn và giữ phím"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Thời gian rung khi nhấn phím"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Âm lượng khi nhấn phím"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Đọc tệp từ điển bên ngoài"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Không có tệp từ điển nào trong thư mục Nội dung tải xuống"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Chọn tệp từ điển để cài đặt"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Thực sự cài đặt tệp này cho <xliff:g id="LOCALE_NAME">%s</xliff:g>?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Thực sự cài đặt tệp này cho <xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Đã xảy ra lỗi"</string>
     <string name="button_default" msgid="3988017840431881491">"Mặc định"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Chào mừng bạn đến với <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -188,7 +155,7 @@
     <string name="setup_step3_action" msgid="600879797256942259">"Định cấu hình các ngôn ngữ khác"</string>
     <string name="setup_finish_action" msgid="276559243409465389">"Đã xong"</string>
     <string name="show_setup_wizard_icon" msgid="5008028590593710830">"Hiển thị biểu tượng ứng dụng"</string>
-    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Hiển thị biểu tượng ứng dụng trong trình khởi chạy"</string>
+    <string name="show_setup_wizard_icon_summary" msgid="4119998322536880213">"Hiển thị biểu tượng ứng dụng trong trình chạy"</string>
     <string name="app_name" msgid="6320102637491234792">"Nhà cung cấp từ điển"</string>
     <string name="dictionary_provider_name" msgid="3027315045397363079">"Nhà cung cấp từ điển"</string>
     <string name="dictionary_service_name" msgid="6237472350693511448">"Dịch vụ từ điển"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Làm mới"</string>
     <string name="last_update" msgid="730467549913588780">"Cập nhật lần cuối"</string>
     <string name="message_updating" msgid="4457761393932375219">"Đang kiểm tra cập nhật"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Đang tải..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Đang tải..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Từ điển chính"</string>
     <string name="cancel" msgid="6830980399865683324">"Hủy"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Cài đặt"</string>
     <string name="install_dict" msgid="180852772562189365">"Cài đặt"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Hủy"</string>
     <string name="delete_dict" msgid="756853268088330054">"Xóa"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Ngôn ngữ đã chọn trên thiết bị di động của bạn hiện có từ điển.&lt;br/&gt; Bạn nên &lt;b&gt;tải xuống&lt;/b&gt; từ điển <xliff:g id="LANGUAGE">%1$s</xliff:g> để cải thiện trải nghiệm nhập của mình.&lt;br/&gt; &lt;br/&gt; Quá trình tải xuống có thể mất vài phút qua 3G. Có thể mất phí nếu bạn không có &lt;b&gt;gói dữ liệu không giới hạn&lt;/b&gt;.&lt;br/&gt; Nếu bạn không chắc mình có gói dữ liệu nào, bạn nên tìm kết nối Wi-Fi để bắt đầu tải xuống tự động.&lt;br/&gt; &lt;br/&gt; Mẹo: Bạn có thể tải xuống và xóa từ điển bằng cách đi tới &lt;b&gt;Ngôn ngữ và nhập&lt;/b&gt; trong trình đơn &lt;b&gt;Cài đặt&lt;/b&gt; trên thiết bị di động của mình."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Ngôn ngữ đã chọn trên thiết bị di động của bạn hiện có từ điển.&lt;br/&gt; Bạn nên &lt;b&gt;tải xuống&lt;/b&gt; từ điển <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> để cải thiện trải nghiệm nhập của mình.&lt;br/&gt; &lt;br/&gt; Quá trình tải xuống có thể mất vài phút qua 3G. Có thể mất phí nếu bạn không có &lt;b&gt;gói dữ liệu không giới hạn&lt;/b&gt;.&lt;br/&gt; Nếu bạn không chắc mình có gói dữ liệu nào, bạn nên tìm kết nối Wi-Fi để bắt đầu tải xuống tự động.&lt;br/&gt; &lt;br/&gt; Mẹo: Bạn có thể tải xuống và xóa từ điển bằng cách đi tới &lt;b&gt;Ngôn ngữ và nhập&lt;/b&gt; trong trình đơn &lt;b&gt;Cài đặt&lt;/b&gt; trên thiết bị di động của mình."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Tải xuống bây giờ (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Tải xuống qua Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Có sẵn từ điển cho <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Hiện có từ điển cho <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Nhấn để xem lại và tải xuống"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Tải xuống: đề xuất đối với <xliff:g id="LANGUAGE">%1$s</xliff:g> sẽ sớm sẵn sàng."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Đang tải xuống: đề xuất cho <xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> sẽ sớm sẵn sàng."</string>
     <string name="version_text" msgid="2715354215568469385">"Phiên bản <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Thêm"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Thêm vào từ điển"</string>
diff --git a/java/res/values-zh-rCN/strings-action-keys.xml b/java/res/values-zh-rCN/strings-action-keys.xml
index aacbb5f..de00e83 100644
--- a/java/res/values-zh-rCN/strings-action-keys.xml
+++ b/java/res/values-zh-rCN/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"上个"</string>
     <string name="label_done_key" msgid="7564866296502630852">"完成"</string>
     <string name="label_send_key" msgid="482252074224462163">"发送"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"搜索"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"暂停"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"等待"</string>
 </resources>
diff --git a/java/res/values-zh-rCN/strings-config-important-notice.xml b/java/res/values-zh-rCN/strings-config-important-notice.xml
new file mode 100644
index 0000000..6013af7
--- /dev/null
+++ b/java/res/values-zh-rCN/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"根据您的通信记录和以往输入的数据来完善建议"</string>
+</resources>
diff --git a/java/res/values-zh-rCN/strings-letter-descriptions.xml b/java/res/values-zh-rCN/strings-letter-descriptions.xml
new file mode 100644
index 0000000..269f6c4
--- /dev/null
+++ b/java/res/values-zh-rCN/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"阴性顺序指示符"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"微单位标记"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"阳性顺序指示符"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"清音S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"带抑音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"带锐音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"带扬抑符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"带颚化符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"带分音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"带上圆圈的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"拉丁文小写字母连字ae"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"带软音符的拉丁文小写字母c"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"带抑音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"带锐音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"带扬抑符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"带分音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"带抑音符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"带锐音符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"带扬抑符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"带分音符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"拉丁文小写字母eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"带颚化符的拉丁文小写字母n"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"带抑音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"带锐音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"带扬抑符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"带颚化符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"带分音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"带斜线的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"带抑音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"带锐音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"带扬抑符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"带分音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"带锐音符的拉丁文小写字母y"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"拉丁文小写字母thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"带分音符的拉丁文小写字母y"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"带长音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"带短音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"带反尾形符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"带锐音符的拉丁文小写字母c"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"带扬抑符的拉丁文小写字母c"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"带上点的拉丁文小写字母c"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"带抑扬符的拉丁文小写字母c"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"带抑扬符的拉丁文小写字母d"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"带粗线的拉丁文小写字母d"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"带长音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"带短音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"带上点的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"带反尾形符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"带抑扬符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"带扬抑符的拉丁文小写字母g"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"带短音符的拉丁文小写字母g"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"带上点的拉丁文小写字母g"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"带软音符的拉丁文小写字母g"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"带扬抑符的拉丁文小写字母h"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"带粗线的拉丁文小写字母h"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"带颚化符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"带长音符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"带短音符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"带反尾形符的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"拉丁文小写字母无点i"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"拉丁文小写字母连字ij"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"带扬抑符的拉丁文小写字母j"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"带软音符的拉丁文小写字母k"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"拉丁文小写字母kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"带锐音符的拉丁文小写字母l"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"带软音符的拉丁文小写字母l"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"带抑扬符的拉丁文小写字母l"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"带中间点的拉丁文小写字母l"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"带斜线的拉丁文小写字母l"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"带锐音符的拉丁文小写字母n"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"带软音符的拉丁文小写字母n"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"带抑扬符的拉丁文小写字母n"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"前带撇号的拉丁文小写字母n"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"拉丁文小写字母eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"带长音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"带短音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"带双锐音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"拉丁文小写字母连字oe"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"带锐音符的拉丁文小写字母r"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"带软音符的拉丁文小写字母r"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"带抑扬符的拉丁文小写字母r"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"带锐音符的拉丁文小写字母s"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"带扬抑符的拉丁文小写字母s"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"带软音符的拉丁文小写字母s"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"带抑扬符的拉丁文小写字母s"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"带软音符的拉丁文小写字母t"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"带抑扬符的拉丁文小写字母t"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"带粗线的拉丁文小写字母t"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"带颚化符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"带长音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"带短音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"带上圆圈的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"带双锐音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"带反尾形符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"带扬抑符的拉丁文小写字母w"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"带扬抑符的拉丁文小写字母y"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"带锐音符的拉丁文小写字母z"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"带上点的拉丁文小写字母z"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"带抑扬符的拉丁文小写字母z"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"拉丁文小写字母长s"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"带触角的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"带触角的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"带下逗号的拉丁文小写字母s"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"带下逗号的拉丁文小写字母t"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"拉丁文小写字母schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"带下点的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"带上钩的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"带扬抑符和锐音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"带扬抑符和抑音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"带扬抑符和上钩的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"带扬抑符和颚化符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"带扬抑符和下点的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"带短音符和锐音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"带短音符和抑音符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"带短音符和上钩的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"带短音符和颚化符的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"带短音符和下点的拉丁文小写字母a"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"带下点的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"带上钩的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"带颚化符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"带扬抑符和锐音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"带扬抑符和抑音符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"带扬抑符和上钩的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"带扬抑符和颚化符的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"带扬抑符和下点的拉丁文小写字母e"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"带上钩的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"带下点的拉丁文小写字母i"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"带下点的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"带上钩的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"带扬抑符和锐音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"带扬抑符和抑音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"带扬抑符和上钩的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"带扬抑符和颚化符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"带扬抑符和下点的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"带触角和锐音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"带触角和抑音符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"带触角和上钩的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"带触角和颚化符的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"带触角和下点的拉丁文小写字母o"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"带下点的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"带上钩的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"带触角和锐音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"带触角和抑音符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"带触角和上钩的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"带触角和颚化符的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"带触角和下点的拉丁文小写字母u"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"带抑音符的拉丁文小写字母y"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"带下点的拉丁文小写字母y"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"带上钩的拉丁文小写字母y"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"带颚化符的拉丁文小写字母y"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"竖翻叹号"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"左指双尖引号"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"中间点"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"上标1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"右指双尖引号"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"竖翻问号"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"左单引号"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"右单引号"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"单下9形引号"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"左双引号"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"右双引号"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"剑号"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"双剑号"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"千分号"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"角分符号"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"角秒符号"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"单左指尖引号"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"单右指尖引号"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"上标4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"上标拉丁文小写字母n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"比索符号"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"由...转交"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"向右箭头"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"向下箭头"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"空集"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"增量"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"小于或等于"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"大于或等于"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"实心星"</string>
+</resources>
diff --git a/java/res/values-zh-rCN/strings-talkback-descriptions.xml b/java/res/values-zh-rCN/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..b7b6b41
--- /dev/null
+++ b/java/res/values-zh-rCN/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"插入耳机可听到输入密码时的按键提示音。"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"当前文字为%s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"未输入文字"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"按<xliff:g id="KEY_NAME">%1$s</xliff:g>键可将<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>更正为<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"按<xliff:g id="KEY_NAME">%1$s</xliff:g>键可进行自动更正"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"未知字符"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"更多符号"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift键"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"符号"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift键"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"删除"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"符号"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"字母"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"数字"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"设置"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"空格"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"语音输入"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"表情符号"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"回车"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"搜索"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"点"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"切换语言"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"下一个"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"上一个"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"已开启Shift模式"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"已锁定大写模式"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"符号模式"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"更多符号模式"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"字母模式"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"电话模式"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"电话符号模式"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"键盘已隐藏"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"当前显示的是<xliff:g id="KEYBOARD_MODE">%s</xliff:g>键盘"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"日期"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"日期和时间"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"电子邮件地址"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"消息"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"数字"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"电话号码"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"文字"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"时间"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"网址"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"最近用过"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"人物"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"物件"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"自然"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"地点"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"符号"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"表情图标"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"拉丁文大写字母<xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"拉丁文大写字母I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"带上点的拉丁文大写字母I"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"未知符号"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"未知表情符号"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"有可用的替代字符"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"已关闭替代字符"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"有可用的其他建议字词"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"已关闭其他建议字词"</string>
+</resources>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index d347c9c..9e71e99 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"输入选项"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"研究记录命令"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"查找联系人姓名"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"拼写检查工具会使用您的联系人列表中的条目"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"按键振动"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"按键音效"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"按键时弹出显示字符"</string>
-    <string name="general_category" msgid="1859088467017573195">"常规"</string>
-    <string name="correction_category" msgid="2236750915056607613">"文本更正"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"滑行输入"</string>
-    <string name="misc_category" msgid="6894192814868233453">"其他选项"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"高级设置"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"高级选项"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"切换到其他输入法"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"语言切换键也可用于切换其他输入法"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"语言切换键"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"系统默认值"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"联系人姓名建议"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"根据通讯录中的姓名提供建议和更正"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"个性化建议"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"改进<xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"双击空格插入句号"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"双击空格键可插入句号并后跟空格"</string>
     <string name="auto_cap" msgid="1719746674854628252">"自动大写"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"显示滑行输入轨迹"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"动态漂浮预览"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"在滑行输入过程中显示建议字词"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>：已保存"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"需要插入耳机才能听到密码的按键声。"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"当前文本为%s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"未输入文字"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"按<xliff:g id="KEY">%1$s</xliff:g>可将<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>更正为<xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"按<xliff:g id="KEY">%1$s</xliff:g>可执行自动更正"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"键码为 %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift 模式已启用（点按即可停用）"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"大写锁定已启用（点按即可停用）"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"删除"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"符号"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"字母"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"数字"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"设置"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"空格"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"语音输入"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"笑脸"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"返回"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"搜索"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"点"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"切换语言"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"下一个"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"上一个"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift 模式已启用"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"大写锁定已启用"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift 模式已停用"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"符号模式"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"字母模式"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"电话模式"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"电话符号模式"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"键盘已隐藏"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"目前显示的是<xliff:g id="MODE">%s</xliff:g>键盘"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"日期"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"日期和时间"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"电子邮件"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"短信"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"数字"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"电话"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"文字"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"时间"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"网址"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"词组滑行输入"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"滑行输入时，滑过空格键即可输入空格"</string>
     <string name="voice_input" msgid="3583258583521397548">"语音输入键"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"主键盘上"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"符号键盘上"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"关闭"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"主键盘上的麦克风"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符号键盘上的麦克风"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"语音输入功能已停用"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"未启用任何语音输入法。请检查“语言和输入法”设置。"</string>
     <string name="configure_input_method" msgid="373356270290742459">"配置输入法"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"输入语言"</string>
     <string name="send_feedback" msgid="1780431884109392046">"发送反馈"</string>
     <string name="select_language" msgid="3693815588777926848">"输入语言"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"再次触摸即可保存"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"有可用词典"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"启用用户反馈"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"自动发送使用情况统计信息和崩溃报告，帮助改进此输入法。"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"键盘主题"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"英语(英国)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"英语(美国)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"西班牙语（美国）"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英语(英国)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英语(美国)(<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"西班牙语（美国）（<xliff:g id="LAYOUT">%s</xliff:g>）"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g>（传统）"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"英式英语（<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>）"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"美式英语（<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>）"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"美式西班牙语（<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>）"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>（传统）"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>（西里尔文）"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g>（拉丁文）"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"无语言（字母）"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"字母 (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"字母 (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"字母 (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"字母 (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"表情符号"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"配色方案"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"白色"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"蓝色"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"自定义输入风格"</string>
     <string name="add_style" msgid="6163126614514489951">"添加样式"</string>
     <string name="add" msgid="8299699805688017798">"添加"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"启用"</string>
     <string name="not_now" msgid="6172462888202790482">"以后再说"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"已经存在相同的输入风格：<xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"可用性研究模式"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"按键长按延迟"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"按键振动时长"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"按键音量"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"读取外部词典文件"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"“下载内容”文件夹中没有词典文件"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"选择要安装的词典文件"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"确定要为<xliff:g id="LOCALE_NAME">%s</xliff:g>安装此文件吗？"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"确定要安装这个<xliff:g id="LANGUAGE_NAME">%s</xliff:g>词典吗？"</string>
     <string name="error" msgid="8940763624668513648">"出现错误"</string>
     <string name="button_default" msgid="3988017840431881491">"默认"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"欢迎使用 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"刷新"</string>
     <string name="last_update" msgid="730467549913588780">"上次更新时间"</string>
     <string name="message_updating" msgid="4457761393932375219">"正在检查更新"</string>
-    <string name="message_loading" msgid="8689096636874758814">"正在加载..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"正在加载…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"主词典"</string>
     <string name="cancel" msgid="6830980399865683324">"取消"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"设置"</string>
     <string name="install_dict" msgid="180852772562189365">"安装"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"取消"</string>
     <string name="delete_dict" msgid="756853268088330054">"删除"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"支持您移动设备上所选语言的词典现已可供下载啦！&lt;br/&gt;建议您&lt;b&gt;下载&lt;/b&gt;这部<xliff:g id="LANGUAGE">%1$s</xliff:g>词典，以享受更好的输入体验。&lt;br/&gt;&lt;br/&gt;通过 3G 进行下载可能需要 1 到 2 分钟的时间。如果您使用的不是&lt;b&gt;无流量限制的套餐&lt;/b&gt;，则可能需要支付一定的费用。&lt;br/&gt;如果您不确定自己使用的是哪种流量套餐，建议您使用 WLAN 连接自动开始下载。&lt;br/&gt;&lt;br/&gt;提示：您可以访问移动设备的&lt;b&gt;设置&lt;/b&gt;菜单中的&lt;b&gt;语言和输入法&lt;/b&gt;，来下载和删除词典。"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"您的移动设备上选择的语言有一个词典可供下载。&lt;br/&gt;我们建议您&lt;b&gt;下载&lt;/b&gt;这个<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>词典，以便获得更好的输入体验。&lt;br/&gt;&lt;br/&gt;通过3G网络下载可能需要一两分钟的时间。如果您使用的不是&lt;b&gt;无流量限制的套餐&lt;/b&gt;，则可能产生一定的流量费。&lt;br/&gt;如果您不确定自己使用的是哪种流量套餐，我们建议您连接到WLAN网络以便自动开始下载。&lt;br/&gt;&lt;br/&gt;提示：您可以在移动设备上的&lt;b&gt;语言和输入法&lt;/b&gt;部分（位于&lt;b&gt;设置&lt;/b&gt;菜单中）下载和删除词典。"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"立即下载 (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"通过 WLAN 下载"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"<xliff:g id="LANGUAGE">%1$s</xliff:g>词典可供下载"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"有一个<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>词典可供下载"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"按此通知即可查看和下载"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"下载中：很快就能启用<xliff:g id="LANGUAGE">%1$s</xliff:g>的词典建议服务了！"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"正在下载：<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>输入建议功能马上就可以使用了！"</string>
     <string name="version_text" msgid="2715354215568469385">"版本<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"添加"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"添加到词典"</string>
diff --git a/java/res/values-zh-rHK/strings-action-keys.xml b/java/res/values-zh-rHK/strings-action-keys.xml
index e952516..500cd5f 100644
--- a/java/res/values-zh-rHK/strings-action-keys.xml
+++ b/java/res/values-zh-rHK/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"上一步"</string>
     <string name="label_done_key" msgid="7564866296502630852">"完成"</string>
     <string name="label_send_key" msgid="482252074224462163">"傳送"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"搜尋"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"暫停"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"等候"</string>
 </resources>
diff --git a/java/res/values-zh-rHK/strings-config-important-notice.xml b/java/res/values-zh-rHK/strings-config-important-notice.xml
new file mode 100644
index 0000000..a21b243
--- /dev/null
+++ b/java/res/values-zh-rHK/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"根據您的通訊記錄和已輸入的資料改善建議"</string>
+</resources>
diff --git a/java/res/values-zh-rHK/strings-letter-descriptions.xml b/java/res/values-zh-rHK/strings-letter-descriptions.xml
new file mode 100644
index 0000000..83ea28b
--- /dev/null
+++ b/java/res/values-zh-rHK/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"雌性符號"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro 符號"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"雄性符號"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"清音 S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"抑音符 A"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"銳音符 A"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"抑揚符 A"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"波浪號 A"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"分音符 A"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"帶上圓圈的 A"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"連字 AE"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"下尾符 C"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"抑音符 E"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"銳音符 E"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"抑揚符 E"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"分音符 E"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"抑音符 I"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"銳音符 I"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"抑揚符 I"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"分音符 I"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth 符號"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"波浪號 N"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"抑音符 O"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"銳音符 O"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"抑揚符 O"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"波浪號 O"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"分音符 O"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"帶斜線的 O"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"抑音符 U"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"銳音符 U"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"抑揚符 U"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"分音符 U"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"銳音符 Y"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn 符號"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"分音符 Y"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"長音符 A"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"短音符 A"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"反下尾符 A"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"銳音符 C"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"抑揚符 C"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"上點 C"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"上勾符 C"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"上勾符 D"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"帶斜線的 D"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"長音符 E"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"短音符 E"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"上點 E"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"反下尾符 E"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"上勾符 E"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"抑揚符 G"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"短音符 G"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"上點 G"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"下尾符 G"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"抑揚符 H"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"帶斜線的 H"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"波浪號 I"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"長音符 I"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"短音符 I"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"反下尾符 I"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"無點 I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"連字 IJ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"抑揚符 J"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"下尾符 K"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra 符號"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"銳音符 L"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"下尾符 L"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"上勾符 L"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"中點 L"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"帶斜線的 L"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"銳音符 N"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"下尾符 N"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"上勾符 N"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"前接縮寫符號的 N"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng 符號"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"長音符 O"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"短音符 O"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"雙銳音符 O"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"連字 OE"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"銳音符 R"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"下尾符 R"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"上勾符 R"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"銳音符 S"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"抑揚符 S"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"下尾符 S"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"上勾符 S"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"下尾符 T"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"上勾符 T"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"帶斜線的 T"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"波浪號 U"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"長音符 U"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"短音符 U"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"帶上圓圈的 U"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"雙銳音符 U"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"反下尾符 U"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"抑揚符 W"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"抑揚符 Y"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"銳音符 Z"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"上點 Z"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"上勾符 Z"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"長 S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"帶尖角的 O"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"帶尖角的 U"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"下加逗號的 S"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"下加逗號的 T"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"中性母音符號"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"下點 A"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"上方加勾的 A"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"帶抑揚符和銳音符的 A"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"帶抑揚符和抑音符的 A"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"帶抑揚符和上方加勾的 A"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"帶抑揚符和波浪號的 A"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"帶抑揚符和下點的 A"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"帶短音符和銳音符的 A"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"帶短音符和抑音符的 A"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"帶短音符和上方加勾的 A"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"帶短音符和波浪號的 A"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"帶短音符和下點的 A"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"下點 E"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"上方加勾的 E"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"波浪號 E"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"帶抑揚符和銳音符的 E"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"帶抑揚符和抑音符的 E"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"帶抑揚符和上方加勾的 E"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"帶抑揚符和波浪號的 E"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"帶抑揚符和下點的 E"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"上方加勾的 I"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"下點 I"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"下點 O"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"上方加勾的 O"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"帶抑揚符和銳音符的 O"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"帶抑揚符和抑音符的 O"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"帶抑揚符和上方加勾的 O"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"帶抑揚符和波浪號的 O"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"帶抑揚符和下點的 O"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"帶尖角和銳音符的 O"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"帶尖角和抑音符的 O"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"帶尖角和上方加勾的 O"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"帶尖角和波浪號的 O"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"帶尖角和下點的 O"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"下點 U"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"上方加勾的 U"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"帶尖角和銳音符的 U"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"帶尖角和抑音符的 U"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"帶尖角和上方加勾的 U"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"帶尖角和波浪號的 U"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"帶尖角和下點的 U"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"抑音符 Y"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"下點 Y"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"上方加勾的 Y"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"波浪號 Y"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"倒置的驚嘆號"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"左雙角括號"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"中間點"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"上標字 1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"右雙角括號"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"倒問號"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"左單引號"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"右單引號"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Low-9 單引號"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"左雙引號"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"右雙引號"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"單劍註釋符號"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"雙劍註釋符號"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"千分比符號"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"單撇"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"雙撇"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"左單角括號"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"右單角括號"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"上標 4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"上標拉丁小寫字母 n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"比索符號"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"百分比"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"向右箭頭"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"向下箭頭"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"空集合"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"增量"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"小於或等於"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"大於或等於"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"黑星"</string>
+</resources>
diff --git a/java/res/values-zh-rHK/strings-talkback-descriptions.xml b/java/res/values-zh-rHK/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..386b5b5
--- /dev/null
+++ b/java/res/values-zh-rHK/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"插上耳機即可聽到系統朗讀密碼鍵。"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"目前文字為 %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"未輸入文字"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"按「<xliff:g id="KEY_NAME">%1$s</xliff:g>」可將「<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>」修正為「<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>」"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"按「<xliff:g id="KEY_NAME">%1$s</xliff:g>」可自動修正"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"未知的字元"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift 鍵"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"更多符號"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift 鍵"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"符號"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift 鍵"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"刪除"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"符號"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"字母"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"數字"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"設定"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab 鍵"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"空白鍵"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"語音輸入"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"表情圖案"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Return 鍵"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"搜尋"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"分點符號"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"切換語言"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"下一個"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"上一個"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift 鍵已啟用"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"大寫鎖定已啟用"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"符號模式"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"更多符號模式"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"字母模式"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"撥號模式"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"符號撥號模式"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"鍵盤已隱藏"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"目前顯示的是<xliff:g id="KEYBOARD_MODE">%s</xliff:g>鍵盤"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"日期"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"日期和時間"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"電郵"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"短訊"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"數字"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"電話"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"文字"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"時間"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"網址"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"最近使用過"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"人物"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"物件"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"大自然"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"地點"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"符號"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"表情符號"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"大寫 <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"大寫 I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"上方加點的大寫 I"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"未知的符號"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"未知的表情符號"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"有可用的替代字元"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"已關閉替代字元"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"有可用的建議字詞"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"已關閉其他建議字詞"</string>
+</resources>
diff --git a/java/res/values-zh-rHK/strings.xml b/java/res/values-zh-rHK/strings.xml
index 3060455..4229bce 100644
--- a/java/res/values-zh-rHK/strings.xml
+++ b/java/res/values-zh-rHK/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"輸入選項"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"研究記錄指令"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"查找聯絡人姓名"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"拼字檢查程式使用您的聯絡人名單中的各項記錄"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"按鍵時震動"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"按鍵時播放音效"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"按鍵時顯示彈出式視窗"</string>
-    <string name="general_category" msgid="1859088467017573195">"一般設定"</string>
-    <string name="correction_category" msgid="2236750915056607613">"文字更正"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"手勢輸入"</string>
-    <string name="misc_category" msgid="6894192814868233453">"其他選項"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"進階設定"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"專家選項"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"切換至其他輸入法"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"語言切換鍵包括其他輸入法"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"語言切換鍵"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"系統預設"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"建議聯絡人名稱"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"使用「聯絡人」的名稱提供建議與修正"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"個人化建議"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"強化 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"按兩下空格鍵插入句號"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"只要輕按兩下空格鍵，即可插入句號並在後面加上一個空格"</string>
     <string name="auto_cap" msgid="1719746674854628252">"自動大寫"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"顯示手勢軌跡"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"動態浮動預覽"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"在啟用手勢輸入時顯示建議的字詞"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>：已儲存"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"插上耳機即可聽到系統朗讀密碼鍵。"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"目前文字為 %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"未輸入文字"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"按「<xliff:g id="KEY">%1$s</xliff:g>」可將「<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>」修正為「<xliff:g id="CORRECTED">%3$s</xliff:g>」"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"按「<xliff:g id="KEY">%1$s</xliff:g>」可自動修正"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"按鍵代碼 %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift 鍵"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift 鍵已開啟 (輕按即可停用)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"大寫鎖定已開啟 (輕按即可停用)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"刪除"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"符號"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"字母"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"數字"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"設定"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab 鍵"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"空白鍵"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"語音輸入"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"笑臉"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Return 鍵"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"搜尋"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"點"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"切換語言"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"下一步"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"上一步"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift 鍵已啟用"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"大寫鎖定已啟用"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift 鍵已停用"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"符號模式"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"字母模式"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"撥號模式"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"符號撥號模式"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"鍵盤已隱藏"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"目前顯示的是<xliff:g id="MODE">%s</xliff:g>鍵盤"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"日期"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"日期和時間"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"電郵"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"短訊"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"數字"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"電話"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"文字"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"時間"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"網址"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"詞組手勢"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"在手勢輸入過程中，滑過空白鍵即可輸入空格"</string>
     <string name="voice_input" msgid="3583258583521397548">"語音輸入鍵"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"於主鍵盤"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"符號鍵盤上"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"關閉"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"主鍵盤上的麥克風"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符號鍵盤上的麥克風"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"語音輸入已停用"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"尚未啟用語音輸入法，請檢查語言和輸入設定。"</string>
     <string name="configure_input_method" msgid="373356270290742459">"設定輸入法"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"輸入語言"</string>
     <string name="send_feedback" msgid="1780431884109392046">"傳送意見"</string>
     <string name="select_language" msgid="3693815588777926848">"輸入語言"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"再次輕觸即可儲存"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"可使用字典"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"啟用用戶意見反映"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"自動傳送使用統計資料和當機報告，協助改良這個輸入法編輯器"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"鍵盤主題"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"英文 (英國)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"英文 (美國)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"西班牙文 (美國)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英文 (英國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英文 (美國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"西班牙文 (美國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (傳統)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"英文 (英國) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"英文 (美國) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"西班牙文 (美國) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (傳統)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (西里爾文)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (拉丁文)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"無語言 (字母)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"字母 (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"字母 (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"字母 (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"字母 (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"色彩配置"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"白色"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"藍色"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"自訂輸入樣式"</string>
     <string name="add_style" msgid="6163126614514489951">"新增樣式"</string>
     <string name="add" msgid="8299699805688017798">"新增"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"啟用"</string>
     <string name="not_now" msgid="6172462888202790482">"暫時不要"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"已存在相同的輸入樣式：<xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"可用性研究模式"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"長按鍵延遲"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"按鍵震動時間"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"按鍵音量"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"讀取外部字典檔案"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"「下載」資料夾中沒有任何字典檔案"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"選取要安裝的字典檔案"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"準備好要為<xliff:g id="LOCALE_NAME">%s</xliff:g>版本安裝這個檔案嗎？"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"準備為<xliff:g id="LANGUAGE_NAME">%s</xliff:g>版本安裝這個檔案嗎？"</string>
     <string name="error" msgid="8940763624668513648">"發生錯誤"</string>
     <string name="button_default" msgid="3988017840431881491">"預設"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"歡迎使用「<xliff:g id="APPLICATION_NAME">%s</xliff:g>」"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"重新整理"</string>
     <string name="last_update" msgid="730467549913588780">"上次更新日期"</string>
     <string name="message_updating" msgid="4457761393932375219">"正在查看更新"</string>
-    <string name="message_loading" msgid="8689096636874758814">"正在載入..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"正在載入…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"主要字典"</string>
     <string name="cancel" msgid="6830980399865683324">"取消"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"設定"</string>
     <string name="install_dict" msgid="180852772562189365">"安裝"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"取消"</string>
     <string name="delete_dict" msgid="756853268088330054">"刪除"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"您的流動裝置所選取的語言現有字典可供使用。&lt;br/&gt;建議您&lt;b&gt;下載&lt;/b&gt;<xliff:g id="LANGUAGE">%1$s</xliff:g>字典，讓您輸入時更方便。&lt;br/&gt;&lt;br/&gt;經由 3G 網絡下載需時一兩分鐘。如果您未使用&lt;b&gt;無限上網計劃&lt;/b&gt;，可能須另外付費。&lt;br/&gt;如果您不確定自己使用哪種上網計劃，建議您在連接 Wi-Fi 網絡後才開始自動下載。&lt;br/&gt;&lt;br/&gt;提示：您可以前往流動裝置的 [設定] &lt;b&gt;&lt;/b&gt;選單，透過其中的 [語言和輸入] &lt;b&gt;&lt;/b&gt;下載和移除字典。"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"您的流動裝置所選取的語言現有字典可供使用。&lt;br/&gt;我們建議您&lt;b&gt;下載&lt;/b&gt;<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>字典，讓您輸入時更方便。&lt;br/&gt;&lt;br/&gt;經由 3G 網絡下載需時一、兩分鐘。如果您未使用&lt;b&gt;無限上網計劃&lt;/b&gt;，可能須另外付費。&lt;br/&gt;如果您不確定自己使用哪種上網計劃，我們建議您在連接 Wi-Fi 網絡後才開始自動下載。&lt;br/&gt;&lt;br/&gt;提示：您可以前往流動裝置的 [設定] &lt;b&gt;&lt;/b&gt;選單，透過其中的 [語言和輸入] &lt;b&gt;&lt;/b&gt;下載和移除字典。"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"立即下載 (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g> MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"經由 Wi-Fi 下載"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"可使用<xliff:g id="LANGUAGE">%1$s</xliff:g>字典"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"可使用<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>字典"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"按下即可查看並下載"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"下載中：很快就能提供<xliff:g id="LANGUAGE">%1$s</xliff:g>字詞建議。"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"下載中：<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>字詞建議服務即將啟用。"</string>
     <string name="version_text" msgid="2715354215568469385">"版本 <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"新增"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"加入字典"</string>
diff --git a/java/res/values-zh-rTW/strings-action-keys.xml b/java/res/values-zh-rTW/strings-action-keys.xml
index 00daa5c..b56dede 100644
--- a/java/res/values-zh-rTW/strings-action-keys.xml
+++ b/java/res/values-zh-rTW/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"返回"</string>
     <string name="label_done_key" msgid="7564866296502630852">"完成"</string>
     <string name="label_send_key" msgid="482252074224462163">"傳送"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"搜尋"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"暫停"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"等待"</string>
 </resources>
diff --git a/java/res/values-zh-rTW/strings-config-important-notice.xml b/java/res/values-zh-rTW/strings-config-important-notice.xml
new file mode 100644
index 0000000..dfffa69
--- /dev/null
+++ b/java/res/values-zh-rTW/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"根據您的通訊紀錄和以往輸入的資料改善建議項目"</string>
+</resources>
diff --git a/java/res/values-zh-rTW/strings-letter-descriptions.xml b/java/res/values-zh-rTW/strings-letter-descriptions.xml
new file mode 100644
index 0000000..c38aa38
--- /dev/null
+++ b/java/res/values-zh-rTW/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"雌性符號"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Micro 符號"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"雄性符號"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"清音 S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"抑音符 A"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"銳音符 A"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"揚抑符 A"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"顎化符 A"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"分音符 A"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"帶上圓圈的 A"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"連字 AE"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"下加符 C"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"抑音符 E"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"銳音符 E"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"揚抑符 E"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"分音符 E"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"抑音符 I"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"銳音符 I"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"揚抑符 I"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"分音符 I"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"濁齒擦音符號"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"顎化符 N"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"抑音符 O"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"銳音符 O"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"揚抑符 O"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"顎化符 O"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"分音符 O"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"帶斜線的 O"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"抑音符 U"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"銳音符 U"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"揚抑符 U"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"分音符 U"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"銳音符 Y"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"刺形符號"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"分音符 Y"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"長音符 A"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"短音符 A"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"反下加符 A"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"銳音符 C"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"揚抑符 C"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"上點 C"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"倒折音符 C"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"倒折音符 D"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"帶斜線的 D"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"長音符 E"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"短音符 E"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"上點 E"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"反下加符 E"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"倒折音符 E"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"揚抑符 G"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"短音符 G"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"上點 G"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"下加符 G"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"揚抑符 H"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"帶斜線的 H"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"顎化符 I"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"長音符 I"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"短音符 I"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"反下加符 I"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"無點 I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"連字 IJ"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"揚抑符 J"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"下加符 K"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra 符號"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"銳音符 L"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"下加符 L"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"倒折音符 L"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"中點 L"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"帶斜線的 L"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"銳音符 N"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"下加符 N"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"倒折音符 N"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"前接單引號的 N"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"軟顎鼻音"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"長音符 O"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"短音符 O"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"雙銳音符 O"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"連字 OE"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"銳音符 R"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"下加符 R"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"倒折音符 R"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"銳音符 S"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"揚抑符 S"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"下加符 S"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"倒折音符 S"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"下加符 T"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"倒折音符 T"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"帶斜線的 T"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"顎化符 U"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"長音符 U"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"短音符 U"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"帶上圓圈的 U"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"雙銳音符 U"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"反下加符 U"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"揚抑符 W"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"揚抑符 Y"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"銳音符 Z"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"上點 Z"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"倒折音符 Z"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"長音 S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"帶觸角的 O"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"帶觸角的 U"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"下加逗號的 S"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"下加逗號的 T"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"中性母音符號"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"下點 A"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"上方加勾的 A"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"帶揚抑符和銳音符的 A"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"帶揚抑符和抑音符的 A"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"帶揚抑符和上勾的 A"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"帶揚抑符和顎化符的 A"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"帶揚抑符和下點的 A"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"帶短音符和銳音符的 A"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"帶短音符和抑音符的 A"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"帶短音符和上勾的 A"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"帶短音符和顎化符的 A"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"帶短音符和下點的 A"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"下點 E"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"上方加勾的 E"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"顎化符 E"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"帶揚抑符和銳音符的 E"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"帶揚抑符和抑音符的 E"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"帶揚抑符和上勾的 E"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"帶揚抑符和顎化符的 E"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"帶揚抑符和下點的 E"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"上方加勾的 I"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"下點 I"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"下點 O"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"上方加勾的 O"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"帶揚抑符和銳音符的 O"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"帶揚抑符和抑音符的 O"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"帶揚抑符和上勾的 O"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"帶揚抑符和顎化符的 O"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"帶揚抑符和下點的 O"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"帶觸角和銳音符的 O"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"帶觸角和抑音符的 O"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"帶觸角和上勾的 O"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"帶觸角和顎化符的 O"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"帶觸角和下點的 O"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"下點 U"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"上方加勾的 U"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"帶觸角和銳音符的 U"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"帶觸角和抑音符的 U"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"帶觸角和上勾的 U"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"帶觸角和顎化符的 U"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"帶觸角和下點的 U"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"抑音符 Y"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"下點 Y"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"上方加勾的 Y"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"顎化符 Y"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"倒置的驚嘆號"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"左雙角括號"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"中間點"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"上標字 1"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"右雙角括號"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"倒置的問號"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"左單引號"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"右單引號"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Low-9 單引號"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"左雙引號"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"右雙引號"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"單劍註釋符號"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"雙劍註釋符號"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"千分比符號"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"角分符號"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"角秒符號"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"左英文單引號"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"右英文單引號"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"上標 4"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"上標小寫拉丁字母 N"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"披索符號"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"轉交符號"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"向右箭頭"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"向下箭頭"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"空集合"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"遞增"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"小於或等於"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"大於或等於"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"黑星"</string>
+</resources>
diff --git a/java/res/values-zh-rTW/strings-talkback-descriptions.xml b/java/res/values-zh-rTW/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..7a5f3df
--- /dev/null
+++ b/java/res/values-zh-rTW/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"連接耳機即可聽取系統朗讀密碼按鍵。"</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"目前文字為 %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"未輸入文字"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"按下「<xliff:g id="KEY_NAME">%1$s</xliff:g>」可將「<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>」修正為「<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>」"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"按下「<xliff:g id="KEY_NAME">%1$s</xliff:g>」可執行自動修正"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"未知的字元"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"Shift 鍵"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"更多符號"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"Shift 鍵"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"符號"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"Shift 鍵"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"刪除"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"符號"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"字母"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"數字"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"設定"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Tab 鍵"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"空格鍵"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"語音輸入"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"表情符號"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"返回"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"搜尋"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"圓點符號"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"切換語言"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"下一個"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"上一個"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"Shift 鍵已啟用"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"大寫鎖定已啟用"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"符號模式"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"更多符號模式"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"字母模式"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"撥號模式"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"撥號符號模式"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"鍵盤已隱藏"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"目前顯示的是<xliff:g id="KEYBOARD_MODE">%s</xliff:g>鍵盤"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"日期"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"日期和時間"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"電子郵件"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"簡訊"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"數字"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"電話號碼"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"文字"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"時間"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"網址"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"最近使用過"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"人物"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"物體"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"自然"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"地點"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"符號"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"表情"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"大寫 <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"大寫 I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"上方加點的大寫 I"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"未知的符號"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"未知的表情符號"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"有可用的替代字元"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"已關閉替代字元"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"有可用的建議字詞"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"已關閉其他建議字詞"</string>
+</resources>
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 2c474b7..eafea5b 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"輸入選項"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"研究紀錄指令"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"查詢聯絡人姓名"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"拼字檢查程式使用您的聯絡人清單項目"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"按鍵時震動"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"按鍵聲音"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"按鍵時彈出"</string>
-    <string name="general_category" msgid="1859088467017573195">"一般"</string>
-    <string name="correction_category" msgid="2236750915056607613">"文字修正"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"滑行輸入"</string>
-    <string name="misc_category" msgid="6894192814868233453">"其他選項"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"進階設定"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"進階選項"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"切換到其他輸入法"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"使語言切換鍵包含其他輸入法"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"語言切換鍵"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"系統預設"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"聯絡人姓名建議"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"根據「聯絡人」名稱提供建議與修正"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"個人化建議"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"協助改善 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"輕按兩下空格鍵即插入句號"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"輕按兩下空格鍵可插入句號另加一個空格"</string>
     <string name="auto_cap" msgid="1719746674854628252">"自動大寫"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"顯示手勢軌跡"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"動態浮動預覽"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"使用滑行輸入時顯示建議字詞"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g>：已儲存"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"連接耳機即可聽取系統朗讀密碼按鍵。"</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"目前文字為 %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"未輸入文字"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"按下「<xliff:g id="KEY">%1$s</xliff:g>」可將「<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g>」修正為「<xliff:g id="CORRECTED">%3$s</xliff:g>」"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"按下「<xliff:g id="KEY">%1$s</xliff:g>」可執行自動修正"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"按鍵代碼 %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift 鍵"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"Shift 鍵已開啟 (輕按即可停用)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"大寫鎖定已開啟 (輕按即可停用)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"刪除"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"符號"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"字母"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"數字"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"設定"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab 鍵"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"空白鍵"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"語音輸入"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"笑臉"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"返回"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"搜尋"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"點"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"切換語言"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"下一頁"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"上一頁"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"Shift 鍵已啟用"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"大寫鎖定已啟用"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"Shift 鍵已停用"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"符號模式"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"字母模式"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"撥號模式"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"撥號符號模式"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"鍵盤已隱藏"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"目前顯示的是<xliff:g id="MODE">%s</xliff:g>鍵盤"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"日期"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"日期和時間"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"電子郵件"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"簡訊"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"數字"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"電話號碼"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"文字"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"時間"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"網址"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"詞組手勢"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"手勢輸入時，滑過空格鍵即可輸入空格"</string>
     <string name="voice_input" msgid="3583258583521397548">"語音輸入按鍵"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"主鍵盤上"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"符號鍵盤上"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"關閉"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"主鍵盤上的麥克風"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"符號鍵盤上的麥克風"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"語音輸入已停用"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"尚未啟動語音輸入法，請檢查語言與輸入設定。"</string>
     <string name="configure_input_method" msgid="373356270290742459">"設定輸入法"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"輸入語言"</string>
     <string name="send_feedback" msgid="1780431884109392046">"提供意見"</string>
     <string name="select_language" msgid="3693815588777926848">"輸入語言"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"再次輕觸即可儲存"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"可用的字典"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"啟用使用者意見回饋"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"自動傳送使用統計資料和當機報告，協助改善此輸入法編輯器"</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"鍵盤主題"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"英文 (英國)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"英文 (美國)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"西班牙文 (美國)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"英文 (英國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"英文 (美國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"西班牙文 (美國) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (傳統)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"英文 (英國) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"英文 (美國) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"西班牙文 (美國) (<xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g>)"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (傳統)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (斯拉夫文)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (拉丁文)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"無語言 (字母)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"字母 (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"字母 (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"字母 (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"字母 (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"表情符號"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"色彩配置"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"白色"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"藍色"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"自訂輸入樣式"</string>
     <string name="add_style" msgid="6163126614514489951">"新增樣式"</string>
     <string name="add" msgid="8299699805688017798">"新增"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"啟用"</string>
     <string name="not_now" msgid="6172462888202790482">"暫時不要"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"已存在相同的輸入樣式：<xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"使用習慣學習模式"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"按鍵長按延遲"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"按鍵震動持續時間"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"按鍵音量"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"讀取外部字典檔案"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"「下載」資料夾中沒有任何字典檔案"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"選取要安裝的字典檔案"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"準備為<xliff:g id="LOCALE_NAME">%s</xliff:g>版本安裝這個檔案嗎？"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"確定要安裝這個<xliff:g id="LANGUAGE_NAME">%s</xliff:g>檔案嗎？"</string>
     <string name="error" msgid="8940763624668513648">"發生錯誤"</string>
     <string name="button_default" msgid="3988017840431881491">"預設"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"歡迎使用 <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"重新整理"</string>
     <string name="last_update" msgid="730467549913588780">"上次更新時間："</string>
     <string name="message_updating" msgid="4457761393932375219">"正在檢查更新"</string>
-    <string name="message_loading" msgid="8689096636874758814">"載入中..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"載入中…"</string>
     <string name="main_dict_description" msgid="3072821352793492143">"主要字典"</string>
     <string name="cancel" msgid="6830980399865683324">"取消"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"設定"</string>
     <string name="install_dict" msgid="180852772562189365">"安裝"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"取消"</string>
     <string name="delete_dict" msgid="756853268088330054">"刪除"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"您的行動裝置設定的語言，現有字典可供使用。&lt;br/&gt; 建議您&lt;b&gt;下載&lt;/b&gt;<xliff:g id="LANGUAGE">%1$s</xliff:g>字典，加強輸入功能。&lt;br/&gt; &lt;br/&gt; 透過 3G 網路下載約需一兩分鐘。若無&lt;b&gt;無限行動上網資費方案&lt;/b&gt;，可能必須另外付費。&lt;br/&gt;若不確定行動上網資費方案為何，可以等連上 Wi-Fi 網路後再自動下載。&lt;br/&gt; &lt;br/&gt;提示：進入行動裝置的 [設定] 選單，選擇 [語言和輸入] 即可下載及移除字典。&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;"</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"您的行動裝置選用的語言現有字典可供使用。&lt;br/&gt;建議您&lt;b&gt;下載&lt;/b&gt;<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>字典，藉此強化輸入功能。&lt;br/&gt;&lt;br/&gt;透過 3G 網路下載約需一兩分鐘。如果沒有&lt;b&gt;無限行動上網資費方案&lt;/b&gt;，可能必須另外付費。&lt;br/&gt;若不確定行動上網資費方案為何，可以等連上 Wi-Fi 網路後再自動下載。&lt;br/&gt;&lt;br/&gt;提示：前往行動裝置的 [設定] 選單，選擇 [語言和輸入] 即可下載及移除字典。&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;"</string>
     <string name="download_over_metered" msgid="1643065851159409546">"立即下載 (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"透過 Wi-Fi 下載"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"支援<xliff:g id="LANGUAGE">%1$s</xliff:g>字典"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"支援<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>字典"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"按下即可查看並下載"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"下載中：即將啟用<xliff:g id="LANGUAGE">%1$s</xliff:g>字詞建議服務。"</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"下載中：即將啟用<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>字詞建議服務。"</string>
     <string name="version_text" msgid="2715354215568469385">"版本 <xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"新增"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"加入字典"</string>
diff --git a/java/res/values-zu/strings-action-keys.xml b/java/res/values-zu/strings-action-keys.xml
index 6cd5e8c..fe36678 100644
--- a/java/res/values-zu/strings-action-keys.xml
+++ b/java/res/values-zu/strings-action-keys.xml
@@ -25,6 +25,7 @@
     <string name="label_previous_key" msgid="1421141755779895275">"Okwedlule"</string>
     <string name="label_done_key" msgid="7564866296502630852">"Kwenziwe"</string>
     <string name="label_send_key" msgid="482252074224462163">"Thumela"</string>
+    <string name="label_search_key" msgid="7965186050435796642">"Sesha"</string>
     <string name="label_pause_key" msgid="2225922926459730642">"Misa isikhashana"</string>
     <string name="label_wait_key" msgid="5891247853595466039">"Linda"</string>
 </resources>
diff --git a/java/res/values-zu/strings-config-important-notice.xml b/java/res/values-zu/strings-config-important-notice.xml
new file mode 100644
index 0000000..0d35200
--- /dev/null
+++ b/java/res/values-zu/strings-config-important-notice.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="use_personalized_dicts_summary" msgid="590432261305469627">"Funda kusukela kwezokuxhumana zakho nedatha ethayiphiwe ukuze uthuthukise iziphakamiso"</string>
+</resources>
diff --git a/java/res/values-zu/strings-letter-descriptions.xml b/java/res/values-zu/strings-letter-descriptions.xml
new file mode 100644
index 0000000..54eb6e5
--- /dev/null
+++ b/java/res/values-zu/strings-letter-descriptions.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<!-- 
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_accented_letter_00AA" msgid="4374325261868451570">"Isikhombi sobesifazane"</string>
+    <string name="spoken_accented_letter_00B5" msgid="9031387673828823891">"Uphawu olukhulu"</string>
+    <string name="spoken_accented_letter_00BA" msgid="5045198452071207437">"Isikhombi sowesilisa"</string>
+    <string name="spoken_accented_letter_00DF" msgid="2260098367028134281">"Sharp S"</string>
+    <string name="spoken_accented_letter_00E0" msgid="2234515772182387086">"A, grave"</string>
+    <string name="spoken_accented_letter_00E1" msgid="7780174500802535063">"A, acute"</string>
+    <string name="spoken_accented_letter_00E2" msgid="7054108480488102631">"A, circumflex"</string>
+    <string name="spoken_accented_letter_00E3" msgid="8252569677935693343">"A, tilde"</string>
+    <string name="spoken_accented_letter_00E4" msgid="6610118430986969466">"A, diaeresis"</string>
+    <string name="spoken_accented_letter_00E5" msgid="7630449270070348394">"A, ring ngenhla"</string>
+    <string name="spoken_accented_letter_00E6" msgid="701838036007000032">"A, E, ligature"</string>
+    <string name="spoken_accented_letter_00E7" msgid="2991289211702135310">"C, cedilla"</string>
+    <string name="spoken_accented_letter_00E8" msgid="2080035251848179782">"E, grave"</string>
+    <string name="spoken_accented_letter_00E9" msgid="2708473976407506968">"E, acute"</string>
+    <string name="spoken_accented_letter_00EA" msgid="1898848081635119449">"E, circumflex"</string>
+    <string name="spoken_accented_letter_00EB" msgid="8318942663983499634">"E, diaeresis"</string>
+    <string name="spoken_accented_letter_00EC" msgid="7643810590358306098">"I, grave"</string>
+    <string name="spoken_accented_letter_00ED" msgid="8288035355103120759">"I, acute"</string>
+    <string name="spoken_accented_letter_00EE" msgid="1137417730211688894">"I, circumflex"</string>
+    <string name="spoken_accented_letter_00EF" msgid="8993714322731956785">"I, diaeresis"</string>
+    <string name="spoken_accented_letter_00F0" msgid="3427567511221967857">"Eth"</string>
+    <string name="spoken_accented_letter_00F1" msgid="6983294908255378605">"N, tilde"</string>
+    <string name="spoken_accented_letter_00F2" msgid="2623804069332183695">"O, grave"</string>
+    <string name="spoken_accented_letter_00F3" msgid="8945987631729216917">"O, acute"</string>
+    <string name="spoken_accented_letter_00F4" msgid="2415494299699717276">"O, circumflex"</string>
+    <string name="spoken_accented_letter_00F5" msgid="7320512716652765243">"O, tilde"</string>
+    <string name="spoken_accented_letter_00F6" msgid="9101179351242478555">"O, diaeresis"</string>
+    <string name="spoken_accented_letter_00F8" msgid="1488324280918884122">"O, stroke"</string>
+    <string name="spoken_accented_letter_00F9" msgid="2823570256527173278">"U, grave"</string>
+    <string name="spoken_accented_letter_00FA" msgid="6883092085077298608">"U, acute"</string>
+    <string name="spoken_accented_letter_00FB" msgid="4948239400399514418">"U, circumflex"</string>
+    <string name="spoken_accented_letter_00FC" msgid="2496066211694000442">"U, diaeresis"</string>
+    <string name="spoken_accented_letter_00FD" msgid="2400529610834233890">"Y, acute"</string>
+    <string name="spoken_accented_letter_00FE" msgid="8788160115017853040">"Thorn"</string>
+    <string name="spoken_accented_letter_00FF" msgid="5225610161025124830">"Y, diaeresis"</string>
+    <string name="spoken_accented_letter_0101" msgid="5573209280917268157">"A, macron"</string>
+    <string name="spoken_accented_letter_0103" msgid="2469151120095164730">"A, breve"</string>
+    <string name="spoken_accented_letter_0105" msgid="8312689789855786427">"A, ogonek"</string>
+    <string name="spoken_accented_letter_0107" msgid="5708507895287798642">"C, acute"</string>
+    <string name="spoken_accented_letter_0109" msgid="7008112603489583335">"C, circumflex"</string>
+    <string name="spoken_accented_letter_010B" msgid="5641359473019753216">"C, icashazi ngenhla"</string>
+    <string name="spoken_accented_letter_010D" msgid="1048661826408437168">"C, caron"</string>
+    <string name="spoken_accented_letter_010F" msgid="603374318657992205">"D, caron"</string>
+    <string name="spoken_accented_letter_0111" msgid="5517997642285938260">"D, stroke"</string>
+    <string name="spoken_accented_letter_0113" msgid="2326009009311798997">"E, macron"</string>
+    <string name="spoken_accented_letter_0115" msgid="3964545407091037747">"E, breve"</string>
+    <string name="spoken_accented_letter_0117" msgid="8799753183781089777">"E, icashazi ngenhla"</string>
+    <string name="spoken_accented_letter_0119" msgid="3772451226935709136">"E, ogonek"</string>
+    <string name="spoken_accented_letter_011B" msgid="7663481332351461288">"E, caron"</string>
+    <string name="spoken_accented_letter_011D" msgid="1181326600595482369">"G, circumflex"</string>
+    <string name="spoken_accented_letter_011F" msgid="6843415389823096647">"G, breve"</string>
+    <string name="spoken_accented_letter_0121" msgid="6205288708713306903">"G, icashazi ngenhla"</string>
+    <string name="spoken_accented_letter_0123" msgid="2394277128105386261">"G, cedilla"</string>
+    <string name="spoken_accented_letter_0125" msgid="6575866461277751345">"H, circumflex"</string>
+    <string name="spoken_accented_letter_0127" msgid="1316971762214091641">"H, stroke"</string>
+    <string name="spoken_accented_letter_0129" msgid="7824912405885325754">"I, tilde"</string>
+    <string name="spoken_accented_letter_012B" msgid="6772690258769905270">"I, macron"</string>
+    <string name="spoken_accented_letter_012D" msgid="2933871131556503448">"I, breve"</string>
+    <string name="spoken_accented_letter_012F" msgid="1340511254985181663">"I, ogonek"</string>
+    <string name="spoken_accented_letter_0131" msgid="5635600720566083969">"Dotless I"</string>
+    <string name="spoken_accented_letter_0133" msgid="7593704176516791941">"I, J, ligature"</string>
+    <string name="spoken_accented_letter_0135" msgid="4521109674238248436">"J, circumflex"</string>
+    <string name="spoken_accented_letter_0137" msgid="5886444641003852175">"K, cedilla"</string>
+    <string name="spoken_accented_letter_0138" msgid="4200294389170924853">"Kra"</string>
+    <string name="spoken_accented_letter_013A" msgid="3558015385412543517">"L, acute"</string>
+    <string name="spoken_accented_letter_013C" msgid="1853639924813858734">"L, cedilla"</string>
+    <string name="spoken_accented_letter_013E" msgid="7489345561739421886">"L, caron"</string>
+    <string name="spoken_accented_letter_0140" msgid="7946718707268270589">"L, icashazi eliphakathi"</string>
+    <string name="spoken_accented_letter_0142" msgid="752931798111122240">"L, stroke"</string>
+    <string name="spoken_accented_letter_0144" msgid="201843550323875352">"N, acute"</string>
+    <string name="spoken_accented_letter_0146" msgid="3403847152606051818">"N, cedilla"</string>
+    <string name="spoken_accented_letter_0148" msgid="9215300786722209338">"N, caron"</string>
+    <string name="spoken_accented_letter_0149" msgid="3191850286630154063">"N, kulandele i-apostrophe"</string>
+    <string name="spoken_accented_letter_014B" msgid="8503022408522837410">"Eng"</string>
+    <string name="spoken_accented_letter_014D" msgid="4452323602550610641">"O, macron"</string>
+    <string name="spoken_accented_letter_014F" msgid="2795957717094385336">"O, breve"</string>
+    <string name="spoken_accented_letter_0151" msgid="8013704745216410244">"O, double acute"</string>
+    <string name="spoken_accented_letter_0153" msgid="8410582495993285221">"O, E, ligature"</string>
+    <string name="spoken_accented_letter_0155" msgid="7601517174689798560">"R, acute"</string>
+    <string name="spoken_accented_letter_0157" msgid="9071455715455643810">"R, cedilla"</string>
+    <string name="spoken_accented_letter_0159" msgid="7726911392381543439">"R, caron"</string>
+    <string name="spoken_accented_letter_015B" msgid="1854129531164494117">"S, acute"</string>
+    <string name="spoken_accented_letter_015D" msgid="4743571603550582530">"S, circumflex"</string>
+    <string name="spoken_accented_letter_015F" msgid="1519945638631588761">"S, cedilla"</string>
+    <string name="spoken_accented_letter_0161" msgid="7493478552029144246">"S, caron"</string>
+    <string name="spoken_accented_letter_0163" msgid="9103547637928833069">"T, cedilla"</string>
+    <string name="spoken_accented_letter_0165" msgid="7306159398214872062">"T, caron"</string>
+    <string name="spoken_accented_letter_0167" msgid="5578767705098672443">"T, stroke"</string>
+    <string name="spoken_accented_letter_0169" msgid="413046581387735371">"U, tilde"</string>
+    <string name="spoken_accented_letter_016B" msgid="3209778874978859441">"U, macron"</string>
+    <string name="spoken_accented_letter_016D" msgid="2983326533258602840">"U, breve"</string>
+    <string name="spoken_accented_letter_016F" msgid="4416532499516387231">"U, indingilizi ngenhla"</string>
+    <string name="spoken_accented_letter_0171" msgid="3435171971353200807">"U, double acute"</string>
+    <string name="spoken_accented_letter_0173" msgid="4494154432483553480">"U, ogonek"</string>
+    <string name="spoken_accented_letter_0175" msgid="2154545579611918513">"W, circumflex"</string>
+    <string name="spoken_accented_letter_0177" msgid="4034463827306904781">"Y, circumflex"</string>
+    <string name="spoken_accented_letter_017A" msgid="3368292232292925369">"Z, acute"</string>
+    <string name="spoken_accented_letter_017C" msgid="2834484584505860430">"Z, icashazi ngenhla"</string>
+    <string name="spoken_accented_letter_017E" msgid="1209240442434887098">"Z, caron"</string>
+    <string name="spoken_accented_letter_017F" msgid="317501463253362415">"Long S"</string>
+    <string name="spoken_accented_letter_01A1" msgid="630186564859044196">"O, horn"</string>
+    <string name="spoken_accented_letter_01B0" msgid="8544012177684640443">"U, horn"</string>
+    <string name="spoken_accented_letter_0219" msgid="1960371842020076066">"S, ukhefana ngezansi"</string>
+    <string name="spoken_accented_letter_021B" msgid="1398418662032919032">"T, ukhefana ngezansi"</string>
+    <string name="spoken_accented_letter_0259" msgid="2464085263158415898">"Schwa"</string>
+    <string name="spoken_accented_letter_1EA1" msgid="688124877202887630">"A, icashazi ngenhla"</string>
+    <string name="spoken_accented_letter_1EA3" msgid="327960130366386256">"A, ihhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EA5" msgid="637406363453769610">"A, circumflex ne-acute"</string>
+    <string name="spoken_accented_letter_1EA7" msgid="1419591804181615409">"A, circumflex ne-grave"</string>
+    <string name="spoken_accented_letter_1EA9" msgid="6068887382734896756">"A, circumflex nehhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EAB" msgid="7236523151662538333">"A, circumflex ne-tilde"</string>
+    <string name="spoken_accented_letter_1EAD" msgid="2363364864106332076">"A, circumflex necashazi ngenhla"</string>
+    <string name="spoken_accented_letter_1EAF" msgid="1576329511464272935">"A, breve ne-acute"</string>
+    <string name="spoken_accented_letter_1EB1" msgid="4634735072816076592">"A, breve ne-grave"</string>
+    <string name="spoken_accented_letter_1EB3" msgid="2325245849038771534">"A, breve nehhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EB5" msgid="3720427596242746295">"A, breve ne-tilde"</string>
+    <string name="spoken_accented_letter_1EB7" msgid="700415535653646695">"A, breve necashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EB9" msgid="3901338692305890487">"E, icashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EBB" msgid="4028688699415417302">"E, ihhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EBD" msgid="181253633045931897">"E, tilde"</string>
+    <string name="spoken_accented_letter_1EBF" msgid="3309618845007944963">"E, circumflex ne-acute"</string>
+    <string name="spoken_accented_letter_1EC1" msgid="8139046749226332542">"E, circumflex ne-grave"</string>
+    <string name="spoken_accented_letter_1EC3" msgid="3239674223053133383">"E, circumflex nehhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EC5" msgid="2216559244705714587">"E, circumflex ne-tilde"</string>
+    <string name="spoken_accented_letter_1EC7" msgid="9012731468253986792">"E, circumflex necashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EC9" msgid="2901917620195717034">"I, ihhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1ECB" msgid="5470387489820034621">"I, icashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1ECD" msgid="1340122876914839806">"O, icashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1ECF" msgid="2326921263882559755">"O, ihhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1ED1" msgid="2885683296042774958">"O, circumflex ne-acute"</string>
+    <string name="spoken_accented_letter_1ED3" msgid="6857664926477376178">"O, circumflex ne-grave"</string>
+    <string name="spoken_accented_letter_1ED5" msgid="2015209467290624062">"O, circumflex nehhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1ED7" msgid="7924481354960306389">"O, circumflex ne-tilde"</string>
+    <string name="spoken_accented_letter_1ED9" msgid="7023315590332365554">"O, circumflex necashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EDB" msgid="2379438944917634496">"O, horn ne-acute"</string>
+    <string name="spoken_accented_letter_1EDD" msgid="8107077534204404085">"O, horn ne-grave"</string>
+    <string name="spoken_accented_letter_1EDF" msgid="1846880105528347966">"O, horn nehhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EE1" msgid="1520037313389776718">"O, horn ne-tilde"</string>
+    <string name="spoken_accented_letter_1EE3" msgid="907964027171008963">"O, horn necashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EE5" msgid="1522024630360038700">"U, icashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EE7" msgid="7815412228302952637">"U, uhhuku ngehla"</string>
+    <string name="spoken_accented_letter_1EE9" msgid="4219119671251485651">"U, horn ne-acute"</string>
+    <string name="spoken_accented_letter_1EEB" msgid="4086009841269002231">"U, horn ne-grave"</string>
+    <string name="spoken_accented_letter_1EED" msgid="3528151733528719847">"U, horn nehhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EEF" msgid="3508548229409072119">"U, horn ne-tilde"</string>
+    <string name="spoken_accented_letter_1EF1" msgid="1912816350401931115">"U, horn necashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EF3" msgid="7211760439435946494">"Y, grave"</string>
+    <string name="spoken_accented_letter_1EF5" msgid="8998864482764007384">"Y, icashazi ngezansi"</string>
+    <string name="spoken_accented_letter_1EF7" msgid="922043627252869200">"Y, ihhuku ngenhla"</string>
+    <string name="spoken_accented_letter_1EF9" msgid="6213977100552260366">"Y, tilde"</string>
+    <string name="spoken_symbol_00A1" msgid="4281758332905123408">"Umbabazi okokushiwo"</string>
+    <string name="spoken_symbol_00AB" msgid="4093069643313064892">"Umaki wokukopisha onama-engeli amabili okhombe ngakwesokunxele"</string>
+    <string name="spoken_symbol_00B7" msgid="2447718728927874920">"Icashazi eliphakathi"</string>
+    <string name="spoken_symbol_00B9" msgid="8026257165451461231">"I-Superscript one"</string>
+    <string name="spoken_symbol_00BB" msgid="1102740075655373928">"Umaki wokukopisha onama-engeli amabili okhombe ngakwesokudla"</string>
+    <string name="spoken_symbol_00BF" msgid="6233794752573788098">"Umbuzi okokushiwo"</string>
+    <string name="spoken_symbol_2018" msgid="4886476295598930225">"Umaki wokukopisha oyedwa ongakwesokunxele"</string>
+    <string name="spoken_symbol_2019" msgid="8892530161598134083">"Umaki wokukopisha oyedwa ongakwesokudla"</string>
+    <string name="spoken_symbol_201A" msgid="2072987157683446644">"Umaki wokukopisha owodwa ophansi 9"</string>
+    <string name="spoken_symbol_201C" msgid="4588048378803665427">"Umaki wokukopisha ongakubili ongakwekunxele"</string>
+    <string name="spoken_symbol_201D" msgid="1642776849495925895">"Umaki wokukopisha ongakubili ongakwekudla"</string>
+    <string name="spoken_symbol_2020" msgid="9084628638189344431">"Dagger"</string>
+    <string name="spoken_symbol_2021" msgid="5081396468559426475">"Double dagger"</string>
+    <string name="spoken_symbol_2030" msgid="9068837172419431755">"Per mille sign"</string>
+    <string name="spoken_symbol_2032" msgid="3014506329156664396">"Prime"</string>
+    <string name="spoken_symbol_2033" msgid="1251022699713475088">"Double prime"</string>
+    <string name="spoken_symbol_2039" msgid="6989616457213775957">"Umaki wokukopisha oyedwa ngokhombe ngakwesokunxele"</string>
+    <string name="spoken_symbol_203A" msgid="31245095449823701">"Umaki wokukopisha oyedwa ngokhombe ngakwesokudla"</string>
+    <string name="spoken_symbol_2074" msgid="2116717717093306894">"Superscript four"</string>
+    <string name="spoken_symbol_207F" msgid="1706731172134246659">"I-Superscript latin uhlambu oluncane u-n"</string>
+    <string name="spoken_symbol_20B1" msgid="2159994270622444689">"Uphawu lwe-Peso"</string>
+    <string name="spoken_symbol_2105" msgid="7289404939366976829">"Ukunakekela ko"</string>
+    <string name="spoken_symbol_2192" msgid="827804523596125414">"Umcibisholo wangakwesokudla"</string>
+    <string name="spoken_symbol_2193" msgid="2659541693445985717">"Umcibisholo oyaphansi"</string>
+    <string name="spoken_symbol_2205" msgid="4457188084269117343">"Isethi engenalutho"</string>
+    <string name="spoken_symbol_2206" msgid="4856786565708380687">"Nciphisa"</string>
+    <string name="spoken_symbol_2264" msgid="5092061257745123554">"Okuncane noma okulinganayo"</string>
+    <string name="spoken_symbol_2265" msgid="1907966479878036357">"Okukhulu noma okulinganayo"</string>
+    <string name="spoken_symbol_2605" msgid="5202920479405857753">"Inkanyezi emnyama"</string>
+</resources>
diff --git a/java/res/values-zu/strings-talkback-descriptions.xml b/java/res/values-zu/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..6d3de70
--- /dev/null
+++ b/java/res/values-zu/strings-talkback-descriptions.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="spoken_use_headphones" msgid="4313642710742229868">"Plaka ku-headset ukuze uzwe okhiye bephasiwedi ezindlebeni zakho bezwakala kakhulu."</string>
+    <string name="spoken_current_text_is" msgid="4240549866156675799">"Umbhalo wamanje ngu %s"</string>
+    <string name="spoken_no_text_entered" msgid="1711276837961785646">"Awukho umbhalo ofakiwe"</string>
+    <string name="spoken_auto_correct" msgid="8989324692167993804">"I-<xliff:g id="KEY_NAME">%1$s</xliff:g> ilungisa i-<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> kube yi-<xliff:g id="CORRECTED_WORD">%3$s</xliff:g>"</string>
+    <string name="spoken_auto_correct_obscured" msgid="7769449372355268412">"I-<xliff:g id="KEY_NAME">%1$s</xliff:g> yenza ukulungisa okuzenzakalelayo"</string>
+    <string name="spoken_description_unknown" msgid="5139930082759824442">"Uhlamvu olungaziwa"</string>
+    <string name="spoken_description_shift" msgid="7209798151676638728">"U-Shift"</string>
+    <string name="spoken_description_symbols_shift" msgid="3483198879916435717">"Amasimbuli amaningi"</string>
+    <string name="spoken_description_shift_shifted" msgid="3122704922642232605">"U-Shift"</string>
+    <string name="spoken_description_symbols_shift_shifted" msgid="5179175466878186081">"Amasimbuli"</string>
+    <string name="spoken_description_caps_lock" msgid="1224851412185975036">"U-Shift"</string>
+    <string name="spoken_description_delete" msgid="3878902286264983302">"Susa"</string>
+    <string name="spoken_description_to_symbol" msgid="8244903740201126590">"Amasimbuli"</string>
+    <string name="spoken_description_to_alpha" msgid="4081215210530031950">"Izinhlamvu"</string>
+    <string name="spoken_description_to_numeric" msgid="4560261331530795682">"Izinombolo"</string>
+    <string name="spoken_description_settings" msgid="7281251004003143204">"Izilungiselelo"</string>
+    <string name="spoken_description_tab" msgid="8210782459446866716">"Ithebhu"</string>
+    <string name="spoken_description_space" msgid="5908716896642059145">"Isikhala"</string>
+    <string name="spoken_description_mic" msgid="6153138783813452464">"Okungenayo kwezwi"</string>
+    <string name="spoken_description_emoji" msgid="7990051553008088470">"I-Emoji"</string>
+    <string name="spoken_description_return" msgid="3183692287397645708">"Buyela"</string>
+    <string name="spoken_description_search" msgid="5099937658231911288">"Sesha"</string>
+    <string name="spoken_description_dot" msgid="5644176501632325560">"Icashazi"</string>
+    <string name="spoken_description_language_switch" msgid="6818666779313544553">"Shintsha ulimi"</string>
+    <string name="spoken_description_action_next" msgid="431761808119616962">"Okulandelayo"</string>
+    <string name="spoken_description_action_previous" msgid="2919072174697865110">"Okwangaphambilini"</string>
+    <string name="spoken_description_shiftmode_on" msgid="5107180516341258979">"U-Shift uvunyelwe"</string>
+    <string name="spoken_description_shiftmode_locked" msgid="7307477738053606881">"Ofeleba bavunyelwe"</string>
+    <string name="spoken_description_mode_symbol" msgid="111186851131446691">"Imodi yezimpawu"</string>
+    <string name="spoken_description_mode_symbol_shift" msgid="4305607977537665389">"Imodi yamasimbuli amaningi"</string>
+    <string name="spoken_description_mode_alpha" msgid="4676004119618778911">"Imodi yezinhlamvu"</string>
+    <string name="spoken_description_mode_phone" msgid="2061220553756692903">"Imodi yefoni"</string>
+    <string name="spoken_description_mode_phone_shift" msgid="7879963803547701090">"Imodi yezimpawu zefoni"</string>
+    <string name="announce_keyboard_hidden" msgid="2313574218950517779">"Ikhibhodi ifihliwe"</string>
+    <string name="announce_keyboard_mode" msgid="6698257917367823205">"Ibonisa ikhibhodi ye-<xliff:g id="KEYBOARD_MODE">%s</xliff:g>"</string>
+    <string name="keyboard_mode_date" msgid="6597407244976713364">"idethi"</string>
+    <string name="keyboard_mode_date_time" msgid="3642804408726668808">"idethi nesikhathi"</string>
+    <string name="keyboard_mode_email" msgid="1239682082047693644">"i-imeyili"</string>
+    <string name="keyboard_mode_im" msgid="3812086215529493501">"imilayezo"</string>
+    <string name="keyboard_mode_number" msgid="5395042245837996809">"inombolo"</string>
+    <string name="keyboard_mode_phone" msgid="2486230278064523665">"ifoni"</string>
+    <string name="keyboard_mode_text" msgid="9138789594969187494">"umbhalo"</string>
+    <string name="keyboard_mode_time" msgid="8558297845514402675">"isikhathi"</string>
+    <string name="keyboard_mode_url" msgid="8072011652949962550">"I-URL"</string>
+    <string name="spoken_descrption_emoji_category_recents" msgid="4185344945205590692">"Okwakamuva"</string>
+    <string name="spoken_descrption_emoji_category_people" msgid="8414196269847492817">"Abantu"</string>
+    <string name="spoken_descrption_emoji_category_objects" msgid="6116297906606195278">"Izinto"</string>
+    <string name="spoken_descrption_emoji_category_nature" msgid="5018340512472354640">"Indalo"</string>
+    <string name="spoken_descrption_emoji_category_places" msgid="1163315840948545317">"Izindawo"</string>
+    <string name="spoken_descrption_emoji_category_symbols" msgid="474680659024880601">"Amasimbuli"</string>
+    <string name="spoken_descrption_emoji_category_emoticons" msgid="456737544787823539">"Izithombe-mzwelo"</string>
+    <string name="spoken_description_upper_case" msgid="4904835255229433916">"Ufeleba <xliff:g id="LOWER_LETTER">%s</xliff:g>"</string>
+    <string name="spoken_letter_0049" msgid="4743162182646977944">"Ufeleba I"</string>
+    <string name="spoken_letter_0130" msgid="4766619646231612274">"Ufeleba I, icashazi ngenhla"</string>
+    <string name="spoken_symbol_unknown" msgid="717298227061173706">"Uphawu olungaziwa"</string>
+    <string name="spoken_emoji_unknown" msgid="5981009928135394306">"I-emoji engaziwa"</string>
+    <string name="spoken_open_more_keys_keyboard" msgid="6832897688371903747">"Ezinye izinhlamvu ziyatholakala"</string>
+    <string name="spoken_close_more_keys_keyboard" msgid="3524914657934712026">"Ezinye izinhlamvu ziyalahlwa"</string>
+    <string name="spoken_open_more_suggestions" msgid="4231720702882969760">"Ezinye iziphakamiso ziyatholakala"</string>
+    <string name="spoken_close_more_suggestions" msgid="9118455416075032839">"Ezinye iziphakamiso ziyalahlwa"</string>
+</resources>
diff --git a/java/res/values-zu/strings.xml b/java/res/values-zu/strings.xml
index 27d1131..e644a12 100644
--- a/java/res/values-zu/strings.xml
+++ b/java/res/values-zu/strings.xml
@@ -21,18 +21,23 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="english_ime_input_options" msgid="3909945612939668554">"Okukhethwa kukho kokungenayo"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"Imiyalo yefayela lokungena lokucwaninga"</string>
     <string name="use_contacts_for_spellchecking_option_title" msgid="5374120998125353898">"Bheka amagama woxhumana nabo"</string>
     <string name="use_contacts_for_spellchecking_option_summary" msgid="8754413382543307713">"Isihloli sokupela sisebenzisa okungenayo kusuka kuhlu lalabo oxhumana nabo"</string>
     <string name="vibrate_on_keypress" msgid="5258079494276955460">"Dlidlizelisa ngokucindezela inkinobho"</string>
     <string name="sound_on_keypress" msgid="6093592297198243644">"Umsindo wokucindezela ukhiye"</string>
     <string name="popup_on_keypress" msgid="123894815723512944">"Ugaxekile ngokucindezela ukhiye"</string>
-    <string name="general_category" msgid="1859088467017573195">"Okuvamile"</string>
-    <string name="correction_category" msgid="2236750915056607613">"Ukulungiswa kombhalo"</string>
-    <string name="gesture_typing_category" msgid="497263612130532630">"Ukuthayipha ngokuthinta"</string>
-    <string name="misc_category" msgid="6894192814868233453">"Okunye okukhethwa kukho"</string>
-    <string name="advanced_settings" msgid="362895144495591463">"Izilungiselelo ezithuthukisiwe"</string>
-    <string name="advanced_settings_summary" msgid="4487980456152830271">"Izinketho zezingcwenti"</string>
+    <!-- no translation found for settings_screen_input (2808654300248306866) -->
+    <skip />
+    <!-- no translation found for settings_screen_appearances (3611951947835553700) -->
+    <skip />
+    <!-- no translation found for settings_screen_multi_lingual (6829970893413937235) -->
+    <skip />
+    <!-- no translation found for settings_screen_gesture (9113437621722871665) -->
+    <skip />
+    <!-- no translation found for settings_screen_correction (1616818407747682955) -->
+    <skip />
+    <!-- no translation found for settings_screen_advanced (7472408607625972994) -->
+    <skip />
     <string name="include_other_imes_in_language_switch_list" msgid="4533689960308565519">"Shintshela kwezinye izindlela zokungena"</string>
     <string name="include_other_imes_in_language_switch_list_summary" msgid="840637129103317635">"Ukhiye wokushintsha ulimi ubandakanya ezinye izindlela zokungenayo"</string>
     <string name="show_language_switch_key" msgid="5915478828318774384">"Ukhiye wokushintsha ullimi"</string>
@@ -46,6 +51,8 @@
     <string name="settings_system_default" msgid="6268225104743331821">"Okuzenzakalelayo kwesistimu"</string>
     <string name="use_contacts_dict" msgid="4435317977804180815">"Sikisela amagama Othintana nabo"</string>
     <string name="use_contacts_dict_summary" msgid="6599983334507879959">"Amagama abasebenzisi kusuka Kothintana nabo bokusikisela nokulungisa"</string>
+    <string name="use_personalized_dicts" msgid="5167396352105467626">"Iziphakamiso ezenziwe okomuntu siqu"</string>
+    <string name="enable_metrics_logging" msgid="5506372337118822837">"Thuthukisa i-<xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
     <string name="use_double_space_period" msgid="8781529969425082860">"Isikhathi se-Double-space"</string>
     <string name="use_double_space_period_summary" msgid="6532892187247952799">"Ukuthepha kabili kubha yesikhala kufaka isikhathi esilandelwa yisikhala"</string>
     <string name="auto_cap" msgid="1719746674854628252">"Ukwenza ofeleba okuzenzakalelayo"</string>
@@ -73,72 +80,26 @@
     <string name="gesture_preview_trail" msgid="3802333369335722221">"Bonisa i-trail yokuthinta"</string>
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"Ukuhlola kuqala okuntantayo okunamandla"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"Bona igama eliphakanyisiwe ngenkathi uthinta"</string>
-    <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : Kulondoloziwe"</string>
-    <string name="spoken_use_headphones" msgid="896961781287283493">"Plaka ku-headset ukuze uzwe okhiye bephasiwedi ezindlebeni zakho bezwakala kakhulu."</string>
-    <string name="spoken_current_text_is" msgid="2485723011272583845">"Umbhalo wamanje ngu %s"</string>
-    <string name="spoken_no_text_entered" msgid="7479685225597344496">"Awukho umbhalo ofakiwe"</string>
-    <string name="spoken_auto_correct" msgid="8005997889020109763">"I-<xliff:g id="KEY">%1$s</xliff:g> ilungisa i-<xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> ibe yi-<xliff:g id="CORRECTED">%3$s</xliff:g>"</string>
-    <string name="spoken_auto_correct_obscured" msgid="6276420476908833791">"I-<xliff:g id="KEY">%1$s</xliff:g> yenza ukulungiswa kokuzenzakalela"</string>
-    <string name="spoken_description_unknown" msgid="3197434010402179157">"Ikhodi yokhiye %d"</string>
-    <string name="spoken_description_shift" msgid="244197883292549308">"Shift"</string>
-    <string name="spoken_description_shift_shifted" msgid="1681877323344195035">"U-Shift uvuliwe (thepha ukuwuvimbela)"</string>
-    <string name="spoken_description_caps_lock" msgid="3276478269526304432">"Ofeleba bavuliwe (thepha ukubavimbela)"</string>
-    <string name="spoken_description_delete" msgid="8740376944276199801">"Susa"</string>
-    <string name="spoken_description_to_symbol" msgid="5486340107500448969">"Amasimbuli"</string>
-    <string name="spoken_description_to_alpha" msgid="23129338819771807">"Imbhalo"</string>
-    <string name="spoken_description_to_numeric" msgid="591752092685161732">"Izinombolo"</string>
-    <string name="spoken_description_settings" msgid="4627462689603838099">"Izilungiselelo"</string>
-    <string name="spoken_description_tab" msgid="2667716002663482248">"Tab"</string>
-    <string name="spoken_description_space" msgid="2582521050049860859">"Isikhala"</string>
-    <string name="spoken_description_mic" msgid="615536748882611950">"Okungenayo kwezwi"</string>
-    <string name="spoken_description_smiley" msgid="2256309826200113918">"Ubuso-obumomothekayo"</string>
-    <string name="spoken_description_return" msgid="8178083177238315647">"Buyisela"</string>
-    <string name="spoken_description_search" msgid="1247236163755920808">"Sesha"</string>
-    <string name="spoken_description_dot" msgid="40711082435231673">"Icashazi"</string>
-    <string name="spoken_description_language_switch" msgid="5507091328222331316">"Shintsha ulimi"</string>
-    <string name="spoken_description_action_next" msgid="8636078276664150324">"Okulandelayo"</string>
-    <string name="spoken_description_action_previous" msgid="800872415009336208">"Okwandulele"</string>
-    <string name="spoken_description_shiftmode_on" msgid="5700440798609574589">"U-Shift uvunyelwe"</string>
-    <string name="spoken_description_shiftmode_locked" msgid="593175803181701830">"Ofeleba bavunyelwe"</string>
-    <string name="spoken_description_shiftmode_off" msgid="657219998449174808">"U-Shift uvimbelwe"</string>
-    <string name="spoken_description_mode_symbol" msgid="7183343879909747642">"Imodi yezimpawu"</string>
-    <string name="spoken_description_mode_alpha" msgid="3528307674390156956">"Imodi yezinhlamvu"</string>
-    <string name="spoken_description_mode_phone" msgid="6520207943132026264">"Imodi yefoni"</string>
-    <string name="spoken_description_mode_phone_shift" msgid="5499629753962641227">"Imodi yezimpawu zefoni"</string>
-    <string name="announce_keyboard_hidden" msgid="8718927835531429807">"Ikhibhodi ifihliwe"</string>
-    <string name="announce_keyboard_mode" msgid="4729081055438508321">"Kuboniswa ikhibhodi engu-<xliff:g id="MODE">%s</xliff:g>"</string>
-    <string name="keyboard_mode_date" msgid="3137520166817128102">"idethi"</string>
-    <string name="keyboard_mode_date_time" msgid="339593358488851072">"idethi nesikhathi"</string>
-    <string name="keyboard_mode_email" msgid="6216248078128294262">"i-imeyili"</string>
-    <string name="keyboard_mode_im" msgid="1137405089766557048">"imilayezo"</string>
-    <string name="keyboard_mode_number" msgid="7991623440699957069">"inombolo"</string>
-    <string name="keyboard_mode_phone" msgid="6851627527401433229">"ifoni"</string>
-    <string name="keyboard_mode_text" msgid="6479436687899701619">"umbhalo"</string>
-    <string name="keyboard_mode_time" msgid="4381856885582143277">"isikhathi"</string>
-    <string name="keyboard_mode_url" msgid="1519819835514911218">"I-URL"</string>
+    <string name="gesture_space_aware" msgid="2078291600664682496">"Igama lokuthinta"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"Faka izikhala ngesikhathi sokuthinta ngokushelelela kukhiye wesikhala"</string>
     <string name="voice_input" msgid="3583258583521397548">"Inkinobho yokufaka izwi"</string>
-    <string name="voice_input_modes_main_keyboard" msgid="3360660341121083174">"Kwikhibhodi eyisisekelo"</string>
-    <string name="voice_input_modes_symbols_keyboard" msgid="7203213240786084067">"Ikhibhodi yezimpawu"</string>
-    <string name="voice_input_modes_off" msgid="3745699748218082014">"VALIWE"</string>
-    <string name="voice_input_modes_summary_main_keyboard" msgid="6586544292900314339">"I-mic kwikhibhodi eyisisekelo"</string>
-    <string name="voice_input_modes_summary_symbols_keyboard" msgid="5233725927281932391">"Ikhibhodi yezimpawu ze-mic"</string>
-    <string name="voice_input_modes_summary_off" msgid="63875609591897607">"Okufakwayo ngezwi kuvinjelwe"</string>
+    <string name="voice_input_disabled_summary" msgid="8141750303464726129">"Azikho izindlela zokufaka zezwi ezinikwe amandla. Hlola izilungiselelo zolimi kanye nezokufaka."</string>
     <string name="configure_input_method" msgid="373356270290742459">"Misa izindlela zokufakwayo"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"Izilimi zokufakwayo"</string>
     <string name="send_feedback" msgid="1780431884109392046">"Thumela impendulo"</string>
     <string name="select_language" msgid="3693815588777926848">"Izilimi zokufakwayo"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"Thinta futhi ukuze ulondoloze"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"Isichazamazwi siyatholakala"</string>
-    <string name="prefs_enable_log" msgid="6620424505072963557">"Vumela impendulo yomsebenzisi"</string>
-    <string name="prefs_description_log" msgid="7525225584555429211">"Siza ukuthuthukisa lo mhleli wendlela yokufaka ngokusithumela ngokuzenzakalela izibalo zokusetshenziswa nokukhubeka."</string>
     <string name="keyboard_layout" msgid="8451164783510487501">"Indikimba yekhibhodi"</string>
     <string name="subtype_en_GB" msgid="88170601942311355">"i-English(UK)"</string>
     <string name="subtype_en_US" msgid="6160452336634534239">"i-English (US)"</string>
     <string name="subtype_es_US" msgid="5583145191430180200">"I-Spanish (US)"</string>
-    <string name="subtype_with_layout_en_GB" msgid="2179097748724725906">"I-English (UK) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_en_US" msgid="1362581347576714579">"I-English (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_with_layout_es_US" msgid="6261791057007890189">"I-Spanish (US) (<xliff:g id="LAYOUT">%s</xliff:g>)"</string>
-    <string name="subtype_nepali_traditional" msgid="9032247506728040447">"<xliff:g id="LANGUAGE">%s</xliff:g> (Ezosiko)"</string>
+    <string name="subtype_with_layout_en_GB" msgid="1931018968641592304">"I-English (UK) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
+    <string name="subtype_with_layout_en_US" msgid="8809311287529805422">"I-English (US) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
+    <string name="subtype_with_layout_es_US" msgid="510930471167541338">"Isi-Spanish (US) ( <xliff:g id="KEYBOARD_LAYOUT">%s</xliff:g> )"</string>
+    <string name="subtype_generic_traditional" msgid="8584594350973800586">"Isi-<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Tradition)"</string>
+    <string name="subtype_generic_cyrillic" msgid="7486451947618138947">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Isi-Cyrillic)"</string>
+    <string name="subtype_generic_latin" msgid="9128716486310604145">"<xliff:g id="LANGUAGE_NAME">%s</xliff:g> (Isi-Latin)"</string>
     <string name="subtype_no_language" msgid="7137390094240139495">"Alikho ulimi (Alfabhethi)"</string>
     <string name="subtype_no_language_qwerty" msgid="244337630616742604">"Alfabhethi (QWERTY)"</string>
     <string name="subtype_no_language_qwertz" msgid="443066912507547976">"Alfabhethi (QWERTZ)"</string>
@@ -147,9 +108,16 @@
     <string name="subtype_no_language_colemak" msgid="5837418400010302623">"Alfabhethi (Colemak)"</string>
     <string name="subtype_no_language_pcqwerty" msgid="5354918232046200018">"Alfabhethi (PC)"</string>
     <string name="subtype_emoji" msgid="7483586578074549196">"I-Emoji"</string>
-    <string name="keyboard_color_scheme" msgid="9192934113872818070">"Isikimu sombala"</string>
-    <string name="keyboard_color_scheme_white" msgid="6684064723850265438">"Okumhlophe"</string>
-    <string name="keyboard_color_scheme_blue" msgid="2488527224758177593">"Okuluhlaza okwesibhakabhaka"</string>
+    <!-- no translation found for keyboard_theme (4909551808526178852) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_white (8506588144096428751) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_holo_blue (192400518003397418) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_dark (2701178578784760596) -->
+    <skip />
+    <!-- no translation found for keyboard_theme_material_light (3479400901818790331) -->
+    <skip />
     <string name="custom_input_styles_title" msgid="8429952441821251512">"Izitayela zokufaka ngokwezifiso"</string>
     <string name="add_style" msgid="6163126614514489951">"Engeza isitayela"</string>
     <string name="add" msgid="8299699805688017798">"Engeza"</string>
@@ -161,14 +129,13 @@
     <string name="enable" msgid="5031294444630523247">"Nika amandla"</string>
     <string name="not_now" msgid="6172462888202790482">"Hhayi manje"</string>
     <string name="custom_input_style_already_exists" msgid="8008728952215449707">"Isitayela sokufaka esifanayo sesivele sikhona: <xliff:g id="INPUT_STYLE_NAME">%s</xliff:g>"</string>
-    <string name="prefs_usability_study_mode" msgid="1261130555134595254">"Imodi yesitadi yokusebenziseka"</string>
     <string name="prefs_key_longpress_timeout_settings" msgid="6102240298932897873">"Ukulibazisa ukucindezela isikhashana ukhiye"</string>
     <string name="prefs_keypress_vibration_duration_settings" msgid="7918341459947439226">"Ubude besikhathi sokudlidliza ukucindezela ukhiye"</string>
     <string name="prefs_keypress_sound_volume_settings" msgid="6027007337036891623">"Ivolumu yomsindo wokucindezela ukhiye"</string>
     <string name="prefs_read_external_dictionary" msgid="2588931418575013067">"Funda ifayela elangaphandle lesichazamazwi"</string>
     <string name="read_external_dictionary_no_files_message" msgid="4947420942224623792">"Awekho amafayela wesichazamazwi kufolda yokulandiwe"</string>
     <string name="read_external_dictionary_multiple_files_title" msgid="7637749044265808628">"Khetha ifayela lesichazamazwi ukuze ulifake"</string>
-    <string name="read_external_dictionary_confirm_install_message" msgid="6898610163768980870">"Ufuna ukufakela i-<xliff:g id="LOCALE_NAME">%s</xliff:g> leli fayela ngokweqiniso?"</string>
+    <string name="read_external_dictionary_confirm_install_message" msgid="4782116251651288054">"Fakela ngempela leli fayela i-<xliff:g id="LANGUAGE_NAME">%s</xliff:g>?"</string>
     <string name="error" msgid="8940763624668513648">"Kube nephutha"</string>
     <string name="button_default" msgid="3988017840431881491">"Okuzenzakalelayo"</string>
     <string name="setup_welcome_title" msgid="6112821709832031715">"Siyakwamukela ku-<xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
@@ -207,18 +174,19 @@
     <string name="check_for_updates_now" msgid="8087688440916388581">"Qala kabusha"</string>
     <string name="last_update" msgid="730467549913588780">"Igcine ukulungiswa"</string>
     <string name="message_updating" msgid="4457761393932375219">"Ihlola izibuyekezo"</string>
-    <string name="message_loading" msgid="8689096636874758814">"Iyalayisha..."</string>
+    <string name="message_loading" msgid="5638680861387748936">"Iyalayisha..."</string>
     <string name="main_dict_description" msgid="3072821352793492143">"Isichazamazwi sakho esisemqoka"</string>
     <string name="cancel" msgid="6830980399865683324">"Khansela"</string>
+    <string name="go_to_settings" msgid="3876892339342569259">"Izilungiselelo"</string>
     <string name="install_dict" msgid="180852772562189365">"Faka"</string>
     <string name="cancel_download_dict" msgid="7843340278507019303">"Khansela"</string>
     <string name="delete_dict" msgid="756853268088330054">"Susa"</string>
-    <string name="should_download_over_metered_prompt" msgid="2878629598667658845">"Ulimi olukhethiwe kudivayisi yakho yeselula linesichazamazwi esitholakalayo.&lt;br/&gt; Sincoma &lt;b&gt;ukulanda&lt;/b&gt; isichazamazwi sesi-<xliff:g id="LANGUAGE">%1$s</xliff:g> ukwenza kangcono isipiliyoni sakho sokuthayipha.&lt;br/&gt; &lt;br/&gt; Ukulanda ukungathatha iminithi noma amaminithi amabili nge-3G. Amashaja angasebenza uma ungenalo &lt;b&gt;icebo ledatha elinganqunyelwe&lt;/b&gt;.&lt;br/&gt; Uma ungenasiqinisekiso sokuthi iliphi icebo ledatha onalo, sincoma ukuthola uxhumo lwe-Wi-Fi ukuze uqale ukulanda ngokuzenzakalelayo.&lt;br/&gt; &lt;br/&gt; Ithiphu: Ungalanda futhi ususe izichazamazwi ngokuya ku-&lt;b&gt;Ulimi nokungenayo&lt;/b&gt; kumenyu ye-&lt;b&gt;Izilungiselelo&lt;/b&gt; yedivayisi yakho yeselula."</string>
+    <string name="should_download_over_metered_prompt" msgid="1583881200688185508">"Ulimi olukhethiwe kudivayisi yakho yeselula lunesichazamazwi esitholakalayo.&lt;br/&gt; Sincoma &lt;b&gt;ukulanda&lt;/b&gt; isichazamazwi se-<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> ukuze sithuthukise umuzwa wakho wokuthayipha.&lt;br/&gt; &lt;br/&gt; Ukulanda kungathatha iminithi noma amabili ngaphezulu kwe-3G. Ukukhokhiswa kungasebenza uma unganalo &lt;b&gt;uhlelo lwedatha elingenamkhawulo&lt;/b&gt;.&lt;br/&gt; Uma ungenaso isiqiniseko sokuthi ukuliphi uhlelo lwedatha, sincoma ukuthi uthole ukuxhumeka kwe-Wi-Fi ukuze uqale ukulanda ngokuzenzakalela.&lt;br/&gt; &lt;br/&gt; Ithiphu: Ungalanda uphinde ususe izichazamazwi ngokuya ku-&lt;b&gt;Ulimi nokokufaka&lt;/b&gt; kumenyu ye-&lt;b&gt;Izilungiselelo&lt;/b&gt; zedivayisi yakho yeselula."</string>
     <string name="download_over_metered" msgid="1643065851159409546">"Landa manje (<xliff:g id="SIZE_IN_MEGABYTES">%1$.1f</xliff:g>MB)"</string>
     <string name="do_not_download_over_metered" msgid="2176209579313941583">"Landa nge-Wi-Fi"</string>
-    <string name="dict_available_notification_title" msgid="6514288591959117288">"Isichazamazwi se-<xliff:g id="LANGUAGE">%1$s</xliff:g> siyatholakala"</string>
+    <string name="dict_available_notification_title" msgid="4583842811218581658">"Isichazamazwi sitholakalela i-<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g>"</string>
     <string name="dict_available_notification_description" msgid="1075194169443163487">"Cindezela ukuze ubuyekeze uphinde ulande"</string>
-    <string name="toast_downloading_suggestions" msgid="1313027353588566660">"Ukulanda: iziphakamiso ze-<xliff:g id="LANGUAGE">%1$s</xliff:g> zizolunga maduze."</string>
+    <string name="toast_downloading_suggestions" msgid="6128155879830851739">"Ukulanda: iziphakamiso ze-<xliff:g id="LANGUAGE_NAME">%1$s</xliff:g> zizolunga maduze."</string>
     <string name="version_text" msgid="2715354215568469385">"Inguqulo engu-<xliff:g id="VERSION_NUMBER">%1$s</xliff:g>"</string>
     <string name="user_dict_settings_add_menu_title" msgid="1254195365689387076">"Engeza"</string>
     <string name="user_dict_settings_add_dialog_title" msgid="4096700390211748168">"Faka kusichazamazwi"</string>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 31945d0..5434106 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -32,8 +32,6 @@
         <attr name="moreKeysKeyboardStyle" format="reference" />
         <!-- MoreKeysKeyboardView style -->
         <attr name="moreKeysKeyboardViewStyle" format="reference" />
-        <!-- MoreKeysKeyboardView container style -->
-        <attr name="moreKeysKeyboardContainerStyle" format="reference" />
         <!-- Suggestions strip style -->
         <attr name="suggestionStripViewStyle" format="reference" />
         <!-- Suggestion word style -->
@@ -41,15 +39,17 @@
     </declare-styleable>
 
     <declare-styleable name="KeyboardView">
-        <!-- Image for the key. This image needs to be a StateListDrawable, with the following
-             possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
-             checkable+checked+pressed. -->
+        <!-- Background image for the key. This image needs to be a {@link StateListDrawable},
+             with the following possible states: normal, pressed, checkable, checkable+pressed,
+             checkable+checked, checkable+checked+pressed. -->
         <attr name="keyBackground" format="reference" />
-        <!-- Image for the functional key used in Emoji layout. -->
-        <attr name="keyBackgroundEmojiFunctional" format="reference" />
-
-        <!-- Horizontal padding of left/right aligned key label to the edge of the key. -->
-        <attr name="keyLabelHorizontalPadding" format="dimension" />
+        <!-- Background image for the functional key. This image needs to be a
+             {@link StateListDrawable}, with the following possible states: normal, pressed. -->
+        <attr name="functionalKeyBackground" format="reference" />
+        <!-- Background image for the spacebar.  This image needs to be a
+             {@link StateListDrawable}, with the following possible states: normal, pressed. -->
+        <attr name="spacebarBackground" format="reference" />
+        <attr name="spacebarIconWidthRatio" format="float" />
         <!-- Right padding of hint letter to the edge of the key.-->
         <attr name="keyHintLetterPadding" format="dimension" />
         <!-- Bottom padding of popup hint letter "..." to the edge of the key.-->
@@ -69,12 +69,11 @@
     </declare-styleable>
 
     <declare-styleable name="MainKeyboardView">
-        <attr name="autoCorrectionSpacebarLedEnabled" format="boolean" />
-        <attr name="autoCorrectionSpacebarLedIcon" format="reference" />
         <!-- Size of the text for spacebar language label, in the proportion of key height. -->
-        <attr name="spacebarTextRatio" format="fraction" />
-        <attr name="spacebarTextColor" format="color" />
-        <attr name="spacebarTextShadowColor" format="color" />
+        <attr name="languageOnSpacebarTextRatio" format="fraction" />
+        <attr name="languageOnSpacebarTextColor" format="color" />
+        <attr name="languageOnSpacebarTextShadowRadius" format="float" />
+        <attr name="languageOnSpacebarTextShadowColor" format="color" />
         <!-- Fadeout animator for spacebar language label. -->
         <attr name="languageOnSpacebarFinalAlpha" format="integer" />
         <attr name="languageOnSpacebarFadeoutAnimator" format="reference" />
@@ -89,8 +88,8 @@
         <attr name="touchNoiseThresholdTime" format="integer" />
         <!-- Touch noise threshold distance in millimeter -->
         <attr name="touchNoiseThresholdDistance" format="dimension" />
-        <!-- Sliding key input enable -->
-        <attr name="slidingKeyInputEnable" format="boolean" />
+        <!-- Enable key selection by dragging finger -->
+        <attr name="keySelectionByDraggingFinger" format="boolean" />
         <attr name="slidingKeyInputPreviewColor" format="color" />
         <attr name="slidingKeyInputPreviewWidth" format="dimension" />
         <attr name="slidingKeyInputPreviewBodyRatio" format="integer" />
@@ -103,12 +102,13 @@
         <attr name="longPressShiftLockTimeout" format="integer" />
         <!-- Ignore special key timeout while typing in millisecond. -->
         <attr name="ignoreAltCodeKeyTimeout" format="integer" />
-        <!-- Layout resource for key press feedback.-->
-        <attr name="keyPreviewLayout" format="reference" />
+        <!-- Background resource for key press feedback.-->
+        <attr name="keyPreviewBackground" format="reference" />
         <!-- Vertical offset of the key press feedback from the key. -->
         <attr name="keyPreviewOffset" format="dimension" />
         <!-- Height of the key press feedback popup. -->
         <attr name="keyPreviewHeight" format="dimension" />
+        <!-- TODO: consolidate key preview linger timeout with the key preview animation parameters. -->
         <!-- Delay after key releasing and key press feedback dismissing in millisecond -->
         <attr name="keyPreviewLingerTimeout" format="integer" />
         <!-- Layout resource for more keys keyboard -->
@@ -168,11 +168,22 @@
     </declare-styleable>
 
     <declare-styleable name="EmojiPalettesView">
-        <attr name="emojiTabLabelColor" format="reference" />
+        <attr name="categoryIndicatorEnabled" format="boolean" />
+        <attr name="categoryIndicatorDrawable" format="reference" />
+        <attr name="categoryIndicatorBackground" format="reference" />
+        <attr name="categoryPageIndicatorColor" format="color" />
+        <attr name="categoryPageIndicatorBackground" format="color" />
+        <attr name="iconEmojiRecentsTab" format="reference" />
+        <attr name="iconEmojiCategory1Tab" format="reference" />
+        <attr name="iconEmojiCategory2Tab" format="reference" />
+        <attr name="iconEmojiCategory3Tab" format="reference" />
+        <attr name="iconEmojiCategory4Tab" format="reference" />
+        <attr name="iconEmojiCategory5Tab" format="reference" />
+        <attr name="iconEmojiCategory6Tab" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="SuggestionStripView">
-        <attr name="suggestionStripOption" format="integer">
+        <attr name="suggestionStripOptions" format="integer">
             <!-- This should be aligned with SuggestionStripLayoutHelper.AUTO_CORRECT_* and etc. -->
             <flag name="autoCorrectBold" value="0x01" />
             <flag name="autoCorrectUnderline" value="0x02" />
@@ -214,14 +225,17 @@
         <attr name="iconSettingsKey" format="reference" />
         <attr name="iconSpaceKey" format="reference" />
         <attr name="iconEnterKey" format="reference" />
+        <attr name="iconGoKey" format="reference" />
         <attr name="iconSearchKey" format="reference" />
+        <attr name="iconSendKey" format="reference" />
+        <attr name="iconNextKey" format="reference" />
+        <attr name="iconDoneKey" format="reference" />
+        <attr name="iconPreviousKey" format="reference" />
         <attr name="iconTabKey" format="reference" />
         <attr name="iconShortcutKey" format="reference" />
-        <attr name="iconShortcutForLabel" format="reference" />
         <attr name="iconSpaceKeyForNumberLayout" format="reference" />
         <attr name="iconShiftKeyShifted" format="reference" />
         <attr name="iconShortcutKeyDisabled" format="reference" />
-        <attr name="iconTabKeyPreview" format="reference" />
         <attr name="iconLanguageSwitchKey" format="reference" />
         <attr name="iconZwnjKey" format="reference" />
         <attr name="iconZwjKey" format="reference" />
@@ -235,10 +249,6 @@
     </declare-styleable>
 
     <declare-styleable name="Keyboard_Key">
-        <!-- The unicode value that this key outputs.
-             Code value represented in hexadecimal prefixed with "0x" or code value reference using
-             "!code/<code_name>" notation. -->
-        <attr name="code" format="string" />
         <!-- The alternate unicode value that this key outputs while typing.
              Code value represented in hexadecimal prefixed with "0x" or code value reference using
              "!code/<code_name>" notation. -->
@@ -270,20 +280,19 @@
             <flag name="altCodeWhileTyping" value="0x04" />
             <flag name="enableLongPress" value="0x08" />
         </attr>
-        <!-- The string of characters to output when this key is pressed. -->
-        <attr name="keyOutputText" format="string" />
-        <!-- The label to display on the key. -->
-        <attr name="keyLabel" format="string" />
+        <!-- The label, icon to display on the key. And code, outputText of the key. -->
+        <attr name="keySpec" format="string" />
         <!-- The hint label to display on the key in conjunction with the label. -->
         <attr name="keyHintLabel" format="string" />
+        <!-- The vertical adjustment of key hint label in proportion to its height. -->
+        <attr name="keyHintLabelVerticalAdjustment" format="fraction" />
         <!-- The key label flags. -->
         <attr name="keyLabelFlags" format="integer">
             <!-- This should be aligned with Key.LABEL_FLAGS__* -->
-            <flag name="alignLeft" value="0x01" />
-            <flag name="alignRight" value="0x02" />
             <flag name="alignLeftOfCenter" value="0x08" />
             <flag name="fontNormal" value="0x10" />
             <flag name="fontMonoSpace" value="0x20" />
+            <flag name="fontDefault" value="0x30" />
             <flag name="followKeyLargeLetterRatio" value="0x40" />
             <flag name="followKeyLetterRatio" value="0x80" />
             <flag name="followKeyLabelRatio" value="0xC0" />
@@ -292,28 +301,27 @@
             <flag name="hasPopupHint" value="0x200" />
             <flag name="hasShiftedLetterHint" value="0x400" />
             <flag name="hasHintLabel" value="0x800" />
-            <flag name="withIconLeft" value="0x1000" />
-            <flag name="withIconRight" value="0x2000" />
             <flag name="autoXScale" value="0x4000" />
+            <!-- The autoScale value implies autoXScale bit on to optimize scaling code path. -->
+            <flag name="autoScale" value="0xc000" />
             <!-- If true, character case of code, altCode, moreKeys, keyOutputText, keyLabel,
                  or keyHintLabel will never be subject to change. -->
-            <flag name="preserveCase" value="0x8000" />
+            <flag name="preserveCase" value="0x10000" />
             <!-- If true, use keyShiftedLetterHintActivatedColor for the shifted letter hint and
                  keyTextInactivatedColor for the primary key top label. -->
-            <flag name="shiftedLetterActivated" value="0x10000" />
+            <flag name="shiftedLetterActivated" value="0x20000" />
             <!-- If true, use EditorInfo.actionLabel for the key label. -->
-            <flag name="fromCustomActionLabel" value="0x20000" />
+            <flag name="fromCustomActionLabel" value="0x40000" />
+            <!-- If true, use functionalTextColor instead of ketTextColor to drawing the label on
+                 the key -->
+            <flag name="followFunctionalTextColor" value="0x80000" />
             <!-- If true, disable keyHintLabel. -->
             <flag name="disableKeyHintLabel" value="0x40000000" />
             <!-- If true, disable additionalMoreKeys. -->
             <flag name="disableAdditionalMoreKeys" value="0x80000000" />
         </attr>
-        <!-- The icon to display on the key instead of the label. -->
-        <attr name="keyIcon" format="string" />
         <!-- The icon for disabled key -->
         <attr name="keyIconDisabled" format="string" />
-        <!-- The icon to show in the popup preview. -->
-        <attr name="keyIconPreview" format="string" />
         <!-- The key style to specify a set of key attributes defined by <key_style/> -->
         <attr name="keyStyle" format="string" />
         <!-- Visual insets, in the proportion of keyboard width. -->
@@ -361,6 +369,8 @@
         <attr name="keyTextShadowColor" format="color" />
         <!-- Color to use for the label in a key when in inactivated state. -->
         <attr name="keyTextInactivatedColor" format="color" />
+        <!-- Color to use for the label in a key that has followFunctionalTextColor keyLabelFlags. -->
+        <attr name="functionalTextColor" format="color" />
         <!-- Key hint letter (= one character hint label) color -->
         <attr name="keyHintLetterColor" format="color" />
         <!-- Key hint label color -->
@@ -415,8 +425,6 @@
         <attr name="navigatePrevious" format="boolean" />
         <attr name="passwordInput" format="boolean" />
         <attr name="clobberSettingsKey" format="boolean" />
-        <attr name="shortcutKeyEnabled" format="boolean" />
-        <attr name="shortcutKeyOnSymbols" format="boolean" />
         <attr name="hasShortcutKey" format="boolean" />
         <attr name="languageSwitchKeyEnabled" format="boolean" />
         <attr name="isMultiLine" format="boolean" />
@@ -433,6 +441,7 @@
             <!--  This should be aligned with KeyboardId.IME_ACTION_* -->
             <enum name="actionCustomLabel" value="0x100" />
         </attr>
+        <attr name="isIconDefined" format="string" />
         <attr name="localeCode" format="string" />
         <attr name="languageCode" format="string" />
         <attr name="countryCode" format="string" />
@@ -469,6 +478,19 @@
         <attr name="enableProximityCharsCorrection" format="boolean" />
     </declare-styleable>
 
+    <declare-styleable name="KeyboardLayoutSet_Feature">
+        <!-- This should be aligned with ScriptUtils.SCRIPT_* -->
+        <attr name="supportedScript" format="enum">
+            <enum name="latin" value="0" />
+            <enum name="cyrillic" value="1" />
+            <enum name="greek" value="2" />
+            <enum name="arabic" value="3" />
+            <enum name="hebrew" value="4" />
+            <enum name="armenian" value="5" />
+            <enum name="georgian" value="6" />
+        </attr>
+    </declare-styleable>
+
     <declare-styleable name="SeekBarDialogPreference">
         <attr name="maxValue" format="integer" />
         <attr name="minValue" format="integer" />
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 93f25a7..783105d 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -19,27 +19,13 @@
 -->
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Color resources for Gingerbread theme. -->
-    <color name="highlight_color_gb">#FFFCAE00</color>
-    <color name="typed_word_color_gb">@android:color/white</color>
-    <color name="highlight_translucent_color_gb">#99FCAE00</color>
-    <color name="key_text_color_gb">@android:color/white</color>
-    <color name="key_text_shadow_color_gb">#BB000000</color>
-    <color name="key_text_inactivated_color_gb">#66E0E4E5</color>
-    <color name="key_hint_letter_color_gb">#80000000</color>
-    <color name="key_hint_label_color_gb">#E0E0E4E5</color>
-    <color name="key_shifted_letter_hint_inactivated_color_gb">#66E0E4E5</color>
-    <color name="key_shifted_letter_hint_activated_color_gb">#CCE0E4E5</color>
-    <color name="spacebar_text_color_gb">#FFC0C0C0</color>
-    <color name="spacebar_text_shadow_color_gb">#80000000</color>
-    <color name="gesture_floating_preview_color_gb">#C0000000</color>
     <!-- Color resources for IceCreamSandwich theme. Base color = 33B5E5 -->
     <!-- android:color/holo_blue_light value is #FF33B5E5 -->
     <color name="highlight_color_ics">#FF33B5E5</color>
     <color name="typed_word_color_ics">#D833B5E5</color>
     <color name="suggested_word_color_ics">#B233B5E5</color>
     <color name="highlight_translucent_color_ics">#9933B5E5</color>
-    <color name="key_text_shadow_color_holo">@android:color/transparent</color>
+    <color name="key_text_color_holo">@android:color/white</color>
     <color name="key_text_inactivated_color_holo">#66E0E4E5</color>
     <color name="key_hint_letter_color_holo">#80000000</color>
     <color name="key_hint_label_color_holo">#A0FFFFFF</color>
@@ -48,24 +34,56 @@
     <color name="spacebar_text_color_holo">#FFC0C0C0</color>
     <color name="spacebar_text_shadow_color_holo">#80000000</color>
     <color name="gesture_floating_preview_color_holo">#C0000000</color>
+    <color name="emoji_tab_page_indicator_background_holo">#111111</color>
     <!-- Color resources for KLP theme. Base color = F0F0F0 -->
     <color name="highlight_color_klp">#FFF0F0F0</color>
     <color name="typed_word_color_klp">#D8F0F0F0</color>
     <color name="suggested_word_color_klp">#B2F0F0F0</color>
     <color name="highlight_translucent_color_klp">#99E0E0E0</color>
+    <!-- Color resources for LXX_Light theme.
+         15%:0x26 70%:0xB3 75%:0xC0 80%:0xCC 85%:0xD9 90%:0xE6 -->
+    <color name="key_text_color_lxx_light">#37474F</color>
+    <color name="key_functional_text_color_lxx_light">#CC37474F</color>
+    <color name="key_text_inactive_color_lxx_light">#B337474F</color>
+    <color name="key_hint_letter_color_lxx_light">#B337474F</color>
+    <color name="language_on_spacebar_text_color_lxx_light">#B337474F</color>
+    <color name="highlight_color_lxx_light">#4DB6AC</color>
+    <color name="auto_correct_color_lxx_light">#37474F</color>
+    <color name="typed_word_color_lxx_light">#D937474F</color>
+    <color name="suggested_word_color_lxx_light">#B337474F</color>
+    <color name="gesture_trail_color_lxx_light">#4DB6AC</color>
+    <color name="sliding_key_input_preview_color_lxx_light">#B34DB6AC</color>
+    <color name="keyboard_background_lxx_light">#ECEFF1</color>
+    <color name="key_background_lxx_light">#ECEFF1</color>
+    <color name="key_background_pressed_lxx_light">#2637474F</color>
+    <color name="suggestions_strip_background_lxx_light">#E4E7E9</color>
+    <color name="suggested_word_background_selected_lxx_light">#2637474F</color>
+    <color name="gesture_floating_preview_color_lxx_light">#E6ECEFF1</color>
+    <color name="emoji_tab_page_indicator_background_lxx_light">#E4E7E9</color>
+    <!-- Color resources for LXX_Dark theme.
+         10%:0x19 50%:0x80 70%:0xB3 75%:0xC0 80%:0xCC 85%:0xD9 90%:0xE6  -->
+    <color name="key_text_color_lxx_dark">#CCFFFFFF</color>
+    <color name="key_functional_text_color_lxx_dark">#CCFFFFFF</color>
+    <color name="key_text_inactive_color_lxx_dark">#80FFFFFF</color>
+    <color name="key_hint_letter_color_lxx_dark">#80FFFFFF</color>
+    <color name="language_on_spacebar_text_color_lxx_dark">#B3FFFFFF</color>
+    <color name="highlight_color_lxx_dark">#80CBC4</color>
+    <color name="auto_correct_color_lxx_dark">#FFFFFF</color>
+    <color name="typed_word_color_lxx_dark">#D9FFFFFF</color>
+    <color name="suggested_word_color_lxx_dark">#B3FFFFFF</color>
+    <color name="gesture_trail_color_lxx_dark">#80CBC4</color>
+    <color name="sliding_key_input_preview_color_lxx_dark">#B380CBC4</color>
+    <color name="keyboard_background_lxx_dark">#263238</color>
+    <color name="key_background_lxx_dark">#263238</color>
+    <color name="key_background_pressed_lxx_dark">#19FFFFFF</color>
+    <color name="suggestions_strip_background_lxx_dark">#21272B</color>
+    <color name="suggested_word_background_selected_lxx_dark">#19FFFFFF</color>
+    <color name="gesture_floating_preview_color_lxx_dark">#E621272B</color>
+    <color name="emoji_tab_page_indicator_background_lxx_dark">#21272B</color>
     <!-- Color resources for setup wizard and tutorial -->
     <color name="setup_background">#FFEBEBEB</color>
     <color name="setup_text_dark">#FF707070</color>
     <color name="setup_text_action">@android:color/holo_blue_light</color>
     <color name="setup_step_background">@android:color/background_light</color>
     <color name="setup_welcome_video_margin_color">#FFCCCCCC</color>
-    <color name="emoji_category_page_id_view_background">#FF000000</color>
-    <color name="emoji_category_page_id_view_foreground">#80FFFFFF</color>
-
-    <!-- TODO: Color which should be included in the theme -->
-    <color name="emoji_key_background_color">#00000000</color>
-    <color name="emoji_key_pressed_background_color">#30FFFFFF</color>
-
-    <color name="key_text_color_normal_holo">@android:color/white</color>
-    <color name="key_text_color_functional_holo">@android:color/white</color>
 </resources>
diff --git a/java/res/values/config-auto-correction-thresholds.xml b/java/res/values/config-auto-correction-thresholds.xml
new file mode 100644
index 0000000..7d94a42
--- /dev/null
+++ b/java/res/values/config-auto-correction-thresholds.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- The array of auto correction threshold values. -->
+    <string-array name="auto_correction_threshold_values" translatable="false">
+        <!-- Off, When auto correction setting is Off, this value is not used. -->
+        <item>floatMaxValue</item>
+        <!-- Modest : Suggestion whose normalized score is greater than this value
+             will be subject to auto-correction. -->
+        <item>0.185</item>
+        <!-- Aggressive -->
+        <item>0.067</item>
+        <!-- Very Aggressive : Suggestion whose normalized score is greater than this value
+             will be subject to auto-correction. "floatNegativeInfinity" is a special marker
+             string for Float.NEGATIVE_INFINITY -->
+        <item>floatNegativeInfinity</item>
+    </string-array>
+
+    <!-- The index of the auto correction threshold values array. -->
+    <string name="auto_correction_threshold_mode_index_off" translatable="false">0</string>
+    <string name="auto_correction_threshold_mode_index_modest" translatable="false">1</string>
+    <string name="auto_correction_threshold_mode_index_aggressive" translatable="false">2</string>
+    <string name="auto_correction_threshold_mode_index_very_aggressive" translatable="false">3</string>
+
+    <!-- The array of the auto correction threshold settings values. -->
+    <string-array name="auto_correction_threshold_mode_indexes" translatable="false">
+      <item>@string/auto_correction_threshold_mode_index_off</item>
+      <item>@string/auto_correction_threshold_mode_index_modest</item>
+      <item>@string/auto_correction_threshold_mode_index_aggressive</item>
+      <item>@string/auto_correction_threshold_mode_index_very_aggressive</item>
+    </string-array>
+    <!-- The array of the human readable auto correction threshold settings entries. -->
+    <string-array name="auto_correction_threshold_modes" translatable="false">
+      <item>@string/auto_correction_threshold_mode_off</item>
+      <item>@string/auto_correction_threshold_mode_modest</item>
+      <item>@string/auto_correction_threshold_mode_aggressive</item>
+      <item>@string/auto_correction_threshold_mode_very_aggressive</item>
+    </string-array>
+</resources>
diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml
new file mode 100644
index 0000000..063fbfb
--- /dev/null
+++ b/java/res/values/config-common.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <bool name="config_block_potentially_offensive">true</bool>
+    <!-- Default value for next word prediction: after entering a word and a space only, should we look
+         at input history to suggest a hopefully helpful suggestions for the next word? -->
+    <bool name="config_default_next_word_prediction">true</bool>
+
+    <integer name="config_delay_update_shift_state">100</integer>
+    <integer name="config_double_space_period_timeout">1100</integer>
+
+    <integer name="config_key_repeat_start_timeout">400</integer>
+    <integer name="config_key_repeat_interval">50</integer>
+
+    <integer name="config_ignore_alt_code_key_timeout">350</integer>
+
+    <integer name="config_key_preview_show_up_duration">17</integer>
+    <integer name="config_key_preview_dismiss_duration">53</integer>
+    <fraction name="config_key_preview_show_up_start_scale">98%</fraction>
+    <fraction name="config_key_preview_dismiss_end_scale">94%</fraction>
+    <!-- TODO: consolidate key preview linger timeout with the above animation parameters. -->
+    <integer name="config_key_preview_linger_timeout">70</integer>
+    <!-- Suppress showing key preview duration after batch input in millisecond -->
+    <integer name="config_suppress_key_preview_after_batch_input_duration">1000</integer>
+
+    <bool name="config_default_vibration_enabled">true</bool>
+    <integer name="config_max_vibration_duration">100</integer>
+
+    <integer name="config_default_longpress_key_timeout">300</integer>
+    <integer name="config_max_longpress_timeout">700</integer>
+    <integer name="config_min_longpress_timeout">100</integer>
+    <integer name="config_longpress_timeout_step">10</integer>
+    <integer name="config_accessibility_long_press_key_timeout">3000</integer>
+    <integer name="config_max_more_keys_column">5</integer>
+    <integer name="config_more_keys_keyboard_fadein_anim_time">0</integer>
+    <integer name="config_more_keys_keyboard_fadeout_anim_time">100</integer>
+
+    <!-- Long pressing shift will invoke caps-lock if > 0, never invoke caps-lock if == 0 -->
+    <integer name="config_longpress_shift_lock_timeout">1200</integer>
+
+    <!-- Sliding key input preview parameters -->
+    <dimen name="config_sliding_key_input_preview_width">8.0dp</dimen>
+    <!-- Percentages of sliding key input preview body and shadow, in proportion to the width.
+         A negative value of the shadow ratio disables drawing shadow. -->
+    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
+    <integer name="config_sliding_key_input_preview_body_ratio">100</integer>
+    <integer name="config_sliding_key_input_preview_shadow_ratio">-1</integer>
+    <dimen name="config_key_hysteresis_distance_for_sliding_modifier">8.0dp</dimen>
+
+    <integer name="config_language_on_spacebar_final_alpha">128</integer>
+    <dimen name="config_language_on_spacebar_horizontal_margin">1dp</dimen>
+
+    <integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
+    <integer name="config_gesture_trail_fadeout_start_delay">100</integer>
+    <integer name="config_gesture_trail_fadeout_duration">800</integer>
+    <integer name="config_gesture_trail_update_interval">20</integer>
+    <!-- Static threshold for gesture after fast typing (msec) -->
+    <integer name="config_gesture_static_time_threshold_after_fast_typing">500</integer>
+    <!-- Static threshold for starting gesture detection (keyWidth%/sec) -->
+    <fraction name="config_gesture_detect_fast_move_speed_threshold">150%</fraction>
+    <!-- Dynamic threshold for gesture after fast typing (msec) -->
+    <integer name="config_gesture_dynamic_threshold_decay_duration">450</integer>
+    <!-- Time based threshold values for gesture detection (msec) -->
+    <integer name="config_gesture_dynamic_time_threshold_from">300</integer>
+    <integer name="config_gesture_dynamic_time_threshold_to">20</integer>
+    <!-- Distance based threshold values for gesture detection (keyWidth%/sec) -->
+    <fraction name="config_gesture_dynamic_distance_threshold_from">600%</fraction>
+    <fraction name="config_gesture_dynamic_distance_threshold_to">50%</fraction>
+    <!-- Parameter for gesture sampling (keyWidth%/sec) -->
+    <fraction name="config_gesture_sampling_minimum_distance">16.6666%</fraction>
+    <!-- Parameters for gesture recognition (msec) and (keyWidth%/sec) -->
+    <integer name="config_gesture_recognition_minimum_time">100</integer>
+    <integer name="config_gesture_recognition_update_time">100</integer>
+    <fraction name="config_gesture_recognition_speed_threshold">550%</fraction>
+
+    <integer name="config_keyboard_grid_width">32</integer>
+    <integer name="config_keyboard_grid_height">16</integer>
+    <dimen name="config_touch_noise_threshold_distance">12.6dp</dimen>
+    <integer name="config_touch_noise_threshold_time">40</integer>
+
+    <!-- Common keyboard configuration. -->
+    <fraction name="config_keyboard_left_padding">0%p</fraction>
+    <fraction name="config_keyboard_right_padding">0%p</fraction>
+    <dimen name="config_keyboard_vertical_correction">0.0dp</dimen>
+
+    <!-- Common key top visual configuration. -->
+    <dimen name="config_key_popup_hint_letter_padding">2dp</dimen>
+
+    <!-- Common suggestion strip configuration. -->
+    <integer name="config_suggestions_count_in_strip">3</integer>
+    <fraction name="config_center_suggestion_percentile">36%</fraction>
+    <integer name="config_delay_update_suggestions">100</integer>
+    <integer name="config_delay_update_old_suggestions">300</integer>
+
+    <!-- Common more suggestions configuraion. -->
+    <dimen name="config_more_suggestions_key_horizontal_padding">12dp</dimen>
+    <dimen name="config_more_suggestions_bottom_gap">6dp</dimen>
+    <dimen name="config_more_suggestions_modal_tolerance">32.0dp</dimen>
+    <fraction name="config_more_suggestions_info_ratio">18%</fraction>
+
+    <!-- Common gesture trail parameters -->
+    <!-- Minimum distance between gesture trail sampling points. -->
+    <dimen name="config_gesture_trail_min_sampling_distance">9.6dp</dimen>
+    <!-- Maximum angular threshold between gesture trails interpolation segments in degree. -->
+    <integer name="config_gesture_trail_max_interpolation_angular_threshold">15</integer>
+    <!-- Maximum distance threshold between gesture trails interpolation segments. -->
+    <dimen name="config_gesture_trail_max_interpolation_distance_threshold">16.0dp</dimen>
+    <!-- Maximum number of gesture trail interpolation segments. -->
+    <integer name="config_gesture_trail_max_interpolation_segments">6</integer>
+    <dimen name="config_gesture_trail_start_width">10.0dp</dimen>
+    <dimen name="config_gesture_trail_end_width">2.5dp</dimen>
+    <!-- Percentages of gesture preview taril body and shadow, in proportion to the trail width.
+         A negative value of the shadow ratio disables drawing shadow. -->
+    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
+    <integer name="config_gesture_trail_body_ratio">100</integer>
+    <integer name="config_gesture_trail_shadow_ratio">-1</integer>
+
+    <!-- Common configuration of Emoji keyboard -->
+    <dimen name="config_emoji_category_page_id_height">2dp</dimen>
+
+    <!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. -->
+    <dimen name="config_accessibility_edge_slop">8dp</dimen>
+
+    <integer name="config_user_dictionary_max_word_length">48</integer>
+
+    <!-- Personalization configuration -->
+    <!-- -1 means periocical wipe of the personalization dict is disabled. -->
+    <integer name="config_personalization_dict_wipe_interval_in_days">-1</integer>
+</resources>
diff --git a/java/res/values/config-dictionary-pack.xml b/java/res/values/config-dictionary-pack.xml
new file mode 100644
index 0000000..d076af4
--- /dev/null
+++ b/java/res/values/config-dictionary-pack.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Configuration values for Dictionary pack. -->
+<resources>
+    <!-- Settings for the dictionary pack -->
+    <bool name="allow_over_metered">false</bool>
+    <bool name="allow_over_roaming">false</bool>
+    <bool name="dict_downloads_visible_in_download_UI">false</bool>
+    <bool name="metadata_downloads_visible_in_download_UI">false</bool>
+    <bool name="display_notification_for_auto_update">false</bool>
+    <bool name="display_notification_for_user_requested_update">false</bool>
+</resources>
diff --git a/java/res/values/config-per-form-factor.xml b/java/res/values/config-per-form-factor.xml
new file mode 100644
index 0000000..67fc751
--- /dev/null
+++ b/java/res/values/config-per-form-factor.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Configuration values for Small Phone. -->
+<resources>
+    <bool name="config_enable_show_key_preview_popup_option">true</bool>
+    <!-- Whether or not Popup on key press is enabled by default -->
+    <bool name="config_default_key_preview_popup">true</bool>
+    <bool name="config_default_sound_enabled">false</bool>
+    <bool name="config_enable_show_voice_key_option">true</bool>
+    <bool name="config_key_selection_by_dragging_finger">true</bool>
+    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
+         false -->
+    <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
+</resources>
diff --git a/java/res/values/config-screen-metrics.xml b/java/res/values/config-screen-metrics.xml
new file mode 100644
index 0000000..9962994
--- /dev/null
+++ b/java/res/values/config-screen-metrics.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_SMALL_PHONE}. -->
+    <integer name="config_screen_metrics">0</integer>
+</resources>
diff --git a/java/res/values/config-spellchecker-thresholds.xml b/java/res/values/config-spellchecker-thresholds.xml
new file mode 100644
index 0000000..e99ba66
--- /dev/null
+++ b/java/res/values/config-spellchecker-thresholds.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Threshold of the normalized score of the best suggestion for the spell checker to declare
+         a word to be "recommended" -->
+    <string name="spellchecker_recommended_threshold_value" translatable="false">0.11</string>
+</resources>
diff --git a/java/res/values/config.xml b/java/res/values/config.xml
index 61779d4..d748c91 100644
--- a/java/res/values/config.xml
+++ b/java/res/values/config.xml
@@ -18,120 +18,71 @@
 */
 -->
 
+<!-- Configuration values for Small Phone Portrait. -->
 <resources>
     <bool name="config_use_fullscreen_mode">false</bool>
-    <bool name="config_enable_show_voice_key_option">true</bool>
-    <bool name="config_enable_show_option_of_key_preview_popup">true</bool>
-    <!-- TODO: Disable the following configuration for production. -->
-    <bool name="config_enable_usability_study_mode_option">true</bool>
-    <!-- Whether or not Popup on key press is enabled by default -->
-    <bool name="config_default_key_preview_popup">true</bool>
-    <!-- Default value for next word prediction: after entering a word and a space only, should we look
-         at input history to suggest a hopefully helpful suggestions for the next word? -->
-    <bool name="config_default_next_word_prediction">true</bool>
-    <bool name="config_default_sound_enabled">false</bool>
-    <bool name="config_default_vibration_enabled">true</bool>
-    <integer name="config_max_vibration_duration">100</integer> <!-- milliseconds -->
-    <integer name="config_delay_update_suggestions">100</integer>
-    <integer name="config_delay_update_old_suggestions">300</integer>
-    <integer name="config_delay_update_shift_state">100</integer>
-    <integer name="config_language_on_spacebar_final_alpha">128</integer>
-    <integer name="config_more_keys_keyboard_fadein_anim_time">0</integer>
-    <integer name="config_more_keys_keyboard_fadeout_anim_time">100</integer>
-    <integer name="config_keyboard_grid_width">32</integer>
-    <integer name="config_keyboard_grid_height">16</integer>
-    <integer name="config_double_space_period_timeout">1100</integer>
-    <!-- This configuration is an index of  {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
-    <string name="config_default_keyboard_theme_index" translatable="false">2</string>
-    <integer name="config_max_more_keys_column">5</integer>
 
-    <!--
-         Configuration for MainKeyboardView
-    -->
     <dimen name="config_key_hysteresis_distance">8.0dp</dimen>
-    <dimen name="config_key_hysteresis_distance_for_sliding_modifier">8.0dp</dimen>
-    <integer name="config_touch_noise_threshold_time">40</integer>
-    <dimen name="config_touch_noise_threshold_distance">12.6dp</dimen>
-    <integer name="config_key_preview_linger_timeout">70</integer>
-    <bool name="config_sliding_key_input_enabled">true</bool>
-    <!-- Sliding key input preview parameters -->
-    <dimen name="config_sliding_key_input_preview_width">8.0dp</dimen>
-    <!-- Percentages of sliding key input preview body and shadow, in proportion to the width.
-         A negative value of the shadow ratio disables drawing shadow. -->
-    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
-    <integer name="config_sliding_key_input_preview_body_ratio">100</integer>
-    <integer name="config_sliding_key_input_preview_shadow_ratio">-1</integer>
-    <integer name="config_key_repeat_start_timeout">400</integer>
-    <integer name="config_key_repeat_interval">50</integer>
-    <integer name="config_default_longpress_key_timeout">300</integer>  <!-- milliseconds -->
-    <integer name="config_longpress_timeout_step">10</integer> <!-- milliseconds -->
-    <integer name="config_min_longpress_timeout">100</integer> <!-- milliseconds -->
-    <integer name="config_max_longpress_timeout">700</integer> <!-- milliseconds -->
-    <!-- Long pressing shift will invoke caps-lock if > 0, never invoke caps-lock if == 0 -->
-    <integer name="config_longpress_shift_lock_timeout">1200</integer> <!-- milliseconds -->
-    <integer name="config_ignore_alt_code_key_timeout">350</integer> <!-- milliseconds -->
-    <!-- Showing more keys keyboard, just above the touched point if true, aligned to the key if
-         false -->
-    <bool name="config_show_more_keys_keyboard_at_touched_point">false</bool>
-    <bool name="config_block_potentially_offensive">true</bool>
-    <integer name="config_gesture_floating_preview_text_linger_timeout">200</integer>
-    <integer name="config_gesture_trail_fadeout_start_delay">100</integer>
-    <integer name="config_gesture_trail_fadeout_duration">800</integer>
-    <integer name="config_gesture_trail_update_interval">20</integer>
-    <!-- Static threshold for gesture after fast typing (msec) -->
-    <integer name="config_gesture_static_time_threshold_after_fast_typing">500</integer>
-    <!-- Static threshold for starting gesture detection (keyWidth%/sec) -->
-    <fraction name="config_gesture_detect_fast_move_speed_threshold">150%</fraction>
-    <!-- Dynamic threshold for gesture after fast typing (msec) -->
-    <integer name="config_gesture_dynamic_threshold_decay_duration">450</integer>
-    <!-- Time based threshold values for gesture detection (msec) -->
-    <integer name="config_gesture_dynamic_time_threshold_from">300</integer>
-    <integer name="config_gesture_dynamic_time_threshold_to">20</integer>
-    <!-- Distance based threshold values for gesture detection (keyWidth%/sec) -->
-    <fraction name="config_gesture_dynamic_distance_threshold_from">600%</fraction>
-    <fraction name="config_gesture_dynamic_distance_threshold_to">50%</fraction>
-    <!-- Parameter for gesture sampling (keyWidth%/sec) -->
-    <fraction name="config_gesture_sampling_minimum_distance">16.6666%</fraction>
-    <!-- Parameters for gesture recognition (msec) and (keyWidth%/sec) -->
-    <integer name="config_gesture_recognition_minimum_time">100</integer>
-    <integer name="config_gesture_recognition_update_time">100</integer>
-    <fraction name="config_gesture_recognition_speed_threshold">550%</fraction>
-    <!-- Suppress showing key preview duration after batch input in millisecond -->
-    <integer name="config_suppress_key_preview_after_batch_input_duration">1000</integer>
-    <!--
-        Configuration for auto correction
-     -->
-    <string-array name="auto_correction_threshold_values" translatable="false">
-        <!-- Off, When auto correction setting is Off, this value is not used. -->
-        <item>floatMaxValue</item>
-        <!-- Modest : Suggestion whose normalized score is greater than this value
-             will be subject to auto-correction. -->
-        <item>0.185</item>
-        <!-- Aggressive -->
-        <item>0.067</item>
-        <!-- Very Aggressive : Suggestion whose normalized score is greater than this value
-             will be subject to auto-correction. "floatNegativeInfinity" is a special marker
-             string for Float.NEGATIVE_INFINITY -->
-        <item>floatNegativeInfinity</item>
-    </string-array>
-    <!-- Threshold of the normalized score of the best suggestion for the spell checker to declare
-         a word to be "recommended" -->
-    <string name="spellchecker_recommended_threshold_value" translatable="false">0.11</string>
-    <!--  Screen metrics for logging.
-            0 = "mdpi phone screen"
-            1 = "hdpi phone screen"
-            2 = "mdpi 11 inch tablet screen"
-            3 = "xhdpi phone screen?"
-            4 = ?
-    -->
-    <integer name="log_screen_metrics">0</integer>
 
-    <!-- Settings for the dictionary pack -->
-    <bool name="allow_over_metered">false</bool>
-    <bool name="allow_over_roaming">false</bool>
-    <bool name="dict_downloads_visible_in_download_UI">false</bool>
-    <bool name="metadata_downloads_visible_in_download_UI">false</bool>
-    <bool name="display_notification_for_auto_update">false</bool>
-    <bool name="display_notification_for_user_requested_update">false</bool>
+    <!-- Preferable keyboard height in absolute scale: 1.285in -->
+    <!-- This config_default_keyboard_height value should match with keyboard-heights.xml -->
+    <dimen name="config_default_keyboard_height">205.6dp</dimen>
+    <fraction name="config_max_keyboard_height">46%p</fraction>
+    <fraction name="config_min_keyboard_height">-61.8%p</fraction>
 
+    <dimen name="config_more_keys_keyboard_key_height">52.8dp</dimen>
+    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+    <!-- config_more_keys_keyboard_key_height x 1.2 -->
+    <dimen name="config_more_keys_keyboard_slide_allowance">63.36dp</dimen>
+    <dimen name="config_more_keys_keyboard_key_horizontal_padding">8dp</dimen>
+
+    <fraction name="config_keyboard_top_padding_holo">2.335%p</fraction>
+    <fraction name="config_keyboard_bottom_padding_holo">4.669%p</fraction>
+    <fraction name="config_key_vertical_gap_holo">6.127%p</fraction>
+    <fraction name="config_key_horizontal_gap_holo">1.739%p</fraction>
+    <!-- config_more_keys_keyboard_key_height x -0.5 -->
+    <dimen name="config_more_keys_keyboard_vertical_correction_holo">-26.4dp</dimen>
+    <dimen name="config_key_preview_offset_holo">8.0dp</dimen>
+
+    <dimen name="config_key_preview_height">80dp</dimen>
+    <fraction name="config_key_preview_text_ratio">82%</fraction>
+    <fraction name="config_key_letter_ratio">55%</fraction>
+    <fraction name="config_key_large_letter_ratio">65%</fraction>
+    <fraction name="config_key_label_ratio">34%</fraction>
+    <fraction name="config_key_large_label_ratio">40%</fraction>
+    <fraction name="config_key_hint_letter_ratio">25%</fraction>
+    <fraction name="config_key_hint_label_ratio">44%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio">35%</fraction>
+    <fraction name="config_language_on_spacebar_text_ratio">33.735%</fraction>
+    <dimen name="config_key_hint_letter_padding">1dp</dimen>
+    <dimen name="config_key_shifted_letter_hint_padding">2dp</dimen>
+
+    <!-- For 5-row keyboard -->
+    <fraction name="config_key_vertical_gap_5row">3.20%p</fraction>
+    <fraction name="config_key_letter_ratio_5row">55%</fraction>
+    <fraction name="config_key_shifted_letter_hint_ratio_5row">41%</fraction>
+
+    <dimen name="config_suggestions_strip_height">40dp</dimen>
+    <dimen name="config_suggestions_strip_horizontal_margin">36dp</dimen>
+    <dimen name="config_suggestions_strip_edge_key_width">36dp</dimen>
+    <dimen name="config_more_suggestions_row_height">40dp</dimen>
+    <integer name="config_max_more_suggestions_row">6</integer>
+    <fraction name="config_min_more_suggestions_width">90%</fraction>
+    <dimen name="config_suggestion_min_width">44dp</dimen>
+    <dimen name="config_suggestion_text_horizontal_padding">6dp</dimen>
+    <dimen name="config_suggestion_text_size">18dp</dimen>
+    <dimen name="config_more_suggestions_hint_text_size">27dp</dimen>
+
+    <!-- Gesture floating preview text parameters -->
+    <dimen name="config_gesture_floating_preview_text_size">24dp</dimen>
+    <dimen name="config_gesture_floating_preview_text_offset">73dp</dimen>
+    <dimen name="config_gesture_floating_preview_horizontal_padding">24dp</dimen>
+    <dimen name="config_gesture_floating_preview_vertical_padding">16dp</dimen>
+    <dimen name="config_gesture_floating_preview_round_radius">2dp</dimen>
+
+    <!-- Emoji keyboard -->
+    <fraction name="config_emoji_keyboard_key_width">14.2857%p</fraction>
+    <fraction name="config_emoji_keyboard_row_height">33%p</fraction>
+    <fraction name="config_emoji_keyboard_key_letter_size">68%p</fraction>
+    <integer name="config_emoji_keyboard_max_page_key_count">21</integer>
 </resources>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
deleted file mode 100644
index 4588b10..0000000
--- a/java/res/values/dimens.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, 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>
-    <!-- Preferable keyboard height in absolute scale: 1.285in -->
-    <!-- This keyboardHeight value should match with keyboard-heights.xml -->
-    <dimen name="keyboardHeight">205.6dp</dimen>
-    <fraction name="maxKeyboardHeight">46%p</fraction>
-    <fraction name="minKeyboardHeight">-61.8%p</fraction>
-
-    <dimen name="popup_key_height">52.8dp</dimen>
-
-    <dimen name="more_keys_keyboard_key_horizontal_padding">8dp</dimen>
-
-    <fraction name="keyboard_left_padding">0%p</fraction>
-    <fraction name="keyboard_right_padding">0%p</fraction>
-
-    <fraction name="keyboard_top_padding_gb">1.556%p</fraction>
-    <fraction name="keyboard_bottom_padding_gb">4.669%p</fraction>
-    <fraction name="key_bottom_gap_gb">6.495%p</fraction>
-    <fraction name="key_horizontal_gap_gb">1.971%p</fraction>
-
-    <fraction name="keyboard_top_padding_holo">2.335%p</fraction>
-    <fraction name="keyboard_bottom_padding_holo">4.669%p</fraction>
-    <fraction name="key_bottom_gap_holo">6.127%p</fraction>
-    <fraction name="key_horizontal_gap_holo">1.739%p</fraction>
-
-    <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
-    <!-- popup_key_height x 1.2 -->
-    <dimen name="more_keys_keyboard_slide_allowance">63.36dp</dimen>
-    <!-- popup_key_height x -1.0 -->
-    <dimen name="more_keys_keyboard_vertical_correction_gb">-52.8dp</dimen>
-    <dimen name="keyboard_vertical_correction">0.0dp</dimen>
-
-    <fraction name="key_letter_ratio">55%</fraction>
-    <fraction name="key_large_letter_ratio">65%</fraction>
-    <fraction name="key_label_ratio">34%</fraction>
-    <fraction name="key_large_label_ratio">40%</fraction>
-    <fraction name="key_hint_letter_ratio">25%</fraction>
-    <fraction name="key_hint_label_ratio">44%</fraction>
-    <fraction name="key_uppercase_letter_ratio">35%</fraction>
-    <fraction name="key_preview_text_ratio">82%</fraction>
-    <fraction name="spacebar_text_ratio">33.735%</fraction>
-    <dimen name="key_preview_height">80dp</dimen>
-    <dimen name="key_preview_offset_gb">-8.0dp</dimen>
-
-    <dimen name="key_label_horizontal_padding">4dp</dimen>
-    <dimen name="key_hint_letter_padding">1dp</dimen>
-    <dimen name="key_popup_hint_letter_padding">2dp</dimen>
-    <dimen name="key_uppercase_letter_padding">2dp</dimen>
-
-    <!-- For 5-row keyboard -->
-    <fraction name="key_bottom_gap_5row">3.20%p</fraction>
-    <fraction name="key_letter_ratio_5row">64%</fraction>
-    <fraction name="key_uppercase_letter_ratio_5row">41%</fraction>
-
-    <dimen name="key_preview_offset_holo">8.0dp</dimen>
-    <!-- popup_key_height x -0.5 -->
-    <dimen name="more_keys_keyboard_vertical_correction_holo">-26.4dp</dimen>
-
-    <dimen name="suggestions_strip_height">40dp</dimen>
-    <dimen name="more_suggestions_key_horizontal_padding">12dp</dimen>
-    <dimen name="more_suggestions_row_height">40dp</dimen>
-    <dimen name="more_suggestions_bottom_gap">6dp</dimen>
-    <dimen name="more_suggestions_modal_tolerance">32.0dp</dimen>
-    <dimen name="more_suggestions_slide_allowance">16.0dp</dimen>
-    <integer name="max_more_suggestions_row">6</integer>
-    <fraction name="min_more_suggestions_width">90%</fraction>
-    <fraction name="more_suggestions_info_ratio">18%</fraction>
-    <dimen name="suggestions_strip_padding">0dp</dimen>
-    <dimen name="suggestion_min_width">44dp</dimen>
-    <dimen name="suggestion_padding">6dp</dimen>
-    <dimen name="suggestion_text_size">18dp</dimen>
-    <dimen name="more_suggestions_hint_text_size">27dp</dimen>
-    <integer name="suggestions_count_in_strip">3</integer>
-    <fraction name="center_suggestion_percentile">36%</fraction>
-
-    <!-- Gesture trail parameters -->
-    <!-- Minimum distance between gesture trail sampling points. -->
-    <dimen name="gesture_trail_min_sampling_distance">9.6dp</dimen>
-    <!-- Maximum angular threshold between gesture trails interpolation segments in degree. -->
-    <integer name="gesture_trail_max_interpolation_angular_threshold">15</integer>
-    <!-- Maximum distance threshold between gesture trails interpolation segments. -->
-    <dimen name="gesture_trail_max_interpolation_distance_threshold">16.0dp</dimen>
-    <!-- Maximum number of gesture trail interpolation segments. -->
-    <integer name="gesture_trail_max_interpolation_segments">6</integer>
-    <dimen name="gesture_trail_start_width">10.0dp</dimen>
-    <dimen name="gesture_trail_end_width">2.5dp</dimen>
-    <!-- Percentages of gesture preview taril body and shadow, in proportion to the trail width.
-         A negative value of the shadow ratio disables drawing shadow. -->
-    <!-- TODO: May use the shadow to alleviate rugged trail drawing. -->
-    <integer name="gesture_trail_body_ratio">100</integer>
-    <integer name="gesture_trail_shadow_ratio">-1</integer>
-    <!-- Gesture floating preview text parameters -->
-    <dimen name="gesture_floating_preview_text_size">24dp</dimen>
-    <dimen name="gesture_floating_preview_text_offset">73dp</dimen>
-    <dimen name="gesture_floating_preview_horizontal_padding">24dp</dimen>
-    <dimen name="gesture_floating_preview_vertical_padding">16dp</dimen>
-    <dimen name="gesture_floating_preview_round_radius">2dp</dimen>
-
-    <!-- Emoji keyboard -->
-    <fraction name="emoji_keyboard_key_width">14.2857%p</fraction>
-    <fraction name="emoji_keyboard_row_height">33%p</fraction>
-    <fraction name="emoji_keyboard_key_letter_size">68%p</fraction>
-    <integer name="emoji_keyboard_max_key_count">21</integer>
-    <dimen name="emoji_category_page_id_height">3dp</dimen>
-
-    <!-- Inset used in Accessibility mode to avoid accidental key presses when a finger slides off the screen. -->
-    <dimen name="accessibility_edge_slop">8dp</dimen>
-
-    <integer name="user_dictionary_max_word_length" translatable="false">48</integer>
-
-    <dimen name="language_on_spacebar_horizontal_margin">1dp</dimen>
-
-</resources>
diff --git a/java/res/values/donottranslate-config-important-notice.xml b/java/res/values/donottranslate-config-important-notice.xml
new file mode 100644
index 0000000..7c6527c
--- /dev/null
+++ b/java/res/values/donottranslate-config-important-notice.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- The array of the text of the important notices displayed on the suggestion strip. -->
+    <string-array name="important_notice_title_array" translatable="false">
+        <!-- empty -->
+    </string-array>
+    <!-- The array of the contents of the important notices. -->
+    <string-array name="important_notice_contents_array" translatable="false">
+        <!-- empty -->
+    </string-array>
+</resources>
diff --git a/java/res/values/donottranslate-config-spacing-and-punctuations.xml b/java/res/values/donottranslate-config-spacing-and-punctuations.xml
new file mode 100644
index 0000000..2faf578
--- /dev/null
+++ b/java/res/values/donottranslate-config-spacing-and-punctuations.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- TODO: these settings depend on the language. They should be put either in the dictionary
+         header, or in the subtype maybe? -->
+    <!-- Symbols that are suggested between words -->
+    <string name="suggested_punctuations">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
+    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
+    <string name="symbols_preceded_by_space">([{&amp;</string>
+    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
+    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
+    <!-- Symbols that behave like a single punctuation when typed next to each other -->
+    <string name="symbols_clustering_together"></string>
+    <!-- Symbols that separate words -->
+    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
+    <string name="symbols_word_separators">"&#x0009;&#x0020;&#x000A;&#x00A0;"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
+    <!-- Word connectors -->
+    <string name="symbols_word_connectors">\'-</string>
+    <!-- The sentence separator code point, for capitalization -->
+    <!-- U+002E: "." FULL STOP   ; 2Eh = 46d -->
+    <integer name="sentence_separator">46</integer>
+    <!-- Whether this language uses spaces between words -->
+    <bool name="current_language_has_spaces">true</bool>
+</resources>
diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml
index af5ec06..83d082f 100644
--- a/java/res/values/donottranslate.xml
+++ b/java/res/values/donottranslate.xml
@@ -18,25 +18,6 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- TODO: these settings depend on the language. They should be put either in the dictionary
-         header, or in the subtype maybe? -->
-    <!-- Symbols that are suggested between words -->
-    <string name="suggested_punctuations">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
-    <!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
-    <string name="symbols_preceded_by_space">([{&amp;</string>
-    <!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
-    <string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>
-    <!-- Symbols that separate words -->
-    <!-- Don't remove the enclosing double quotes, they protect whitespace (not just U+0020) -->
-    <string name="symbols_word_separators">"&#x0009;&#x0020;\n"()[]{}*&amp;&lt;&gt;+=|.,;:!?/_\"</string>
-    <!-- Word connectors -->
-    <string name="symbols_word_connectors">\'-</string>
-    <!-- The sentence separator code point, for capitalization -->
-    <!-- U+002E: "." FULL STOP   ; 2Eh = 46d -->
-    <integer name="sentence_separator">46</integer>
-    <!-- Whether this language uses spaces between words -->
-    <bool name="current_language_has_spaces">true</bool>
-
     <!--  Always show the suggestion strip -->
     <string name="prefs_suggestion_visibility_show_value">0</string>
     <!--  Show the suggestion strip only on portrait mode -->
@@ -57,78 +38,15 @@
        <item>@string/prefs_suggestion_visibility_hide_name</item>
     </string-array>
 
-    <string name="auto_correction_threshold_mode_index_off">0</string>
-    <string name="auto_correction_threshold_mode_index_modest">1</string>
-    <string name="auto_correction_threshold_mode_index_aggressive">2</string>
-    <string name="auto_correction_threshold_mode_index_very_aggressive">3</string>
-    <string-array name="auto_correction_threshold_mode_indexes">
-      <item>@string/auto_correction_threshold_mode_index_off</item>
-      <item>@string/auto_correction_threshold_mode_index_modest</item>
-      <item>@string/auto_correction_threshold_mode_index_aggressive</item>
-      <item>@string/auto_correction_threshold_mode_index_very_aggressive</item>
-    </string-array>
-    <string-array name="auto_correction_threshold_modes">
-      <item>@string/auto_correction_threshold_mode_off</item>
-      <item>@string/auto_correction_threshold_mode_modest</item>
-      <item>@string/auto_correction_threshold_mode_aggressive</item>
-      <item>@string/auto_correction_threshold_mode_very_aggressive</item>
-    </string-array>
-
+    <!-- For backward compatibility.
+         See {@link SettingsValues#needsToShowVoiceInputKey(SharedPreferences,Resources)} -->
     <string name="voice_mode_main">0</string>
-    <string name="voice_mode_symbols">1</string>
-    <string name="voice_mode_off">2</string>
-    <string-array name="voice_input_modes_values">
-        <item>@string/voice_mode_main</item>
-        <item>@string/voice_mode_symbols</item>
-        <item>@string/voice_mode_off</item>
-    </string-array>
-    <!-- Array of Voice Input modes -->
-    <string-array name="voice_input_modes">
-        <item>@string/voice_input_modes_main_keyboard</item>
-        <item>@string/voice_input_modes_symbols_keyboard</item>
-        <item>@string/voice_input_modes_off</item>
-    </string-array>
-    <!-- Array of Voice Input modes summary -->
-    <string-array name="voice_input_modes_summary">
-        <item>@string/voice_input_modes_summary_main_keyboard</item>
-        <item>@string/voice_input_modes_summary_symbols_keyboard</item>
-        <item>@string/voice_input_modes_summary_off</item>
-    </string-array>
 
     <!-- Title for Latin keyboard debug settings activity / dialog -->
     <string name="english_ime_debug_settings">Android keyboard Debug settings</string>
     <string name="prefs_debug_mode">Debug Mode</string>
     <string name="prefs_force_non_distinct_multitouch">Force non-distinct multitouch</string>
 
-    <!-- Keyboard theme names -->
-    <string name="layout_gingerbread">Gingerbread</string>
-    <string name="layout_ics">IceCreamSandwich</string>
-    <string name="layout_klp">KeyLimePie</string>
-
-    <!-- For keyboard theme switcher dialog -->
-    <string-array name="keyboard_layout_modes">
-        <item>@string/layout_ics</item>
-        <item>@string/layout_gingerbread</item>
-        <item>@string/layout_klp</item>
-    </string-array>
-    <!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
-    <string-array name="keyboard_layout_modes_values">
-        <item>0</item>
-        <item>1</item>
-        <item>2</item>
-    </string-array>
-
-    <!-- For keyboard color scheme option dialog. -->
-    <string-array name="keyboard_color_schemes">
-        <item>@string/keyboard_color_scheme_white</item>
-        <item>@string/keyboard_color_scheme_blue</item>
-    </string-array>
-    <!-- An element must be an index of {@link KeyboardSwitcher#KEYBOARD_THEMES[]}. -->
-    <string-array name="keyboard_color_schemes_values">
-        <item>2</item>
-        <item>0</item>
-    </string-array>
-
     <!-- Subtype locale display name exceptions.
          For each exception, there should be related string resources for display name that may have
          explicit keyboard layout. The string resource name must be "subtype_<locale>" or
@@ -219,6 +137,4 @@
         <item>tr:AsciiCapable,SupportTouchPositionCorrection,EmojiCapable</item>
         <item>qwerty</item>
     </string-array>
-
-    <string name="settings_warning_researcher_mode">Attention!  You are using the special keyboard for research purposes.</string>
 </resources>
diff --git a/java/res/values/keyboard-heights.xml b/java/res/values/keyboard-heights.xml
index c651a89..12dd51d 100644
--- a/java/res/values/keyboard-heights.xml
+++ b/java/res/values/keyboard-heights.xml
@@ -33,7 +33,5 @@
     <!-- Preferable keyboard height in absolute scale: 48.0mm -->
         <!-- Xoom -->
         <item>HARDWARE=stingray,283.1337</item>
-    <!-- Default value for unknown device: empty string -->
-        <item>,</item>
     </string-array>
 </resources>
diff --git a/java/res/values/keyboard-icons-holo.xml b/java/res/values/keyboard-icons-holo.xml
index b49e1d1..d95ff82 100644
--- a/java/res/values/keyboard-icons-holo.xml
+++ b/java/res/values/keyboard-icons-holo.xml
@@ -21,9 +21,6 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
     <style name="KeyboardIcons.Holo">
         <!-- Keyboard icons -->
-        <!-- TODO: The following holo icon for phone (drawable-hdpi and drawable-xhdpi) are missing.
-             sym_keyboard_123_mic_holo
-             -->
         <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
         <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
         <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
@@ -32,11 +29,9 @@
         <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
         <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
         <item name="iconShortcutKey">@drawable/sym_keyboard_voice_holo_dark</item>
-        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo_dark</item>
         <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
         <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
         <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
-        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
         <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item>
         <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item>
         <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item>
diff --git a/java/res/values/keyboard-icons-lxx-dark.xml b/java/res/values/keyboard-icons-lxx-dark.xml
new file mode 100644
index 0000000..15d267c
--- /dev/null
+++ b/java/res/values/keyboard-icons-lxx-dark.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardIcons.LXX_Dark">
+        <!-- Keyboard icons -->
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift_lxx_dark</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_lxx_dark</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_lxx_dark</item>
+        <item name="iconSpaceKey">@drawable/sym_keyboard_spacebar_lxx_dark</item>
+        <item name="iconEnterKey">@drawable/sym_keyboard_return_lxx_dark</item>
+        <item name="iconGoKey">@drawable/sym_keyboard_go_lxx_dark</item>
+        <item name="iconSearchKey">@drawable/sym_keyboard_search_lxx_dark</item>
+        <item name="iconSendKey">@drawable/sym_keyboard_send_lxx_dark</item>
+        <item name="iconNextKey">@drawable/sym_keyboard_next_lxx_dark</item>
+        <item name="iconDoneKey">@drawable/sym_keyboard_done_lxx_dark</item>
+        <item name="iconPreviousKey">@drawable/sym_keyboard_previous_lxx_dark</item>
+        <item name="iconTabKey">@drawable/sym_keyboard_tab_lxx_dark</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_lxx_dark</item>
+        <!-- TODO: Update this icon for LXX_Dark theme. -->
+        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
+        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_lxx_dark</item>
+        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_lxx_dark</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_lxx_dark</item>
+        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_lxx_dark</item>
+        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_lxx_dark</item>
+        <item name="iconEmojiKey">@drawable/sym_keyboard_smiley_lxx_dark</item>
+    </style>
+</resources>
diff --git a/java/res/values/keyboard-icons-lxx-light.xml b/java/res/values/keyboard-icons-lxx-light.xml
new file mode 100644
index 0000000..60853ca
--- /dev/null
+++ b/java/res/values/keyboard-icons-lxx-light.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardIcons.LXX_Light">
+        <!-- Keyboard icons -->
+        <item name="iconShiftKey">@drawable/sym_keyboard_shift_lxx_light</item>
+        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_lxx_light</item>
+        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_lxx_light</item>
+        <item name="iconSpaceKey">@drawable/sym_keyboard_spacebar_lxx_light</item>
+        <item name="iconEnterKey">@drawable/sym_keyboard_return_lxx_light</item>
+        <item name="iconGoKey">@drawable/sym_keyboard_go_lxx_light</item>
+        <item name="iconSearchKey">@drawable/sym_keyboard_search_lxx_light</item>
+        <item name="iconSendKey">@drawable/sym_keyboard_send_lxx_light</item>
+        <item name="iconNextKey">@drawable/sym_keyboard_next_lxx_light</item>
+        <item name="iconDoneKey">@drawable/sym_keyboard_done_lxx_light</item>
+        <item name="iconPreviousKey">@drawable/sym_keyboard_previous_lxx_light</item>
+        <item name="iconTabKey">@drawable/sym_keyboard_tab_lxx_light</item>
+        <item name="iconShortcutKey">@drawable/sym_keyboard_voice_lxx_light</item>
+        <!-- TODO: Update this icon for LXX_Light theme. -->
+        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space_holo_dark</item>
+        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_lxx_light</item>
+        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_lxx_light</item>
+        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_lxx_light</item>
+        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_lxx_light</item>
+        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_lxx_light</item>
+        <item name="iconEmojiKey">@drawable/sym_keyboard_smiley_lxx_light</item>
+    </style>
+</resources>
diff --git a/java/res/values/keyboard-themes.xml b/java/res/values/keyboard-themes.xml
new file mode 100644
index 0000000..9d772c4
--- /dev/null
+++ b/java/res/values/keyboard-themes.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- For keyboard color scheme option dialog. -->
+    <string-array name="keyboard_theme_names" translatable="false">
+        <item>@string/keyboard_theme_material_light</item>
+        <item>@string/keyboard_theme_material_dark</item>
+        <item>@string/keyboard_theme_holo_white</item>
+        <item>@string/keyboard_theme_holo_blue</item>
+    </string-array>
+    <!-- An element must be a keyboard theme id of {@link KeyboardTheme#THEME_ID_*}. -->
+    <string-array name="keyboard_theme_ids" translatable="false">
+        <item>3</item>
+        <item>4</item>
+        <item>2</item>
+        <item>0</item>
+    </string-array>
+</resources>
diff --git a/java/res/values/keypress-vibration-durations.xml b/java/res/values/keypress-vibration-durations.xml
index cde4e44..032b5fd 100644
--- a/java/res/values/keypress-vibration-durations.xml
+++ b/java/res/values/keypress-vibration-durations.xml
@@ -59,7 +59,5 @@
         <item>MODEL=XT1035:MANUFACTURER=motorola,18</item>
         <!-- Sony Xperia Z, Z Ultra -->
         <item>MODEL=C6603|C6806:MANUFACTURER=Sony,35</item>
-        <!-- Default value for unknown device. The negative value means system default. -->
-        <item>,-1</item>
     </string-array>
 </resources>
diff --git a/java/res/values/keypress-volumes.xml b/java/res/values/keypress-volumes.xml
index d359055..074581d 100644
--- a/java/res/values/keypress-volumes.xml
+++ b/java/res/values/keypress-volumes.xml
@@ -26,7 +26,5 @@
         <item>HARDWARE=grouper,0.3f</item>
         <item>HARDWARE=mako,0.3f</item>
         <item>HARDWARE=manta,0.2f</item>
-        <!-- Default value for unknown device. The negative value means system default. -->
-        <item>,-1.0f</item>
     </string-array>
 </resources>
diff --git a/java/res/values/phantom-sudden-move-event-device-list.xml b/java/res/values/phantom-sudden-move-event-device-list.xml
index 53002b3..4f91cd3 100644
--- a/java/res/values/phantom-sudden-move-event-device-list.xml
+++ b/java/res/values/phantom-sudden-move-event-device-list.xml
@@ -23,7 +23,5 @@
              See {@link com.android.inputmethod.keyboard.PointerTracker}. -->
         <!-- Xoom -->
         <item>HARDWARE=stingray,true</item>
-        <!-- Default value for unknown device -->
-        <item>,false</item>
     </string-array>
 </resources>
diff --git a/java/res/values/platform-theme.xml b/java/res/values/platform-theme.xml
new file mode 100644
index 0000000..2854ff7
--- /dev/null
+++ b/java/res/values/platform-theme.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="platformActivityTheme" parent="@android:style/Theme.DeviceDefault" />
+    <style name="platformSettingsTheme" parent="@android:style/Theme.DeviceDefault" />
+    <style name="platformDialogTheme" parent="@android:style/Theme.DeviceDefault.Dialog" />
+</resources>
diff --git a/java/res/values/research_strings.xml b/java/res/values/research_strings.xml
deleted file mode 100644
index e738711..0000000
--- a/java/res/values/research_strings.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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">
-    <!-- Contents of note explaining what data is collected and how. -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_splash_content" translatable="false"></string>
-    <!-- Account type allowed for inclusion in user-invoked feedback logs [CHAR LIMIT=38] -->
-    <string name="research_account_type" translatable="false"></string>
-    <!-- Account domain allowed for inclusion in user-invoked feedback logs [CHAR LIMIT=38] -->
-    <string name="research_allowed_account_domain" translatable="false"></string>
-
-    <!-- Menu option that lets user send feedback for research purposes about the IME [CHAR LIMIT=38] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_menu_option" translatable="false">Send feedback</string>
-    <!-- Title of dialog box that lets user send feedback for research purposes about the IME [CHAR LIMIT=38] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_dialog_title" translatable="false">Send feedback</string>
-    <!-- Hint to user about the text entry field where they should enter research feedback [CHAR LIMIT=40] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_hint" translatable="false">Enter your feedback here.</string>
-    <!-- Message informing the user that the feedback string must not be empty [CHAR LIMIT=100] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_empty_feedback_error_message" translatable="false">The feedback field must not be empty.</string>
-</resources>
diff --git a/java/res/values/strings-action-keys.xml b/java/res/values/strings-action-keys.xml
index 7003784..96b2e7d 100644
--- a/java/res/values/strings-action-keys.xml
+++ b/java/res/values/strings-action-keys.xml
@@ -29,6 +29,8 @@
     <string name="label_done_key">Done</string>
     <!-- Label for soft enter key when it performs SEND action.  Must be short to fit on key. 5 chars or less is preferable.  [CHAR LIMIT=7] -->
     <string name="label_send_key">Send</string>
+    <!-- Label for soft enter key when it performs SEARCH action.  Must be short to fit on key. 5 chars or less is preferable.  [CHAR LIMIT=7] -->
+    <string name="label_search_key">Search</string>
     <!-- Label for "Pause" key of phone number keyboard.  Must be short to fit on key. 5 chars or less is preferable.  [CHAR LIMIT=7] -->
     <string name="label_pause_key">Pause</string>
     <!-- Label for "Wait" key of phone number keyboard.  Must be short to fit on key. 5 chars or less is preferable.  [CHAR LIMIT=7]-->
diff --git a/java/res/values/strings-config-important-notice.xml b/java/res/values/strings-config-important-notice.xml
new file mode 100644
index 0000000..aa3cd10
--- /dev/null
+++ b/java/res/values/strings-config-important-notice.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <integer name="config_important_notice_version">0</integer>
+    <!-- Description for option enabling the use by the keyboards of sent/received messages, e-mail and typing history to improve suggestion accuracy [CHAR LIMIT=68] -->
+    <string name="use_personalized_dicts_summary">Learn from your communications and typed data to improve suggestions</string>
+</resources>
diff --git a/java/res/values/strings-emoji-descriptions.xml b/java/res/values/strings-emoji-descriptions.xml
new file mode 100644
index 0000000..8cbde26
--- /dev/null
+++ b/java/res/values/strings-emoji-descriptions.xml
@@ -0,0 +1,1671 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<!--
+    These Emoji symbols are unsupported by TTS.
+    TODO: Remove this file when TTS/TalkBack support these Emoji symbols.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+     <!-- Spoken description for Unicode code point U+00A9: "©" COPYRIGHT SIGN -->
+     <string name="spoken_emoji_00A9">Copyright sign</string>
+     <!-- Spoken description for Unicode code point U+00AE: "®" REGISTERED SIGN -->
+     <string name="spoken_emoji_00AE">Registered sign</string>
+     <!-- Spoken description for Unicode code point U+203C: "‼" DOUBLE EXCLAMATION MARK -->
+     <string name="spoken_emoji_203C">Double exclamation mark</string>
+     <!-- Spoken description for Unicode code point U+2049: "⁉" EXCLAMATION QUESTION MARK -->
+     <string name="spoken_emoji_2049">Exclamation question mark</string>
+     <!-- Spoken description for Unicode code point U+2122: "™" TRADE MARK SIGN -->
+     <string name="spoken_emoji_2122">Trade mark sign</string>
+     <!-- Spoken description for Unicode code point U+2139: "ℹ" INFORMATION SOURCE -->
+     <string name="spoken_emoji_2139">Information source</string>
+     <!-- Spoken description for Unicode code point U+2194: "↔" LEFT RIGHT ARROW -->
+     <string name="spoken_emoji_2194">Left right arrow</string>
+     <!-- Spoken description for Unicode code point U+2195: "↕" UP DOWN ARROW -->
+     <string name="spoken_emoji_2195">Up down arrow</string>
+     <!-- Spoken description for Unicode code point U+2196: "↖" NORTH WEST ARROW -->
+     <string name="spoken_emoji_2196">North west arrow</string>
+     <!-- Spoken description for Unicode code point U+2197: "↗" NORTH EAST ARROW -->
+     <string name="spoken_emoji_2197">North east arrow</string>
+     <!-- Spoken description for Unicode code point U+2198: "↘" SOUTH EAST ARROW -->
+     <string name="spoken_emoji_2198">South east arrow</string>
+     <!-- Spoken description for Unicode code point U+2199: "↙" SOUTH WEST ARROW -->
+     <string name="spoken_emoji_2199">South west arrow</string>
+     <!-- Spoken description for Unicode code point U+21A9: "↩" LEFTWARDS ARROW WITH HOOK -->
+     <string name="spoken_emoji_21A9">Leftwards arrow with hook</string>
+     <!-- Spoken description for Unicode code point U+21AA: "↪" RIGHTWARDS ARROW WITH HOOK -->
+     <string name="spoken_emoji_21AA">Rightwards arrow with hook</string>
+     <!-- Spoken description for Unicode code point U+231A: "⌚" WATCH -->
+     <string name="spoken_emoji_231A">Watch</string>
+     <!-- Spoken description for Unicode code point U+231B: "⌛" HOURGLASS -->
+     <string name="spoken_emoji_231B">Hourglass</string>
+     <!-- Spoken description for Unicode code point U+23E9: "⏩" BLACK RIGHT-POINTING DOUBLE TRIANGLE -->
+     <string name="spoken_emoji_23E9">Black right-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23EA: "⏪" BLACK LEFT-POINTING DOUBLE TRIANGLE -->
+     <string name="spoken_emoji_23EA">Black left-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23EB: "⏫" BLACK UP-POINTING DOUBLE TRIANGLE -->
+     <string name="spoken_emoji_23EB">Black up-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23EC: "⏬" BLACK DOWN-POINTING DOUBLE TRIANGLE -->
+     <string name="spoken_emoji_23EC">Black down-pointing double triangle</string>
+     <!-- Spoken description for Unicode code point U+23F0: "⏰" ALARM CLOCK -->
+     <string name="spoken_emoji_23F0">Alarm clock</string>
+     <!-- Spoken description for Unicode code point U+23F3: "⏳" HOURGLASS WITH FLOWING SAND -->
+     <string name="spoken_emoji_23F3">Hourglass with flowing sand</string>
+     <!-- Spoken description for Unicode code point U+24C2: "Ⓜ" CIRCLED LATIN CAPITAL LETTER M -->
+     <string name="spoken_emoji_24C2">Circled latin capital letter m</string>
+     <!-- Spoken description for Unicode code point U+25AA: "▪" BLACK SMALL SQUARE -->
+     <string name="spoken_emoji_25AA">Black small square</string>
+     <!-- Spoken description for Unicode code point U+25AB: "▫" WHITE SMALL SQUARE -->
+     <string name="spoken_emoji_25AB">White small square</string>
+     <!-- Spoken description for Unicode code point U+25B6: "▶" BLACK RIGHT-POINTING TRIANGLE -->
+     <string name="spoken_emoji_25B6">Black right-pointing triangle</string>
+     <!-- Spoken description for Unicode code point U+25C0: "◀" BLACK LEFT-POINTING TRIANGLE -->
+     <string name="spoken_emoji_25C0">Black left-pointing triangle</string>
+     <!-- Spoken description for Unicode code point U+25FB: "◻" WHITE MEDIUM SQUARE -->
+     <string name="spoken_emoji_25FB">White medium square</string>
+     <!-- Spoken description for Unicode code point U+25FC: "◼" BLACK MEDIUM SQUARE -->
+     <string name="spoken_emoji_25FC">Black medium square</string>
+     <!-- Spoken description for Unicode code point U+25FD: "◽" WHITE MEDIUM SMALL SQUARE -->
+     <string name="spoken_emoji_25FD">White medium small square</string>
+     <!-- Spoken description for Unicode code point U+25FE: "◾" BLACK MEDIUM SMALL SQUARE -->
+     <string name="spoken_emoji_25FE">Black medium small square</string>
+     <!-- Spoken description for Unicode code point U+2600: "☀" BLACK SUN WITH RAYS -->
+     <string name="spoken_emoji_2600">Black sun with rays</string>
+     <!-- Spoken description for Unicode code point U+2601: "☁" CLOUD -->
+     <string name="spoken_emoji_2601">Cloud</string>
+     <!-- Spoken description for Unicode code point U+260E: "☎" BLACK TELEPHONE -->
+     <string name="spoken_emoji_260E">Black telephone</string>
+     <!-- Spoken description for Unicode code point U+2611: "☑" BALLOT BOX WITH CHECK -->
+     <string name="spoken_emoji_2611">Ballot box with check</string>
+     <!-- Spoken description for Unicode code point U+2614: "☔" UMBRELLA WITH RAIN DROPS -->
+     <string name="spoken_emoji_2614">Umbrella with rain drops</string>
+     <!-- Spoken description for Unicode code point U+2615: "☕" HOT BEVERAGE -->
+     <string name="spoken_emoji_2615">Hot beverage</string>
+     <!-- Spoken description for Unicode code point U+261D: "☝" WHITE UP POINTING INDEX -->
+     <string name="spoken_emoji_261D">White up pointing index</string>
+     <!-- Spoken description for Unicode code point U+263A: "☺" WHITE SMILING FACE -->
+     <string name="spoken_emoji_263A">White smiling face</string>
+     <!-- Spoken description for Unicode code point U+2648: "♈" ARIES -->
+     <string name="spoken_emoji_2648">Aries</string>
+     <!-- Spoken description for Unicode code point U+2649: "♉" TAURUS -->
+     <string name="spoken_emoji_2649">Taurus</string>
+     <!-- Spoken description for Unicode code point U+264A: "♊" GEMINI -->
+     <string name="spoken_emoji_264A">Gemini</string>
+     <!-- Spoken description for Unicode code point U+264B: "♋" CANCER -->
+     <string name="spoken_emoji_264B">Cancer</string>
+     <!-- Spoken description for Unicode code point U+264C: "♌" LEO -->
+     <string name="spoken_emoji_264C">Leo</string>
+     <!-- Spoken description for Unicode code point U+264D: "♍" VIRGO -->
+     <string name="spoken_emoji_264D">Virgo</string>
+     <!-- Spoken description for Unicode code point U+264E: "♎" LIBRA -->
+     <string name="spoken_emoji_264E">Libra</string>
+     <!-- Spoken description for Unicode code point U+264F: "♏" SCORPIUS -->
+     <string name="spoken_emoji_264F">Scorpius</string>
+     <!-- Spoken description for Unicode code point U+2650: "♐" SAGITTARIUS -->
+     <string name="spoken_emoji_2650">Sagittarius</string>
+     <!-- Spoken description for Unicode code point U+2651: "♑" CAPRICORN -->
+     <string name="spoken_emoji_2651">Capricorn</string>
+     <!-- Spoken description for Unicode code point U+2652: "♒" AQUARIUS -->
+     <string name="spoken_emoji_2652">Aquarius</string>
+     <!-- Spoken description for Unicode code point U+2653: "♓" PISCES -->
+     <string name="spoken_emoji_2653">Pisces</string>
+     <!-- Spoken description for Unicode code point U+2660: "♠" BLACK SPADE SUIT -->
+     <string name="spoken_emoji_2660">Black spade suit</string>
+     <!-- Spoken description for Unicode code point U+2663: "♣" BLACK CLUB SUIT -->
+     <string name="spoken_emoji_2663">Black club suit</string>
+     <!-- Spoken description for Unicode code point U+2665: "♥" BLACK HEART SUIT -->
+     <string name="spoken_emoji_2665">Black heart suit</string>
+     <!-- Spoken description for Unicode code point U+2666: "♦" BLACK DIAMOND SUIT -->
+     <string name="spoken_emoji_2666">Black diamond suit</string>
+     <!-- Spoken description for Unicode code point U+2668: "♨" HOT SPRINGS -->
+     <string name="spoken_emoji_2668">Hot springs</string>
+     <!-- Spoken description for Unicode code point U+267B: "♻" BLACK UNIVERSAL RECYCLING SYMBOL -->
+     <string name="spoken_emoji_267B">Black universal recycling symbol</string>
+     <!-- Spoken description for Unicode code point U+267F: "♿" WHEELCHAIR SYMBOL -->
+     <string name="spoken_emoji_267F">Wheelchair symbol</string>
+     <!-- Spoken description for Unicode code point U+2693: "⚓" ANCHOR -->
+     <string name="spoken_emoji_2693">Anchor</string>
+     <!-- Spoken description for Unicode code point U+26A0: "⚠" WARNING SIGN -->
+     <string name="spoken_emoji_26A0">Warning sign</string>
+     <!-- Spoken description for Unicode code point U+26A1: "⚡" HIGH VOLTAGE SIGN -->
+     <string name="spoken_emoji_26A1">High voltage sign</string>
+     <!-- Spoken description for Unicode code point U+26AA: "⚪" MEDIUM WHITE CIRCLE -->
+     <string name="spoken_emoji_26AA">Medium white circle</string>
+     <!-- Spoken description for Unicode code point U+26AB: "⚫" MEDIUM BLACK CIRCLE -->
+     <string name="spoken_emoji_26AB">Medium black circle</string>
+     <!-- Spoken description for Unicode code point U+26BD: "⚽" SOCCER BALL -->
+     <string name="spoken_emoji_26BD">Soccer ball</string>
+     <!-- Spoken description for Unicode code point U+26BE: "⚾" BASEBALL -->
+     <string name="spoken_emoji_26BE">Baseball</string>
+     <!-- Spoken description for Unicode code point U+26C4: "⛄" SNOWMAN WITHOUT SNOW -->
+     <string name="spoken_emoji_26C4">Snowman without snow</string>
+     <!-- Spoken description for Unicode code point U+26C5: "⛅" SUN BEHIND CLOUD -->
+     <string name="spoken_emoji_26C5">Sun behind cloud</string>
+     <!-- Spoken description for Unicode code point U+26CE: "⛎" OPHIUCHUS -->
+     <string name="spoken_emoji_26CE">Ophiuchus</string>
+     <!-- Spoken description for Unicode code point U+26D4: "⛔" NO ENTRY -->
+     <string name="spoken_emoji_26D4">No entry</string>
+     <!-- Spoken description for Unicode code point U+26EA: "⛪" CHURCH -->
+     <string name="spoken_emoji_26EA">Church</string>
+     <!-- Spoken description for Unicode code point U+26F2: "⛲" FOUNTAIN -->
+     <string name="spoken_emoji_26F2">Fountain</string>
+     <!-- Spoken description for Unicode code point U+26F3: "⛳" FLAG IN HOLE -->
+     <string name="spoken_emoji_26F3">Flag in hole</string>
+     <!-- Spoken description for Unicode code point U+26F5: "⛵" SAILBOAT -->
+     <string name="spoken_emoji_26F5">Sailboat</string>
+     <!-- Spoken description for Unicode code point U+26FA: "⛺" TENT -->
+     <string name="spoken_emoji_26FA">Tent</string>
+     <!-- Spoken description for Unicode code point U+26FD: "⛽" FUEL PUMP -->
+     <string name="spoken_emoji_26FD">Fuel pump</string>
+     <!-- Spoken description for Unicode code point U+2702: "✂" BLACK SCISSORS -->
+     <string name="spoken_emoji_2702">Black scissors</string>
+     <!-- Spoken description for Unicode code point U+2705: "✅" WHITE HEAVY CHECK MARK -->
+     <string name="spoken_emoji_2705">White heavy check mark</string>
+     <!-- Spoken description for Unicode code point U+2708: "✈" AIRPLANE -->
+     <string name="spoken_emoji_2708">Airplane</string>
+     <!-- Spoken description for Unicode code point U+2709: "✉" ENVELOPE -->
+     <string name="spoken_emoji_2709">Envelope</string>
+     <!-- Spoken description for Unicode code point U+270A: "✊" RAISED FIST -->
+     <string name="spoken_emoji_270A">Raised fist</string>
+     <!-- Spoken description for Unicode code point U+270B: "✋" RAISED HAND -->
+     <string name="spoken_emoji_270B">Raised hand</string>
+     <!-- Spoken description for Unicode code point U+270C: "✌" VICTORY HAND -->
+     <string name="spoken_emoji_270C">Victory hand</string>
+     <!-- Spoken description for Unicode code point U+270F: "✏" PENCIL -->
+     <string name="spoken_emoji_270F">Pencil</string>
+     <!-- Spoken description for Unicode code point U+2712: "✒" BLACK NIB -->
+     <string name="spoken_emoji_2712">Black nib</string>
+     <!-- Spoken description for Unicode code point U+2714: "✔" HEAVY CHECK MARK -->
+     <string name="spoken_emoji_2714">Heavy check mark</string>
+     <!-- Spoken description for Unicode code point U+2716: "✖" HEAVY MULTIPLICATION X -->
+     <string name="spoken_emoji_2716">Heavy multiplication x</string>
+     <!-- Spoken description for Unicode code point U+2728: "✨" SPARKLES -->
+     <string name="spoken_emoji_2728">Sparkles</string>
+     <!-- Spoken description for Unicode code point U+2733: "✳" EIGHT SPOKED ASTERISK -->
+     <string name="spoken_emoji_2733">Eight spoked asterisk</string>
+     <!-- Spoken description for Unicode code point U+2734: "✴" EIGHT POINTED BLACK STAR -->
+     <string name="spoken_emoji_2734">Eight pointed black star</string>
+     <!-- Spoken description for Unicode code point U+2744: "❄" SNOWFLAKE -->
+     <string name="spoken_emoji_2744">Snowflake</string>
+     <!-- Spoken description for Unicode code point U+2747: "❇" SPARKLE -->
+     <string name="spoken_emoji_2747">Sparkle</string>
+     <!-- Spoken description for Unicode code point U+274C: "❌" CROSS MARK -->
+     <string name="spoken_emoji_274C">Cross mark</string>
+     <!-- Spoken description for Unicode code point U+274E: "❎" NEGATIVE SQUARED CROSS MARK -->
+     <string name="spoken_emoji_274E">Negative squared cross mark</string>
+     <!-- Spoken description for Unicode code point U+2753: "❓" BLACK QUESTION MARK ORNAMENT -->
+     <string name="spoken_emoji_2753">Black question mark ornament</string>
+     <!-- Spoken description for Unicode code point U+2754: "❔" WHITE QUESTION MARK ORNAMENT -->
+     <string name="spoken_emoji_2754">White question mark ornament</string>
+     <!-- Spoken description for Unicode code point U+2755: "❕" WHITE EXCLAMATION MARK ORNAMENT -->
+     <string name="spoken_emoji_2755">White exclamation mark ornament</string>
+     <!-- Spoken description for Unicode code point U+2757: "❗" HEAVY EXCLAMATION MARK SYMBOL -->
+     <string name="spoken_emoji_2757">Heavy exclamation mark symbol</string>
+     <!-- Spoken description for Unicode code point U+2764: "❤" HEAVY BLACK HEART -->
+     <string name="spoken_emoji_2764">Heavy black heart</string>
+     <!-- Spoken description for Unicode code point U+2795: "➕" HEAVY PLUS SIGN -->
+     <string name="spoken_emoji_2795">Heavy plus sign</string>
+     <!-- Spoken description for Unicode code point U+2796: "➖" HEAVY MINUS SIGN -->
+     <string name="spoken_emoji_2796">Heavy minus sign</string>
+     <!-- Spoken description for Unicode code point U+2797: "➗" HEAVY DIVISION SIGN -->
+     <string name="spoken_emoji_2797">Heavy division sign</string>
+     <!-- Spoken description for Unicode code point U+27A1: "➡" BLACK RIGHTWARDS ARROW -->
+     <string name="spoken_emoji_27A1">Black rightwards arrow</string>
+     <!-- Spoken description for Unicode code point U+27B0: "➰" CURLY LOOP -->
+     <string name="spoken_emoji_27B0">Curly loop</string>
+     <!-- Spoken description for Unicode code point U+27BF: "➿" DOUBLE CURLY LOOP -->
+     <string name="spoken_emoji_27BF">Double curly loop</string>
+     <!-- Spoken description for Unicode code point U+2934: "⤴" ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS -->
+     <string name="spoken_emoji_2934">Arrow pointing rightwards then curving upwards</string>
+     <!-- Spoken description for Unicode code point U+2935: "⤵" ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS -->
+     <string name="spoken_emoji_2935">Arrow pointing rightwards then curving downwards</string>
+     <!-- Spoken description for Unicode code point U+2B05: "⬅" LEFTWARDS BLACK ARROW -->
+     <string name="spoken_emoji_2B05">Leftwards black arrow</string>
+     <!-- Spoken description for Unicode code point U+2B06: "⬆" UPWARDS BLACK ARROW -->
+     <string name="spoken_emoji_2B06">Upwards black arrow</string>
+     <!-- Spoken description for Unicode code point U+2B07: "⬇" DOWNWARDS BLACK ARROW -->
+     <string name="spoken_emoji_2B07">Downwards black arrow</string>
+     <!-- Spoken description for Unicode code point U+2B1B: "⬛" BLACK LARGE SQUARE -->
+     <string name="spoken_emoji_2B1B">Black large square</string>
+     <!-- Spoken description for Unicode code point U+2B1C: "⬜" WHITE LARGE SQUARE -->
+     <string name="spoken_emoji_2B1C">White large square</string>
+     <!-- Spoken description for Unicode code point U+2B50: "⭐" WHITE MEDIUM STAR -->
+     <string name="spoken_emoji_2B50">White medium star</string>
+     <!-- Spoken description for Unicode code point U+2B55: "⭕" HEAVY LARGE CIRCLE -->
+     <string name="spoken_emoji_2B55">Heavy large circle</string>
+     <!-- Spoken description for Unicode code point U+3030: "〰" WAVY DASH -->
+     <string name="spoken_emoji_3030">Wavy dash</string>
+     <!-- Spoken description for Unicode code point U+303D: "〽" PART ALTERNATION MARK -->
+     <string name="spoken_emoji_303D">Part alternation mark</string>
+     <!-- Spoken description for Unicode code point U+3297: "㊗" CIRCLED IDEOGRAPH CONGRATULATION -->
+     <string name="spoken_emoji_3297">Circled ideograph congratulation</string>
+     <!-- Spoken description for Unicode code point U+3299: "㊙" CIRCLED IDEOGRAPH SECRET -->
+     <string name="spoken_emoji_3299">Circled ideograph secret</string>
+     <!-- Spoken description for Unicode code point U+1F004: "🀄" MAHJONG TILE RED DRAGON -->
+     <string name="spoken_emoji_1F004">Mahjong tile red dragon</string>
+     <!-- Spoken description for Unicode code point U+1F0CF: "🃏" PLAYING CARD BLACK JOKER -->
+     <string name="spoken_emoji_1F0CF">Playing card black joker</string>
+     <!-- Spoken description for Unicode code point U+1F170: "🅰" NEGATIVE SQUARED LATIN CAPITAL LETTER A -->
+     <string name="spoken_emoji_1F170">Blood type A</string>
+     <!-- Spoken description for Unicode code point U+1F171: "🅱" NEGATIVE SQUARED LATIN CAPITAL LETTER B -->
+     <string name="spoken_emoji_1F171">Blood type B</string>
+     <!-- Spoken description for Unicode code point U+1F17E: "🅾" NEGATIVE SQUARED LATIN CAPITAL LETTER O -->
+     <string name="spoken_emoji_1F17E">Blood type O</string>
+     <!-- Spoken description for Unicode code point U+1F17F: "🅿" NEGATIVE SQUARED LATIN CAPITAL LETTER P -->
+     <string name="spoken_emoji_1F17F">Parking lot</string>
+     <!-- Spoken description for Unicode code point U+1F18E: "🆎" NEGATIVE SQUARED AB -->
+     <string name="spoken_emoji_1F18E">Blood type AB</string>
+     <!-- Spoken description for Unicode code point U+1F191: "🆑" SQUARED CL -->
+     <string name="spoken_emoji_1F191">Squared CL</string>
+     <!-- Spoken description for Unicode code point U+1F192: "🆒" SQUARED COOL -->
+     <string name="spoken_emoji_1F192">Squared cool</string>
+     <!-- Spoken description for Unicode code point U+1F193: "🆓" SQUARED FREE -->
+     <string name="spoken_emoji_1F193">Squared free</string>
+     <!-- Spoken description for Unicode code point U+1F194: "🆔" SQUARED ID -->
+     <string name="spoken_emoji_1F194">Squared ID</string>
+     <!-- Spoken description for Unicode code point U+1F195: "🆕" SQUARED NEW -->
+     <string name="spoken_emoji_1F195">Squared new</string>
+     <!-- Spoken description for Unicode code point U+1F196: "🆖" SQUARED NG -->
+     <string name="spoken_emoji_1F196">Squared N G</string>
+     <!-- Spoken description for Unicode code point U+1F197: "🆗" SQUARED OK -->
+     <string name="spoken_emoji_1F197">Squared OK</string>
+     <!-- Spoken description for Unicode code point U+1F198: "🆘" SQUARED SOS -->
+     <string name="spoken_emoji_1F198">Squared SOS</string>
+     <!-- Spoken description for Unicode code point U+1F199: "🆙" SQUARED UP WITH EXCLAMATION MARK -->
+     <string name="spoken_emoji_1F199">Squared up with exclamation mark</string>
+     <!-- Spoken description for Unicode code point U+1F19A: "🆚" SQUARED VS -->
+     <string name="spoken_emoji_1F19A">Squared vs</string>
+     <!-- Spoken description for Unicode code point U+1F201: "🈁" SQUARED KATAKANA KOKO -->
+     <string name="spoken_emoji_1F201">Squared katakana here</string>
+     <!-- Spoken description for Unicode code point U+1F202: "🈂" SQUARED KATAKANA SA -->
+     <string name="spoken_emoji_1F202">Squared katakana service</string>
+     <!-- Spoken description for Unicode code point U+1F21A: "🈚" SQUARED CJK UNIFIED IDEOGRAPH-7121 -->
+     <string name="spoken_emoji_1F21A">Squared ideograph charge-free</string>
+     <!-- Spoken description for Unicode code point U+1F22F: "🈯" SQUARED CJK UNIFIED IDEOGRAPH-6307 -->
+     <string name="spoken_emoji_1F22F">Squared ideograph reserved-seat</string>
+     <!-- Spoken description for Unicode code point U+1F232: "🈲" SQUARED CJK UNIFIED IDEOGRAPH-7981 -->
+     <string name="spoken_emoji_1F232">Squared ideograph prohibitation</string>
+     <!-- Spoken description for Unicode code point U+1F233: "🈳" SQUARED CJK UNIFIED IDEOGRAPH-7A7A -->
+     <string name="spoken_emoji_1F233">Squared ideograph vacancy</string>
+     <!-- Spoken description for Unicode code point U+1F234: "🈴" SQUARED CJK UNIFIED IDEOGRAPH-5408 -->
+     <string name="spoken_emoji_1F234">Squared ideograph acceptance</string>
+     <!-- Spoken description for Unicode code point U+1F235: "🈵" SQUARED CJK UNIFIED IDEOGRAPH-6E80 -->
+     <string name="spoken_emoji_1F235">Squared ideograph full occupancy</string>
+     <!-- Spoken description for Unicode code point U+1F236: "🈶" SQUARED CJK UNIFIED IDEOGRAPH-6709 -->
+     <string name="spoken_emoji_1F236">Squared ideograph paid</string>
+     <!-- Spoken description for Unicode code point U+1F237: "🈷" SQUARED CJK UNIFIED IDEOGRAPH-6708 -->
+     <string name="spoken_emoji_1F237">Squared ideograph monthly</string>
+     <!-- Spoken description for Unicode code point U+1F238: "🈸" SQUARED CJK UNIFIED IDEOGRAPH-7533 -->
+     <string name="spoken_emoji_1F238">Squared ideograph application</string>
+     <!-- Spoken description for Unicode code point U+1F239: "🈹" SQUARED CJK UNIFIED IDEOGRAPH-5272 -->
+     <string name="spoken_emoji_1F239">Squared ideograph discount</string>
+     <!-- Spoken description for Unicode code point U+1F23A: "🈺" SQUARED CJK UNIFIED IDEOGRAPH-55B6 -->
+     <string name="spoken_emoji_1F23A">Squared ideograph in business</string>
+     <!-- Spoken description for Unicode code point U+1F250: "🉐" CIRCLED IDEOGRAPH ADVANTAGE -->
+     <string name="spoken_emoji_1F250">Circled ideograph advantage</string>
+     <!-- Spoken description for Unicode code point U+1F251: "🉑" CIRCLED IDEOGRAPH ACCEPT -->
+     <string name="spoken_emoji_1F251">Circled ideograph accept</string>
+     <!-- Spoken description for Unicode code point U+1F300: "🌀" CYCLONE -->
+     <string name="spoken_emoji_1F300">Cyclone</string>
+     <!-- Spoken description for Unicode code point U+1F301: "🌁" FOGGY -->
+     <string name="spoken_emoji_1F301">Foggy</string>
+     <!-- Spoken description for Unicode code point U+1F302: "🌂" CLOSED UMBRELLA -->
+     <string name="spoken_emoji_1F302">Closed umbrella</string>
+     <!-- Spoken description for Unicode code point U+1F303: "🌃" NIGHT WITH STARS -->
+     <string name="spoken_emoji_1F303">Night with stars</string>
+     <!-- Spoken description for Unicode code point U+1F304: "🌄" SUNRISE OVER MOUNTAINS -->
+     <string name="spoken_emoji_1F304">Sunrise over mountains</string>
+     <!-- Spoken description for Unicode code point U+1F305: "🌅" SUNRISE -->
+     <string name="spoken_emoji_1F305">Sunrise</string>
+     <!-- Spoken description for Unicode code point U+1F306: "🌆" CITYSCAPE AT DUSK -->
+     <string name="spoken_emoji_1F306">Cityscape at dusk</string>
+     <!-- Spoken description for Unicode code point U+1F307: "🌇" SUNSET OVER BUILDINGS -->
+     <string name="spoken_emoji_1F307">Sunset over buildings</string>
+     <!-- Spoken description for Unicode code point U+1F308: "🌈" RAINBOW -->
+     <string name="spoken_emoji_1F308">Rainbow</string>
+     <!-- Spoken description for Unicode code point U+1F309: "🌉" BRIDGE AT NIGHT -->
+     <string name="spoken_emoji_1F309">Bridge at night</string>
+     <!-- Spoken description for Unicode code point U+1F30A: "🌊" WATER WAVE -->
+     <string name="spoken_emoji_1F30A">Water wave</string>
+     <!-- Spoken description for Unicode code point U+1F30B: "🌋" VOLCANO -->
+     <string name="spoken_emoji_1F30B">Volcano</string>
+     <!-- Spoken description for Unicode code point U+1F30C: "🌌" MILKY WAY -->
+     <string name="spoken_emoji_1F30C">Milky way</string>
+     <!-- Spoken description for Unicode code point U+1F30D: "🌍" EARTH GLOBE EUROPE-AFRICA -->
+     <string name="spoken_emoji_1F30D">Earth globe europe-africa</string>
+     <!-- Spoken description for Unicode code point U+1F30E: "🌎" EARTH GLOBE AMERICAS -->
+     <string name="spoken_emoji_1F30E">Earth globe americas</string>
+     <!-- Spoken description for Unicode code point U+1F30F: "🌏" EARTH GLOBE ASIA-AUSTRALIA -->
+     <string name="spoken_emoji_1F30F">Earth globe asia-australia</string>
+     <!-- Spoken description for Unicode code point U+1F310: "🌐" GLOBE WITH MERIDIANS -->
+     <string name="spoken_emoji_1F310">Globe with meridians</string>
+     <!-- Spoken description for Unicode code point U+1F311: "🌑" NEW MOON SYMBOL -->
+     <string name="spoken_emoji_1F311">New moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F312: "🌒" WAXING CRESCENT MOON SYMBOL -->
+     <string name="spoken_emoji_1F312">Waxing crescent moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F313: "🌓" FIRST QUARTER MOON SYMBOL -->
+     <string name="spoken_emoji_1F313">First quarter moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F314: "🌔" WAXING GIBBOUS MOON SYMBOL -->
+     <string name="spoken_emoji_1F314">Waxing gibbous moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F315: "🌕" FULL MOON SYMBOL -->
+     <string name="spoken_emoji_1F315">Full moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F316: "🌖" WANING GIBBOUS MOON SYMBOL -->
+     <string name="spoken_emoji_1F316">Waning gibbous moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F317: "🌗" LAST QUARTER MOON SYMBOL -->
+     <string name="spoken_emoji_1F317">Last quarter moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F318: "🌘" WANING CRESCENT MOON SYMBOL -->
+     <string name="spoken_emoji_1F318">Waning crescent moon symbol</string>
+     <!-- Spoken description for Unicode code point U+1F319: "🌙" CRESCENT MOON -->
+     <string name="spoken_emoji_1F319">Crescent moon</string>
+     <!-- Spoken description for Unicode code point U+1F31A: "🌚" NEW MOON WITH FACE -->
+     <string name="spoken_emoji_1F31A">New moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31B: "🌛" FIRST QUARTER MOON WITH FACE -->
+     <string name="spoken_emoji_1F31B">First quarter moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31C: "🌜" LAST QUARTER MOON WITH FACE -->
+     <string name="spoken_emoji_1F31C">Last quarter moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31D: "🌝" FULL MOON WITH FACE -->
+     <string name="spoken_emoji_1F31D">Full moon with face</string>
+     <!-- Spoken description for Unicode code point U+1F31E: "🌞" SUN WITH FACE -->
+     <string name="spoken_emoji_1F31E">Sun with face</string>
+     <!-- Spoken description for Unicode code point U+1F31F: "🌟" GLOWING STAR -->
+     <string name="spoken_emoji_1F31F">Glowing star</string>
+     <!-- Spoken description for Unicode code point U+1F320: "🌠" SHOOTING STAR -->
+     <string name="spoken_emoji_1F320">Shooting star</string>
+     <!-- Spoken description for Unicode code point U+1F330: "🌰" CHESTNUT -->
+     <string name="spoken_emoji_1F330">Chestnut</string>
+     <!-- Spoken description for Unicode code point U+1F331: "🌱" SEEDLING -->
+     <string name="spoken_emoji_1F331">Seedling</string>
+     <!-- Spoken description for Unicode code point U+1F332: "🌲" EVERGREEN TREE -->
+     <string name="spoken_emoji_1F332">Evergreen tree</string>
+     <!-- Spoken description for Unicode code point U+1F333: "🌳" DECIDUOUS TREE -->
+     <string name="spoken_emoji_1F333">Deciduous tree</string>
+     <!-- Spoken description for Unicode code point U+1F334: "🌴" PALM TREE -->
+     <string name="spoken_emoji_1F334">Palm tree</string>
+     <!-- Spoken description for Unicode code point U+1F335: "🌵" CACTUS -->
+     <string name="spoken_emoji_1F335">Cactus</string>
+     <!-- Spoken description for Unicode code point U+1F337: "🌷" TULIP -->
+     <string name="spoken_emoji_1F337">Tulip</string>
+     <!-- Spoken description for Unicode code point U+1F338: "🌸" CHERRY BLOSSOM -->
+     <string name="spoken_emoji_1F338">Cherry blossom</string>
+     <!-- Spoken description for Unicode code point U+1F339: "🌹" ROSE -->
+     <string name="spoken_emoji_1F339">Rose</string>
+     <!-- Spoken description for Unicode code point U+1F33A: "🌺" HIBISCUS -->
+     <string name="spoken_emoji_1F33A">Hibiscus</string>
+     <!-- Spoken description for Unicode code point U+1F33B: "🌻" SUNFLOWER -->
+     <string name="spoken_emoji_1F33B">Sunflower</string>
+     <!-- Spoken description for Unicode code point U+1F33C: "🌼" BLOSSOM -->
+     <string name="spoken_emoji_1F33C">Blossom</string>
+     <!-- Spoken description for Unicode code point U+1F33D: "🌽" EAR OF MAIZE -->
+     <string name="spoken_emoji_1F33D">Ear of maize</string>
+     <!-- Spoken description for Unicode code point U+1F33E: "🌾" EAR OF RICE -->
+     <string name="spoken_emoji_1F33E">Ear of rice</string>
+     <!-- Spoken description for Unicode code point U+1F33F: "🌿" HERB -->
+     <string name="spoken_emoji_1F33F">Herb</string>
+     <!-- Spoken description for Unicode code point U+1F340: "🍀" FOUR LEAF CLOVER -->
+     <string name="spoken_emoji_1F340">Four leaf clover</string>
+     <!-- Spoken description for Unicode code point U+1F341: "🍁" MAPLE LEAF -->
+     <string name="spoken_emoji_1F341">Maple leaf</string>
+     <!-- Spoken description for Unicode code point U+1F342: "🍂" FALLEN LEAF -->
+     <string name="spoken_emoji_1F342">Fallen leaf</string>
+     <!-- Spoken description for Unicode code point U+1F343: "🍃" LEAF FLUTTERING IN WIND -->
+     <string name="spoken_emoji_1F343">Leaf fluttering in wind</string>
+     <!-- Spoken description for Unicode code point U+1F344: "🍄" MUSHROOM -->
+     <string name="spoken_emoji_1F344">Mushroom</string>
+     <!-- Spoken description for Unicode code point U+1F345: "🍅" TOMATO -->
+     <string name="spoken_emoji_1F345">Tomato</string>
+     <!-- Spoken description for Unicode code point U+1F346: "🍆" AUBERGINE -->
+     <string name="spoken_emoji_1F346">Aubergine</string>
+     <!-- Spoken description for Unicode code point U+1F347: "🍇" GRAPES -->
+     <string name="spoken_emoji_1F347">Grapes</string>
+     <!-- Spoken description for Unicode code point U+1F348: "🍈" MELON -->
+     <string name="spoken_emoji_1F348">Melon</string>
+     <!-- Spoken description for Unicode code point U+1F349: "🍉" WATERMELON -->
+     <string name="spoken_emoji_1F349">Watermelon</string>
+     <!-- Spoken description for Unicode code point U+1F34A: "🍊" TANGERINE -->
+     <string name="spoken_emoji_1F34A">Tangerine</string>
+     <!-- Spoken description for Unicode code point U+1F34B: "🍋" LEMON -->
+     <string name="spoken_emoji_1F34B">Lemon</string>
+     <!-- Spoken description for Unicode code point U+1F34C: "🍌" BANANA -->
+     <string name="spoken_emoji_1F34C">Banana</string>
+     <!-- Spoken description for Unicode code point U+1F34D: "🍍" PINEAPPLE -->
+     <string name="spoken_emoji_1F34D">Pineapple</string>
+     <!-- Spoken description for Unicode code point U+1F34E: "🍎" RED APPLE -->
+     <string name="spoken_emoji_1F34E">Red apple</string>
+     <!-- Spoken description for Unicode code point U+1F34F: "🍏" GREEN APPLE -->
+     <string name="spoken_emoji_1F34F">Green apple</string>
+     <!-- Spoken description for Unicode code point U+1F350: "🍐" PEAR -->
+     <string name="spoken_emoji_1F350">Pear</string>
+     <!-- Spoken description for Unicode code point U+1F351: "🍑" PEACH -->
+     <string name="spoken_emoji_1F351">Peach</string>
+     <!-- Spoken description for Unicode code point U+1F352: "🍒" CHERRIES -->
+     <string name="spoken_emoji_1F352">Cherries</string>
+     <!-- Spoken description for Unicode code point U+1F353: "🍓" STRAWBERRY -->
+     <string name="spoken_emoji_1F353">Strawberry</string>
+     <!-- Spoken description for Unicode code point U+1F354: "🍔" HAMBURGER -->
+     <string name="spoken_emoji_1F354">Hamburger</string>
+     <!-- Spoken description for Unicode code point U+1F355: "🍕" SLICE OF PIZZA -->
+     <string name="spoken_emoji_1F355">Slice of pizza</string>
+     <!-- Spoken description for Unicode code point U+1F356: "🍖" MEAT ON BONE -->
+     <string name="spoken_emoji_1F356">Meat on bone</string>
+     <!-- Spoken description for Unicode code point U+1F357: "🍗" POULTRY LEG -->
+     <string name="spoken_emoji_1F357">Poultry leg</string>
+     <!-- Spoken description for Unicode code point U+1F358: "🍘" RICE CRACKER -->
+     <string name="spoken_emoji_1F358">Rice cracker</string>
+     <!-- Spoken description for Unicode code point U+1F359: "🍙" RICE BALL -->
+     <string name="spoken_emoji_1F359">Rice ball</string>
+     <!-- Spoken description for Unicode code point U+1F35A: "🍚" COOKED RICE -->
+     <string name="spoken_emoji_1F35A">Cooked rice</string>
+     <!-- Spoken description for Unicode code point U+1F35B: "🍛" CURRY AND RICE -->
+     <string name="spoken_emoji_1F35B">Curry and rice</string>
+     <!-- Spoken description for Unicode code point U+1F35C: "🍜" STEAMING BOWL -->
+     <string name="spoken_emoji_1F35C">Steaming bowl</string>
+     <!-- Spoken description for Unicode code point U+1F35D: "🍝" SPAGHETTI -->
+     <string name="spoken_emoji_1F35D">Spaghetti</string>
+     <!-- Spoken description for Unicode code point U+1F35E: "🍞" BREAD -->
+     <string name="spoken_emoji_1F35E">Bread</string>
+     <!-- Spoken description for Unicode code point U+1F35F: "🍟" FRENCH FRIES -->
+     <string name="spoken_emoji_1F35F">French fries</string>
+     <!-- Spoken description for Unicode code point U+1F360: "🍠" ROASTED SWEET POTATO -->
+     <string name="spoken_emoji_1F360">Roasted sweet potato</string>
+     <!-- Spoken description for Unicode code point U+1F361: "🍡" DANGO -->
+     <string name="spoken_emoji_1F361">Dango</string>
+     <!-- Spoken description for Unicode code point U+1F362: "🍢" ODEN -->
+     <string name="spoken_emoji_1F362">Oden</string>
+     <!-- Spoken description for Unicode code point U+1F363: "🍣" SUSHI -->
+     <string name="spoken_emoji_1F363">Sushi</string>
+     <!-- Spoken description for Unicode code point U+1F364: "🍤" FRIED SHRIMP -->
+     <string name="spoken_emoji_1F364">Fried shrimp</string>
+     <!-- Spoken description for Unicode code point U+1F365: "🍥" FISH CAKE WITH SWIRL DESIGN -->
+     <string name="spoken_emoji_1F365">Fish cake with swirl design</string>
+     <!-- Spoken description for Unicode code point U+1F366: "🍦" SOFT ICE CREAM -->
+     <string name="spoken_emoji_1F366">Soft ice cream</string>
+     <!-- Spoken description for Unicode code point U+1F367: "🍧" SHAVED ICE -->
+     <string name="spoken_emoji_1F367">Shaved ice</string>
+     <!-- Spoken description for Unicode code point U+1F368: "🍨" ICE CREAM -->
+     <string name="spoken_emoji_1F368">Ice cream</string>
+     <!-- Spoken description for Unicode code point U+1F369: "🍩" DOUGHNUT -->
+     <string name="spoken_emoji_1F369">Doughnut</string>
+     <!-- Spoken description for Unicode code point U+1F36A: "🍪" COOKIE -->
+     <string name="spoken_emoji_1F36A">Cookie</string>
+     <!-- Spoken description for Unicode code point U+1F36B: "🍫" CHOCOLATE BAR -->
+     <string name="spoken_emoji_1F36B">Chocolate bar</string>
+     <!-- Spoken description for Unicode code point U+1F36C: "🍬" CANDY -->
+     <string name="spoken_emoji_1F36C">Candy</string>
+     <!-- Spoken description for Unicode code point U+1F36D: "🍭" LOLLIPOP -->
+     <string name="spoken_emoji_1F36D">Lollipop</string>
+     <!-- Spoken description for Unicode code point U+1F36E: "🍮" CUSTARD -->
+     <string name="spoken_emoji_1F36E">Custard</string>
+     <!-- Spoken description for Unicode code point U+1F36F: "🍯" HONEY POT -->
+     <string name="spoken_emoji_1F36F">Honey pot</string>
+     <!-- Spoken description for Unicode code point U+1F370: "🍰" SHORTCAKE -->
+     <string name="spoken_emoji_1F370">Shortcake</string>
+     <!-- Spoken description for Unicode code point U+1F371: "🍱" BENTO BOX -->
+     <string name="spoken_emoji_1F371">Bento box</string>
+     <!-- Spoken description for Unicode code point U+1F372: "🍲" POT OF FOOD -->
+     <string name="spoken_emoji_1F372">Pot of food</string>
+     <!-- Spoken description for Unicode code point U+1F373: "🍳" COOKING -->
+     <string name="spoken_emoji_1F373">Cooking</string>
+     <!-- Spoken description for Unicode code point U+1F374: "🍴" FORK AND KNIFE -->
+     <string name="spoken_emoji_1F374">Fork and knife</string>
+     <!-- Spoken description for Unicode code point U+1F375: "🍵" TEACUP WITHOUT HANDLE -->
+     <string name="spoken_emoji_1F375">Teacup without handle</string>
+     <!-- Spoken description for Unicode code point U+1F376: "🍶" SAKE BOTTLE AND CUP -->
+     <string name="spoken_emoji_1F376">Sake bottle and cup</string>
+     <!-- Spoken description for Unicode code point U+1F377: "🍷" WINE GLASS -->
+     <string name="spoken_emoji_1F377">Wine glass</string>
+     <!-- Spoken description for Unicode code point U+1F378: "🍸" COCKTAIL GLASS -->
+     <string name="spoken_emoji_1F378">Cocktail glass</string>
+     <!-- Spoken description for Unicode code point U+1F379: "🍹" TROPICAL DRINK -->
+     <string name="spoken_emoji_1F379">Tropical drink</string>
+     <!-- Spoken description for Unicode code point U+1F37A: "🍺" BEER MUG -->
+     <string name="spoken_emoji_1F37A">Beer mug</string>
+     <!-- Spoken description for Unicode code point U+1F37B: "🍻" CLINKING BEER MUGS -->
+     <string name="spoken_emoji_1F37B">Clinking beer mugs</string>
+     <!-- Spoken description for Unicode code point U+1F37C: "🍼" BABY BOTTLE -->
+     <string name="spoken_emoji_1F37C">Baby bottle</string>
+     <!-- Spoken description for Unicode code point U+1F380: "🎀" RIBBON -->
+     <string name="spoken_emoji_1F380">Ribbon</string>
+     <!-- Spoken description for Unicode code point U+1F381: "🎁" WRAPPED PRESENT -->
+     <string name="spoken_emoji_1F381">Wrapped present</string>
+     <!-- Spoken description for Unicode code point U+1F382: "🎂" BIRTHDAY CAKE -->
+     <string name="spoken_emoji_1F382">Birthday cake</string>
+     <!-- Spoken description for Unicode code point U+1F383: "🎃" JACK-O-LANTERN -->
+     <string name="spoken_emoji_1F383">Jack-o-lantern</string>
+     <!-- Spoken description for Unicode code point U+1F384: "🎄" CHRISTMAS TREE -->
+     <string name="spoken_emoji_1F384">Christmas tree</string>
+     <!-- Spoken description for Unicode code point U+1F385: "🎅" FATHER CHRISTMAS -->
+     <string name="spoken_emoji_1F385">Father christmas</string>
+     <!-- Spoken description for Unicode code point U+1F386: "🎆" FIREWORKS -->
+     <string name="spoken_emoji_1F386">Fireworks</string>
+     <!-- Spoken description for Unicode code point U+1F387: "🎇" FIREWORK SPARKLER -->
+     <string name="spoken_emoji_1F387">Firework sparkler</string>
+     <!-- Spoken description for Unicode code point U+1F388: "🎈" BALLOON -->
+     <string name="spoken_emoji_1F388">Balloon</string>
+     <!-- Spoken description for Unicode code point U+1F389: "🎉" PARTY POPPER -->
+     <string name="spoken_emoji_1F389">Party popper</string>
+     <!-- Spoken description for Unicode code point U+1F38A: "🎊" CONFETTI BALL -->
+     <string name="spoken_emoji_1F38A">Confetti ball</string>
+     <!-- Spoken description for Unicode code point U+1F38B: "🎋" TANABATA TREE -->
+     <string name="spoken_emoji_1F38B">Tanabata tree</string>
+     <!-- Spoken description for Unicode code point U+1F38C: "🎌" CROSSED FLAGS -->
+     <string name="spoken_emoji_1F38C">Crossed flags</string>
+     <!-- Spoken description for Unicode code point U+1F38D: "🎍" PINE DECORATION -->
+     <string name="spoken_emoji_1F38D">Pine decoration</string>
+     <!-- Spoken description for Unicode code point U+1F38E: "🎎" JAPANESE DOLLS -->
+     <string name="spoken_emoji_1F38E">Japanese dolls</string>
+     <!-- Spoken description for Unicode code point U+1F38F: "🎏" CARP STREAMER -->
+     <string name="spoken_emoji_1F38F">Carp streamer</string>
+     <!-- Spoken description for Unicode code point U+1F390: "🎐" WIND CHIME -->
+     <string name="spoken_emoji_1F390">Wind chime</string>
+     <!-- Spoken description for Unicode code point U+1F391: "🎑" MOON VIEWING CEREMONY -->
+     <string name="spoken_emoji_1F391">Moon viewing ceremony</string>
+     <!-- Spoken description for Unicode code point U+1F392: "🎒" SCHOOL SATCHEL -->
+     <string name="spoken_emoji_1F392">School satchel</string>
+     <!-- Spoken description for Unicode code point U+1F393: "🎓" GRADUATION CAP -->
+     <string name="spoken_emoji_1F393">Graduation cap</string>
+     <!-- Spoken description for Unicode code point U+1F3A0: "🎠" CAROUSEL HORSE -->
+     <string name="spoken_emoji_1F3A0">Carousel horse</string>
+     <!-- Spoken description for Unicode code point U+1F3A1: "🎡" FERRIS WHEEL -->
+     <string name="spoken_emoji_1F3A1">Ferris wheel</string>
+     <!-- Spoken description for Unicode code point U+1F3A2: "🎢" ROLLER COASTER -->
+     <string name="spoken_emoji_1F3A2">Roller coaster</string>
+     <!-- Spoken description for Unicode code point U+1F3A3: "🎣" FISHING POLE AND FISH -->
+     <string name="spoken_emoji_1F3A3">Fishing pole and fish</string>
+     <!-- Spoken description for Unicode code point U+1F3A4: "🎤" MICROPHONE -->
+     <string name="spoken_emoji_1F3A4">Microphone</string>
+     <!-- Spoken description for Unicode code point U+1F3A5: "🎥" MOVIE CAMERA -->
+     <string name="spoken_emoji_1F3A5">Movie camera</string>
+     <!-- Spoken description for Unicode code point U+1F3A6: "🎦" CINEMA -->
+     <string name="spoken_emoji_1F3A6">Cinema</string>
+     <!-- Spoken description for Unicode code point U+1F3A7: "🎧" HEADPHONE -->
+     <string name="spoken_emoji_1F3A7">Headphone</string>
+     <!-- Spoken description for Unicode code point U+1F3A8: "🎨" ARTIST PALETTE -->
+     <string name="spoken_emoji_1F3A8">Artist palette</string>
+     <!-- Spoken description for Unicode code point U+1F3A9: "🎩" TOP HAT -->
+     <string name="spoken_emoji_1F3A9">Top hat</string>
+     <!-- Spoken description for Unicode code point U+1F3AA: "🎪" CIRCUS TENT -->
+     <string name="spoken_emoji_1F3AA">Circus tent</string>
+     <!-- Spoken description for Unicode code point U+1F3AB: "🎫" TICKET -->
+     <string name="spoken_emoji_1F3AB">Ticket</string>
+     <!-- Spoken description for Unicode code point U+1F3AC: "🎬" CLAPPER BOARD -->
+     <string name="spoken_emoji_1F3AC">Clapper board</string>
+     <!-- Spoken description for Unicode code point U+1F3AD: "🎭" PERFORMING ARTS -->
+     <string name="spoken_emoji_1F3AD">Performing arts</string>
+     <!-- Spoken description for Unicode code point U+1F3AE: "🎮" VIDEO GAME -->
+     <string name="spoken_emoji_1F3AE">Video game</string>
+     <!-- Spoken description for Unicode code point U+1F3AF: "🎯" DIRECT HIT -->
+     <string name="spoken_emoji_1F3AF">Direct hit</string>
+     <!-- Spoken description for Unicode code point U+1F3B0: "🎰" SLOT MACHINE -->
+     <string name="spoken_emoji_1F3B0">Slot machine</string>
+     <!-- Spoken description for Unicode code point U+1F3B1: "🎱" BILLIARDS -->
+     <string name="spoken_emoji_1F3B1">Billiards</string>
+     <!-- Spoken description for Unicode code point U+1F3B2: "🎲" GAME DIE -->
+     <string name="spoken_emoji_1F3B2">Game die</string>
+     <!-- Spoken description for Unicode code point U+1F3B3: "🎳" BOWLING -->
+     <string name="spoken_emoji_1F3B3">Bowling</string>
+     <!-- Spoken description for Unicode code point U+1F3B4: "🎴" FLOWER PLAYING CARDS -->
+     <string name="spoken_emoji_1F3B4">Flower playing cards</string>
+     <!-- Spoken description for Unicode code point U+1F3B5: "🎵" MUSICAL NOTE -->
+     <string name="spoken_emoji_1F3B5">Musical note</string>
+     <!-- Spoken description for Unicode code point U+1F3B6: "🎶" MULTIPLE MUSICAL NOTES -->
+     <string name="spoken_emoji_1F3B6">Multiple musical notes</string>
+     <!-- Spoken description for Unicode code point U+1F3B7: "🎷" SAXOPHONE -->
+     <string name="spoken_emoji_1F3B7">Saxophone</string>
+     <!-- Spoken description for Unicode code point U+1F3B8: "🎸" GUITAR -->
+     <string name="spoken_emoji_1F3B8">Guitar</string>
+     <!-- Spoken description for Unicode code point U+1F3B9: "🎹" MUSICAL KEYBOARD -->
+     <string name="spoken_emoji_1F3B9">Musical keyboard</string>
+     <!-- Spoken description for Unicode code point U+1F3BA: "🎺" TRUMPET -->
+     <string name="spoken_emoji_1F3BA">Trumpet</string>
+     <!-- Spoken description for Unicode code point U+1F3BB: "🎻" VIOLIN -->
+     <string name="spoken_emoji_1F3BB">Violin</string>
+     <!-- Spoken description for Unicode code point U+1F3BC: "🎼" MUSICAL SCORE -->
+     <string name="spoken_emoji_1F3BC">Musical score</string>
+     <!-- Spoken description for Unicode code point U+1F3BD: "🎽" RUNNING SHIRT WITH SASH -->
+     <string name="spoken_emoji_1F3BD">Running shirt with sash</string>
+     <!-- Spoken description for Unicode code point U+1F3BE: "🎾" TENNIS RACQUET AND BALL -->
+     <string name="spoken_emoji_1F3BE">Tennis racquet and ball</string>
+     <!-- Spoken description for Unicode code point U+1F3BF: "🎿" SKI AND SKI BOOT -->
+     <string name="spoken_emoji_1F3BF">Ski and ski boot</string>
+     <!-- Spoken description for Unicode code point U+1F3C0: "🏀" BASKETBALL AND HOOP -->
+     <string name="spoken_emoji_1F3C0">Basketball and hoop</string>
+     <!-- Spoken description for Unicode code point U+1F3C1: "🏁" CHEQUERED FLAG -->
+     <string name="spoken_emoji_1F3C1">Chequered flag</string>
+     <!-- Spoken description for Unicode code point U+1F3C2: "🏂" SNOWBOARDER -->
+     <string name="spoken_emoji_1F3C2">Snowboarder</string>
+     <!-- Spoken description for Unicode code point U+1F3C3: "🏃" RUNNER -->
+     <string name="spoken_emoji_1F3C3">Runner</string>
+     <!-- Spoken description for Unicode code point U+1F3C4: "🏄" SURFER -->
+     <string name="spoken_emoji_1F3C4">Surfer</string>
+     <!-- Spoken description for Unicode code point U+1F3C6: "🏆" TROPHY -->
+     <string name="spoken_emoji_1F3C6">Trophy</string>
+     <!-- Spoken description for Unicode code point U+1F3C7: "🏇" HORSE RACING -->
+     <string name="spoken_emoji_1F3C7">Horse racing</string>
+     <!-- Spoken description for Unicode code point U+1F3C8: "🏈" AMERICAN FOOTBALL -->
+     <string name="spoken_emoji_1F3C8">American football</string>
+     <!-- Spoken description for Unicode code point U+1F3C9: "🏉" RUGBY FOOTBALL -->
+     <string name="spoken_emoji_1F3C9">Rugby football</string>
+     <!-- Spoken description for Unicode code point U+1F3CA: "🏊" SWIMMER -->
+     <string name="spoken_emoji_1F3CA">Swimmer</string>
+     <!-- Spoken description for Unicode code point U+1F3E0: "🏠" HOUSE BUILDING -->
+     <string name="spoken_emoji_1F3E0">House building</string>
+     <!-- Spoken description for Unicode code point U+1F3E1: "🏡" HOUSE WITH GARDEN -->
+     <string name="spoken_emoji_1F3E1">House with garden</string>
+     <!-- Spoken description for Unicode code point U+1F3E2: "🏢" OFFICE BUILDING -->
+     <string name="spoken_emoji_1F3E2">Office building</string>
+     <!-- Spoken description for Unicode code point U+1F3E3: "🏣" JAPANESE POST OFFICE -->
+     <string name="spoken_emoji_1F3E3">Japanese post office</string>
+     <!-- Spoken description for Unicode code point U+1F3E4: "🏤" EUROPEAN POST OFFICE -->
+     <string name="spoken_emoji_1F3E4">European post office</string>
+     <!-- Spoken description for Unicode code point U+1F3E5: "🏥" HOSPITAL -->
+     <string name="spoken_emoji_1F3E5">Hospital</string>
+     <!-- Spoken description for Unicode code point U+1F3E6: "🏦" BANK -->
+     <string name="spoken_emoji_1F3E6">Bank</string>
+     <!-- Spoken description for Unicode code point U+1F3E7: "🏧" AUTOMATED TELLER MACHINE -->
+     <string name="spoken_emoji_1F3E7">Automated teller machine</string>
+     <!-- Spoken description for Unicode code point U+1F3E8: "🏨" HOTEL -->
+     <string name="spoken_emoji_1F3E8">Hotel</string>
+     <!-- Spoken description for Unicode code point U+1F3E9: "🏩" LOVE HOTEL -->
+     <string name="spoken_emoji_1F3E9">Love hotel</string>
+     <!-- Spoken description for Unicode code point U+1F3EA: "🏪" CONVENIENCE STORE -->
+     <string name="spoken_emoji_1F3EA">Convenience store</string>
+     <!-- Spoken description for Unicode code point U+1F3EB: "🏫" SCHOOL -->
+     <string name="spoken_emoji_1F3EB">School</string>
+     <!-- Spoken description for Unicode code point U+1F3EC: "🏬" DEPARTMENT STORE -->
+     <string name="spoken_emoji_1F3EC">Department store</string>
+     <!-- Spoken description for Unicode code point U+1F3ED: "🏭" FACTORY -->
+     <string name="spoken_emoji_1F3ED">Factory</string>
+     <!-- Spoken description for Unicode code point U+1F3EE: "🏮" IZAKAYA LANTERN -->
+     <string name="spoken_emoji_1F3EE">Izakaya lantern</string>
+     <!-- Spoken description for Unicode code point U+1F3EF: "🏯" JAPANESE CASTLE -->
+     <string name="spoken_emoji_1F3EF">Japanese castle</string>
+     <!-- Spoken description for Unicode code point U+1F3F0: "🏰" EUROPEAN CASTLE -->
+     <string name="spoken_emoji_1F3F0">European castle</string>
+     <!-- Spoken description for Unicode code point U+1F400: "🐀" RAT -->
+     <string name="spoken_emoji_1F400">Rat</string>
+     <!-- Spoken description for Unicode code point U+1F401: "🐁" MOUSE -->
+     <string name="spoken_emoji_1F401">Mouse</string>
+     <!-- Spoken description for Unicode code point U+1F402: "🐂" OX -->
+     <string name="spoken_emoji_1F402">Ox</string>
+     <!-- Spoken description for Unicode code point U+1F403: "🐃" WATER BUFFALO -->
+     <string name="spoken_emoji_1F403">Water buffalo</string>
+     <!-- Spoken description for Unicode code point U+1F404: "🐄" COW -->
+     <string name="spoken_emoji_1F404">Cow</string>
+     <!-- Spoken description for Unicode code point U+1F406: "🐆" LEOPARD -->
+     <string name="spoken_emoji_1F406">Leopard</string>
+     <!-- Spoken description for Unicode code point U+1F407: "🐇" RABBIT -->
+     <string name="spoken_emoji_1F407">Rabbit</string>
+     <!-- Spoken description for Unicode code point U+1F408: "🐈" CAT -->
+     <string name="spoken_emoji_1F408">Cat</string>
+     <!-- Spoken description for Unicode code point U+1F409: "🐉" DRAGON -->
+     <string name="spoken_emoji_1F409">Dragon</string>
+     <!-- Spoken description for Unicode code point U+1F40A: "🐊" CROCODILE -->
+     <string name="spoken_emoji_1F40A">Crocodile</string>
+     <!-- Spoken description for Unicode code point U+1F40B: "🐋" WHALE -->
+     <string name="spoken_emoji_1F40B">Whale</string>
+     <!-- Spoken description for Unicode code point U+1F40C: "🐌" SNAIL -->
+     <string name="spoken_emoji_1F40C">Snail</string>
+     <!-- Spoken description for Unicode code point U+1F40D: "🐍" SNAKE -->
+     <string name="spoken_emoji_1F40D">Snake</string>
+     <!-- Spoken description for Unicode code point U+1F40E: "🐎" HORSE -->
+     <string name="spoken_emoji_1F40E">Horse</string>
+     <!-- Spoken description for Unicode code point U+1F40F: "🐏" RAM -->
+     <string name="spoken_emoji_1F40F">Ram</string>
+     <!-- Spoken description for Unicode code point U+1F410: "🐐" GOAT -->
+     <string name="spoken_emoji_1F410">Goat</string>
+     <!-- Spoken description for Unicode code point U+1F411: "🐑" SHEEP -->
+     <string name="spoken_emoji_1F411">Sheep</string>
+     <!-- Spoken description for Unicode code point U+1F412: "🐒" MONKEY -->
+     <string name="spoken_emoji_1F412">Monkey</string>
+     <!-- Spoken description for Unicode code point U+1F413: "🐓" ROOSTER -->
+     <string name="spoken_emoji_1F413">Rooster</string>
+     <!-- Spoken description for Unicode code point U+1F414: "🐔" CHICKEN -->
+     <string name="spoken_emoji_1F414">Chicken</string>
+     <!-- Spoken description for Unicode code point U+1F415: "🐕" DOG -->
+     <string name="spoken_emoji_1F415">Dog</string>
+     <!-- Spoken description for Unicode code point U+1F416: "🐖" PIG -->
+     <string name="spoken_emoji_1F416">Pig</string>
+     <!-- Spoken description for Unicode code point U+1F417: "🐗" BOAR -->
+     <string name="spoken_emoji_1F417">Boar</string>
+     <!-- Spoken description for Unicode code point U+1F418: "🐘" ELEPHANT -->
+     <string name="spoken_emoji_1F418">Elephant</string>
+     <!-- Spoken description for Unicode code point U+1F419: "🐙" OCTOPUS -->
+     <string name="spoken_emoji_1F419">Octopus</string>
+     <!-- Spoken description for Unicode code point U+1F41A: "🐚" SPIRAL SHELL -->
+     <string name="spoken_emoji_1F41A">Spiral shell</string>
+     <!-- Spoken description for Unicode code point U+1F41B: "🐛" BUG -->
+     <string name="spoken_emoji_1F41B">Bug</string>
+     <!-- Spoken description for Unicode code point U+1F41C: "🐜" ANT -->
+     <string name="spoken_emoji_1F41C">Ant</string>
+     <!-- Spoken description for Unicode code point U+1F41D: "🐝" HONEYBEE -->
+     <string name="spoken_emoji_1F41D">Honeybee</string>
+     <!-- Spoken description for Unicode code point U+1F41E: "🐞" LADY BEETLE -->
+     <string name="spoken_emoji_1F41E">Lady beetle</string>
+     <!-- Spoken description for Unicode code point U+1F41F: "🐟" FISH -->
+     <string name="spoken_emoji_1F41F">Fish</string>
+     <!-- Spoken description for Unicode code point U+1F420: "🐠" TROPICAL FISH -->
+     <string name="spoken_emoji_1F420">Tropical fish</string>
+     <!-- Spoken description for Unicode code point U+1F421: "🐡" BLOWFISH -->
+     <string name="spoken_emoji_1F421">Blowfish</string>
+     <!-- Spoken description for Unicode code point U+1F422: "🐢" TURTLE -->
+     <string name="spoken_emoji_1F422">Turtle</string>
+     <!-- Spoken description for Unicode code point U+1F423: "🐣" HATCHING CHICK -->
+     <string name="spoken_emoji_1F423">Hatching chick</string>
+     <!-- Spoken description for Unicode code point U+1F424: "🐤" BABY CHICK -->
+     <string name="spoken_emoji_1F424">Baby chick</string>
+     <!-- Spoken description for Unicode code point U+1F425: "🐥" FRONT-FACING BABY CHICK -->
+     <string name="spoken_emoji_1F425">Front-facing baby chick</string>
+     <!-- Spoken description for Unicode code point U+1F426: "🐦" BIRD -->
+     <string name="spoken_emoji_1F426">Bird</string>
+     <!-- Spoken description for Unicode code point U+1F427: "🐧" PENGUIN -->
+     <string name="spoken_emoji_1F427">Penguin</string>
+     <!-- Spoken description for Unicode code point U+1F428: "🐨" KOALA -->
+     <string name="spoken_emoji_1F428">Koala</string>
+     <!-- Spoken description for Unicode code point U+1F429: "🐩" POODLE -->
+     <string name="spoken_emoji_1F429">Poodle</string>
+     <!-- Spoken description for Unicode code point U+1F42A: "🐪" DROMEDARY CAMEL -->
+     <string name="spoken_emoji_1F42A">Dromedary camel</string>
+     <!-- Spoken description for Unicode code point U+1F42B: "🐫" BACTRIAN CAMEL -->
+     <string name="spoken_emoji_1F42B">Bactrian camel</string>
+     <!-- Spoken description for Unicode code point U+1F42C: "🐬" DOLPHIN -->
+     <string name="spoken_emoji_1F42C">Dolphin</string>
+     <!-- Spoken description for Unicode code point U+1F42D: "🐭" MOUSE FACE -->
+     <string name="spoken_emoji_1F42D">Mouse face</string>
+     <!-- Spoken description for Unicode code point U+1F42E: "🐮" COW FACE -->
+     <string name="spoken_emoji_1F42E">Cow face</string>
+     <!-- Spoken description for Unicode code point U+1F42F: "🐯" TIGER FACE -->
+     <string name="spoken_emoji_1F42F">Tiger face</string>
+     <!-- Spoken description for Unicode code point U+1F430: "🐰" RABBIT FACE -->
+     <string name="spoken_emoji_1F430">Rabbit face</string>
+     <!-- Spoken description for Unicode code point U+1F431: "🐱" CAT FACE -->
+     <string name="spoken_emoji_1F431">Cat face</string>
+     <!-- Spoken description for Unicode code point U+1F432: "🐲" DRAGON FACE -->
+     <string name="spoken_emoji_1F432">Dragon face</string>
+     <!-- Spoken description for Unicode code point U+1F433: "🐳" SPOUTING WHALE -->
+     <string name="spoken_emoji_1F433">Spouting whale</string>
+     <!-- Spoken description for Unicode code point U+1F434: "🐴" HORSE FACE -->
+     <string name="spoken_emoji_1F434">Horse face</string>
+     <!-- Spoken description for Unicode code point U+1F435: "🐵" MONKEY FACE -->
+     <string name="spoken_emoji_1F435">Monkey face</string>
+     <!-- Spoken description for Unicode code point U+1F436: "🐶" DOG FACE -->
+     <string name="spoken_emoji_1F436">Dog face</string>
+     <!-- Spoken description for Unicode code point U+1F437: "🐷" PIG FACE -->
+     <string name="spoken_emoji_1F437">Pig face</string>
+     <!-- Spoken description for Unicode code point U+1F438: "🐸" FROG FACE -->
+     <string name="spoken_emoji_1F438">Frog face</string>
+     <!-- Spoken description for Unicode code point U+1F439: "🐹" HAMSTER FACE -->
+     <string name="spoken_emoji_1F439">Hamster face</string>
+     <!-- Spoken description for Unicode code point U+1F43A: "🐺" WOLF FACE -->
+     <string name="spoken_emoji_1F43A">Wolf face</string>
+     <!-- Spoken description for Unicode code point U+1F43B: "🐻" BEAR FACE -->
+     <string name="spoken_emoji_1F43B">Bear face</string>
+     <!-- Spoken description for Unicode code point U+1F43C: "🐼" PANDA FACE -->
+     <string name="spoken_emoji_1F43C">Panda face</string>
+     <!-- Spoken description for Unicode code point U+1F43D: "🐽" PIG NOSE -->
+     <string name="spoken_emoji_1F43D">Pig nose</string>
+     <!-- Spoken description for Unicode code point U+1F43E: "🐾" PAW PRINTS -->
+     <string name="spoken_emoji_1F43E">Paw prints</string>
+     <!-- Spoken description for Unicode code point U+1F440: "👀" EYES -->
+     <string name="spoken_emoji_1F440">Eyes</string>
+     <!-- Spoken description for Unicode code point U+1F442: "👂" EAR -->
+     <string name="spoken_emoji_1F442">Ear</string>
+     <!-- Spoken description for Unicode code point U+1F443: "👃" NOSE -->
+     <string name="spoken_emoji_1F443">Nose</string>
+     <!-- Spoken description for Unicode code point U+1F444: "👄" MOUTH -->
+     <string name="spoken_emoji_1F444">Mouth</string>
+     <!-- Spoken description for Unicode code point U+1F445: "👅" TONGUE -->
+     <string name="spoken_emoji_1F445">Tongue</string>
+     <!-- Spoken description for Unicode code point U+1F446: "👆" WHITE UP POINTING BACKHAND INDEX -->
+     <string name="spoken_emoji_1F446">White up pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F447: "👇" WHITE DOWN POINTING BACKHAND INDEX -->
+     <string name="spoken_emoji_1F447">White down pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F448: "👈" WHITE LEFT POINTING BACKHAND INDEX -->
+     <string name="spoken_emoji_1F448">White left pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F449: "👉" WHITE RIGHT POINTING BACKHAND INDEX -->
+     <string name="spoken_emoji_1F449">White right pointing backhand index</string>
+     <!-- Spoken description for Unicode code point U+1F44A: "👊" FISTED HAND SIGN -->
+     <string name="spoken_emoji_1F44A">Fisted hand sign</string>
+     <!-- Spoken description for Unicode code point U+1F44B: "👋" WAVING HAND SIGN -->
+     <string name="spoken_emoji_1F44B">Waving hand sign</string>
+     <!-- Spoken description for Unicode code point U+1F44C: "👌" OK HAND SIGN -->
+     <string name="spoken_emoji_1F44C">Ok hand sign</string>
+     <!-- Spoken description for Unicode code point U+1F44D: "👍" THUMBS UP SIGN -->
+     <string name="spoken_emoji_1F44D">Thumbs up sign</string>
+     <!-- Spoken description for Unicode code point U+1F44E: "👎" THUMBS DOWN SIGN -->
+     <string name="spoken_emoji_1F44E">Thumbs down sign</string>
+     <!-- Spoken description for Unicode code point U+1F44F: "👏" CLAPPING HANDS SIGN -->
+     <string name="spoken_emoji_1F44F">Clapping hands sign</string>
+     <!-- Spoken description for Unicode code point U+1F450: "👐" OPEN HANDS SIGN -->
+     <string name="spoken_emoji_1F450">Open hands sign</string>
+     <!-- Spoken description for Unicode code point U+1F451: "👑" CROWN -->
+     <string name="spoken_emoji_1F451">Crown</string>
+     <!-- Spoken description for Unicode code point U+1F452: "👒" WOMANS HAT -->
+     <string name="spoken_emoji_1F452">Womans hat</string>
+     <!-- Spoken description for Unicode code point U+1F453: "👓" EYEGLASSES -->
+     <string name="spoken_emoji_1F453">Eyeglasses</string>
+     <!-- Spoken description for Unicode code point U+1F454: "👔" NECKTIE -->
+     <string name="spoken_emoji_1F454">Necktie</string>
+     <!-- Spoken description for Unicode code point U+1F455: "👕" T-SHIRT -->
+     <string name="spoken_emoji_1F455">T-shirt</string>
+     <!-- Spoken description for Unicode code point U+1F456: "👖" JEANS -->
+     <string name="spoken_emoji_1F456">Jeans</string>
+     <!-- Spoken description for Unicode code point U+1F457: "👗" DRESS -->
+     <string name="spoken_emoji_1F457">Dress</string>
+     <!-- Spoken description for Unicode code point U+1F458: "👘" KIMONO -->
+     <string name="spoken_emoji_1F458">Kimono</string>
+     <!-- Spoken description for Unicode code point U+1F459: "👙" BIKINI -->
+     <string name="spoken_emoji_1F459">Bikini</string>
+     <!-- Spoken description for Unicode code point U+1F45A: "👚" WOMANS CLOTHES -->
+     <string name="spoken_emoji_1F45A">Womans clothes</string>
+     <!-- Spoken description for Unicode code point U+1F45B: "👛" PURSE -->
+     <string name="spoken_emoji_1F45B">Purse</string>
+     <!-- Spoken description for Unicode code point U+1F45C: "👜" HANDBAG -->
+     <string name="spoken_emoji_1F45C">Handbag</string>
+     <!-- Spoken description for Unicode code point U+1F45D: "👝" POUCH -->
+     <string name="spoken_emoji_1F45D">Pouch</string>
+     <!-- Spoken description for Unicode code point U+1F45E: "👞" MANS SHOE -->
+     <string name="spoken_emoji_1F45E">Mans shoe</string>
+     <!-- Spoken description for Unicode code point U+1F45F: "👟" ATHLETIC SHOE -->
+     <string name="spoken_emoji_1F45F">Athletic shoe</string>
+     <!-- Spoken description for Unicode code point U+1F460: "👠" HIGH-HEELED SHOE -->
+     <string name="spoken_emoji_1F460">High-heeled shoe</string>
+     <!-- Spoken description for Unicode code point U+1F461: "👡" WOMANS SANDAL -->
+     <string name="spoken_emoji_1F461">Womans sandal</string>
+     <!-- Spoken description for Unicode code point U+1F462: "👢" WOMANS BOOTS -->
+     <string name="spoken_emoji_1F462">Womans boots</string>
+     <!-- Spoken description for Unicode code point U+1F463: "👣" FOOTPRINTS -->
+     <string name="spoken_emoji_1F463">Footprints</string>
+     <!-- Spoken description for Unicode code point U+1F464: "👤" BUST IN SILHOUETTE -->
+     <string name="spoken_emoji_1F464">Bust in silhouette</string>
+     <!-- Spoken description for Unicode code point U+1F465: "👥" BUSTS IN SILHOUETTE -->
+     <string name="spoken_emoji_1F465">Busts in silhouette</string>
+     <!-- Spoken description for Unicode code point U+1F466: "👦" BOY -->
+     <string name="spoken_emoji_1F466">Boy</string>
+     <!-- Spoken description for Unicode code point U+1F467: "👧" GIRL -->
+     <string name="spoken_emoji_1F467">Girl</string>
+     <!-- Spoken description for Unicode code point U+1F468: "👨" MAN -->
+     <string name="spoken_emoji_1F468">Man</string>
+     <!-- Spoken description for Unicode code point U+1F469: "👩" WOMAN -->
+     <string name="spoken_emoji_1F469">Woman</string>
+     <!-- Spoken description for Unicode code point U+1F46A: "👪" FAMILY -->
+     <string name="spoken_emoji_1F46A">Family</string>
+     <!-- Spoken description for Unicode code point U+1F46B: "👫" MAN AND WOMAN HOLDING HANDS -->
+     <string name="spoken_emoji_1F46B">Man and woman holding hands</string>
+     <!-- Spoken description for Unicode code point U+1F46C: "👬" TWO MEN HOLDING HANDS -->
+     <string name="spoken_emoji_1F46C">Two men holding hands</string>
+     <!-- Spoken description for Unicode code point U+1F46D: "👭" TWO WOMEN HOLDING HANDS -->
+     <string name="spoken_emoji_1F46D">Two women holding hands</string>
+     <!-- Spoken description for Unicode code point U+1F46E: "👮" POLICE OFFICER -->
+     <string name="spoken_emoji_1F46E">Police officer</string>
+     <!-- Spoken description for Unicode code point U+1F46F: "👯" WOMAN WITH BUNNY EARS -->
+     <string name="spoken_emoji_1F46F">Woman with bunny ears</string>
+     <!-- Spoken description for Unicode code point U+1F470: "👰" BRIDE WITH VEIL -->
+     <string name="spoken_emoji_1F470">Bride with veil</string>
+     <!-- Spoken description for Unicode code point U+1F471: "👱" PERSON WITH BLOND HAIR -->
+     <string name="spoken_emoji_1F471">Person with blond hair</string>
+     <!-- Spoken description for Unicode code point U+1F472: "👲" MAN WITH GUA PI MAO -->
+     <string name="spoken_emoji_1F472">Man with gua pi mao</string>
+     <!-- Spoken description for Unicode code point U+1F473: "👳" MAN WITH TURBAN -->
+     <string name="spoken_emoji_1F473">Man with turban</string>
+     <!-- Spoken description for Unicode code point U+1F474: "👴" OLDER MAN -->
+     <string name="spoken_emoji_1F474">Older man</string>
+     <!-- Spoken description for Unicode code point U+1F475: "👵" OLDER WOMAN -->
+     <string name="spoken_emoji_1F475">Older woman</string>
+     <!-- Spoken description for Unicode code point U+1F476: "👶" BABY -->
+     <string name="spoken_emoji_1F476">Baby</string>
+     <!-- Spoken description for Unicode code point U+1F477: "👷" CONSTRUCTION WORKER -->
+     <string name="spoken_emoji_1F477">Construction worker</string>
+     <!-- Spoken description for Unicode code point U+1F478: "👸" PRINCESS -->
+     <string name="spoken_emoji_1F478">Princess</string>
+     <!-- Spoken description for Unicode code point U+1F479: "👹" JAPANESE OGRE -->
+     <string name="spoken_emoji_1F479">Japanese ogre</string>
+     <!-- Spoken description for Unicode code point U+1F47A: "👺" JAPANESE GOBLIN -->
+     <string name="spoken_emoji_1F47A">Japanese goblin</string>
+     <!-- Spoken description for Unicode code point U+1F47B: "👻" GHOST -->
+     <string name="spoken_emoji_1F47B">Ghost</string>
+     <!-- Spoken description for Unicode code point U+1F47C: "👼" BABY ANGEL -->
+     <string name="spoken_emoji_1F47C">Baby angel</string>
+     <!-- Spoken description for Unicode code point U+1F47D: "👽" EXTRATERRESTRIAL ALIEN -->
+     <string name="spoken_emoji_1F47D">Extraterrestrial alien</string>
+     <!-- Spoken description for Unicode code point U+1F47E: "👾" ALIEN MONSTER -->
+     <string name="spoken_emoji_1F47E">Alien monster</string>
+     <!-- Spoken description for Unicode code point U+1F47F: "👿" IMP -->
+     <string name="spoken_emoji_1F47F">Imp</string>
+     <!-- Spoken description for Unicode code point U+1F480: "💀" SKULL -->
+     <string name="spoken_emoji_1F480">Skull</string>
+     <!-- Spoken description for Unicode code point U+1F481: "💁" INFORMATION DESK PERSON -->
+     <string name="spoken_emoji_1F481">Information desk person</string>
+     <!-- Spoken description for Unicode code point U+1F482: "💂" GUARDSMAN -->
+     <string name="spoken_emoji_1F482">Guardsman</string>
+     <!-- Spoken description for Unicode code point U+1F483: "💃" DANCER -->
+     <string name="spoken_emoji_1F483">Dancer</string>
+     <!-- Spoken description for Unicode code point U+1F484: "💄" LIPSTICK -->
+     <string name="spoken_emoji_1F484">Lipstick</string>
+     <!-- Spoken description for Unicode code point U+1F485: "💅" NAIL POLISH -->
+     <string name="spoken_emoji_1F485">Nail polish</string>
+     <!-- Spoken description for Unicode code point U+1F486: "💆" FACE MASSAGE -->
+     <string name="spoken_emoji_1F486">Face massage</string>
+     <!-- Spoken description for Unicode code point U+1F487: "💇" HAIRCUT -->
+     <string name="spoken_emoji_1F487">Haircut</string>
+     <!-- Spoken description for Unicode code point U+1F488: "💈" BARBER POLE -->
+     <string name="spoken_emoji_1F488">Barber pole</string>
+     <!-- Spoken description for Unicode code point U+1F489: "💉" SYRINGE -->
+     <string name="spoken_emoji_1F489">Syringe</string>
+     <!-- Spoken description for Unicode code point U+1F48A: "💊" PILL -->
+     <string name="spoken_emoji_1F48A">Pill</string>
+     <!-- Spoken description for Unicode code point U+1F48B: "💋" KISS MARK -->
+     <string name="spoken_emoji_1F48B">Kiss mark</string>
+     <!-- Spoken description for Unicode code point U+1F48C: "💌" LOVE LETTER -->
+     <string name="spoken_emoji_1F48C">Love letter</string>
+     <!-- Spoken description for Unicode code point U+1F48D: "💍" RING -->
+     <string name="spoken_emoji_1F48D">Ring</string>
+     <!-- Spoken description for Unicode code point U+1F48E: "💎" GEM STONE -->
+     <string name="spoken_emoji_1F48E">Gem stone</string>
+     <!-- Spoken description for Unicode code point U+1F48F: "💏" KISS -->
+     <string name="spoken_emoji_1F48F">Kiss</string>
+     <!-- Spoken description for Unicode code point U+1F490: "💐" BOUQUET -->
+     <string name="spoken_emoji_1F490">Bouquet</string>
+     <!-- Spoken description for Unicode code point U+1F491: "💑" COUPLE WITH HEART -->
+     <string name="spoken_emoji_1F491">Couple with heart</string>
+     <!-- Spoken description for Unicode code point U+1F492: "💒" WEDDING -->
+     <string name="spoken_emoji_1F492">Wedding</string>
+     <!-- Spoken description for Unicode code point U+1F493: "💓" BEATING HEART -->
+     <string name="spoken_emoji_1F493">Beating heart</string>
+     <!-- Spoken description for Unicode code point U+1F494: "💔" BROKEN HEART -->
+     <string name="spoken_emoji_1F494">Broken heart</string>
+     <!-- Spoken description for Unicode code point U+1F495: "💕" TWO HEARTS -->
+     <string name="spoken_emoji_1F495">Two hearts</string>
+     <!-- Spoken description for Unicode code point U+1F496: "💖" SPARKLING HEART -->
+     <string name="spoken_emoji_1F496">Sparkling heart</string>
+     <!-- Spoken description for Unicode code point U+1F497: "💗" GROWING HEART -->
+     <string name="spoken_emoji_1F497">Growing heart</string>
+     <!-- Spoken description for Unicode code point U+1F498: "💘" HEART WITH ARROW -->
+     <string name="spoken_emoji_1F498">Heart with arrow</string>
+     <!-- Spoken description for Unicode code point U+1F499: "💙" BLUE HEART -->
+     <string name="spoken_emoji_1F499">Blue heart</string>
+     <!-- Spoken description for Unicode code point U+1F49A: "💚" GREEN HEART -->
+     <string name="spoken_emoji_1F49A">Green heart</string>
+     <!-- Spoken description for Unicode code point U+1F49B: "💛" YELLOW HEART -->
+     <string name="spoken_emoji_1F49B">Yellow heart</string>
+     <!-- Spoken description for Unicode code point U+1F49C: "💜" PURPLE HEART -->
+     <string name="spoken_emoji_1F49C">Purple heart</string>
+     <!-- Spoken description for Unicode code point U+1F49D: "💝" HEART WITH RIBBON -->
+     <string name="spoken_emoji_1F49D">Heart with ribbon</string>
+     <!-- Spoken description for Unicode code point U+1F49E: "💞" REVOLVING HEARTS -->
+     <string name="spoken_emoji_1F49E">Revolving hearts</string>
+     <!-- Spoken description for Unicode code point U+1F49F: "💟" HEART DECORATION -->
+     <string name="spoken_emoji_1F49F">Heart decoration</string>
+     <!-- Spoken description for Unicode code point U+1F4A0: "💠" DIAMOND SHAPE WITH A DOT INSIDE -->
+     <string name="spoken_emoji_1F4A0">Diamond shape with a dot inside</string>
+     <!-- Spoken description for Unicode code point U+1F4A1: "💡" ELECTRIC LIGHT BULB -->
+     <string name="spoken_emoji_1F4A1">Electric light bulb</string>
+     <!-- Spoken description for Unicode code point U+1F4A2: "💢" ANGER SYMBOL -->
+     <string name="spoken_emoji_1F4A2">Anger symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A3: "💣" BOMB -->
+     <string name="spoken_emoji_1F4A3">Bomb</string>
+     <!-- Spoken description for Unicode code point U+1F4A4: "💤" SLEEPING SYMBOL -->
+     <string name="spoken_emoji_1F4A4">Sleeping symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A5: "💥" COLLISION SYMBOL -->
+     <string name="spoken_emoji_1F4A5">Collision symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A6: "💦" SPLASHING SWEAT SYMBOL -->
+     <string name="spoken_emoji_1F4A6">Splashing sweat symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A7: "💧" DROPLET -->
+     <string name="spoken_emoji_1F4A7">Droplet</string>
+     <!-- Spoken description for Unicode code point U+1F4A8: "💨" DASH SYMBOL -->
+     <string name="spoken_emoji_1F4A8">Dash symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4A9: "💩" PILE OF POO -->
+     <string name="spoken_emoji_1F4A9">Pile of poo</string>
+     <!-- Spoken description for Unicode code point U+1F4AA: "💪" FLEXED BICEPS -->
+     <string name="spoken_emoji_1F4AA">Flexed biceps</string>
+     <!-- Spoken description for Unicode code point U+1F4AB: "💫" DIZZY SYMBOL -->
+     <string name="spoken_emoji_1F4AB">Dizzy symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4AC: "💬" SPEECH BALLOON -->
+     <string name="spoken_emoji_1F4AC">Speech balloon</string>
+     <!-- Spoken description for Unicode code point U+1F4AD: "💭" THOUGHT BALLOON -->
+     <string name="spoken_emoji_1F4AD">Thought balloon</string>
+     <!-- Spoken description for Unicode code point U+1F4AE: "💮" WHITE FLOWER -->
+     <string name="spoken_emoji_1F4AE">White flower</string>
+     <!-- Spoken description for Unicode code point U+1F4AF: "💯" HUNDRED POINTS SYMBOL -->
+     <string name="spoken_emoji_1F4AF">Hundred points symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4B0: "💰" MONEY BAG -->
+     <string name="spoken_emoji_1F4B0">Money bag</string>
+     <!-- Spoken description for Unicode code point U+1F4B1: "💱" CURRENCY EXCHANGE -->
+     <string name="spoken_emoji_1F4B1">Currency exchange</string>
+     <!-- Spoken description for Unicode code point U+1F4B2: "💲" HEAVY DOLLAR SIGN -->
+     <string name="spoken_emoji_1F4B2">Heavy dollar sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B3: "💳" CREDIT CARD -->
+     <string name="spoken_emoji_1F4B3">Credit card</string>
+     <!-- Spoken description for Unicode code point U+1F4B4: "💴" BANKNOTE WITH YEN SIGN -->
+     <string name="spoken_emoji_1F4B4">Banknote with yen sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B5: "💵" BANKNOTE WITH DOLLAR SIGN -->
+     <string name="spoken_emoji_1F4B5">Banknote with dollar sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B6: "💶" BANKNOTE WITH EURO SIGN -->
+     <string name="spoken_emoji_1F4B6">Banknote with euro sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B7: "💷" BANKNOTE WITH POUND SIGN -->
+     <string name="spoken_emoji_1F4B7">Banknote with pound sign</string>
+     <!-- Spoken description for Unicode code point U+1F4B8: "💸" MONEY WITH WINGS -->
+     <string name="spoken_emoji_1F4B8">Money with wings</string>
+     <!-- Spoken description for Unicode code point U+1F4B9: "💹" CHART WITH UPWARDS TREND AND YEN SIGN -->
+     <string name="spoken_emoji_1F4B9">Chart with upwards trend and yen sign</string>
+     <!-- Spoken description for Unicode code point U+1F4BA: "💺" SEAT -->
+     <string name="spoken_emoji_1F4BA">Seat</string>
+     <!-- Spoken description for Unicode code point U+1F4BB: "💻" PERSONAL COMPUTER -->
+     <string name="spoken_emoji_1F4BB">Personal computer</string>
+     <!-- Spoken description for Unicode code point U+1F4BC: "💼" BRIEFCASE -->
+     <string name="spoken_emoji_1F4BC">Briefcase</string>
+     <!-- Spoken description for Unicode code point U+1F4BD: "💽" MINIDISC -->
+     <string name="spoken_emoji_1F4BD">Minidisc</string>
+     <!-- Spoken description for Unicode code point U+1F4BE: "💾" FLOPPY DISK -->
+     <string name="spoken_emoji_1F4BE">Floppy disk</string>
+     <!-- Spoken description for Unicode code point U+1F4BF: "💿" OPTICAL DISC -->
+     <string name="spoken_emoji_1F4BF">Optical disc</string>
+     <!-- Spoken description for Unicode code point U+1F4C0: "📀" DVD -->
+     <string name="spoken_emoji_1F4C0">Dvd</string>
+     <!-- Spoken description for Unicode code point U+1F4C1: "📁" FILE FOLDER -->
+     <string name="spoken_emoji_1F4C1">File folder</string>
+     <!-- Spoken description for Unicode code point U+1F4C2: "📂" OPEN FILE FOLDER -->
+     <string name="spoken_emoji_1F4C2">Open file folder</string>
+     <!-- Spoken description for Unicode code point U+1F4C3: "📃" PAGE WITH CURL -->
+     <string name="spoken_emoji_1F4C3">Page with curl</string>
+     <!-- Spoken description for Unicode code point U+1F4C4: "📄" PAGE FACING UP -->
+     <string name="spoken_emoji_1F4C4">Page facing up</string>
+     <!-- Spoken description for Unicode code point U+1F4C5: "📅" CALENDAR -->
+     <string name="spoken_emoji_1F4C5">Calendar</string>
+     <!-- Spoken description for Unicode code point U+1F4C6: "📆" TEAR-OFF CALENDAR -->
+     <string name="spoken_emoji_1F4C6">Tear-off calendar</string>
+     <!-- Spoken description for Unicode code point U+1F4C7: "📇" CARD INDEX -->
+     <string name="spoken_emoji_1F4C7">Card index</string>
+     <!-- Spoken description for Unicode code point U+1F4C8: "📈" CHART WITH UPWARDS TREND -->
+     <string name="spoken_emoji_1F4C8">Chart with upwards trend</string>
+     <!-- Spoken description for Unicode code point U+1F4C9: "📉" CHART WITH DOWNWARDS TREND -->
+     <string name="spoken_emoji_1F4C9">Chart with downwards trend</string>
+     <!-- Spoken description for Unicode code point U+1F4CA: "📊" BAR CHART -->
+     <string name="spoken_emoji_1F4CA">Bar chart</string>
+     <!-- Spoken description for Unicode code point U+1F4CB: "📋" CLIPBOARD -->
+     <string name="spoken_emoji_1F4CB">Clipboard</string>
+     <!-- Spoken description for Unicode code point U+1F4CC: "📌" PUSHPIN -->
+     <string name="spoken_emoji_1F4CC">Pushpin</string>
+     <!-- Spoken description for Unicode code point U+1F4CD: "📍" ROUND PUSHPIN -->
+     <string name="spoken_emoji_1F4CD">Round pushpin</string>
+     <!-- Spoken description for Unicode code point U+1F4CE: "📎" PAPERCLIP -->
+     <string name="spoken_emoji_1F4CE">Paperclip</string>
+     <!-- Spoken description for Unicode code point U+1F4CF: "📏" STRAIGHT RULER -->
+     <string name="spoken_emoji_1F4CF">Straight ruler</string>
+     <!-- Spoken description for Unicode code point U+1F4D0: "📐" TRIANGULAR RULER -->
+     <string name="spoken_emoji_1F4D0">Triangular ruler</string>
+     <!-- Spoken description for Unicode code point U+1F4D1: "📑" BOOKMARK TABS -->
+     <string name="spoken_emoji_1F4D1">Bookmark tabs</string>
+     <!-- Spoken description for Unicode code point U+1F4D2: "📒" LEDGER -->
+     <string name="spoken_emoji_1F4D2">Ledger</string>
+     <!-- Spoken description for Unicode code point U+1F4D3: "📓" NOTEBOOK -->
+     <string name="spoken_emoji_1F4D3">Notebook</string>
+     <!-- Spoken description for Unicode code point U+1F4D4: "📔" NOTEBOOK WITH DECORATIVE COVER -->
+     <string name="spoken_emoji_1F4D4">Notebook with decorative cover</string>
+     <!-- Spoken description for Unicode code point U+1F4D5: "📕" CLOSED BOOK -->
+     <string name="spoken_emoji_1F4D5">Closed book</string>
+     <!-- Spoken description for Unicode code point U+1F4D6: "📖" OPEN BOOK -->
+     <string name="spoken_emoji_1F4D6">Open book</string>
+     <!-- Spoken description for Unicode code point U+1F4D7: "📗" GREEN BOOK -->
+     <string name="spoken_emoji_1F4D7">Green book</string>
+     <!-- Spoken description for Unicode code point U+1F4D8: "📘" BLUE BOOK -->
+     <string name="spoken_emoji_1F4D8">Blue book</string>
+     <!-- Spoken description for Unicode code point U+1F4D9: "📙" ORANGE BOOK -->
+     <string name="spoken_emoji_1F4D9">Orange book</string>
+     <!-- Spoken description for Unicode code point U+1F4DA: "📚" BOOKS -->
+     <string name="spoken_emoji_1F4DA">Books</string>
+     <!-- Spoken description for Unicode code point U+1F4DB: "📛" NAME BADGE -->
+     <string name="spoken_emoji_1F4DB">Name badge</string>
+     <!-- Spoken description for Unicode code point U+1F4DC: "📜" SCROLL -->
+     <string name="spoken_emoji_1F4DC">Scroll</string>
+     <!-- Spoken description for Unicode code point U+1F4DD: "📝" MEMO -->
+     <string name="spoken_emoji_1F4DD">Memo</string>
+     <!-- Spoken description for Unicode code point U+1F4DE: "📞" TELEPHONE RECEIVER -->
+     <string name="spoken_emoji_1F4DE">Telephone receiver</string>
+     <!-- Spoken description for Unicode code point U+1F4DF: "📟" PAGER -->
+     <string name="spoken_emoji_1F4DF">Pager</string>
+     <!-- Spoken description for Unicode code point U+1F4E0: "📠" FAX MACHINE -->
+     <string name="spoken_emoji_1F4E0">Fax machine</string>
+     <!-- Spoken description for Unicode code point U+1F4E1: "📡" SATELLITE ANTENNA -->
+     <string name="spoken_emoji_1F4E1">Satellite antenna</string>
+     <!-- Spoken description for Unicode code point U+1F4E2: "📢" PUBLIC ADDRESS LOUDSPEAKER -->
+     <string name="spoken_emoji_1F4E2">Public address loudspeaker</string>
+     <!-- Spoken description for Unicode code point U+1F4E3: "📣" CHEERING MEGAPHONE -->
+     <string name="spoken_emoji_1F4E3">Cheering megaphone</string>
+     <!-- Spoken description for Unicode code point U+1F4E4: "📤" OUTBOX TRAY -->
+     <string name="spoken_emoji_1F4E4">Outbox tray</string>
+     <!-- Spoken description for Unicode code point U+1F4E5: "📥" INBOX TRAY -->
+     <string name="spoken_emoji_1F4E5">Inbox tray</string>
+     <!-- Spoken description for Unicode code point U+1F4E6: "📦" PACKAGE -->
+     <string name="spoken_emoji_1F4E6">Package</string>
+     <!-- Spoken description for Unicode code point U+1F4E7: "📧" E-MAIL SYMBOL -->
+     <string name="spoken_emoji_1F4E7">E-mail symbol</string>
+     <!-- Spoken description for Unicode code point U+1F4E8: "📨" INCOMING ENVELOPE -->
+     <string name="spoken_emoji_1F4E8">Incoming envelope</string>
+     <!-- Spoken description for Unicode code point U+1F4E9: "📩" ENVELOPE WITH DOWNWARDS ARROW ABOVE -->
+     <string name="spoken_emoji_1F4E9">Envelope with downwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F4EA: "📪" CLOSED MAILBOX WITH LOWERED FLAG -->
+     <string name="spoken_emoji_1F4EA">Closed mailbox with lowered flag</string>
+     <!-- Spoken description for Unicode code point U+1F4EB: "📫" CLOSED MAILBOX WITH RAISED FLAG -->
+     <string name="spoken_emoji_1F4EB">Closed mailbox with raised flag</string>
+     <!-- Spoken description for Unicode code point U+1F4EC: "📬" OPEN MAILBOX WITH RAISED FLAG -->
+     <string name="spoken_emoji_1F4EC">Open mailbox with raised flag</string>
+     <!-- Spoken description for Unicode code point U+1F4ED: "📭" OPEN MAILBOX WITH LOWERED FLAG -->
+     <string name="spoken_emoji_1F4ED">Open mailbox with lowered flag</string>
+     <!-- Spoken description for Unicode code point U+1F4EE: "📮" POSTBOX -->
+     <string name="spoken_emoji_1F4EE">Postbox</string>
+     <!-- Spoken description for Unicode code point U+1F4EF: "📯" POSTAL HORN -->
+     <string name="spoken_emoji_1F4EF">Postal horn</string>
+     <!-- Spoken description for Unicode code point U+1F4F0: "📰" NEWSPAPER -->
+     <string name="spoken_emoji_1F4F0">Newspaper</string>
+     <!-- Spoken description for Unicode code point U+1F4F1: "📱" MOBILE PHONE -->
+     <string name="spoken_emoji_1F4F1">Mobile phone</string>
+     <!-- Spoken description for Unicode code point U+1F4F2: "📲" MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT -->
+     <string name="spoken_emoji_1F4F2">Mobile phone with rightwards arrow at left</string>
+     <!-- Spoken description for Unicode code point U+1F4F3: "📳" VIBRATION MODE -->
+     <string name="spoken_emoji_1F4F3">Vibration mode</string>
+     <!-- Spoken description for Unicode code point U+1F4F4: "📴" MOBILE PHONE OFF -->
+     <string name="spoken_emoji_1F4F4">Mobile phone off</string>
+     <!-- Spoken description for Unicode code point U+1F4F5: "📵" NO MOBILE PHONES -->
+     <string name="spoken_emoji_1F4F5">No mobile phones</string>
+     <!-- Spoken description for Unicode code point U+1F4F6: "📶" ANTENNA WITH BARS -->
+     <string name="spoken_emoji_1F4F6">Antenna with bars</string>
+     <!-- Spoken description for Unicode code point U+1F4F7: "📷" CAMERA -->
+     <string name="spoken_emoji_1F4F7">Camera</string>
+     <!-- Spoken description for Unicode code point U+1F4F9: "📹" VIDEO CAMERA -->
+     <string name="spoken_emoji_1F4F9">Video camera</string>
+     <!-- Spoken description for Unicode code point U+1F4FA: "📺" TELEVISION -->
+     <string name="spoken_emoji_1F4FA">Television</string>
+     <!-- Spoken description for Unicode code point U+1F4FB: "📻" RADIO -->
+     <string name="spoken_emoji_1F4FB">Radio</string>
+     <!-- Spoken description for Unicode code point U+1F4FC: "📼" VIDEOCASSETTE -->
+     <string name="spoken_emoji_1F4FC">Videocassette</string>
+     <!-- Spoken description for Unicode code point U+1F500: "🔀" TWISTED RIGHTWARDS ARROWS -->
+     <string name="spoken_emoji_1F500">Twisted rightwards arrows</string>
+     <!-- Spoken description for Unicode code point U+1F501: "🔁" CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS -->
+     <string name="spoken_emoji_1F501">Clockwise rightwards and leftwards open circle arrows</string>
+     <!-- Spoken description for Unicode code point U+1F502: "🔂" CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY -->
+     <string name="spoken_emoji_1F502">Clockwise rightwards and leftwards open circle arrows with circled one overlay</string>
+     <!-- Spoken description for Unicode code point U+1F503: "🔃" CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -->
+     <string name="spoken_emoji_1F503">Clockwise downwards and upwards open circle arrows</string>
+     <!-- Spoken description for Unicode code point U+1F504: "🔄" ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS -->
+     <string name="spoken_emoji_1F504">Anticlockwise downwards and upwards open circle arrows</string>
+     <!-- Spoken description for Unicode code point U+1F505: "🔅" LOW BRIGHTNESS SYMBOL -->
+     <string name="spoken_emoji_1F505">Low brightness symbol</string>
+     <!-- Spoken description for Unicode code point U+1F506: "🔆" HIGH BRIGHTNESS SYMBOL -->
+     <string name="spoken_emoji_1F506">High brightness symbol</string>
+     <!-- Spoken description for Unicode code point U+1F507: "🔇" SPEAKER WITH CANCELLATION STROKE -->
+     <string name="spoken_emoji_1F507">Speaker with cancellation stroke</string>
+     <!-- Spoken description for Unicode code point U+1F508: "🔈" SPEAKER -->
+     <string name="spoken_emoji_1F508">Speaker</string>
+     <!-- Spoken description for Unicode code point U+1F509: "🔉" SPEAKER WITH ONE SOUND WAVE -->
+     <string name="spoken_emoji_1F509">Speaker with one sound wave</string>
+     <!-- Spoken description for Unicode code point U+1F50A: "🔊" SPEAKER WITH THREE SOUND WAVES -->
+     <string name="spoken_emoji_1F50A">Speaker with three sound waves</string>
+     <!-- Spoken description for Unicode code point U+1F50B: "🔋" BATTERY -->
+     <string name="spoken_emoji_1F50B">Battery</string>
+     <!-- Spoken description for Unicode code point U+1F50C: "🔌" ELECTRIC PLUG -->
+     <string name="spoken_emoji_1F50C">Electric plug</string>
+     <!-- Spoken description for Unicode code point U+1F50D: "🔍" LEFT-POINTING MAGNIFYING GLASS -->
+     <string name="spoken_emoji_1F50D">Left-pointing magnifying glass</string>
+     <!-- Spoken description for Unicode code point U+1F50E: "🔎" RIGHT-POINTING MAGNIFYING GLASS -->
+     <string name="spoken_emoji_1F50E">Right-pointing magnifying glass</string>
+     <!-- Spoken description for Unicode code point U+1F50F: "🔏" LOCK WITH INK PEN -->
+     <string name="spoken_emoji_1F50F">Lock with ink pen</string>
+     <!-- Spoken description for Unicode code point U+1F510: "🔐" CLOSED LOCK WITH KEY -->
+     <string name="spoken_emoji_1F510">Closed lock with key</string>
+     <!-- Spoken description for Unicode code point U+1F511: "🔑" KEY -->
+     <string name="spoken_emoji_1F511">Key</string>
+     <!-- Spoken description for Unicode code point U+1F512: "🔒" LOCK -->
+     <string name="spoken_emoji_1F512">Lock</string>
+     <!-- Spoken description for Unicode code point U+1F513: "🔓" OPEN LOCK -->
+     <string name="spoken_emoji_1F513">Open lock</string>
+     <!-- Spoken description for Unicode code point U+1F514: "🔔" BELL -->
+     <string name="spoken_emoji_1F514">Bell</string>
+     <!-- Spoken description for Unicode code point U+1F515: "🔕" BELL WITH CANCELLATION STROKE -->
+     <string name="spoken_emoji_1F515">Bell with cancellation stroke</string>
+     <!-- Spoken description for Unicode code point U+1F516: "🔖" BOOKMARK -->
+     <string name="spoken_emoji_1F516">Bookmark</string>
+     <!-- Spoken description for Unicode code point U+1F517: "🔗" LINK SYMBOL -->
+     <string name="spoken_emoji_1F517">Link symbol</string>
+     <!-- Spoken description for Unicode code point U+1F518: "🔘" RADIO BUTTON -->
+     <string name="spoken_emoji_1F518">Radio button</string>
+     <!-- Spoken description for Unicode code point U+1F519: "🔙" BACK WITH LEFTWARDS ARROW ABOVE -->
+     <string name="spoken_emoji_1F519">Back with leftwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51A: "🔚" END WITH LEFTWARDS ARROW ABOVE -->
+     <string name="spoken_emoji_1F51A">End with leftwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51B: "🔛" ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE -->
+     <string name="spoken_emoji_1F51B">On with exclamation mark with left right arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51C: "🔜" SOON WITH RIGHTWARDS ARROW ABOVE -->
+     <string name="spoken_emoji_1F51C">Soon with rightwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51D: "🔝" TOP WITH UPWARDS ARROW ABOVE -->
+     <string name="spoken_emoji_1F51D">Top with upwards arrow above</string>
+     <!-- Spoken description for Unicode code point U+1F51E: "🔞" NO ONE UNDER EIGHTEEN SYMBOL -->
+     <string name="spoken_emoji_1F51E">No one under eighteen symbol</string>
+     <!-- Spoken description for Unicode code point U+1F51F: "🔟" KEYCAP TEN -->
+     <string name="spoken_emoji_1F51F">Keycap ten</string>
+     <!-- Spoken description for Unicode code point U+1F520: "🔠" INPUT SYMBOL FOR LATIN CAPITAL LETTERS -->
+     <string name="spoken_emoji_1F520">Input symbol for latin capital letters</string>
+     <!-- Spoken description for Unicode code point U+1F521: "🔡" INPUT SYMBOL FOR LATIN SMALL LETTERS -->
+     <string name="spoken_emoji_1F521">Input symbol for latin small letters</string>
+     <!-- Spoken description for Unicode code point U+1F522: "🔢" INPUT SYMBOL FOR NUMBERS -->
+     <string name="spoken_emoji_1F522">Input symbol for numbers</string>
+     <!-- Spoken description for Unicode code point U+1F523: "🔣" INPUT SYMBOL FOR SYMBOLS -->
+     <string name="spoken_emoji_1F523">Input symbol for symbols</string>
+     <!-- Spoken description for Unicode code point U+1F524: "🔤" INPUT SYMBOL FOR LATIN LETTERS -->
+     <string name="spoken_emoji_1F524">Input symbol for latin letters</string>
+     <!-- Spoken description for Unicode code point U+1F525: "🔥" FIRE -->
+     <string name="spoken_emoji_1F525">Fire</string>
+     <!-- Spoken description for Unicode code point U+1F526: "🔦" ELECTRIC TORCH -->
+     <string name="spoken_emoji_1F526">Electric torch</string>
+     <!-- Spoken description for Unicode code point U+1F527: "🔧" WRENCH -->
+     <string name="spoken_emoji_1F527">Wrench</string>
+     <!-- Spoken description for Unicode code point U+1F528: "🔨" HAMMER -->
+     <string name="spoken_emoji_1F528">Hammer</string>
+     <!-- Spoken description for Unicode code point U+1F529: "🔩" NUT AND BOLT -->
+     <string name="spoken_emoji_1F529">Nut and bolt</string>
+     <!-- Spoken description for Unicode code point U+1F52A: "🔪" HOCHO -->
+     <string name="spoken_emoji_1F52A">Hocho</string>
+     <!-- Spoken description for Unicode code point U+1F52B: "🔫" PISTOL -->
+     <string name="spoken_emoji_1F52B">Pistol</string>
+     <!-- Spoken description for Unicode code point U+1F52C: "🔬" MICROSCOPE -->
+     <string name="spoken_emoji_1F52C">Microscope</string>
+     <!-- Spoken description for Unicode code point U+1F52D: "🔭" TELESCOPE -->
+     <string name="spoken_emoji_1F52D">Telescope</string>
+     <!-- Spoken description for Unicode code point U+1F52E: "🔮" CRYSTAL BALL -->
+     <string name="spoken_emoji_1F52E">Crystal ball</string>
+     <!-- Spoken description for Unicode code point U+1F52F: "🔯" SIX POINTED STAR WITH MIDDLE DOT -->
+     <string name="spoken_emoji_1F52F">Six pointed star with middle dot</string>
+     <!-- Spoken description for Unicode code point U+1F530: "🔰" JAPANESE SYMBOL FOR BEGINNER -->
+     <string name="spoken_emoji_1F530">Japanese symbol for beginner</string>
+     <!-- Spoken description for Unicode code point U+1F531: "🔱" TRIDENT EMBLEM -->
+     <string name="spoken_emoji_1F531">Trident emblem</string>
+     <!-- Spoken description for Unicode code point U+1F532: "🔲" BLACK SQUARE BUTTON -->
+     <string name="spoken_emoji_1F532">Black square button</string>
+     <!-- Spoken description for Unicode code point U+1F533: "🔳" WHITE SQUARE BUTTON -->
+     <string name="spoken_emoji_1F533">White square button</string>
+     <!-- Spoken description for Unicode code point U+1F534: "🔴" LARGE RED CIRCLE -->
+     <string name="spoken_emoji_1F534">Large red circle</string>
+     <!-- Spoken description for Unicode code point U+1F535: "🔵" LARGE BLUE CIRCLE -->
+     <string name="spoken_emoji_1F535">Large blue circle</string>
+     <!-- Spoken description for Unicode code point U+1F536: "🔶" LARGE ORANGE DIAMOND -->
+     <string name="spoken_emoji_1F536">Large orange diamond</string>
+     <!-- Spoken description for Unicode code point U+1F537: "🔷" LARGE BLUE DIAMOND -->
+     <string name="spoken_emoji_1F537">Large blue diamond</string>
+     <!-- Spoken description for Unicode code point U+1F538: "🔸" SMALL ORANGE DIAMOND -->
+     <string name="spoken_emoji_1F538">Small orange diamond</string>
+     <!-- Spoken description for Unicode code point U+1F539: "🔹" SMALL BLUE DIAMOND -->
+     <string name="spoken_emoji_1F539">Small blue diamond</string>
+     <!-- Spoken description for Unicode code point U+1F53A: "🔺" UP-POINTING RED TRIANGLE -->
+     <string name="spoken_emoji_1F53A">Up-pointing red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F53B: "🔻" DOWN-POINTING RED TRIANGLE -->
+     <string name="spoken_emoji_1F53B">Down-pointing red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F53C: "🔼" UP-POINTING SMALL RED TRIANGLE -->
+     <string name="spoken_emoji_1F53C">Up-pointing small red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F53D: "🔽" DOWN-POINTING SMALL RED TRIANGLE -->
+     <string name="spoken_emoji_1F53D">Down-pointing small red triangle</string>
+     <!-- Spoken description for Unicode code point U+1F550: "🕐" CLOCK FACE ONE OCLOCK -->
+     <string name="spoken_emoji_1F550">Clock face one oclock</string>
+     <!-- Spoken description for Unicode code point U+1F551: "🕑" CLOCK FACE TWO OCLOCK -->
+     <string name="spoken_emoji_1F551">Clock face two oclock</string>
+     <!-- Spoken description for Unicode code point U+1F552: "🕒" CLOCK FACE THREE OCLOCK -->
+     <string name="spoken_emoji_1F552">Clock face three oclock</string>
+     <!-- Spoken description for Unicode code point U+1F553: "🕓" CLOCK FACE FOUR OCLOCK -->
+     <string name="spoken_emoji_1F553">Clock face four oclock</string>
+     <!-- Spoken description for Unicode code point U+1F554: "🕔" CLOCK FACE FIVE OCLOCK -->
+     <string name="spoken_emoji_1F554">Clock face five oclock</string>
+     <!-- Spoken description for Unicode code point U+1F555: "🕕" CLOCK FACE SIX OCLOCK -->
+     <string name="spoken_emoji_1F555">Clock face six oclock</string>
+     <!-- Spoken description for Unicode code point U+1F556: "🕖" CLOCK FACE SEVEN OCLOCK -->
+     <string name="spoken_emoji_1F556">Clock face seven oclock</string>
+     <!-- Spoken description for Unicode code point U+1F557: "🕗" CLOCK FACE EIGHT OCLOCK -->
+     <string name="spoken_emoji_1F557">Clock face eight oclock</string>
+     <!-- Spoken description for Unicode code point U+1F558: "🕘" CLOCK FACE NINE OCLOCK -->
+     <string name="spoken_emoji_1F558">Clock face nine oclock</string>
+     <!-- Spoken description for Unicode code point U+1F559: "🕙" CLOCK FACE TEN OCLOCK -->
+     <string name="spoken_emoji_1F559">Clock face ten oclock</string>
+     <!-- Spoken description for Unicode code point U+1F55A: "🕚" CLOCK FACE ELEVEN OCLOCK -->
+     <string name="spoken_emoji_1F55A">Clock face eleven oclock</string>
+     <!-- Spoken description for Unicode code point U+1F55B: "🕛" CLOCK FACE TWELVE OCLOCK -->
+     <string name="spoken_emoji_1F55B">Clock face twelve oclock</string>
+     <!-- Spoken description for Unicode code point U+1F55C: "🕜" CLOCK FACE ONE-THIRTY -->
+     <string name="spoken_emoji_1F55C">Clock face one-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F55D: "🕝" CLOCK FACE TWO-THIRTY -->
+     <string name="spoken_emoji_1F55D">Clock face two-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F55E: "🕞" CLOCK FACE THREE-THIRTY -->
+     <string name="spoken_emoji_1F55E">Clock face three-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F55F: "🕟" CLOCK FACE FOUR-THIRTY -->
+     <string name="spoken_emoji_1F55F">Clock face four-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F560: "🕠" CLOCK FACE FIVE-THIRTY -->
+     <string name="spoken_emoji_1F560">Clock face five-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F561: "🕡" CLOCK FACE SIX-THIRTY -->
+     <string name="spoken_emoji_1F561">Clock face six-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F562: "🕢" CLOCK FACE SEVEN-THIRTY -->
+     <string name="spoken_emoji_1F562">Clock face seven-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F563: "🕣" CLOCK FACE EIGHT-THIRTY -->
+     <string name="spoken_emoji_1F563">Clock face eight-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F564: "🕤" CLOCK FACE NINE-THIRTY -->
+     <string name="spoken_emoji_1F564">Clock face nine-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F565: "🕥" CLOCK FACE TEN-THIRTY -->
+     <string name="spoken_emoji_1F565">Clock face ten-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F566: "🕦" CLOCK FACE ELEVEN-THIRTY -->
+     <string name="spoken_emoji_1F566">Clock face eleven-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F567: "🕧" CLOCK FACE TWELVE-THIRTY -->
+     <string name="spoken_emoji_1F567">Clock face twelve-thirty</string>
+     <!-- Spoken description for Unicode code point U+1F5FB: "🗻" MOUNT FUJI -->
+     <string name="spoken_emoji_1F5FB">Mount fuji</string>
+     <!-- Spoken description for Unicode code point U+1F5FC: "🗼" TOKYO TOWER -->
+     <string name="spoken_emoji_1F5FC">Tokyo tower</string>
+     <!-- Spoken description for Unicode code point U+1F5FD: "🗽" STATUE OF LIBERTY -->
+     <string name="spoken_emoji_1F5FD">Statue of liberty</string>
+     <!-- Spoken description for Unicode code point U+1F5FE: "🗾" SILHOUETTE OF JAPAN -->
+     <string name="spoken_emoji_1F5FE">Silhouette of japan</string>
+     <!-- Spoken description for Unicode code point U+1F5FF: "🗿" MOYAI -->
+     <string name="spoken_emoji_1F5FF">Moyai</string>
+     <!-- Spoken description for Unicode code point U+1F600: "😀" GRINNING FACE -->
+     <string name="spoken_emoji_1F600">Grinning face</string>
+     <!-- Spoken description for Unicode code point U+1F601: "😁" GRINNING FACE WITH SMILING EYES -->
+     <string name="spoken_emoji_1F601">Grinning face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F602: "😂" FACE WITH TEARS OF JOY -->
+     <string name="spoken_emoji_1F602">Face with tears of joy</string>
+     <!-- Spoken description for Unicode code point U+1F603: "😃" SMILING FACE WITH OPEN MOUTH -->
+     <string name="spoken_emoji_1F603">Smiling face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F604: "😄" SMILING FACE WITH OPEN MOUTH AND SMILING EYES -->
+     <string name="spoken_emoji_1F604">Smiling face with open mouth and smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F605: "😅" SMILING FACE WITH OPEN MOUTH AND COLD SWEAT -->
+     <string name="spoken_emoji_1F605">Smiling face with open mouth and cold sweat</string>
+     <!-- Spoken description for Unicode code point U+1F606: "😆" SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES -->
+     <string name="spoken_emoji_1F606">Smiling face with open mouth and tightly-closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F607: "😇" SMILING FACE WITH HALO -->
+     <string name="spoken_emoji_1F607">Smiling face with halo</string>
+     <!-- Spoken description for Unicode code point U+1F608: "😈" SMILING FACE WITH HORNS -->
+     <string name="spoken_emoji_1F608">Smiling face with horns</string>
+     <!-- Spoken description for Unicode code point U+1F609: "😉" WINKING FACE -->
+     <string name="spoken_emoji_1F609">Winking face</string>
+     <!-- Spoken description for Unicode code point U+1F60A: "😊" SMILING FACE WITH SMILING EYES -->
+     <string name="spoken_emoji_1F60A">Smiling face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F60B: "😋" FACE SAVOURING DELICIOUS FOOD -->
+     <string name="spoken_emoji_1F60B">Face savouring delicious food</string>
+     <!-- Spoken description for Unicode code point U+1F60C: "😌" RELIEVED FACE -->
+     <string name="spoken_emoji_1F60C">Relieved face</string>
+     <!-- Spoken description for Unicode code point U+1F60D: "😍" SMILING FACE WITH HEART-SHAPED EYES -->
+     <string name="spoken_emoji_1F60D">Smiling face with heart-shaped eyes</string>
+     <!-- Spoken description for Unicode code point U+1F60E: "😎" SMILING FACE WITH SUNGLASSES -->
+     <string name="spoken_emoji_1F60E">Smiling face with sunglasses</string>
+     <!-- Spoken description for Unicode code point U+1F60F: "😏" SMIRKING FACE -->
+     <string name="spoken_emoji_1F60F">Smirking face</string>
+     <!-- Spoken description for Unicode code point U+1F610: "😐" NEUTRAL FACE -->
+     <string name="spoken_emoji_1F610">Neutral face</string>
+     <!-- Spoken description for Unicode code point U+1F611: "😑" EXPRESSIONLESS FACE -->
+     <string name="spoken_emoji_1F611">Expressionless face</string>
+     <!-- Spoken description for Unicode code point U+1F612: "😒" UNAMUSED FACE -->
+     <string name="spoken_emoji_1F612">Unamused face</string>
+     <!-- Spoken description for Unicode code point U+1F613: "😓" FACE WITH COLD SWEAT -->
+     <string name="spoken_emoji_1F613">Face with cold sweat</string>
+     <!-- Spoken description for Unicode code point U+1F614: "😔" PENSIVE FACE -->
+     <string name="spoken_emoji_1F614">Pensive face</string>
+     <!-- Spoken description for Unicode code point U+1F615: "😕" CONFUSED FACE -->
+     <string name="spoken_emoji_1F615">Confused face</string>
+     <!-- Spoken description for Unicode code point U+1F616: "😖" CONFOUNDED FACE -->
+     <string name="spoken_emoji_1F616">Confounded face</string>
+     <!-- Spoken description for Unicode code point U+1F617: "😗" KISSING FACE -->
+     <string name="spoken_emoji_1F617">Kissing face</string>
+     <!-- Spoken description for Unicode code point U+1F618: "😘" FACE THROWING A KISS -->
+     <string name="spoken_emoji_1F618">Face throwing a kiss</string>
+     <!-- Spoken description for Unicode code point U+1F619: "😙" KISSING FACE WITH SMILING EYES -->
+     <string name="spoken_emoji_1F619">Kissing face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F61A: "😚" KISSING FACE WITH CLOSED EYES -->
+     <string name="spoken_emoji_1F61A">Kissing face with closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F61B: "😛" FACE WITH STUCK-OUT TONGUE -->
+     <string name="spoken_emoji_1F61B">Face with stuck-out tongue</string>
+     <!-- Spoken description for Unicode code point U+1F61C: "😜" FACE WITH STUCK-OUT TONGUE AND WINKING EYE -->
+     <string name="spoken_emoji_1F61C">Face with stuck-out tongue and winking eye</string>
+     <!-- Spoken description for Unicode code point U+1F61D: "😝" FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES -->
+     <string name="spoken_emoji_1F61D">Face with stuck-out tongue and tightly-closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F61E: "😞" DISAPPOINTED FACE -->
+     <string name="spoken_emoji_1F61E">Disappointed face</string>
+     <!-- Spoken description for Unicode code point U+1F61F: "😟" WORRIED FACE -->
+     <string name="spoken_emoji_1F61F">Worried face</string>
+     <!-- Spoken description for Unicode code point U+1F620: "😠" ANGRY FACE -->
+     <string name="spoken_emoji_1F620">Angry face</string>
+     <!-- Spoken description for Unicode code point U+1F621: "😡" POUTING FACE -->
+     <string name="spoken_emoji_1F621">Pouting face</string>
+     <!-- Spoken description for Unicode code point U+1F622: "😢" CRYING FACE -->
+     <string name="spoken_emoji_1F622">Crying face</string>
+     <!-- Spoken description for Unicode code point U+1F623: "😣" PERSEVERING FACE -->
+     <string name="spoken_emoji_1F623">Persevering face</string>
+     <!-- Spoken description for Unicode code point U+1F624: "😤" FACE WITH LOOK OF TRIUMPH -->
+     <string name="spoken_emoji_1F624">Face with look of triumph</string>
+     <!-- Spoken description for Unicode code point U+1F625: "😥" DISAPPOINTED BUT RELIEVED FACE -->
+     <string name="spoken_emoji_1F625">Disappointed but relieved face</string>
+     <!-- Spoken description for Unicode code point U+1F626: "😦" FROWNING FACE WITH OPEN MOUTH -->
+     <string name="spoken_emoji_1F626">Frowning face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F627: "😧" ANGUISHED FACE -->
+     <string name="spoken_emoji_1F627">Anguished face</string>
+     <!-- Spoken description for Unicode code point U+1F628: "😨" FEARFUL FACE -->
+     <string name="spoken_emoji_1F628">Fearful face</string>
+     <!-- Spoken description for Unicode code point U+1F629: "😩" WEARY FACE -->
+     <string name="spoken_emoji_1F629">Weary face</string>
+     <!-- Spoken description for Unicode code point U+1F62A: "😪" SLEEPY FACE -->
+     <string name="spoken_emoji_1F62A">Sleepy face</string>
+     <!-- Spoken description for Unicode code point U+1F62B: "😫" TIRED FACE -->
+     <string name="spoken_emoji_1F62B">Tired face</string>
+     <!-- Spoken description for Unicode code point U+1F62C: "😬" GRIMACING FACE -->
+     <string name="spoken_emoji_1F62C">Grimacing face</string>
+     <!-- Spoken description for Unicode code point U+1F62D: "😭" LOUDLY CRYING FACE -->
+     <string name="spoken_emoji_1F62D">Loudly crying face</string>
+     <!-- Spoken description for Unicode code point U+1F62E: "😮" FACE WITH OPEN MOUTH -->
+     <string name="spoken_emoji_1F62E">Face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F62F: "😯" HUSHED FACE -->
+     <string name="spoken_emoji_1F62F">Hushed face</string>
+     <!-- Spoken description for Unicode code point U+1F630: "😰" FACE WITH OPEN MOUTH AND COLD SWEAT -->
+     <string name="spoken_emoji_1F630">Face with open mouth and cold sweat</string>
+     <!-- Spoken description for Unicode code point U+1F631: "😱" FACE SCREAMING IN FEAR -->
+     <string name="spoken_emoji_1F631">Face screaming in fear</string>
+     <!-- Spoken description for Unicode code point U+1F632: "😲" ASTONISHED FACE -->
+     <string name="spoken_emoji_1F632">Astonished face</string>
+     <!-- Spoken description for Unicode code point U+1F633: "😳" FLUSHED FACE -->
+     <string name="spoken_emoji_1F633">Flushed face</string>
+     <!-- Spoken description for Unicode code point U+1F634: "😴" SLEEPING FACE -->
+     <string name="spoken_emoji_1F634">Sleeping face</string>
+     <!-- Spoken description for Unicode code point U+1F635: "😵" DIZZY FACE -->
+     <string name="spoken_emoji_1F635">Dizzy face</string>
+     <!-- Spoken description for Unicode code point U+1F636: "😶" FACE WITHOUT MOUTH -->
+     <string name="spoken_emoji_1F636">Face without mouth</string>
+     <!-- Spoken description for Unicode code point U+1F637: "😷" FACE WITH MEDICAL MASK -->
+     <string name="spoken_emoji_1F637">Face with medical mask</string>
+     <!-- Spoken description for Unicode code point U+1F638: "😸" GRINNING CAT FACE WITH SMILING EYES -->
+     <string name="spoken_emoji_1F638">Grinning cat face with smiling eyes</string>
+     <!-- Spoken description for Unicode code point U+1F639: "😹" CAT FACE WITH TEARS OF JOY -->
+     <string name="spoken_emoji_1F639">Cat face with tears of joy</string>
+     <!-- Spoken description for Unicode code point U+1F63A: "😺" SMILING CAT FACE WITH OPEN MOUTH -->
+     <string name="spoken_emoji_1F63A">Smiling cat face with open mouth</string>
+     <!-- Spoken description for Unicode code point U+1F63B: "😻" SMILING CAT FACE WITH HEART-SHAPED EYES -->
+     <string name="spoken_emoji_1F63B">Smiling cat face with heart-shaped eyes</string>
+     <!-- Spoken description for Unicode code point U+1F63C: "😼" CAT FACE WITH WRY SMILE -->
+     <string name="spoken_emoji_1F63C">Cat face with wry smile</string>
+     <!-- Spoken description for Unicode code point U+1F63D: "😽" KISSING CAT FACE WITH CLOSED EYES -->
+     <string name="spoken_emoji_1F63D">Kissing cat face with closed eyes</string>
+     <!-- Spoken description for Unicode code point U+1F63E: "😾" POUTING CAT FACE -->
+     <string name="spoken_emoji_1F63E">Pouting cat face</string>
+     <!-- Spoken description for Unicode code point U+1F63F: "😿" CRYING CAT FACE -->
+     <string name="spoken_emoji_1F63F">Crying cat face</string>
+     <!-- Spoken description for Unicode code point U+1F640: "🙀" WEARY CAT FACE -->
+     <string name="spoken_emoji_1F640">Weary cat face</string>
+     <!-- Spoken description for Unicode code point U+1F645: "🙅" FACE WITH NO GOOD GESTURE -->
+     <string name="spoken_emoji_1F645">Face with no good gesture</string>
+     <!-- Spoken description for Unicode code point U+1F646: "🙆" FACE WITH OK GESTURE -->
+     <string name="spoken_emoji_1F646">Face with ok gesture</string>
+     <!-- Spoken description for Unicode code point U+1F647: "🙇" PERSON BOWING DEEPLY -->
+     <string name="spoken_emoji_1F647">Person bowing deeply</string>
+     <!-- Spoken description for Unicode code point U+1F648: "🙈" SEE-NO-EVIL MONKEY -->
+     <string name="spoken_emoji_1F648">See-no-evil monkey</string>
+     <!-- Spoken description for Unicode code point U+1F649: "🙉" HEAR-NO-EVIL MONKEY -->
+     <string name="spoken_emoji_1F649">Hear-no-evil monkey</string>
+     <!-- Spoken description for Unicode code point U+1F64A: "🙊" SPEAK-NO-EVIL MONKEY -->
+     <string name="spoken_emoji_1F64A">Speak-no-evil monkey</string>
+     <!-- Spoken description for Unicode code point U+1F64B: "🙋" HAPPY PERSON RAISING ONE HAND -->
+     <string name="spoken_emoji_1F64B">Happy person raising one hand</string>
+     <!-- Spoken description for Unicode code point U+1F64C: "🙌" PERSON RAISING BOTH HANDS IN CELEBRATION -->
+     <string name="spoken_emoji_1F64C">Person raising both hands in celebration</string>
+     <!-- Spoken description for Unicode code point U+1F64D: "🙍" PERSON FROWNING -->
+     <string name="spoken_emoji_1F64D">Person frowning</string>
+     <!-- Spoken description for Unicode code point U+1F64E: "🙎" PERSON WITH POUTING FACE -->
+     <string name="spoken_emoji_1F64E">Person with pouting face</string>
+     <!-- Spoken description for Unicode code point U+1F64F: "🙏" PERSON WITH FOLDED HANDS -->
+     <string name="spoken_emoji_1F64F">Person with folded hands</string>
+     <!-- Spoken description for Unicode code point U+1F680: "🚀" ROCKET -->
+     <string name="spoken_emoji_1F680">Rocket</string>
+     <!-- Spoken description for Unicode code point U+1F681: "🚁" HELICOPTER -->
+     <string name="spoken_emoji_1F681">Helicopter</string>
+     <!-- Spoken description for Unicode code point U+1F682: "🚂" STEAM LOCOMOTIVE -->
+     <string name="spoken_emoji_1F682">Steam locomotive</string>
+     <!-- Spoken description for Unicode code point U+1F683: "🚃" RAILWAY CAR -->
+     <string name="spoken_emoji_1F683">Railway car</string>
+     <!-- Spoken description for Unicode code point U+1F684: "🚄" HIGH-SPEED TRAIN -->
+     <string name="spoken_emoji_1F684">High-speed train</string>
+     <!-- Spoken description for Unicode code point U+1F685: "🚅" HIGH-SPEED TRAIN WITH BULLET NOSE -->
+     <string name="spoken_emoji_1F685">High-speed train with bullet nose</string>
+     <!-- Spoken description for Unicode code point U+1F686: "🚆" TRAIN -->
+     <string name="spoken_emoji_1F686">Train</string>
+     <!-- Spoken description for Unicode code point U+1F687: "🚇" METRO -->
+     <string name="spoken_emoji_1F687">Metro</string>
+     <!-- Spoken description for Unicode code point U+1F688: "🚈" LIGHT RAIL -->
+     <string name="spoken_emoji_1F688">Light rail</string>
+     <!-- Spoken description for Unicode code point U+1F689: "🚉" STATION -->
+     <string name="spoken_emoji_1F689">Station</string>
+     <!-- Spoken description for Unicode code point U+1F68A: "🚊" TRAM -->
+     <string name="spoken_emoji_1F68A">Tram</string>
+     <!-- Spoken description for Unicode code point U+1F68B: "🚋" TRAM CAR -->
+     <string name="spoken_emoji_1F68B">Tram car</string>
+     <!-- Spoken description for Unicode code point U+1F68C: "🚌" BUS -->
+     <string name="spoken_emoji_1F68C">Bus</string>
+     <!-- Spoken description for Unicode code point U+1F68D: "🚍" ONCOMING BUS -->
+     <string name="spoken_emoji_1F68D">Oncoming bus</string>
+     <!-- Spoken description for Unicode code point U+1F68E: "🚎" TROLLEYBUS -->
+     <string name="spoken_emoji_1F68E">Trolleybus</string>
+     <!-- Spoken description for Unicode code point U+1F68F: "🚏" BUS STOP -->
+     <string name="spoken_emoji_1F68F">Bus stop</string>
+     <!-- Spoken description for Unicode code point U+1F690: "🚐" MINIBUS -->
+     <string name="spoken_emoji_1F690">Minibus</string>
+     <!-- Spoken description for Unicode code point U+1F691: "🚑" AMBULANCE -->
+     <string name="spoken_emoji_1F691">Ambulance</string>
+     <!-- Spoken description for Unicode code point U+1F692: "🚒" FIRE ENGINE -->
+     <string name="spoken_emoji_1F692">Fire engine</string>
+     <!-- Spoken description for Unicode code point U+1F693: "🚓" POLICE CAR -->
+     <string name="spoken_emoji_1F693">Police car</string>
+     <!-- Spoken description for Unicode code point U+1F694: "🚔" ONCOMING POLICE CAR -->
+     <string name="spoken_emoji_1F694">Oncoming police car</string>
+     <!-- Spoken description for Unicode code point U+1F695: "🚕" TAXI -->
+     <string name="spoken_emoji_1F695">Taxi</string>
+     <!-- Spoken description for Unicode code point U+1F696: "🚖" ONCOMING TAXI -->
+     <string name="spoken_emoji_1F696">Oncoming taxi</string>
+     <!-- Spoken description for Unicode code point U+1F697: "🚗" AUTOMOBILE -->
+     <string name="spoken_emoji_1F697">Automobile</string>
+     <!-- Spoken description for Unicode code point U+1F698: "🚘" ONCOMING AUTOMOBILE -->
+     <string name="spoken_emoji_1F698">Oncoming automobile</string>
+     <!-- Spoken description for Unicode code point U+1F699: "🚙" RECREATIONAL VEHICLE -->
+     <string name="spoken_emoji_1F699">Recreational vehicle</string>
+     <!-- Spoken description for Unicode code point U+1F69A: "🚚" DELIVERY TRUCK -->
+     <string name="spoken_emoji_1F69A">Delivery truck</string>
+     <!-- Spoken description for Unicode code point U+1F69B: "🚛" ARTICULATED LORRY -->
+     <string name="spoken_emoji_1F69B">Articulated lorry</string>
+     <!-- Spoken description for Unicode code point U+1F69C: "🚜" TRACTOR -->
+     <string name="spoken_emoji_1F69C">Tractor</string>
+     <!-- Spoken description for Unicode code point U+1F69D: "🚝" MONORAIL -->
+     <string name="spoken_emoji_1F69D">Monorail</string>
+     <!-- Spoken description for Unicode code point U+1F69E: "🚞" MOUNTAIN RAILWAY -->
+     <string name="spoken_emoji_1F69E">Mountain railway</string>
+     <!-- Spoken description for Unicode code point U+1F69F: "🚟" SUSPENSION RAILWAY -->
+     <string name="spoken_emoji_1F69F">Suspension railway</string>
+     <!-- Spoken description for Unicode code point U+1F6A0: "🚠" MOUNTAIN CABLEWAY -->
+     <string name="spoken_emoji_1F6A0">Mountain cableway</string>
+     <!-- Spoken description for Unicode code point U+1F6A1: "🚡" AERIAL TRAMWAY -->
+     <string name="spoken_emoji_1F6A1">Aerial tramway</string>
+     <!-- Spoken description for Unicode code point U+1F6A2: "🚢" SHIP -->
+     <string name="spoken_emoji_1F6A2">Ship</string>
+     <!-- Spoken description for Unicode code point U+1F6A3: "🚣" ROWBOAT -->
+     <string name="spoken_emoji_1F6A3">Rowboat</string>
+     <!-- Spoken description for Unicode code point U+1F6A4: "🚤" SPEEDBOAT -->
+     <string name="spoken_emoji_1F6A4">Speedboat</string>
+     <!-- Spoken description for Unicode code point U+1F6A5: "🚥" HORIZONTAL TRAFFIC LIGHT -->
+     <string name="spoken_emoji_1F6A5">Horizontal traffic light</string>
+     <!-- Spoken description for Unicode code point U+1F6A6: "🚦" VERTICAL TRAFFIC LIGHT -->
+     <string name="spoken_emoji_1F6A6">Vertical traffic light</string>
+     <!-- Spoken description for Unicode code point U+1F6A7: "🚧" CONSTRUCTION SIGN -->
+     <string name="spoken_emoji_1F6A7">Construction sign</string>
+     <!-- Spoken description for Unicode code point U+1F6A8: "🚨" POLICE CARS REVOLVING LIGHT -->
+     <string name="spoken_emoji_1F6A8">Police cars revolving light</string>
+     <!-- Spoken description for Unicode code point U+1F6A9: "🚩" TRIANGULAR FLAG ON POST -->
+     <string name="spoken_emoji_1F6A9">Triangular flag on post</string>
+     <!-- Spoken description for Unicode code point U+1F6AA: "🚪" DOOR -->
+     <string name="spoken_emoji_1F6AA">Door</string>
+     <!-- Spoken description for Unicode code point U+1F6AB: "🚫" NO ENTRY SIGN -->
+     <string name="spoken_emoji_1F6AB">No entry sign</string>
+     <!-- Spoken description for Unicode code point U+1F6AC: "🚬" SMOKING SYMBOL -->
+     <string name="spoken_emoji_1F6AC">Smoking symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6AD: "🚭" NO SMOKING SYMBOL -->
+     <string name="spoken_emoji_1F6AD">No smoking symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6AE: "🚮" PUT LITTER IN ITS PLACE SYMBOL -->
+     <string name="spoken_emoji_1F6AE">Put litter in its place symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6AF: "🚯" DO NOT LITTER SYMBOL -->
+     <string name="spoken_emoji_1F6AF">Do not litter symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6B0: "🚰" POTABLE WATER SYMBOL -->
+     <string name="spoken_emoji_1F6B0">Potable water symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6B1: "🚱" NON-POTABLE WATER SYMBOL -->
+     <string name="spoken_emoji_1F6B1">Non-potable water symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6B2: "🚲" BICYCLE -->
+     <string name="spoken_emoji_1F6B2">Bicycle</string>
+     <!-- Spoken description for Unicode code point U+1F6B3: "🚳" NO BICYCLES -->
+     <string name="spoken_emoji_1F6B3">No bicycles</string>
+     <!-- Spoken description for Unicode code point U+1F6B4: "🚴" BICYCLIST -->
+     <string name="spoken_emoji_1F6B4">Bicyclist</string>
+     <!-- Spoken description for Unicode code point U+1F6B5: "🚵" MOUNTAIN BICYCLIST -->
+     <string name="spoken_emoji_1F6B5">Mountain bicyclist</string>
+     <!-- Spoken description for Unicode code point U+1F6B6: "🚶" PEDESTRIAN -->
+     <string name="spoken_emoji_1F6B6">Pedestrian</string>
+     <!-- Spoken description for Unicode code point U+1F6B7: "🚷" NO PEDESTRIANS -->
+     <string name="spoken_emoji_1F6B7">No pedestrians</string>
+     <!-- Spoken description for Unicode code point U+1F6B8: "🚸" CHILDREN CROSSING -->
+     <string name="spoken_emoji_1F6B8">Children crossing</string>
+     <!-- Spoken description for Unicode code point U+1F6B9: "🚹" MENS SYMBOL -->
+     <string name="spoken_emoji_1F6B9">Mens symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6BA: "🚺" WOMENS SYMBOL -->
+     <string name="spoken_emoji_1F6BA">Womens symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6BB: "🚻" RESTROOM -->
+     <string name="spoken_emoji_1F6BB">Restroom</string>
+     <!-- Spoken description for Unicode code point U+1F6BC: "🚼" BABY SYMBOL -->
+     <string name="spoken_emoji_1F6BC">Baby symbol</string>
+     <!-- Spoken description for Unicode code point U+1F6BD: "🚽" TOILET -->
+     <string name="spoken_emoji_1F6BD">Toilet</string>
+     <!-- Spoken description for Unicode code point U+1F6BE: "🚾" WATER CLOSET -->
+     <string name="spoken_emoji_1F6BE">Water closet</string>
+     <!-- Spoken description for Unicode code point U+1F6BF: "🚿" SHOWER -->
+     <string name="spoken_emoji_1F6BF">Shower</string>
+     <!-- Spoken description for Unicode code point U+1F6C0: "🛀" BATH -->
+     <string name="spoken_emoji_1F6C0">Bath</string>
+     <!-- Spoken description for Unicode code point U+1F6C1: "🛁" BATHTUB -->
+     <string name="spoken_emoji_1F6C1">Bathtub</string>
+     <!-- Spoken description for Unicode code point U+1F6C2: "🛂" PASSPORT CONTROL -->
+     <string name="spoken_emoji_1F6C2">Passport control</string>
+     <!-- Spoken description for Unicode code point U+1F6C3: "🛃" CUSTOMS -->
+     <string name="spoken_emoji_1F6C3">Customs</string>
+     <!-- Spoken description for Unicode code point U+1F6C4: "🛄" BAGGAGE CLAIM -->
+     <string name="spoken_emoji_1F6C4">Baggage claim</string>
+     <!-- Spoken description for Unicode code point U+1F6C5: "🛅" LEFT LUGGAGE -->
+     <string name="spoken_emoji_1F6C5">Left luggage</string>
+</resources>
diff --git a/java/res/values/strings-letter-descriptions.xml b/java/res/values/strings-letter-descriptions.xml
new file mode 100644
index 0000000..297b6be
--- /dev/null
+++ b/java/res/values/strings-letter-descriptions.xml
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<!--
+    These accented letters (spoken_accented_letter_*) are unsupported by TTS.
+    These symbols (spoken_symbol_*) are also unsupported by TTS.
+    TODO: Remove these string resources when TTS/TalkBack support these letters.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Spoken description for Unicode code point U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="spoken_accented_letter_00AA">Feminine ordinal indicator</string>
+    <!-- Spoken description for Unicode code point U+00B5: "µ" MICRO SIGN -->
+    <string name="spoken_accented_letter_00B5">Micro sign</string>
+    <!-- Spoken description for Unicode code point U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
+    <string name="spoken_accented_letter_00BA">Masculine ordinal indicator</string>
+    <!-- Spoken description for Unicode code point U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
+    <string name="spoken_accented_letter_00DF">Sharp S</string>
+    <!-- Spoken description for Unicode code point U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE -->
+    <string name="spoken_accented_letter_00E0">A, grave</string>
+    <!-- Spoken description for Unicode code point U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE -->
+    <string name="spoken_accented_letter_00E1">A, acute</string>
+    <!-- Spoken description for Unicode code point U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_00E2">A, circumflex</string>
+    <!-- Spoken description for Unicode code point U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE -->
+    <string name="spoken_accented_letter_00E3">A, tilde</string>
+    <!-- Spoken description for Unicode code point U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="spoken_accented_letter_00E4">A, diaeresis</string>
+    <!-- Spoken description for Unicode code point U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
+    <string name="spoken_accented_letter_00E5">A, ring above</string>
+    <!-- Spoken description for Unicode code point U+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="spoken_accented_letter_00E6">A, E, ligature</string>
+    <!-- Spoken description for Unicode code point U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
+    <string name="spoken_accented_letter_00E7">C, cedilla</string>
+    <!-- Spoken description for Unicode code point U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE -->
+    <string name="spoken_accented_letter_00E8">E, grave</string>
+    <!-- Spoken description for Unicode code point U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="spoken_accented_letter_00E9">E, acute</string>
+    <!-- Spoken description for Unicode code point U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_00EA">E, circumflex</string>
+    <!-- Spoken description for Unicode code point U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
+    <string name="spoken_accented_letter_00EB">E, diaeresis</string>
+    <!-- Spoken description for Unicode code point U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE -->
+    <string name="spoken_accented_letter_00EC">I, grave</string>
+    <!-- Spoken description for Unicode code point U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE -->
+    <string name="spoken_accented_letter_00ED">I, acute</string>
+    <!-- Spoken description for Unicode code point U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_00EE">I, circumflex</string>
+    <!-- Spoken description for Unicode code point U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS -->
+    <string name="spoken_accented_letter_00EF">I, diaeresis</string>
+    <!-- Spoken description for Unicode code point U+00F0: "ð" LATIN SMALL LETTER ETH -->
+    <string name="spoken_accented_letter_00F0">Eth</string>
+    <!-- Spoken description for Unicode code point U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+    <string name="spoken_accented_letter_00F1">N, tilde</string>
+    <!-- Spoken description for Unicode code point U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE -->
+    <string name="spoken_accented_letter_00F2">O, grave</string>
+    <!-- Spoken description for Unicode code point U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE -->
+    <string name="spoken_accented_letter_00F3">O, acute</string>
+    <!-- Spoken description for Unicode code point U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_00F4">O, circumflex</string>
+    <!-- Spoken description for Unicode code point U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
+    <string name="spoken_accented_letter_00F5">O, tilde</string>
+    <!-- Spoken description for Unicode code point U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="spoken_accented_letter_00F6">O, diaeresis</string>
+    <!-- Spoken description for Unicode code point U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="spoken_accented_letter_00F8">O, stroke</string>
+    <!-- Spoken description for Unicode code point U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE -->
+    <string name="spoken_accented_letter_00F9">U, grave</string>
+    <!-- Spoken description for Unicode code point U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE -->
+    <string name="spoken_accented_letter_00FA">U, acute</string>
+    <!-- Spoken description for Unicode code point U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_00FB">U, circumflex</string>
+    <!-- Spoken description for Unicode code point U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="spoken_accented_letter_00FC">U, diaeresis</string>
+    <!-- Spoken description for Unicode code point U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE -->
+    <string name="spoken_accented_letter_00FD">Y, acute</string>
+    <!-- Spoken description for Unicode code point U+00FE: "þ" LATIN SMALL LETTER THORN -->
+    <string name="spoken_accented_letter_00FE">Thorn</string>
+    <!-- Spoken description for Unicode code point U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="spoken_accented_letter_00FF">Y, diaeresis</string>
+    <!-- Spoken description for Unicode code point U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="spoken_accented_letter_0101">A, macron</string>
+    <!-- Spoken description for Unicode code point U+0103: "ă" LATIN SMALL LETTER A WITH BREVE -->
+    <string name="spoken_accented_letter_0103">A, breve</string>
+    <!-- Spoken description for Unicode code point U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
+    <string name="spoken_accented_letter_0105">A, ogonek</string>
+    <!-- Spoken description for Unicode code point U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="spoken_accented_letter_0107">C, acute</string>
+    <!-- Spoken description for Unicode code point U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_0109">C, circumflex</string>
+    <!-- Spoken description for Unicode code point U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE -->
+    <string name="spoken_accented_letter_010B">C, dot above</string>
+    <!-- Spoken description for Unicode code point U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
+    <string name="spoken_accented_letter_010D">C, caron</string>
+    <!-- Spoken description for Unicode code point U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="spoken_accented_letter_010F">D, caron</string>
+    <!-- Spoken description for Unicode code point U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
+    <string name="spoken_accented_letter_0111">D, stroke</string>
+    <!-- Spoken description for Unicode code point U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
+    <string name="spoken_accented_letter_0113">E, macron</string>
+    <!-- Spoken description for Unicode code point U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE -->
+    <string name="spoken_accented_letter_0115">E, breve</string>
+    <!-- Spoken description for Unicode code point U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE -->
+    <string name="spoken_accented_letter_0117">E, dot above</string>
+    <!-- Spoken description for Unicode code point U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK -->
+    <string name="spoken_accented_letter_0119">E, ogonek</string>
+    <!-- Spoken description for Unicode code point U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
+    <string name="spoken_accented_letter_011B">E, caron</string>
+    <!-- Spoken description for Unicode code point U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_011D">G, circumflex</string>
+    <!-- Spoken description for Unicode code point U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="spoken_accented_letter_011F">G, breve</string>
+    <!-- Spoken description for Unicode code point U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE -->
+    <string name="spoken_accented_letter_0121">G, dot above</string>
+    <!-- Spoken description for Unicode code point U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA -->
+    <string name="spoken_accented_letter_0123">G, cedilla</string>
+    <!-- Spoken description for Unicode code point U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_0125">H, circumflex</string>
+    <!-- Spoken description for Unicode code point U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE -->
+    <string name="spoken_accented_letter_0127">H, stroke</string>
+    <!-- Spoken description for Unicode code point U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE -->
+    <string name="spoken_accented_letter_0129">I, tilde</string>
+    <!-- Spoken description for Unicode code point U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="spoken_accented_letter_012B">I, macron</string>
+    <!-- Spoken description for Unicode code point U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE -->
+    <string name="spoken_accented_letter_012D">I, breve</string>
+    <!-- Spoken description for Unicode code point U+012F: "į" LATIN SMALL LETTER I WITH OGONEK -->
+    <string name="spoken_accented_letter_012F">I, ogonek</string>
+    <!-- Spoken description for Unicode code point U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
+    <string name="spoken_accented_letter_0131">Dotless I</string>
+    <!-- Spoken description for Unicode code point U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
+    <string name="spoken_accented_letter_0133">I, J, ligature</string>
+    <!-- Spoken description for Unicode code point U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_0135">J, circumflex</string>
+    <!-- Spoken description for Unicode code point U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
+    <string name="spoken_accented_letter_0137">K, cedilla</string>
+    <!-- Spoken description for Unicode code point U+0138: "ĸ" LATIN SMALL LETTER KRA -->
+    <string name="spoken_accented_letter_0138">Kra</string>
+    <!-- Spoken description for Unicode code point U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE -->
+    <string name="spoken_accented_letter_013A">L, acute</string>
+    <!-- Spoken description for Unicode code point U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA -->
+    <string name="spoken_accented_letter_013C">L, cedilla</string>
+    <!-- Spoken description for Unicode code point U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
+    <string name="spoken_accented_letter_013E">L, caron</string>
+    <!-- Spoken description for Unicode code point U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT -->
+    <string name="spoken_accented_letter_0140">L, middle dot</string>
+    <!-- Spoken description for Unicode code point U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
+    <string name="spoken_accented_letter_0142">L, stroke</string>
+    <!-- Spoken description for Unicode code point U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+    <string name="spoken_accented_letter_0144">N, acute</string>
+    <!-- Spoken description for Unicode code point U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA -->
+    <string name="spoken_accented_letter_0146">N, cedilla</string>
+    <!-- Spoken description for Unicode code point U+0148: "ň" LATIN SMALL LETTER N WITH CARON -->
+    <string name="spoken_accented_letter_0148">N, caron</string>
+    <!-- Spoken description for Unicode code point U+0149: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -->
+    <string name="spoken_accented_letter_0149">N, preceded by apostrophe</string>
+    <!-- Spoken description for Unicode code point U+014B: "ŋ" LATIN SMALL LETTER ENG -->
+    <string name="spoken_accented_letter_014B">Eng</string>
+    <!-- Spoken description for Unicode code point U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="spoken_accented_letter_014D">O, macron</string>
+    <!-- Spoken description for Unicode code point U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE -->
+    <string name="spoken_accented_letter_014F">O, breve</string>
+    <!-- Spoken description for Unicode code point U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE -->
+    <string name="spoken_accented_letter_0151">O, double acute</string>
+    <!-- Spoken description for Unicode code point U+0153: "œ" LATIN SMALL LIGATURE OE -->
+    <string name="spoken_accented_letter_0153">O, E, ligature</string>
+    <!-- Spoken description for Unicode code point U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
+    <string name="spoken_accented_letter_0155">R, acute</string>
+    <!-- Spoken description for Unicode code point U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA -->
+    <string name="spoken_accented_letter_0157">R, cedilla</string>
+    <!-- Spoken description for Unicode code point U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
+    <string name="spoken_accented_letter_0159">R, caron</string>
+    <!-- Spoken description for Unicode code point U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE -->
+    <string name="spoken_accented_letter_015B">S, acute</string>
+    <!-- Spoken description for Unicode code point U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_015D">S, circumflex</string>
+    <!-- Spoken description for Unicode code point U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
+    <string name="spoken_accented_letter_015F">S, cedilla</string>
+    <!-- Spoken description for Unicode code point U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="spoken_accented_letter_0161">S, caron</string>
+    <!-- Spoken description for Unicode code point U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA -->
+    <string name="spoken_accented_letter_0163">T, cedilla</string>
+    <!-- Spoken description for Unicode code point U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
+    <string name="spoken_accented_letter_0165">T, caron</string>
+    <!-- Spoken description for Unicode code point U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE -->
+    <string name="spoken_accented_letter_0167">T, stroke</string>
+    <!-- Spoken description for Unicode code point U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE -->
+    <string name="spoken_accented_letter_0169">U, tilde</string>
+    <!-- Spoken description for Unicode code point U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="spoken_accented_letter_016B">U, macron</string>
+    <!-- Spoken description for Unicode code point U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE -->
+    <string name="spoken_accented_letter_016D">U, breve</string>
+    <!-- Spoken description for Unicode code point U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE -->
+    <string name="spoken_accented_letter_016F">U, ring above</string>
+    <!-- Spoken description for Unicode code point U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+    <string name="spoken_accented_letter_0171">U, double acute</string>
+    <!-- Spoken description for Unicode code point U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK -->
+    <string name="spoken_accented_letter_0173">U, ogonek</string>
+    <!-- Spoken description for Unicode code point U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_0175">W, circumflex</string>
+    <!-- Spoken description for Unicode code point U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX -->
+    <string name="spoken_accented_letter_0177">Y, circumflex</string>
+    <!-- Spoken description for Unicode code point U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
+    <string name="spoken_accented_letter_017A">Z, acute</string>
+    <!-- Spoken description for Unicode code point U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
+    <string name="spoken_accented_letter_017C">Z, dot above</string>
+    <!-- Spoken description for Unicode code point U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
+    <string name="spoken_accented_letter_017E">Z, caron</string>
+    <!-- Spoken description for Unicode code point U+017F: "ſ" LATIN SMALL LETTER LONG S -->
+    <string name="spoken_accented_letter_017F">Long S</string>
+    <!-- Spoken description for Unicode code point U+01A1: "ơ" LATIN SMALL LETTER O WITH HORN -->
+    <string name="spoken_accented_letter_01A1">O, horn</string>
+    <!-- Spoken description for Unicode code point U+01B0: "ư" LATIN SMALL LETTER U WITH HORN -->
+    <string name="spoken_accented_letter_01B0">U, horn</string>
+    <!-- Spoken description for Unicode code point U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW -->
+    <string name="spoken_accented_letter_0219">S, comma below</string>
+    <!-- Spoken description for Unicode code point U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW -->
+    <string name="spoken_accented_letter_021B">T, comma below</string>
+    <!-- Spoken description for Unicode code point U+0259: "ə" LATIN SMALL LETTER SCHWA -->
+    <string name="spoken_accented_letter_0259">Schwa</string>
+    <!-- Spoken description for Unicode code point U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW -->
+    <string name="spoken_accented_letter_1EA1">A, dot below</string>
+    <!-- Spoken description for Unicode code point U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EA3">A, hook above</string>
+    <!-- Spoken description for Unicode code point U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -->
+    <string name="spoken_accented_letter_1EA5">A, circumflex and acute</string>
+    <!-- Spoken description for Unicode code point U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -->
+    <string name="spoken_accented_letter_1EA7">A, circumflex and grave</string>
+    <!-- Spoken description for Unicode code point U+1EA9: "ẩ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EA9">A, circumflex and hook above</string>
+    <!-- Spoken description for Unicode code point U+1EAB: "ẫ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -->
+    <string name="spoken_accented_letter_1EAB">A, circumflex and tilde</string>
+    <!-- Spoken description for Unicode code point U+1EAD: "ậ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -->
+    <string name="spoken_accented_letter_1EAD">A, circumflex and dot below</string>
+    <!-- Spoken description for Unicode code point U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE -->
+    <string name="spoken_accented_letter_1EAF">A, breve and acute</string>
+    <!-- Spoken description for Unicode code point U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE -->
+    <string name="spoken_accented_letter_1EB1">A, breve and grave</string>
+    <!-- Spoken description for Unicode code point U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EB3">A, breve and hook above</string>
+    <!-- Spoken description for Unicode code point U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE -->
+    <string name="spoken_accented_letter_1EB5">A, breve and tilde</string>
+    <!-- Spoken description for Unicode code point U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -->
+    <string name="spoken_accented_letter_1EB7">A, breve and dot below</string>
+    <!-- Spoken description for Unicode code point U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW -->
+    <string name="spoken_accented_letter_1EB9">E, dot below</string>
+    <!-- Spoken description for Unicode code point U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EBB">E, hook above</string>
+    <!-- Spoken description for Unicode code point U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE -->
+    <string name="spoken_accented_letter_1EBD">E, tilde</string>
+    <!-- Spoken description for Unicode code point U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -->
+    <string name="spoken_accented_letter_1EBF">E, circumflex and acute</string>
+    <!-- Spoken description for Unicode code point U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -->
+    <string name="spoken_accented_letter_1EC1">E, circumflex and grave</string>
+    <!-- Spoken description for Unicode code point U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EC3">E, circumflex and hook above</string>
+    <!-- Spoken description for Unicode code point U+1EC5: "ễ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -->
+    <string name="spoken_accented_letter_1EC5">E, circumflex and tilde</string>
+    <!-- Spoken description for Unicode code point U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -->
+    <string name="spoken_accented_letter_1EC7">E, circumflex and dot below</string>
+    <!-- Spoken description for Unicode code point U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EC9">I, hook above</string>
+    <!-- Spoken description for Unicode code point U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW -->
+    <string name="spoken_accented_letter_1ECB">I, dot below</string>
+    <!-- Spoken description for Unicode code point U+1ECD: "ọ" LATIN SMALL LETTER O WITH DOT BELOW -->
+    <string name="spoken_accented_letter_1ECD">O, dot below</string>
+    <!-- Spoken description for Unicode code point U+1ECF: "ỏ" LATIN SMALL LETTER O WITH HOOK ABOVE -->
+    <string name="spoken_accented_letter_1ECF">O, hook above</string>
+    <!-- Spoken description for Unicode code point U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -->
+    <string name="spoken_accented_letter_1ED1">O, circumflex and acute</string>
+    <!-- Spoken description for Unicode code point U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -->
+    <string name="spoken_accented_letter_1ED3">O, circumflex and grave</string>
+    <!-- Spoken description for Unicode code point U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -->
+    <string name="spoken_accented_letter_1ED5">O, circumflex and hook above</string>
+    <!-- Spoken description for Unicode code point U+1ED7: "ỗ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -->
+    <string name="spoken_accented_letter_1ED7">O, circumflex and tilde</string>
+    <!-- Spoken description for Unicode code point U+1ED9: "ộ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -->
+    <string name="spoken_accented_letter_1ED9">O, circumflex and dot below</string>
+    <!-- Spoken description for Unicode code point U+1EDB: "ớ" LATIN SMALL LETTER O WITH HORN AND ACUTE -->
+    <string name="spoken_accented_letter_1EDB">O, horn and acute</string>
+    <!-- Spoken description for Unicode code point U+1EDD: "ờ" LATIN SMALL LETTER O WITH HORN AND GRAVE -->
+    <string name="spoken_accented_letter_1EDD">O, horn and grave</string>
+    <!-- Spoken description for Unicode code point U+1EDF: "ở" LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EDF">O, horn and hook above</string>
+    <!-- Spoken description for Unicode code point U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE -->
+    <string name="spoken_accented_letter_1EE1">O, horn and tilde</string>
+    <!-- Spoken description for Unicode code point U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW -->
+    <string name="spoken_accented_letter_1EE3">O, horn and dot below</string>
+    <!-- Spoken description for Unicode code point U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW -->
+    <string name="spoken_accented_letter_1EE5">U, dot below</string>
+    <!-- Spoken description for Unicode code point U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EE7">U, hook above</string>
+    <!-- Spoken description for Unicode code point U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE -->
+    <string name="spoken_accented_letter_1EE9">U, horn and acute</string>
+    <!-- Spoken description for Unicode code point U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE -->
+    <string name="spoken_accented_letter_1EEB">U, horn and grave</string>
+    <!-- Spoken description for Unicode code point U+1EED: "ử" LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EED">U, horn and hook above</string>
+    <!-- Spoken description for Unicode code point U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE -->
+    <string name="spoken_accented_letter_1EEF">U, horn and tilde</string>
+    <!-- Spoken description for Unicode code point U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW -->
+    <string name="spoken_accented_letter_1EF1">U, horn and dot below</string>
+    <!-- Spoken description for Unicode code point U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE -->
+    <string name="spoken_accented_letter_1EF3">Y, grave</string>
+    <!-- Spoken description for Unicode code point U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW -->
+    <string name="spoken_accented_letter_1EF5">Y, dot below</string>
+    <!-- Spoken description for Unicode code point U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE -->
+    <string name="spoken_accented_letter_1EF7">Y, hook above</string>
+    <!-- Spoken description for Unicode code point U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE -->
+    <string name="spoken_accented_letter_1EF9">Y, tilde</string>
+    <!-- Spoken description for Unicode code point U+00A1: "¡" INVERTED EXCLAMATION MARK -->
+    <string name="spoken_symbol_00A1">Inverted exclamation mark</string>
+    <!-- Spoken description for Unicode code point U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+    <string name="spoken_symbol_00AB">Left-pointing double angle quotation mark</string>
+    <!-- Spoken description for Unicode code point U+00B7: "·" MIDDLE DOT -->
+    <string name="spoken_symbol_00B7">Middle dot</string>
+    <!-- Spoken description for Unicode code point U+00B9: "¹" SUPERSCRIPT ONE -->
+    <string name="spoken_symbol_00B9">Superscript one</string>
+    <!-- Spoken description for Unicode code point U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+    <string name="spoken_symbol_00BB">Right-pointing double angle quotation mark</string>
+    <!-- Spoken description for Unicode code point U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="spoken_symbol_00BF">Inverted question mark</string>
+    <!-- Spoken description for Unicode code point U+2018: "‘" LEFT SINGLE QUOTATION MARK -->
+    <string name="spoken_symbol_2018">Left single quotation mark</string>
+    <!-- Spoken description for Unicode code point U+2019: "’" RIGHT SINGLE QUOTATION MARK -->
+    <string name="spoken_symbol_2019">Right single quotation mark</string>
+    <!-- Spoken description for Unicode code point U+201A: "‚" SINGLE LOW-9 QUOTATION MARK -->
+    <string name="spoken_symbol_201A">Single low-9 quotation mark</string>
+    <!-- Spoken description for Unicode code point U+201C: "“" LEFT DOUBLE QUOTATION MARK -->
+    <string name="spoken_symbol_201C">Left double quotation mark</string>
+    <!-- Spoken description for Unicode code point U+201D: "”" RIGHT DOUBLE QUOTATION MARK -->
+    <string name="spoken_symbol_201D">Right double quotation mark</string>
+    <!-- Spoken description for Unicode code point U+2020: "†" DAGGER -->
+    <string name="spoken_symbol_2020">Dagger</string>
+    <!-- Spoken description for Unicode code point U+2021: "‡" DOUBLE DAGGER -->
+    <string name="spoken_symbol_2021">Double dagger</string>
+    <!-- Spoken description for Unicode code point U+2030: "‰" PER MILLE SIGN -->
+    <string name="spoken_symbol_2030">Per mille sign</string>
+    <!-- Spoken description for Unicode code point U+2032: "′" PRIME -->
+    <string name="spoken_symbol_2032">Prime</string>
+    <!-- Spoken description for Unicode code point U+2033: "″" DOUBLE PRIME -->
+    <string name="spoken_symbol_2033">Double prime</string>
+    <!-- Spoken description for Unicode code point U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
+    <string name="spoken_symbol_2039">Single left-pointing angle quotation mark</string>
+    <!-- Spoken description for Unicode code point U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
+    <string name="spoken_symbol_203A">Single right-pointing angle quotation mark</string>
+    <!-- Spoken description for Unicode code point U+2074: "⁴" SUPERSCRIPT FOUR -->
+    <string name="spoken_symbol_2074">Superscript four</string>
+    <!-- Spoken description for Unicode code point U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N -->
+    <string name="spoken_symbol_207F">Superscript latin small letter n</string>
+    <!-- Spoken description for Unicode code point U+20B1: "₱" PESO SIGN -->
+    <string name="spoken_symbol_20B1">Peso sign</string>
+    <!-- Spoken description for Unicode code point U+2105: "℅" CARE OF -->
+    <string name="spoken_symbol_2105">Care of</string>
+    <!-- Spoken description for Unicode code point U+2192: "→" RIGHTWARDS ARROW -->
+    <string name="spoken_symbol_2192">Rightwards arrow</string>
+    <!-- Spoken description for Unicode code point U+2193: "↓" DOWNWARDS ARROW -->
+    <string name="spoken_symbol_2193">Downwards arrow</string>
+    <!-- Spoken description for Unicode code point U+2205: "∅" EMPTY SET -->
+    <string name="spoken_symbol_2205">Empty set</string>
+    <!-- Spoken description for Unicode code point U+2206: "∆" INCREMENT -->
+    <string name="spoken_symbol_2206">Increment</string>
+    <!-- Spoken description for Unicode code point U+2264: "≤" LESS-THAN OR EQUAL TO -->
+    <string name="spoken_symbol_2264">Less-than or equal to</string>
+    <!-- Spoken description for Unicode code point U+2265: "≥" GREATER-THAN OR EQUAL TO -->
+    <string name="spoken_symbol_2265">Greater-than or equal to</string>
+    <!-- Spoken description for Unicode code point U+2605: "★" BLACK STAR -->
+    <string name="spoken_symbol_2605">Black star</string>
+</resources>
diff --git a/java/res/values/strings-production.xml b/java/res/values/strings-production.xml
new file mode 100644
index 0000000..8064b99
--- /dev/null
+++ b/java/res/values/strings-production.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <!-- Description for option to enable sending usage statistics -->
+    <string name="enable_metrics_logging_summary" translatable="false"></string>
+</resources>
diff --git a/java/res/values/strings-talkback-descriptions.xml b/java/res/values/strings-talkback-descriptions.xml
new file mode 100644
index 0000000..80c7bdb
--- /dev/null
+++ b/java/res/values/strings-talkback-descriptions.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Spoken description to let the user know that when typing in a password, they can plug in a headset in to hear spoken descriptions of the keys they type. [CHAR LIMIT=NONE] -->
+    <string name="spoken_use_headphones">Plug in a headset to hear password keys spoken aloud.</string>
+
+    <!-- Spoken description for the currently entered text -->
+    <string name="spoken_current_text_is">Current text is "%s"</string>
+    <!-- Spoken description when there is no text entered -->
+    <string name="spoken_no_text_entered">No text entered</string>
+
+    <!-- Spoken description to let the user know what auto-correction will be performed when a key is pressed. An auto-correction replaces a single word with one or more words. -->
+    <string name="spoken_auto_correct"><xliff:g id="KEY_NAME" example="Space">%1$s</xliff:g> corrects <xliff:g id="ORIGINAL_WORD">%2$s</xliff:g> to <xliff:g id="CORRECTED_WORD">%3$s</xliff:g></string>
+    <!-- Spoken description used during obscured (e.g. password) entry to let the user know that auto-correction will be performed when a key is pressed. -->
+    <string name="spoken_auto_correct_obscured"><xliff:g id="KEY_NAME" example="Space">%1$s</xliff:g> performs auto-correction</string>
+
+    <!-- Spoken description for unknown keyboard keys. -->
+    <string name="spoken_description_unknown">Unknown character</string>
+    <!-- Spoken description for the "Shift" keyboard key when "Shift" is off. -->
+    <string name="spoken_description_shift">Shift</string>
+    <!-- Spoken description for the "Shift" keyboard key in symbols mode. -->
+    <string name="spoken_description_symbols_shift">More symbols</string>
+    <!-- Spoken description for the "Shift" keyboard key when "Shift" is on. -->
+    <string name="spoken_description_shift_shifted">Shift</string>
+    <!-- Spoken description for the "Shift" keyboard key in 2nd symbols (a.k.a. symbols shift) mode. -->
+    <string name="spoken_description_symbols_shift_shifted">Symbols</string>
+    <!-- Spoken description for the "Shift" keyboard key when "Caps lock" is on. -->
+    <string name="spoken_description_caps_lock">Shift</string>
+    <!-- Spoken description for the "Delete" keyboard key. -->
+    <string name="spoken_description_delete">Delete</string>
+    <!-- Spoken description for the "To Symbol" keyboard key. -->
+    <string name="spoken_description_to_symbol">Symbols</string>
+    <!-- Spoken description for the "To Alpha" keyboard key. -->
+    <string name="spoken_description_to_alpha">Letters</string>
+    <!-- Spoken description for the "To Numbers" keyboard key. -->
+    <string name="spoken_description_to_numeric">Numbers</string>
+    <!-- Spoken description for the "Settings" keyboard key. -->
+    <string name="spoken_description_settings">Settings</string>
+    <!-- Spoken description for the "Tab" keyboard key. -->
+    <string name="spoken_description_tab">Tab</string>
+    <!-- Spoken description for the "Space" keyboard key. -->
+    <string name="spoken_description_space">Space</string>
+    <!-- Spoken description for the "Mic" keyboard key. -->
+    <string name="spoken_description_mic">Voice input</string>
+    <!-- Spoken description for the "Emoji" keyboard key. -->
+    <string name="spoken_description_emoji">Emoji</string>
+    <!-- Spoken description for the "Return" keyboard key. -->
+    <string name="spoken_description_return">Return</string>
+    <!-- Spoken description for the "Search" keyboard key. -->
+    <string name="spoken_description_search">Search</string>
+    <!-- Spoken description for the "U+2022" (BULLET) keyboard key. -->
+    <string name="spoken_description_dot">Dot</string>
+    <!-- Spoken description for the "Switch language" keyboard key. -->
+    <string name="spoken_description_language_switch">Switch language</string>
+    <!-- Spoken description for the "Next" action keyboard key. -->
+    <string name="spoken_description_action_next">Next</string>
+    <!-- Spoken description for the "Previous" action keyboard key. -->
+    <string name="spoken_description_action_previous">Previous</string>
+
+    <!-- Spoken feedback after turning "Shift" mode on. -->
+    <string name="spoken_description_shiftmode_on">Shift enabled</string>
+    <!-- Spoken feedback after turning "Caps lock" mode on. -->
+    <string name="spoken_description_shiftmode_locked">Caps lock enabled</string>
+    <!-- Spoken feedback after changing to the symbols keyboard. -->
+    <string name="spoken_description_mode_symbol">Symbols mode</string>
+    <!-- Spoken feedback after changing to the 2nd symbols (a.k.a. symbols shift) keyboard. -->
+    <string name="spoken_description_mode_symbol_shift">More symbols mode</string>
+    <!-- Spoken feedback after changing to the alphanumeric keyboard. -->
+    <string name="spoken_description_mode_alpha">Letters mode</string>
+    <!-- Spoken feedback after changing to the phone dialer keyboard. -->
+    <string name="spoken_description_mode_phone">Phone mode</string>
+    <!-- Spoken feedback after changing to the shifted phone dialer (symbols) keyboard. -->
+    <string name="spoken_description_mode_phone_shift">Phone symbols mode</string>
+
+    <!-- Spoken feedback when the keyboard is hidden. -->
+    <string name="announce_keyboard_hidden">Keyboard hidden</string>
+    <!-- Spoken feedback when the keyboard mode changes. -->
+    <string name="announce_keyboard_mode">Showing <xliff:g id="KEYBOARD_MODE" example="email">%s</xliff:g> keyboard</string>
+    <!-- Description of the keyboard mode for entering dates. -->
+    <string name="keyboard_mode_date">date</string>
+    <!-- Description of the keyboard mode for entering dates and times. -->
+    <string name="keyboard_mode_date_time">date and time</string>
+    <!-- Description of the keyboard mode for entering email addresses. -->
+    <string name="keyboard_mode_email">email</string>
+    <!-- Description of the keyboard mode for entering text messages. -->
+    <string name="keyboard_mode_im">messaging</string>
+    <!-- Description of the keyboard mode for entering numbers. -->
+    <string name="keyboard_mode_number">number</string>
+    <!-- Description of the keyboard mode for entering phone numbers. -->
+    <string name="keyboard_mode_phone">phone</string>
+    <!-- Description of the keyboard mode for entering generic text. -->
+    <string name="keyboard_mode_text">text</string>
+    <!-- Description of the keyboard mode for entering times. -->
+    <string name="keyboard_mode_time">time</string>
+    <!-- Description of the keyboard mode for entering URLs. -->
+    <string name="keyboard_mode_url">URL</string>
+
+    <!-- Description of the emoji category icon of Recents. -->
+    <string name="spoken_descrption_emoji_category_recents">Recents</string>
+    <!-- Description of the emoji category icon of People. -->
+    <string name="spoken_descrption_emoji_category_people">People</string>
+    <!-- Description of the emoji category icon of Objects. -->
+    <string name="spoken_descrption_emoji_category_objects">Objects</string>
+    <!-- Description of the emoji category icon of Nature. -->
+    <string name="spoken_descrption_emoji_category_nature">Nature</string>
+    <!-- Description of the emoji category icon of Places. -->
+    <string name="spoken_descrption_emoji_category_places">Places</string>
+    <!-- Description of the emoji category icon of Symbols. -->
+    <string name="spoken_descrption_emoji_category_symbols">Symbols</string>
+    <!-- Description of the emoji category icon of Emoticons. -->
+    <string name="spoken_descrption_emoji_category_emoticons">Emoticons</string>
+
+    <!-- Description of an upper case letter of LOWER_LETTER. -->
+    <string name="spoken_description_upper_case">Capital <xliff:g id="LOWER_LETTER" example="A, E, ligature">%s</xliff:g></string>
+    <!-- Spoken description for Unicode code point U+0049: "I" LATIN CAPITAL LETTER I
+         Note that depending on locale, the lower-case of this letter is U+0069 or U+0131. -->
+    <string name="spoken_letter_0049">Capital I</string>
+    <!-- Spoken description for Unicode code point U+0130: "İ" LATIN CAPITAL LETTER I WITH DOT ABOVE
+         Note that depending on locale, the lower-case of this letter is U+0069 or U+0131. -->
+    <string name="spoken_letter_0130">Capital I, dot above</string>
+    <!-- Spoken description for unknown symbol code point. -->
+    <string name="spoken_symbol_unknown">Unknown symbol</string>
+    <!-- Spoken description for unknown emoji code point. -->
+    <string name="spoken_emoji_unknown">Unknown emoji</string>
+
+    <!-- Spoken descriptions when opening a more keys keyboard that has alternative characters. -->
+    <string name="spoken_open_more_keys_keyboard">Alternative characters are available</string>
+    <!-- Spoken descriptions when closing a more keys keyboard that has alternative characters. -->
+    <string name="spoken_close_more_keys_keyboard">Alternative characters are dismissed</string>
+
+    <!-- Spoken descriptions when opening a more suggestions panel that has alternative suggested words. -->
+    <string name="spoken_open_more_suggestions">Alternative suggestions are available</string>
+    <!-- Spoken descriptions when closing a more suggestions panel that has alternative suggested words. -->
+    <string name="spoken_close_more_suggestions">Alternative suggestions are dismissed</string>
+</resources>
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 11b3ea3..6df69ed 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -21,9 +21,6 @@
     <!-- Title for Latin keyboard input options dialog [CHAR LIMIT=25] -->
     <string name="english_ime_input_options">Input options</string>
 
-    <!-- Title for Latin keyboard research log dialog, which contains special commands for users that contribute data for research. [CHAR LIMIT=33] -->
-    <string name="english_ime_research_log">Research Log Commands</string>
-
     <!-- Title for the spell checker option to turn on/off contact names lookup [CHAR LIMIT=25] -->
     <string name="use_contacts_for_spellchecking_option_title">Look up contact names</string>
 
@@ -39,22 +36,18 @@
     <!-- Option to control whether or not to show a popup with a larger font on each key press. -->
     <string name="popup_on_keypress">Popup on keypress</string>
 
-    <!-- Category title for general settings for Android keyboard -->
-    <string name="general_category">General</string>
-
-    <!-- Category title for text prediction -->
-    <string name="correction_category">Text correction</string>
-
-    <!-- Category title for gesture typing -->
-    <string name="gesture_typing_category">Gesture typing</string>
-
-    <!-- Category title for misc options  -->
-    <string name="misc_category">Other options</string>
-
-    <!-- Option name for advanced settings screen [CHAR LIMIT=25] -->
-    <string name="advanced_settings">Advanced settings</string>
-    <!-- Option summary for advanced settings screen [CHAR LIMIT=65 (two lines) or 30 (fits on one line, preferable)] -->
-    <string name="advanced_settings_summary">Options for experts</string>
+    <!-- Settings screen title for input preferences [CHAR LIMIT=33]-->
+    <string name="settings_screen_input">Input preferences</string>
+    <!-- Settings screen title for appearance preferences [CHAR LIMIT=33] -->
+    <string name="settings_screen_appearances">Appearance</string>
+    <!-- Settings screen title for multi lingual options [CHAR_LIMIT=33] -->
+    <string name="settings_screen_multi_lingual">Multi lingual options</string>
+    <!-- Settings screen title for gesture typing preferences [CHAR_LIMIT=33] -->
+    <string name="settings_screen_gesture">Gesture typing preferences</string>
+    <!-- Settings screen title for text correction options [CHAR_LIMIT=33] -->
+    <string name="settings_screen_correction">Text correction</string>
+    <!-- Settings screen title for advanced settings [CHAR LIMIT=33] -->
+    <string name="settings_screen_advanced">Advanced</string>
 
     <!-- Option name for including other IMEs in the language switch list [CHAR LIMIT=30] -->
     <string name="include_other_imes_in_language_switch_list">Switch to other input methods</string>
@@ -78,7 +71,7 @@
     <string name="key_preview_popup_dismiss_default_delay">Default</string>
 
     <!-- Units abbreviation for the duration (milliseconds) [CHAR LIMIT=10] -->
-    <string name="abbreviation_unit_milliseconds"><xliff:g id="milliseconds">%s</xliff:g>ms</string>
+    <string name="abbreviation_unit_milliseconds"><xliff:g id="MILLISECONDS">%s</xliff:g>ms</string>
     <!-- The text that represents the current settings value is the system default [CHAR LIMIT=25] -->
     <string name="settings_system_default">System default</string>
 
@@ -87,6 +80,12 @@
     <!-- Description for option enabling or disabling the use of names of people in Contacts for suggestion and correction [CHAR LIMIT=65] -->
     <string name="use_contacts_dict_summary">Use names from Contacts for suggestions and corrections</string>
 
+    <!-- Option name for enabling the use by the keyboards of sent/received messages, e-mail and typing history to improve suggestion accuracy [CHAR LIMIT=25] -->
+    <string name="use_personalized_dicts">Personalized suggestions</string>
+
+    <!-- Option to enable sending usage statistics -->
+    <string name="enable_metrics_logging">"Improve <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string>
+
     <!-- Option name for enabling or disabling the double-space period feature that lets double tap on spacebar insert a period followed by a space [CHAR LIMIT=30] -->
     <string name="use_double_space_period">Double-space period</string>
     <!-- Description for option enabling or disabling the double-space period feature that lets double tap on spacebar insert a period followed by a space [CHAR LIMIT=65] -->
@@ -147,118 +146,15 @@
     <string name="gesture_floating_preview_text">Dynamic floating preview</string>
     <!-- Description for "gesture_floating_preview_text" option. The user can see a suggested word floating under the moving finger during a gesture input. [CHAR LIMIT=65]-->
     <string name="gesture_floating_preview_text_summary">See the suggested word while gesturing</string>
-
-    <!-- Indicates that a word has been added to the dictionary -->
-    <string name="added_word"><xliff:g id="word">%s</xliff:g> : Saved</string>
-
-    <!-- Spoken description to let the user know that when typing in a password, they can plug in a headset in to hear spoken descriptions of the keys they type. [CHAR LIMIT=NONE] -->
-    <string name="spoken_use_headphones">Plug in a headset to hear password keys spoken aloud.</string>
-
-    <!-- Spoken description for the currently entered text -->
-    <string name="spoken_current_text_is">Current text is "%s"</string>
-    <!-- Spoken description when there is no text entered -->
-    <string name="spoken_no_text_entered">No text entered</string>
-
-    <!-- Spoken description to let the user know what auto-correction will be performed when a key is pressed. An auto-correction replaces a single word with one or more words. -->
-    <string name="spoken_auto_correct"><xliff:g id="key" example="Space">%1$s</xliff:g> corrects <xliff:g id="original_word">%2$s</xliff:g> to <xliff:g id="corrected">%3$s</xliff:g></string>
-    <!-- Spoken description used during obscured (e.g. password) entry to let the user know that auto-correction will be performed when a key is pressed. -->
-    <string name="spoken_auto_correct_obscured"><xliff:g id="key" example="Space">%1$s</xliff:g> performs auto-correction</string>
-
-    <!-- Spoken description for unknown keyboard keys. -->
-    <string name="spoken_description_unknown">Key code %d</string>
-    <!-- Spoken description for the "Shift" keyboard key when "Shift" is off. -->
-    <string name="spoken_description_shift">Shift</string>
-    <!-- Spoken description for the "Shift" keyboard key when "Shift" is on. -->
-    <string name="spoken_description_shift_shifted">Shift on (tap to disable)</string>
-    <!-- Spoken description for the "Shift" keyboard key when "Caps lock" is on. -->
-    <string name="spoken_description_caps_lock">Caps lock on (tap to disable)</string>
-    <!-- Spoken description for the "Delete" keyboard key. -->
-    <string name="spoken_description_delete">Delete</string>
-    <!-- Spoken description for the "To Symbol" keyboard key. -->
-    <string name="spoken_description_to_symbol">Symbols</string>
-    <!-- Spoken description for the "To Alpha" keyboard key. -->
-    <string name="spoken_description_to_alpha">Letters</string>
-    <!-- Spoken description for the "To Numbers" keyboard key. -->
-    <string name="spoken_description_to_numeric">Numbers</string>
-    <!-- Spoken description for the "Settings" keyboard key. -->
-    <string name="spoken_description_settings">Settings</string>
-    <!-- Spoken description for the "Tab" keyboard key. -->
-    <string name="spoken_description_tab">Tab</string>
-    <!-- Spoken description for the "Space" keyboard key. -->
-    <string name="spoken_description_space">Space</string>
-    <!-- Spoken description for the "Mic" keyboard key. -->
-    <string name="spoken_description_mic">Voice input</string>
-    <!-- Spoken description for the "Smiley" keyboard key. -->
-    <string name="spoken_description_smiley">Smiley face</string>
-    <!-- Spoken description for the "Return" keyboard key. -->
-    <string name="spoken_description_return">Return</string>
-    <!-- Spoken description for the "Search" keyboard key. -->
-    <string name="spoken_description_search">Search</string>
-    <!-- Spoken description for the "U+2022" (BULLET) keyboard key. -->
-    <string name="spoken_description_dot">Dot</string>
-    <!-- Spoken description for the "Switch language" keyboard key. -->
-    <string name="spoken_description_language_switch">Switch language</string>
-    <!-- Spoken description for the "Next" action keyboard key. -->
-    <string name="spoken_description_action_next">Next</string>
-    <!-- Spoken description for the "Previous" action keyboard key. -->
-    <string name="spoken_description_action_previous">Previous</string>
-
-    <!-- Spoken feedback after turning "Shift" mode on. -->
-    <string name="spoken_description_shiftmode_on">Shift enabled</string>
-    <!-- Spoken feedback after turning "Caps lock" mode on. -->
-    <string name="spoken_description_shiftmode_locked">Caps lock enabled</string>
-    <!-- Spoken feedback after turning "Shift" mode off. -->
-    <string name="spoken_description_shiftmode_off">Shift disabled</string>
-
-    <!-- Spoken feedback after changing to the symbols keyboard. -->
-    <string name="spoken_description_mode_symbol">Symbols mode</string>
-    <!-- Spoken feedback after changing to the alphanumeric keyboard. -->
-    <string name="spoken_description_mode_alpha">Letters mode</string>
-    <!-- Spoken feedback after changing to the phone dialer keyboard. -->
-    <string name="spoken_description_mode_phone">Phone mode</string>
-    <!-- Spoken feedback after changing to the shifted phone dialer (symbols) keyboard. -->
-    <string name="spoken_description_mode_phone_shift">Phone symbols mode</string>
-
-    <!-- Spoken feedback when the keyboard is hidden. -->
-    <string name="announce_keyboard_hidden">Keyboard hidden</string>
-    <!-- Spoken feedback when the keyboard mode changes. -->
-    <string name="announce_keyboard_mode">Showing <xliff:g id="mode" example="email">%s</xliff:g> keyboard</string>
-    <!-- Description of the keyboard mode for entering dates. -->
-    <string name="keyboard_mode_date">date</string>
-    <!-- Description of the keyboard mode for entering dates and times. -->
-    <string name="keyboard_mode_date_time">date and time</string>
-    <!-- Description of the keyboard mode for entering email addresses. -->
-    <string name="keyboard_mode_email">email</string>
-    <!-- Description of the keyboard mode for entering text messages. -->
-    <string name="keyboard_mode_im">messaging</string>
-    <!-- Description of the keyboard mode for entering numbers. -->
-    <string name="keyboard_mode_number">number</string>
-    <!-- Description of the keyboard mode for entering phone numbers. -->
-    <string name="keyboard_mode_phone">phone</string>
-    <!-- Description of the keyboard mode for entering generic text. -->
-    <string name="keyboard_mode_text">text</string>
-    <!-- Description of the keyboard mode for entering times. -->
-    <string name="keyboard_mode_time">time</string>
-    <!-- Description of the keyboard mode for entering URLs. -->
-    <string name="keyboard_mode_url">URL</string>
+    <!-- Option to enable space aware gesture input. The user can input multiple words by gliding through the space key during a gesture input. [CHAR LIMIT=30]-->
+    <string name="gesture_space_aware">Phrase gesture</string>
+    <!-- Description for "gesture_space_aware" option. The user can input multiple words by gliding through the space key during a gesture input.[CHAR LIMIT=65]-->
+    <string name="gesture_space_aware_summary">Input spaces during gestures by gliding to the space key</string>
 
     <!-- Preferences item for enabling speech input -->
     <string name="voice_input">Voice input key</string>
-
-    <!-- Voice Input modes -->
-    <!-- On settings screen, voice input pop-up menu option to show voice key on main keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_main_keyboard">On main keyboard</string>
-    <!-- On settings screen, voice input pop-up menu option to show voice key on symbols keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_symbols_keyboard">On symbols keyboard</string>
-    <!-- On settings screen, voice input pop-up menu option to never show voice key [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_off">Off</string>
-    <!-- Voice Input modes summary -->
-    <!-- On settings screen, voice input pop-up menu summary text to show voice key on main keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_summary_main_keyboard">Mic on main keyboard</string>
-    <!-- On settings screen, voice input pop-up menu summary text to show voice key on symbols keyboard [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_summary_symbols_keyboard">Mic on symbols keyboard</string>
-    <!-- On settings screen, voice input pop-up menu summary text to never show voice key [CHAR LIMIT=20] -->
-    <string name="voice_input_modes_summary_off">Voice input is disabled</string>
+    <!-- The summary text to describe the reason why the "Voice input key" option is disabled. [CHAR LIMIT=100] -->
+    <string name="voice_input_disabled_summary">No voice input methods enabled. Check Language &amp; input settings.</string>
 
     <!-- Title for configuring input method settings [CHAR LIMIT=35] -->
     <string name="configure_input_method">Configure input methods</string>
@@ -266,68 +162,8 @@
     <!-- Title for input language selection screen -->
     <string name="language_selection_title">Input languages</string>
 
-    <!-- Title for dialog option to let users cancel logging and delete log for this session [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_do_not_log_this_session" translatable="false">Suspend logging</string>
-    <!-- Title for dialog option to let users reenable logging [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_enable_session_logging" translatable="false">Enable logging</string>
-    <!-- Toast notification that the system is processing the request to delete the log for this session [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_notify_session_log_deleting" translatable="false">Deleting session log</string>
-    <!-- Toast notification that the system has successfully deleted the log for this session [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_notify_logging_suspended" translatable="false">Logging temporarily suspended.  To disable permanently, go to Android Keyboard Settings</string>
-    <!-- Toast notification that the system has failed to delete the log for this session [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_notify_session_log_not_deleted" translatable="false">Session log NOT deleted</string>
-    <!-- Toast notification that the system is enabling logging [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_notify_session_logging_enabled" translatable="false">Session logging enabled</string>
-
-    <!-- Text for checkbox option to include user data in feedback for research purposes [CHAR LIMIT=50] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_include_history_label" translatable="false">Include session history</string>
-    <!-- Text for checkbox option to include user account name in feedback for research purposes [CHAR LIMIT=50] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_include_account_name_label" translatable="false">Include account name</string>
-    <!-- Text for checkbox option to include a recording in feedback for research purposes [CHAR LIMIT=50] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_include_recording_label" translatable="false">Include recorded demonstration</string>
-    <!-- Dialog button choice to send research feedback [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_send" translatable="false">Send</string>
-    <!-- Dialog button choice to cancel sending research feedback [CHAR LIMIT=35] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_cancel" translatable="false">Cancel</string>
-    <!-- Temporary notification to provide user with instructions about stopping a recording
-      - operation[CHAR LIMIT=100] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_demonstration_instructions" translatable="false">Please demonstrate the issue you are writing about.\n\nWhen finished, select the \"Bug?\" button again."</string>
     <!-- Title of a preference to send feedback. [CHAR LIMIT=30]-->
     <string name="send_feedback">Send feedback</string>
-    <!-- Temporary notification of recording failure [CHAR LIMIT=100] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_feedback_recording_failure" translatable="false">Recording cancelled due to timeout</string>
-    <!-- Toast notification to ask user to quit the research feedback dialog to perform this operation [CHAR LIMIT=100] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_please_exit_feedback_form" translatable="false">Please exit the feedback dialog to access the research log menu</string>
-
-    <!-- Title of dialog shown at start informing users about contributing research usage data-->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_splash_title" translatable="false">Warning</string>
-
-    <!-- Toast message informing users that logging has been disabled -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_logging_disabled" translatable="false">Logging Disabled</string>
-
-    <!-- Name for the research uploading service to be displayed to users.  [CHAR LIMIT=50] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_log_uploader_name" translatable="false">Research Uploader Service</string>
-
-    <!-- Name for the research replaying service to be displayed to users.  [CHAR LIMIT=50] -->
-    <!-- TODO: remove translatable=false attribute once text is stable -->
-    <string name="research_log_replayer_name" translatable="false">Research Replayer Service</string>
 
     <!-- Preference for input language selection -->
     <string name="select_language">Input languages</string>
@@ -338,40 +174,43 @@
     <!-- Inform the user that a particular language has an available dictionary -->
     <string name="has_dictionary">Dictionary available</string>
 
-    <!-- Preferences item for enabling to send user statistics for development only diagnostics -->
-    <string name="prefs_enable_log">Enable user feedback</string>
-    <!-- Description for enabling to send user statistics for development only diagnostics -->
-    <string name="prefs_description_log">Help improve this input method editor by automatically sending usage statistics and crash reports</string>
-
     <!-- Title of the item to change the keyboard theme [CHAR LIMIT=20]-->
     <string name="keyboard_layout">Keyboard theme</string>
 
-    <!-- Description for English (United Kingdom) keyboard subtype [CHAR LIMIT=25] -->
+    <!-- Description for English (UK) keyboard subtype [CHAR LIMIT=25]
+         (UK) should be an abbreviation of United Kingdom to fit in the CHAR LIMIT. -->
     <string name="subtype_en_GB">English (UK)</string>
-    <!-- Description for English (United States) keyboard subtype [CHAR LIMIT=25] -->
+    <!-- Description for English (US) keyboard subtype [CHAR LIMIT=25]
+         (US) should be an abbreviation of United States to fit in the CHAR LIMIT. -->
     <string name="subtype_en_US">English (US)</string>
-    <!-- Description for Spanish (United States) keyboard subtype [CHAR LIMIT=25] -->
+    <!-- Description for Spanish (US) keyboard subtype [CHAR LIMIT=25]
+         (US) should be an abbreviation of United States to fit in the CHAR LIMIT. -->
     <string name="subtype_es_US">Spanish (US)</string>
-    <!-- Description for English (United Kingdom) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+    <!-- Description for English (UK) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+         (UK) should be an abbreviation of United Kingdom to fit in the CHAR LIMIT.
          This should be identical to subtype_en_GB aside from the trailing (%s). -->
-    <string name="subtype_with_layout_en_GB">English (UK) (<xliff:g id="layout">%s</xliff:g>)</string>
-    <!-- Description for English (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+    <string name="subtype_with_layout_en_GB">English (UK) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
+    <!-- Description for English (US) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+         (US) should be an abbreviation of United States to fit in the CHAR LIMIT.
          This should be identical to subtype_en_US aside from the trailing (%s). -->
-    <string name="subtype_with_layout_en_US">English (US) (<xliff:g id="layout">%s</xliff:g>)</string>
-    <!-- Description for Spanish (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+    <string name="subtype_with_layout_en_US">English (US) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
+    <!-- Description for Spanish (US) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+         (US) should be an abbreviation of United Statesn to fit in the CHAR LIMIT.
          This should be identical to subtype_es_US aside from the trailing (%s). -->
-    <string name="subtype_with_layout_es_US">Spanish (US) (<xliff:g id="layout">%s</xliff:g>)</string>
-    <!-- Description for Nepali (Traditional) keyboard subtype [CHAR LIMIT=25] -->
-    <string name="subtype_nepali_traditional"><xliff:g id="language">%s</xliff:g> (Traditional)</string>
-    <!-- TODO: Uncomment once we can handle IETF language tag with script name specified.
-         Description for Serbian Cyrillic keyboard subtype [CHAR LIMIT=25]
-    <string name="subtype_serbian_cyrillic">Serbian (Cyrillic)</string>
-         Description for Serbian Latin keyboard subtype [CHAR LIMIT=25]
-    <string name="subtype_serbian_latin">Serbian (Latin)</string>
-         Description for Serbian Latin keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
-         This should be identical to subtype_serbian_latin aside from the trailing (%s).
-    <string name="subtype_with_layout_sr-Latn">Serbian (Latin) (<xliff:g id="layout">%s</xliff:g>)</string>
-    -->
+    <string name="subtype_with_layout_es_US">Spanish (US) (<xliff:g id="KEYBOARD_LAYOUT" example="QWERTY">%s</xliff:g>)</string>
+    <!-- Description for "LANGUAGE_NAME" (Traditional) keyboard subtype [CHAR LIMIT=25]
+         (Traditional) can be an abbreviation to fit in the CHAR LIMIT. -->
+    <string name="subtype_generic_traditional"><xliff:g id="LANGUAGE_NAME" example="Nepali">%s</xliff:g> (Traditional)</string>
+    <!-- Description for "LANGUAGE_NAME" (Compact) keyboard subtype [CHAR LIMIT=25]
+         (Compact) can be an abbreviation to fit in the CHAR LIMIT.
+         TODO: Remove translatable=false once we are settled down with the naming. -->
+    <string name="subtype_generic_compact" translatable="false"><xliff:g id="LANGUAGE_NAME" example="Hindi">%s</xliff:g> (Compact)</string>
+    <!-- Description for "LANGUAGE_NAME" (Cyrillic) keyboard subtype [CHAR LIMIT=25]
+         (Cyrillic) can be an abbreviation to fit in the CHAR LIMIT. -->
+    <string name="subtype_generic_cyrillic"><xliff:g id="LANGUAGE_NAME" example="Serbian">%s</xliff:g> (Cyrillic)</string>
+    <!-- Description for "LANGUAGE_NAME" (Latin) keyboard subtype [CHAR LIMIT=25]
+         (Latin) can be an abbreviation to fit in the CHAR LIMIT. -->
+    <string name="subtype_generic_latin"><xliff:g id="LANGUAGE_NAME" example="Serbian">%s</xliff:g> (Latin)</string>
     <!-- This string is displayed in a language list that allows to choose a language for
 suggestions in a software keyboard. This setting won't give suggestions in any particular
 language, hence "No language".
@@ -452,12 +291,16 @@
     <!-- Description for Emoji keyboard subtype [CHAR LIMIT=25] -->
     <string name="subtype_emoji">Emoji</string>
 
-    <!-- Title of the preference settings for switching keyboard color scheme [CHAR LIMIT=35] -->
-    <string name="keyboard_color_scheme">Color scheme</string>
-    <!-- The keyboard color scheme name, White [CHAR LIMIT=16] -->
-    <string name="keyboard_color_scheme_white">White</string>
-    <!-- The keyboard color scheme name, Blue [CHAR LIMIT=16] -->
-    <string name="keyboard_color_scheme_blue">Blue</string>
+    <!-- Title of the preference settings for switching keyboard theme [CHAR LIMIT=35] -->
+    <string name="keyboard_theme">Keyboard theme</string>
+    <!-- The keyboard theme name, Holo White. This is marked as translatable="false" because this is a proper name of system-wide UI Theme. -->
+    <string name="keyboard_theme_holo_white" translatable="false">Holo White</string>
+    <!-- The keyboard theme name, Holo Blue. This is marked as translatable="false" because this is a proper name of system-wide UI Theme.  -->
+    <string name="keyboard_theme_holo_blue" translatable="false">Holo Blue</string>
+    <!-- The keyboard theme name, Material Dark. This is marked as translatable="false" because this is a proper name of system-wide UI Theme.  -->
+    <string name="keyboard_theme_material_dark" translatable="false">Material Dark</string>
+    <!-- The keyboard theme name, Material Light. This is marked as translatable="false" because this is a proper name of system-wide UI Theme.  -->
+    <string name="keyboard_theme_material_light" translatable="false">Material Light</string>
 
     <!-- Title of the preference settings for custom input styles (language and keyboard layout pairs) [CHAR LIMIT=35]-->
     <string name="custom_input_styles_title">Custom input styles</string>
@@ -480,36 +323,40 @@
     <!-- Title of the button to postpone enabling a custom input style entry in the settings dialog [CHAR LIMIT=15] -->
     <string name="not_now">Not now</string>
     <!-- Toast text to describe the same input style already exists [CHAR LIMIT=64]-->
-    <string name="custom_input_style_already_exists">"The same input style already exists: <xliff:g id="input_style_name">%s</xliff:g>"</string>
+    <string name="custom_input_style_already_exists">"The same input style already exists: <xliff:g id="INPUT_STYLE_NAME" example="English (Dvorak)">%s</xliff:g>"</string>
 
-    <!-- Title of an option for usability study mode -->
-    <string name="prefs_usability_study_mode">Usability study mode</string>
     <!-- Title of the settings for key long press delay [CHAR LIMIT=35] -->
     <string name="prefs_key_longpress_timeout_settings">Key long press delay</string>
     <!-- Title of the settings for keypress vibration duration [CHAR LIMIT=35] -->
     <string name="prefs_keypress_vibration_duration_settings">Keypress vibration duration</string>
     <!-- Title of the settings for keypress sound volume [CHAR LIMIT=35] -->
     <string name="prefs_keypress_sound_volume_settings">Keypress sound volume</string>
+    <!-- Title of the settings for key popup show up animation duration (in milliseconds) [CHAR LIMIT=35] -->
+    <string name="prefs_key_popup_show_up_duration_settings" translatable="false">Key popup show up duration</string>
+    <!-- Title of the settings for key popup dismiss animation duration (in milliseconds) [CHAR LIMIT=35] -->
+    <string name="prefs_key_popup_dismiss_duration_settings" translatable="false">Key popup dismiss duration</string>
+    <!-- Title of the settings for key popup show up animation start scale (in percentile) [CHAR LIMIT=35] -->
+    <string name="prefs_key_popup_show_up_start_scale_settings" translatable="false">Key popup show up start scale</string>
+    <!-- Title of the settings for key popup dismiss animation end scale (in percentile) [CHAR LIMIT=35] -->
+    <string name="prefs_key_popup_dismiss_end_scale_settings" translatable="false">Key popup dismiss end scale</string>
     <!-- Title of the settings for reading an external dictionary file -->
     <string name="prefs_read_external_dictionary">Read external dictionary file</string>
-    <!-- Title of the settings for using only personalization dictionary -->
-    <string name="prefs_use_only_personalization_dictionary" translatable="false">Use only personalization dictionary</string>
-    <!-- Title of the settings for boosting personalization dictionary -->
-    <string name="prefs_boost_personalization_dictionary" translatable="false">Boost personalization dictionary</string>
     <!-- Message to show when there are no files to install as an external dictionary [CHAR LIMIT=100] -->
     <string name="read_external_dictionary_no_files_message">No dictionary files in the Downloads folder</string>
     <!-- Title of the dialog that selects a file to install as an external dictionary [CHAR LIMIT=50] -->
     <string name="read_external_dictionary_multiple_files_title">Select a dictionary file to install</string>
     <!-- Title of the confirmation dialog to install a file as an external dictionary [CHAR LIMIT=50] -->
-    <string name="read_external_dictionary_confirm_install_message">Really install this file for <xliff:g id="locale_name">%s</xliff:g>?</string>
+    <string name="read_external_dictionary_confirm_install_message">Really install this file for <xliff:g id="LANGUAGE_NAME" example="English">%s</xliff:g>?</string>
     <!-- Title for an error dialog that contains the details of the error in the body [CHAR LIMIT=80] -->
     <string name="error">There was an error</string>
+    <!-- Title of the settings group for dumpping dictionary files that have been created on the device [CHAR LIMIT=35] -->
+    <string name="prefs_dump_dynamic_dicts" translatable="false">Dump dictionary</string>
 
     <!-- Title of the button to revert to the default value of the device in the settings dialog [CHAR LIMIT=15] -->
     <string name="button_default">Default</string>
 
     <!-- Title of the setup wizard welcome screen. [CHAR LIMT=40] -->
-    <string name="setup_welcome_title">"Welcome to <xliff:g id="application_name">%s</xliff:g>"</string>
+    <string name="setup_welcome_title">"Welcome to <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string>
     <!-- Additional title of the setup wizard welcome screen, just below the setup_welcome_title. [CHAR_LIMIT=64] -->
     <string name="setup_welcome_additional_description">with Gesture Typing</string>
     <!-- The label of the button that starts the setup wizard. [CHAR_LIMIT=64] -->
@@ -517,23 +364,23 @@
     <!-- The label of the button that navigates the user to the next step of the setup wizard. [CHAR_LIMIT=64] -->
     <string name="setup_next_action">Next step</string>
     <!-- Title of the setup wizard. [CHAR LIMT=40] -->
-    <string name="setup_steps_title">"Setting up <xliff:g id="application_name">%s</xliff:g>"</string>
+    <string name="setup_steps_title">"Setting up <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string>
     <!-- Ordinal number of the 1st step in the setup wizard. [CHAR LIMIT=5] -->
     <string name="setup_step1_bullet" translatable="false">1</string>
     <!-- Title of the 1st step in the setup wizard. [CHAR LIMIT=64] -->
-    <string name="setup_step1_title">"Enable <xliff:g id="application_name">%s</xliff:g>"</string>
+    <string name="setup_step1_title">"Enable <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string>
     <!-- Detailed instruction of the 1st step in the setup wizard. [CHAR LIMIT=120] -->
-    <string name="setup_step1_instruction">"Please check \"<xliff:g id="application_name">%s</xliff:g>\" in your Language &amp; input settings. This will authorize it to run on your device."</string>
+    <string name="setup_step1_instruction">"Please check \"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" in your Language &amp; input settings. This will authorize it to run on your device."</string>
     <!-- Detailed instruction of the already finished 1st step in the setup wizard. [CHAR LIMIT=120] -->
-    <string name="setup_step1_finished_instruction">"<xliff:g id="application_name">%s</xliff:g> is already enabled in your Language &amp; input settings, so this step is done. On to the next one!"</string>
+    <string name="setup_step1_finished_instruction">"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g> is already enabled in your Language &amp; input settings, so this step is done. On to the next one!"</string>
     <!-- The label of the button that triggers the Language & input settings in order to enable the keyboard. [CHAR_LIMIT=64] -->
     <string name="setup_step1_action">Enable in Settings</string>
     <!-- Ordinal number of the 2nd step in the setup wizard. [CHAR LIMIT=5] -->
     <string name="setup_step2_bullet" translatable="false">2</string>
     <!-- Title of the 2nd step in the setup wizard. [CHAR LIMIT=64] -->
-    <string name="setup_step2_title">"Switch to <xliff:g id="application_name">%s</xliff:g>"</string>
+    <string name="setup_step2_title">"Switch to <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>"</string>
     <!-- Detailed instruction of the 2nd step in the setup wizard. [CHAR LIMIT=120] -->
-    <string name="setup_step2_instruction">"Next, select \"<xliff:g id="application_name">%s</xliff:g>\" as your active text-input method."</string>
+    <string name="setup_step2_instruction">"Next, select \"<xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>\" as your active text-input method."</string>
     <!-- The label of the button that triggers the choose input method dialog in order to select the keyboard. [CHAR_LIMIT=64] -->
     <string name="setup_step2_action">Switch input methods</string>
     <!-- Ordinal number of the 3rd step in the setup wizard. [CHAR LIMIT=5] -->
@@ -541,7 +388,7 @@
     <!-- Title of the 3rd step in the setup wizard. [CHAR LIMIT=64] -->
     <string name="setup_step3_title">"Congratulations, you're all set!"</string>
     <!-- Detailed instruction of the 3rd step in the setup wizard. [CHAR LIMIT=120] -->
-    <string name="setup_step3_instruction">Now you can type in all your favorite apps with <xliff:g id="application_name">%s</xliff:g>.</string>
+    <string name="setup_step3_instruction">Now you can type in all your favorite apps with <xliff:g id="APPLICATION_NAME" example="Android Keyboard">%s</xliff:g>.</string>
     <!-- The label of the button that triggers the screen for configuaring additional languages of the keyboard. [CHAR_LIMIT=64] -->
     <string name="setup_step3_action">Configure additional languages</string>
     <!-- The label of the button that finishes the setup wizard. [CHAR_LIMIT=64] -->
@@ -592,13 +439,15 @@
     <!-- Message to display in a dialog box while we are actively updating the word list [CHAR LIMIT=60] -->
     <string name="message_updating">Checking for updates</string>
     <!-- Message to display while the add-on dictionary list is updating [no space constraints on this, there is plenty of space but shorter is better because it's only on the screen for a second] -->
-    <string name="message_loading">Loading...</string>
+    <string name="message_loading">Loading&#x2026;</string>
 
     <!-- String to explain this dictionary is the main dictionary for this language [CHAR_LIMIT=30] -->
     <string name="main_dict_description">Main dictionary</string>
 
     <!-- Standard message to dismiss a dialog box -->
     <string name="cancel">Cancel</string>
+    <!-- Title of the button in a dialog box. The button takes the user to the keyboard settings. [CHAR LIMIT=15] -->
+    <string name="go_to_settings">Settings</string>
 
     <!-- Action to download and install a dictionary [CHAR_LIMIT=15] -->
     <string name="install_dict">Install</string>
@@ -609,24 +458,24 @@
 
     <!-- Message in the popup informing the user a dictionary is available for their language, and asking for a decision to download over their mobile data plan or not. The reason we ask for this is, the data is large and may be downloaded over a paid-per-megabyte connection but a dictionary is also essential to type comfortably, so we ask the user. This only pops in selected cases, when there is no dictionary at all currently, and the only available network seems to be metered. The "Language & input" part should be set to the actual name of the option (message ID 5292716747264442359 in the translation console). [CHAR_LIMIT=700] -->
     <string name="should_download_over_metered_prompt">The selected language on your mobile device has an available dictionary.&lt;br/>
-We recommend &lt;b>downloading&lt;/b> the <xliff:g id="language" example="English">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/>
+We recommend &lt;b>downloading&lt;/b> the <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g> dictionary to improve your typing experience.&lt;br/>
 &lt;br/>
 The download could take a minute or two over 3G. Charges may apply if you don\'t have an &lt;b>unlimited data plan&lt;/b>.&lt;br/>
 If you are not sure which data plan you have, we recommend finding a Wi-Fi connection to start the download automatically.&lt;br/>
 &lt;br/>
 Tip: You can download and remove dictionaries by going to &lt;b>Language &amp; input&lt;/b> in the &lt;b>Settings&lt;/b> menu of your mobile device.</string>
-    <string name="download_over_metered">Download now (<xliff:g id="size_in_megabytes" example="0.7">%1$.1f</xliff:g>MB)</string>
+    <string name="download_over_metered">Download now (<xliff:g id="SIZE_IN_MEGABYTES" example="0.7">%1$.1f</xliff:g>MB)</string>
     <string name="do_not_download_over_metered">Download over Wi-Fi</string>
     <!-- The text of the "dictionary available" notification. -->
-    <string name="dict_available_notification_title">A dictionary is available for <xliff:g id="language" example="English">%1$s</xliff:g></string>
+    <string name="dict_available_notification_title">A dictionary is available for <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g></string>
     <!-- The small subtext in the "dictionary available" notification. -->
     <string name="dict_available_notification_description">Press to review and download</string>
 
     <!-- The text of the toast warning a download is starting automatically to enable suggestions for the selected language [CHAR LIMIT=100] -->
-    <string name="toast_downloading_suggestions">Downloading: suggestions for <xliff:g id="language" example="English">%1$s</xliff:g> will be ready soon.</string>
+    <string name="toast_downloading_suggestions">Downloading: suggestions for <xliff:g id="LANGUAGE_NAME" example="English">%1$s</xliff:g> will be ready soon.</string>
 
     <!-- Version text [CHAR LIMIT=30]-->
-    <string name="version_text">Version <xliff:g id="version_number" example="1.0.1864.643521">%1$s</xliff:g></string>
+    <string name="version_text">Version <xliff:g id="VERSION_NUMBER" example="1.0.1864.643521">%1$s</xliff:g></string>
 
     <!-- User dictionary settings -->
     <!-- User dictionary settings.  The summary of the listem item to go into the User dictionary settings screen. -->
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index 298936d..b139110 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -25,49 +25,48 @@
         <item name="touchPositionCorrectionData">@array/touch_position_correction_data_default</item>
         <item name="rowHeight">25%p</item>
         <item name="moreKeysTemplate">@xml/kbd_more_keys_keyboard_template</item>
-        <item name="keyboardLeftPadding">@fraction/keyboard_left_padding</item>
-        <item name="keyboardRightPadding">@fraction/keyboard_right_padding</item>
+        <item name="keyboardLeftPadding">@fraction/config_keyboard_left_padding</item>
+        <item name="keyboardRightPadding">@fraction/config_keyboard_right_padding</item>
         <item name="maxMoreKeysColumn">@integer/config_max_more_keys_column</item>
     </style>
     <style name="KeyboardView">
         <item name="keyBackground">@drawable/btn_keyboard_key_klp</item>
-        <item name="keyLetterSize">@fraction/key_letter_ratio</item>
-        <item name="keyLargeLetterRatio">@fraction/key_large_letter_ratio</item>
-        <item name="keyLabelSize">@fraction/key_label_ratio</item>
-        <item name="keyLargeLabelRatio">@fraction/key_large_label_ratio</item>
-        <item name="keyHintLetterRatio">@fraction/key_hint_letter_ratio</item>
-        <item name="keyHintLabelRatio">@fraction/key_hint_label_ratio</item>
-        <item name="keyShiftedLetterHintRatio">@fraction/key_uppercase_letter_ratio</item>
+        <item name="keyLetterSize">@fraction/config_key_letter_ratio</item>
+        <item name="keyLargeLetterRatio">@fraction/config_key_large_letter_ratio</item>
+        <item name="keyLabelSize">@fraction/config_key_label_ratio</item>
+        <item name="keyLargeLabelRatio">@fraction/config_key_large_label_ratio</item>
+        <item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio</item>
+        <item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio</item>
+        <item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio</item>
         <item name="keyTypeface">normal</item>
-        <item name="keyLabelHorizontalPadding">@dimen/key_label_horizontal_padding</item>
-        <item name="keyHintLetterPadding">@dimen/key_hint_letter_padding</item>
-        <item name="keyPopupHintLetterPadding">@dimen/key_popup_hint_letter_padding</item>
-        <item name="keyShiftedLetterHintPadding">@dimen/key_uppercase_letter_padding</item>
-        <item name="keyPreviewTextRatio">@fraction/key_preview_text_ratio</item>
-        <item name="verticalCorrection">@dimen/keyboard_vertical_correction</item>
+        <item name="keyHintLetterPadding">@dimen/config_key_hint_letter_padding</item>
+        <item name="keyPopupHintLetterPadding">@dimen/config_key_popup_hint_letter_padding</item>
+        <item name="keyShiftedLetterHintPadding">@dimen/config_key_shifted_letter_hint_padding</item>
+        <item name="keyPreviewTextRatio">@fraction/config_key_preview_text_ratio</item>
+        <item name="verticalCorrection">@dimen/config_keyboard_vertical_correction</item>
         <item name="backgroundDimAlpha">128</item>
-        <item name="gestureFloatingPreviewTextSize">@dimen/gesture_floating_preview_text_size</item>
-        <item name="gestureFloatingPreviewTextOffset">@dimen/gesture_floating_preview_text_offset</item>
-        <item name="gestureFloatingPreviewHorizontalPadding">@dimen/gesture_floating_preview_horizontal_padding</item>
-        <item name="gestureFloatingPreviewVerticalPadding">@dimen/gesture_floating_preview_vertical_padding</item>
-        <item name="gestureFloatingPreviewRoundRadius">@dimen/gesture_floating_preview_round_radius</item>
-        <item name="gestureTrailMinSamplingDistance">@dimen/gesture_trail_min_sampling_distance</item>
-        <item name="gestureTrailMaxInterpolationAngularThreshold">@integer/gesture_trail_max_interpolation_angular_threshold</item>
-        <item name="gestureTrailMaxInterpolationDistanceThreshold">@dimen/gesture_trail_max_interpolation_distance_threshold</item>
-        <item name="gestureTrailMaxInterpolationSegments">@integer/gesture_trail_max_interpolation_segments</item>
+        <item name="gestureFloatingPreviewTextSize">@dimen/config_gesture_floating_preview_text_size</item>
+        <item name="gestureFloatingPreviewTextOffset">@dimen/config_gesture_floating_preview_text_offset</item>
+        <item name="gestureFloatingPreviewHorizontalPadding">@dimen/config_gesture_floating_preview_horizontal_padding</item>
+        <item name="gestureFloatingPreviewVerticalPadding">@dimen/config_gesture_floating_preview_vertical_padding</item>
+        <item name="gestureFloatingPreviewRoundRadius">@dimen/config_gesture_floating_preview_round_radius</item>
+        <item name="gestureTrailMinSamplingDistance">@dimen/config_gesture_trail_min_sampling_distance</item>
+        <item name="gestureTrailMaxInterpolationAngularThreshold">@integer/config_gesture_trail_max_interpolation_angular_threshold</item>
+        <item name="gestureTrailMaxInterpolationDistanceThreshold">@dimen/config_gesture_trail_max_interpolation_distance_threshold</item>
+        <item name="gestureTrailMaxInterpolationSegments">@integer/config_gesture_trail_max_interpolation_segments</item>
         <item name="gestureTrailFadeoutStartDelay">@integer/config_gesture_trail_fadeout_start_delay</item>
         <item name="gestureTrailFadeoutDuration">@integer/config_gesture_trail_fadeout_duration</item>
         <item name="gestureTrailUpdateInterval">@integer/config_gesture_trail_update_interval</item>
-        <item name="gestureTrailStartWidth">@dimen/gesture_trail_start_width</item>
-        <item name="gestureTrailEndWidth">@dimen/gesture_trail_end_width</item>
-        <item name="gestureTrailBodyRatio">@integer/gesture_trail_body_ratio</item>
-        <item name="gestureTrailShadowRatio">@integer/gesture_trail_shadow_ratio</item>
+        <item name="gestureTrailStartWidth">@dimen/config_gesture_trail_start_width</item>
+        <item name="gestureTrailEndWidth">@dimen/config_gesture_trail_end_width</item>
+        <item name="gestureTrailBodyRatio">@integer/config_gesture_trail_body_ratio</item>
+        <item name="gestureTrailShadowRatio">@integer/config_gesture_trail_shadow_ratio</item>
         <!-- Common attributes of MainKeyboardView -->
         <item name="keyHysteresisDistance">@dimen/config_key_hysteresis_distance</item>
         <item name="keyHysteresisDistanceForSlidingModifier">@dimen/config_key_hysteresis_distance_for_sliding_modifier</item>
         <item name="touchNoiseThresholdTime">@integer/config_touch_noise_threshold_time</item>
         <item name="touchNoiseThresholdDistance">@dimen/config_touch_noise_threshold_distance</item>
-        <item name="slidingKeyInputEnable">@bool/config_sliding_key_input_enabled</item>
+        <item name="keySelectionByDraggingFinger">@bool/config_key_selection_by_dragging_finger</item>
         <item name="slidingKeyInputPreviewWidth">@dimen/config_sliding_key_input_preview_width</item>
         <item name="slidingKeyInputPreviewBodyRatio">@integer/config_sliding_key_input_preview_body_ratio</item>
         <item name="slidingKeyInputPreviewShadowRatio">@integer/config_sliding_key_input_preview_shadow_ratio</item>
@@ -75,11 +74,12 @@
         <item name="keyRepeatInterval">@integer/config_key_repeat_interval</item>
         <item name="longPressShiftLockTimeout">@integer/config_longpress_shift_lock_timeout</item>
         <item name="ignoreAltCodeKeyTimeout">@integer/config_ignore_alt_code_key_timeout</item>
-        <item name="keyPreviewHeight">@dimen/key_preview_height</item>
+        <item name="keyPreviewHeight">@dimen/config_key_preview_height</item>
+        <!-- TODO: consolidate key preview linger timeout with the key preview animation parameters. -->
         <item name="keyPreviewLingerTimeout">@integer/config_key_preview_linger_timeout</item>
         <item name="moreKeysKeyboardLayout">@layout/more_keys_keyboard</item>
         <item name="showMoreKeysKeyboardAtTouchedPoint">@bool/config_show_more_keys_keyboard_at_touched_point</item>
-        <item name="spacebarTextRatio">@fraction/spacebar_text_ratio</item>
+        <item name="languageOnSpacebarTextRatio">@fraction/config_language_on_spacebar_text_ratio</item>
         <item name="languageOnSpacebarFinalAlpha">@integer/config_language_on_spacebar_final_alpha</item>
         <item name="languageOnSpacebarFadeoutAnimator">@anim/language_on_spacebar_fadeout</item>
         <!-- Remove animations for now because it could drain a non-negligible amount of battery while typing.
@@ -106,26 +106,32 @@
         parent="KeyboardView" />
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
-    <style
-        name="EmojiPalettesView"
-        parent="KeyboardView"
-    >
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
-    </style>
+    <style name="EmojiPalettesView" />
     <style name="MoreKeysKeyboard" />
     <style
         name="MoreKeysKeyboardView"
         parent="MainKeyboardView" />
     <style name="MoreKeysKeyboardContainer" />
-    <style name="SuggestionStripView">
-        <item name="suggestionsCountInStrip">@integer/suggestions_count_in_strip</item>
-        <item name="centerSuggestionPercentile">@fraction/center_suggestion_percentile</item>
-        <item name="maxMoreSuggestionsRow">@integer/max_more_suggestions_row</item>
-        <item name="minMoreSuggestionsWidth">@fraction/min_more_suggestions_width</item>
+    <style name="SuggestionStripView" />
+    <style name="SuggestionWord">
+        <item name="android:minWidth">@dimen/config_suggestion_min_width</item>
+        <item name="android:textSize">@dimen/config_suggestion_text_size</item>
+        <item name="android:gravity">center</item>
+        <item name="android:paddingLeft">@dimen/config_suggestion_text_horizontal_padding</item>
+        <item name="android:paddingTop">0dp</item>
+        <item name="android:paddingRight">@dimen/config_suggestion_text_horizontal_padding</item>
+        <item name="android:paddingBottom">0dp</item>
+        <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
+             We just need to ignore the system's audio and haptic feedback settings. -->
+        <item name="android:hapticFeedbackEnabled">false</item>
+        <item name="android:soundEffectsEnabled">false</item>
+        <item name="android:focusable">false</item>
+        <item name="android:clickable">false</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:ellipsize">none</item>
     </style>
-    <style name="SuggestionWord" />
     <style name="MoreKeysKeyboardAnimation">
         <item name="android:windowEnterAnimation">@anim/more_keys_keyboard_fadein</item>
         <item name="android:windowExitAnimation">@anim/more_keys_keyboard_fadeout</item>
     </style>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/java/res/values/themes-gb.xml b/java/res/values/themes-gb.xml
deleted file mode 100644
index f52695f..0000000
--- a/java/res/values/themes-gb.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?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>
-    <style name="KeyboardTheme.GB" parent="KeyboardIcons.GB">
-        <item name="keyboardStyle">@style/Keyboard.GB</item>
-        <item name="keyboardViewStyle">@style/KeyboardView.GB</item>
-        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.GB</item>
-        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.GB</item>
-        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.GB</item>
-        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.GB</item>
-        <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.GB</item>
-        <item name="suggestionStripViewStyle">@style/SuggestionStripView.GB</item>
-        <item name="suggestionWordStyle">@style/SuggestionWord.GB</item>
-    </style>
-    <style name="KeyboardIcons.GB">
-        <!-- Keyboard icons -->
-        <item name="iconShiftKey">@drawable/sym_keyboard_shift_holo_dark</item>
-        <item name="iconDeleteKey">@drawable/sym_keyboard_delete_holo_dark</item>
-        <item name="iconSettingsKey">@drawable/sym_keyboard_settings_holo_dark</item>
-        <item name="iconSpaceKey">@drawable/sym_keyboard_space_holo_dark</item>
-        <item name="iconEnterKey">@drawable/sym_keyboard_return_holo_dark</item>
-        <item name="iconSearchKey">@drawable/sym_keyboard_search_holo_dark</item>
-        <item name="iconTabKey">@drawable/sym_keyboard_tab_holo_dark</item>
-        <item name="iconShortcutKey">@drawable/sym_keyboard_mic_holo_dark</item>
-        <item name="iconShortcutForLabel">@drawable/sym_keyboard_label_mic_holo_dark</item>
-        <item name="iconSpaceKeyForNumberLayout">@drawable/sym_keyboard_space</item>
-        <item name="iconShiftKeyShifted">@drawable/sym_keyboard_shift_locked_holo_dark</item>
-        <!-- TODO: Needs non-holo disabled shortcut icon drawable -->
-        <item name="iconShortcutKeyDisabled">@drawable/sym_keyboard_voice_off_holo_dark</item>
-        <item name="iconTabKeyPreview">@drawable/sym_keyboard_feedback_tab</item>
-        <item name="iconLanguageSwitchKey">@drawable/sym_keyboard_language_switch_dark</item>
-        <!-- TODO: Needs dedicated black theme ZWNJ and ZWJ icons -->
-        <item name="iconZwnjKey">@drawable/sym_keyboard_zwnj_holo_dark</item>
-        <item name="iconZwjKey">@drawable/sym_keyboard_zwj_holo_dark</item>
-        <item name="iconEmojiKey">@drawable/sym_keyboard_smiley_holo_dark</item>
-    </style>
-    <style
-        name="Keyboard.GB"
-        parent="Keyboard"
-    >
-        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
-        <item name="themeId">1</item>
-        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_gb</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_gb</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_gb</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_gb</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_gb</item>
-    </style>
-    <style
-        name="KeyboardView.GB"
-        parent="KeyboardView"
-    >
-        <item name="android:background">@drawable/keyboard_background_gb</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_gb</item>
-        <item name="keyTypeface">bold</item>
-        <item name="keyTextColor">@color/key_text_color_gb</item>
-        <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_gb</item>
-        <item name="keyHintLetterColor">@color/key_hint_letter_color_gb</item>
-        <item name="keyHintLabelColor">@color/key_hint_label_color_gb</item>
-        <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_gb</item>
-        <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_gb</item>
-        <item name="keyPreviewTextColor">@color/key_text_color_gb</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_gb</item>
-        <item name="keyTextShadowRadius">2.75</item>
-    </style>
-    <style
-        name="MainKeyboardView.GB"
-        parent="KeyboardView.GB"
-    >
-        <item name="keyPreviewLayout">@layout/key_preview_gb</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset_gb</item>
-        <item name="gestureFloatingPreviewTextColor">@color/highlight_color_gb</item>
-        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_gb</item>
-        <item name="gestureTrailColor">@color/highlight_color_gb</item>
-        <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_gb</item>
-        <item name="autoCorrectionSpacebarLedEnabled">true</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_gb</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_gb</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_gb</item>
-    </style>
-    <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
-         for instance delete button, need themed {@link KeyboardView} attributes. -->
-    <style
-        name="EmojiPalettesView.GB"
-        parent="KeyboardView.GB"
-    >
-        <item name="keyBackground">@drawable/btn_keyboard_key_functional_gb</item>
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_gb</item>
-    </style>
-    <style
-        name="MoreKeysKeyboard.GB"
-        parent="Keyboard.GB"
-    >
-        <item name="keyboardTopPadding">0%p</item>
-        <item name="keyboardBottomPadding">0%p</item>
-        <item name="horizontalGap">0%p</item>
-        <item name="touchPositionCorrectionData">@null</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardView.GB"
-        parent="KeyboardView.GB"
-    >
-        <item name="android:background">@null</item>
-        <item name="keyBackground">@drawable/btn_keyboard_key_popup_gb</item>
-        <item name="keyTypeface">normal</item>
-        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_gb</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardContainer.GB"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_gb</item>
-    </style>
-    <style
-        name="SuggestionStripView.GB"
-        parent="SuggestionStripView"
-    >
-        <item name="android:background">@drawable/keyboard_suggest_strip_gb</item>
-        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
-        <item name="colorValidTypedWord">@color/highlight_color_gb</item>
-        <item name="colorTypedWord">@color/typed_word_color_gb</item>
-        <item name="colorAutoCorrect">@color/highlight_color_gb</item>
-        <item name="colorSuggested">@color/highlight_color_gb</item>
-        <item name="alphaObsoleted">50%</item>
-    </style>
-    <style name="SuggestionWord.GB">
-        <item name="android:background">@drawable/btn_suggestion_gb</item>
-    </style>
-</resources>
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
index 432ad51..6118ce1 100644
--- a/java/res/values/themes-ics.xml
+++ b/java/res/values/themes-ics.xml
@@ -26,7 +26,6 @@
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.ICS</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item>
-        <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.ICS</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item>
         <item name="suggestionWordStyle">@style/SuggestionWord.ICS</item>
     </style>
@@ -36,10 +35,10 @@
     >
         <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
         <item name="themeId">2</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_holo</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_holo</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_holo</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_holo</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
         <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
     </style>
     <style
@@ -48,40 +47,52 @@
     >
         <item name="android:background">@drawable/keyboard_background_holo</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_ics</item>
+        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_ics</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_ics</item>
         <item name="keyTypeface">bold</item>
         <item name="keyTextColor">@color/key_text_color_holo</item>
         <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
+        <item name="functionalTextColor">@color/key_text_color_holo</item>
         <item name="keyHintLetterColor">@color/key_hint_letter_color_holo</item>
         <item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
         <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
         <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
         <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
-        <item name="keyTextShadowRadius">0.0</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
     </style>
     <style
         name="MainKeyboardView.ICS"
         parent="KeyboardView.ICS"
     >
-        <item name="keyPreviewLayout">@layout/key_preview_ics</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
         <item name="gestureFloatingPreviewTextColor">@color/highlight_color_ics</item>
         <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
         <item name="gestureTrailColor">@color/highlight_color_ics</item>
         <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_ics</item>
-        <item name="autoCorrectionSpacebarLedEnabled">false</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_holo</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
+        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
+        <item name="languageOnSpacebarTextShadowRadius">1.0</item>
+        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
     </style>
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
     <style
         name="EmojiPalettesView.ICS"
-        parent="KeyboardView.ICS"
+        parent="MainKeyboardView.ICS"
     >
-        <item name="keyBackgroundEmojiFunctional">@drawable/btn_keyboard_key_functional_ics</item>
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
+        <item name="categoryIndicatorEnabled">true</item>
+        <item name="categoryIndicatorDrawable">@drawable/emoji_category_tab_selected_ics</item>
+        <item name="categoryIndicatorBackground">@drawable/emoji_category_tab_unselected_holo_dark</item>
+        <item name="categoryPageIndicatorColor">@color/highlight_color_ics</item>
+        <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_holo</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
     </style>
     <style
         name="MoreKeysKeyboard.ICS"
@@ -96,29 +107,33 @@
         name="MoreKeysKeyboardView.ICS"
         parent="KeyboardView.ICS"
     >
-        <item name="android:background">@null</item>
+        <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
         <item name="keyTypeface">normal</item>
-        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_holo</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardContainer.ICS"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_ics</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
     </style>
     <style
         name="SuggestionStripView.ICS"
-        parent="SuggestionStripView"
+        parent="KeyboardView.ICS"
     >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
         <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
-        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
+        <item name="android:src">@drawable/suggestions_strip_divider_holo</item>
+        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
         <item name="colorValidTypedWord">@color/typed_word_color_ics</item>
         <item name="colorTypedWord">@color/typed_word_color_ics</item>
         <item name="colorAutoCorrect">@color/highlight_color_ics</item>
         <item name="colorSuggested">@color/suggested_word_color_ics</item>
         <item name="alphaObsoleted">70%</item>
     </style>
-    <style name="SuggestionWord.ICS">
+    <style
+        name="SuggestionWord.ICS"
+        parent="SuggestionWord"
+    >
         <item name="android:background">@drawable/btn_suggestion_ics</item>
+        <item name="android:textColor">@color/highlight_color_ics</item>
     </style>
 </resources>
diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml
index a373001..1933860 100644
--- a/java/res/values/themes-klp.xml
+++ b/java/res/values/themes-klp.xml
@@ -26,7 +26,6 @@
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.KLP</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.KLP</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.KLP</item>
-        <item name="moreKeysKeyboardContainerStyle">@style/MoreKeysKeyboardContainer.KLP</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.KLP</item>
         <item name="suggestionWordStyle">@style/SuggestionWord.KLP</item>
     </style>
@@ -36,10 +35,10 @@
     >
         <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
         <item name="themeId">0</item>
-        <item name="keyboardTopPadding">@fraction/keyboard_top_padding_holo</item>
-        <item name="keyboardBottomPadding">@fraction/keyboard_bottom_padding_holo</item>
-        <item name="horizontalGap">@fraction/key_horizontal_gap_holo</item>
-        <item name="verticalGap">@fraction/key_bottom_gap_holo</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
         <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
     </style>
     <style
@@ -48,40 +47,52 @@
     >
         <item name="android:background">@drawable/keyboard_background_holo</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_klp</item>
+        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_klp</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_klp</item>
         <item name="keyTypeface">bold</item>
         <item name="keyTextColor">@color/key_text_color_holo</item>
         <item name="keyTextInactivatedColor">@color/key_text_inactivated_color_holo</item>
+        <item name="functionalTextColor">@color/key_text_color_holo</item>
         <item name="keyHintLetterColor">@color/key_hint_letter_color_holo</item>
         <item name="keyHintLabelColor">@color/key_hint_label_color_holo</item>
         <item name="keyShiftedLetterHintInactivatedColor">@color/key_shifted_letter_hint_inactivated_color_holo</item>
         <item name="keyShiftedLetterHintActivatedColor">@color/key_shifted_letter_hint_activated_color_holo</item>
         <item name="keyPreviewTextColor">@color/key_text_color_holo</item>
-        <item name="keyTextShadowColor">@color/key_text_shadow_color_holo</item>
-        <item name="keyTextShadowRadius">0.0</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
     </style>
     <style
         name="MainKeyboardView.KLP"
         parent="KeyboardView.KLP"
     >
-        <item name="keyPreviewLayout">@layout/key_preview_klp</item>
-        <item name="keyPreviewOffset">@dimen/key_preview_offset_holo</item>
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_klp</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
         <item name="gestureFloatingPreviewTextColor">@color/highlight_color_klp</item>
         <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_holo</item>
         <item name="gestureTrailColor">@color/highlight_color_klp</item>
         <item name="slidingKeyInputPreviewColor">@color/highlight_translucent_color_klp</item>
-        <item name="autoCorrectionSpacebarLedEnabled">false</item>
-        <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led_holo</item>
-        <item name="spacebarTextColor">@color/spacebar_text_color_holo</item>
-        <item name="spacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
+        <item name="languageOnSpacebarTextColor">@color/spacebar_text_color_holo</item>
+        <item name="languageOnSpacebarTextShadowRadius">1.0</item>
+        <item name="languageOnSpacebarTextShadowColor">@color/spacebar_text_shadow_color_holo</item>
     </style>
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
     <style
         name="EmojiPalettesView.KLP"
-        parent="KeyboardView.KLP"
+        parent="MainKeyboardView.KLP"
     >
-        <item name="keyBackgroundEmojiFunctional">@drawable/btn_keyboard_key_functional_klp</item>
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
+        <item name="categoryIndicatorEnabled">true</item>
+        <item name="categoryIndicatorDrawable">@drawable/emoji_category_tab_selected_klp</item>
+        <item name="categoryIndicatorBackground">@drawable/emoji_category_tab_unselected_holo_dark</item>
+        <item name="categoryPageIndicatorColor">@color/highlight_color_klp</item>
+        <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_holo</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
     </style>
     <style
         name="MoreKeysKeyboard.KLP"
@@ -96,29 +107,33 @@
         name="MoreKeysKeyboardView.KLP"
         parent="KeyboardView.KLP"
     >
-        <item name="android:background">@null</item>
+        <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item>
         <item name="keyTypeface">normal</item>
-        <item name="verticalCorrection">@dimen/more_keys_keyboard_vertical_correction_holo</item>
-    </style>
-    <style
-        name="MoreKeysKeyboardContainer.KLP"
-    >
-        <item name="android:background">@drawable/keyboard_popup_panel_background_klp</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
     </style>
     <style
         name="SuggestionStripView.KLP"
-        parent="SuggestionStripView"
+        parent="KeyboardView.KLP"
     >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
         <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
-        <item name="suggestionStripOption">autoCorrectBold|validTypedWordBold</item>
+        <item name="android:src">@drawable/suggestions_strip_divider_holo</item>
+        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
         <item name="colorValidTypedWord">@color/typed_word_color_klp</item>
         <item name="colorTypedWord">@color/typed_word_color_klp</item>
         <item name="colorAutoCorrect">@color/highlight_color_klp</item>
         <item name="colorSuggested">@color/suggested_word_color_klp</item>
         <item name="alphaObsoleted">70%</item>
     </style>
-    <style name="SuggestionWord.KLP">
+    <style
+        name="SuggestionWord.KLP"
+        parent="SuggestionWord"
+    >
         <item name="android:background">@drawable/btn_suggestion_klp</item>
+        <item name="android:textColor">@color/highlight_color_klp</item>
     </style>
 </resources>
diff --git a/java/res/values/themes-lxx-dark.xml b/java/res/values/themes-lxx-dark.xml
new file mode 100644
index 0000000..f563010
--- /dev/null
+++ b/java/res/values/themes-lxx-dark.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardTheme.LXX_Dark" parent="KeyboardIcons.LXX_Dark">
+        <item name="keyboardStyle">@style/Keyboard.LXX_Dark</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.LXX_Dark</item>
+        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX_Dark</item>
+        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX_Dark</item>
+        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX_Dark</item>
+        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX_Dark</item>
+        <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX_Dark</item>
+        <item name="suggestionWordStyle">@style/SuggestionWord.LXX_Dark</item>
+    </style>
+    <style
+        name="Keyboard.LXX_Dark"
+        parent="Keyboard"
+    >
+        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
+        <item name="themeId">4</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
+        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
+    </style>
+    <style
+        name="KeyboardView.LXX_Dark"
+        parent="KeyboardView"
+    >
+        <item name="android:background">@color/keyboard_background_lxx_dark</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_lxx_dark</item>
+        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_dark</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_dark</item>
+        <item name="spacebarIconWidthRatio">0.9</item>
+        <item name="keyTypeface">normal</item>
+        <item name="keyTextColor">@color/key_text_color_lxx_dark</item>
+        <item name="keyTextInactivatedColor">@color/key_functional_text_color_lxx_dark</item>
+        <item name="functionalTextColor">@color/key_text_color_lxx_dark</item>
+        <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx_dark</item>
+        <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx_dark</item>
+        <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_dark</item>
+        <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_dark</item>
+        <item name="keyPreviewTextColor">@color/key_text_color_lxx_dark</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
+    </style>
+    <style
+        name="MainKeyboardView.LXX_Dark"
+        parent="KeyboardView.LXX_Dark"
+    >
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_lxx_dark</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
+        <item name="gestureFloatingPreviewTextColor">@color/auto_correct_color_lxx_dark</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_lxx_dark</item>
+        <item name="gestureTrailColor">@color/gesture_trail_color_lxx_dark</item>
+        <item name="slidingKeyInputPreviewColor">@color/sliding_key_input_preview_color_lxx_dark</item>
+        <item name="languageOnSpacebarTextColor">@color/key_text_inactive_color_lxx_dark</item>
+        <!-- A negative value to disable text shadow layer. -->
+        <item name="languageOnSpacebarTextShadowRadius">-1.0</item>
+    </style>
+    <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
+         for instance delete button, need themed {@link KeyboardView} attributes. -->
+    <style
+        name="EmojiPalettesView.LXX_Dark"
+        parent="MainKeyboardView.LXX_Dark"
+    >
+        <item name="categoryIndicatorEnabled">false</item>
+        <item name="categoryPageIndicatorColor">@color/highlight_color_lxx_dark</item>
+        <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_lxx_dark</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_lxx_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_lxx_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_lxx_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_lxx_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_lxx_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_lxx_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_lxx_dark</item>
+    </style>
+    <style
+        name="MoreKeysKeyboard.LXX_Dark"
+        parent="Keyboard.LXX_Dark"
+    >
+        <item name="keyboardTopPadding">0%p</item>
+        <item name="keyboardBottomPadding">0%p</item>
+        <item name="horizontalGap">0%p</item>
+        <item name="touchPositionCorrectionData">@null</item>
+    </style>
+    <style
+        name="MoreKeysKeyboardView.LXX_Dark"
+        parent="KeyboardView.LXX_Dark"
+    >
+        <item name="android:background">@drawable/keyboard_popup_panel_background_lxx_dark</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_popup_lxx_dark</item>
+        <item name="keyTypeface">normal</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
+    </style>
+    <style
+        name="SuggestionStripView.LXX_Dark"
+        parent="KeyboardView.LXX_Dark"
+    >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
+        <item name="android:background">@color/suggestions_strip_background_lxx_dark</item>
+        <item name="android:src">@drawable/suggestions_strip_divider_lxx_dark</item>
+        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
+        <item name="colorValidTypedWord">@color/typed_word_color_lxx_dark</item>
+        <item name="colorTypedWord">@color/typed_word_color_lxx_dark</item>
+        <item name="colorAutoCorrect">@color/auto_correct_color_lxx_dark</item>
+        <item name="colorSuggested">@color/suggested_word_color_lxx_dark</item>
+        <item name="alphaObsoleted">70%</item>
+    </style>
+    <style
+        name="SuggestionWord.LXX_Dark"
+        parent="SuggestionWord"
+    >
+        <item name="android:background">@drawable/btn_suggestion_lxx_dark</item>
+        <item name="android:textColor">@color/highlight_color_lxx_dark</item>
+    </style>
+</resources>
diff --git a/java/res/values/themes-lxx-light.xml b/java/res/values/themes-lxx-light.xml
new file mode 100644
index 0000000..48bd313
--- /dev/null
+++ b/java/res/values/themes-lxx-light.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="KeyboardTheme.LXX_Light" parent="KeyboardIcons.LXX_Light">
+        <item name="keyboardStyle">@style/Keyboard.LXX_Light</item>
+        <item name="keyboardViewStyle">@style/KeyboardView.LXX_Light</item>
+        <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX_Light</item>
+        <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX_Light</item>
+        <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX_Light</item>
+        <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX_Light</item>
+        <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX_Light</item>
+        <item name="suggestionWordStyle">@style/SuggestionWord.LXX_Light</item>
+    </style>
+    <style
+        name="Keyboard.LXX_Light"
+        parent="Keyboard"
+    >
+        <!-- This should be aligned with KeyboardSwitcher.KEYBOARD_THEMES[] -->
+        <item name="themeId">3</item>
+        <item name="keyboardTopPadding">@fraction/config_keyboard_top_padding_holo</item>
+        <item name="keyboardBottomPadding">@fraction/config_keyboard_bottom_padding_holo</item>
+        <item name="horizontalGap">@fraction/config_key_horizontal_gap_holo</item>
+        <item name="verticalGap">@fraction/config_key_vertical_gap_holo</item>
+        <item name="touchPositionCorrectionData">@array/touch_position_correction_data_holo</item>
+    </style>
+    <style
+        name="KeyboardView.LXX_Light"
+        parent="KeyboardView"
+    >
+        <item name="android:background">@color/keyboard_background_lxx_light</item>
+        <item name="keyBackground">@drawable/btn_keyboard_key_lxx_light</item>
+        <item name="functionalKeyBackground">@drawable/btn_keyboard_key_functional_lxx_light</item>
+        <item name="spacebarBackground">@drawable/btn_keyboard_spacebar_lxx_light</item>
+        <item name="spacebarIconWidthRatio">0.9</item>
+        <item name="keyTypeface">normal</item>
+        <item name="keyTextColor">@color/key_text_color_lxx_light</item>
+        <item name="keyTextInactivatedColor">@color/key_text_inactive_color_lxx_light</item>
+        <item name="functionalTextColor">@color/key_functional_text_color_lxx_light</item>
+        <item name="keyHintLetterColor">@color/key_hint_letter_color_lxx_light</item>
+        <item name="keyHintLabelColor">@color/key_text_inactive_color_lxx_light</item>
+        <item name="keyShiftedLetterHintInactivatedColor">@color/key_text_inactive_color_lxx_light</item>
+        <item name="keyShiftedLetterHintActivatedColor">@color/key_text_color_lxx_light</item>
+        <item name="keyPreviewTextColor">@color/key_text_color_lxx_light</item>
+        <!-- A negative value to disable key text shadow layer. -->
+        <item name="keyTextShadowRadius">-1.0</item>
+    </style>
+    <style
+        name="MainKeyboardView.LXX_Light"
+        parent="KeyboardView.LXX_Light"
+    >
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_lxx_light</item>
+        <item name="keyPreviewOffset">@dimen/config_key_preview_offset_holo</item>
+        <item name="gestureFloatingPreviewTextColor">@color/auto_correct_color_lxx_light</item>
+        <item name="gestureFloatingPreviewColor">@color/gesture_floating_preview_color_lxx_light</item>
+        <item name="gestureTrailColor">@color/gesture_trail_color_lxx_light</item>
+        <item name="slidingKeyInputPreviewColor">@color/sliding_key_input_preview_color_lxx_light</item>
+        <item name="languageOnSpacebarTextColor">@color/language_on_spacebar_text_color_lxx_light</item>
+        <!-- A negative value to disable text shadow layer. -->
+        <item name="languageOnSpacebarTextShadowRadius">-1.0</item>
+    </style>
+    <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
+         for instance delete button, need themed {@link KeyboardView} attributes. -->
+    <style
+        name="EmojiPalettesView.LXX_Light"
+        parent="MainKeyboardView.LXX_Light"
+    >
+        <item name="categoryIndicatorEnabled">false</item>
+        <item name="categoryPageIndicatorColor">@color/highlight_color_lxx_light</item>
+        <item name="categoryPageIndicatorBackground">@color/emoji_tab_page_indicator_background_lxx_light</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_lxx_light</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_lxx_light</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_lxx_light</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_lxx_light</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_lxx_light</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_lxx_light</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_lxx_light</item>
+    </style>
+    <style
+        name="MoreKeysKeyboard.LXX_Light"
+        parent="Keyboard.LXX_Light"
+    >
+        <item name="keyboardTopPadding">0%p</item>
+        <item name="keyboardBottomPadding">0%p</item>
+        <item name="horizontalGap">0%p</item>
+        <item name="touchPositionCorrectionData">@null</item>
+    </style>
+    <style
+        name="MoreKeysKeyboardView.LXX_Light"
+        parent="KeyboardView.LXX_Light"
+    >
+        <item name="android:background">@drawable/keyboard_popup_panel_background_lxx_light</item>
+        <!-- Reuse KLP key background -->
+        <item name="keyBackground">@drawable/btn_keyboard_key_popup_klp</item>
+        <item name="keyTypeface">normal</item>
+        <item name="verticalCorrection">@dimen/config_more_keys_keyboard_vertical_correction_holo</item>
+    </style>
+    <style
+        name="SuggestionStripView.LXX_Light"
+        parent="KeyboardView.LXX_Light"
+    >
+        <item name="suggestionsCountInStrip">@integer/config_suggestions_count_in_strip</item>
+        <item name="centerSuggestionPercentile">@fraction/config_center_suggestion_percentile</item>
+        <item name="maxMoreSuggestionsRow">@integer/config_max_more_suggestions_row</item>
+        <item name="minMoreSuggestionsWidth">@fraction/config_min_more_suggestions_width</item>
+        <item name="android:background">@color/suggestions_strip_background_lxx_light</item>
+        <item name="android:src">@drawable/suggestions_strip_divider_lxx_light</item>
+        <item name="suggestionStripOptions">autoCorrectBold|validTypedWordBold</item>
+        <item name="colorValidTypedWord">@color/typed_word_color_lxx_light</item>
+        <item name="colorTypedWord">@color/typed_word_color_lxx_light</item>
+        <item name="colorAutoCorrect">@color/auto_correct_color_lxx_light</item>
+        <item name="colorSuggested">@color/suggested_word_color_lxx_light</item>
+        <item name="alphaObsoleted">70%</item>
+    </style>
+    <style
+        name="SuggestionWord.LXX_Light"
+        parent="SuggestionWord"
+    >
+        <item name="android:background">@drawable/btn_suggestion_lxx_light</item>
+        <item name="android:textColor">@color/highlight_color_lxx_light</item>
+    </style>
+</resources>
diff --git a/java/res/values/touch-position-correction.xml b/java/res/values/touch-position-correction.xml
index becec0e..e090d10 100644
--- a/java/res/values/touch-position-correction.xml
+++ b/java/res/values/touch-position-correction.xml
@@ -37,26 +37,6 @@
     </string-array>
 
     <string-array
-        name="touch_position_correction_data_gb"
-        translatable="false"
-    >
-        <!-- First row -->
-        <item>0.0091285</item>
-        <item>0.1193203</item>
-        <item>0.1622607</item>
-
-        <!-- Second row -->
-        <item>-0.0233128</item>
-        <item>0.1379798</item>
-        <item>0.1585229</item>
-
-        <!-- Third row -->
-        <item>-0.0080185</item>
-        <item>0.1911477</item>
-        <item>0.1570948</item>
-    </string-array>
-
-    <string-array
         name="touch_position_correction_data_holo"
         translatable="false"
     >
diff --git a/java/res/values/urls.xml b/java/res/values/urls.xml
deleted file mode 100644
index a8e9ad7..0000000
--- a/java/res/values/urls.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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>
-    <string name="research_logger_upload_url" translatable="false"></string>
-</resources>
diff --git a/java/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml b/java/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml
index 4d8b446..c7d4460 100644
--- a/java/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml
+++ b/java/res/xml-sw600dp-land/kbd_more_keys_keyboard_template.xml
@@ -20,7 +20,7 @@
 
 <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:keyWidth="5%p"
-    latin:rowHeight="@dimen/popup_key_height"
+    latin:rowHeight="@dimen/config_more_keys_keyboard_key_height"
     style="?attr/moreKeysKeyboardStyle"
     >
 </Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml b/java/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml
index d90a588..fbe8cfc 100644
--- a/java/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml
+++ b/java/res/xml-sw600dp/kbd_more_keys_keyboard_template.xml
@@ -20,7 +20,7 @@
 
 <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:keyWidth="8%p"
-    latin:rowHeight="@dimen/popup_key_height"
+    latin:rowHeight="@dimen/config_more_keys_keyboard_key_height"
     style="?attr/moreKeysKeyboardStyle"
     >
 </Keyboard>
diff --git a/java/res/xml-sw600dp/key_azerty3_right.xml b/java/res/xml-sw600dp/key_azerty3_right.xml
deleted file mode 100644
index a5a6e95..0000000
--- a/java/res/xml-sw600dp/key_azerty3_right.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <Key
-        latin:keyLabel=":"
-        latin:keyHintLabel=";"
-        latin:moreKeys=";"
-        latin:keyStyle="hasShiftedLetterHintStyle" />
-</merge>
diff --git a/java/res/xml-sw600dp/key_colemak_colon.xml b/java/res/xml-sw600dp/key_colemak_colon.xml
deleted file mode 100644
index a5a6e95..0000000
--- a/java/res/xml-sw600dp/key_colemak_colon.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <Key
-        latin:keyLabel=":"
-        latin:keyHintLabel=";"
-        latin:moreKeys=";"
-        latin:keyStyle="hasShiftedLetterHintStyle" />
-</merge>
diff --git a/java/res/xml-sw600dp/key_comma.xml b/java/res/xml-sw600dp/key_comma.xml
new file mode 100644
index 0000000..67199e2
--- /dev/null
+++ b/java/res/xml-sw600dp/key_comma.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- The table comma key which may have settings as popup key. -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
+    <key-style
+        latin:styleName="baseTabletCommaKeyStyle"
+        latin:keySpec="!text/keyspec_tablet_comma"
+        latin:keyHintLabel="!text/keyhintlabel_tablet_comma"
+        latin:keyLabelFlags="hasPopupHint"
+        latin:parentStyle="hasShiftedLetterHintStyle" />
+    <switch>
+        <case
+            latin:clobberSettingsKey="true"
+        >
+            <Key
+                latin:moreKeys="!text/morekeys_tablet_comma"
+                latin:keyStyle="baseTabletCommaKeyStyle" />
+        </case>
+        <!-- clobberSettingsKey="false" -->
+        <default>
+            <Key
+                latin:moreKeys="!text/morekeys_tablet_comma,!text/keyspec_settings"
+                latin:keyStyle="baseTabletCommaKeyStyle" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/key_f1.xml b/java/res/xml-sw600dp/key_f1.xml
index ac00532..ba78a64 100644
--- a/java/res/xml-sw600dp/key_f1.xml
+++ b/java/res/xml-sw600dp/key_f1.xml
@@ -23,37 +23,14 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="symbols"
-            latin:mode="url"
-        >
-            <Key
-                latin:keyLabel=":" />
-        </case>
-        <case
-            latin:keyboardLayoutSetElement="symbols"
-        >
-            <Key
-                latin:keyLabel="\@" />
-        </case>
-        <!-- keyboardLayoutSetElement != "symbols" -->
-        <case
             latin:mode="email"
         >
             <Key
-                latin:keyLabel="\@" />
-        </case>
-        <case
-            latin:mode="url"
-        >
-            <Key
-                latin:keyLabel="/"
-                latin:keyHintLabel=":"
-                latin:moreKeys=":"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
+                latin:keySpec="\@" />
         </case>
         <default>
             <Key
-                latin:keyLabel="/" />
+                latin:keySpec="/" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/key_greek_semicolon.xml b/java/res/xml-sw600dp/key_greek_semicolon.xml
deleted file mode 100644
index 3f09419..0000000
--- a/java/res/xml-sw600dp/key_greek_semicolon.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <Key
-        latin:keyLabel=";"
-        latin:keyHintLabel=":"
-        latin:moreKeys=":"
-        latin:keyStyle="hasShiftedLetterHintStyle" />
-</merge>
diff --git a/java/res/xml-sw600dp/key_period.xml b/java/res/xml-sw600dp/key_period.xml
new file mode 100644
index 0000000..d2909d8
--- /dev/null
+++ b/java/res/xml-sw600dp/key_period.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- The table period key which may have different label depending on locale -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
+    <switch>
+        <case
+            latin:languageCode="hi"
+            latin:keyboardLayoutSet="hindi_compact"
+        >
+            <!-- U+0964: "।" DEVANAGARI DANDA -->
+            <Key
+                latin:keySpec="\u0964"
+                latin:keyLabelFlags="hasPopupHint"
+                latin:moreKeys="!autoColumnOrder!8,\\,,.,',#,),(,/,;,@,:,-,&quot;,+,\\%,&amp;"
+                latin:backgroundType="functional" />
+        </case>
+        <default>
+            <Key
+                latin:keySpec="!text/keyspec_tablet_period"
+                latin:keyHintLabel="!text/keyhintlabel_tablet_period"
+                latin:keyLabelFlags="hasPopupHint"
+                latin:moreKeys="!text/morekeys_tablet_period"
+                latin:backgroundType="functional"
+                latin:keyStyle="hasShiftedLetterHintStyle" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/key_question_exclamation.xml b/java/res/xml-sw600dp/key_question_exclamation.xml
index 860a0be..edee5c5 100644
--- a/java/res/xml-sw600dp/key_question_exclamation.xml
+++ b/java/res/xml-sw600dp/key_question_exclamation.xml
@@ -26,11 +26,11 @@
             latin:mode="email|url"
         >
             <Key
-                latin:keyLabel="-" />
+                latin:keySpec="-" />
         </case>
         <default>
             <Key
-                latin:keyLabel="\?"
+                latin:keySpec="\?"
                 latin:keyHintLabel="!"
                 latin:moreKeys="!"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
diff --git a/java/res/xml-sw600dp/key_settings.xml b/java/res/xml-sw600dp/key_settings.xml
new file mode 100644
index 0000000..45915e9
--- /dev/null
+++ b/java/res/xml-sw600dp/key_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:clobberSettingsKey="false"
+        >
+            <Key
+                latin:keyStyle="settingsKeyStyle" />
+        </case>
+        <!-- clobberSettingsKey="true" -->
+        <default>
+            <Spacer />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml-sw600dp/key_shortcut.xml b/java/res/xml-sw600dp/key_shortcut.xml
deleted file mode 100644
index 87fc75c..0000000
--- a/java/res/xml-sw600dp/key_shortcut.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:shortcutKeyEnabled="true"
-            latin:clobberSettingsKey="false"
-        >
-            <Key
-                latin:keyStyle="shortcutKeyStyle"
-                latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/settings_as_more_key" />
-        </case>
-        <case
-            latin:shortcutKeyEnabled="true"
-            latin:clobberSettingsKey="true"
-        >
-            <Key
-                latin:keyStyle="shortcutKeyStyle" />
-        </case>
-        <case
-            latin:shortcutKeyEnabled="false"
-            latin:clobberSettingsKey="false"
-        >
-            <Key
-                latin:keyStyle="settingsKeyStyle" />
-        </case>
-        <!-- shortcutKeyEnabled="false" clobberSettingsKey="true" -->
-        <default>
-            <Spacer />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml-sw600dp/key_space_5kw.xml b/java/res/xml-sw600dp/key_space_5kw.xml
index 86af89f..8302184 100644
--- a/java/res/xml-sw600dp/key_space_5kw.xml
+++ b/java/res/xml-sw600dp/key_space_5kw.xml
@@ -22,8 +22,12 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <switch>
+        <!-- fa: Perisan
+             kn: Kannada
+             ne: Nepali
+             te: Telugu -->
         <case
-            latin:languageCode="fa"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="true"
         >
             <Key
@@ -35,7 +39,7 @@
                 latin:keyStyle="zwnjKeyStyle" />
         </case>
         <case
-            latin:languageCode="fa"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="false"
         >
             <Key
diff --git a/java/res/xml-sw600dp/key_space_symbols.xml b/java/res/xml-sw600dp/key_space_symbols.xml
index 07aa7d1..b3cb5ac 100644
--- a/java/res/xml-sw600dp/key_space_symbols.xml
+++ b/java/res/xml-sw600dp/key_space_symbols.xml
@@ -21,6 +21,7 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <include
-        latin:keyboardLayout="@xml/key_space_5kw" />
+    <Key
+        latin:keyStyle="spaceKeyStyle"
+        latin:keyWidth="45.0%p" />
 </merge>
diff --git a/java/res/xml-sw600dp/key_styles_common.xml b/java/res/xml-sw600dp/key_styles_common.xml
index d817add..877c796 100644
--- a/java/res/xml-sw600dp/key_styles_common.xml
+++ b/java/res/xml-sw600dp/key_styles_common.xml
@@ -35,11 +35,13 @@
                 latin:keyLabelFlags="hasShiftedLetterHint" />
         </default>
     </switch>
+    <!-- Base key style for the key which may have settings key as more keys. -->
+    <include
+        latin:keyboardLayout="@xml/key_styles_settings" />
     <!-- Functional key styles -->
     <!-- Base style for shift key. A single space is used for dummy label in moreKeys. -->
     <key-style
         latin:styleName="baseForShiftKeyStyle"
-        latin:code="!code/key_shift"
         latin:keyActionFlags="noKeyPreview"
         latin:keyLabelFlags="preserveCase"
         latin:moreKeys="!noPanelAutoMoreKey!, |!code/key_capslock" />
@@ -49,7 +51,7 @@
         >
             <key-style
                 latin:styleName="shiftKeyStyle"
-                latin:keyIcon="!icon/shift_key_shifted"
+                latin:keySpec="!icon/shift_key_shifted|!code/key_shift"
                 latin:backgroundType="stickyOff"
                 latin:parentStyle="baseForShiftKeyStyle" />
         </case>
@@ -58,77 +60,57 @@
         >
             <key-style
                 latin:styleName="shiftKeyStyle"
-                latin:keyIcon="!icon/shift_key_shifted"
+                latin:keySpec="!icon/shift_key_shifted|!code/key_shift"
                 latin:backgroundType="stickyOn"
                 latin:parentStyle="baseForShiftKeyStyle" />
         </case>
         <default>
             <key-style
                 latin:styleName="shiftKeyStyle"
-                latin:keyIcon="!icon/shift_key"
+                latin:keySpec="!icon/shift_key|!code/key_shift"
                 latin:backgroundType="stickyOff"
                 latin:parentStyle="baseForShiftKeyStyle" />
         </default>
     </switch>
     <key-style
         latin:styleName="deleteKeyStyle"
-        latin:code="!code/key_delete"
-        latin:keyIcon="!icon/delete_key"
+        latin:keySpec="!icon/delete_key|!code/key_delete"
         latin:keyActionFlags="isRepeatable|noKeyPreview"
         latin:backgroundType="functional" />
     <include
         latin:keyboardLayout="@xml/key_styles_enter" />
-    <!-- Override defaultEnterKeyStyle in key_styles_enter.xml -->
-    <key-style
-        latin:styleName="defaultEnterKeyStyle"
-        latin:code="!code/key_enter"
-        latin:keyIcon="!icon/enter_key"
-        latin:keyLabelFlags="preserveCase|autoXScale|followKeyLargeLabelRatio"
-        latin:keyActionFlags="noKeyPreview"
-        latin:backgroundType="functional"
-        latin:parentStyle="navigateMoreKeysStyle" />
+    <!-- TODO: Currently there is no way to specify icon alignment per theme. -->
     <key-style
         latin:styleName="spaceKeyStyle"
-        latin:code="!code/key_space"
+        latin:keySpec="!icon/space_key|!code/key_space"
         latin:keyActionFlags="noKeyPreview|enableLongPress" />
     <!-- U+200C: ZERO WIDTH NON-JOINER
          U+200D: ZERO WIDTH JOINER -->
     <key-style
         latin:styleName="zwnjKeyStyle"
-        latin:code="0x200C"
-        latin:keyIcon="!icon/zwnj_key"
+        latin:keySpec="!icon/zwnj_key|&#x200C;"
         latin:moreKeys="!icon/zwj_key|&#x200D;"
         latin:keyLabelFlags="hasPopupHint"
         latin:keyActionFlags="noKeyPreview" />
     <key-style
-        latin:styleName="smileyKeyStyle"
-        latin:keyLabel=":-)"
-        latin:keyOutputText=":-) "
-        latin:keyLabelFlags="hasPopupHint|preserveCase"
-        latin:moreKeys="!text/more_keys_for_smiley" />
-    <key-style
         latin:styleName="shortcutKeyStyle"
-        latin:code="!code/key_shortcut"
-        latin:keyIcon="!icon/shortcut_key"
+        latin:keySpec="!icon/shortcut_key|!code/key_shortcut"
         latin:keyIconDisabled="!icon/shortcut_key_disabled"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional" />
     <key-style
         latin:styleName="languageSwitchKeyStyle"
-        latin:code="!code/key_language_switch"
-        latin:keyIcon="!icon/language_switch_key"
+        latin:keySpec="!icon/language_switch_key|!code/key_language_switch"
         latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress"
         latin:altCode="!code/key_space" />
     <key-style
         latin:styleName="emojiKeyStyle"
-        latin:code="!code/key_emoji"
-        latin:keyIcon="!icon/emoji_key"
+        latin:keySpec="!icon/emoji_key|!code/key_emoji"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional" />
     <key-style
         latin:styleName="settingsKeyStyle"
-        latin:code="!code/key_settings"
-        latin:keyIcon="!icon/settings_key"
+        latin:keySpec="!icon/settings_key|!code/key_settings"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional" />
     <switch>
@@ -138,9 +120,7 @@
         >
             <key-style
                 latin:styleName="tabKeyStyle"
-                latin:code="!code/key_action_previous"
-                latin:keyIcon="!icon/tab_key"
-                latin:keyIconPreview="!icon/tab_key_preview"
+                latin:keySpec="!icon/tab_key|!code/key_action_previous"
                 latin:backgroundType="functional" />
         </case>
         <case
@@ -149,49 +129,40 @@
         >
             <key-style
                 latin:styleName="tabKeyStyle"
-                latin:code="!code/key_action_next"
-                latin:keyIcon="!icon/tab_key"
-                latin:keyIconPreview="!icon/tab_key_preview"
+                latin:keySpec="!icon/tab_key|!code/key_action_next"
                 latin:backgroundType="functional" />
         </case>
         <default>
             <key-style
                 latin:styleName="tabKeyStyle"
-                latin:code="!code/key_tab"
-                latin:keyIcon="!icon/tab_key"
-                latin:keyIconPreview="!icon/tab_key_preview"
+                latin:keySpec="!icon/tab_key|!code/key_tab"
                 latin:backgroundType="functional" />
         </default>
     </switch>
     <key-style
         latin:styleName="baseForLayoutSwitchKeyStyle"
-        latin:keyLabelFlags="preserveCase"
+        latin:keyLabelFlags="preserveCase|followFunctionalTextColor"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional" />
     <key-style
         latin:styleName="toSymbolKeyStyle"
-        latin:code="!code/key_switch_alpha_symbol"
-        latin:keyLabel="!text/label_to_symbol_key"
+        latin:keySpec="!text/keylabel_to_symbol|!code/key_switch_alpha_symbol"
         latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="toAlphaKeyStyle"
-        latin:code="!code/key_switch_alpha_symbol"
-        latin:keyLabel="!text/label_to_alpha_key"
+        latin:keySpec="!text/keylabel_to_alpha|!code/key_switch_alpha_symbol"
         latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="toMoreSymbolKeyStyle"
-        latin:code="!code/key_shift"
-        latin:keyLabel="!text/label_to_more_symbol_for_tablet_key"
+        latin:keySpec="!text/keylabel_tablet_to_more_symbol|!code/key_shift"
         latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="backFromMoreSymbolKeyStyle"
-        latin:code="!code/key_shift"
-        latin:keyLabel="!text/label_to_symbol_key"
+        latin:keySpec="!text/keylabel_to_symbol|!code/key_shift"
         latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="comKeyStyle"
-        latin:keyLabel="!text/keylabel_for_popular_domain"
+        latin:keySpec="!text/keyspec_popular_domain"
         latin:keyLabelFlags="autoXScale|fontNormal|hasPopupHint|preserveCase"
-        latin:keyOutputText="!text/keylabel_for_popular_domain"
-        latin:moreKeys="!text/more_keys_for_popular_domain" />
+        latin:moreKeys="!text/morekeys_popular_domain" />
 </merge>
diff --git a/java/res/xml-sw600dp/key_styles_enter.xml b/java/res/xml-sw600dp/key_styles_enter.xml
index 1d8ccfa..740bf35 100644
--- a/java/res/xml-sw600dp/key_styles_enter.xml
+++ b/java/res/xml-sw600dp/key_styles_enter.xml
@@ -21,7 +21,7 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <!-- TODO: Stop using many conditional cases for emoji_key_as_more_key. There are way too many to maintain. -->
+    <!-- TODO: Stop using many conditional cases for keyspec_emoji_key. There are way too many to maintain. -->
     <!-- Navigate more keys style -->
     <switch>
         <!-- latin:passwordInput="true" -->
@@ -32,7 +32,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_previous_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_previous" />
         </case>
         <case
             latin:imeAction="actionNext"
@@ -48,7 +48,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_next_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_next" />
         </case>
         <case
             latin:imeAction="actionPrevious"
@@ -64,7 +64,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_action_previous,!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="true"
@@ -73,7 +73,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_next_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="false"
@@ -82,7 +82,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_previous_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_previous" />
         </case>
         <case
             latin:navigateNext="false"
@@ -99,22 +99,11 @@
     <!-- Enter key style -->
     <key-style
         latin:styleName="defaultEnterKeyStyle"
-        latin:code="!code/key_enter"
-        latin:keyIcon="!icon/enter_key"
-        latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio"
+        latin:keySpec="!icon/enter_key|!code/key_enter"
+        latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio|followFunctionalTextColor"
         latin:keyActionFlags="noKeyPreview"
-        latin:backgroundType="functional"
-        latin:parentStyle="navigateMoreKeysStyle" />
-    <key-style
-        latin:styleName="shiftEnterKeyStyle"
-        latin:code="!code/key_shift_enter"
-        latin:parentStyle="defaultEnterKeyStyle" />
-    <key-style
-        latin:styleName="defaultActionEnterKeyStyle"
-        latin:code="!code/key_enter"
-        latin:keyIcon="!icon/undefined"
         latin:backgroundType="action"
-        latin:parentStyle="defaultEnterKeyStyle" />
+        latin:parentStyle="navigateMoreKeysStyle" />
     <switch>
         <!-- Shift + Enter in textMultiLine field. -->
         <case
@@ -123,63 +112,125 @@
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:parentStyle="shiftEnterKeyStyle" />
+                latin:keySpec="!icon/enter_key|!code/key_shift_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionGo"
+            latin:isIconDefined="go_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/go_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionGo"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_go_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_go_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionNext"
+            latin:isIconDefined="next_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/next_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionNext"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_next_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_next_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionPrevious"
+            latin:isIconDefined="previous_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/previous_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionPrevious"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_previous_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_previous_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionDone"
+            latin:isIconDefined="done_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/done_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionDone"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_done_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_done_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionSend"
+            latin:isIconDefined="send_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/send_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionSend"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_send_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_send_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionSearch"
+            latin:isIconDefined="search_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/search_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionSearch"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyIcon="!icon/search_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_search_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionCustomLabel"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
+                latin:keySpec="dummy_label|!code/key_enter"
                 latin:keyLabelFlags="fromCustomActionLabel"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <!-- imeAction is either actionNone or actionUnspecified. -->
         <default>
diff --git a/java/res/xml-sw600dp/keys_arabic3_left.xml b/java/res/xml-sw600dp/keys_arabic3_left.xml
index 0f2ccc0..87ca105 100644
--- a/java/res/xml-sw600dp/keys_arabic3_left.xml
+++ b/java/res/xml-sw600dp/keys_arabic3_left.xml
@@ -23,10 +23,8 @@
 >
     <!-- U+0630: "ذ" ARABIC LETTER THAL -->
     <Key
-        latin:keyLabel="&#x0630;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0630;" />
     <!-- U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE -->
     <Key
-        latin:keyLabel="&#x0626;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0626;" />
 </merge>
diff --git a/java/res/xml-sw600dp/keys_comma_period.xml b/java/res/xml-sw600dp/keys_comma_period.xml
deleted file mode 100644
index 7604e03..0000000
--- a/java/res/xml-sw600dp/keys_comma_period.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:mode="email|url"
-        >
-            <Key
-                latin:keyLabel=","
-                latin:keyHintLabel="-"
-                latin:moreKeys="-"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="_"
-                latin:moreKeys="_"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
-        <case
-            latin:languageCode="ar"
-        >
-            <Key
-                latin:keyLabel="!text/keylabel_for_apostrophe"
-                latin:keyHintLabel="!text/keyhintlabel_for_apostrophe"
-                latin:moreKeys="!text/more_keys_for_apostrophe"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_arabic_diacritics"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
-        <case
-            latin:languageCode="fa"
-        >
-            <Key
-                latin:keyLabel="!text/keylabel_for_apostrophe"
-                latin:keyHintLabel="!text/keyhintlabel_for_apostrophe"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_apostrophe"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_arabic_diacritics"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
-        <case
-            latin:languageCode="hy"
-        >
-            <!-- U+055D: "՝" ARMENIAN COMMA -->
-            <Key
-                latin:keyLabel="&#x055D;"
-                latin:backgroundType="functional" />
-            <!-- U+0589: "։" ARMENIAN FULL STOP -->
-            <Key
-                latin:keyLabel="&#x0589;"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_punctuation" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel="!text/keylabel_for_tablet_comma"
-                latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_tablet_comma" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="!text/keyhintlabel_for_period"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_period" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml-sw600dp/keys_dvorak_123.xml b/java/res/xml-sw600dp/keys_dvorak_123.xml
index 58416ab..91ceb1c 100644
--- a/java/res/xml-sw600dp/keys_dvorak_123.xml
+++ b/java/res/xml-sw600dp/keys_dvorak_123.xml
@@ -26,31 +26,31 @@
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
         >
             <Key
-                latin:keyLabel="&quot;"
+                latin:keySpec="&quot;"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
             <Key
-                latin:keyLabel="&lt;"
+                latin:keySpec="&lt;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
             <Key
-                latin:keyLabel="&gt;"
+                latin:keySpec="&gt;"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3" />
         </case>
         <default>
             <Key
-                latin:keyLabel="\'"
+                latin:keySpec="\'"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1"
                 latin:moreKeys="!,&quot;" />
             <Key
-                latin:keyLabel=","
+                latin:keySpec=","
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2"
                 latin:moreKeys="\?,&lt;" />
             <Key
-                latin:keyLabel="."
+                latin:keySpec="."
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3"
                 latin:moreKeys="&gt;" />
diff --git a/java/res/xml-sw600dp/keys_exclamation_question.xml b/java/res/xml-sw600dp/keys_exclamation_question.xml
index cd38282..cf2c61e 100644
--- a/java/res/xml-sw600dp/keys_exclamation_question.xml
+++ b/java/res/xml-sw600dp/keys_exclamation_question.xml
@@ -22,7 +22,11 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="!" />
+        latin:keySpec="!"
+        latin:moreKeys="!text/morekeys_exclamation"
+        latin:keyLabelFlags="fontDefault" />
     <Key
-        latin:keyLabel="\?" />
+        latin:keySpec="\?"
+        latin:moreKeys="!text/morekeys_question"
+        latin:keyLabelFlags="fontDefault" />
 </merge>
diff --git a/java/res/xml-sw600dp/keys_farsi3_right.xml b/java/res/xml-sw600dp/keys_farsi3_right.xml
index 3c91ae9..c832d55 100644
--- a/java/res/xml-sw600dp/keys_farsi3_right.xml
+++ b/java/res/xml-sw600dp/keys_farsi3_right.xml
@@ -23,10 +23,8 @@
 >
     <!-- U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE -->
     <Key
-        latin:keyLabel="&#x0622;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0622;" />
     <!-- U+0686: "چ" ARABIC LETTER TCHEH -->
     <Key
-        latin:keyLabel="&#x0686;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0686;" />
 </merge>
diff --git a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
index 324e025..76ac6bb 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
@@ -23,20 +23,20 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
-                latin:keyLabel="["
+                latin:keySpec="["
                 latin:keyHintLabel="{"
                 latin:additionalMoreKeys="{"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
             <Key
-                latin:keyLabel="]"
+                latin:keySpec="]"
                 latin:keyHintLabel="}"
                 latin:additionalMoreKeys="}"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
             <Key
-                latin:keyLabel="\\"
+                latin:keySpec="\\"
                 latin:keyHintLabel="|"
                 latin:additionalMoreKeys="\\|"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
@@ -44,11 +44,11 @@
         <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
         <default>
             <Key
-                latin:keyLabel="{" />
+                latin:keySpec="{" />
             <Key
-                latin:keyLabel="}" />
+                latin:keySpec="}" />
             <Key
-                latin:keyLabel="|" />
+                latin:keySpec="|" />
         </default>
     </switch>
 </merge>
\ No newline at end of file
diff --git a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
index 254b5e5..f18fb50 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
@@ -23,15 +23,15 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
-                latin:keyLabel=";"
+                latin:keySpec=";"
                 latin:keyHintLabel=":"
                 latin:additionalMoreKeys=":"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
             <Key
-                latin:keyLabel="\'"
+                latin:keySpec="\'"
                 latin:keyHintLabel="&quot;"
                 latin:additionalMoreKeys="&quot;"
                 latin:keyStyle="hasShiftedLetterHintStyle"
@@ -40,9 +40,9 @@
         <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
         <default>
             <Key
-                latin:keyLabel=":" />
+                latin:keySpec=":" />
             <Key
-                latin:keyLabel="&quot;"
+                latin:keySpec="&quot;"
                 latin:moreKeys="!fixedColumnOrder!3,!text/double_quotes,!text/single_quotes" />
         </default>
     </switch>
diff --git a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
index 774ff8d..9ac718c 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
@@ -23,24 +23,24 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
-                latin:keyLabel=","
+                latin:keySpec=","
                 latin:keyHintLabel="&lt;"
                 latin:additionalMoreKeys="&lt;"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
             <Key
-                latin:keyLabel="."
+                latin:keySpec="."
                 latin:keyHintLabel="&gt;"
                 latin:additionalMoreKeys="&gt;"
                 latin:keyStyle="hasShiftedLetterHintStyle" />
             <Key
-                latin:keyLabel="/"
+                latin:keySpec="/"
                 latin:keyHintLabel="\?"
                 latin:additionalMoreKeys="\?"
                 latin:keyStyle="hasShiftedLetterHintStyle"
-                latin:moreKeys="!text/more_keys_for_symbols_question" />
+                latin:moreKeys="!text/morekeys_question" />
         </case>
         <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
         <default>
@@ -51,14 +51,14 @@
                  U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
                  U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="&lt;"
+                latin:keySpec="&lt;"
                 latin:moreKeys="!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;" />
             <Key
-                latin:keyLabel="&gt;"
+                latin:keySpec="&gt;"
                 latin:moreKeys="!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;" />
             <Key
-                latin:keyLabel="\?"
-                latin:moreKeys="!text/more_keys_for_symbols_question" />
+                latin:keySpec="\?"
+                latin:moreKeys="!text/morekeys_question" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/row_dvorak4.xml b/java/res/xml-sw600dp/row_dvorak4.xml
index 11b4034..ab2b560 100644
--- a/java/res/xml-sw600dp/row_dvorak4.xml
+++ b/java/res/xml-sw600dp/row_dvorak4.xml
@@ -29,20 +29,20 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <include
-            latin:keyboardLayout="@xml/key_shortcut" />
-        <include
-            latin:keyboardLayout="@xml/key_f1" />
+            latin:keyboardLayout="@xml/key_settings" />
+        <Key
+            latin:keySpec="_"
+            latin:keyHintLabel="-"
+            latin:moreKeys="-"
+            latin:keyStyle="hasShiftedLetterHintStyle" />
         <include
             latin:keyXPos="28.0%p"
             latin:keyboardLayout="@xml/key_space_5kw"
             latin:backgroundType="normal" />
         <include
+            latin:keyboardLayout="@xml/key_f1" />
+        <include
             latin:keyboardLayout="@xml/key_question_exclamation" />
-        <Key
-            latin:keyLabel="-"
-            latin:keyHintLabel="_"
-            latin:moreKeys="_"
-            latin:keyStyle="hasShiftedLetterHintStyle" />
         <include
             latin:keyboardLayout="@xml/key_f2" />
     </Row>
diff --git a/java/res/xml-sw600dp/row_pcqwerty5.xml b/java/res/xml-sw600dp/row_pcqwerty5.xml
index b854f10..ac07f11 100644
--- a/java/res/xml-sw600dp/row_pcqwerty5.xml
+++ b/java/res/xml-sw600dp/row_pcqwerty5.xml
@@ -24,37 +24,32 @@
     <Row
         latin:keyWidth="7.0%p"
     >
+        <include
+            latin:keyWidth="9.0%p"
+            latin:keyboardLayout="@xml/key_settings" />
         <switch>
             <case
                 latin:languageSwitchKeyEnabled="true"
             >
                 <Key
                     latin:keyStyle="languageSwitchKeyStyle"
-                    latin:keyWidth="9.0%p"
-                    latin:backgroundType="functional" />
+                    latin:keyXPos="22.0%p"
+                    latin:keyWidth="9.0%p" />
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyWidth="40.0%p" />
             </case>
-        </switch>
-        <Key
-            latin:keyStyle="spaceKeyStyle"
-            latin:keyXPos="25.5%p"
-            latin:keyWidth="49.0%p" />
-        <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
-            >
-                <include
-                    latin:keyXPos="-9.0%p"
-                    latin:keyWidth="9.0%p"
-                    latin:keyboardLayout="@xml/key_shortcut" />
-            </case>
-            <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
             <default>
-                <include
-                    latin:keyXPos="-9.0%p"
-                    latin:keyWidth="9.0%p"
-                    latin:backgroundType="functional"
-                    latin:keyboardLayout="@xml/key_f2" />
+                <Key
+                    latin:keyStyle="spaceKeyStyle"
+                    latin:keyXPos="29.0%p"
+                    latin:keyWidth="42.0%p" />
             </default>
         </switch>
+        <include
+            latin:keyXPos="-9.0%p"
+            latin:keyWidth="9.0%p"
+            latin:backgroundType="functional"
+            latin:keyboardLayout="@xml/key_f2" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/row_qwerty4.xml b/java/res/xml-sw600dp/row_qwerty4.xml
index 7969dd8..0eb86f2 100644
--- a/java/res/xml-sw600dp/row_qwerty4.xml
+++ b/java/res/xml-sw600dp/row_qwerty4.xml
@@ -29,15 +29,18 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <include
-            latin:keyboardLayout="@xml/key_shortcut" />
-        <include
-            latin:keyboardLayout="@xml/key_f1" />
+            latin:keyboardLayout="@xml/key_comma" />
+        <Key
+            latin:keySpec="_" />
+        <!-- Space key. -->
         <include
             latin:keyXPos="28.0%p"
             latin:keyboardLayout="@xml/key_space_5kw"
             latin:backgroundType="normal" />
         <include
-            latin:keyboardLayout="@xml/keys_comma_period" />
+            latin:keyboardLayout="@xml/key_f1" />
+        <include
+            latin:keyboardLayout="@xml/key_period" />
         <include
             latin:keyboardLayout="@xml/key_f2" />
     </Row>
diff --git a/java/res/xml-sw600dp/rowkeys_dvorak3.xml b/java/res/xml-sw600dp/rowkeys_dvorak3.xml
index 2148bb2..e58d6db 100644
--- a/java/res/xml-sw600dp/rowkeys_dvorak3.xml
+++ b/java/res/xml-sw600dp/rowkeys_dvorak3.xml
@@ -22,26 +22,26 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="q" />
+        latin:keySpec="q" />
     <Key
-        latin:keyLabel="j"
-        latin:moreKeys="!text/more_keys_for_j" />
+        latin:keySpec="j"
+        latin:moreKeys="!text/morekeys_j" />
     <Key
-        latin:keyLabel="k"
-        latin:moreKeys="!text/more_keys_for_k" />
+        latin:keySpec="k"
+        latin:moreKeys="!text/morekeys_k" />
     <Key
-        latin:keyLabel="x" />
+        latin:keySpec="x" />
     <Key
-        latin:keyLabel="b" />
+        latin:keySpec="b" />
     <Key
-        latin:keyLabel="m" />
+        latin:keySpec="m" />
     <Key
-        latin:keyLabel="w"
-        latin:moreKeys="!text/more_keys_for_w" />
+        latin:keySpec="w"
+        latin:moreKeys="!text/morekeys_w" />
     <Key
-        latin:keyLabel="v"
-        latin:moreKeys="!text/more_keys_for_v" />
+        latin:keySpec="v"
+        latin:moreKeys="!text/morekeys_v" />
     <Key
-        latin:keyLabel="z"
-        latin:moreKeys="!text/more_keys_for_z" />
+        latin:keySpec="z"
+        latin:moreKeys="!text/morekeys_z" />
 </merge>
diff --git a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
index 254d3fd..e4b824f 100644
--- a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
+++ b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
@@ -21,87 +21,98 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keyLabel="`"
-        latin:keyHintLabel="~"
-        latin:additionalMoreKeys="~"
-        latin:keyStyle="hasShiftedLetterHintStyle" />
-    <Key
-        latin:keyLabel="1"
-        latin:keyHintLabel="!"
-        latin:additionalMoreKeys="!"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_exclamation,!text/more_keys_for_symbols_1" />
-    <Key
-        latin:keyLabel="2"
-        latin:keyHintLabel="\@"
-        latin:additionalMoreKeys="\@"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_2" />
-    <Key
-        latin:keyLabel="3"
-        latin:keyHintLabel="\#"
-        latin:additionalMoreKeys="\#"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_3" />
-    <Key
-        latin:keyLabel="4"
-        latin:keyHintLabel="$"
-        latin:additionalMoreKeys="$"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_4" />
-    <Key
-        latin:keyLabel="5"
-        latin:keyHintLabel="%"
-        latin:additionalMoreKeys="\\%"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_5" />
-    <Key
-        latin:keyLabel="6"
-        latin:keyHintLabel="^"
-        latin:additionalMoreKeys="^"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_6" />
-    <Key
-        latin:keyLabel="7"
-        latin:keyHintLabel="&amp;"
-        latin:additionalMoreKeys="&amp;"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_7" />
-    <Key
-        latin:keyLabel="8"
-        latin:keyHintLabel="*"
-        latin:additionalMoreKeys="*"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_8" />
-    <Key
-        latin:keyLabel="9"
-        latin:keyHintLabel="("
-        latin:additionalMoreKeys="("
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_9" />
-    <Key
-        latin:keyLabel="0"
-        latin:keyHintLabel=")"
-        latin:additionalMoreKeys=")"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="!text/more_keys_for_symbols_0" />
-    <!-- U+2013: "–" EN DASH
-         U+2014: "—" EM DASH
-         U+00B7: "·" MIDDLE DOT -->
-    <Key
-        latin:keyLabel="-"
-        latin:keyHintLabel="_"
-        latin:additionalMoreKeys="_"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
-    <!-- U+221E: "∞" INFINITY
-         U+2260: "≠" NOT EQUAL TO
-         U+2248: "≈" ALMOST EQUAL TO -->
-    <Key
-        latin:keyLabel="="
-        latin:keyHintLabel="+"
-        latin:additionalMoreKeys="+"
-        latin:keyStyle="hasShiftedLetterHintStyle"
-        latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+        >
+            <Key
+                latin:keySpec="`"
+                latin:keyHintLabel="~"
+                latin:additionalMoreKeys="~"
+                latin:keyStyle="hasShiftedLetterHintStyle" />
+            <Key
+                latin:keySpec="1"
+                latin:keyHintLabel="!"
+                latin:additionalMoreKeys="!"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_exclamation,!text/morekeys_symbols_1" />
+            <Key
+                latin:keySpec="2"
+                latin:keyHintLabel="\@"
+                latin:additionalMoreKeys="\@"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_2" />
+            <Key
+                latin:keySpec="3"
+                latin:keyHintLabel="\#"
+                latin:additionalMoreKeys="\#"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_3" />
+            <Key
+                latin:keySpec="4"
+                latin:keyHintLabel="$"
+                latin:additionalMoreKeys="$"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_4" />
+            <Key
+                latin:keySpec="5"
+                latin:keyHintLabel="%"
+                latin:additionalMoreKeys="\\%"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_5" />
+            <Key
+                latin:keySpec="6"
+                latin:keyHintLabel="^"
+                latin:additionalMoreKeys="^"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_6" />
+            <Key
+                latin:keySpec="7"
+                latin:keyHintLabel="&amp;"
+                latin:additionalMoreKeys="&amp;"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_7" />
+            <Key
+                latin:keySpec="8"
+                latin:keyHintLabel="*"
+                latin:additionalMoreKeys="*"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_8" />
+            <Key
+                latin:keySpec="9"
+                latin:keyHintLabel="("
+                latin:additionalMoreKeys="("
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_9" />
+            <Key
+                latin:keySpec="0"
+                latin:keyHintLabel=")"
+                latin:additionalMoreKeys=")"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="!text/morekeys_symbols_0" />
+            <!-- U+2013: "–" EN DASH
+                 U+2014: "—" EM DASH
+                 U+00B7: "·" MIDDLE DOT -->
+            <Key
+                latin:keySpec="-"
+                latin:keyHintLabel="_"
+                latin:additionalMoreKeys="_"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+            <!-- U+221E: "∞" INFINITY
+                 U+2260: "≠" NOT EQUAL TO
+                 U+2248: "≈" ALMOST EQUAL TO -->
+            <Key
+                latin:keySpec="="
+                latin:keyHintLabel="+"
+                latin:additionalMoreKeys="+"
+                latin:keyStyle="hasShiftedLetterHintStyle"
+                latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+        <default>
+            <include
+                 latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml-sw600dp/rows_arabic.xml b/java/res/xml-sw600dp/rows_arabic.xml
index 5a28d45..1b7b416 100644
--- a/java/res/xml-sw600dp/rows_arabic.xml
+++ b/java/res/xml-sw600dp/rows_arabic.xml
@@ -18,35 +18,31 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_arabic1" />
+        <include latin:keyboardLayout="@xml/rowkeys_arabic1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_arabic2" />
+        <include latin:keyboardLayout="@xml/rowkeys_arabic2" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_arabic3" />
+        <include latin:keyboardLayout="@xml/rowkeys_arabic3" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_armenian_phonetic.xml b/java/res/xml-sw600dp/rows_armenian_phonetic.xml
index 9bc2a18..ebd16cb 100644
--- a/java/res/xml-sw600dp/rows_armenian_phonetic.xml
+++ b/java/res/xml-sw600dp/rows_armenian_phonetic.xml
@@ -18,53 +18,46 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic1" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
-        </Row>
-    <Row
-        latin:keyWidth="9.0%p"
-    >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic2" />
-        <include
-            latin:keyboardLayout="@xml/key_armenian_xeh" />
     </Row>
     <Row
         latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic3" />
-        <include
-            latin:keyboardLayout="@xml/key_armenian_sha" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic2" />
+        <include latin:keyboardLayout="@xml/key_armenian_xeh" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic3" />
+        <include latin:keyboardLayout="@xml/key_armenian_sha" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.8889%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic4" />
-        <include
-            latin:keyboardLayout="@xml/keys_exclamation_question" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic4" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_bengali.xml b/java/res/xml-sw600dp/rows_bengali.xml
new file mode 100644
index 0000000..10b3e4f
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_bengali.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_bengali1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_bengali2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_bengali3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_colemak.xml b/java/res/xml-sw600dp/rows_colemak.xml
index ab059da..7559bfb 100644
--- a/java/res/xml-sw600dp/rows_colemak.xml
+++ b/java/res/xml-sw600dp/rows_colemak.xml
@@ -28,8 +28,6 @@
     >
         <include
             latin:keyboardLayout="@xml/rowkeys_colemak1" />
-        <include
-            latin:keyboardLayout="@xml/key_colemak_colon" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/res/xml-sw600dp/rows_farsi.xml b/java/res/xml-sw600dp/rows_farsi.xml
index a353b67..1d098df 100644
--- a/java/res/xml-sw600dp/rows_farsi.xml
+++ b/java/res/xml-sw600dp/rows_farsi.xml
@@ -18,36 +18,33 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_farsi1" />
+        <include latin:keyboardLayout="@xml/rowkeys_farsi1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_farsi2" />
+        <include latin:keyboardLayout="@xml/rowkeys_farsi2" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <include
             latin:keyboardLayout="@xml/rowkeys_farsi3"
             latin:keyXPos="4.091%p" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_greek.xml b/java/res/xml-sw600dp/rows_greek.xml
index 066dc47..60ee478 100644
--- a/java/res/xml-sw600dp/rows_greek.xml
+++ b/java/res/xml-sw600dp/rows_greek.xml
@@ -27,8 +27,6 @@
         latin:keyWidth="9.0%p"
     >
         <include
-            latin:keyboardLayout="@xml/key_greek_semicolon" />
-        <include
             latin:keyboardLayout="@xml/rowkeys_greek1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
diff --git a/java/res/xml-sw600dp/rows_hebrew.xml b/java/res/xml-sw600dp/rows_hebrew.xml
index 852e176..86b3420 100644
--- a/java/res/xml-sw600dp/rows_hebrew.xml
+++ b/java/res/xml-sw600dp/rows_hebrew.xml
@@ -45,8 +45,10 @@
         latin:keyWidth="9.0%p"
     >
         <include
-            latin:keyboardLayout="@xml/rowkeys_hebrew3"
-            latin:keyXPos="10.0%p" />
+            latin:keyboardLayout="@xml/rowkeys_hebrew3" />
+        <include
+            latin:keyboardLayout="@xml/keys_exclamation_question"
+            latin:keyWidth="9.5%p" />
     </Row>
     <include
         latin:keyboardLayout="@xml/row_qwerty4" />
diff --git a/java/res/xml-sw600dp/rows_hindi.xml b/java/res/xml-sw600dp/rows_hindi.xml
index ca581be..42b92a7 100644
--- a/java/res/xml-sw600dp/rows_hindi.xml
+++ b/java/res/xml-sw600dp/rows_hindi.xml
@@ -18,40 +18,35 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_hindi1" />
+        <include latin:keyboardLayout="@xml/rowkeys_hindi1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_hindi2" />
+        <include latin:keyboardLayout="@xml/rowkeys_hindi2" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_hindi3" />
-        <include
-            latin:keyboardLayout="@xml/keys_exclamation_question" />
+        <include latin:keyboardLayout="@xml/rowkeys_hindi3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_hindi_compact.xml b/java/res/xml-sw600dp/rows_hindi_compact.xml
new file mode 100644
index 0000000..6493451
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_hindi_compact.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_hindi_compact1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_hindi_compact2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_hindi_compact3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_kannada.xml b/java/res/xml-sw600dp/rows_kannada.xml
new file mode 100644
index 0000000..55eedc5
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_kannada.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_khmer.xml b/java/res/xml-sw600dp/rows_khmer.xml
index 2824a5c..800a3ee 100644
--- a/java/res/xml-sw600dp/rows_khmer.xml
+++ b/java/res/xml-sw600dp/rows_khmer.xml
@@ -18,55 +18,48 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer1" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
-        </Row>
-    <Row
-        latin:keyWidth="7.5%p"
-    >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer2" />
     </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer3" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer2" />
+    </Row>
+    <Row
+        latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_khmer3" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer4" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer4" />
         <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-            >
+            <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
                 <Spacer />
             </case>
             <default>
-                <include
-                    latin:keyboardLayout="@xml/keys_exclamation_question" />
+                <include latin:keyboardLayout="@xml/keys_exclamation_question" />
             </default>
         </switch>
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_lao.xml b/java/res/xml-sw600dp/rows_lao.xml
index 446d9bd..264e2d9 100644
--- a/java/res/xml-sw600dp/rows_lao.xml
+++ b/java/res/xml-sw600dp/rows_lao.xml
@@ -18,55 +18,48 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao1" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
-        </Row>
-    <Row
-        latin:keyWidth="7.5%p"
-    >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao2" />
     </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao3" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao2" />
+    </Row>
+    <Row
+        latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_lao3" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao4" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao4" />
         <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-            >
+            <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
                 <Spacer />
             </case>
             <default>
-                <include
-                    latin:keyboardLayout="@xml/keys_exclamation_question" />
+                <include latin:keyboardLayout="@xml/keys_exclamation_question" />
             </default>
         </switch>
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_malayalam.xml b/java/res/xml-sw600dp/rows_malayalam.xml
new file mode 100644
index 0000000..1df7e6e
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_malayalam.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_malayalam1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_malayalam2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_malayalam3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_marathi.xml b/java/res/xml-sw600dp/rows_marathi.xml
new file mode 100644
index 0000000..c77bea5
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_marathi.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_marathi1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_marathi2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_marathi3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_myanmar.xml b/java/res/xml-sw600dp/rows_myanmar.xml
new file mode 100644
index 0000000..20d9d8a
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_myanmar.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar3" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="9.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar4" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_nepali_romanized.xml b/java/res/xml-sw600dp/rows_nepali_romanized.xml
index 21d1dc6..fe73fbd 100644
--- a/java/res/xml-sw600dp/rows_nepali_romanized.xml
+++ b/java/res/xml-sw600dp/rows_nepali_romanized.xml
@@ -18,40 +18,35 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_romanized1" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_romanized1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_romanized2" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_romanized2" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_romanized3" />
-        <include
-            latin:keyboardLayout="@xml/keys_exclamation_question" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_romanized3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_nepali_traditional.xml b/java/res/xml-sw600dp/rows_nepali_traditional.xml
index 90703da..e56271f 100644
--- a/java/res/xml-sw600dp/rows_nepali_traditional.xml
+++ b/java/res/xml-sw600dp/rows_nepali_traditional.xml
@@ -18,40 +18,35 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional1" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional2" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional2" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_left6" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_right5" />
-        </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_left6" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_right5" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-sw600dp/rows_number_normal.xml b/java/res/xml-sw600dp/rows_number_normal.xml
index 37bf2e8..757e779 100644
--- a/java/res/xml-sw600dp/rows_number_normal.xml
+++ b/java/res/xml-sw600dp/rows_number_normal.xml
@@ -23,29 +23,29 @@
 >
     <Row>
         <Key
-            latin:keyLabel="-"
+            latin:keySpec="-"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="+"
+            latin:keySpec="+"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="."
+            latin:keySpec="."
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="1"
+            latin:keySpec="1"
             latin:keyStyle="numKeyStyle"
             latin:keyXPos="31%p" />
         <Key
-            latin:keyLabel="2"
+            latin:keySpec="2"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="3"
+            latin:keySpec="3"
             latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
@@ -58,7 +58,7 @@
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="/"
+            latin:keySpec="/"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
@@ -67,30 +67,30 @@
                 latin:mode="time|datetime"
             >
                 <Key
-                    latin:keyLabel=","
+                    latin:keySpec=","
                     latin:keyLabelFlags="hasPopupHint"
-                    latin:moreKeys="!text/more_keys_for_am_pm"
+                    latin:moreKeys="!text/morekeys_am_pm"
                     latin:keyStyle="numKeyStyle"
                     latin:keyWidth="10%p"
                     latin:backgroundType="functional" />
             </case>
             <default>
                 <Key
-                    latin:keyLabel=","
+                    latin:keySpec=","
                     latin:keyStyle="numKeyStyle"
                     latin:keyWidth="10%p"
                     latin:backgroundType="functional" />
             </default>
         </switch>
         <Key
-            latin:keyLabel="4"
+            latin:keySpec="4"
             latin:keyStyle="numKeyStyle"
             latin:keyXPos="31%p" />
         <Key
-            latin:keyLabel="5"
+            latin:keySpec="5"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="6"
+            latin:keySpec="6"
             latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyStyle="enterKeyStyle"
@@ -99,12 +99,12 @@
     </Row>
     <Row>
         <Key
-            latin:keyLabel="("
+            latin:keySpec="("
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel=")"
+            latin:keySpec=")"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
@@ -113,28 +113,28 @@
                 latin:mode="time|datetime"
             >
                 <Key
-                    latin:keyLabel=":"
+                    latin:keySpec=":"
                     latin:keyStyle="numKeyStyle"
                     latin:keyWidth="10%p"
                     latin:backgroundType="functional" />
             </case>
             <default>
                 <Key
-                    latin:keyLabel="="
+                    latin:keySpec="="
                     latin:keyStyle="numKeyStyle"
                     latin:keyWidth="10%p"
                     latin:backgroundType="functional" />
             </default>
         </switch>
         <Key
-            latin:keyLabel="7"
+            latin:keySpec="7"
             latin:keyStyle="numKeyStyle"
             latin:keyXPos="31%p" />
         <Key
-            latin:keyLabel="8"
+            latin:keySpec="8"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="9"
+            latin:keySpec="9"
             latin:keyStyle="numKeyStyle" />
         <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
         <Spacer />
@@ -148,10 +148,10 @@
             latin:keyStyle="numStarKeyStyle"
             latin:keyXPos="31%p" />
         <Key
-            latin:keyLabel="0"
+            latin:keySpec="0"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="\#"
+            latin:keySpec="\#"
             latin:keyStyle="numKeyStyle" />
         <!-- Note: This Spacer prevents the above key from being marked as a right edge key. -->
         <Spacer
diff --git a/java/res/xml-sw600dp/rows_pcqwerty.xml b/java/res/xml-sw600dp/rows_pcqwerty.xml
index 8714815..73b7e47 100644
--- a/java/res/xml-sw600dp/rows_pcqwerty.xml
+++ b/java/res/xml-sw600dp/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
     <Row
         latin:keyWidth="7.0%p"
     >
-        <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
-            >
-                <include
-                    latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
-            </case>
-            <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
-            <default>
-                <include
-                     latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
-            </default>
-        </switch>
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
@@ -56,7 +45,7 @@
         latin:keyWidth="7.0%p"
     >
         <Spacer
-            latin:keyWidth="12.0%p" />
+            latin:keyWidth="10.0%p" />
         <include
             latin:keyboardLayout="@xml/rowkeys_pcqwerty3" />
         <Key
diff --git a/java/res/xml-sw600dp/rows_phone.xml b/java/res/xml-sw600dp/rows_phone.xml
index c4799bb..9022bc5 100644
--- a/java/res/xml-sw600dp/rows_phone.xml
+++ b/java/res/xml-sw600dp/rows_phone.xml
@@ -27,12 +27,12 @@
         latin:keyboardLayout="@xml/key_styles_number" />
     <Row>
         <Key
-            latin:keyLabel="-"
+            latin:keySpec="-"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="+"
+            latin:keySpec="+"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
@@ -54,12 +54,12 @@
     </Row>
     <Row>
         <Key
-            latin:keyLabel=","
+            latin:keySpec=","
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="."
+            latin:keySpec="."
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
@@ -81,17 +81,17 @@
     </Row>
     <Row>
         <Key
-            latin:keyLabel="("
+            latin:keySpec="("
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel=")"
+            latin:keySpec=")"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
         <Key
-            latin:keyLabel="N"
+            latin:keySpec="N"
             latin:keyStyle="numKeyStyle"
             latin:keyWidth="10%p"
             latin:backgroundType="functional" />
@@ -116,7 +116,7 @@
         <Key
             latin:keyStyle="num0KeyStyle" />
         <Key
-            latin:keyLabel="\#"
+            latin:keySpec="\#"
             latin:keyStyle="numKeyStyle" />
     </Row>
 </merge>
diff --git a/java/res/xml-sw600dp/rows_sinhala.xml b/java/res/xml-sw600dp/rows_sinhala.xml
new file mode 100644
index 0000000..2786028
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_sinhala.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_sinhala1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_sinhala2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <include latin:keyboardLayout="@xml/rowkeys_sinhala3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_swiss.xml b/java/res/xml-sw600dp/rows_swiss.xml
new file mode 100644
index 0000000..4f4ca85
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_swiss.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_swiss1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_swiss2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.0%p" />
+        <Spacer
+            latin:keyWidth="3.181%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_qwertz3" />
+        <include
+            latin:keyboardLayout="@xml/keys_exclamation_question" />
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyXPos="-10.0%p"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_symbols.xml b/java/res/xml-sw600dp/rows_symbols.xml
index cf94b06..a915c33 100644
--- a/java/res/xml-sw600dp/rows_symbols.xml
+++ b/java/res/xml-sw600dp/rows_symbols.xml
@@ -51,9 +51,9 @@
             latin:keyStyle="toMoreSymbolKeyStyle"
             latin:keyWidth="10.0%p" />
         <Key
-            latin:keyLabel="\\" />
+            latin:keySpec="\\" />
         <Key
-            latin:keyLabel="=" />
+            latin:keySpec="=" />
         <include
             latin:keyboardLayout="@xml/rowkeys_symbols3" />
         <Key
@@ -62,6 +62,7 @@
     </Row>
     <Row
         latin:keyWidth="9.0%p"
+        latin:backgroundType="functional"
     >
         <Key
             latin:keyStyle="toAlphaKeyStyle"
diff --git a/java/res/xml-sw600dp/rows_symbols_shift.xml b/java/res/xml-sw600dp/rows_symbols_shift.xml
index 92299f6..7ead4d5 100644
--- a/java/res/xml-sw600dp/rows_symbols_shift.xml
+++ b/java/res/xml-sw600dp/rows_symbols_shift.xml
@@ -54,16 +54,17 @@
             latin:keyboardLayout="@xml/rowkeys_symbols_shift3" />
         <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
         <Key
-            latin:keyLabel="&#x00A1;" />
+            latin:keySpec="&#x00A1;" />
         <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
         <Key
-            latin:keyLabel="&#x00BF;" />
+            latin:keySpec="&#x00BF;" />
         <Key
             latin:keyStyle="backFromMoreSymbolKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row
         latin:keyWidth="9.0%p"
+        latin:backgroundType="functional"
     >
         <Key
             latin:keyStyle="toAlphaKeyStyle"
diff --git a/java/res/xml-sw600dp/rows_tamil.xml b/java/res/xml-sw600dp/rows_tamil.xml
new file mode 100644
index 0000000..785e751
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_tamil.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_tamil1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_tamil2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_tamil3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_telugu.xml b/java/res/xml-sw600dp/rows_telugu.xml
new file mode 100644
index 0000000..c9aeb7e
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_telugu.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_thai.xml b/java/res/xml-sw600dp/rows_thai.xml
index 7738c7f..2006056 100644
--- a/java/res/xml-sw600dp/rows_thai.xml
+++ b/java/res/xml-sw600dp/rows_thai.xml
@@ -18,31 +18,29 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_thai1" />
+        <include latin:keyboardLayout="@xml/rowkeys_thai1" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
-        </Row>
+    </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <include
             latin:keyboardLayout="@xml/rowkeys_thai2"
             latin:keyXPos="2.5%p" />
-        <include
-            latin:keyboardLayout="@xml/key_thai_kho_khuat" />
+        <include latin:keyboardLayout="@xml/key_thai_kho_khuat" />
     </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <include
             latin:keyboardLayout="@xml/rowkeys_thai3"
@@ -53,24 +51,20 @@
     </Row>
     <Row
         latin:keyWidth="7.5%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.0%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_thai4" />
+        <include latin:keyboardLayout="@xml/rowkeys_thai4" />
         <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-            >
+            <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
                 <Spacer />
             </case>
             <default>
-                <include
-                    latin:keyboardLayout="@xml/keys_exclamation_question" />
+                <include latin:keyboardLayout="@xml/keys_exclamation_question" />
             </default>
         </switch>
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml-v16/key_devanagari_sign_anusvara.xml b/java/res/xml-v16/key_devanagari_sign_anusvara.xml
deleted file mode 100644
index 27c7bff..0000000
--- a/java/res/xml-v16/key_devanagari_sign_anusvara.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- U+0902: "ं" DEVANAGARI SIGN ANUSVARA -->
-    <Key
-        latin:keyLabel="&#x0902;"
-        latin:keyLabelFlags="fontNormal" />
-</merge>
diff --git a/java/res/xml-v16/key_devanagari_sign_candrabindu.xml b/java/res/xml-v16/key_devanagari_sign_candrabindu.xml
deleted file mode 100644
index 03017dd..0000000
--- a/java/res/xml-v16/key_devanagari_sign_candrabindu.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
-                 U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
-            <key-style
-                latin:styleName="moreKeysDevanagariSignCandrabindu"
-                latin:moreKeys="&#x0945;" />
-        </case>
-        <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariSignCandrabindu" />
-        </default>
-    </switch>
-    <!-- U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
-    <Key
-        latin:keyStyle="moreKeysDevanagariSignCandrabindu"
-        latin:keyLabel="&#x0901;"
-        latin:keyLabelFlags="fontNormal" />
-</merge>
diff --git a/java/res/xml-v16/key_devanagari_sign_nukta.xml b/java/res/xml-v16/key_devanagari_sign_nukta.xml
deleted file mode 100644
index 09c3477..0000000
--- a/java/res/xml-v16/key_devanagari_sign_nukta.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+097D: "ॽ" DEVANAGARI LETTER GLOTTAL STOP
-                 U+0970: "॰" DEVANAGARI ABBREVIATION SIGN
-                 U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
-             <key-style
-                latin:styleName="moreKeysDevanagariSignNukta"
-                latin:moreKeys="&#x097D;,&#x0970;,&#x093D;" />
-        </case>
-        <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariSignNukta" />
-        </default>
-    </switch>
-    <!-- U+093C: "़" DEVANAGARI SIGN NUKTA -->
-    <Key
-        latin:keyStyle="moreKeysDevanagariSignNukta"
-        latin:keyLabel="&#x093C;"
-        latin:keyLabelFlags="fontNormal" />
-</merge>
diff --git a/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml b/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml
deleted file mode 100644
index 0316a7b..0000000
--- a/java/res/xml-v16/key_devanagari_vowel_sign_candra_o.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O -->
-    <Key
-        latin:keyLabel="&#x0949;"
-        latin:keyLabelFlags="fontNormal" />
-</merge>
diff --git a/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml
deleted file mode 100644
index 4dd3e85..0000000
--- a/java/res/xml-v16/key_devanagari_vowel_sign_vocalic_r.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR -->
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
-                latin:moreKeys="&#x0944;" />
-        </case>
-        <case
-            latin:keyboardLayoutSet="nepali_traditional"
-        >
-            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
-                latin:moreKeys="&#x0913;" />
-        </case>
-        <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignVocalicR" />
-        </default>
-    </switch>
-    <!-- U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
-    <Key
-        latin:keyStyle="moreKeysDevanagariVowelSignVocalicR"
-        latin:keyLabel="&#x0943;"
-        latin:keyLabelFlags="fontNormal" />
-</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml b/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml
new file mode 100644
index 0000000..d5491d2
--- /dev/null
+++ b/java/res/xml-v16/keystyle_devanagari_sign_anusvara.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                 U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                 U+093C: "़" DEVANAGARI SIGN NUKTA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignAnusvara"
+                latin:moreKeys="&#x0903;,&#x0901;,&#x093C;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                 U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignAnusvara"
+                latin:moreKeys="&#x0903;,&#x0901;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignAnusvara" />
+        </default>
+    </switch>
+    <!-- U+0902: "ं" DEVANAGARI SIGN ANUSVARA -->
+    <key-style
+        latin:styleName="baseKeyDevanagariSignAnusvara"
+        latin:parentStyle="moreKeysDevanagariSignAnusvara"
+        latin:keySpec="&#x0902;" />
+</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_candrabindu.xml b/java/res/xml-v16/keystyle_devanagari_sign_candrabindu.xml
new file mode 100644
index 0000000..ef8dec3
--- /dev/null
+++ b/java/res/xml-v16/keystyle_devanagari_sign_candrabindu.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignCandrabindu"
+                latin:moreKeys="&#x0945;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignCandrabindu" />
+        </default>
+    </switch>
+    <!-- U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
+    <key-style
+        latin:styleName="baseKeyDevanagariSignCandrabindu"
+        latin:parentStyle="moreKeysDevanagariSignCandrabindu"
+        latin:keySpec="&#x0901;" />
+</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_nukta.xml b/java/res/xml-v16/keystyle_devanagari_sign_nukta.xml
new file mode 100644
index 0000000..734d060
--- /dev/null
+++ b/java/res/xml-v16/keystyle_devanagari_sign_nukta.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+097D: "ॽ" DEVANAGARI LETTER GLOTTAL STOP
+                 U+0970: "॰" DEVANAGARI ABBREVIATION SIGN
+                 U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignNukta"
+                latin:moreKeys="&#x097D;,&#x0970;,&#x093D;" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_romanized">
+            <!-- U+093C: "़" DEVANAGARI SIGN NUKTA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignNukta"
+                latin:moreKeys="&#x093C;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignNukta" />
+        </default>
+    </switch>
+    <!-- U+093C: "़" DEVANAGARI SIGN NUKTA -->
+    <key-style
+        latin:styleName="baseKeyDevanagariSignNukta"
+        latin:parentStyle="moreKeysDevanagariSignNukta"
+        latin:keySpec="&#x093C;" />
+</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
index a2fbf53..e28ad53 100644
--- a/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
+++ b/java/res/xml-v16/keystyle_devanagari_sign_virama.xml
@@ -22,12 +22,32 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+094D: "्" DEVANAGARI SIGN VIRAMA -->
+            <key-style
+                latin:styleName="moreKeySpecDevanagariSignVirama"
+                latin:moreKeys="&#x094D;" />
+            <!-- U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                 U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x0945;,&#x090D;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0905: "अ" DEVANAGARI LETTER A -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x0905;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignVirama" />
+        </default>
+    </switch>
     <!-- U+094D: "्" DEVANAGARI SIGN VIRAMA -->
     <key-style
         latin:styleName="baseKeyDevanagariSignVirama"
-        latin:keyLabel="&#x094D;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:parentStyle="moreKeysDevanagariSignVirama"
+        latin:keySpec="&#x094D;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml b/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml
index ac56cb7..ea64a10 100644
--- a/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml
+++ b/java/res/xml-v16/keystyle_devanagari_sign_visarga.xml
@@ -22,12 +22,9 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0903: "ः" DEVANAGARI SIGN VISARGA -->
     <key-style
         latin:styleName="baseKeyDevanagariSignVisarga"
-        latin:keyLabel="&#x0903;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0903;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml
index 8e25603..1e63850 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_aa.xml
@@ -22,28 +22,34 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+093E/U+0902: "ां" DEVANAGARI VOWEL SIGN AA/DEVANAGARI SIGN ANUSVARA
                  U+093E/U+0901: "ाँ" DEVANAGARI VOWEL SIGN AA/DEVANAGARI SIGN CANDRABINDU -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAa"
                 latin:moreKeys="&#x093E;&#x0902;,&#x093E;&#x0901;,%" />
         </case>
-        <default>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+093E: "ा" DEVANAGARI VOWEL SIGN AA -->
             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignAa" />
+                latin:styleName="moreKeysDevanagariVowelSignAa"
+                latin:moreKeys="&#x093E;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0906: "आ" DEVANAGARI LETTER AA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAa"
+                latin:moreKeys="&#x0906;,%" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignAa" />
         </default>
     </switch>
     <!-- U+093E: "ा" DEVANAGARI VOWEL SIGN AA -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignAa"
         latin:parentStyle="moreKeysDevanagariVowelSignAa"
-        latin:keyLabel="&#x093E;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x093E;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml
index e790339..acb2894 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ai.xml
@@ -22,35 +22,39 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+0948/U+0902: "ैं" DEVANAGARI VOWEL SIGN AI/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAi"
                 latin:moreKeys="&#x0948;&#x0902;,%" />
         </case>
-        <case
-            latin:keyboardLayoutSet="nepali_traditional"
-        >
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0948: "ै" DEVANAGARI VOWEL SIGN AI -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAi"
+                latin:moreKeys="&#x0948;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0910: "ऐ" DEVANAGARI LETTER AI -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAi"
+                latin:moreKeys="&#x0910;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_traditional">
             <!-- U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAi"
                 latin:moreKeys="&#x0936;&#x094D;&#x0930;" />
         </case>
         <default>
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignAi" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignAi" />
         </default>
     </switch>
     <!-- U+0948: "ै" DEVANAGARI VOWEL SIGN AI -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignAi"
         latin:parentStyle="moreKeysDevanagariVowelSignAi"
-        latin:keyLabel="&#x0948;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0948;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml
index 43387a3..e2c3677 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_au.xml
@@ -22,27 +22,33 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!--U+094C/U+0902: "ौं" DEVANAGARI VOWEL SIGN AU/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAu"
                 latin:moreKeys="&#x094C;&#x0902;,%" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+094C: "ौ" DEVANAGARI VOWEL SIGN AU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAu"
+                latin:moreKeys="&#x094C;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0914: "औ" DEVANAGARI LETTER AU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAu"
+                latin:moreKeys="&#x0914;,%" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignAu" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignAu" />
         </default>
     </switch>
     <!-- U+094C: "ौ" DEVANAGARI VOWEL SIGN AU -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignAu"
         latin:parentStyle="moreKeysDevanagariVowelSignAu"
-        latin:keyLabel="&#x094C;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x094C;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml
new file mode 100644
index 0000000..75ad44f
--- /dev/null
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_e.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraE"
+                latin:moreKeys="&#x0945;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraE"
+                latin:moreKeys="&#x090D;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignCandraE" />
+        </default>
+    </switch>
+    <!-- U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignCandraE"
+        latin:parentStyle="moreKeysDevanagariVowelSignCandraE"
+        latin:keySpec="&#x0945;" />
+</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml
new file mode 100644
index 0000000..e1a4c61
--- /dev/null
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_candra_o.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraO"
+                latin:moreKeys="&#x0949;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraO"
+                latin:moreKeys="&#x0911;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignCandraO" />
+        </default>
+    </switch>
+    <!-- U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignCandraO"
+        latin:parentStyle="moreKeysDevanagariVowelSignCandraO"
+        latin:keySpec="&#x0949;" />
+</merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml
index c70d9d9..6a99eac 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_e.xml
@@ -22,21 +22,27 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+0947/U+0902: "ें" DEVANAGARI VOWEL SIGN E/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignE"
                 latin:moreKeys="&#x0947;&#x0902;" />
         </case>
-        <case
-            latin:keyboardLayoutSet="nepali_traditional"
-        >
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0947: "े" DEVANAGARI VOWEL SIGN E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignE"
+                latin:moreKeys="&#x0947;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+090F: "ए" DEVANAGARI LETTER SHORT E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignE"
+                latin:moreKeys="&#x090F;" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_traditional">
             <!-- U+0903: "ः‍" DEVANAGARI SIGN VISARGA
                  U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
             <key-style
@@ -44,14 +50,12 @@
                 latin:moreKeys="&#x0903;,&#x093D;" />
         </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignE" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignE" />
         </default>
     </switch>
     <!-- U+0947: "े" DEVANAGARI VOWEL SIGN E -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignE"
         latin:parentStyle="moreKeysDevanagariVowelSignE"
-        latin:keyLabel="&#x0947;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0947;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml
index 845c1b0..b66149d 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_i.xml
@@ -22,27 +22,33 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+093F/U+0902: "िं" DEVANAGARI VOWEL SIGN I/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignI"
                 latin:moreKeys="&#x093F;&#x0902;" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+093F: "ि" DEVANAGARI VOWEL SIGN I -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignI"
+                latin:moreKeys="&#x093F;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0907: "इ" DEVANAGARI LETTER I -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignI"
+                latin:moreKeys="&#x0907;" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignI" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignI" />
         </default>
     </switch>
     <!-- U+093F: "ि" DEVANAGARI VOWEL SIGN I -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignI"
         latin:parentStyle="moreKeysDevanagariVowelSignI"
-        latin:keyLabel="&#x093F;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x093F;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml
index 0de9650..97e5007 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_ii.xml
@@ -22,27 +22,33 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+0940/U+0902: "ीं" DEVANAGARI VOWEL SIGN II/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignIi"
                 latin:moreKeys="&#x0940;&#x0902;,%" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0940: "ी" DEVANAGARI VOWEL SIGN II -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignIi"
+                latin:moreKeys="&#x0940;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0908: "ई" DEVANAGARI LETTER II -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignIi"
+                latin:moreKeys="&#x0908;,%" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignIi" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignIi" />
         </default>
     </switch>
     <!-- U+0940: "ी" DEVANAGARI VOWEL SIGN II -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignIi"
         latin:parentStyle="moreKeysDevanagariVowelSignIi"
-        latin:keyLabel="&#x0940;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0940;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml
index 06f07fa..7cec76d 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_o.xml
@@ -22,29 +22,35 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+094B/U+0902: "қं" DEVANAGARI VOWEL SIGN O/DEVANAGARI SIGN ANUSVARA
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+094B/U+0902: "ों" DEVANAGARI VOWEL SIGN O/DEVANAGARI SIGN ANUSVARA
                  U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
                  U+094A: "ॊ" DEVANAGARI VOWEL SIGN SHORT O -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignO"
                 latin:moreKeys="&#x094B;&#x0902;,&#x0949;,&#x094A;" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+094B: "ो" DEVANAGARI VOWEL SIGN O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignO"
+                latin:moreKeys="&#x094B;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignO"
+                latin:moreKeys="&#x0913;" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignO" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignO" />
         </default>
     </switch>
     <!-- U+094B: "ो" DEVANAGARI VOWEL SIGN O -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignO"
         latin:parentStyle="moreKeysDevanagariVowelSignO"
-        latin:keyLabel="&#x094B;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x094B;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml
index 469a27b..c14f920 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_u.xml
@@ -22,28 +22,34 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+0941/U+0902: "ुं" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN ANUSVARA
                  U+0941/U+0901: "ुँ" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN CANDRABINDU -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignU"
                 latin:moreKeys="&#x0941;&#x0902;,&#x0941;&#x0901;" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0941: "ु" DEVANAGARI VOWEL SIGN U -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignU"
+                latin:moreKeys="&#x0941;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0909: "उ" DEVANAGARI LETTER U -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignU"
+                latin:moreKeys="&#x0909;" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignU" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignU" />
         </default>
     </switch>
     <!-- U+0941: "ु" DEVANAGARI VOWEL SIGN U -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignU"
         latin:parentStyle="moreKeysDevanagariVowelSignU"
-        latin:keyLabel="&#x0941;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0941;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml
index 25867c0..3134de7 100644
--- a/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_uu.xml
@@ -22,28 +22,34 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+0942/U+0902: "ूं" DEVANAGARI VOWEL SIGN UU/DEVANAGARI SIGN ANUSVARA
                  U+0942/U+0901: "ूँ" DEVANAGARI VOWEL SIGN UU/DEVANAGARI SIGN CANDRABINDU -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignUu"
                 latin:moreKeys="&#x0942;&#x0902;,&#x0942;&#x0901;,%" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+0942: "ू" DEVANAGARI VOWEL SIGN UU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignUu"
+                latin:moreKeys="&#x0942;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+090A: "ऊ" DEVANAGARI LETTER UU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignUu"
+                latin:moreKeys="&#x090A;,%" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignUu" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignUu" />
         </default>
     </switch>
     <!-- U+0942: "ू" DEVANAGARI VOWEL SIGN UU -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignUu"
         latin:parentStyle="moreKeysDevanagariVowelSignUu"
-        latin:keyLabel="&#x0942;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0942;" />
 </merge>
diff --git a/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml
new file mode 100644
index 0000000..da510c1
--- /dev/null
+++ b/java/res/xml-v16/keystyle_devanagari_vowel_sign_vocalic_r.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0944;" />
+        </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                 U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x090B;,&#x0943;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0931: "ऱ" DEVANAGARI LETTER RRA
+                 U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                 U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0931;,&#x090B;,&#x0943;" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_traditional">
+            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0913;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignVocalicR" />
+        </default>
+    </switch>
+    <!-- U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignVocalicR"
+        latin:parentStyle="moreKeysDevanagariVowelSignVocalicR"
+        latin:keySpec="&#x0943;" />
+</merge>
diff --git a/java/res/xml/kbd_armenian_phonetic.xml b/java/res/xml/kbd_armenian_phonetic.xml
index 1eb3c7e..da12870 100644
--- a/java/res/xml/kbd_armenian_phonetic.xml
+++ b/java/res/xml/kbd_armenian_phonetic.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5row"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
+    latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+    latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
     latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
 >
     <include
diff --git a/java/res/xml/kbd_bengali.xml b/java/res/xml/kbd_bengali.xml
new file mode 100644
index 0000000..879a897
--- /dev/null
+++ b/java/res/xml/kbd_bengali.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_bengali" />
+</Keyboard>
diff --git a/java/res/xml/kbd_emoji_category1.xml b/java/res/xml/kbd_emoji_category1.xml
index c11a830..5145ea9 100644
--- a/java/res/xml/kbd_emoji_category1.xml
+++ b/java/res/xml/kbd_emoji_category1.xml
@@ -20,9 +20,9 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
     latin:keyLetterSize="90%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:codesArray="@array/emoji_faces"
diff --git a/java/res/xml/kbd_emoji_category2.xml b/java/res/xml/kbd_emoji_category2.xml
index d3e5890..ac8784f 100644
--- a/java/res/xml/kbd_emoji_category2.xml
+++ b/java/res/xml/kbd_emoji_category2.xml
@@ -20,9 +20,9 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
     latin:keyLetterSize="90%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:codesArray="@array/emoji_objects"
diff --git a/java/res/xml/kbd_emoji_category3.xml b/java/res/xml/kbd_emoji_category3.xml
index 0efafa8..88c4db9 100644
--- a/java/res/xml/kbd_emoji_category3.xml
+++ b/java/res/xml/kbd_emoji_category3.xml
@@ -20,9 +20,9 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
     latin:keyLetterSize="90%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:codesArray="@array/emoji_nature"
diff --git a/java/res/xml/kbd_emoji_category4.xml b/java/res/xml/kbd_emoji_category4.xml
index e529120..262384d 100644
--- a/java/res/xml/kbd_emoji_category4.xml
+++ b/java/res/xml/kbd_emoji_category4.xml
@@ -20,9 +20,9 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
     latin:keyLetterSize="90%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:codesArray="@array/emoji_places"
diff --git a/java/res/xml/kbd_emoji_category5.xml b/java/res/xml/kbd_emoji_category5.xml
index 1836879..bf823f9 100644
--- a/java/res/xml/kbd_emoji_category5.xml
+++ b/java/res/xml/kbd_emoji_category5.xml
@@ -20,9 +20,9 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
     latin:keyLetterSize="90%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:codesArray="@array/emoji_symbols"
diff --git a/java/res/xml/kbd_emoji_category6.xml b/java/res/xml/kbd_emoji_category6.xml
index b47ebfe..edb82fc 100644
--- a/java/res/xml/kbd_emoji_category6.xml
+++ b/java/res/xml/kbd_emoji_category6.xml
@@ -20,10 +20,10 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
     latin:keyLetterSize="90%p"
     latin:keyLabelSize="60%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:textsArray="@array/emoji_emoticons"
diff --git a/java/res/xml/kbd_emoji_recents.xml b/java/res/xml/kbd_emoji_recents.xml
index 73926ec..edf3872 100644
--- a/java/res/xml/kbd_emoji_recents.xml
+++ b/java/res/xml/kbd_emoji_recents.xml
@@ -20,10 +20,10 @@
 
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
-    latin:keyWidth="@fraction/emoji_keyboard_key_width"
-    latin:keyLetterSize="@fraction/emoji_keyboard_key_letter_size"
+    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
+    latin:keyLetterSize="@fraction/config_emoji_keyboard_key_letter_size"
     latin:keyLabelSize="60%p"
-    latin:rowHeight="@fraction/emoji_keyboard_row_height"
+    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
 >
     <GridRows
         latin:codesArray="@array/emoji_recents"
diff --git a/java/res/xml/kbd_hindi_compact.xml b/java/res/xml/kbd_hindi_compact.xml
new file mode 100644
index 0000000..7502bba
--- /dev/null
+++ b/java/res/xml/kbd_hindi_compact.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_hindi_compact" />
+</Keyboard>
diff --git a/java/res/xml/kbd_kannada.xml b/java/res/xml/kbd_kannada.xml
new file mode 100644
index 0000000..0c59228
--- /dev/null
+++ b/java/res/xml/kbd_kannada.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_kannada" />
+</Keyboard>
diff --git a/java/res/xml/kbd_khmer.xml b/java/res/xml/kbd_khmer.xml
index 7a2337a..d703e78 100644
--- a/java/res/xml/kbd_khmer.xml
+++ b/java/res/xml/kbd_khmer.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5row"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
+    latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+    latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
     latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
 >
     <include
diff --git a/java/res/xml/kbd_lao.xml b/java/res/xml/kbd_lao.xml
index 2bba330..6f77095 100644
--- a/java/res/xml/kbd_lao.xml
+++ b/java/res/xml/kbd_lao.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5row"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
+    latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+    latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
     latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
 >
     <include
diff --git a/java/res/xml/kbd_malayalam.xml b/java/res/xml/kbd_malayalam.xml
new file mode 100644
index 0000000..000b23f
--- /dev/null
+++ b/java/res/xml/kbd_malayalam.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_malayalam" />
+</Keyboard>
diff --git a/java/res/xml/kbd_marathi.xml b/java/res/xml/kbd_marathi.xml
new file mode 100644
index 0000000..4328cd6
--- /dev/null
+++ b/java/res/xml/kbd_marathi.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_marathi" />
+</Keyboard>
diff --git a/java/res/xml/kbd_more_keys_keyboard_template.xml b/java/res/xml/kbd_more_keys_keyboard_template.xml
index 537973d..7104ec7 100644
--- a/java/res/xml/kbd_more_keys_keyboard_template.xml
+++ b/java/res/xml/kbd_more_keys_keyboard_template.xml
@@ -20,7 +20,7 @@
 
 <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:keyWidth="10%p"
-    latin:rowHeight="@dimen/popup_key_height"
+    latin:rowHeight="@dimen/config_more_keys_keyboard_key_height"
     style="?attr/moreKeysKeyboardStyle"
     >
 </Keyboard>
diff --git a/java/res/xml/kbd_myanmar.xml b/java/res/xml/kbd_myanmar.xml
new file mode 100644
index 0000000..af997b1
--- /dev/null
+++ b/java/res/xml/kbd_myanmar.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    latin:rowHeight="20%p"
+    latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+    latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
+    latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_myanmar" />
+</Keyboard>
diff --git a/java/res/xml/kbd_pcqwerty.xml b/java/res/xml/kbd_pcqwerty.xml
index 5155bc5..0456964 100644
--- a/java/res/xml/kbd_pcqwerty.xml
+++ b/java/res/xml/kbd_pcqwerty.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5row"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
+    latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+    latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
     latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
 >
     <include
diff --git a/java/res/xml/kbd_sinhala.xml b/java/res/xml/kbd_sinhala.xml
new file mode 100644
index 0000000..6c0f4bc
--- /dev/null
+++ b/java/res/xml/kbd_sinhala.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_sinhala" />
+</Keyboard>
diff --git a/java/res/xml/kbd_suggestions_pane_template.xml b/java/res/xml/kbd_suggestions_pane_template.xml
index 21316e6..5b4f606 100644
--- a/java/res/xml/kbd_suggestions_pane_template.xml
+++ b/java/res/xml/kbd_suggestions_pane_template.xml
@@ -20,6 +20,6 @@
 
 <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:keyWidth="10%p"
-    latin:rowHeight="@dimen/more_suggestions_row_height"
+    latin:rowHeight="@dimen/config_more_suggestions_row_height"
     >
 </Keyboard>
diff --git a/java/res/xml/kbd_swiss.xml b/java/res/xml/kbd_swiss.xml
new file mode 100644
index 0000000..c64ad11
--- /dev/null
+++ b/java/res/xml/kbd_swiss.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_swiss" />
+</Keyboard>
diff --git a/java/res/xml/kbd_tamil.xml b/java/res/xml/kbd_tamil.xml
new file mode 100644
index 0000000..617e4de
--- /dev/null
+++ b/java/res/xml/kbd_tamil.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_tamil" />
+</Keyboard>
diff --git a/java/res/xml/kbd_telugu.xml b/java/res/xml/kbd_telugu.xml
new file mode 100644
index 0000000..b4fc337
--- /dev/null
+++ b/java/res/xml/kbd_telugu.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_telugu" />
+</Keyboard>
diff --git a/java/res/xml/kbd_thai.xml b/java/res/xml/kbd_thai.xml
index 294bffb..7e65217 100644
--- a/java/res/xml/kbd_thai.xml
+++ b/java/res/xml/kbd_thai.xml
@@ -21,9 +21,9 @@
 <Keyboard
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     latin:rowHeight="20%p"
-    latin:verticalGap="@fraction/key_bottom_gap_5row"
-    latin:keyLetterSize="@fraction/key_letter_ratio_5row"
-    latin:keyShiftedLetterHintRatio="@fraction/key_uppercase_letter_ratio_5row"
+    latin:verticalGap="@fraction/config_key_vertical_gap_5row"
+    latin:keyLetterSize="@fraction/config_key_letter_ratio_5row"
+    latin:keyShiftedLetterHintRatio="@fraction/config_key_shifted_letter_hint_ratio_5row"
     latin:touchPositionCorrectionData="@array/touch_position_correction_data_default"
 >
     <include
diff --git a/java/res/xml/key_armenian_sha.xml b/java/res/xml/key_armenian_sha.xml
index 3865c19..111d426 100644
--- a/java/res/xml/key_armenian_sha.xml
+++ b/java/res/xml/key_armenian_sha.xml
@@ -23,6 +23,5 @@
 >
     <!-- U+0577: "շ" ARMENIAN SMALL LETTER SHA -->
     <Key
-        latin:keyLabel="&#x0577;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0577;" />
 </merge>
diff --git a/java/res/xml/key_armenian_xeh.xml b/java/res/xml/key_armenian_xeh.xml
index 007a580..3bbc405 100644
--- a/java/res/xml/key_armenian_xeh.xml
+++ b/java/res/xml/key_armenian_xeh.xml
@@ -23,6 +23,5 @@
 >
     <!-- U+056D: "խ" ARMENIAN SMALL LETTER XEH -->
     <Key
-        latin:keyLabel="&#x056D;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x056D;" />
 </merge>
diff --git a/java/res/xml/key_azerty3_right.xml b/java/res/xml/key_azerty3_right.xml
deleted file mode 100644
index 65789ea..0000000
--- a/java/res/xml/key_azerty3_right.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
-        >
-            <Key
-                latin:keyLabel="\?" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel="\'"
-                latin:moreKeys="!text/more_keys_for_single_quote" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/key_colemak_colon.xml b/java/res/xml/key_colemak_colon.xml
deleted file mode 100644
index 307b4eb..0000000
--- a/java/res/xml/key_colemak_colon.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
-        >
-            <Key
-                latin:keyLabel=";"
-                latin:keyHintLabel="0"
-                latin:additionalMoreKeys="0" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel=":"
-                latin:keyHintLabel="0"
-                latin:additionalMoreKeys="0"
-                latin:moreKeys=";" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/key_devanagari_sign_anusvara.xml b/java/res/xml/key_devanagari_sign_anusvara.xml
deleted file mode 100644
index 0acd3bc..0000000
--- a/java/res/xml/key_devanagari_sign_anusvara.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- U+25CC: "◌" DOTTED CIRCLE
-         U+0902: "ं" DEVANAGARI SIGN ANUSVARA -->
-    <Key
-        latin:keyLabel="&#x25CC;&#x0902;"
-        latin:code="0x0902"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
-</merge>
diff --git a/java/res/xml/key_devanagari_sign_candrabindu.xml b/java/res/xml/key_devanagari_sign_candrabindu.xml
deleted file mode 100644
index df0c4e0..0000000
--- a/java/res/xml/key_devanagari_sign_candrabindu.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+25CC: "◌" DOTTED CIRCLE
-                 U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
-            <key-style
-                latin:styleName="moreKeysDevanagariSignCandrabindu"
-                latin:moreKeys="&#x25CC;&#x0945;|&#x0945;" />
-        </case>
-        <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariSignCandrabindu" />
-        </default>
-    </switch>
-    <!-- U+25CC: "◌" DOTTED CIRCLE
-         U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
-    <Key
-        latin:keyStyle="moreKeysDevanagariSignCandrabindu"
-        latin:keyLabel="&#x25CC;&#x0901;"
-        latin:code="0x0901"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
-</merge>
diff --git a/java/res/xml/key_devanagari_sign_nukta.xml b/java/res/xml/key_devanagari_sign_nukta.xml
deleted file mode 100644
index f7a03ee..0000000
--- a/java/res/xml/key_devanagari_sign_nukta.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+25CC: "◌" DOTTED CIRCLE
-                 U+097D: "ॽ" DEVANAGARI LETTER GLOTTAL STOP
-                 U+0970: "॰" DEVANAGARI ABBREVIATION SIGN
-                 U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
-             <key-style
-                latin:styleName="moreKeysDevanagariSignNukta"
-                latin:moreKeys="&#x25CC;&#x097D;|&#x097D;,&#x25CC;&#x0970;|&#x0970;,&#x25CC;&#x093D;|&#x093D;" />
-        </case>
-        <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariSignNukta" />
-        </default>
-    </switch>
-    <!-- U+25CC: "◌" DOTTED CIRCLE
-         U+093C: "़" DEVANAGARI SIGN NUKTA -->
-    <Key
-        latin:keyStyle="moreKeysDevanagariSignNukta"
-        latin:keyLabel="&#x25CC;&#x093C;"
-        latin:code="0x093C"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
-</merge>
diff --git a/java/res/xml/key_devanagari_vowel_sign_candra_o.xml b/java/res/xml/key_devanagari_vowel_sign_candra_o.xml
deleted file mode 100644
index 370fc54..0000000
--- a/java/res/xml/key_devanagari_vowel_sign_candra_o.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- U+25CC: "◌" DOTTED CIRCLE
-         U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O -->
-    <Key
-        latin:keyLabel="&#x25CC;&#x0949;"
-        latin:code="0x0949"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
-</merge>
diff --git a/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml
deleted file mode 100644
index f150d7e..0000000
--- a/java/res/xml/key_devanagari_vowel_sign_vocalic_r.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+25CC: "◌" DOTTED CIRCLE
-                 U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR -->
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
-                latin:moreKeys="&#x25CC;&#x0944;|&#x0944;" />
-        </case>
-        <case
-            latin:keyboardLayoutSet="nepali_traditional"
-        >
-            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
-                latin:moreKeys="&#x0913;" />
-        </case>
-        <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignVocalicR" />
-        </default>
-    </switch>
-    <!-- U+25CC: "◌" DOTTED CIRCLE
-         U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
-    <Key
-        latin:keyStyle="moreKeysDevanagariVowelSignVocalicR"
-        latin:keyLabel="&#x25CC;&#x0943;"
-        latin:code="0x0943"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
-</merge>
diff --git a/java/res/xml/key_f1.xml b/java/res/xml/key_f1.xml
index 72e38cb..7bd7385 100644
--- a/java/res/xml/key_f1.xml
+++ b/java/res/xml/key_f1.xml
@@ -26,29 +26,21 @@
             latin:mode="url"
         >
             <Key
-                latin:keyLabel="/"
-                latin:keyStyle="f1MoreKeysStyle" />
+                latin:keySpec="/"
+                latin:keyStyle="settingsMoreKeysStyle" />
         </case>
         <case
             latin:mode="email"
         >
             <Key
-                latin:keyLabel="\@"
-                latin:keyStyle="f1MoreKeysStyle" />
+                latin:keySpec="\@"
+                latin:keyStyle="settingsMoreKeysStyle" />
         </case>
-        <case
-            latin:hasShortcutKey="true"
-        >
-            <Key
-                latin:keyStyle="shortcutKeyStyle" />
-        </case>
-        <!-- latin:hasShortcutKey="false" -->
         <default>
             <Key
-                latin:keyLabel="!text/keylabel_for_comma"
+                latin:keySpec="!text/keyspec_comma"
                 latin:keyLabelFlags="hasPopupHint"
-                latin:additionalMoreKeys="!text/more_keys_for_comma,!text/shortcut_as_more_key"
-                latin:keyStyle="f1MoreKeysStyle" />
+                latin:keyStyle="settingsMoreKeysStyle" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_greek_semicolon.xml b/java/res/xml/key_greek_semicolon.xml
deleted file mode 100644
index ae73a59..0000000
--- a/java/res/xml/key_greek_semicolon.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
-        >
-            <Key
-                latin:keyLabel=":"
-                latin:keyHintLabel="1"
-                latin:moreKeys=";"
-                latin:additionalMoreKeys="1" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel=";"
-                latin:keyHintLabel="1"
-                latin:moreKeys=":"
-                latin:additionalMoreKeys="1" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/key_nepali_traditional_period.xml b/java/res/xml/key_nepali_traditional_period.xml
deleted file mode 100644
index 1c389b0..0000000
--- a/java/res/xml/key_nepali_traditional_period.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<!-- The code point U+25CC for key label is needed because the font rendering system prior to
-     API version 16 can't automatically render dotted circle for incomplete combining letter
-     of Hindi. The files named res/xml/{key,keys}_nepali*.xml have this U+25CC hack, although the
-     counterpart files named res/xml-v16/{key,keys}_nepali*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
-            <Key
-                latin:keyLabel=","
-                latin:backgroundType="functional" />
-        </case>
-        <default>
-            <!-- Because the font rendering system prior to API version 16 can't automatically
-                 render dotted circle for incomplete combining letter of some scripts, different
-                 set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
-            <!-- U+002E: "." FULL STOP -->
-            <Key
-                latin:keyStyle="baseKeyDevanagariSignVirama"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!fixedColumnOrder!9,&#x002E;,!text/more_keys_for_punctuation"
-                latin:backgroundType="functional" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/key_period.xml b/java/res/xml/key_period.xml
new file mode 100644
index 0000000..e1d4bbd
--- /dev/null
+++ b/java/res/xml/key_period.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:languageCode="hi"
+            latin:keyboardLayoutSet="hindi_compact"
+        >
+            <!-- U+0964: "।" DEVANAGARI DANDA -->
+            <Key
+                latin:keySpec="\u0964"
+                latin:keyLabelFlags="hasPopupHint"
+                latin:moreKeys="!autoColumnOrder!9,\\,,.,?,!,#,),(,/,;,',@,:,-,&quot;,+,\\%,&amp;"
+                latin:backgroundType="functional" />
+        </case>
+        <case
+            latin:languageCode="ne"
+            latin:keyboardLayoutSet="nepali_traditional"
+        >
+            <!-- Because the font rendering system prior to API version 16 can't automatically
+                 render dotted circle for incomplete combining letter of some scripts, different
+                 set of Key definitions are needed based on the API version. -->
+            <include
+                latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+            <Key
+                latin:keyStyle="baseKeyDevanagariSignVirama"
+                latin:keyLabelFlags="hasPopupHint"
+                latin:moreKeys="!text/morekeys_punctuation"
+                latin:backgroundType="functional" />
+        </case>
+        <default>
+            <Key
+                latin:keySpec="!text/keyspec_period"
+                latin:keyHintLabel="!text/keyhintlabel_period"
+                latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint"
+                latin:moreKeys="!text/morekeys_period"
+                latin:backgroundType="functional" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/key_space_3kw.xml b/java/res/xml/key_space_3kw.xml
deleted file mode 100644
index 20ec882..0000000
--- a/java/res/xml/key_space_3kw.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:languageSwitchKeyEnabled="true"
-        >
-            <Key
-                latin:keyStyle="languageSwitchKeyStyle" />
-            <Key
-                latin:keyStyle="spaceKeyStyle"
-                latin:keyWidth="20%p" />
-        </case>
-        <!-- languageSwitchKeyEnabled="false" -->
-        <default>
-            <Key
-                latin:keyStyle="spaceKeyStyle"
-                latin:keyWidth="30%p" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/key_space_5kw.xml b/java/res/xml/key_space_5kw.xml
index b6d38fb..b1fe0bb 100644
--- a/java/res/xml/key_space_5kw.xml
+++ b/java/res/xml/key_space_5kw.xml
@@ -22,8 +22,12 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <switch>
+        <!-- fa: Perisan
+             kn: Kannada
+             ne: Nepali
+             te: Telugu -->
         <case
-            latin:languageCode="fa|ne"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="true"
         >
             <Key
@@ -35,7 +39,7 @@
                 latin:keyStyle="zwnjKeyStyle" />
         </case>
         <case
-            latin:languageCode="fa|ne"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="false"
         >
             <Key
diff --git a/java/res/xml/key_space_symbols.xml b/java/res/xml/key_space_symbols.xml
index 1efc4ff..0ce5228 100644
--- a/java/res/xml/key_space_symbols.xml
+++ b/java/res/xml/key_space_symbols.xml
@@ -21,6 +21,8 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <include
-        latin:keyboardLayout="@xml/key_space_3kw" />
+    <Key
+        latin:backgroundType="normal"
+        latin:keyStyle="spaceKeyStyle"
+        latin:keyWidth="30%p" />
 </merge>
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index c9d87bf..bc739f7 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -35,14 +35,13 @@
                 latin:keyLabelFlags="hasShiftedLetterHint" />
         </default>
     </switch>
-    <!-- Base key style for the key which may have settings or tab key as popup key. -->
+    <!-- Base key style for the key which may have settings key as more keys. -->
     <include
-        latin:keyboardLayout="@xml/key_styles_f1" />
+        latin:keyboardLayout="@xml/key_styles_settings" />
     <!-- Functional key styles -->
     <!-- Base style for shift key. A single space is used for dummy label in moreKeys. -->
     <key-style
         latin:styleName="baseForShiftKeyStyle"
-        latin:code="!code/key_shift"
         latin:keyActionFlags="noKeyPreview"
         latin:keyLabelFlags="preserveCase"
         latin:moreKeys="!noPanelAutoMoreKey!, |!code/key_capslock" />
@@ -52,7 +51,7 @@
         >
             <key-style
                 latin:styleName="shiftKeyStyle"
-                latin:keyIcon="!icon/shift_key_shifted"
+                latin:keySpec="!icon/shift_key_shifted|!code/key_shift"
                 latin:backgroundType="stickyOff"
                 latin:parentStyle="baseForShiftKeyStyle" />
         </case>
@@ -61,155 +60,96 @@
         >
             <key-style
                 latin:styleName="shiftKeyStyle"
-                latin:keyIcon="!icon/shift_key_shifted"
+                latin:keySpec="!icon/shift_key_shifted|!code/key_shift"
                 latin:backgroundType="stickyOn"
                 latin:parentStyle="baseForShiftKeyStyle" />
         </case>
         <default>
             <key-style
                 latin:styleName="shiftKeyStyle"
-                latin:keyIcon="!icon/shift_key"
+                latin:keySpec="!icon/shift_key|!code/key_shift"
                 latin:backgroundType="stickyOff"
                 latin:parentStyle="baseForShiftKeyStyle" />
         </default>
     </switch>
     <key-style
         latin:styleName="deleteKeyStyle"
-        latin:code="!code/key_delete"
-        latin:keyIcon="!icon/delete_key"
+        latin:keySpec="!icon/delete_key|!code/key_delete"
         latin:keyActionFlags="isRepeatable|noKeyPreview"
         latin:backgroundType="functional" />
+    <!-- emojiKeyStyle must be defined before including @xml/key_syles_enter. -->
+    <key-style
+        latin:styleName="emojiKeyStyle"
+        latin:keySpec="!icon/emoji_key|!code/key_emoji"
+        latin:keyActionFlags="noKeyPreview"
+        latin:backgroundType="action" />
     <include
         latin:keyboardLayout="@xml/key_styles_enter" />
+    <!-- TODO: Currently there is no way to specify icon alignment per theme. -->
     <key-style
         latin:styleName="spaceKeyStyle"
-        latin:code="!code/key_space"
+        latin:keySpec="!icon/space_key|!code/key_space"
         latin:keyActionFlags="noKeyPreview|enableLongPress" />
     <!-- U+200C: ZERO WIDTH NON-JOINER
          U+200D: ZERO WIDTH JOINER -->
     <key-style
         latin:styleName="zwnjKeyStyle"
-        latin:code="0x200C"
-        latin:keyIcon="!icon/zwnj_key"
+        latin:keySpec="!icon/zwnj_key|&#x200C;"
         latin:moreKeys="!icon/zwj_key|&#x200D;"
         latin:keyLabelFlags="hasPopupHint"
         latin:keyActionFlags="noKeyPreview" />
     <key-style
         latin:styleName="shortcutKeyStyle"
-        latin:code="!code/key_shortcut"
-        latin:keyIcon="!icon/shortcut_key"
+        latin:keySpec="!icon/shortcut_key|!code/key_shortcut"
         latin:keyIconDisabled="!icon/shortcut_key_disabled"
         latin:keyActionFlags="noKeyPreview|altCodeWhileTyping"
         latin:altCode="!code/key_space"
-        latin:parentStyle="f1MoreKeysStyle" />
+        latin:parentStyle="settingsMoreKeysStyle" />
     <key-style
         latin:styleName="settingsKeyStyle"
-        latin:code="!code/key_settings"
-        latin:keyIcon="!icon/settings_key"
+        latin:keySpec="!icon/settings_key|!code/key_settings"
         latin:keyActionFlags="noKeyPreview|altCodeWhileTyping"
         latin:altCode="!code/key_space"
         latin:backgroundType="functional" />
     <key-style
         latin:styleName="languageSwitchKeyStyle"
-        latin:code="!code/key_language_switch"
-        latin:keyIcon="!icon/language_switch_key"
+        latin:keySpec="!icon/language_switch_key|!code/key_language_switch"
         latin:keyActionFlags="noKeyPreview|altCodeWhileTyping|enableLongPress"
         latin:altCode="!code/key_space" />
     <key-style
-        latin:styleName="emojiKeyStyle"
-        latin:code="!code/key_emoji"
-        latin:keyIcon="!icon/emoji_key"
-        latin:keyActionFlags="noKeyPreview"
-        latin:backgroundType="functional" />
-    <!-- Overriding EnterKeyStyle here -->
-    <switch>
-        <!-- Shift + Enter in textMultiLine field. -->
-        <case
-            latin:isMultiLine="true"
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
-        >
-            <key-style
-                latin:styleName="enterKeyStyle"
-                latin:parentStyle="shiftEnterKeyStyle" />
-        </case>
-        <!-- Smiley in textShortMessage field.
-             Overrides common enter key style. -->
-        <case
-            latin:mode="im"
-        >
-            <key-style
-                latin:styleName="enterKeyStyle"
-                latin:parentStyle="emojiKeyStyle" />
-        </case>
-    </switch>
-    <key-style
         latin:styleName="tabKeyStyle"
-        latin:code="!code/key_tab"
-        latin:keyIcon="!icon/tab_key"
-        latin:keyIconPreview="!icon/tab_key_preview"
+        latin:keySpec="!icon/tab_key|!code/key_tab"
         latin:backgroundType="functional" />
     <!-- Note: This key style is not for functional tab key. This is used for the tab key which is
          laid out as normal letter key. -->
     <key-style
         latin:styleName="nonSpecialBackgroundTabKeyStyle"
-        latin:code="!code/key_tab"
-        latin:keyIcon="!icon/tab_key"
-        latin:keyIconPreview="!icon/tab_key_preview" />
+        latin:keySpec="!icon/tab_key|!code/key_tab" />
     <key-style
         latin:styleName="baseForLayoutSwitchKeyStyle"
-        latin:keyLabelFlags="preserveCase"
+        latin:keyLabelFlags="preserveCase|followFunctionalTextColor"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional" />
-    <switch>
-        <!-- When this qwerty keyboard has no shortcut keys but shortcut key is enabled, then symbol
-             keyboard will have a shortcut key. That means we should use label_to_symbol_key label
-             and shortcut_for_label icon. -->
-        <case
-            latin:shortcutKeyOnSymbols="true"
-        >
-            <key-style
-                latin:styleName="baseForToSymbolKeyStyle"
-                latin:keyIcon="!icon/shortcut_for_label"
-                latin:keyLabel="!text/label_to_symbol_with_microphone_key"
-                latin:keyLabelFlags="withIconRight|preserveCase"
-                latin:parentStyle="baseForLayoutSwitchKeyStyle" />
-        </case>
-        <default>
-            <key-style
-                latin:styleName="baseForToSymbolKeyStyle"
-                latin:keyLabel="!text/label_to_symbol_key"
-                latin:parentStyle="baseForLayoutSwitchKeyStyle" />
-        </default>
-    </switch>
     <key-style
         latin:styleName="toSymbolKeyStyle"
-        latin:code="!code/key_switch_alpha_symbol"
-        latin:parentStyle="baseForToSymbolKeyStyle" />
+        latin:keySpec="!text/keylabel_to_symbol|!code/key_switch_alpha_symbol"
+        latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="toAlphaKeyStyle"
-        latin:code="!code/key_switch_alpha_symbol"
-        latin:keyLabel="!text/label_to_alpha_key"
+        latin:keySpec="!text/keylabel_to_alpha|!code/key_switch_alpha_symbol"
         latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="toMoreSymbolKeyStyle"
-        latin:code="!code/key_shift"
-        latin:keyLabel="!text/label_to_more_symbol_key"
+        latin:keySpec="!text/keylabel_to_more_symbol|!code/key_shift"
         latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="backFromMoreSymbolKeyStyle"
-        latin:code="!code/key_shift"
-        latin:parentStyle="baseForToSymbolKeyStyle" />
-    <key-style
-        latin:styleName="punctuationKeyStyle"
-        latin:keyLabel="."
-        latin:keyLabelFlags="hasPopupHint"
-        latin:moreKeys="!text/more_keys_for_punctuation"
-        latin:backgroundType="functional" />
+        latin:keySpec="!text/keylabel_to_symbol|!code/key_shift"
+        latin:parentStyle="baseForLayoutSwitchKeyStyle" />
     <key-style
         latin:styleName="comKeyStyle"
-        latin:keyLabel="!text/keylabel_for_popular_domain"
+        latin:keySpec="!text/keyspec_popular_domain"
         latin:keyLabelFlags="autoXScale|fontNormal|hasPopupHint|preserveCase"
-        latin:keyOutputText="!text/keylabel_for_popular_domain"
-        latin:moreKeys="!text/more_keys_for_popular_domain"
+        latin:moreKeys="!text/morekeys_popular_domain"
         latin:backgroundType="functional" />
 </merge>
diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index 84c2abc..900c9bb 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -18,15 +18,10 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:passwordInput="true"
-        >
-            <include
-                latin:keyboardLayout="@xml/key_styles_currency_dollar" />
+        <case latin:passwordInput="true">
+            <include latin:keyboardLayout="@xml/key_styles_currency_dollar" />
         </case>
         <!-- Countries using Euro currency, 23 countries as of November 2012.
               1. Andorra (ca_AD, ca_ES)
@@ -50,13 +45,10 @@
              19. San Marino (it_SM)
              20. Slovakia (sk_SK)
              21. Slovenia (sl_SI)
-             22. Spain (es_ES, ca_ES)
+             22. Spain (es_ES, ca_ES, eu_ES, gl_ES)
              23. Vatican City (it_VA) -->
-        <case
-            latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA"
-        >
-            <include
-                latin:keyboardLayout="@xml/key_styles_currency_euro" />
+        <case latin:countryCode="AD|AT|BE|CY|EE|FI|FR|DE|GR|IE|IT|XK|LU|MT|MO|ME|NL|PT|SM|SK|SI|ES|VA">
+            <include latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- Note: Some subtype locale may not have country code, and it it supposed to indicate the
              country where the language originally/mainly spoken. -->
@@ -76,21 +68,15 @@
              sl: Slovenia (sl_SL)
              sv: Sweden (sv_SV)
              tr: Trukey (tr_TR) -->
-        <case
-            latin:localeCode="da|de|es|el|fi|fr|it|nl|sk|sl|sv|tr"
-        >
-            <include
-                latin:keyboardLayout="@xml/key_styles_currency_euro" />
+        <case latin:localeCode="da|de|es|el|fi|fr|it|nl|sk|sl|sv|tr">
+            <include latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- ca: Catalan (Andorra, Spain)
              et: Estonian (Estonia)
              lb: Luxembougish (Luxembourg)
              mt: Maltese (Malta) -->
-        <case
-            latin:languageCode="ca|et|lb|mt"
-        >
-            <include
-                latin:keyboardLayout="@xml/key_styles_currency_euro" />
+        <case latin:languageCode="ca|et|lb|mt">
+            <include latin:keyboardLayout="@xml/key_styles_currency_euro" />
         </case>
         <!-- fa: Persian (Rial and Afgahni)
              hi: Hindi (Indian Rupee)
@@ -98,6 +84,7 @@
              lo: Lao (Kip)
              mn: Mongolian (Tugrik)
              ne: Nepali (Nepalese Rupee)
+             ta_IN: Tamil (Tamil Rupee)
              th: Thai (Baht)
              uk: Ukrainian (Hryvnia)
              vi: Vietnamese (Dong)  -->
@@ -105,34 +92,54 @@
              its unicode, although there is no font glyph for it as of November 2012. -->
         <!-- TODO: The currency sign of Armenian Dram was created in 2012 and assigned U+058F for
              its unicode, although there is no font glyph for it as of September 2013. -->
-        <case
-            latin:languageCode="fa|hi|iw|lo|mn|ne|th|uk|vi"
-        >
+        <case latin:languageCode="fa|hi|iw|lo|mn|ne|ta|th|uk|vi">
             <!-- U+00A3: "£" POUND SIGN
                  U+20AC: "€" EURO SIGN
                  U+00A2: "¢" CENT SIGN -->
             <key-style
                 latin:styleName="currencyKeyStyle"
-                latin:keyLabel="!text/keylabel_for_currency"
-                latin:moreKeys="!text/more_keys_for_currency" />
+                latin:keySpec="!text/keyspec_currency"
+                latin:moreKeys="!text/morekeys_currency" />
             <key-style
                 latin:styleName="moreCurrency1KeyStyle"
-                latin:keyLabel="&#x00A3;" />
+                latin:keySpec="&#x00A3;" />
             <key-style
                 latin:styleName="moreCurrency2KeyStyle"
-                latin:keyLabel="&#x20AC;" />
+                latin:keySpec="&#x20AC;" />
             <key-style
                 latin:styleName="moreCurrency3KeyStyle"
-                latin:keyLabel="$"
+                latin:keySpec="$"
                 latin:moreKeys="&#x00A2;" />
             <key-style
                 latin:styleName="moreCurrency4KeyStyle"
-                latin:keyLabel="&#x00A2;" />
+                latin:keySpec="&#x00A2;" />
+        </case>
+        <!-- IN: India (Rupee) -->
+        <case latin:countryCode="IN">
+            <!-- U+20B9: "₹" INDIAN RUPEE SIGN
+                 U+00A3: "£" POUND SIGN
+                 U+20AC: "€" EURO SIGN
+                 U+00A2: "¢" CENT SIGN -->
+            <key-style
+                latin:styleName="currencyKeyStyle"
+                latin:keySpec="&#x20B9;"
+                latin:moreKeys="!text/morekeys_currency" />
+            <key-style
+                latin:styleName="moreCurrency1KeyStyle"
+                latin:keySpec="&#x00A3;" />
+            <key-style
+                latin:styleName="moreCurrency2KeyStyle"
+                latin:keySpec="&#x20AC;" />
+            <key-style
+                latin:styleName="moreCurrency3KeyStyle"
+                latin:keySpec="$"
+                latin:moreKeys="&#x00A2;" />
+            <key-style
+                latin:styleName="moreCurrency4KeyStyle"
+                latin:keySpec="&#x00A2;" />
         </case>
         <!-- GB: United Kingdom (Pound) -->
-        <case
-            latin:countryCode="GB"
-        >
+        <case latin:countryCode="GB">
             <!-- U+00A3: "£" POUND SIGN
                  U+20AC: "€" EURO SIGN
                  U+00A5: "¥" YEN SIGN
@@ -140,26 +147,25 @@
                  U+20B1: "₱" PESO SIGN -->
             <key-style
                 latin:styleName="currencyKeyStyle"
-                latin:keyLabel="&#x00A3;"
+                latin:keySpec="&#x00A3;"
                 latin:moreKeys="&#x00A2;,$,&#x20AC;,&#x00A5;,&#x20B1;" />
             <key-style
                 latin:styleName="moreCurrency1KeyStyle"
-                latin:keyLabel="&#x20AC;" />
+                latin:keySpec="&#x20AC;" />
             <key-style
                 latin:styleName="moreCurrency2KeyStyle"
-                latin:keyLabel="&#x00A5;" />
+                latin:keySpec="&#x00A5;" />
             <key-style
                 latin:styleName="moreCurrency3KeyStyle"
-                latin:keyLabel="$"
+                latin:keySpec="$"
                 latin:moreKeys="&#x00A2;" />
             <key-style
                 latin:styleName="moreCurrency4KeyStyle"
-                latin:keyLabel="&#x00A2;" />
+                latin:keySpec="&#x00A2;" />
         </case>
         <!-- ar: Arabic (Dollar and Rial) -->
         <default>
-            <include
-                latin:keyboardLayout="@xml/key_styles_currency_dollar" />
+            <include latin:keyboardLayout="@xml/key_styles_currency_dollar" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/key_styles_currency_dollar.xml b/java/res/xml/key_styles_currency_dollar.xml
index 674a396..d3211bd 100644
--- a/java/res/xml/key_styles_currency_dollar.xml
+++ b/java/res/xml/key_styles_currency_dollar.xml
@@ -25,18 +25,18 @@
          U+00A5: "¥" YEN SIGN -->
     <key-style
         latin:styleName="currencyKeyStyle"
-        latin:keyLabel="$"
-        latin:moreKeys="!text/more_keys_for_currency_dollar" />
+        latin:keySpec="$"
+        latin:moreKeys="!text/morekeys_currency_dollar" />
     <key-style
         latin:styleName="moreCurrency1KeyStyle"
-        latin:keyLabel="&#x00A3;" />
+        latin:keySpec="&#x00A3;" />
     <key-style
         latin:styleName="moreCurrency2KeyStyle"
-        latin:keyLabel="&#x00A2;" />
+        latin:keySpec="&#x00A2;" />
     <key-style
         latin:styleName="moreCurrency3KeyStyle"
-        latin:keyLabel="&#x20AC;" />
+        latin:keySpec="&#x20AC;" />
     <key-style
         latin:styleName="moreCurrency4KeyStyle"
-        latin:keyLabel="&#x00A5;" />
+        latin:keySpec="&#x00A5;" />
 </merge>
diff --git a/java/res/xml/key_styles_currency_euro.xml b/java/res/xml/key_styles_currency_euro.xml
index c1b5e03..c2ae87b 100644
--- a/java/res/xml/key_styles_currency_euro.xml
+++ b/java/res/xml/key_styles_currency_euro.xml
@@ -26,19 +26,19 @@
          U+20B1: "₱" PESO SIGN -->
     <key-style
         latin:styleName="currencyKeyStyle"
-        latin:keyLabel="&#x20AC;"
+        latin:keySpec="&#x20AC;"
         latin:moreKeys="&#x00A2;,&#x00A3;,$,&#x00A5;,&#x20B1;" />
     <key-style
         latin:styleName="moreCurrency1KeyStyle"
-        latin:keyLabel="&#x00A3;" />
+        latin:keySpec="&#x00A3;" />
     <key-style
         latin:styleName="moreCurrency2KeyStyle"
-        latin:keyLabel="&#x00A5;" />
+        latin:keySpec="&#x00A5;" />
     <key-style
         latin:styleName="moreCurrency3KeyStyle"
-        latin:keyLabel="$"
+        latin:keySpec="$"
         latin:moreKeys="&#x00A2;" />
     <key-style
         latin:styleName="moreCurrency4KeyStyle"
-        latin:keyLabel="&#x00A2;" />
+        latin:keySpec="&#x00A2;" />
 </merge>
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 083e6a6..50530e1 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -21,7 +21,7 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <!-- TODO: Stop using many conditional cases for emoji_key_as_more_key. There are way too many to maintain. -->
+    <!-- TODO: Stop using many conditional cases for keyspec_emoji_key. There are way too many to maintain. -->
     <!-- Navigate more keys style -->
     <switch>
         <!-- latin:passwordInput="true" -->
@@ -33,7 +33,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_previous_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_previous" />
         </case>
         <case
             latin:imeAction="actionNext"
@@ -51,7 +51,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_next_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_next" />
         </case>
         <case
             latin:imeAction="actionPrevious"
@@ -69,7 +69,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_action_previous,!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="true"
@@ -79,7 +79,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_next_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="false"
@@ -89,7 +89,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_previous_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_previous" />
         </case>
         <case
             latin:navigateNext="false"
@@ -108,7 +108,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_previous_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_previous" />
         </case>
         <case
             latin:imeAction="actionNext"
@@ -126,7 +126,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_next_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_next" />
         </case>
         <case
             latin:imeAction="actionPrevious"
@@ -144,7 +144,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/action_previous_as_more_key,!text/action_next_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_action_previous,!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="true"
@@ -154,7 +154,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_next_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="false"
@@ -164,7 +164,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/action_previous_as_more_key" />
+                latin:moreKeys="!text/keyspec_action_previous" />
         </case>
         <case
             latin:navigateNext="false"
@@ -182,7 +182,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_previous" />
         </case>
         <case
             latin:imeAction="actionNext"
@@ -191,7 +191,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/emoji_key_as_more_key" />
+                latin:moreKeys="!text/keyspec_emoji_key" />
         </case>
         <case
             latin:imeAction="actionPrevious"
@@ -200,7 +200,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_next_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_next" />
         </case>
         <case
             latin:imeAction="actionPrevious"
@@ -209,7 +209,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/emoji_key_as_more_key" />
+                latin:moreKeys="!text/keyspec_emoji_key" />
         </case>
         <case
             latin:navigateNext="true"
@@ -218,7 +218,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key,!text/action_next_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_previous,!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="true"
@@ -227,7 +227,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_next_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_next" />
         </case>
         <case
             latin:navigateNext="false"
@@ -236,7 +236,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key" />
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/keyspec_emoji_key,!text/keyspec_action_previous" />
         </case>
         <case
             latin:navigateNext="false"
@@ -245,7 +245,7 @@
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
-                latin:moreKeys="!text/emoji_key_as_more_key" />
+                latin:moreKeys="!text/keyspec_emoji_key" />
         </case>
         <default>
             <key-style
@@ -255,21 +255,13 @@
     <!-- Enter key style -->
     <key-style
         latin:styleName="defaultEnterKeyStyle"
-        latin:code="!code/key_enter"
-        latin:keyIcon="!icon/enter_key"
-        latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio"
+        latin:keyLabelFlags="preserveCase|autoXScale|followKeyLabelRatio|followFunctionalTextColor"
         latin:keyActionFlags="noKeyPreview"
-        latin:backgroundType="functional"
+        latin:backgroundType="action"
         latin:parentStyle="navigateMoreKeysStyle" />
     <key-style
         latin:styleName="shiftEnterKeyStyle"
-        latin:code="!code/key_shift_enter"
-        latin:parentStyle="defaultEnterKeyStyle" />
-    <key-style
-        latin:styleName="defaultActionEnterKeyStyle"
-        latin:code="!code/key_enter"
-        latin:keyIcon="!icon/undefined"
-        latin:backgroundType="action"
+        latin:keySpec="!icon/enter_key|!code/key_shift_enter"
         latin:parentStyle="defaultEnterKeyStyle" />
     <switch>
         <!-- Shift + Enter in textMultiLine field. -->
@@ -281,66 +273,137 @@
                 latin:styleName="enterKeyStyle"
                 latin:parentStyle="shiftEnterKeyStyle" />
         </case>
+        <!-- Smiley in textShortMessage field.
+             This <case> should be after Shift + Enter <case> and before any of action <case>. -->
+        <case
+            latin:mode="im"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:parentStyle="emojiKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionGo"
+            latin:isIconDefined="go_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/go_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
         <case
             latin:imeAction="actionGo"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_go_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_go_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionNext"
+            latin:isIconDefined="next_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/next_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionNext"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_next_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_next_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionPrevious"
+            latin:isIconDefined="previous_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/previous_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionPrevious"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_previous_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_previous_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionDone"
+            latin:isIconDefined="done_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/done_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionDone"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_done_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_done_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionSend"
+            latin:isIconDefined="send_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/send_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionSend"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyLabel="!text/label_send_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_send_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
+        </case>
+        <case
+            latin:imeAction="actionSearch"
+            latin:isIconDefined="search_key"
+        >
+            <key-style
+                latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/search_key|!code/key_enter"
+                latin:backgroundType="action"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionSearch"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
-                latin:keyIcon="!icon/search_key"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:keySpec="!text/label_search_key|!code/key_enter"
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <case
             latin:imeAction="actionCustomLabel"
         >
             <key-style
                 latin:styleName="enterKeyStyle"
+                latin:keySpec="dummy_label|!code/key_enter"
                 latin:keyLabelFlags="fromCustomActionLabel"
-                latin:parentStyle="defaultActionEnterKeyStyle" />
+                latin:parentStyle="defaultEnterKeyStyle" />
         </case>
         <!-- imeAction is either actionNone or actionUnspecified. -->
         <default>
             <key-style
                 latin:styleName="enterKeyStyle"
+                latin:keySpec="!icon/enter_key|!code/key_enter"
                 latin:parentStyle="defaultEnterKeyStyle" />
         </default>
     </switch>
diff --git a/java/res/xml/key_styles_f1.xml b/java/res/xml/key_styles_f1.xml
deleted file mode 100644
index 8dfc3cb..0000000
--- a/java/res/xml/key_styles_f1.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- Base key style for the key which may have settings or tab key as popup key. -->
-    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
-    <switch>
-        <case
-            latin:clobberSettingsKey="true"
-        >
-            <key-style
-                latin:styleName="f1MoreKeysStyle"
-                latin:backgroundType="functional" />
-        </case>
-        <!-- clobberSettingsKey="false" -->
-        <default>
-            <key-style
-                latin:styleName="f1MoreKeysStyle"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/settings_as_more_key"
-                latin:backgroundType="functional" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/key_styles_less_greater.xml b/java/res/xml/key_styles_less_greater.xml
new file mode 100644
index 0000000..db4c798
--- /dev/null
+++ b/java/res/xml/key_styles_less_greater.xml
@@ -0,0 +1,54 @@
+<?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.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- The less and greater keys' style which may have different label depending on locale. -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
+    <switch>
+        <case
+            latin:languageCode="fa"
+        >
+            <key-style
+                latin:styleName="lessKeyStyle"
+                latin:keySpec="!text/keyspec_left_double_angle_quote"
+                latin:backgroundType="functional"
+                latin:moreKeys="!text/morekeys_less_than" />
+            <key-style
+                latin:styleName="greaterKeyStyle"
+                latin:keySpec="!text/keyspec_right_double_angle_quote"
+                latin:backgroundType="functional"
+                latin:moreKeys="!text/morekeys_greater_than" />
+        </case>
+        <default>
+            <key-style
+                latin:styleName="lessKeyStyle"
+                latin:keySpec="!text/keyspec_less_than"
+                latin:backgroundType="functional"
+                latin:moreKeys="!text/morekeys_less_than" />
+            <key-style
+                latin:styleName="greaterKeyStyle"
+                latin:keySpec="!text/keyspec_greater_than"
+                latin:backgroundType="functional"
+                latin:moreKeys="!text/morekeys_greater_than" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index 2e5a601..df4448c 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -30,7 +30,7 @@
         latin:parentStyle="numKeyBaseStyle" />
     <key-style
         latin:styleName="numModeKeyStyle"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio"
+        latin:keyLabelFlags="fontNormal|followKeyLetterRatio|followFunctionalTextColor"
         latin:parentStyle="numKeyBaseStyle" />
     <key-style
         latin:styleName="numFunctionalKeyStyle"
@@ -43,82 +43,74 @@
         latin:parentStyle="numKeyStyle" />
     <key-style
         latin:styleName="num0KeyStyle"
-        latin:keyLabel="0"
+        latin:keySpec="0"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num1KeyStyle"
-        latin:keyLabel="1"
+        latin:keySpec="1"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num2KeyStyle"
-        latin:keyLabel="2"
+        latin:keySpec="2"
         latin:keyHintLabel="ABC"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num3KeyStyle"
-        latin:keyLabel="3"
+        latin:keySpec="3"
         latin:keyHintLabel="DEF"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num4KeyStyle"
-        latin:keyLabel="4"
+        latin:keySpec="4"
         latin:keyHintLabel="GHI"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num5KeyStyle"
-        latin:keyLabel="5"
+        latin:keySpec="5"
         latin:keyHintLabel="JKL"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num6KeyStyle"
-        latin:keyLabel="6"
+        latin:keySpec="6"
         latin:keyHintLabel="MNO"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num7KeyStyle"
-        latin:keyLabel="7"
+        latin:keySpec="7"
         latin:keyHintLabel="PQRS"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num8KeyStyle"
-        latin:keyLabel="8"
+        latin:keySpec="8"
         latin:keyHintLabel="TUV"
         latin:parentStyle="numberKeyStyle" />
     <key-style
         latin:styleName="num9KeyStyle"
-        latin:keyLabel="9"
+        latin:keySpec="9"
         latin:keyHintLabel="WXYZ"
         latin:parentStyle="numberKeyStyle" />
-    <!-- U+002A: "*" ASTERISK
-         U+FF0A: "＊" FULLWIDTH ASTERISK -->
+    <!-- U+FF0A: "＊" FULLWIDTH ASTERISK -->
     <key-style
         latin:styleName="numStarKeyStyle"
-        latin:code="0x002A"
-        latin:keyLabel="&#xFF0A;"
+        latin:keySpec="&#xFF0A;|*"
         latin:parentStyle="numKeyStyle" />
     <!-- Only for non-tablet device -->
     <key-style
         latin:styleName="numPhoneToSymbolKeyStyle"
-        latin:code="!code/key_switch_alpha_symbol"
-        latin:keyLabel="!text/label_to_phone_symbols_key"
+        latin:keySpec="!text/keylabel_to_phone_symbols|!code/key_switch_alpha_symbol"
         latin:parentStyle="numModeKeyStyle" />
     <key-style
         latin:styleName="numPhoneToNumericKeyStyle"
-        latin:code="!code/key_switch_alpha_symbol"
-        latin:keyLabel="!text/label_to_phone_numeric_key"
+        latin:keySpec="!text/keylabel_to_phone_numeric|!code/key_switch_alpha_symbol"
         latin:parentStyle="numModeKeyStyle" />
-    <!-- U+002C: "," COMMA -->
     <key-style
         latin:styleName="numPauseKeyStyle"
-        latin:code="0x002C"
-        latin:keyLabel="!text/label_pause_key"
+        latin:keySpec="!text/label_pause_key|,"
         latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale"
         latin:parentStyle="numKeyBaseStyle" />
-    <!-- U+003B: ";" SEMICOLON -->
     <key-style
         latin:styleName="numWaitKeyStyle"
-        latin:code="0x003B"
-        latin:keyLabel="!text/label_wait_key"
+        latin:keySpec="!text/label_wait_key|;"
         latin:keyLabelFlags="followKeyHintLabelRatio|autoXScale"
         latin:parentStyle="numKeyBaseStyle" />
     <key-style
@@ -127,15 +119,13 @@
         latin:parentStyle="tabKeyStyle" />
     <key-style
         latin:styleName="numSpaceKeyStyle"
-        latin:code="!code/key_space"
-        latin:keyIcon="!icon/space_key_for_number_layout"
+        latin:keySpec="!icon/space_key_for_number_layout|!code/key_space"
         latin:keyActionFlags="enableLongPress"
         latin:parentStyle="numKeyBaseStyle" />
     <!-- Override defaultEnterKeyStyle in key_styles_enter.xml -->
     <key-style
         latin:styleName="defaultEnterKeyStyle"
-        latin:code="!code/key_enter"
-        latin:keyIcon="!icon/enter_key"
+        latin:keySpec="!icon/enter_key|!code/key_enter"
         latin:keyLabelFlags="preserveCase|autoXScale|followKeyLargeLabelRatio"
         latin:keyActionFlags="noKeyPreview"
         latin:backgroundType="functional"
diff --git a/java/res/xml/key_styles_settings.xml b/java/res/xml/key_styles_settings.xml
new file mode 100644
index 0000000..956b402
--- /dev/null
+++ b/java/res/xml/key_styles_settings.xml
@@ -0,0 +1,43 @@
+<?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.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- Base key style for the key which may have settings key as more keys. -->
+    <!-- Kept as a separate file for cleaner overriding by an overlay.  -->
+    <switch>
+        <case
+            latin:clobberSettingsKey="true"
+        >
+            <key-style
+                latin:styleName="settingsMoreKeysStyle"
+                latin:backgroundType="functional" />
+        </case>
+        <!-- clobberSettingsKey="false" -->
+        <default>
+            <key-style
+                latin:styleName="settingsMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint"
+                latin:moreKeys="!text/keyspec_settings"
+                latin:backgroundType="functional" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/key_symbols_period.xml b/java/res/xml/key_symbols_period.xml
deleted file mode 100644
index 6efc9de..0000000
--- a/java/res/xml/key_symbols_period.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <!-- U+2105: "℅" CARE OF
-         U+2122: "™" TRADE MARK SIGN
-         U+00AE: "®" REGISTERED SIGN
-         U+00A9: "©" COPYRIGHT SIGN
-         U+00A7: "§" SECTION SIGN
-         U+00B6: "¶" PILCROW SIGN
-         U+002C: "," COMMA
-         U+2022: "•" BULLET -->
-    <!-- U+00B0: "°" DEGREE SIGN
-         U+2032: "′" PRIME
-         U+2033: "″" DOUBLE PRIME
-         U+2191: "↑" UPWARDS ARROW
-         U+2193: "↓" DOWNWARDS ARROW
-         U+2190: "←" LEFTWARDS ARROW
-         U+2192: "→" RIGHTWARDS ARROW
-         U+2026: "…" HORIZONTAL ELLIPSIS -->
-    <!-- U+0394: "Δ" GREEK CAPITAL LETTER DELTA
-         U+03A0: "Π" GREEK CAPITAL LETTER PI
-         U+03C0: "π" GREEK SMALL LETTER PI -->
-    <Key
-        latin:keyLabel="."
-        latin:keyLabelFlags="hasPopupHint"
-        latin:moreKeys="!fixedColumnOrder!8,&#x2105;,&#x2122;,&#x00AE;,&#x00A9;,&#x00A7;,&#x00B6;,\\,,&#x2022;,&#x00B0;,&#x2032;,&#x2033;,&#x2191;,&#x2193;,&#x2190;,&#x2192;,&#x2026;,!text/more_keys_for_bullet,&#x0394;,&#x03A0;,&#x03C0;" />
-</merge>
diff --git a/java/res/xml/key_thai_kho_khuat.xml b/java/res/xml/key_thai_kho_khuat.xml
index 0ffd0f9..a43a87c 100644
--- a/java/res/xml/key_thai_kho_khuat.xml
+++ b/java/res/xml/key_thai_kho_khuat.xml
@@ -27,14 +27,12 @@
         >
             <!-- U+0E05: "ฅ" THAI CHARACTER KHO KHON -->
             <Key
-                latin:keyLabel="&#x0E05;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0E05;" />
         </case>
         <default>
             <!-- U+0E03: "ฃ" THAI CHARACTER KHO KHUAT -->
             <Key
-                latin:keyLabel="&#x0E03;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0E03;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/keyboard_layout_set_arabic.xml b/java/res/xml/keyboard_layout_set_arabic.xml
index 10e95bd..1bf8c62 100644
--- a/java/res/xml/keyboard_layout_set_arabic.xml
+++ b/java/res/xml/keyboard_layout_set_arabic.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="arabic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_arabic"
diff --git a/java/res/xml/keyboard_layout_set_armenian_phonetic.xml b/java/res/xml/keyboard_layout_set_armenian_phonetic.xml
index 35bd43f..c3a1189 100644
--- a/java/res/xml/keyboard_layout_set_armenian_phonetic.xml
+++ b/java/res/xml/keyboard_layout_set_armenian_phonetic.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="armenian" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_armenian_phonetic"
diff --git a/java/res/xml/keyboard_layout_set_bengali.xml b/java/res/xml/keyboard_layout_set_bengali.xml
new file mode 100644
index 0000000..6e40e6d
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_bengali.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_bengali"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_bulgarian.xml b/java/res/xml/keyboard_layout_set_bulgarian.xml
index c6fdff9..3f53865 100644
--- a/java/res/xml/keyboard_layout_set_bulgarian.xml
+++ b/java/res/xml/keyboard_layout_set_bulgarian.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="cyrillic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_bulgarian"
diff --git a/java/res/xml/keyboard_layout_set_bulgarian_bds.xml b/java/res/xml/keyboard_layout_set_bulgarian_bds.xml
index a36b3bd..8e92f70 100644
--- a/java/res/xml/keyboard_layout_set_bulgarian_bds.xml
+++ b/java/res/xml/keyboard_layout_set_bulgarian_bds.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="cyrillic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_bulgarian_bds"
diff --git a/java/res/xml/keyboard_layout_set_east_slavic.xml b/java/res/xml/keyboard_layout_set_east_slavic.xml
index 8d66faf..ef08064 100644
--- a/java/res/xml/keyboard_layout_set_east_slavic.xml
+++ b/java/res/xml/keyboard_layout_set_east_slavic.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="cyrillic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_east_slavic"
diff --git a/java/res/xml/keyboard_layout_set_farsi.xml b/java/res/xml/keyboard_layout_set_farsi.xml
index b9a91e3..9b44b7b 100644
--- a/java/res/xml/keyboard_layout_set_farsi.xml
+++ b/java/res/xml/keyboard_layout_set_farsi.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="arabic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_farsi"
diff --git a/java/res/xml/keyboard_layout_set_georgian.xml b/java/res/xml/keyboard_layout_set_georgian.xml
index 36d0916..a0a0608 100644
--- a/java/res/xml/keyboard_layout_set_georgian.xml
+++ b/java/res/xml/keyboard_layout_set_georgian.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="georgian" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_georgian"
diff --git a/java/res/xml/keyboard_layout_set_greek.xml b/java/res/xml/keyboard_layout_set_greek.xml
index b376e4f..a1e738f 100644
--- a/java/res/xml/keyboard_layout_set_greek.xml
+++ b/java/res/xml/keyboard_layout_set_greek.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="greek" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_greek"
diff --git a/java/res/xml/keyboard_layout_set_hebrew.xml b/java/res/xml/keyboard_layout_set_hebrew.xml
index d5b25b3..d3d4b76 100644
--- a/java/res/xml/keyboard_layout_set_hebrew.xml
+++ b/java/res/xml/keyboard_layout_set_hebrew.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="hebrew" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_hebrew"
diff --git a/java/res/xml/keyboard_layout_set_hindi_compact.xml b/java/res/xml/keyboard_layout_set_hindi_compact.xml
new file mode 100644
index 0000000..77d02fb
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_hindi_compact.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_hindi_compact"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_kannada.xml b/java/res/xml/keyboard_layout_set_kannada.xml
new file mode 100644
index 0000000..8dcf996
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_kannada.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_kannada"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_malayalam.xml b/java/res/xml/keyboard_layout_set_malayalam.xml
new file mode 100644
index 0000000..14c76ba
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_malayalam.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_malayalam"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_marathi.xml b/java/res/xml/keyboard_layout_set_marathi.xml
new file mode 100644
index 0000000..e5c68e7
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_marathi.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_marathi"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_mongolian.xml b/java/res/xml/keyboard_layout_set_mongolian.xml
index 2d364f6..977fc68 100644
--- a/java/res/xml/keyboard_layout_set_mongolian.xml
+++ b/java/res/xml/keyboard_layout_set_mongolian.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="cyrillic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_mongolian"
diff --git a/java/res/xml/keyboard_layout_set_myanmar.xml b/java/res/xml/keyboard_layout_set_myanmar.xml
new file mode 100644
index 0000000..5c823b2
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_myanmar.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_myanmar"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="alphabetAutomaticShifted"
+        latin:elementKeyboard="@xml/kbd_myanmar"
+        latin:enableProximityCharsCorrection="true" />
+    <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+         because the letters on these layouts aren't the ones in different case of the above
+         unshifted layouts. -->
+    <Element
+        latin:elementName="alphabetManualShifted"
+        latin:elementKeyboard="@xml/kbd_myanmar" />
+    <Element
+        latin:elementName="alphabetShiftLocked"
+        latin:elementKeyboard="@xml/kbd_myanmar" />
+    <Element
+        latin:elementName="alphabetShiftLockShifted"
+        latin:elementKeyboard="@xml/kbd_myanmar" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_sinhala.xml b/java/res/xml/keyboard_layout_set_sinhala.xml
new file mode 100644
index 0000000..8e6e619
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_sinhala.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_sinhala"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="alphabetAutomaticShifted"
+        latin:elementKeyboard="@xml/kbd_sinhala"
+        latin:enableProximityCharsCorrection="true" />
+    <!-- On these shifted alphabet layouts the proximity characters correction should be disabled
+         because the letters on these layouts aren't the ones in different case of the above
+         unshifted layouts. -->
+    <Element
+        latin:elementName="alphabetManualShifted"
+        latin:elementKeyboard="@xml/kbd_sinhala" />
+    <Element
+        latin:elementName="alphabetShiftLocked"
+        latin:elementKeyboard="@xml/kbd_sinhala" />
+    <Element
+        latin:elementName="alphabetShiftLockShifted"
+        latin:elementKeyboard="@xml/kbd_sinhala" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_south_slavic.xml b/java/res/xml/keyboard_layout_set_south_slavic.xml
index 36666b9..b851a99 100644
--- a/java/res/xml/keyboard_layout_set_south_slavic.xml
+++ b/java/res/xml/keyboard_layout_set_south_slavic.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="cyrillic" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_south_slavic"
diff --git a/java/res/xml/keyboard_layout_set_swiss.xml b/java/res/xml/keyboard_layout_set_swiss.xml
new file mode 100644
index 0000000..e17a5ab
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_swiss.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_swiss"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_tamil.xml b/java/res/xml/keyboard_layout_set_tamil.xml
new file mode 100644
index 0000000..5c04915
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_tamil.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_tamil"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_telugu.xml b/java/res/xml/keyboard_layout_set_telugu.xml
new file mode 100644
index 0000000..aca47b9
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_telugu.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_telugu"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keys_arabic3_left.xml b/java/res/xml/keys_arabic3_left.xml
index 157af4a..05ba6d8 100644
--- a/java/res/xml/keys_arabic3_left.xml
+++ b/java/res/xml/keys_arabic3_left.xml
@@ -23,6 +23,5 @@
 >
     <!-- U+0630: "ذ" ARABIC LETTER THAL -->
     <Key
-        latin:keyLabel="&#x0630;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0630;" />
 </merge>
diff --git a/java/res/xml/keys_comma_period.xml b/java/res/xml/keys_comma_period.xml
deleted file mode 100644
index 1b51e45..0000000
--- a/java/res/xml/keys_comma_period.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:languageCode="ar"
-        >
-            <Key
-                latin:keyLabel="!text/keylabel_for_apostrophe"
-                latin:keyHintLabel="!text/keyhintlabel_for_apostrophe"
-                latin:moreKeys="!text/more_keys_for_apostrophe"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_arabic_diacritics"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
-        <case
-            latin:languageCode="fa"
-        >
-            <Key
-                latin:keyLabel="!text/keylabel_for_apostrophe"
-                latin:keyHintLabel="!text/keyhintlabel_for_apostrophe"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_apostrophe"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:moreKeys="!text/more_keys_for_arabic_diacritics"
-                latin:backgroundType="functional"
-                latin:keyStyle="hasShiftedLetterHintStyle" />
-        </case>
-        <case
-            latin:languageCode="hy"
-        >
-            <!-- U+055D: "՝" ARMENIAN COMMA -->
-            <Key
-                latin:keyLabel="&#x055D;"
-                latin:backgroundType="functional" />
-            <!-- U+0589: "։" ARMENIAN FULL STOP -->
-            <Key
-                latin:keyLabel="&#x0589;"
-                latin:keyLabelFlags="hasPopupHint"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_punctuation" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel="!text/keylabel_for_tablet_comma"
-                latin:keyHintLabel="!text/keyhintlabel_for_tablet_comma"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_tablet_comma" />
-            <Key
-                latin:keyLabel="."
-                latin:keyHintLabel="!text/keyhintlabel_for_period"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_period" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/keys_curly_brackets.xml b/java/res/xml/keys_curly_brackets.xml
index 6a4b1a9..596516a 100644
--- a/java/res/xml/keys_curly_brackets.xml
+++ b/java/res/xml/keys_curly_brackets.xml
@@ -22,9 +22,7 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="{"
-        latin:code="!code/key_left_curly_bracket" />
+        latin:keySpec="!text/keyspec_left_curly_bracket" />
     <Key
-        latin:keyLabel="}"
-        latin:code="!code/key_right_curly_bracket" />
+        latin:keySpec="!text/keyspec_right_curly_bracket" />
 </merge>
diff --git a/java/res/xml/keys_dvorak_123.xml b/java/res/xml/keys_dvorak_123.xml
index fa94f1f..6efc7f2 100644
--- a/java/res/xml/keys_dvorak_123.xml
+++ b/java/res/xml/keys_dvorak_123.xml
@@ -26,7 +26,7 @@
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
         >
             <Key
-                latin:keyLabel="&quot;"
+                latin:keySpec="&quot;"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
         </case>
@@ -34,7 +34,7 @@
             latin:mode="url"
         >
             <Key
-                latin:keyLabel="/"
+                latin:keySpec="/"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
         </case>
@@ -42,13 +42,13 @@
             latin:mode="email"
         >
             <Key
-                latin:keyLabel="\@"
+                latin:keySpec="\@"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
         </case>
         <default>
             <Key
-                latin:keyLabel="\'"
+                latin:keySpec="\'"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1"
                 latin:moreKeys="!,&quot;" />
@@ -59,22 +59,22 @@
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
         >
             <Key
-                latin:keyLabel="&lt;"
+                latin:keySpec="&lt;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
             <Key
-                latin:keyLabel="&gt;"
+                latin:keySpec="&gt;"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3" />
         </case>
         <default>
             <Key
-                latin:keyLabel=","
+                latin:keySpec=","
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2"
                 latin:moreKeys="\?,&lt;" />
             <Key
-                latin:keyLabel="."
+                latin:keySpec="."
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3"
                 latin:moreKeys="&gt;" />
diff --git a/java/res/xml/keys_farsi3_right.xml b/java/res/xml/keys_farsi3_right.xml
index 77efb0a..867c021 100644
--- a/java/res/xml/keys_farsi3_right.xml
+++ b/java/res/xml/keys_farsi3_right.xml
@@ -23,6 +23,5 @@
 >
     <!-- U+0686: "چ" ARABIC LETTER TCHEH -->
     <Key
-        latin:keyLabel="&#x0686;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0686;" />
 </merge>
diff --git a/java/res/xml/keys_less_greater.xml b/java/res/xml/keys_less_greater.xml
deleted file mode 100644
index 56d0727..0000000
--- a/java/res/xml/keys_less_greater.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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.
-*/
--->
-
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <switch>
-        <case
-            latin:languageCode="fa"
-        >
-            <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-                 U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
-            <Key
-                latin:keyLabel="&#x00AB;"
-                latin:code="0x00BB"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_less_than" />
-            <Key
-                latin:keyLabel="&#x00BB;"
-                latin:code="0x00AB"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_greater_than" />
-        </case>
-        <default>
-            <Key
-                latin:keyLabel="&lt;"
-                latin:code="!code/key_less_than"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_less_than" />
-            <Key
-                latin:keyLabel="&gt;"
-                latin:code="!code/key_greater_than"
-                latin:backgroundType="functional"
-                latin:moreKeys="!text/more_keys_for_greater_than" />
-        </default>
-    </switch>
-</merge>
diff --git a/java/res/xml/keys_parentheses.xml b/java/res/xml/keys_parentheses.xml
index 25e89c9..320b109 100644
--- a/java/res/xml/keys_parentheses.xml
+++ b/java/res/xml/keys_parentheses.xml
@@ -22,11 +22,9 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="("
-        latin:code="!code/key_left_parenthesis"
-        latin:moreKeys="!text/more_keys_for_left_parenthesis" />
+        latin:keySpec="!text/keyspec_left_parenthesis"
+        latin:moreKeys="!text/morekeys_left_parenthesis" />
     <Key
-        latin:keyLabel=")"
-        latin:code="!code/key_right_parenthesis"
-        latin:moreKeys="!text/more_keys_for_right_parenthesis" />
+        latin:keySpec="!text/keyspec_right_parenthesis"
+        latin:moreKeys="!text/morekeys_right_parenthesis" />
 </merge>
diff --git a/java/res/xml/keys_pcqwerty2_right3.xml b/java/res/xml/keys_pcqwerty2_right3.xml
index 6f86477..b188cff 100644
--- a/java/res/xml/keys_pcqwerty2_right3.xml
+++ b/java/res/xml/keys_pcqwerty2_right3.xml
@@ -23,26 +23,26 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
-                latin:keyLabel="["
+                latin:keySpec="["
                 latin:additionalMoreKeys="{" />
             <Key
-                latin:keyLabel="]"
+                latin:keySpec="]"
                 latin:additionalMoreKeys="}" />
             <Key
-                latin:keyLabel="\\"
+                latin:keySpec="\\"
                 latin:additionalMoreKeys="\\|" />
         </case>
         <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
         <default>
             <Key
-                latin:keyLabel="{" />
+                latin:keySpec="{" />
             <Key
-                latin:keyLabel="}" />
+                latin:keySpec="}" />
             <Key
-                latin:keyLabel="|" />
+                latin:keySpec="|" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/keys_pcqwerty3_right2.xml b/java/res/xml/keys_pcqwerty3_right2.xml
index 8da145b..8a1f60f 100644
--- a/java/res/xml/keys_pcqwerty3_right2.xml
+++ b/java/res/xml/keys_pcqwerty3_right2.xml
@@ -23,22 +23,22 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
-                latin:keyLabel=";"
+                latin:keySpec=";"
                 latin:additionalMoreKeys=":" />
             <Key
-                latin:keyLabel="\'"
+                latin:keySpec="\'"
                 latin:additionalMoreKeys="&quot;"
                 latin:moreKeys="!fixedColumnOrder!4,!text/double_quotes,%,!text/single_quotes" />
         </case>
         <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
         <default>
             <Key
-                latin:keyLabel=":" />
+                latin:keySpec=":" />
             <Key
-                latin:keyLabel="&quot;"
+                latin:keySpec="&quot;"
                 latin:moreKeys="!fixedColumnOrder!3,!text/double_quotes,!text/single_quotes" />
         </default>
     </switch>
diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml
index e6084cb..a87f550 100644
--- a/java/res/xml/keys_pcqwerty4_right3.xml
+++ b/java/res/xml/keys_pcqwerty4_right3.xml
@@ -23,18 +23,18 @@
 >
     <switch>
         <case
-            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
         >
             <Key
-                latin:keyLabel=","
+                latin:keySpec=","
                 latin:additionalMoreKeys="&lt;" />
             <Key
-                latin:keyLabel="."
+                latin:keySpec="."
                 latin:additionalMoreKeys="&gt;" />
             <Key
-                latin:keyLabel="/"
+                latin:keySpec="/"
                 latin:additionalMoreKeys="\?"
-                latin:moreKeys="!text/more_keys_for_symbols_question" />
+                latin:moreKeys="!text/morekeys_question" />
         </case>
         <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
         <default>
@@ -45,14 +45,14 @@
                  U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
                  U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="&lt;"
+                latin:keySpec="&lt;"
                 latin:moreKeys="!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;" />
             <Key
-                latin:keyLabel="&gt;"
+                latin:keySpec="&gt;"
                 latin:moreKeys="!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;" />
             <Key
-                latin:keyLabel="\?"
-                latin:moreKeys="!text/more_keys_for_symbols_question" />
+                latin:keySpec="\?"
+                latin:moreKeys="!text/morekeys_question" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/keys_square_brackets.xml b/java/res/xml/keys_square_brackets.xml
index 5c128fd..076b2c2 100644
--- a/java/res/xml/keys_square_brackets.xml
+++ b/java/res/xml/keys_square_brackets.xml
@@ -22,9 +22,7 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="["
-        latin:code="!code/key_left_square_bracket" />
+        latin:keySpec="!text/keyspec_left_square_bracket" />
     <Key
-        latin:keyLabel="]"
-        latin:code="!code/key_right_square_bracket" />
+        latin:keySpec="!text/keyspec_right_square_bracket" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_sign_anusvara.xml b/java/res/xml/keystyle_devanagari_sign_anusvara.xml
new file mode 100644
index 0000000..2517ac5
--- /dev/null
+++ b/java/res/xml/keystyle_devanagari_sign_anusvara.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                 U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                 U+093C: "़" DEVANAGARI SIGN NUKTA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignAnusvara"
+                latin:moreKeys="&#x25CC;&#x0903;|&#x0903;,&#x25CC;&#x0901;|&#x0901;,&#x25CC;&#x093C;|&#x093C;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                 U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignAnusvara"
+                latin:moreKeys="&#x25CC;&#x0903;|&#x0903;,&#x25CC;&#x0901;|&#x0901;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignAnusvara" />
+        </default>
+    </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0902: "ं" DEVANAGARI SIGN ANUSVARA -->
+    <key-style
+        latin:styleName="baseKeyDevanagariSignAnusvara"
+        latin:parentStyle="moreKeysDevanagariSignAnusvara"
+        latin:keySpec="&#x25CC;&#x0902;|&#x0902;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/keystyle_devanagari_sign_candrabindu.xml b/java/res/xml/keystyle_devanagari_sign_candrabindu.xml
new file mode 100644
index 0000000..3eb6ca0
--- /dev/null
+++ b/java/res/xml/keystyle_devanagari_sign_candrabindu.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignCandrabindu"
+                latin:moreKeys="&#x25CC;&#x0945;|&#x0945;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignCandrabindu" />
+        </default>
+    </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU -->
+    <key-style
+        latin:styleName="baseKeyDevanagariSignCandrabindu"
+        latin:parentStyle="moreKeysDevanagariSignCandrabindu"
+        latin:keySpec="&#x25CC;&#x0901;|&#x0901;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/keystyle_devanagari_sign_nukta.xml b/java/res/xml/keystyle_devanagari_sign_nukta.xml
new file mode 100644
index 0000000..e12848c
--- /dev/null
+++ b/java/res/xml/keystyle_devanagari_sign_nukta.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+097D: "ॽ" DEVANAGARI LETTER GLOTTAL STOP
+                 U+0970: "॰" DEVANAGARI ABBREVIATION SIGN
+                 U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignNukta"
+                latin:moreKeys="&#x25CC;&#x097D;|&#x097D;,&#x25CC;&#x0970;|&#x0970;,&#x25CC;&#x093D;|&#x093D;" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_romanized">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+093C: "़" DEVANAGARI SIGN NUKTA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignNukta"
+                latin:moreKeys="&#x25CC;&#x093C;|&#x093C;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignNukta" />
+        </default>
+    </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+093C: "़" DEVANAGARI SIGN NUKTA -->
+    <key-style
+        latin:styleName="baseKeyDevanagariSignNukta"
+        latin:parentStyle="moreKeysDevanagariSignNukta"
+        latin:keySpec="&#x25CC;&#x093C;|&#x093C;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/keystyle_devanagari_sign_virama.xml b/java/res/xml/keystyle_devanagari_sign_virama.xml
index b22fbe8..ff778d9 100644
--- a/java/res/xml/keystyle_devanagari_sign_virama.xml
+++ b/java/res/xml/keystyle_devanagari_sign_virama.xml
@@ -22,14 +22,36 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+094D: "्" DEVANAGARI SIGN VIRAMA -->
+            <key-style
+                latin:styleName="moreKeySpecDevanagariSignVirama"
+                latin:moreKeys="&#x25CC;&#x094D;|&#x094D;" />
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                 U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x25CC;&#x0945;,&#x090D;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0905: "अ" DEVANAGARI LETTER A -->
+            <key-style
+                latin:styleName="moreKeysDevanagariSignVirama"
+                latin:moreKeys="&#x0905;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariSignVirama" />
+        </default>
+    </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
          U+094D: "्" DEVANAGARI SIGN VIRAMA -->
     <key-style
         latin:styleName="baseKeyDevanagariSignVirama"
-        latin:keyLabel="&#x25CC;&#x094D;"
-        latin:code="0x094D"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
- </merge>
+        latin:parentStyle="moreKeysDevanagariSignVirama"
+        latin:keySpec="&#x25CC;&#x094D;|&#x094D;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/keystyle_devanagari_sign_visarga.xml b/java/res/xml/keystyle_devanagari_sign_visarga.xml
index cb29495..d66e8e2 100644
--- a/java/res/xml/keystyle_devanagari_sign_visarga.xml
+++ b/java/res/xml/keystyle_devanagari_sign_visarga.xml
@@ -22,14 +22,11 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+25CC: "◌" DOTTED CIRCLE
          U+0903: "ः" DEVANAGARI SIGN VISARGA -->
     <key-style
         latin:styleName="baseKeyDevanagariSignVisarga"
-        latin:keyLabel="&#x25CC;&#x0903;"
-        latin:code="0x0903"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x0903;|&#x0903;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml b/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml
index 2e78c53..6a62a1f 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_aa.xml
@@ -22,13 +22,9 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+093E/U+0902: "ां" DEVANAGARI VOWEL SIGN AA/DEVANAGARI SIGN ANUSVARA
                  U+093E/U+0901: "ाँ" DEVANAGARI VOWEL SIGN AA/DEVANAGARI SIGN CANDRABINDU -->
@@ -36,9 +32,21 @@
                 latin:styleName="moreKeysDevanagariVowelSignAa"
                 latin:moreKeys="&#x25CC;&#x093E;&#x0902;|&#x093E;&#x0902;,&#x25CC;&#x093E;&#x0901;|&#x093E;&#x0901;,%" />
         </case>
-        <default>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+093E: "ा" DEVANAGARI VOWEL SIGN AA -->
             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignAa" />
+                latin:styleName="moreKeysDevanagariVowelSignAa"
+                latin:moreKeys="&#x25CC;&#x093E;|&#x093E;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0906: "आ" DEVANAGARI LETTER AA -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAa"
+                latin:moreKeys="&#x0906;,%" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignAa" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -46,7 +54,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignAa"
         latin:parentStyle="moreKeysDevanagariVowelSignAa"
-        latin:keyLabel="&#x25CC;&#x093E;"
-        latin:code="0x093E"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x093E;|&#x093E;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml b/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml
index 0554c0e..53f8317 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_ai.xml
@@ -22,30 +22,36 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+0948/U+0902: "ैं" DEVANAGARI VOWEL SIGN AI/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAi"
                 latin:moreKeys="&#x25CC;&#x0948;&#x0902;|&#x0948;&#x0902;,%" />
         </case>
-        <case
-            latin:keyboardLayoutSet="nepali_traditional"
-        >
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0948: "ै" DEVANAGARI VOWEL SIGN AI -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAi"
+                latin:moreKeys="&#x25CC;&#x0948;|&#x0948;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0910: "ऐ" DEVANAGARI LETTER AI -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAi"
+                latin:moreKeys="&#x0910;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_traditional">
             <!-- U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAi"
                 latin:moreKeys="&#x0936;&#x094D;&#x0930;" />
         </case>
         <default>
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignAi" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignAi" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -53,7 +59,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignAi"
         latin:parentStyle="moreKeysDevanagariVowelSignAi"
-        latin:keyLabel="&#x25CC;&#x0948;"
-        latin:code="0x0948"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x0948;|&#x0948;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_au.xml b/java/res/xml/keystyle_devanagari_vowel_sign_au.xml
index 29a11a8..04f8456 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_au.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_au.xml
@@ -22,29 +22,36 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
-                U+094C/U+0902: "ौं" DEVANAGARI VOWEL SIGN AU/DEVANAGARI SIGN ANUSVARA -->
+                 U+094C/U+0902: "ौं" DEVANAGARI VOWEL SIGN AU/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignAu"
                 latin:moreKeys="&#x25CC;&#x094C;&#x0902;|&#x094C;&#x0902;,%" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+094C: "ौ" DEVANAGARI VOWEL SIGN AU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAu"
+                latin:moreKeys="&#x25CC;&#x094C;|&#x094C;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0914: "औ" DEVANAGARI LETTER AU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignAu"
+                latin:moreKeys="&#x0914;,%" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignAu" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignAu" />
         </default>
     </switch>
     <!-- U+094C: "ौ" DEVANAGARI VOWEL SIGN AU -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignAu"
         latin:parentStyle="moreKeysDevanagariVowelSignAu"
-        latin:keyLabel="&#x25CC;&#x094C;"
-        latin:code="0x094C"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x094C;|&#x094C;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml b/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml
new file mode 100644
index 0000000..2f2998f
--- /dev/null
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_candra_e.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraE"
+                latin:moreKeys="&#x25CC;&#x0945;|&#x0945;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+090D: "ऍ" DEVANAGARI LETTER CANDRA E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraE"
+                latin:moreKeys="&#x090D;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignCandraE" />
+        </default>
+    </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignCandraE"
+        latin:parentStyle="moreKeysDevanagariVowelSignCandraE"
+        latin:keySpec="&#x25CC;&#x0945;|&#x0945;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml b/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml
new file mode 100644
index 0000000..c36e3fb
--- /dev/null
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_candra_o.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraO"
+                latin:moreKeys="&#x25CC;&#x0949;|&#x0949;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignCandraO"
+                latin:moreKeys="&#x0911;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignCandraO" />
+        </default>
+    </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignCandraO"
+        latin:parentStyle="moreKeysDevanagariVowelSignCandraO"
+        latin:keySpec="&#x25CC;&#x0949;|&#x0949;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_e.xml b/java/res/xml/keystyle_devanagari_vowel_sign_e.xml
index edd29c7..481e53e 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_e.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_e.xml
@@ -22,22 +22,29 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+0947/U+0902: "ें" DEVANAGARI VOWEL SIGN E/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignE"
                 latin:moreKeys="&#x25CC;&#x0947;&#x0902;|&#x0947;&#x0902;" />
         </case>
-        <case
-            latin:keyboardLayoutSet="nepali_traditional"
-        >
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0947: "े" DEVANAGARI VOWEL SIGN E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignE"
+                latin:moreKeys="&#x25CC;&#x0947;|&#x0947;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+090F: "ए" DEVANAGARI LETTER SHORT E -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignE"
+                latin:moreKeys="&#x090F;" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_traditional">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+0903: "ः‍" DEVANAGARI SIGN VISARGA
                  U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
@@ -46,14 +53,14 @@
                 latin:moreKeys="&#x25CC;&#x0903;|&#x0903;,&#x093D;" />
         </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignE" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignE" />
         </default>
     </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0947: "े" DEVANAGARI VOWEL SIGN E -->
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignE"
         latin:parentStyle="moreKeysDevanagariVowelSignE"
-        latin:keyLabel="&#x25CC;&#x0947;"
-        latin:code="0x0947"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x0947;|&#x0947;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_i.xml b/java/res/xml/keystyle_devanagari_vowel_sign_i.xml
index 200fed2..4b3a240 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_i.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_i.xml
@@ -22,22 +22,30 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+093F/U+0902: "िं" DEVANAGARI VOWEL SIGN I/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignI"
                 latin:moreKeys="&#x093F;&#x25CC;&#x0902;|&#x093F;&#x0902;" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+093F: "ि" DEVANAGARI VOWEL SIGN I -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignI"
+                latin:moreKeys="&#x25CC;&#x093F;|&#x093F;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0907: "इ" DEVANAGARI LETTER I -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignI"
+                latin:moreKeys="&#x0907;" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignI" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignI" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -45,7 +53,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignI"
         latin:parentStyle="moreKeysDevanagariVowelSignI"
-        latin:keyLabel="&#x25CC;&#x093F;"
-        latin:code="0x093F"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x093F;|&#x093F;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml b/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml
index 6dc9951..8ade6ef 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_ii.xml
@@ -22,22 +22,30 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
-            <!-- U+0940: "ी" DEVANAGARI VOWEL SIGN II
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+0940/U+0902: "ीं" DEVANAGARI VOWEL SIGN II/DEVANAGARI SIGN ANUSVARA -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignIi"
                 latin:moreKeys="&#x25CC;&#x0940;&#x0902;|&#x0940;&#x0902;,%" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0940: "ी" DEVANAGARI VOWEL SIGN II -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignIi"
+                latin:moreKeys="&#x25CC;&#x0940;|&#x0940;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0908: "ई" DEVANAGARI LETTER II -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignIi"
+                latin:moreKeys="&#x0908;,%" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignIi" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignIi" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -45,7 +53,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignIi"
         latin:parentStyle="moreKeysDevanagariVowelSignIi"
-        latin:keyLabel="&#x25CC;&#x0940;"
-        latin:code="0x0940"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x0940;|&#x0940;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_o.xml b/java/res/xml/keystyle_devanagari_vowel_sign_o.xml
index 233ac86..3afded4 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_o.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_o.xml
@@ -22,24 +22,32 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
-                 U+094B/U+0902: "қं" DEVANAGARI VOWEL SIGN O/DEVANAGARI SIGN ANUSVARA
+                 U+094B/U+0902: "ों" DEVANAGARI VOWEL SIGN O/DEVANAGARI SIGN ANUSVARA
                  U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
                  U+094A: "ॊ" DEVANAGARI VOWEL SIGN SHORT O -->
             <key-style
                 latin:styleName="moreKeysDevanagariVowelSignO"
                 latin:moreKeys="&#x25CC;&#x094B;&#x0902;|&#x094B;&#x0902;,&#x25CC;&#x0949;|&#x0949;,&#x25CC;&#x094A;|&#x094A;" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+094B: "ो" DEVANAGARI VOWEL SIGN O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignO"
+                latin:moreKeys="&#x25CC;&#x094B;|&#x094B;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignO"
+                latin:moreKeys="&#x0913;" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignO" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignO" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -47,7 +55,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignO"
         latin:parentStyle="moreKeysDevanagariVowelSignO"
-        latin:keyLabel="&#x25CC;&#x094B;"
-        latin:code="0x094B"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x094B;|&#x094B;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_u.xml b/java/res/xml/keystyle_devanagari_vowel_sign_u.xml
index 7291b70..1eb19b5 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_u.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_u.xml
@@ -22,13 +22,9 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+0941/U+0902: "ुं" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN ANUSVARA
                  U+0941/U+0901: "ुँ" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN CANDRABINDU -->
@@ -36,9 +32,21 @@
                 latin:styleName="moreKeysDevanagariVowelSignU"
                 latin:moreKeys="&#x25CC;&#x0941;&#x0902;|&#x0941;&#x0902;,&#x25CC;&#x0941;&#x0901;|&#x0941;&#x0901;" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0941: "ु" DEVANAGARI VOWEL SIGN U -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignU"
+                latin:moreKeys="&#x25CC;&#x0941;|&#x0941;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0909: "उ" DEVANAGARI LETTER U -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignU"
+                latin:moreKeys="&#x0909;" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignU" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignU" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -46,7 +54,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignU"
         latin:parentStyle="moreKeysDevanagariVowelSignU"
-        latin:keyLabel="&#x25CC;&#x0941;"
-        latin:code="0x0941"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x0941;|&#x0941;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml b/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml
index a95ab82..0bb3426 100644
--- a/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_uu.xml
@@ -22,13 +22,9 @@
      API version 16 can't automatically render dotted circle for incomplete combining letter
      of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
      counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSet="hindi"
-        >
+        <case latin:keyboardLayoutSet="hindi">
             <!-- U+25CC: "◌" DOTTED CIRCLE
                  U+0942/U+0902: "ूं" DEVANAGARI VOWEL SIGN UU/DEVANAGARI SIGN ANUSVARA
                  U+0942/U+0901: "ूँ" DEVANAGARI VOWEL SIGN UU/DEVANAGARI SIGN CANDRABINDU -->
@@ -36,9 +32,21 @@
                 latin:styleName="moreKeysDevanagariVowelSignUu"
                 latin:moreKeys="&#x25CC;&#x0942;&#x0902;|&#x0942;&#x0902;,&#x25CC;&#x0942;&#x0901;|&#x0942;&#x0901;,%" />
         </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0942: "ू" DEVANAGARI VOWEL SIGN UU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignUu"
+                latin:moreKeys="&#x25CC;&#x0942;|&#x0942;,%" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+090A: "ऊ" DEVANAGARI LETTER UU -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignUu"
+                latin:moreKeys="&#x090A;,%" />
+        </case>
         <default>
-             <key-style
-                latin:styleName="moreKeysDevanagariVowelSignUu" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignUu" />
         </default>
     </switch>
     <!-- U+25CC: "◌" DOTTED CIRCLE
@@ -46,7 +54,6 @@
     <key-style
         latin:styleName="baseKeyDevanagariVowelSignUu"
         latin:parentStyle="moreKeysDevanagariVowelSignUu"
-        latin:keyLabel="&#x25CC;&#x0942;"
-        latin:code="0x0942"
-        latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+        latin:keySpec="&#x25CC;&#x0942;|&#x0942;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
 </merge>
diff --git a/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml b/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml
new file mode 100644
index 0000000..688826a
--- /dev/null
+++ b/java/res/xml/keystyle_devanagari_vowel_sign_vocalic_r.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- The code point U+25CC for key label is needed because the font rendering system prior to
+     API version 16 can't automatically render dotted circle for incomplete combining letter
+     of some scripts. The files named res/xml/key_*.xml have this U+25CC hack, although the
+     counterpart files named res/xml-v16/key_*.xml don't have this hack. -->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSet="hindi">
+            <!-- U+25CC: "◌" DOTTED CIRCLE
+                 U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x25CC;&#x0944;|&#x0944;" />
+        </case>
+        <case latin:keyboardLayoutSet="hindi_compact">
+            <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                 U+25CC: "◌" DOTTED CIRCLE
+                 U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x090B;,&#x25CC;&#x0943;|&#x0943;" />
+        </case>
+        <case latin:keyboardLayoutSet="marathi">
+            <!-- U+0931: "ऱ" DEVANAGARI LETTER RRA
+                 U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                 U+25CC: "◌" DOTTED CIRCLE
+                 U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0931;,&#x090B;,&#x25CC;&#x0943;|&#x0943;" />
+        </case>
+        <case latin:keyboardLayoutSet="nepali_traditional">
+            <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+            <key-style
+                latin:styleName="moreKeysDevanagariVowelSignVocalicR"
+                latin:moreKeys="&#x0913;" />
+        </case>
+        <default>
+            <key-style latin:styleName="moreKeysDevanagariVowelSignVocalicR" />
+        </default>
+    </switch>
+    <!-- U+25CC: "◌" DOTTED CIRCLE
+         U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R -->
+    <key-style
+        latin:styleName="baseKeyDevanagariVowelSignVocalicR"
+        latin:parentStyle="moreKeysDevanagariVowelSignVocalicR"
+        latin:keySpec="&#x25CC;&#x0943;|&#x0943;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 0a27da9..5021f33 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -24,60 +24,75 @@
     keyboard_locale: script_name/keyboard_layout_set
     af: Afrikaans/qwerty
     ar: Arabic/arabic
-    (az: Azerbaijani/qwerty)  # disabled temporarily. waiting for string resources.
-    be: Belarusian/east_slavic
+    az_AZ: Azerbaijani (Azerbaijan)/qwerty
+    be_BY: Belarusian (Belarus)/east_slavic
     bg: Bulgarian/bulgarian
     bg: Bulgarian/bulgarian_bds
+    (bn_IN: Bengali (India)/bengali)  # This is a preliminary keyboard layout.
     ca: Catalan/spanish
     cs: Czech/qwertz
     da: Danish/nordic
     de: German/qwertz
+    de_CH: German (Switzerland)/swiss
     el: Greek/greek
-    en_US: English United States/qwerty
-    en_GB: English Great Britain/qwerty
+    en_IN: English (India)/qwerty
+    en_US: English (United States)/qwerty
+    en_GB: English (Great Britain)/qwerty
     eo: Esperanto/spanish
     es: Spanish/spanish
-    es_US: Spanish United States/spanish
-    (es_419: Spanish Latin America/qwerty)
-    et_EE: Estonian/nordic
-    fa: Persian/arabic
+    es_US: Spanish (United States)/spanish
+    es_419: Spanish (Latin America)/spanish
+    et_EE: Estonian (Estonia)/nordic
+    eu_ES: Basque (Spain)/spanish
+    fa: Persian/farsi
     fi: Finnish/nordic
     fr: French/azerty
-    fr_CA: French Canada/qwerty
+    fr_CA: French (Canada)/qwerty
+    fr_CH: French (Switzerland)/swiss
+    gl_ES: Galician (Spain)/spanish
     hi: Hindi/hindi
+    (hi: Hindi/hindi_compact) # This is a preliminary keyboard layout.
     hr: Croatian/qwertz
     hu: Hungarian/qwertz
-    hy_AM: Armenian Phonetic/armenian_phonetic
-    in: Indonesian/qwerty    # "id" is official language code of Indonesian.
+    hy_AM: Armenian (Armenia) Phonetic/armenian_phonetic
+    in: Indonesian/qwerty    # "id" is the official language code of Indonesian.
     is: Icelandic/qwerty
     it: Italian/qwerty
-    iw: Hebrew/hebrew        # "he" is official language code of Hebrew.
-    ka_GE: Georgian/georgian
-    (kk: Kazakh/east_slavic) # disabled temporarily. waiting for string resources.
-    km_KH: Khmer/khmer
+    it_CH: Italian (Switzerland)/swiss
+    iw: Hebrew/hebrew        # "he" is the official language code of Hebrew.
+    ka_GE: Georgian (Georgia)/georgian
+    kk: Kazakh/east_slavic
+    km_KH: Khmer (Cambodia)/khmer
+    (kn_IN: Kannada (India)/kannada) # This is a preliminary keyboard layout.
     ky: Kyrgyz/east_slavic
-    lo_LA: Lao/lao
+    lo_LA: Lao (Laos)/lao
     lt: Lithuanian/qwerty
     lv: Latvian/qwerty
     mk: Macedonian/south_slavic
-    mn_MN: Mongolian/mongolian
-    ms_MY: Malay/qwerty
+    (ml_IN: Malayalam (India)/malayalam) # This is a preliminary keyboard layout.
+    mn_MN: Mongolian (Mongolia)/mongolian
+    (mr_IN: Marathi (India)/marathi) # This is a preliminary keyboard layout.
+    ms_MY: Malay (Malaysia)/qwerty
+    (my_MM: Myanmar (Myanmar)/myanmar) # This is a preliminary keyboard layout.
     nb: Norwegian Bokmål/nordic
-    (ne: Nepali Romanized/nepali_romanized)  # disabled temporarily
-    (ne: Nepali Traditional/nepali_traditional)  # disabled temporarily
+    ne_NP: Nepali (Nepal) Romanized/nepali_romanized
+    ne_NP: Nepali (Nepal) Traditional/nepali_traditional
     nl: Dutch/qwerty
-    nl_BE: Dutch Belgium/azerty
+    nl_BE: Dutch (Belgium)/azerty
     pl: Polish/qwerty
-    pt_BR: Portuguese Brazil/qwerty
-    pt_PT: Portuguese Portugal/qwerty
+    pt_BR: Portuguese (Brazil)/qwerty
+    pt_PT: Portuguese (Portugal)/qwerty
     ro: Romanian/qwerty
     ru: Russian/east_slavic
+    (si_LK: Sinhala (Sri Lanka)/sinhala) # This is a preliminary keyboard layout.
     sk: Slovak/qwerty
     sl: Slovenian/qwerty
     sr: Serbian/south_slavic
     (sr-Latn: Serbian/qwerty) # not yet implemented.
     sv: Swedish/nordic
     sw: Swahili/qwerty
+    (ta_IN: Tamil (India)/tamil) # This is a preliminary keyboard layout.
+    (te_IN: Telugu (India)/telugu) # This is a preliminary keyboard layout.
     th: Thai/thai
     tl: Tagalog/spanish
     tr: Turkish/qwerty
@@ -88,19 +103,22 @@
     (zz: Emoji/emoji)
     -->
 <!-- TODO: use <lang>_keyboard icon instead of a common keyboard icon. -->
+<!-- TODO: Remove "AsciiCapable" from the extra values when we can stop supporting JB-MR1 -->
 <!-- Note: SupportTouchPositionCorrection extra value is obsolete and maintained for backward
      compatibility. -->
 <!-- If IME doesn't have an applicable subtype, the first subtype will be used as a default
      subtype.-->
 <input-method xmlns:android="http://schemas.android.com/apk/res/android"
         android:settingsActivity="com.android.inputmethod.latin.settings.SettingsActivity"
-        android:isDefault="@bool/im_is_default">
+        android:isDefault="@bool/im_is_default"
+        android:supportsSwitchingToNextInputMethod="true">
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_en_US"
             android:subtypeId="0xc9194f98"
             android:imeSubtypeLocale="en_US"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_en_GB"
@@ -108,6 +126,7 @@
             android:imeSubtypeLocale="en_GB"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="TrySuppressingImeSwitcher,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -115,6 +134,7 @@
             android:imeSubtypeLocale="af"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -122,22 +142,23 @@
             android:imeSubtypeLocale="ar"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="false"
     />
-    <!--
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x70b0f974"
-            android:imeSubtypeLocale="az"
+            android:imeSubtypeLocale="az_AZ"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
-    -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x1dc3a859"
-            android:imeSubtypeLocale="be"
+            android:imeSubtypeLocale="be_BY"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -145,6 +166,7 @@
             android:imeSubtypeLocale="bg"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=bulgarian,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_bulgarian_bds"
@@ -152,6 +174,17 @@
             android:imeSubtypeLocale="bg"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=bulgarian_bds,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This bengali keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xbff5986c"
+            android:imeSubtypeLocale="bn_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=bengali,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -159,6 +192,7 @@
             android:imeSubtypeLocale="ca"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -166,6 +200,7 @@
             android:imeSubtypeLocale="cs"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -173,6 +208,7 @@
             android:imeSubtypeLocale="da"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -180,6 +216,15 @@
             android:imeSubtypeLocale="de"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x7acfd0aa"
+            android:imeSubtypeLocale="de_CH"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -187,6 +232,15 @@
             android:imeSubtypeLocale="el"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=greek,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x8d58fc2d"
+            android:imeSubtypeLocale="en_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -194,6 +248,7 @@
             android:imeSubtypeLocale="eo"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -201,6 +256,7 @@
             android:imeSubtypeLocale="es"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_es_US"
@@ -208,22 +264,31 @@
             android:imeSubtypeLocale="es_US"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
-    <!--
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
-            android:subtypeId="0x623f9286"
+            android:subtypeId="0xa23e5d19"
             android:imeSubtypeLocale="es_419"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
-    -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0xec2d3955"
             android:imeSubtypeLocale="et_EE"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=nordic,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x070e5c07"
+            android:imeSubtypeLocale="eu_ES"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -231,6 +296,7 @@
             android:imeSubtypeLocale="fa"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=farsi,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -238,6 +304,7 @@
             android:imeSubtypeLocale="fi"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -245,6 +312,7 @@
             android:imeSubtypeLocale="fr"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -252,6 +320,23 @@
             android:imeSubtypeLocale="fr_CA"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xeadc55f5"
+            android:imeSubtypeLocale="fr_CH"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xb939573c"
+            android:imeSubtypeLocale="gl_ES"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -259,6 +344,17 @@
             android:imeSubtypeLocale="hi"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=hindi,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This hindi_compact keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic_compact"
+            android:subtypeId="0xe49c89a1"
+            android:imeSubtypeLocale="hi"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=hindi_compact,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -266,6 +362,7 @@
             android:imeSubtypeLocale="hr"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -273,6 +370,7 @@
             android:imeSubtypeLocale="hu"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -280,6 +378,7 @@
             android:imeSubtypeLocale="hy_AM"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=armenian_phonetic,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <!-- Java uses the deprecated "in" code instead of the standard "id" code for Indonesian. -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
@@ -288,6 +387,7 @@
             android:imeSubtypeLocale="in"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -295,6 +395,7 @@
             android:imeSubtypeLocale="is"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -302,6 +403,15 @@
             android:imeSubtypeLocale="it"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xd914fe1a"
+            android:imeSubtypeLocale="it_CH"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <!-- Java uses the deprecated "iw" code instead of the standard "he" code for Hebrew. -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
@@ -310,6 +420,7 @@
             android:imeSubtypeLocale="iw"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -317,22 +428,33 @@
             android:imeSubtypeLocale="ka_GE"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=georgian,EmojiCapable"
+            android:isAsciiCapable="false"
     />
-    <!--
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x2d73d2f6"
             android:imeSubtypeLocale="kk"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
+            android:isAsciiCapable="false"
     />
-    -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x1365683a"
             android:imeSubtypeLocale="km_KH"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=khmer,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This kannada keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x8c78064f"
+            android:imeSubtypeLocale="kn_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=kannada,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -340,6 +462,7 @@
             android:imeSubtypeLocale="ky"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -347,6 +470,7 @@
             android:imeSubtypeLocale="lo_LA"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=lao,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -354,6 +478,7 @@
             android:imeSubtypeLocale="lt"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -361,6 +486,7 @@
             android:imeSubtypeLocale="lv"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -368,6 +494,17 @@
             android:imeSubtypeLocale="mk"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=south_slavic,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This malayalam keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xc182ebd4"
+            android:imeSubtypeLocale="ml_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=malayalam,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -375,6 +512,17 @@
             android:imeSubtypeLocale="mn_MN"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=mongolian,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This marathi keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x747b9f03"
+            android:imeSubtypeLocale="mr_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=marathi,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -382,6 +530,17 @@
             android:imeSubtypeLocale="ms_MY"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <!-- TODO: This Myanmar keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xea266ea4"
+            android:imeSubtypeLocale="my_MM"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=myanmar,EmojiCapable,CombiningRules=MyanmarReordering"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -389,29 +548,31 @@
             android:imeSubtypeLocale="nb"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
-    <!--
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0xd80a4cee"
-            android:imeSubtypeLocale="ne"
+            android:imeSubtypeLocale="ne_NP"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=nepali_romanized,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
-            android:label="@string/subtype_nepali_traditional"
+            android:label="@string/subtype_generic_traditional"
             android:subtypeId="0x5fafea88"
-            android:imeSubtypeLocale="ne"
+            android:imeSubtypeLocale="ne_NP"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=nepali_traditional,EmojiCapable"
+            android:isAsciiCapable="false"
     />
-    -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x3f9fd91e"
             android:imeSubtypeLocale="nl"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -419,6 +580,7 @@
             android:imeSubtypeLocale="nl_BE"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=azerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -426,6 +588,7 @@
             android:imeSubtypeLocale="pl"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -433,6 +596,7 @@
             android:imeSubtypeLocale="pt_BR"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -440,6 +604,7 @@
             android:imeSubtypeLocale="pt_PT"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -447,6 +612,7 @@
             android:imeSubtypeLocale="ro"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -454,6 +620,17 @@
             android:imeSubtypeLocale="ru"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This sinhala keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x5c6b3bde"
+            android:imeSubtypeLocale="si_LK"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=sinhala,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -461,6 +638,7 @@
             android:imeSubtypeLocale="sk"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -468,6 +646,7 @@
             android:imeSubtypeLocale="sl"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -475,6 +654,7 @@
             android:imeSubtypeLocale="sr"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <!-- TODO: Uncomment once we can handle IETF language tag with script name specified.
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
@@ -483,6 +663,7 @@
             android:imeSubtypeLocale="sr"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_serbian_latin"
@@ -490,6 +671,7 @@
             android:imeSubtypeLocale="sr-Latn"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     -->
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
@@ -498,6 +680,7 @@
             android:imeSubtypeLocale="sv"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -505,6 +688,27 @@
             android:imeSubtypeLocale="sw"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
+    <!-- TODO: This tamil keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x67acea2a"
+            android:imeSubtypeLocale="ta_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=tamil,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
+    <!-- TODO: This telugu keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x1e177389"
+            android:imeSubtypeLocale="te_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=telugu,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -512,6 +716,7 @@
             android:imeSubtypeLocale="th"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=thai,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -519,6 +724,7 @@
             android:imeSubtypeLocale="tl"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -526,6 +732,7 @@
             android:imeSubtypeLocale="tr"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -533,6 +740,7 @@
             android:imeSubtypeLocale="uk"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=east_slavic,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -540,6 +748,7 @@
             android:imeSubtypeLocale="vi"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
@@ -547,6 +756,7 @@
             android:imeSubtypeLocale="zu"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_no_language_qwerty"
@@ -554,6 +764,7 @@
             android:imeSubtypeLocale="zz"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EnabledWhenDefaultIsNotAsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
     />
     <!-- Emoji subtype has to be an addtional subtype added at boot time because ICS doesn't
          support Emoji. -->
@@ -564,6 +775,7 @@
             android:imeSubtypeLocale="zz"
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="KeyboardLayoutSet=emoji,EmojiCapable"
+            android:isAsciiCapable="false"
     />
     -->
 </input-method>
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index bf3b623..6febb31 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -18,15 +18,21 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
     android:key="english_ime_settings">
-    <PreferenceCategory
-        android:title="@string/general_category"
-        android:key="general_settings">
+    <PreferenceScreen
+        android:title="@string/settings_screen_input"
+        android:key="screen_input">
         <CheckBoxPreference
             android:key="auto_cap"
             android:title="@string/auto_cap"
             android:summary="@string/auto_cap_summary"
-            android:persistent="true"
-            android:defaultValue="true" />
+            android:defaultValue="true"
+            android:persistent="true" />
+        <CheckBoxPreference
+            android:key="pref_key_use_double_space_period"
+            android:title="@string/use_double_space_period"
+            android:summary="@string/use_double_space_period_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
         <CheckBoxPreference
             android:key="vibrate_on"
             android:title="@string/vibrate_on_keypress"
@@ -40,17 +46,74 @@
         <CheckBoxPreference
             android:key="popup_on"
             android:title="@string/popup_on_keypress"
-            android:persistent="true"
-            android:defaultValue="@bool/config_default_key_preview_popup" />
+            android:defaultValue="@bool/config_default_key_preview_popup"
+            android:persistent="true" />
         <CheckBoxPreference
             android:key="pref_voice_input_key"
             android:title="@string/voice_input"
-            android:persistent="true"
-            android:defaultValue="true" />
-    </PreferenceCategory>
-    <PreferenceCategory
-        android:title="@string/correction_category"
-        android:key="correction_settings">
+            android:defaultValue="true"
+            android:persistent="true" />
+    </PreferenceScreen>
+    <ListPreference
+        android:key="pref_keyboard_theme"
+        android:title="@string/keyboard_theme"
+        android:entryValues="@array/keyboard_theme_ids"
+        android:entries="@array/keyboard_theme_names"
+        android:persistent="true" />
+    <PreferenceScreen
+        android:title="@string/settings_screen_multi_lingual"
+        android:key="screen_multi_lingual">
+        <CheckBoxPreference
+            android:key="pref_show_language_switch_key"
+            android:title="@string/show_language_switch_key"
+            android:summary="@string/show_language_switch_key_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
+        <CheckBoxPreference
+            android:key="pref_include_other_imes_in_language_switch_list"
+            android:dependency="pref_show_language_switch_key"
+            android:title="@string/include_other_imes_in_language_switch_list"
+            android:summary="@string/include_other_imes_in_language_switch_list_summary"
+            android:defaultValue="false"
+            android:persistent="true" />
+        <PreferenceScreen
+            android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings"
+            android:key="custom_input_styles"
+            android:title="@string/custom_input_styles_title" />
+    </PreferenceScreen>
+    <PreferenceScreen
+        android:title="@string/settings_screen_gesture"
+        android:key="screen_gesture">
+        <CheckBoxPreference
+            android:key="gesture_input"
+            android:title="@string/gesture_input"
+            android:summary="@string/gesture_input_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
+        <CheckBoxPreference
+            android:key="pref_gesture_floating_preview_text"
+            android:dependency="gesture_input"
+            android:title="@string/gesture_floating_preview_text"
+            android:summary="@string/gesture_floating_preview_text_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
+        <CheckBoxPreference
+            android:key="pref_gesture_preview_trail"
+            android:dependency="gesture_input"
+            android:title="@string/gesture_preview_trail"
+            android:defaultValue="true"
+            android:persistent="true" />
+        <CheckBoxPreference
+            android:key="pref_gesture_space_aware"
+            android:dependency="gesture_input"
+            android:title="@string/gesture_space_aware"
+            android:summary="@string/gesture_space_aware_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
+    </PreferenceScreen>
+    <PreferenceScreen
+        android:title="@string/settings_screen_correction"
+        android:key="screen_correction">
         <PreferenceScreen
             android:key="edit_personal_dictionary"
             android:title="@string/edit_personal_dictionary">
@@ -71,137 +134,75 @@
             android:key="pref_key_block_potentially_offensive"
             android:title="@string/prefs_block_potentially_offensive_title"
             android:summary="@string/prefs_block_potentially_offensive_summary"
-            android:persistent="true"
-            android:defaultValue="@bool/config_block_potentially_offensive" />
+            android:defaultValue="@bool/config_block_potentially_offensive"
+            android:persistent="true" />
         <ListPreference
             android:key="auto_correction_threshold"
             android:title="@string/auto_correction"
             android:summary="@string/auto_correction_summary"
-            android:persistent="true"
             android:entryValues="@array/auto_correction_threshold_mode_indexes"
             android:entries="@array/auto_correction_threshold_modes"
-            android:defaultValue="@string/auto_correction_threshold_mode_index_modest" />
+            android:defaultValue="@string/auto_correction_threshold_mode_index_modest"
+            android:persistent="true" />
         <ListPreference
             android:key="show_suggestions_setting"
             android:summary="@string/prefs_show_suggestions_summary"
             android:title="@string/prefs_show_suggestions"
-            android:persistent="true"
             android:entryValues="@array/prefs_suggestion_visibility_values"
             android:entries="@array/prefs_suggestion_visibilities"
-            android:defaultValue="@string/prefs_suggestion_visibility_default_value" />
-    </PreferenceCategory>
-    <PreferenceCategory
-        android:title="@string/gesture_typing_category"
-        android:key="gesture_typing_settings">
+            android:defaultValue="@string/prefs_suggestion_visibility_default_value"
+            android:persistent="true" />
         <CheckBoxPreference
-            android:key="gesture_input"
-            android:title="@string/gesture_input"
-            android:summary="@string/gesture_input_summary"
-            android:persistent="true"
-            android:defaultValue="true" />
-        <!-- TODO: Move these two options to the advanced settings. -->
+            android:key="pref_key_use_personalized_dicts"
+            android:title="@string/use_personalized_dicts"
+            android:summary="@string/use_personalized_dicts_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
         <CheckBoxPreference
-            android:key="pref_gesture_floating_preview_text"
-            android:dependency="gesture_input"
-            android:title="@string/gesture_floating_preview_text"
-            android:summary="@string/gesture_floating_preview_text_summary"
-            android:persistent="true"
-            android:defaultValue="true" />
-        <CheckBoxPreference
-            android:key="pref_gesture_preview_trail"
-            android:dependency="gesture_input"
-            android:title="@string/gesture_preview_trail"
-            android:persistent="true"
-            android:defaultValue="true" />
-    </PreferenceCategory>
-    <PreferenceCategory
-        android:title="@string/misc_category"
-        android:key="misc_settings">
+            android:key="pref_key_use_contacts_dict"
+            android:title="@string/use_contacts_dict"
+            android:summary="@string/use_contacts_dict_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
         <CheckBoxPreference
             android:key="next_word_prediction"
             android:title="@string/bigram_prediction"
             android:summary="@string/bigram_prediction_summary"
-            android:persistent="true"
-            android:defaultValue="true" />
-        <PreferenceScreen
-            android:key="pref_advanced_settings"
-            android:title="@string/advanced_settings"
-            android:summary="@string/advanced_settings_summary">
-            <CheckBoxPreference
-                android:key="pref_key_use_contacts_dict"
-                android:title="@string/use_contacts_dict"
-                android:summary="@string/use_contacts_dict_summary"
-                android:persistent="true"
-                android:defaultValue="true" />
-            <CheckBoxPreference
-                android:key="pref_key_use_double_space_period"
-                android:title="@string/use_double_space_period"
-                android:summary="@string/use_double_space_period_summary"
-                android:persistent="true"
-                android:defaultValue="true" />
-            <CheckBoxPreference
-                android:key="pref_show_language_switch_key"
-                android:title="@string/show_language_switch_key"
-                android:summary="@string/show_language_switch_key_summary"
-                android:persistent="true"
-                android:defaultValue="true" />
-            <CheckBoxPreference
-                android:key="pref_include_other_imes_in_language_switch_list"
-                android:title="@string/include_other_imes_in_language_switch_list"
-                android:summary="@string/include_other_imes_in_language_switch_list_summary"
-                android:persistent="true"
-                android:defaultValue="false" />
-            <!-- Values for popup dismiss delay are added programmatically -->
-            <CheckBoxPreference
-                android:key="pref_sliding_key_input_preview"
-                android:title="@string/sliding_key_input_preview"
-                android:summary="@string/sliding_key_input_preview_summary"
-                android:persistent="true"
-                android:defaultValue="true" />
-            <ListPreference
-                android:key="pref_keyboard_layout_20110916"
-                android:title="@string/keyboard_color_scheme"
-                android:persistent="true"
-                android:entryValues="@array/keyboard_color_schemes_values"
-                android:entries="@array/keyboard_color_schemes"
-                android:defaultValue="@string/config_default_keyboard_theme_index" />
-            <PreferenceScreen
-                android:fragment="com.android.inputmethod.latin.settings.AdditionalSubtypeSettings"
-                android:key="custom_input_styles"
-                android:title="@string/custom_input_styles_title" />
-            <ListPreference
-                android:key="pref_key_preview_popup_dismiss_delay"
-                android:title="@string/key_preview_popup_dismiss_delay" />
-            <com.android.inputmethod.latin.settings.SeekBarDialogPreference
-                android:key="pref_key_longpress_timeout"
-                android:title="@string/prefs_key_longpress_timeout_settings"
-                latin:minValue="@integer/config_min_longpress_timeout"
-                latin:maxValue="@integer/config_max_longpress_timeout"
-                latin:stepValue="@integer/config_longpress_timeout_step" />
-            <com.android.inputmethod.latin.settings.SeekBarDialogPreference
-                android:key="pref_vibration_duration_settings"
-                android:title="@string/prefs_keypress_vibration_duration_settings"
-                latin:maxValue="@integer/config_max_vibration_duration" />
-            <com.android.inputmethod.latin.settings.SeekBarDialogPreference
-                android:key="pref_keypress_sound_volume"
-                android:title="@string/prefs_keypress_sound_volume_settings"
-                latin:maxValue="100" /> <!-- percent -->
-            <!-- The settigs for showing setup wizard application icon shouldn't be persistent and
-                 the default value is added programmatically. -->
-            <CheckBoxPreference
-                android:key="pref_show_setup_wizard_icon"
-                android:title="@string/show_setup_wizard_icon"
-                android:summary="@string/show_setup_wizard_icon_summary" />
+            android:defaultValue="true"
+            android:persistent="true" />
         </PreferenceScreen>
+    <PreferenceScreen
+        android:title="@string/settings_screen_advanced"
+        android:key="screen_advanced">
+        <!-- TODO: consolidate key preview dismiss delay with the key preview animation parameters. -->
+        <ListPreference
+            android:key="pref_key_preview_popup_dismiss_delay"
+            android:title="@string/key_preview_popup_dismiss_delay" />
+        <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+            android:key="pref_vibration_duration_settings"
+            android:title="@string/prefs_keypress_vibration_duration_settings"
+            latin:maxValue="@integer/config_max_vibration_duration" />
+        <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+            android:key="pref_keypress_sound_volume"
+            android:title="@string/prefs_keypress_sound_volume_settings"
+            latin:maxValue="100" /> <!-- percent -->
+        <!-- The settigs for showing setup wizard application icon shouldn't be persistent and
+             the default value is added programmatically. -->
+        <CheckBoxPreference
+            android:key="pref_show_setup_wizard_icon"
+            android:title="@string/show_setup_wizard_icon"
+            android:summary="@string/show_setup_wizard_icon_summary" />
+        <!-- title will be set programmatically to embed application name -->
+        <CheckBoxPreference
+            android:key="pref_enable_metrics_logging"
+            android:summary="@string/enable_metrics_logging_summary"
+            android:defaultValue="true"
+            android:persistent="true" />
         <PreferenceScreen
-            android:key="send_feedback"
-            android:title="@string/send_feedback" />
-        <PreferenceScreen
-            android:key="about_keyboard" />
-        <PreferenceScreen
-            android:key="debug_settings"
+            android:fragment="com.android.inputmethod.latin.settings.DebugSettings"
+            android:key="screen_debug"
             android:title="Debug settings"
-            android:persistent="true"
-            android:defaultValue="false" />
-    </PreferenceCategory>
+            android:defaultValue="false"
+            android:persistent="true" />
+        </PreferenceScreen>
 </PreferenceScreen>
diff --git a/java/res/xml/prefs_for_debug.xml b/java/res/xml/prefs_for_debug.xml
deleted file mode 100644
index 8d9508e..0000000
--- a/java/res/xml/prefs_for_debug.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-        android:title="@string/prefs_debug_mode"
-        android:key="english_ime_debug_settings">
-
-    <CheckBoxPreference
-            android:key="enable_logging"
-            android:title="@string/prefs_enable_log"
-            android:summary="@string/prefs_description_log"
-            android:persistent="true"
-            android:defaultValue="false" />
-
-    <ListPreference
-            android:key="pref_keyboard_layout_20110916"
-            android:title="@string/keyboard_layout"
-            android:summary="%s"
-            android:persistent="true"
-            android:entryValues="@array/keyboard_layout_modes_values"
-            android:entries="@array/keyboard_layout_modes"
-            android:defaultValue="@string/config_default_keyboard_theme_index" />
-
-    <CheckBoxPreference
-            android:key="debug_mode"
-            android:title="@string/prefs_debug_mode"
-            android:persistent="true"
-            android:defaultValue="false" />
-
-    <CheckBoxPreference
-            android:key="force_non_distinct_multitouch"
-            android:title="@string/prefs_force_non_distinct_multitouch"
-            android:persistent="true"
-            android:defaultValue="false" />
-
-    <CheckBoxPreference
-            android:key="usability_study_mode"
-            android:title="@string/prefs_usability_study_mode"
-            android:persistent="true"
-            android:defaultValue="false" />
-
-    <CheckBoxPreference
-        android:defaultValue="false"
-        android:key="use_only_personalization_dictionary_for_debug"
-        android:persistent="true"
-        android:title="@string/prefs_use_only_personalization_dictionary" />
-
-    <PreferenceScreen
-        android:key="read_external_dictionary"
-        android:title="@string/prefs_read_external_dictionary" />
-</PreferenceScreen>
diff --git a/java/res/xml/prefs_screen_debug.xml b/java/res/xml/prefs_screen_debug.xml
new file mode 100644
index 0000000..ae29a8a
--- /dev/null
+++ b/java/res/xml/prefs_screen_debug.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+    android:title="@string/prefs_debug_mode"
+    android:key="english_ime_debug_settings"
+>
+    <CheckBoxPreference
+        android:key="debug_mode"
+        android:title="@string/prefs_debug_mode"
+        android:defaultValue="false"
+        android:persistent="true" />
+    <CheckBoxPreference
+        android:key="force_non_distinct_multitouch"
+        android:title="@string/prefs_force_non_distinct_multitouch"
+        android:defaultValue="false"
+        android:persistent="true" />
+    <CheckBoxPreference
+        android:key="pref_sliding_key_input_preview"
+        android:title="@string/sliding_key_input_preview"
+        android:summary="@string/sliding_key_input_preview_summary"
+        android:defaultValue="true"
+        android:persistent="true" />
+    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+        android:key="pref_key_longpress_timeout"
+        android:title="@string/prefs_key_longpress_timeout_settings"
+        latin:minValue="@integer/config_min_longpress_timeout"
+        latin:maxValue="@integer/config_max_longpress_timeout"
+        latin:stepValue="@integer/config_longpress_timeout_step" />
+    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+        android:key="pref_key_preview_show_up_start_scale"
+        android:title="@string/prefs_key_popup_show_up_start_scale_settings"
+        latin:maxValue="100" /> <!-- percent -->
+    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+        android:key="pref_key_preview_dismiss_end_scale"
+        android:title="@string/prefs_key_popup_dismiss_end_scale_settings"
+        latin:maxValue="100" /> <!-- percent -->
+    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+        android:key="pref_key_preview_show_up_duration"
+        android:title="@string/prefs_key_popup_show_up_duration_settings"
+        latin:maxValue="100" /> <!-- milliseconds -->
+    <com.android.inputmethod.latin.settings.SeekBarDialogPreference
+        android:key="pref_key_preview_dismiss_duration"
+        android:title="@string/prefs_key_popup_dismiss_duration_settings"
+        latin:maxValue="100" /> <!-- milliseconds -->
+    <PreferenceScreen
+        android:key="read_external_dictionary"
+        android:title="@string/prefs_read_external_dictionary" />
+    <PreferenceCategory
+        android:key="pref_key_dump_dictionaries"
+        android:title="@string/prefs_dump_dynamic_dicts">
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/java/res/xml/row_dvorak4.xml b/java/res/xml/row_dvorak4.xml
index b78872f..e7a3ee7 100644
--- a/java/res/xml/row_dvorak4.xml
+++ b/java/res/xml/row_dvorak4.xml
@@ -28,17 +28,16 @@
             latin:keyStyle="toSymbolKeyStyle"
             latin:keyWidth="15%p" />
         <Key
-            latin:keyLabel="q"
+            latin:keySpec="q"
             latin:backgroundType="normal"
-            latin:additionalMoreKeys="!text/shortcut_as_more_key"
-            latin:keyStyle="f1MoreKeysStyle" />
+            latin:keyStyle="settingsMoreKeysStyle" />
         <include
             latin:keyXPos="25%p"
             latin:keyboardLayout="@xml/key_space_5kw" />
         <Key
-            latin:keyLabel="z"
+            latin:keySpec="z"
             latin:keyLabelFlags="hasPopupHint"
-            latin:moreKeys="!text/more_keys_for_punctuation,!text/more_keys_for_z" />
+            latin:moreKeys="!text/morekeys_punctuation,!text/morekeys_z" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/res/xml/row_pcqwerty5.xml b/java/res/xml/row_pcqwerty5.xml
index 4ec908b..32c5389 100644
--- a/java/res/xml/row_pcqwerty5.xml
+++ b/java/res/xml/row_pcqwerty5.xml
@@ -24,23 +24,14 @@
     <Row
         latin:keyWidth="7.692%p"
     >
-        <Spacer
-            latin:keyWidth="11.538%p" />
         <switch>
             <case
-                latin:shortcutKeyEnabled="true"
-            >
-                <Key
-                    latin:keyStyle="shortcutKeyStyle"
-                    latin:keyWidth="11.538%p" />
-                </case>
-            <case
                 latin:clobberSettingsKey="false"
             >
                 <Key
                     latin:keyStyle="settingsKeyStyle"
                     latin:keyWidth="11.538%p" />
-                </case>
+            </case>
         </switch>
         <switch>
             <case
@@ -48,33 +39,23 @@
             >
                 <Key
                     latin:keyStyle="languageSwitchKeyStyle"
+                    latin:keyXPos="19.231%p"
                     latin:keyWidth="11.538%p" />
                 <Key
                     latin:keyStyle="spaceKeyStyle"
-                    latin:keyWidth="38.464%p" />
-                </case>
+                    latin:keyWidth="42.308%p" />
+            </case>
             <!-- languageSwitchKeyEnabled="false" -->
             <default>
                 <Key
                     latin:keyStyle="spaceKeyStyle"
-                    latin:keyWidth="50.002%p" />
+                    latin:keyXPos="26.923%p"
+                    latin:keyWidth="46.154%p" />
             </default>
         </switch>
         <Key
-            latin:keyStyle="defaultEnterKeyStyle"
-            latin:keyWidth="15.384%p" />
-        <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
-            >
-                <Spacer />
-            </case>
-            <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
-            <default>
-                <Key
-                    latin:keyStyle="emojiKeyStyle"
-                    latin:keyWidth="fillRight" />
-            </default>
-        </switch>
+            latin:keyStyle="enterKeyStyle"
+            latin:keyXPos="-19.231%p"
+            latin:keyWidth="fillRight" />
     </Row>
 </merge>
diff --git a/java/res/xml/row_qwerty4.xml b/java/res/xml/row_qwerty4.xml
index 578bc12..509092d 100644
--- a/java/res/xml/row_qwerty4.xml
+++ b/java/res/xml/row_qwerty4.xml
@@ -32,36 +32,8 @@
         <include
             latin:keyXPos="25%p"
             latin:keyboardLayout="@xml/key_space_5kw" />
-        <switch>
-            <case
-                latin:languageCode="ar|fa"
-            >
-                <Key
-                    latin:keyHintLabel="!text/keyhintlabel_for_arabic_diacritics"
-                    latin:keyLabelFlags="hasPopupHint|hasShiftedLetterHint"
-                    latin:moreKeys="!text/more_keys_for_arabic_diacritics"
-                    latin:keyStyle="punctuationKeyStyle" />
-            </case>
-            <case
-                latin:languageCode="ne"
-                latin:keyboardLayoutSet="nepali_traditional"
-            >
-                <include
-                    latin:keyboardLayout="@xml/key_nepali_traditional_period" />
-            </case>
-            <case
-                latin:languageCode="hy"
-            >
-                <!-- U+0589: "։" ARMENIAN FULL STOP -->
-                <Key
-                    latin:keyLabel="&#x0589;"
-                    latin:keyStyle="punctuationKeyStyle" />
-            </case>
-            <default>
-                <Key
-                    latin:keyStyle="punctuationKeyStyle" />
-            </default>
-        </switch>
+        <include
+            latin:keyboardLayout="@xml/key_period" />
         <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
diff --git a/java/res/xml/row_symbols4.xml b/java/res/xml/row_symbols4.xml
index fbfdc5f..2be03bd 100644
--- a/java/res/xml/row_symbols4.xml
+++ b/java/res/xml/row_symbols4.xml
@@ -19,24 +19,16 @@
 -->
 
 <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
-
     <Key
-        latin:backgroundType="functional"
-        latin:keyLabel="_" />
+        latin:keySpec="!text/keyspec_comma" />
     <Key
-        latin:backgroundType="functional"
-        latin:keyLabel="/" />
-
-    <switch>
-        <case latin:hasShortcutKey="true" >
-            <Key latin:keyStyle="shortcutKeyStyle" />
-        </case>
-        <!-- latin:hasShortcutKey="false" -->
-        <default>
-        </default>
-    </switch>
-
-    <include latin:keyboardLayout="@xml/key_space_symbols" />
-    <include latin:keyboardLayout="@xml/keys_comma_period" />
-
+        latin:keySpec="_" />
+    <include
+        latin:keyboardLayout="@xml/key_space_symbols" />
+    <Key
+        latin:keySpec="/" />
+    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
+    <Key
+        latin:keySpec="."
+        latin:moreKeys="&#x2026;" />
 </merge>
diff --git a/java/res/xml/row_symbols_shift4.xml b/java/res/xml/row_symbols_shift4.xml
index 0909374..4fc63c2 100644
--- a/java/res/xml/row_symbols_shift4.xml
+++ b/java/res/xml/row_symbols_shift4.xml
@@ -18,9 +18,18 @@
 */
 -->
 <merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
-
-    <include latin:keyboardLayout="@xml/keys_less_greater" />
+    <include
+        latin:keyboardLayout="@xml/key_styles_less_greater" />
+    <Key
+        latin:keySpec="!text/keyspec_comma" />
+    <Key
+        latin:keyStyle="lessKeyStyle" />
     <include
         latin:keyboardLayout="@xml/key_space_symbols" />
-    <include latin:keyboardLayout="@xml/keys_comma_period" />
+    <Key
+        latin:keyStyle="greaterKeyStyle" />
+    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
+    <Key
+        latin:keySpec="."
+        latin:moreKeys="&#x2026;" />
 </merge>
diff --git a/java/res/xml/rowkeys_arabic1.xml b/java/res/xml/rowkeys_arabic1.xml
index 3c0acf1..9f83fef 100644
--- a/java/res/xml/rowkeys_arabic1.xml
+++ b/java/res/xml/rowkeys_arabic1.xml
@@ -18,95 +18,82 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0636: "ض" ARABIC LETTER DAD
          U+0661: "١" ARABIC-INDIC DIGIT ONE -->
     <Key
-        latin:keyLabel="&#x0636;"
+        latin:keySpec="&#x0636;"
         latin:keyHintLabel="1"
-        latin:additionalMoreKeys="1,&#x0661;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="1,&#x0661;" />
     <!-- U+0635: "ص" ARABIC LETTER SAD
          U+0662: "٢" ARABIC-INDIC DIGIT TWO -->
     <Key
-        latin:keyLabel="&#x0635;"
+        latin:keySpec="&#x0635;"
         latin:keyHintLabel="2"
-        latin:additionalMoreKeys="2,&#x0662;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="2,&#x0662;" />
     <!-- U+062B: "ث" ARABIC LETTER THEH
          U+0663: "٣" ARABIC-INDIC DIGIT THREE -->
     <Key
-        latin:keyLabel="&#x062B;"
+        latin:keySpec="&#x062B;"
         latin:keyHintLabel="3"
-        latin:additionalMoreKeys="3,&#x0663;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="3,&#x0663;" />
     <!-- U+0642: "ق" ARABIC LETTER QAF
-         U+06A8: "ڨ" ARABIC LETTER QAF WITH THREE DOTS ABOVE
-         U+0664: "٤" ARABIC-INDIC DIGIT FOUR -->
+         U+0664: "٤" ARABIC-INDIC DIGIT FOUR
+         U+06A8: "ڨ" ARABIC LETTER QAF WITH THREE DOTS ABOVE -->
     <!-- TODO: DroidSansArabic lacks the glyph of U+06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE -->
     <Key
-        latin:keyLabel="&#x0642;"
+        latin:keySpec="&#x0642;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4,&#x0664;"
-        latin:moreKeys="&#x06A8;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:moreKeys="&#x06A8;" />
     <!-- U+0641: "ف" ARABIC LETTER FEH
+         U+0665: "٥" ARABIC-INDIC DIGIT FIVE
          U+06A4: "ڤ" ARABIC LETTER VEH
          U+06A2: "ڢ" ARABIC LETTER FEH WITH DOT MOVED BELOW
-         U+06A5: "ڥ" ARABIC LETTER FEH WITH THREE DOTS BELOW
-         U+0665: "٥" ARABIC-INDIC DIGIT FIVE -->
+         U+06A5: "ڥ" ARABIC LETTER FEH WITH THREE DOTS BELOW -->
     <!-- TODO: DroidSansArabic lacks the glyph of U+06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW -->
     <!-- TODO: DroidSansArabic lacks the glyph of U+06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW -->
     <Key
-        latin:keyLabel="&#x0641;"
+        latin:keySpec="&#x0641;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5,&#x0665;"
-        latin:moreKeys="&#x06A4;,&#x06A2;,&#x06A5;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:moreKeys="&#x06A4;,&#x06A2;,&#x06A5;" />
     <!-- U+063A: "غ" ARABIC LETTER GHAIN
          U+0666: "٦" ARABIC-INDIC DIGIT SIX -->
     <Key
-        latin:keyLabel="&#x063A;"
+        latin:keySpec="&#x063A;"
         latin:keyHintLabel="6"
-        latin:additionalMoreKeys="6,&#x0666;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="6,&#x0666;" />
     <!-- U+0639: "ع" ARABIC LETTER AIN
          U+0667: "٧" ARABIC-INDIC DIGIT SEVEN -->
     <Key
-        latin:keyLabel="&#x0639;"
+        latin:keySpec="&#x0639;"
         latin:keyHintLabel="7"
-        latin:additionalMoreKeys="7,&#x0667;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="7,&#x0667;" />
     <!-- U+0647: "ه" ARABIC LETTER HEH
+         U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
          U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM
-         U+0647 U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER
-         U+0668: "٨" ARABIC-INDIC DIGIT EIGHT -->
+         U+0647 U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER -->
     <Key
-        latin:keyLabel="&#x0647;"
+        latin:keySpec="&#x0647;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8,&#x0668;"
-        latin:moreKeys="&#xFEEB;|&#x0647;&#x200D;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:moreKeys="&#xFEEB;|&#x0647;&#x200D;" />
     <!-- U+062E: "خ" ARABIC LETTER KHAH
          U+0669: "٩" ARABIC-INDIC DIGIT NINE -->
     <Key
-        latin:keyLabel="&#x062E;"
+        latin:keySpec="&#x062E;"
         latin:keyHintLabel="9"
-        latin:additionalMoreKeys="9,&#x0669;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="9,&#x0669;" />
     <!-- U+062D: "ح" ARABIC LETTER HAH
          U+0660: "٠" ARABIC-INDIC DIGIT ZERO -->
     <Key
-        latin:keyLabel="&#x062D;"
+        latin:keySpec="&#x062D;"
         latin:keyHintLabel="0"
-        latin:additionalMoreKeys="0,&#x0660;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="0,&#x0660;" />
     <!-- U+062C: "ج" ARABIC LETTER JEEM
          U+0686: "چ" ARABIC LETTER TCHEH -->
     <Key
-        latin:keyLabel="&#x062C;"
-        latin:moreKeys="&#x0686;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x062C;"
+        latin:moreKeys="&#x0686;" />
 </merge>
diff --git a/java/res/xml/rowkeys_arabic2.xml b/java/res/xml/rowkeys_arabic2.xml
index 4f8090d..4f401e8 100644
--- a/java/res/xml/rowkeys_arabic2.xml
+++ b/java/res/xml/rowkeys_arabic2.xml
@@ -18,33 +18,26 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0634: "ش" ARABIC LETTER SHEEN
          U+069C: "ڜ" ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE -->
     <!-- TODO: DroidSansArabic lacks the glyph of U+069C ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE -->
     <Key
-        latin:keyLabel="&#x0634;"
-        latin:moreKeys="&#x069C;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0634;"
+        latin:moreKeys="&#x069C;" />
     <!-- U+0633: "س" ARABIC LETTER SEEN -->
-    <Key
-        latin:keyLabel="&#x0633;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0633;" />
     <!-- U+064A: "ي" ARABIC LETTER YEH
          U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
          U+0649: "ى" ARABIC LETTER ALEF MAKSURA -->
     <Key
-        latin:keyLabel="&#x064A;"
-        latin:moreKeys="&#x0626;,&#x0649;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x064A;"
+        latin:moreKeys="&#x0626;,&#x0649;" />
     <!-- U+0628: "ب" ARABIC LETTER BEH
          U+067E: "پ" ARABIC LETTER PEH -->
     <Key
-        latin:keyLabel="&#x0628;"
-        latin:moreKeys="&#x067E;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0628;"
+        latin:moreKeys="&#x067E;" />
     <!-- U+0644: "ل" ARABIC LETTER LAM
          U+FEFB: "ﻻ" ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
          U+0627: "ا" ARABIC LETTER ALEF
@@ -55,9 +48,8 @@
          U+FEF5: "ﻵ" ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
          U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE -->
     <Key
-        latin:keyLabel="&#x0644;"
-        latin:moreKeys="&#xFEFB;|&#x0644;&#x0627;,&#xFEF7;|&#x0644;&#x0623;,&#xFEF9;|&#x0644;&#x0625;,&#xFEF5;|&#x0644;&#x0622;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0644;"
+        latin:moreKeys="&#xFEFB;|&#x0644;&#x0627;,&#xFEF7;|&#x0644;&#x0623;,&#xFEF9;|&#x0644;&#x0625;,&#xFEF5;|&#x0644;&#x0622;" />
     <!-- U+0627: "ا" ARABIC LETTER ALEF
          U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
          U+0621: "ء" ARABIC LETTER HAMZA
@@ -65,30 +57,20 @@
          U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW
          U+0671: "ٱ" ARABIC LETTER ALEF WASLA -->
     <Key
-        latin:keyLabel="&#x0627;"
-        latin:moreKeys="!fixedColumnOrder!5,&#x0622;,&#x0621;,&#x0623;,&#x0625;,&#x0671;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0627;"
+        latin:moreKeys="!fixedColumnOrder!5,&#x0622;,&#x0621;,&#x0623;,&#x0625;,&#x0671;" />
     <!-- U+062A: "ت" ARABIC LETTER TEH -->
-    <Key
-        latin:keyLabel="&#x062A;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x062A;" />
     <!-- U+0646: "ن" ARABIC LETTER NOON -->
-    <Key
-        latin:keyLabel="&#x0646;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0646;" />
     <!-- U+0645: "م" ARABIC LETTER MEEM -->
-    <Key
-        latin:keyLabel="&#x0645;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0645;" />
     <!-- U+0643: "ك" ARABIC LETTER KAF
          U+06AF: "گ" ARABIC LETTER GAF
          U+06A9: "ک" ARABIC LETTER KEHEH -->
     <Key
-        latin:keyLabel="&#x0643;"
-        latin:moreKeys="&#x06AF;,&#x06A9;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0643;"
+        latin:moreKeys="&#x06AF;,&#x06A9;" />
     <!-- U+0637: "ط" ARABIC LETTER TAH -->
-    <Key
-        latin:keyLabel="&#x0637;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0637;" />
 </merge>
diff --git a/java/res/xml/rowkeys_arabic3.xml b/java/res/xml/rowkeys_arabic3.xml
index 8a17b4b..8b17801 100644
--- a/java/res/xml/rowkeys_arabic3.xml
+++ b/java/res/xml/rowkeys_arabic3.xml
@@ -18,49 +18,30 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/keys_arabic3_left" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/keys_arabic3_left" />
     <!-- U+0621: "ء" ARABIC LETTER HAMZA -->
-    <Key
-        latin:keyLabel="&#x0621;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0621;" />
     <!-- U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE -->
-    <Key
-        latin:keyLabel="&#x0624;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0624;" />
     <!-- U+0631: "ر" ARABIC LETTER REH -->
-    <Key
-        latin:keyLabel="&#x0631;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0631;" />
     <!-- U+0649: "ى" ARABIC LETTER ALEF MAKSURA
          U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE -->
     <Key
-        latin:keyLabel="&#x0649;"
-        latin:moreKeys="&#x0626;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0649;"
+        latin:moreKeys="&#x0626;" />
     <!-- U+0629: "ة" ARABIC LETTER TEH MARBUTA -->
-    <Key
-        latin:keyLabel="&#x0629;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0629;" />
     <!-- U+0648: "و" ARABIC LETTER WAW -->
-    <Key
-        latin:keyLabel="&#x0648;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0648;" />
     <!-- U+0632: "ز" ARABIC LETTER ZAIN
          U+0698: "ژ" ARABIC LETTER JEH -->
     <Key
-        latin:keyLabel="&#x0632;"
-        latin:moreKeys="&#x0698;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0632;"
+        latin:moreKeys="&#x0698;" />
     <!-- U+0638: "ظ" ARABIC LETTER ZAH -->
-    <Key
-        latin:keyLabel="&#x0638;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0638;" />
     <!-- U+062F: "د" ARABIC LETTER DAL -->
-    <Key
-        latin:keyLabel="&#x062F;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x062F;" />
 </merge>
diff --git a/java/res/xml/rowkeys_armenian_phonetic1.xml b/java/res/xml/rowkeys_armenian_phonetic1.xml
index 1984fae..8d54b17 100644
--- a/java/res/xml/rowkeys_armenian_phonetic1.xml
+++ b/java/res/xml/rowkeys_armenian_phonetic1.xml
@@ -18,67 +18,55 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0567: "է" ARMENIAN SMALL LETTER EH -->
     <Key
-        latin:keyLabel="&#x0567;"
+        latin:keySpec="&#x0567;"
         latin:keyHintLabel="1"
-        latin:additionalMoreKeys="1"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="1" />
     <!-- U+0569: "թ" ARMENIAN SMALL LETTER TO -->
     <Key
-        latin:keyLabel="&#x0569;"
+        latin:keySpec="&#x0569;"
         latin:keyHintLabel="2"
-        latin:additionalMoreKeys="2"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="2" />
     <!-- U+0583: "փ" ARMENIAN SMALL LETTER PIWR -->
     <Key
-        latin:keyLabel="&#x0583;"
+        latin:keySpec="&#x0583;"
         latin:keyHintLabel="3"
-        latin:additionalMoreKeys="3"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="3" />
     <!-- U+0571: "ձ" ARMENIAN SMALL LETTER JA -->
     <Key
-        latin:keyLabel="&#x0571;"
+        latin:keySpec="&#x0571;"
         latin:keyHintLabel="4"
-        latin:additionalMoreKeys="4"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="4" />
     <!-- U+057B: "ջ" ARMENIAN SMALL LETTER JHEH -->
     <Key
-        latin:keyLabel="&#x057B;"
+        latin:keySpec="&#x057B;"
         latin:keyHintLabel="5"
-        latin:additionalMoreKeys="5"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="5" />
     <!-- U+0580: "ր" ARMENIAN SMALL LETTER REH -->
     <Key
-        latin:keyLabel="&#x0580;"
+        latin:keySpec="&#x0580;"
         latin:keyHintLabel="6"
-        latin:additionalMoreKeys="6"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="6" />
     <!-- U+0579: "չ" ARMENIAN SMALL LETTER CHA -->
     <Key
-        latin:keyLabel="&#x0579;"
+        latin:keySpec="&#x0579;"
         latin:keyHintLabel="7"
-        latin:additionalMoreKeys="7"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="7" />
     <!-- U+0573: "ճ" ARMENIAN SMALL LETTER CHEH -->
     <Key
-        latin:keyLabel="&#x0573;"
+        latin:keySpec="&#x0573;"
         latin:keyHintLabel="8"
-        latin:additionalMoreKeys="8"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="8" />
     <!-- U+056A: "ժ" ARMENIAN SMALL LETTER ZHE -->
     <Key
-        latin:keyLabel="&#x056A;"
+        latin:keySpec="&#x056A;"
         latin:keyHintLabel="9"
-        latin:additionalMoreKeys="9"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="9" />
     <!-- U+056E: "ծ" ARMENIAN SMALL LETTER CA -->
     <Key
-        latin:keyLabel="&#x056E;"
+        latin:keySpec="&#x056E;"
         latin:keyHintLabel="0"
-        latin:additionalMoreKeys="0"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="0" />
 </merge>
diff --git a/java/res/xml/rowkeys_armenian_phonetic2.xml b/java/res/xml/rowkeys_armenian_phonetic2.xml
index 5dcabc3..cb1b932 100644
--- a/java/res/xml/rowkeys_armenian_phonetic2.xml
+++ b/java/res/xml/rowkeys_armenian_phonetic2.xml
@@ -18,49 +18,29 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0584: "ք" ARMENIAN SMALL LETTER KEH -->
-    <Key
-        latin:keyLabel="&#x0584;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0584;" />
     <!-- U+0578: "ո" ARMENIAN SMALL LETTER VO -->
-    <Key
-        latin:keyLabel="&#x0578;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0578;" />
     <!-- U+0565: "ե" ARMENIAN SMALL LETTER ECH
          U+0587: "և" ARMENIAN SMALL LIGATURE ECH YIWN -->
     <Key
-        latin:keyLabel="&#x0565;"
+        latin:keySpec="&#x0565;"
         latin:moreKeys="&#x0587;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keyHintLabel="&#x0587;" />
     <!-- U+057C: "ռ" ARMENIAN SMALL LETTER RA -->
-    <Key
-        latin:keyLabel="&#x057C;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x057C;" />
     <!-- U+057F: "տ" ARMENIAN SMALL LETTER TIWN -->
-    <Key
-        latin:keyLabel="&#x057F;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x057F;" />
     <!-- U+0568: "ը" ARMENIAN SMALL LETTER ET -->
-    <Key
-        latin:keyLabel="&#x0568;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0568;" />
     <!-- U+0582: "ւ" ARMENIAN SMALL LETTER YIWN -->
-    <Key
-        latin:keyLabel="&#x0582;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0582;" />
     <!-- U+056B: "ի" ARMENIAN SMALL LETTER INI -->
-    <Key
-        latin:keyLabel="&#x056B;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x056B;" />
     <!-- U+0585: "օ" ARMENIAN SMALL LETTER OH -->
-    <Key
-        latin:keyLabel="&#x0585;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0585;" />
     <!-- U+057A: "պ" ARMENIAN SMALL LETTER PEH -->
-    <Key
-        latin:keyLabel="&#x057A;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x057A;" />
 </merge>
diff --git a/java/res/xml/rowkeys_armenian_phonetic3.xml b/java/res/xml/rowkeys_armenian_phonetic3.xml
index 3116811..33db452 100644
--- a/java/res/xml/rowkeys_armenian_phonetic3.xml
+++ b/java/res/xml/rowkeys_armenian_phonetic3.xml
@@ -18,43 +18,23 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0561: "ա" ARMENIAN SMALL LETTER AYB -->
-    <Key
-        latin:keyLabel="&#x0561;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0561;" />
     <!-- U+057D: "ս" ARMENIAN SMALL LETTER SEH -->
-    <Key
-        latin:keyLabel="&#x057D;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x057D;" />
     <!-- U+0564: "դ" ARMENIAN SMALL LETTER DA -->
-    <Key
-        latin:keyLabel="&#x0564;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0564;" />
     <!-- U+0586: "ֆ" ARMENIAN SMALL LETTER FEH -->
-    <Key
-        latin:keyLabel="&#x0586;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0586;" />
     <!-- U+0563: "գ" ARMENIAN SMALL LETTER GIM -->
-    <Key
-        latin:keyLabel="&#x0563;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0563;" />
     <!-- U+0570: "հ" ARMENIAN SMALL LETTER HO -->
-    <Key
-        latin:keyLabel="&#x0570;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0570;" />
     <!-- U+0575: "յ" ARMENIAN SMALL LETTER YI -->
-    <Key
-        latin:keyLabel="&#x0575;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0575;" />
     <!-- U+056F: "կ" ARMENIAN SMALL LETTER KEN -->
-    <Key
-        latin:keyLabel="&#x056F;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x056F;" />
     <!-- U+056C: "լ" ARMENIAN SMALL LETTER LIWN -->
-    <Key
-        latin:keyLabel="&#x056C;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x056C;" />
 </merge>
diff --git a/java/res/xml/rowkeys_armenian_phonetic4.xml b/java/res/xml/rowkeys_armenian_phonetic4.xml
index 922481a..c7db25b 100644
--- a/java/res/xml/rowkeys_armenian_phonetic4.xml
+++ b/java/res/xml/rowkeys_armenian_phonetic4.xml
@@ -18,35 +18,19 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0566: "զ" ARMENIAN SMALL LETTER ZA -->
-    <Key
-        latin:keyLabel="&#x0566;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0566;" />
     <!-- U+0572: "ղ" ARMENIAN SMALL LETTER GHAD -->
-    <Key
-        latin:keyLabel="&#x0572;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0572;" />
     <!-- U+0581: "ց" ARMENIAN SMALL LETTER CO -->
-    <Key
-        latin:keyLabel="&#x0581;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0581;" />
     <!-- U+057E: "վ" ARMENIAN SMALL LETTER VEW -->
-    <Key
-        latin:keyLabel="&#x057E;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x057E;" />
     <!-- U+0562: "բ" ARMENIAN SMALL LETTER BEN -->
-    <Key
-        latin:keyLabel="&#x0562;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0562;" />
     <!-- U+0576: "ն" ARMENIAN SMALL LETTER NOW -->
-    <Key
-        latin:keyLabel="&#x0576;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0576;" />
     <!-- U+0574: "մ" ARMENIAN SMALL LETTER MEN -->
-    <Key
-        latin:keyLabel="&#x0574;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0574;" />
 </merge>
diff --git a/java/res/xml/rowkeys_azerty1.xml b/java/res/xml/rowkeys_azerty1.xml
index 42b2746..67be342 100644
--- a/java/res/xml/rowkeys_azerty1.xml
+++ b/java/res/xml/rowkeys_azerty1.xml
@@ -22,52 +22,52 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="a"
+        latin:keySpec="a"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1"
-        latin:moreKeys="!text/more_keys_for_a" />
+        latin:moreKeys="!text/morekeys_a" />
     <Key
-        latin:keyLabel="z"
+        latin:keySpec="z"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2"
-        latin:moreKeys="!text/more_keys_for_z" />
+        latin:moreKeys="!text/morekeys_z" />
     <Key
-        latin:keyLabel="e"
+        latin:keySpec="e"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="!text/more_keys_for_e" />
+        latin:moreKeys="!text/morekeys_e" />
     <Key
-        latin:keyLabel="r"
+        latin:keySpec="r"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4"
-        latin:moreKeys="!text/more_keys_for_r" />
+        latin:moreKeys="!text/morekeys_r" />
     <Key
-        latin:keyLabel="t"
+        latin:keySpec="t"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_t" />
+        latin:moreKeys="!text/morekeys_t" />
     <Key
-        latin:keyLabel="y"
+        latin:keySpec="y"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="!text/more_keys_for_y" />
+        latin:moreKeys="!text/morekeys_y" />
     <Key
-        latin:keyLabel="u"
+        latin:keySpec="u"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_u" />
+        latin:moreKeys="!text/morekeys_u" />
     <Key
-        latin:keyLabel="i"
+        latin:keySpec="i"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="!text/more_keys_for_i" />
+        latin:moreKeys="!text/morekeys_i" />
     <Key
-        latin:keyLabel="o"
+        latin:keySpec="o"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9"
-        latin:moreKeys="!text/more_keys_for_o" />
+        latin:moreKeys="!text/morekeys_o" />
     <Key
-        latin:keyLabel="p"
+        latin:keySpec="p"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
 </merge>
diff --git a/java/res/xml/rowkeys_azerty2.xml b/java/res/xml/rowkeys_azerty2.xml
index 2eee214..116417f 100644
--- a/java/res/xml/rowkeys_azerty2.xml
+++ b/java/res/xml/rowkeys_azerty2.xml
@@ -22,30 +22,30 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="q" />
+        latin:keySpec="q" />
     <Key
-        latin:keyLabel="s"
-        latin:moreKeys="!text/more_keys_for_s" />
+        latin:keySpec="s"
+        latin:moreKeys="!text/morekeys_s" />
     <Key
-        latin:keyLabel="d"
-        latin:moreKeys="!text/more_keys_for_d" />
+        latin:keySpec="d"
+        latin:moreKeys="!text/morekeys_d" />
     <Key
-        latin:keyLabel="f" />
+        latin:keySpec="f" />
     <Key
-        latin:keyLabel="g"
-        latin:moreKeys="!text/more_keys_for_g" />
+        latin:keySpec="g"
+        latin:moreKeys="!text/morekeys_g" />
     <Key
-        latin:keyLabel="h"
-        latin:moreKeys="!text/more_keys_for_h" />
+        latin:keySpec="h"
+        latin:moreKeys="!text/morekeys_h" />
     <Key
-        latin:keyLabel="j"
-        latin:moreKeys="!text/more_keys_for_j" />
+        latin:keySpec="j"
+        latin:moreKeys="!text/morekeys_j" />
     <Key
-        latin:keyLabel="k"
-        latin:moreKeys="!text/more_keys_for_k" />
+        latin:keySpec="k"
+        latin:moreKeys="!text/morekeys_k" />
     <Key
-        latin:keyLabel="l"
-        latin:moreKeys="!text/more_keys_for_l" />
+        latin:keySpec="l"
+        latin:moreKeys="!text/morekeys_l" />
     <Key
-        latin:keyLabel="m" />
+        latin:keySpec="m" />
 </merge>
diff --git a/java/res/xml/rowkeys_azerty3.xml b/java/res/xml/rowkeys_azerty3.xml
index 2643f32..48d3a52 100644
--- a/java/res/xml/rowkeys_azerty3.xml
+++ b/java/res/xml/rowkeys_azerty3.xml
@@ -22,21 +22,32 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="w"
-        latin:moreKeys="!text/more_keys_for_w" />
+        latin:keySpec="w"
+        latin:moreKeys="!text/morekeys_w" />
     <Key
-        latin:keyLabel="x" />
+        latin:keySpec="x" />
     <Key
-        latin:keyLabel="c"
-        latin:moreKeys="!text/more_keys_for_c" />
+        latin:keySpec="c"
+        latin:moreKeys="!text/morekeys_c" />
     <Key
-        latin:keyLabel="v"
-        latin:moreKeys="!text/more_keys_for_v" />
+        latin:keySpec="v"
+        latin:moreKeys="!text/morekeys_v" />
     <Key
-        latin:keyLabel="b" />
+        latin:keySpec="b" />
     <Key
-        latin:keyLabel="n"
-        latin:moreKeys="!text/more_keys_for_n" />
-    <include
-        latin:keyboardLayout="@xml/key_azerty3_right" />
+        latin:keySpec="n"
+        latin:moreKeys="!text/morekeys_n" />
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
+        >
+            <Key
+                latin:keySpec="\?" />
+        </case>
+        <default>
+            <Key
+                latin:keySpec="\'"
+                latin:moreKeys="!text/morekeys_single_quote" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_bengali1.xml b/java/res/xml/rowkeys_bengali1.xml
new file mode 100644
index 0000000..971fff6
--- /dev/null
+++ b/java/res/xml/rowkeys_bengali1.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0994: "ঔ" BENGALI LETTER AU
+         U+09CC: "ৌ" BENGALI VOWEL SIGN AU
+         U+09E7: "১" BENGALI DIGIT ONE -->
+    <Key
+        latin:keySpec="&#x0994;"
+        latin:keyHintLabel="&#x09E7;"
+        latin:additionalMoreKeys="&#x09CC;,&#x09E7;,1" />
+    <!-- U+0990: "ঐ" BENGALI LETTER AI
+         U+09C8: "ৈ" BENGALI VOWEL SIGN AI
+         U+09E8: "২" BENGALI DIGIT TWO -->
+    <Key
+        latin:keySpec="&#x0990;"
+        latin:keyHintLabel="&#x09E8;"
+        latin:additionalMoreKeys="&#x09C8;,&#x09E8;,2" />
+    <!-- U+0986: "আ" BENGALI LETTER AA
+         U+09BE: "া" BENGALI VOWEL SIGN AA
+         U+09E9: "৩" BENGALI DIGIT THREE -->
+    <Key
+        latin:keySpec="&#x0986;"
+        latin:keyHintLabel="&#x09E9;"
+        latin:additionalMoreKeys="&#x09BE;,&#x09E9;,3" />
+    <!-- U+0988: "ঈ" BENGALI LETTER II
+         U+09C0: "ী" BENGALI VOWEL SIGN II
+         U+09EA: "৪" BENGALI DIGIT FOUR -->
+    <Key
+        latin:keySpec="&#x0988;"
+        latin:keyHintLabel="&#x09EA;"
+        latin:additionalMoreKeys="&#x09C0;,&#x09EA;,4" />
+    <!-- U+098A: "ঊ" BENGALI LETTER UU
+         U+09C2: "ূ" BENGALI VOWEL SIGN UU
+         U+09EB: "৫" BENGALI DIGIT FIVE -->
+    <Key
+        latin:keySpec="&#x098A;"
+        latin:keyHintLabel="&#x09EB;"
+        latin:additionalMoreKeys="&#x09C2;,&#x09EB;,5" />
+    <!-- U+09AC: "ব" BENGALI LETTER BA
+         U+09AD: "ভ" BENGALI LETTER BHA
+         U+09EC: "৬" BENGALI DIGIT SIX -->
+    <Key
+        latin:keySpec="&#x09AC;"
+        latin:moreKeys="&#x09AD;,%"
+        latin:keyHintLabel="&#x09EC;"
+        latin:additionalMoreKeys="&#x09EC;,6" />
+    <!-- U+09B9: "হ" BENGALI LETTER HA
+         U+09ED: "৭" BENGALI DIGIT SEVEN -->
+    <Key
+        latin:keySpec="&#x09B9;"
+        latin:keyHintLabel="&#x09ED;"
+        latin:additionalMoreKeys="&#x09ED;,7" />
+    <!-- U+0997: "গ" BENGALI LETTER GA
+         U+0998: "ঘ" BENGALI LETTER GHA
+         U+09EE: "৮" BENGALI DIGIT EIGHT -->
+    <Key
+        latin:keySpec="&#x0997;"
+        latin:moreKeys="&#x0998;,%"
+        latin:keyHintLabel="&#x09EE;"
+        latin:additionalMoreKeys="&#x09EE;,8" />
+    <!-- U+09A6: "দ" BENGALI LETTER DA
+         U+09A7: "ধ" BENGALI LETTER DHA
+         U+09EF: "৯" BENGALI DIGIT NINE -->
+    <Key
+        latin:keySpec="&#x09A6;"
+        latin:moreKeys="&#x09A7;,%"
+        latin:keyHintLabel="&#x09EF;"
+        latin:additionalMoreKeys="&#x09EF;,9" />
+    <!-- U+099C: "জ" BENGALI LETTER JA
+         U+099D: "ঝ" BENGALI LETTER JHA
+         U+099C/U+09CD/U+099E: "জ্ঞ" BENGALI LETTER JA/BENGALI SIGN VIRAMA/BENGALI LETTER NYA
+         U+09E6: "০" BENGALI DIGIT ZERO -->
+    <Key
+        latin:keySpec="&#x099C;"
+        latin:moreKeys="&#x099D;,&#x099C;&#x09CD;&#x099E;,%"
+        latin:keyHintLabel="&#x09E6;"
+        latin:additionalMoreKeys="&#x09E6;,0" />
+    <!-- U+09A1: "ড" BENGALI LETTER DDA
+         U+09A1/U+09BC: "ড়" BENGALI LETTER DDA/BENGALI SIGN NUKTA -->
+    <Key
+        latin:keySpec="&#x09A1;"
+        latin:moreKeys="&#x09A1;&#x09BC;" />
+</merge>
diff --git a/java/res/xml/rowkeys_bengali2.xml b/java/res/xml/rowkeys_bengali2.xml
new file mode 100644
index 0000000..44b3617
--- /dev/null
+++ b/java/res/xml/rowkeys_bengali2.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0993: "ও" BENGALI LETTER O
+         U+09CB: "ো" BENGALI VOWEL SIGN O -->
+    <Key
+        latin:keySpec="&#x0993;"
+        latin:moreKeys="&#x09CB;" />
+    <!-- U+098F: "এ" BENGALI LETTER E
+         U+09C7: "ে" BENGALI VOWEL SIGN E -->
+    <Key
+        latin:keySpec="&#x098F;"
+        latin:moreKeys="&#x09C7;" />
+    <!-- U+0985: "অ" BENGALI LETTER A
+         U+09CD: "্" BENGALI SIGN VIRAMA -->
+    <Key
+        latin:keySpec="&#x0985;"
+        latin:moreKeys="&#x09CD;" />
+    <!-- U+0987: "ই" BENGALI LETTER I
+         U+09BF: "ি" BENGALI VOWEL SIGN I -->
+    <Key
+        latin:keySpec="&#x0987;"
+        latin:moreKeys="&#x09BF;" />
+    <!-- U+0989: "উ" BENGALI LETTER U
+         U+09C1: "ু" BENGALI VOWEL SIGN U -->
+    <Key
+        latin:keySpec="&#x0989;"
+        latin:moreKeys="&#x09C1;" />
+    <!-- U+09AA: "প" BENGALI LETTER PA
+         U+09AB: "ফ" BENGALI LETTER PHA -->
+    <Key
+        latin:keySpec="&#x09AA;"
+        latin:moreKeys="&#x09AB;" />
+    <!-- U+09B0: "র" BENGALI LETTER RA
+         U+09C3: "ৃ" BENGALI VOWEL SIGN VOCALIC R
+         U+098B: "ঋ" BENGALI LETTER VOCALIC R
+         U+09A4/U+09CD/U+09B0: "ত্র" BENGALI LETTER TA/BENGALI SIGN VIRAMA/BENGALI LETTER RA -->
+    <Key
+        latin:keySpec="&#x09B0;"
+        latin:moreKeys="&#x09C3;,&#x098B;,&#x09A4;&#x09CD;&#x09B0;" />
+    <!-- U+0995: "ক" BENGALI LETTER KA
+         U+0996: "খ" BENGALI LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0995;"
+        latin:moreKeys="&#x0996;" />
+    <!-- U+09A4: "ত" BENGALI LETTER TA
+         U+09CE: "ৎ" BENGALI LETTER KHANDA TA
+         U+09A5: "থ" BENGALI LETTER THA
+         U+09A4/U+09CD/U+09A4: "ত্ত" BENGALI LETTER TA/BENGALI SIGN VIRAMA/BENGALI LETTER TA -->
+    <Key
+        latin:keySpec="&#x09A4;"
+        latin:moreKeys="&#x09CE;,&#x09A5;,&#x09A4;&#x09CD;&#x09A4;" />
+    <!-- U+099A: "চ" BENGALI LETTER CA
+         U+099B: "ছ" BENGALI LETTER CHA -->
+    <Key
+        latin:keySpec="&#x099A;"
+        latin:moreKeys="&#x099B;" />
+    <!-- U+099F: "ট" BENGALI LETTER TTA
+         U+09A0: "ঠ" BENGALI LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x099F;"
+        latin:moreKeys="&#x09A0;" />
+</merge>
diff --git a/java/res/xml/rowkeys_bengali3.xml b/java/res/xml/rowkeys_bengali3.xml
new file mode 100644
index 0000000..5222b09
--- /dev/null
+++ b/java/res/xml/rowkeys_bengali3.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0981: "ঁ" BENGALI SIGN CANDRABINDU
+         U+0983: "ঃ" BENGALI SIGN VISARGA
+         U+0982: "ং" BENGALI SIGN ANUSVARA -->
+    <Key
+        latin:keySpec="&#x0981;"
+        latin:moreKeys="&#x0983;,&#x0982;" />
+    <!-- U+09A2: "ঢ" BENGALI LETTER DDHA
+         U+09A2/U+09BC: "ঢ়" BENGALI LETTER DDHA/BENGALI SIGN NUKTA -->
+    <Key
+        latin:keySpec="&#x09A2;"
+        latin:moreKeys="&#x09A2;&#x09BC;" />
+    <!-- U+09AE: "ম" BENGALI LETTER MA -->
+    <Key latin:keySpec="&#x09AE;" />
+    <!-- U+09A8: "ন" BENGALI LETTER NA
+         U+09A3: "ণ" BENGALI LETTER NNA -->
+    <Key
+        latin:keySpec="&#x09A8;"
+        latin:moreKeys="&#x09A3;" />
+    <!-- U+099E: "ঞ" BENGALI LETTER NYA
+         U+0999: "ঙ" BENGALI LETTER NGA
+         U+099E/U+09CD/U+099C: "ঞ্জ" BENGALI LETTER NYA/BENGALI SIGN VIRAMA/BENGALI LETTER JA -->
+    <Key
+        latin:keySpec="&#x099E;"
+        latin:moreKeys="&#x0999;,&#x099E;&#x09CD;&#x099C;" />
+    <!-- U+09B2: "ল" BENGALI LETTER LA -->
+    <Key latin:keySpec="&#x09B2;" />
+    <!-- U+09B7: "ষ" BENGALI LETTER SSA
+         U+0995/U+09CD/U+09B7: "ক্ষ" BENGALI LETTER KA/BENGALI SIGN VIRAMA/BENGALI LETTER SSA -->
+    <Key
+        latin:keySpec="&#x09B7;"
+        latin:moreKeys="&#x0995;&#x09CD;&#x09B7;" />
+    <!-- U+09B8: "স" BENGALI LETTER SA
+         U+09B6: "শ" BENGALI LETTER SHA -->
+    <Key
+        latin:keySpec="&#x09B8;"
+        latin:moreKeys="&#x09B6;" />
+    <!-- U+09DF: "য়" BENGALI LETTER YYA
+         U+09AF: "য" BENGALI LETTER YA -->
+    <Key
+        latin:keySpec="&#x09DF;"
+        latin:moreKeys="&#x09AF;" />
+    <!-- U+0964: "।" DEVANAGARI DANDA
+         U+0965: "॥" DEVANAGARI DOUBLE DANDA -->
+    <Key
+        latin:keySpec="&#x0964;"
+        latin:moreKeys="&#x0965;" />
+</merge>
diff --git a/java/res/xml/rowkeys_bulgarian1.xml b/java/res/xml/rowkeys_bulgarian1.xml
index 441b079..e847193 100644
--- a/java/res/xml/rowkeys_bulgarian1.xml
+++ b/java/res/xml/rowkeys_bulgarian1.xml
@@ -23,57 +23,57 @@
 >
     <!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
     <Key
-        latin:keyLabel="&#x044F;"
+        latin:keySpec="&#x044F;"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
     <Key
-        latin:keyLabel="&#x0432;"
+        latin:keySpec="&#x0432;"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2" />
     <!-- U+0435: "е" CYRILLIC SMALL LETTER IE -->
     <Key
-        latin:keyLabel="&#x0435;"
+        latin:keySpec="&#x0435;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3" />
     <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
     <Key
-        latin:keyLabel="&#x0440;"
+        latin:keySpec="&#x0440;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
     <Key
-        latin:keyLabel="&#x0442;"
+        latin:keySpec="&#x0442;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5" />
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
     <Key
-        latin:keyLabel="&#x044A;"
+        latin:keySpec="&#x044A;"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6" />
     <!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
     <Key
-        latin:keyLabel="&#x0443;"
+        latin:keySpec="&#x0443;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7" />
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I
          U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
     <Key
-        latin:keyLabel="&#x0438;"
+        latin:keySpec="&#x0438;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
         latin:moreKeys="&#x045D;" />
     <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
     <Key
-        latin:keyLabel="&#x043E;"
+        latin:keySpec="&#x043E;"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9" />
     <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
     <Key
-        latin:keyLabel="&#x043F;"
+        latin:keySpec="&#x043F;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
     <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
     <Key
-        latin:keyLabel="&#x0447;" />
+        latin:keySpec="&#x0447;" />
 </merge>
diff --git a/java/res/xml/rowkeys_bulgarian2.xml b/java/res/xml/rowkeys_bulgarian2.xml
index a4e93d8..e572a22 100644
--- a/java/res/xml/rowkeys_bulgarian2.xml
+++ b/java/res/xml/rowkeys_bulgarian2.xml
@@ -23,35 +23,35 @@
 >
     <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
     <Key
-        latin:keyLabel="&#x0430;" />
+        latin:keySpec="&#x0430;" />
     <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
     <Key
-        latin:keyLabel="&#x0441;" />
+        latin:keySpec="&#x0441;" />
     <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
     <Key
-        latin:keyLabel="&#x0434;" />
+        latin:keySpec="&#x0434;" />
     <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
     <Key
-        latin:keyLabel="&#x0444;" />
+        latin:keySpec="&#x0444;" />
     <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
     <Key
-        latin:keyLabel="&#x0433;" />
+        latin:keySpec="&#x0433;" />
     <!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
     <Key
-        latin:keyLabel="&#x0445;" />
+        latin:keySpec="&#x0445;" />
     <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I -->
     <Key
-        latin:keyLabel="&#x0439;" />
+        latin:keySpec="&#x0439;" />
     <!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
     <Key
-        latin:keyLabel="&#x043A;" />
+        latin:keySpec="&#x043A;" />
     <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
     <Key
-        latin:keyLabel="&#x043B;" />
+        latin:keySpec="&#x043B;" />
     <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA -->
     <Key
-        latin:keyLabel="&#x0448;" />
+        latin:keySpec="&#x0448;" />
     <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
     <Key
-        latin:keyLabel="&#x0449;" />
+        latin:keySpec="&#x0449;" />
 </merge>
diff --git a/java/res/xml/rowkeys_bulgarian3.xml b/java/res/xml/rowkeys_bulgarian3.xml
index 258219c..2509793 100644
--- a/java/res/xml/rowkeys_bulgarian3.xml
+++ b/java/res/xml/rowkeys_bulgarian3.xml
@@ -23,26 +23,26 @@
 >
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
     <Key
-        latin:keyLabel="&#x0437;" />
+        latin:keySpec="&#x0437;" />
     <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
     <Key
-        latin:keyLabel="&#x044C;" />
+        latin:keySpec="&#x044C;" />
     <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE -->
     <Key
-        latin:keyLabel="&#x0446;" />
+        latin:keySpec="&#x0446;" />
     <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
     <Key
-        latin:keyLabel="&#x0436;" />
+        latin:keySpec="&#x0436;" />
     <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
     <Key
-        latin:keyLabel="&#x0431;" />
+        latin:keySpec="&#x0431;" />
     <!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
     <Key
-        latin:keyLabel="&#x043D;" />
+        latin:keySpec="&#x043D;" />
     <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
     <Key
-        latin:keyLabel="&#x043C;" />
+        latin:keySpec="&#x043C;" />
     <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU -->
     <Key
-        latin:keyLabel="&#x044E;" />
+        latin:keySpec="&#x044E;" />
 </merge>
diff --git a/java/res/xml/rowkeys_bulgarian_bds1.xml b/java/res/xml/rowkeys_bulgarian_bds1.xml
index eed1fcb..9d64282 100644
--- a/java/res/xml/rowkeys_bulgarian_bds1.xml
+++ b/java/res/xml/rowkeys_bulgarian_bds1.xml
@@ -23,57 +23,57 @@
 >
     <!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
     <Key
-        latin:keyLabel="&#x0443;"
+        latin:keySpec="&#x0443;"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <!-- U+0435: "е" CYRILLIC SMALL LETTER IE -->
     <Key
-        latin:keyLabel="&#x0435;"
+        latin:keySpec="&#x0435;"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2" />
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I
          U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
     <Key
-        latin:keyLabel="&#x0438;"
+        latin:keySpec="&#x0438;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
         latin:moreKeys="&#x045D;" />
     <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA -->
     <Key
-        latin:keyLabel="&#x0448;"
+        latin:keySpec="&#x0448;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <!-- U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
     <Key
-        latin:keyLabel="&#x0449;"
+        latin:keySpec="&#x0449;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5" />
     <!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
     <Key
-        latin:keyLabel="&#x043A;"
+        latin:keySpec="&#x043A;"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6" />
     <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
     <Key
-        latin:keyLabel="&#x0441;"
+        latin:keySpec="&#x0441;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7" />
     <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
     <Key
-        latin:keyLabel="&#x0434;"
+        latin:keySpec="&#x0434;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8" />
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
     <Key
-        latin:keyLabel="&#x0437;"
+        latin:keySpec="&#x0437;"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9" />
     <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE -->
     <Key
-        latin:keyLabel="&#x0446;"
+        latin:keySpec="&#x0446;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
     <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
     <Key
-        latin:keyLabel="&#x0431;" />
+        latin:keySpec="&#x0431;" />
 </merge>
diff --git a/java/res/xml/rowkeys_bulgarian_bds2.xml b/java/res/xml/rowkeys_bulgarian_bds2.xml
index ff1bff8..e078ae7 100644
--- a/java/res/xml/rowkeys_bulgarian_bds2.xml
+++ b/java/res/xml/rowkeys_bulgarian_bds2.xml
@@ -23,35 +23,35 @@
 >
     <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
     <Key
-        latin:keyLabel="&#x044C;" />
+        latin:keySpec="&#x044C;" />
     <!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
     <Key
-        latin:keyLabel="&#x044F;" />
+        latin:keySpec="&#x044F;" />
     <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
     <Key
-        latin:keyLabel="&#x0430;" />
+        latin:keySpec="&#x0430;" />
     <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
     <Key
-        latin:keyLabel="&#x043E;" />
+        latin:keySpec="&#x043E;" />
     <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
     <Key
-        latin:keyLabel="&#x0436;" />
+        latin:keySpec="&#x0436;" />
     <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
     <Key
-        latin:keyLabel="&#x0433;" />
+        latin:keySpec="&#x0433;" />
     <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
     <Key
-        latin:keyLabel="&#x0442;" />
+        latin:keySpec="&#x0442;" />
     <!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
     <Key
-        latin:keyLabel="&#x043D;" />
+        latin:keySpec="&#x043D;" />
     <!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
     <Key
-        latin:keyLabel="&#x0432;" />
+        latin:keySpec="&#x0432;" />
     <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
     <Key
-        latin:keyLabel="&#x043C;" />
+        latin:keySpec="&#x043C;" />
     <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
     <Key
-        latin:keyLabel="&#x0447;" />
+        latin:keySpec="&#x0447;" />
 </merge>
diff --git a/java/res/xml/rowkeys_bulgarian_bds3.xml b/java/res/xml/rowkeys_bulgarian_bds3.xml
index 7bb780a..8302d69 100644
--- a/java/res/xml/rowkeys_bulgarian_bds3.xml
+++ b/java/res/xml/rowkeys_bulgarian_bds3.xml
@@ -23,29 +23,29 @@
 >
     <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU -->
     <Key
-        latin:keyLabel="&#x044E;" />
+        latin:keySpec="&#x044E;" />
     <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I -->
     <Key
-        latin:keyLabel="&#x0439;" />
+        latin:keySpec="&#x0439;" />
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
     <Key
-        latin:keyLabel="&#x044A;" />
+        latin:keySpec="&#x044A;" />
     <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
     <Key
-        latin:keyLabel="&#x044D;" />
+        latin:keySpec="&#x044D;" />
     <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
     <Key
-        latin:keyLabel="&#x0444;" />
+        latin:keySpec="&#x0444;" />
     <!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
     <Key
-        latin:keyLabel="&#x0445;" />
+        latin:keySpec="&#x0445;" />
     <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
     <Key
-        latin:keyLabel="&#x043F;" />
+        latin:keySpec="&#x043F;" />
     <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
     <Key
-        latin:keyLabel="&#x0440;" />
+        latin:keySpec="&#x0440;" />
     <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
     <Key
-        latin:keyLabel="&#x043B;" />
+        latin:keySpec="&#x043B;" />
 </merge>
diff --git a/java/res/xml/rowkeys_colemak1.xml b/java/res/xml/rowkeys_colemak1.xml
index f1c3075..199d285 100644
--- a/java/res/xml/rowkeys_colemak1.xml
+++ b/java/res/xml/rowkeys_colemak1.xml
@@ -22,45 +22,62 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="q"
+        latin:keySpec="q"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <Key
-        latin:keyLabel="w"
+        latin:keySpec="w"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2"
-        latin:moreKeys="!text/more_keys_for_w" />
+        latin:moreKeys="!text/morekeys_w" />
     <Key
-        latin:keyLabel="f"
+        latin:keySpec="f"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3" />
     <Key
-        latin:keyLabel="p"
+        latin:keySpec="p"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <Key
-        latin:keyLabel="g"
+        latin:keySpec="g"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_g" />
+        latin:moreKeys="!text/morekeys_g" />
     <Key
-        latin:keyLabel="j"
+        latin:keySpec="j"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="!text/more_keys_for_j" />
+        latin:moreKeys="!text/morekeys_j" />
     <Key
-        latin:keyLabel="l"
+        latin:keySpec="l"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_l" />
+        latin:moreKeys="!text/morekeys_l" />
     <Key
-        latin:keyLabel="u"
+        latin:keySpec="u"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="!text/more_keys_for_u" />
+        latin:moreKeys="!text/morekeys_u" />
     <Key
-        latin:keyLabel="y"
+        latin:keySpec="y"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9"
-        latin:moreKeys="!text/more_keys_for_y" />
+        latin:moreKeys="!text/morekeys_y" />
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
+        >
+            <Key
+                latin:keySpec=":"
+                latin:keyHintLabel="0"
+                latin:additionalMoreKeys="0" />
+        </case>
+        <default>
+            <Key
+                latin:keySpec=";"
+                latin:keyHintLabel="0"
+                latin:additionalMoreKeys="0"
+                latin:moreKeys=":" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_colemak2.xml b/java/res/xml/rowkeys_colemak2.xml
index f73d7e9..a8e93bf 100644
--- a/java/res/xml/rowkeys_colemak2.xml
+++ b/java/res/xml/rowkeys_colemak2.xml
@@ -22,33 +22,33 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="a"
-        latin:moreKeys="!text/more_keys_for_a" />
+        latin:keySpec="a"
+        latin:moreKeys="!text/morekeys_a" />
     <Key
-        latin:keyLabel="r"
-        latin:moreKeys="!text/more_keys_for_r" />
+        latin:keySpec="r"
+        latin:moreKeys="!text/morekeys_r" />
     <Key
-        latin:keyLabel="s"
-        latin:moreKeys="!text/more_keys_for_s" />
+        latin:keySpec="s"
+        latin:moreKeys="!text/morekeys_s" />
     <Key
-        latin:keyLabel="t"
-        latin:moreKeys="!text/more_keys_for_t" />
+        latin:keySpec="t"
+        latin:moreKeys="!text/morekeys_t" />
     <Key
-        latin:keyLabel="d"
-        latin:moreKeys="!text/more_keys_for_d" />
+        latin:keySpec="d"
+        latin:moreKeys="!text/morekeys_d" />
     <Key
-        latin:keyLabel="h"
-        latin:moreKeys="!text/more_keys_for_h" />
+        latin:keySpec="h"
+        latin:moreKeys="!text/morekeys_h" />
     <Key
-        latin:keyLabel="n"
-        latin:moreKeys="!text/more_keys_for_n" />
+        latin:keySpec="n"
+        latin:moreKeys="!text/morekeys_n" />
     <Key
-        latin:keyLabel="e"
-        latin:moreKeys="!text/more_keys_for_e" />
+        latin:keySpec="e"
+        latin:moreKeys="!text/morekeys_e" />
     <Key
-        latin:keyLabel="i"
-        latin:moreKeys="!text/more_keys_for_i" />
+        latin:keySpec="i"
+        latin:moreKeys="!text/morekeys_i" />
     <Key
-        latin:keyLabel="o"
-        latin:moreKeys="!text/more_keys_for_o" />
+        latin:keySpec="o"
+        latin:moreKeys="!text/morekeys_o" />
 </merge>
diff --git a/java/res/xml/rowkeys_colemak3.xml b/java/res/xml/rowkeys_colemak3.xml
index f0f9151..df4d993 100644
--- a/java/res/xml/rowkeys_colemak3.xml
+++ b/java/res/xml/rowkeys_colemak3.xml
@@ -22,21 +22,21 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="z"
-        latin:moreKeys="!text/more_keys_for_z" />
+        latin:keySpec="z"
+        latin:moreKeys="!text/morekeys_z" />
     <Key
-        latin:keyLabel="x" />
+        latin:keySpec="x" />
     <Key
-        latin:keyLabel="c"
-        latin:moreKeys="!text/more_keys_for_c" />
+        latin:keySpec="c"
+        latin:moreKeys="!text/morekeys_c" />
     <Key
-        latin:keyLabel="v"
-        latin:moreKeys="!text/more_keys_for_v" />
+        latin:keySpec="v"
+        latin:moreKeys="!text/morekeys_v" />
     <Key
-        latin:keyLabel="b" />
+        latin:keySpec="b" />
     <Key
-        latin:keyLabel="k"
-        latin:moreKeys="!text/more_keys_for_k" />
+        latin:keySpec="k"
+        latin:moreKeys="!text/morekeys_k" />
     <Key
-        latin:keyLabel="m" />
+        latin:keySpec="m" />
 </merge>
diff --git a/java/res/xml/rowkeys_dvorak1.xml b/java/res/xml/rowkeys_dvorak1.xml
index 033308a..170e316 100644
--- a/java/res/xml/rowkeys_dvorak1.xml
+++ b/java/res/xml/rowkeys_dvorak1.xml
@@ -24,36 +24,36 @@
     <include
         latin:keyboardLayout="@xml/keys_dvorak_123" />
     <Key
-        latin:keyLabel="p"
+        latin:keySpec="p"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <Key
-        latin:keyLabel="y"
+        latin:keySpec="y"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_y" />
+        latin:moreKeys="!text/morekeys_y" />
     <Key
-        latin:keyLabel="f"
+        latin:keySpec="f"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6" />
     <Key
-        latin:keyLabel="g"
+        latin:keySpec="g"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_g" />
+        latin:moreKeys="!text/morekeys_g" />
     <Key
-        latin:keyLabel="c"
+        latin:keySpec="c"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="!text/more_keys_for_c" />
+        latin:moreKeys="!text/morekeys_c" />
     <Key
-        latin:keyLabel="r"
+        latin:keySpec="r"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9"
-        latin:moreKeys="!text/more_keys_for_r" />
+        latin:moreKeys="!text/morekeys_r" />
     <Key
-        latin:keyLabel="l"
+        latin:keySpec="l"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0"
-        latin:moreKeys="!text/more_keys_for_l" />
+        latin:moreKeys="!text/morekeys_l" />
 </merge>
diff --git a/java/res/xml/rowkeys_dvorak2.xml b/java/res/xml/rowkeys_dvorak2.xml
index 943e3f5..0840a6c 100644
--- a/java/res/xml/rowkeys_dvorak2.xml
+++ b/java/res/xml/rowkeys_dvorak2.xml
@@ -22,33 +22,33 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="a"
-        latin:moreKeys="!text/more_keys_for_a" />
+        latin:keySpec="a"
+        latin:moreKeys="!text/morekeys_a" />
     <Key
-        latin:keyLabel="o"
-        latin:moreKeys="!text/more_keys_for_o" />
+        latin:keySpec="o"
+        latin:moreKeys="!text/morekeys_o" />
     <Key
-        latin:keyLabel="e"
-        latin:moreKeys="!text/more_keys_for_e" />
+        latin:keySpec="e"
+        latin:moreKeys="!text/morekeys_e" />
     <Key
-        latin:keyLabel="u"
-        latin:moreKeys="!text/more_keys_for_u" />
+        latin:keySpec="u"
+        latin:moreKeys="!text/morekeys_u" />
     <Key
-        latin:keyLabel="i"
-        latin:moreKeys="!text/more_keys_for_i" />
+        latin:keySpec="i"
+        latin:moreKeys="!text/morekeys_i" />
     <Key
-        latin:keyLabel="d"
-        latin:moreKeys="!text/more_keys_for_d" />
+        latin:keySpec="d"
+        latin:moreKeys="!text/morekeys_d" />
     <Key
-        latin:keyLabel="h"
-        latin:moreKeys="!text/more_keys_for_h" />
+        latin:keySpec="h"
+        latin:moreKeys="!text/morekeys_h" />
     <Key
-        latin:keyLabel="t"
-        latin:moreKeys="!text/more_keys_for_t" />
+        latin:keySpec="t"
+        latin:moreKeys="!text/morekeys_t" />
     <Key
-        latin:keyLabel="n"
-        latin:moreKeys="!text/more_keys_for_n" />
+        latin:keySpec="n"
+        latin:moreKeys="!text/morekeys_n" />
     <Key
-        latin:keyLabel="s"
-        latin:moreKeys="!text/more_keys_for_s" />
+        latin:keySpec="s"
+        latin:moreKeys="!text/morekeys_s" />
 </merge>
diff --git a/java/res/xml/rowkeys_dvorak3.xml b/java/res/xml/rowkeys_dvorak3.xml
index b035f41..e53908c 100644
--- a/java/res/xml/rowkeys_dvorak3.xml
+++ b/java/res/xml/rowkeys_dvorak3.xml
@@ -22,21 +22,21 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="j"
-        latin:moreKeys="!text/more_keys_for_j" />
+        latin:keySpec="j"
+        latin:moreKeys="!text/morekeys_j" />
     <Key
-        latin:keyLabel="k"
-        latin:moreKeys="!text/more_keys_for_k" />
+        latin:keySpec="k"
+        latin:moreKeys="!text/morekeys_k" />
     <Key
-        latin:keyLabel="x" />
+        latin:keySpec="x" />
     <Key
-        latin:keyLabel="b" />
+        latin:keySpec="b" />
     <Key
-        latin:keyLabel="m" />
+        latin:keySpec="m" />
     <Key
-        latin:keyLabel="w"
-        latin:moreKeys="!text/more_keys_for_w" />
+        latin:keySpec="w"
+        latin:moreKeys="!text/morekeys_w" />
     <Key
-        latin:keyLabel="v"
-        latin:moreKeys="!text/more_keys_for_v" />
+        latin:keySpec="v"
+        latin:moreKeys="!text/morekeys_v" />
 </merge>
diff --git a/java/res/xml/rowkeys_east_slavic1.xml b/java/res/xml/rowkeys_east_slavic1.xml
index 5b3b4b4..88d95ff 100644
--- a/java/res/xml/rowkeys_east_slavic1.xml
+++ b/java/res/xml/rowkeys_east_slavic1.xml
@@ -23,59 +23,59 @@
 >
     <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I -->
     <Key
-        latin:keyLabel="&#x0439;"
+        latin:keySpec="&#x0439;"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE -->
     <Key
-        latin:keyLabel="&#x0446;"
+        latin:keySpec="&#x0446;"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2" />
     <!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
     <Key
-        latin:keyLabel="&#x0443;"
+        latin:keySpec="&#x0443;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="!text/more_keys_for_cyrillic_u" />
+        latin:moreKeys="!text/morekeys_cyrillic_u" />
     <!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
     <Key
-        latin:keyLabel="&#x043A;"
+        latin:keySpec="&#x043A;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4"
-        latin:moreKeys="!text/more_keys_for_cyrillic_ka" />
+        latin:moreKeys="!text/morekeys_cyrillic_ka" />
     <!-- U+0435: "е" CYRILLIC SMALL LETTER IE -->
     <Key
-        latin:keyLabel="&#x0435;"
+        latin:keySpec="&#x0435;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_cyrillic_ie" />
+        latin:moreKeys="!text/morekeys_cyrillic_ie" />
     <!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
     <Key
-        latin:keyLabel="&#x043D;"
+        latin:keySpec="&#x043D;"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="!text/more_keys_for_cyrillic_en" />
+        latin:moreKeys="!text/morekeys_cyrillic_en" />
     <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
     <Key
-        latin:keyLabel="&#x0433;"
+        latin:keySpec="&#x0433;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_cyrillic_ghe" />
+        latin:moreKeys="!text/morekeys_cyrillic_ghe" />
     <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA -->
     <Key
-        latin:keyLabel="&#x0448;"
+        latin:keySpec="&#x0448;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8" />
     <Key
-        latin:keyLabel="!text/keylabel_for_east_slavic_row1_9"
+        latin:keySpec="!text/keyspec_east_slavic_row1_9"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9" />
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
     <Key
-        latin:keyLabel="&#x0437;"
+        latin:keySpec="&#x0437;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
     <!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
     <Key
-        latin:keyLabel="&#x0445;" />
+        latin:keySpec="&#x0445;" />
 </merge>
diff --git a/java/res/xml/rowkeys_east_slavic2.xml b/java/res/xml/rowkeys_east_slavic2.xml
index 2e412f0..21463fb 100644
--- a/java/res/xml/rowkeys_east_slavic2.xml
+++ b/java/res/xml/rowkeys_east_slavic2.xml
@@ -23,37 +23,37 @@
 >
     <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
     <Key
-        latin:keyLabel="&#x0444;" />
+        latin:keySpec="&#x0444;" />
     <Key
-        latin:keyLabel="!text/keylabel_for_east_slavic_row2_1"
-        latin:moreKeys="!text/more_keys_for_east_slavic_row2_1" />
+        latin:keySpec="!text/keyspec_east_slavic_row2_2"
+        latin:moreKeys="!text/morekeys_east_slavic_row2_2" />
     <!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
     <Key
-        latin:keyLabel="&#x0432;" />
+        latin:keySpec="&#x0432;" />
     <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
     <Key
-        latin:keyLabel="&#x0430;"
-        latin:moreKeys="!text/more_keys_for_cyrillic_a" />
+        latin:keySpec="&#x0430;"
+        latin:moreKeys="!text/morekeys_cyrillic_a" />
     <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
     <Key
-        latin:keyLabel="&#x043F;" />
+        latin:keySpec="&#x043F;" />
     <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
     <Key
-        latin:keyLabel="&#x0440;" />
+        latin:keySpec="&#x0440;" />
     <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
     <Key
-        latin:keyLabel="&#x043E;"
-        latin:moreKeys="!text/more_keys_for_cyrillic_o" />
+        latin:keySpec="&#x043E;"
+        latin:moreKeys="!text/morekeys_cyrillic_o" />
     <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
     <Key
-        latin:keyLabel="&#x043B;" />
+        latin:keySpec="&#x043B;" />
     <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
     <Key
-        latin:keyLabel="&#x0434;" />
+        latin:keySpec="&#x0434;" />
     <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
     <Key
-        latin:keyLabel="&#x0436;" />
+        latin:keySpec="&#x0436;" />
     <Key
-        latin:keyLabel="!text/keylabel_for_east_slavic_row2_11"
-        latin:moreKeys="!text/more_keys_for_east_slavic_row2_11" />
+        latin:keySpec="!text/keyspec_east_slavic_row2_11"
+        latin:moreKeys="!text/morekeys_east_slavic_row2_11" />
 </merge>
diff --git a/java/res/xml/rowkeys_east_slavic3.xml b/java/res/xml/rowkeys_east_slavic3.xml
index c3a171b..54802e8 100644
--- a/java/res/xml/rowkeys_east_slavic3.xml
+++ b/java/res/xml/rowkeys_east_slavic3.xml
@@ -23,29 +23,29 @@
 >
     <!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
     <Key
-        latin:keyLabel="&#x044F;" />
+        latin:keySpec="&#x044F;" />
     <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
     <Key
-        latin:keyLabel="&#x0447;" />
+        latin:keySpec="&#x0447;" />
     <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
     <Key
-        latin:keyLabel="&#x0441;" />
+        latin:keySpec="&#x0441;" />
     <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
     <Key
-        latin:keyLabel="&#x043C;" />
+        latin:keySpec="&#x043C;" />
     <Key
-        latin:keyLabel="!text/keylabel_for_east_slavic_row3_5" />
+        latin:keySpec="!text/keyspec_east_slavic_row3_5" />
     <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
     <Key
-        latin:keyLabel="&#x0442;" />
+        latin:keySpec="&#x0442;" />
     <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN -->
     <Key
-        latin:keyLabel="&#x044C;"
-        latin:moreKeys="!text/more_keys_for_cyrillic_soft_sign" />
+        latin:keySpec="&#x044C;"
+        latin:moreKeys="!text/morekeys_cyrillic_soft_sign" />
     <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
     <Key
-        latin:keyLabel="&#x0431;" />
+        latin:keySpec="&#x0431;" />
     <!-- U+044E: "ю" CYRILLIC SMALL LETTER YU -->
     <Key
-        latin:keyLabel="&#x044E;" />
+        latin:keySpec="&#x044E;" />
 </merge>
diff --git a/java/res/xml/rowkeys_farsi1.xml b/java/res/xml/rowkeys_farsi1.xml
index 5a22a24..abc2c96 100644
--- a/java/res/xml/rowkeys_farsi1.xml
+++ b/java/res/xml/rowkeys_farsi1.xml
@@ -18,58 +18,49 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0636: "ض" ARABIC LETTER DAD
          U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE -->
     <Key
-        latin:keyLabel="&#x0636;"
+        latin:keySpec="&#x0636;"
         latin:keyHintLabel="&#x06F1;"
-        latin:additionalMoreKeys="&#x06F1;,1"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F1;,1" />
     <!-- U+0635: "ص" ARABIC LETTER SAD
          U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO -->
     <Key
-        latin:keyLabel="&#x0635;"
+        latin:keySpec="&#x0635;"
         latin:keyHintLabel="&#x06F2;"
-        latin:additionalMoreKeys="&#x06F2;,2"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F2;,2" />
     <!-- U+062B: "ث" ARABIC LETTER THEH
          U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE -->
     <Key
-        latin:keyLabel="&#x062B;"
+        latin:keySpec="&#x062B;"
         latin:keyHintLabel="&#x06F3;"
-        latin:additionalMoreKeys="&#x06F3;,3"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F3;,3" />
     <!-- U+0642: "ق" ARABIC LETTER QAF
          U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR -->
     <Key
-        latin:keyLabel="&#x0642;"
+        latin:keySpec="&#x0642;"
         latin:keyHintLabel="&#x06F4;"
-        latin:additionalMoreKeys="&#x06F4;,4"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F4;,4" />
     <!-- U+0641: "ف" ARABIC LETTER FEH
          U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE -->
     <Key
-        latin:keyLabel="&#x0641;"
+        latin:keySpec="&#x0641;"
         latin:keyHintLabel="&#x06F5;"
-        latin:additionalMoreKeys="&#x06F5;,5"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F5;,5" />
     <!-- U+063A: "غ" ARABIC LETTER GHAIN
          U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX -->
     <Key
-        latin:keyLabel="&#x063A;"
+        latin:keySpec="&#x063A;"
         latin:keyHintLabel="&#x06F6;"
-        latin:additionalMoreKeys="&#x06F6;,6"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F6;,6" />
     <!-- U+0639: "ع" ARABIC LETTER AIN
          U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN -->
     <Key
-        latin:keyLabel="&#x0639;"
+        latin:keySpec="&#x0639;"
         latin:keyHintLabel="&#x06F7;"
-        latin:additionalMoreKeys="&#x06F7;,7"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F7;,7" />
     <!-- U+0647: "ه" ARABIC LETTER HEH
          U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM
          U+0647/U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER
@@ -77,27 +68,22 @@
          U+0629: "ة" ARABIC LETTER TEH MARBUTA
          U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT -->
     <Key
-        latin:keyLabel="&#x0647;"
+        latin:keySpec="&#x0647;"
         latin:moreKeys="&#xFEEB;|&#x0647;&#x200D;,&#x0647;&#x0654;,&#x0629;,%"
         latin:keyHintLabel="&#x06F8;"
-        latin:additionalMoreKeys="&#x06F8;,8"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F8;,8" />
     <!-- U+062E: "خ" ARABIC LETTER KHAH
          U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE -->
     <Key
-        latin:keyLabel="&#x062E;"
+        latin:keySpec="&#x062E;"
         latin:keyHintLabel="&#x06F9;"
-        latin:additionalMoreKeys="&#x06F9;,9"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F9;,9" />
     <!-- U+062D: "ح" ARABIC LETTER HAH
          U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO -->
     <Key
-        latin:keyLabel="&#x062D;"
+        latin:keySpec="&#x062D;"
         latin:keyHintLabel="&#x06F0;"
-        latin:additionalMoreKeys="&#x06F0;,0"
-        latin:keyLabelFlags="fontNormal" />
+        latin:additionalMoreKeys="&#x06F0;,0" />
     <!-- U+062C: "ج" ARABIC LETTER JEEM -->
-    <Key
-        latin:keyLabel="&#x062C;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x062C;" />
 </merge>
diff --git a/java/res/xml/rowkeys_farsi2.xml b/java/res/xml/rowkeys_farsi2.xml
index 590161f..82f1903 100644
--- a/java/res/xml/rowkeys_farsi2.xml
+++ b/java/res/xml/rowkeys_farsi2.xml
@@ -18,34 +18,23 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0634: "ش" ARABIC LETTER SHEEN -->
-    <Key
-        latin:keyLabel="&#x0634;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0634;" />
     <!-- U+0633: "س" ARABIC LETTER SEEN -->
-    <Key
-        latin:keyLabel="&#x0633;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0633;" />
     <!-- U+06CC: "ی" ARABIC LETTER FARSI YEH
          U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
          U+064A: "ي" ARABIC LETTER YEH
          U+FBE8: "ﯨ" ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
          U+0649: "ى" ARABIC LETTER ALEF MAKSURA -->
     <Key
-        latin:keyLabel="&#x06CC;"
-        latin:moreKeys="&#x0626;,&#x064A;,&#xFBE8;|&#x0649;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x06CC;"
+        latin:moreKeys="&#x0626;,&#x064A;,&#xFBE8;|&#x0649;" />
     <!-- U+0628: "ب" ARABIC LETTER BEH -->
-    <Key
-        latin:keyLabel="&#x0628;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0628;" />
     <!-- U+0644: "ل" ARABIC LETTER LAM -->
-    <Key
-        latin:keyLabel="&#x0644;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0644;" />
     <!-- U+0627: "ا" ARABIC LETTER ALEF
          U+0671: "ٱ" ARABIC LETTER ALEF WASLA
          U+0621: "ء" ARABIC LETTER HAMZA
@@ -53,31 +42,22 @@
          U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
          U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW -->
     <Key
-        latin:keyLabel="&#x0627;"
-        latin:moreKeys="!fixedColumnOrder!5,&#x0671;,&#x0621;,&#x0622;,&#x0623;,&#x0625;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x0627;"
+        latin:moreKeys="!fixedColumnOrder!5,&#x0671;,&#x0621;,&#x0622;,&#x0623;,&#x0625;" />
     <!-- U+062A: "ت" ARABIC LETTER TEH
          U+0629: "ة": ARABIC LETTER TEH MARBUTA -->
     <Key
-        latin:keyLabel="&#x062A;"
-        latin:moreKeys="&#x0629;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x062A;"
+        latin:moreKeys="&#x0629;" />
     <!-- U+0646: "ن" ARABIC LETTER NOON -->
-    <Key
-        latin:keyLabel="&#x0646;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0646;" />
     <!-- U+0645: "م" ARABIC LETTER MEEM -->
-    <Key
-        latin:keyLabel="&#x0645;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0645;" />
     <!-- U+06A9: "ک" ARABIC LETTER KEHEH
          U+0643: "ك" ARABIC LETTER KAF -->
     <Key
-        latin:keyLabel="&#x06A9;"
-        latin:moreKeys="&#x0643;"
-        latin:keyLabelFlags="fontNormal" />
+        latin:keySpec="&#x06A9;"
+        latin:moreKeys="&#x0643;" />
     <!-- U+06AF: "گ" ARABIC LETTER GAF -->
-    <Key
-        latin:keyLabel="&#x06AF;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x06AF;" />
 </merge>
diff --git a/java/res/xml/rowkeys_farsi3.xml b/java/res/xml/rowkeys_farsi3.xml
index 98949f4..b825a36 100644
--- a/java/res/xml/rowkeys_farsi3.xml
+++ b/java/res/xml/rowkeys_farsi3.xml
@@ -18,47 +18,27 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <!-- U+0638: "ظ" ARABIC LETTER ZAH -->
-    <Key
-        latin:keyLabel="&#x0638;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0638;" />
     <!-- U+0637: "ط" ARABIC LETTER TAH -->
-    <Key
-        latin:keyLabel="&#x0637;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0637;" />
     <!-- U+0698: "ژ" ARABIC LETTER JEH -->
-    <Key
-        latin:keyLabel="&#x0698;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0698;" />
     <!-- U+0632: "ز" ARABIC LETTER ZAIN -->
-    <Key
-        latin:keyLabel="&#x0632;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0632;" />
     <!-- U+0631: "ر" ARABIC LETTER REH -->
-    <Key
-        latin:keyLabel="&#x0631;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0631;" />
     <!-- U+0630: "ذ" ARABIC LETTER THAL -->
-    <Key
-        latin:keyLabel="&#x0630;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x0630;" />
     <!-- U+062F: "د" ARABIC LETTER DAL -->
-    <Key
-        latin:keyLabel="&#x062F;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x062F;" />
     <!-- U+067E: "پ" ARABIC LETTER PEH -->
-    <Key
-        latin:keyLabel="&#x067E;"
-        latin:keyLabelFlags="fontNormal" />
+    <Key latin:keySpec="&#x067E;" />
     <!-- U+0648: "و" ARABIC LETTER WAW
          U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE -->
     <Key
-        latin:keyLabel="&#x0648;"
-        latin:moreKeys="&#x0624;"
-        latin:keyLabelFlags="fontNormal" />
-    <include
-        latin:keyboardLayout="@xml/keys_farsi3_right" />
+        latin:keySpec="&#x0648;"
+        latin:moreKeys="&#x0624;" />
+    <include latin:keyboardLayout="@xml/keys_farsi3_right" />
 </merge>
diff --git a/java/res/xml/rowkeys_georgian1.xml b/java/res/xml/rowkeys_georgian1.xml
index d31a4c7..c412aa3 100644
--- a/java/res/xml/rowkeys_georgian1.xml
+++ b/java/res/xml/rowkeys_georgian1.xml
@@ -26,104 +26,104 @@
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
         >
             <Key
-                latin:keyLabel="Q"
+                latin:keySpec="Q"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
             <!-- U+10ED: "ჭ" GEORGIAN LETTER CHAR -->
             <Key
-                latin:keyLabel="&#x10ED;"
+                latin:keySpec="&#x10ED;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
             <Key
-                latin:keyLabel="E"
+                latin:keySpec="E"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3" />
             <!-- U+10E6: "ღ" GEORGIAN LETTER GHAN -->
             <Key
-                latin:keyLabel="&#x10E6;"
+                latin:keySpec="&#x10E6;"
                 latin:keyHintLabel="4"
                 latin:additionalMoreKeys="4" />
             <!-- U+10D7: "თ" GEORGIAN LETTER TAN -->
             <Key
-                latin:keyLabel="&#x10D7;"
+                latin:keySpec="&#x10D7;"
                 latin:keyHintLabel="5"
                 latin:additionalMoreKeys="5" />
             <Key
-                latin:keyLabel="Y"
+                latin:keySpec="Y"
                 latin:keyHintLabel="6"
                 latin:additionalMoreKeys="6" />
             <Key
-                latin:keyLabel="U"
+                latin:keySpec="U"
                 latin:keyHintLabel="7"
                 latin:additionalMoreKeys="7" />
             <Key
-                latin:keyLabel="I"
+                latin:keySpec="I"
                 latin:keyHintLabel="8"
                 latin:additionalMoreKeys="8" />
             <Key
-                latin:keyLabel="O"
+                latin:keySpec="O"
                 latin:keyHintLabel="9"
                 latin:additionalMoreKeys="9" />
             <Key
-                latin:keyLabel="P"
+                latin:keySpec="P"
                 latin:keyHintLabel="0"
                 latin:additionalMoreKeys="0" />
         </case>
         <default>
             <!-- U+10E5: "ქ" GEORGIAN LETTER GHAN -->
             <Key
-                latin:keyLabel="&#x10E5;"
+                latin:keySpec="&#x10E5;"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
             <!-- U+10EC: "წ" GEORGIAN LETTER CIL -->
             <Key
-                latin:keyLabel="&#x10EC;"
+                latin:keySpec="&#x10EC;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
             <!-- U+10D4: "ე" GEORGIAN LETTER EN
                  U+10F1: "ჱ" GEORGIAN LETTER HE -->
             <Key
-                latin:keyLabel="&#x10D4;"
+                latin:keySpec="&#x10D4;"
                 latin:moreKeys="&#x10F1;"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3" />
             <!-- U+10E0: "რ" GEORGIAN LETTER RAE -->
             <Key
-                latin:keyLabel="&#x10E0;"
+                latin:keySpec="&#x10E0;"
                 latin:keyHintLabel="4"
                 latin:additionalMoreKeys="4" />
             <!-- U+10E2: "ტ" GEORGIAN LETTER TAR -->
             <Key
-                latin:keyLabel="&#x10E2;"
+                latin:keySpec="&#x10E2;"
                 latin:keyHintLabel="5"
                 latin:additionalMoreKeys="5" />
             <!-- U+10E7: "ყ" GEORGIAN LETTER QAR
                  U+10F8: "ჸ" GEORGIAN LETTER ELIFI -->
             <Key
-                latin:keyLabel="&#x10E7;"
+                latin:keySpec="&#x10E7;"
                 latin:moreKeys="&#x10F8;"
                 latin:keyHintLabel="6"
                 latin:additionalMoreKeys="6" />
             <!-- U+10E3: "უ" GEORGIAN LETTER UN -->
             <Key
-                latin:keyLabel="&#x10E3;"
+                latin:keySpec="&#x10E3;"
                 latin:keyHintLabel="7"
                 latin:additionalMoreKeys="7" />
             <!-- U+10D8: "ი" GEORGIAN LETTER IN
                  U+10F2: "ჲ" GEORGIAN LETTER HIE -->
             <Key
-                latin:keyLabel="&#x10D8;"
+                latin:keySpec="&#x10D8;"
                 latin:moreKeys="&#x10F2;"
                 latin:keyHintLabel="8"
                 latin:additionalMoreKeys="8" />
             <!-- U+10DD: "ო" GEORGIAN LETTER ON -->
             <Key
-                latin:keyLabel="&#x10DD;"
+                latin:keySpec="&#x10DD;"
                 latin:keyHintLabel="9"
                 latin:additionalMoreKeys="9" />
             <!-- U+10DE: "პ" GEORGIAN LETTER PAR -->
             <Key
-                latin:keyLabel="&#x10DE;"
+                latin:keySpec="&#x10DE;"
                 latin:keyHintLabel="0"
                 latin:additionalMoreKeys="0" />
         </default>
diff --git a/java/res/xml/rowkeys_georgian2.xml b/java/res/xml/rowkeys_georgian2.xml
index cdccda3..162960d 100644
--- a/java/res/xml/rowkeys_georgian2.xml
+++ b/java/res/xml/rowkeys_georgian2.xml
@@ -26,64 +26,64 @@
             latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
         >
             <Key
-                latin:keyLabel="A" />
+                latin:keySpec="A" />
             <!-- U+10E8: "შ" GEORGIAN LETTER SHIN -->
             <Key
-                latin:keyLabel="&#x10E8;" />
+                latin:keySpec="&#x10E8;" />
             <Key
-                latin:keyLabel="D" />
+                latin:keySpec="D" />
             <Key
-                latin:keyLabel="F" />
+                latin:keySpec="F" />
             <Key
-                latin:keyLabel="G" />
+                latin:keySpec="G" />
             <Key
-                latin:keyLabel="H" />
+                latin:keySpec="H" />
             <!-- U+10DF: "ჟ" GEORGIAN LETTER ZHAR -->
             <Key
-                latin:keyLabel="&#x10DF;" />
+                latin:keySpec="&#x10DF;" />
             <Key
-                latin:keyLabel="K" />
+                latin:keySpec="K" />
             <Key
-                latin:keyLabel="L" />
+                latin:keySpec="L" />
         </case>
         <default>
             <!-- U+10D0: "ა" GEORGIAN LETTER AN
                  U+10FA: "ჺ" GEORGIAN LETTER AIN -->
             <Key
-                latin:keyLabel="&#x10D0;"
+                latin:keySpec="&#x10D0;"
                 latin:moreKeys="&#x10FA;" />
             <!-- U+10E1: "ს" GEORGIAN LETTER SAN -->
             <Key
-                latin:keyLabel="&#x10E1;" />
+                latin:keySpec="&#x10E1;" />
             <!-- U+10D3: "დ" GEORGIAN LETTER DON -->
             <Key
-                latin:keyLabel="&#x10D3;" />
+                latin:keySpec="&#x10D3;" />
             <!-- U+10E4: "ფ" GEORGIAN LETTER PHAR
                  U+10F6: "ჶ" GEORGIAN LETTER FI -->
             <Key
-                latin:keyLabel="&#x10E4;"
+                latin:keySpec="&#x10E4;"
                 latin:moreKeys="&#x10F6;" />
             <!-- U+10D2: "გ" GEORGIAN LETTER GAN
                  U+10F9: "ჹ" GEORGIAN LETTER TURNED GAN -->
             <Key
-                latin:keyLabel="&#x10D2;"
+                latin:keySpec="&#x10D2;"
                 latin:moreKeys="&#x10F9;" />
             <!-- U+10F0: "ჰ" GEORGIAN LETTER HAE
                  U+10F5: "ჵ" GEORGIAN LETTER HOE -->
             <Key
-                latin:keyLabel="&#x10F0;"
+                latin:keySpec="&#x10F0;"
                 latin:moreKeys="&#x10F5;" />
             <!-- U+10EF: "ჯ" GEORGIAN LETTER JHAN
                  U+10F7: "ჷ" GEORGIAN LETTER YN -->
             <Key
-                latin:keyLabel="&#x10EF;"
+                latin:keySpec="&#x10EF;"
                 latin:moreKeys="&#x10F7;" />
             <!-- U+10D9: "კ" GEORGIAN LETTER KAN -->
             <Key
-                latin:keyLabel="&#x10D9;" />
+                latin:keySpec="&#x10D9;" />
             <!-- U+10DA: "ლ" GEORGIAN LETTER LAS -->
             <Key
-                latin:keyLabel="&#x10DA;" />
+                latin:keySpec="&#x10DA;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_georgian3.xml b/java/res/xml/rowkeys_georgian3.xml
index a371458..a16acf8 100644
--- a/java/res/xml/rowkeys_georgian3.xml
+++ b/java/res/xml/rowkeys_georgian3.xml
@@ -27,49 +27,49 @@
         >
             <!-- U+10EB: "ძ" GEORGIAN LETTER JIL -->
             <Key
-                latin:keyLabel="&#x10EB;" />
+                latin:keySpec="&#x10EB;" />
             <Key
-                latin:keyLabel="X" />
+                latin:keySpec="X" />
             <!-- U+10E9: "ჩ" GEORGIAN LETTER CHIN -->
             <Key
-                latin:keyLabel="&#x10E9;" />
+                latin:keySpec="&#x10E9;" />
             <Key
-                latin:keyLabel="V" />
+                latin:keySpec="V" />
             <Key
-                latin:keyLabel="B" />
+                latin:keySpec="B" />
             <Key
-                latin:keyLabel="N" />
+                latin:keySpec="N" />
             <Key
-                latin:keyLabel="M" />
+                latin:keySpec="M" />
         </case>
         <default>
             <!-- U+10D6: "ზ" GEORGIAN LETTER ZEN -->
             <Key
-                latin:keyLabel="&#x10D6;" />
+                latin:keySpec="&#x10D6;" />
             <!-- U+10EE: "ხ" GEORGIAN LETTER XAN
                  U+10F4: "ჴ" GEORGIAN LETTER HAR -->
             <Key
-                latin:keyLabel="&#x10EE;"
+                latin:keySpec="&#x10EE;"
                 latin:moreKeys="&#x10F4;" />
             <!-- U+10EA: "ც" GEORGIAN LETTER CAN -->
             <Key
-                latin:keyLabel="&#x10EA;" />
+                latin:keySpec="&#x10EA;" />
             <!-- U+10D5: "ვ" GEORGIAN LETTER VIN
                  U+10F3: "ჳ" GEORGIAN LETTER WE -->
             <Key
-                latin:keyLabel="&#x10D5;"
+                latin:keySpec="&#x10D5;"
                 latin:moreKeys="&#x10F3;" />
             <!-- U+10D1: "ბ" GEORGIAN LETTER BAN -->
             <Key
-                latin:keyLabel="&#x10D1;" />
+                latin:keySpec="&#x10D1;" />
             <!-- U+10DC: "ნ" GEORGIAN LETTER NAR
                  U+10FC: "ჼ" MODIFIER LETTER GEORGIAN NAR -->
             <Key
-                latin:keyLabel="&#x10DC;"
+                latin:keySpec="&#x10DC;"
                 latin:moreKeys="&#x10FC;" />
             <!-- U+10DB: "მ" GEORGIAN LETTER MAN -->
             <Key
-                latin:keyLabel="&#x10DB;" />
+                latin:keySpec="&#x10DB;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_greek1.xml b/java/res/xml/rowkeys_greek1.xml
index 5777d3b..6d76779 100644
--- a/java/res/xml/rowkeys_greek1.xml
+++ b/java/res/xml/rowkeys_greek1.xml
@@ -21,6 +21,24 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted"
+        >
+            <Key
+                latin:keySpec=":"
+                latin:keyHintLabel="1"
+                latin:moreKeys=";"
+                latin:additionalMoreKeys="1" />
+        </case>
+        <default>
+            <Key
+                latin:keySpec=";"
+                latin:keyHintLabel="1"
+                latin:moreKeys=":"
+                latin:additionalMoreKeys="1" />
+        </default>
+    </switch>
     <!-- TODO: Should find a way to compound Greek dialytika tonos and other Greek letters. -->
     <!--
     <switch>
@@ -29,7 +47,7 @@
         >
             U+0385: "΅" GREEK DIALYTIKA TONOS
             <Key
-                latin:keyLabel="&#x0385;"
+                latin:keySpec="&#x0385;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
         </case>
@@ -37,7 +55,7 @@
         -->
             <!-- U+03C2: "ς" GREEK SMALL LETTER FINAL SIGMA -->
             <Key
-                latin:keyLabel="&#x03C2;"
+                latin:keySpec="&#x03C2;"
                 latin:keyLabelFlags="preserveCase"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
@@ -48,18 +66,18 @@
     <!-- U+03B5: "ε" GREEK SMALL LETTER EPSILON
          U+03AD: "έ" GREEK SMALL LETTER EPSILON WITH TONOS -->
     <Key
-        latin:keyLabel="&#x03B5;"
+        latin:keySpec="&#x03B5;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="&#x03AD;" />
+        latin:moreKeys="&#x03AD;,%" />
     <!-- U+03C1: "ρ" GREEK SMALL LETTER RHO -->
     <Key
-        latin:keyLabel="&#x03C1;"
+        latin:keySpec="&#x03C1;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <!-- U+03C4: "τ" GREEK SMALL LETTER TAU -->
     <Key
-        latin:keyLabel="&#x03C4;"
+        latin:keySpec="&#x03C4;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5" />
     <!-- U+03C5: "υ" GREEK SMALL LETTER UPSILON
@@ -67,13 +85,13 @@
          U+03CB: "ϋ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA
          U+03B0: "ΰ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -->
     <Key
-        latin:keyLabel="&#x03C5;"
+        latin:keySpec="&#x03C5;"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="&#x03CD;,&#x03CB;,&#x03B0;" />
+        latin:moreKeys="&#x03CD;,%,&#x03CB;,&#x03B0;" />
     <!-- U+03B8: "θ" GREEK SMALL LETTER THETA -->
     <Key
-        latin:keyLabel="&#x03B8;"
+        latin:keySpec="&#x03B8;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7" />
     <!-- U+03B9: "ι" GREEK SMALL LETTER IOTA
@@ -81,20 +99,20 @@
          U+03CA: "ϊ" GREEK SMALL LETTER IOTA WITH DIALYTIKA
          U+0390: "ΐ" GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -->
     <Key
-        latin:keyLabel="&#x03B9;"
+        latin:keySpec="&#x03B9;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="&#x03AF;,&#x03CA;,&#x0390;" />
+        latin:moreKeys="&#x03AF;,%,&#x03CA;,&#x0390;" />
     <!-- U+03BF: "ο" GREEK SMALL LETTER OMICRON
          U+03CC: "ό" GREEK SMALL LETTER OMICRON WITH TONOS -->
     <Key
-        latin:keyLabel="&#x03BF;"
+        latin:keySpec="&#x03BF;"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9"
-        latin:moreKeys="&#x03CC;" />
+        latin:moreKeys="&#x03CC;,%" />
     <!-- U+03C0: "π" GREEK SMALL LETTER PI -->
     <Key
-        latin:keyLabel="&#x03C0;"
+        latin:keySpec="&#x03C0;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
 </merge>
diff --git a/java/res/xml/rowkeys_greek2.xml b/java/res/xml/rowkeys_greek2.xml
index 91bdc11..d8769ca 100644
--- a/java/res/xml/rowkeys_greek2.xml
+++ b/java/res/xml/rowkeys_greek2.xml
@@ -24,32 +24,32 @@
     <!-- U+03B1: "α" GREEK SMALL LETTER ALPHA
          U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS -->
     <Key
-        latin:keyLabel="&#x03B1;"
+        latin:keySpec="&#x03B1;"
         latin:moreKeys="&#x03AC;" />
     <!-- U+03C3: "σ" GREEK SMALL LETTER SIGMA -->
     <Key
-        latin:keyLabel="&#x03C3;" />
+        latin:keySpec="&#x03C3;" />
     <!-- U+03B4: "δ" GREEK SMALL LETTER DELTA -->
     <Key
-        latin:keyLabel="&#x03B4;" />
+        latin:keySpec="&#x03B4;" />
     <!-- U+03C6: "φ" GREEK SMALL LETTER PHI -->
     <Key
-        latin:keyLabel="&#x03C6;" />
+        latin:keySpec="&#x03C6;" />
     <!-- U+03B3: "γ" GREEK SMALL LETTER GAMMA -->
     <Key
-        latin:keyLabel="&#x03B3;" />
+        latin:keySpec="&#x03B3;" />
     <!-- U+03B7: "η" GREEK SMALL LETTER ETA
          U+03AE: "ή" GREEK SMALL LETTER ETA WITH TONOS -->
     <Key
-        latin:keyLabel="&#x03B7;"
+        latin:keySpec="&#x03B7;"
         latin:moreKeys="&#x03AE;" />
     <!-- U+03BE: "ξ" GREEK SMALL LETTER XI -->
     <Key
-        latin:keyLabel="&#x03BE;" />
+        latin:keySpec="&#x03BE;" />
     <!-- U+03BA: "κ" GREEK SMALL LETTER KAPPA -->
     <Key
-        latin:keyLabel="&#x03BA;" />
+        latin:keySpec="&#x03BA;" />
     <!-- U+03BB: "λ" GREEK SMALL LETTER LAMDA -->
     <Key
-        latin:keyLabel="&#x03BB;" />
+        latin:keySpec="&#x03BB;" />
 </merge>
diff --git a/java/res/xml/rowkeys_greek3.xml b/java/res/xml/rowkeys_greek3.xml
index 8a99db9..3f989bc 100644
--- a/java/res/xml/rowkeys_greek3.xml
+++ b/java/res/xml/rowkeys_greek3.xml
@@ -23,25 +23,25 @@
 >
     <!-- U+03B6: "ζ" GREEK SMALL LETTER ZETA -->
     <Key
-        latin:keyLabel="&#x03B6;" />
+        latin:keySpec="&#x03B6;" />
     <!-- U+03C7: "χ" GREEK SMALL LETTER CHI -->
     <Key
-        latin:keyLabel="&#x03C7;" />
+        latin:keySpec="&#x03C7;" />
     <!-- U+03C8: "ψ" GREEK SMALL LETTER PSI -->
     <Key
-        latin:keyLabel="&#x03C8;" />
+        latin:keySpec="&#x03C8;" />
     <!-- U+03C9: "ω" GREEK SMALL LETTER OMEGA
          U+03CE: "ώ" GREEK SMALL LETTER OMEGA WITH TONOS -->
     <Key
-        latin:keyLabel="&#x03C9;"
+        latin:keySpec="&#x03C9;"
         latin:moreKeys="&#x03CE;" />
     <!-- U+03B2: "β" GREEK SMALL LETTER BETA -->
     <Key
-        latin:keyLabel="&#x03B2;" />
+        latin:keySpec="&#x03B2;" />
     <!-- U+03BD: "ν" GREEK SMALL LETTER NU -->
     <Key
-        latin:keyLabel="&#x03BD;" />
+        latin:keySpec="&#x03BD;" />
     <!-- U+03BC: "μ" GREEK SMALL LETTER MU -->
     <Key
-        latin:keyLabel="&#x03BC;" />
+        latin:keySpec="&#x03BC;" />
 </merge>
diff --git a/java/res/xml/rowkeys_hebrew1.xml b/java/res/xml/rowkeys_hebrew1.xml
index 81a00e3..e888977 100644
--- a/java/res/xml/rowkeys_hebrew1.xml
+++ b/java/res/xml/rowkeys_hebrew1.xml
@@ -26,22 +26,22 @@
             latin:mode="email|url"
         >
             <Key
-                latin:keyLabel="-"
+                latin:keySpec="-"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1" />
             <Key
-                latin:keyLabel="_"
+                latin:keySpec="_"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2" />
         </case>
         <default>
             <Key
-                latin:keyLabel="\'"
+                latin:keySpec="\'"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1"
                 latin:moreKeys="&quot;" />
             <Key
-                latin:keyLabel="-"
+                latin:keySpec="-"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2"
                 latin:moreKeys="_" />
@@ -49,42 +49,42 @@
     </switch>
     <!-- U+05E7: "ק" HEBREW LETTER QOF -->
     <Key
-        latin:keyLabel="&#x05E7;"
+        latin:keySpec="&#x05E7;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3" />
     <!-- U+05E8: "ר" HEBREW LETTER RESH -->
     <Key
-        latin:keyLabel="&#x05E8;"
+        latin:keySpec="&#x05E8;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <!-- U+05D0: "א" HEBREW LETTER ALEF -->
     <Key
-        latin:keyLabel="&#x05D0;"
+        latin:keySpec="&#x05D0;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5" />
     <!-- U+05D8: "ט" HEBREW LETTER TET -->
     <Key
-        latin:keyLabel="&#x05D8;"
+        latin:keySpec="&#x05D8;"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6" />
     <!-- U+05D5: "ו" HEBREW LETTER VAV -->
     <Key
-        latin:keyLabel="&#x05D5;"
+        latin:keySpec="&#x05D5;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7" />
     <!-- U+05DF: "ן" HEBREW LETTER FINAL NUN -->
     <Key
-        latin:keyLabel="&#x05DF;"
+        latin:keySpec="&#x05DF;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8" />
     <!-- U+05DD: "ם" HEBREW LETTER FINAL MEM -->
     <Key
-        latin:keyLabel="&#x05DD;"
+        latin:keySpec="&#x05DD;"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9" />
     <!-- U+05E4: "פ" HEBREW LETTER PE -->
     <Key
-        latin:keyLabel="&#x05E4;"
+        latin:keySpec="&#x05E4;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
 </merge>
diff --git a/java/res/xml/rowkeys_hebrew2.xml b/java/res/xml/rowkeys_hebrew2.xml
index e4ecac3..d43f5a8 100644
--- a/java/res/xml/rowkeys_hebrew2.xml
+++ b/java/res/xml/rowkeys_hebrew2.xml
@@ -23,38 +23,38 @@
 >
     <!-- U+05E9: "ש" HEBREW LETTER SHIN -->
     <Key
-        latin:keyLabel="&#x05E9;" />
+        latin:keySpec="&#x05E9;" />
     <!-- U+05D3: "ד" HEBREW LETTER DALET -->
     <Key
-        latin:keyLabel="&#x05D3;" />
+        latin:keySpec="&#x05D3;" />
     <!-- U+05D2: "ג" HEBREW LETTER GIMEL
          U+05D2 U+05F3: "ג׳" HEBREW LETTER GIMEL + HEBREW PUNCTUATION GERESH -->
     <Key
-        latin:keyLabel="&#x05D2;"
+        latin:keySpec="&#x05D2;"
         latin:moreKeys="&#x05D2;&#x05F3;" />
     <!-- U+05DB: "כ" HEBREW LETTER KAF -->
     <Key
-        latin:keyLabel="&#x05DB;" />
+        latin:keySpec="&#x05DB;" />
     <!-- U+05E2: "ע" HEBREW LETTER AYIN -->
     <Key
-        latin:keyLabel="&#x05E2;" />
+        latin:keySpec="&#x05E2;" />
     <!-- U+05D9: "י" HEBREW LETTER YOD
          U+05F2 U+05B7: "ײַ" HEBREW LIGATURE YIDDISH DOUBLE YOD + HEBREW POINT PATAH -->
     <Key
-        latin:keyLabel="&#x05D9;"
+        latin:keySpec="&#x05D9;"
         latin:moreKeys="&#x05F2;&#x05B7;" />
     <!-- U+05D7: "ח" HEBREW LETTER HET
          U+05D7 U+05F3: "ח׳" HEBREW LETTER HET + HEBREW PUNCTUATION GERESH -->
     <Key
-        latin:keyLabel="&#x05D7;"
+        latin:keySpec="&#x05D7;"
         latin:moreKeys="&#x05D7;&#x05F3;" />
     <!-- U+05DC: "ל" HEBREW LETTER LAMED -->
     <Key
-        latin:keyLabel="&#x05DC;" />
+        latin:keySpec="&#x05DC;" />
     <!-- U+05DA: "ך" HEBREW LETTER FINAL KAF -->
     <Key
-        latin:keyLabel="&#x05DA;" />
+        latin:keySpec="&#x05DA;" />
     <!-- U+05E3: "ף" HEBREW LETTER FINAL PE -->
     <Key
-        latin:keyLabel="&#x05E3;" />
+        latin:keySpec="&#x05E3;" />
 </merge>
diff --git a/java/res/xml/rowkeys_hebrew3.xml b/java/res/xml/rowkeys_hebrew3.xml
index 805a7a5..928e6b2 100644
--- a/java/res/xml/rowkeys_hebrew3.xml
+++ b/java/res/xml/rowkeys_hebrew3.xml
@@ -24,36 +24,36 @@
     <!-- U+05D6: "ז" HEBREW LETTER ZAYIN
          U+05D6 U+05F3: "ז׳" HEBREW LETTER ZAYIN + HEBREW PUNCTUATION GERESH -->
     <Key
-        latin:keyLabel="&#x05D6;"
+        latin:keySpec="&#x05D6;"
         latin:moreKeys="&#x05D6;&#x05F3;" />
     <!-- U+05E1: "ס" HEBREW LETTER SAMEKH -->
     <Key
-        latin:keyLabel="&#x05E1;" />
+        latin:keySpec="&#x05E1;" />
     <!-- U+05D1: "ב" HEBREW LETTER BET -->
     <Key
-        latin:keyLabel="&#x05D1;" />
+        latin:keySpec="&#x05D1;" />
     <!-- U+05D4: "ה" HEBREW LETTER HE -->
     <Key
-        latin:keyLabel="&#x05D4;" />
+        latin:keySpec="&#x05D4;" />
     <!-- U+05E0: "נ" HEBREW LETTER NUN -->
     <Key
-        latin:keyLabel="&#x05E0;" />
+        latin:keySpec="&#x05E0;" />
     <!-- U+05DE: "מ" HEBREW LETTER MEM -->
     <Key
-        latin:keyLabel="&#x05DE;" />
+        latin:keySpec="&#x05DE;" />
     <!-- U+05E6: "צ" HEBREW LETTER TSADI
          U+05E6 U+05F3: "צ׳" HEBREW LETTER TSADI + HEBREW PUNCTUATION GERESH -->
     <Key
-        latin:keyLabel="&#x05E6;"
+        latin:keySpec="&#x05E6;"
         latin:moreKeys="&#x05E6;&#x05F3;" />
     <!-- U+05EA: "ת" HEBREW LETTER TAV
          U+05EA U+05F3: "ת׳" HEBREW LETTER TAV + HEBREW PUNCTUATION GERESH -->
     <Key
-        latin:keyLabel="&#x05EA;"
+        latin:keySpec="&#x05EA;"
         latin:moreKeys="&#x05EA;&#x05F3;" />
     <!-- U+05E5: "ץ" HEBREW LETTER FINAL TSADI
          U+05E5 U+05F3: "ץ׳" HEBREW LETTER FINAL TSADI + HEBREW PUNCTUATION GERESH -->
     <Key
-        latin:keyLabel="&#x05E5;"
+        latin:keySpec="&#x05E5;"
         latin:moreKeys="&#x05E5;&#x05F3;" />
 </merge>
diff --git a/java/res/xml/rowkeys_hindi1.xml b/java/res/xml/rowkeys_hindi1.xml
index c0b3cb9..cd08e16 100644
--- a/java/res/xml/rowkeys_hindi1.xml
+++ b/java/res/xml/rowkeys_hindi1.xml
@@ -18,83 +18,62 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0914: "औ" DEVANAGARI LETTER AU
                  U+0912/U+0902: "ऒं" DEVANAGARI LETTER SHORT O//DEVANAGARI SIGN ANUSVARA -->
             <Key
-                latin:keyLabel="&#x0914;"
-                latin:moreKeys="&#x0912;&#x0902;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0914;"
+                latin:moreKeys="&#x0912;&#x0902;" />
             <!-- U+0910: "ऐ" DEVANAGARI LETTER AI
                  U+0910/U+0902: "ऐं" DEVANAGARI LETTER AI/DEVANAGARI SIGN ANUSVARA -->
             <Key
-                latin:keyLabel="&#x0910;"
-                latin:moreKeys="&#x0910;&#x0902;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0910;"
+                latin:moreKeys="&#x0910;&#x0902;" />
             <!-- U+0906: "आ" DEVANAGARI LETTER AA
                  U+0906/U+0902: "आं" DEVANAGARI LETTER AA/DEVANAGARI SIGN ANUSVARA
                  U+0906/U+0901: "आँ" DEVANAGARI LETTER AA/DEVANAGARI SIGN CANDRABINDU -->
             <Key
-                latin:keyLabel="&#x0906;"
-                latin:moreKeys="&#x0906;&#x0902;,&#x0906;&#x0901;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0906;"
+                latin:moreKeys="&#x0906;&#x0902;,&#x0906;&#x0901;" />
             <!-- U+0908: "ई" DEVANAGARI LETTER II
                  U+0908/U+0902: "ईं" DEVANAGARI LETTER II/DEVANAGARI SIGN ANUSVARA -->
             <Key
-                latin:keyLabel="&#x0908;"
-                latin:moreKeys="&#x0908;&#x0902;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0908;"
+                latin:moreKeys="&#x0908;&#x0902;" />
             <!-- U+090A: "ऊ" DEVANAGARI LETTER UU
                  U+090A/U+0902: "ऊं" DEVANAGARI LETTER UU/DEVANAGARI SIGN ANUSVARA
                  U+090A/U+0901: "ऊँ" DEVANAGARI LETTER UU/DEVANAGARI SIGN CANDRABINDU -->
             <Key
-                latin:keyLabel="&#x090A;"
-                latin:moreKeys="&#x090A;&#x0902;,&#x090A;&#x0901;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x090A;"
+                latin:moreKeys="&#x090A;&#x0902;,&#x090A;&#x0901;" />
             <!-- U+092D: "भ" DEVANAGARI LETTER BHA -->
-            <Key
-                latin:keyLabel="&#x092D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092D;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariSignVisarga" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
+            <Key latin:keyStyle="baseKeyDevanagariSignVisarga" />
             <!-- U+0918: "घ" DEVANAGARI LETTER GHA -->
-            <Key
-                latin:keyLabel="&#x0918;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0918;" />
             <!-- U+0927: "ध" DEVANAGARI LETTER DHA
                  U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
                  U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
             <Key
-                latin:keyLabel="&#x0927;"
-                latin:moreKeys="&#x0915;&#x094D;&#x0937;,&#x0936;&#x094D;&#x0930;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0927;"
+                latin:moreKeys="&#x0915;&#x094D;&#x0937;,&#x0936;&#x094D;&#x0930;" />
             <!-- U+091D: "झ" DEVANAGARI LETTER JHA -->
-            <Key
-                latin:keyLabel="&#x091D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091D;" />
             <!-- U+0922: "ढ" DEVANAGARI LETTER DDHA -->
-            <Key
-                latin:keyLabel="&#x0922;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0922;" />
         </case>
         <default>
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
             <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignAu"
                 latin:keyHintLabel="1"
@@ -102,9 +81,8 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
             <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignAi"
                 latin:keyHintLabel="2"
@@ -112,9 +90,8 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
             <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignAa"
                 latin:keyHintLabel="3"
@@ -122,9 +99,8 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
             <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignIi"
                 latin:keyHintLabel="4"
@@ -132,65 +108,58 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
             <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignUu"
                 latin:keyHintLabel="5"
                 latin:additionalMoreKeys="&#x096B;,5" />
             <!-- U+092C: "ब" DEVANAGARI LETTER BA
-                 U+096C: "६" DEVANAGARI DIGIT SIX
-                 U+092C/U+0952: "ब॒" DEVANAGARI LETTER BA/DEVANAGARI STRESS SIGN ANUDATTA -->
+                 U+092C/U+0952: "ब॒" DEVANAGARI LETTER BA/DEVANAGARI STRESS SIGN ANUDATTA
+                 U+096C: "६" DEVANAGARI DIGIT SIX -->
             <Key
-                latin:keyLabel="&#x092C;"
+                latin:keySpec="&#x092C;"
                 latin:moreKeys="&#x092C;&#x0952;,%"
                 latin:keyHintLabel="6"
-                latin:additionalMoreKeys="&#x096C;,6"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096C;,6" />
             <!-- U+0939: "ह" DEVANAGARI LETTER HA
                  U+096D: "७" DEVANAGARI DIGIT SEVEN -->
             <Key
-                latin:keyLabel="&#x0939;"
+                latin:keySpec="&#x0939;"
                 latin:keyHintLabel="7"
-                latin:additionalMoreKeys="&#x096D;,7"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096D;,7" />
             <!-- U+0917: "ग" DEVANAGARI LETTER GA
                  U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
                  U+0917/U+093C: "ग़" DEVANAGARI LETTER GA/DEVANAGARI SIGN NUKTA
                  U+0917/U+0952: "ग॒" DEVANAGARI LETTER GA/DEVANAGARI STRESS SIGN ANUDATTA
                  U+096E: "८" DEVANAGARI DIGIT EIGHT -->
             <Key
-                latin:keyLabel="&#x0917;"
+                latin:keySpec="&#x0917;"
                 latin:moreKeys="&#x091C;&#x094D;&#x091E;,&#x0917;&#x093C;,&#x0917;&#x0952;,%"
                 latin:keyHintLabel="8"
-                latin:additionalMoreKeys="&#x096E;,8"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096E;,8" />
             <!-- U+0926: "द" DEVANAGARI LETTER DA
                  U+096F: "९" DEVANAGARI DIGIT NINE -->
             <Key
-                latin:keyLabel="&#x0926;"
+                latin:keySpec="&#x0926;"
                 latin:keyHintLabel="9"
-                latin:additionalMoreKeys="&#x096F;,9"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096F;,9" />
             <!-- U+091C: "ज" DEVANAGARI LETTER JA
                  U+091C/U+0952: "ज॒" DEVANAGARI LETTER JA/DEVANAGARI STRESS SIGN ANUDATTA
                  U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
                  U+091C/U+093C: "ज़" DEVANAGARI LETTER JA/DEVANAGARI SIGN NUKTA
                  U+0966: "०" DEVANAGARI DIGIT ZERO -->
             <Key
-                latin:keyLabel="&#x091C;"
+                latin:keySpec="&#x091C;"
                 latin:moreKeys="&#x091C;&#x0952;,&#x091C;&#x094D;&#x091E;,&#x091C;&#x093C;,%"
                 latin:keyHintLabel="0"
-                latin:additionalMoreKeys="&#x0966;,0"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x0966;,0" />
             <!-- U+0921: "ड" DEVANAGARI LETTER DDA
                  U+0921/U+0952: "ड॒" DEVANAGARI LETTER DDA/DEVANAGARI STRESS SIGN ANUDATTA
                  U+0921/U+093C: "ड़" DEVANAGARI LETTER DDA/DEVANAGARI SIGN NUKTA -->
             <Key
-                latin:keyLabel="&#x0921;"
-                latin:moreKeys="&#x0921;&#x0952;,&#x0921;&#x093C;"
-                latin:keyLabelFlags="fontNormal" />
-         </default>
+                latin:keySpec="&#x0921;"
+                latin:moreKeys="&#x0921;&#x0952;,&#x0921;&#x093C;" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_hindi2.xml b/java/res/xml/rowkeys_hindi2.xml
index 70ac66e..fec93f3 100644
--- a/java/res/xml/rowkeys_hindi2.xml
+++ b/java/res/xml/rowkeys_hindi2.xml
@@ -18,151 +18,114 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0913: "ओ" DEVANAGARI LETTER O
                  U+0913/U+0902: "ओं" DEVANAGARI LETTER O/DEVANAGARI SIGN ANUSVARA
                  U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
                  U+0912: "ऒ" DEVANAGARI LETTER SHORT O -->
             <Key
-                latin:keyLabel="&#x0913;"
-                latin:moreKeys="&#x0913;&#x0902;,&#x0911;,&#x0912;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0913;"
+                latin:moreKeys="&#x0913;&#x0902;,&#x0911;,&#x0912;" />
             <!-- U+090F: "ए" DEVANAGARI LETTER E
                  U+090F/U+0902: "एं" DEVANAGARI LETTER E/DEVANAGARI SIGN ANUSVARA
                  U+090F/U+0901: "एँ" DEVANAGARI LETTER E/DEVANAGARI SIGN CANDRABINDU
                  U+090D: "ऍ" DEVANAGARI LETTER CANDRA E
                  U+090E: "ऎ" DEVANAGARI LETTER SHORT E -->
             <Key
-                latin:keyLabel="&#x090F;"
-                latin:moreKeys="&#x090F;&#x0902;,&#x090F;&#x0901;,&#x090D;,&#x090E;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x090F;"
+                latin:moreKeys="&#x090F;&#x0902;,&#x090F;&#x0901;,&#x090D;,&#x090E;" />
             <!-- U+0905: "अ" DEVANAGARI LETTER A
                  U+0905/U+0902: "अं" DEVANAGARI LETTER A/DEVANAGARI SIGN ANUSVARA
                  U+0905/U+0901: "अँ" DEVANAGARI LETTER A/DEVANAGARI SIGN CANDRABINDU -->
             <Key
-                latin:keyLabel="&#x0905;"
-                latin:moreKeys="&#x0905;&#x0902;,&#x0905;&#x0901;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0905;"
+                latin:moreKeys="&#x0905;&#x0902;,&#x0905;&#x0901;" />
             <!-- U+0907: "इ" DEVANAGARI LETTER I
                  U+0907/U+0902: "इं" DEVANAGARI LETTER I/DEVANAGARI SIGN ANUSVARA
                  U+0907/U+0901: "इं" DEVANAGARI LETTER I/DEVANAGARI SIGN CANDRABINDU -->
             <Key
-                latin:keyLabel="&#x0907;"
-                latin:moreKeys="&#x0907;&#x0902;,&#x0907;&#x0901;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0907;"
+                latin:moreKeys="&#x0907;&#x0902;,&#x0907;&#x0901;" />
             <!-- U+0909: "उ" DEVANAGARI LETTER U
                  U+0909/U+0902: "उं" DEVANAGARI LETTER U/DEVANAGARI SIGN ANUSVARA
                  U+0909/U+0901: "उँ" DEVANAGARI LETTER U/DEVANAGARI SIGN CANDRABINDU -->
             <Key
-                latin:keyLabel="&#x0909;"
-                latin:moreKeys="&#x0909;&#x0902;,&#x0909;&#x0901;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0909;"
+                latin:moreKeys="&#x0909;&#x0902;,&#x0909;&#x0901;" />
             <!-- U+092B: "फ" DEVANAGARI LETTER PHA
                  U+092B/U+093C: "फ़" DEVANAGARI LETTER PHA/DEVANAGARI SIGN NUKTA -->
             <Key
-                latin:keyLabel="&#x092B;"
-                latin:moreKeys="&#x092B;&#x093C;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x092B;"
+                latin:moreKeys="&#x092B;&#x093C;" />
             <!-- U+0931: "ऱ" DEVANAGARI LETTER RRA
                  U+094D/U+0930: "्र" DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
                  U+0930/U+094D: "र्" DEVANAGARI LETTER RA/DEVANAGARI SIGN VIRAMA -->
             <Key
-                latin:keyLabel="&#x0931;"
-                latin:moreKeys="&#x094D;&#x0930;,&#x0930;&#x094D;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0931;"
+                latin:moreKeys="&#x094D;&#x0930;,&#x0930;&#x094D;" />
             <!-- U+0916: "ख" DEVANAGARI LETTER KHA
                  U+0916/U+093C: "ख़" DEVANAGARI LETTER KHA/DEVANAGARI SIGN NUKTA -->
             <Key
-                latin:keyLabel="&#x0916;"
-                latin:moreKeys="&#x0916;&#x093C;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0916;"
+                latin:moreKeys="&#x0916;&#x093C;" />
             <!-- U+0925: "थ" DEVANAGARI LETTER THA -->
-            <Key
-                latin:keyLabel="&#x0925;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0925;" />
             <!-- U+091B: "छ" DEVANAGARI LETTER CHA -->
-            <Key
-                latin:keyLabel="&#x091B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091B;" />
             <!-- U+0920: "ठ" DEVANAGARI LETTER TTHA -->
-            <Key
-                latin:keyLabel="&#x0920;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0920;" />
         </case>
         <default>
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignO" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignO" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignE" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignE" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariSignVirama" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+            <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignI" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignI" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignU" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignU" />
             <!-- U+092A: "प" DEVANAGARI LETTER PA -->
-            <Key
-                latin:keyLabel="&#x092A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092A;" />
             <!-- U+0930: "र" DEVANAGARI LETTER RA
                  U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
                  U+0930/U+093C: "ऱ" DEVANAGARI LETTER RA/DEVANAGARI SIGN NUKTA
                  U+0960: "ॠ" DEVANAGARI LETTER VOCALIC RR -->
             <Key
-                latin:keyLabel="&#x0930;"
-                latin:moreKeys="&#x090B;,&#x0930;&#x093C;,&#x0960;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0930;"
+                latin:moreKeys="&#x090B;,&#x0930;&#x093C;,&#x0960;" />
             <!-- U+0915: "क" DEVANAGARI LETTER KA
                  U+0915/U+093C: "क़" DEVANAGARI LETTER KA/DEVANAGARI SIGN NUKTA -->
             <Key
-                latin:keyLabel="&#x0915;"
-                latin:moreKeys="&#x0915;&#x093C;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0915;"
+                latin:moreKeys="&#x0915;&#x093C;" />
             <!-- U+0924: "त" DEVANAGARI LETTER TA
                  U+0924/U+094D/U+0930: "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
             <Key
-                latin:keyLabel="&#x0924;"
-                latin:moreKeys="&#x0924;&#x094D;&#x0930;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0924;"
+                latin:moreKeys="&#x0924;&#x094D;&#x0930;" />
             <!-- U+091A: "च" DEVANAGARI LETTER CA -->
-            <Key
-                latin:keyLabel="&#x091A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091A;" />
             <!-- U+091F: "ट" DEVANAGARI LETTER TTA -->
-            <Key
-                latin:keyLabel="&#x091F;"
-                latin:keyLabelFlags="fontNormal" />
-         </default>
+            <Key latin:keySpec="&#x091F;" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_hindi3.xml b/java/res/xml/rowkeys_hindi3.xml
index 136bc5f..2e6d686 100644
--- a/java/res/xml/rowkeys_hindi3.xml
+++ b/java/res/xml/rowkeys_hindi3.xml
@@ -18,101 +18,80 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O -->
-            <Key
-                latin:keyLabel="&#x0911;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0911;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_candrabindu" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_candrabindu" />
+            <Key latin:keyStyle="baseKeyDevanagariSignCandrabindu" />
             <!-- U+0923: "ण" DEVANAGARI LETTER NNA -->
-            <Key
-                latin:keyLabel="&#x0923;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0923;" />
             <!-- U+0929: "ऩ" DEVANAGARI LETTER NNNA -->
-            <Key
-                latin:keyLabel="&#x0929;" />
+            <Key latin:keySpec="&#x0929;" />
             <!-- U+0933: "ळ" DEVANAGARI LETTER LLA
                  U+0934: "ऴ" DEVANAGARI LETTER LLLA -->
             <Key
-                latin:keyLabel="&#x0933;"
-                latin:moreKeys="&#x0934;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0933;"
+                latin:moreKeys="&#x0934;" />
             <!-- U+0936: "श" DEVANAGARI LETTER SHA -->
-            <Key
-                latin:keyLabel="&#x0936;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0936;" />
             <!-- U+0937: "ष" DEVANAGARI LETTER SSA -->
-            <Key
-                latin:keyLabel="&#x0937;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0937;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_vowel_sign_vocalic_r" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_vocalic_r" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignVocalicR" />
             <!-- U+091E: "ञ" DEVANAGARI LETTER NYA -->
-            <Key
-                latin:keyLabel="&#x091E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091E;" />
         </case>
         <default>
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_vowel_sign_candra_o" />
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_candra_o" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignCandraO" />
+            <!-- Because the font rendering system prior to API version 16 can't automatically
+                 render dotted circle for incomplete combining letter of some scripts, different
+                 set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+            <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
             <!-- U+092E: "म" DEVANAGARI LETTER MA
                  U+0950: "ॐ" DEVANAGARI OM -->
             <Key
-                latin:keyLabel="&#x092E;"
-                latin:moreKeys="&#x0950;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x092E;"
+                latin:moreKeys="&#x0950;" />
             <!-- U+0928: "न" DEVANAGARI LETTER NA
                  U+091E: "ञ" DEVANAGARI LETTER NYA
                  U+0919: "ङ" DEVANAGARI LETTER NGA
                  U+0928/U+093C: "ऩ" DEVANAGARI LETTER NA/DEVANAGARI SIGN NUKTA -->
             <Key
-                latin:keyLabel="&#x0928;"
-                latin:moreKeys="&#x091E;,&#x0919;,&#x0928;&#x093C;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0928;"
+                latin:moreKeys="&#x091E;,&#x0919;,&#x0928;&#x093C;" />
             <!-- U+0935: "व" DEVANAGARI LETTER VA -->
-            <Key
-                latin:keyLabel="&#x0935;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0935;" />
             <!-- U+0932: "ल" DEVANAGARI LETTER LA
                  U+090C: "ऌ" DEVANAGARI LETTER VOCALIC L
                  U+0961: "ॡ" DEVANAGARI LETTER VOCALIC LL -->
             <Key
-                latin:keyLabel="&#x0932;"
-                latin:moreKeys="&#x090C;,&#x0961;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0932;"
+                latin:moreKeys="&#x090C;,&#x0961;" />
             <!-- U+0938: "स" DEVANAGARI LETTER SA -->
-            <Key
-                latin:keyLabel="&#x0938;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0938;" />
             <!-- U+092F: "य" DEVANAGARI LETTER YA
                  U+095F: "य़" DEVANAGARI LETTER YYA -->
             <Key
-                latin:keyLabel="&#x092F;"
-                latin:moreKeys="&#x095F;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x092F;"
+                latin:moreKeys="&#x095F;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_nukta" />
-         </default>
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_nukta" />
+            <Key latin:keyStyle="baseKeyDevanagariSignNukta" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_hindi_compact1.xml b/java/res/xml/rowkeys_hindi_compact1.xml
new file mode 100644
index 0000000..06a0141
--- /dev/null
+++ b/java/res/xml/rowkeys_hindi_compact1.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
+    <!-- U+0914: "औ" DEVANAGARI LETTER AU
+         U+0967: "१" DEVANAGARI DIGIT ONE -->
+    <Key
+        latin:keySpec="&#x0914;"
+        latin:keyStyle="moreKeysDevanagariVowelSignAu"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="&#x0967;,1" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
+    <!-- U+0910: "ऐ" DEVANAGARI LETTER AI
+         U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <Key
+        latin:keySpec="&#x0910;"
+        latin:keyStyle="moreKeysDevanagariVowelSignAi"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="&#x0968;,2" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
+    <!-- U+0906: "आ" DEVANAGARI LETTER AA
+         U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <Key
+        latin:keySpec="&#x0906;"
+        latin:keyStyle="moreKeysDevanagariVowelSignAa"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="&#x0969;,3" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
+    <!-- U+0908: "ई" DEVANAGARI LETTER II
+         U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <Key
+        latin:keySpec="&#x0908;"
+        latin:keyStyle="moreKeysDevanagariVowelSignIi"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="&#x096A;,4" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
+    <!-- U+090A: "ऊ" DEVANAGARI LETTER UU
+         U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <Key
+        latin:keySpec="&#x090A;"
+        latin:keyStyle="moreKeysDevanagariVowelSignUu"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="&#x096B;,5" />
+    <!-- U+092C: "ब" DEVANAGARI LETTER BA
+         U+092D: "भ" DEVANAGARI LETTER BHA
+         U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <Key
+        latin:keySpec="&#x092C;"
+        latin:moreKeys="&#x092D;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="&#x096C;,6" />
+    <!-- U+0939: "ह" DEVANAGARI LETTER HA
+         U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <Key
+        latin:keySpec="&#x0939;"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="&#x096D;,7" />
+    <!-- U+0917: "ग" DEVANAGARI LETTER GA
+         U+0918: "घ" DEVANAGARI LETTER GHA
+         U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <Key
+        latin:keySpec="&#x0917;"
+        latin:moreKeys="&#x0918;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="&#x096E;,8" />
+    <!-- U+0926: "द" DEVANAGARI LETTER DA
+         U+0927: "ध" DEVANAGARI LETTER DHA
+         U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <Key
+        latin:keySpec="&#x0926;"
+        latin:moreKeys="&#x0927;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="&#x096F;,9" />
+    <!-- U+091C: "ज" DEVANAGARI LETTER JA
+         U+091D: "झ" DEVANAGARI LETTER JHA
+         U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
+         U+0966: "०" DEVANAGARI DIGIT ZERO -->
+    <Key
+        latin:keySpec="&#x091C;"
+        latin:moreKeys="&#x091D;,&#x091C;&#x094D;&#x091E;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="&#x0966;,0" />
+    <!-- U+0921: "ड" DEVANAGARI LETTER DDA
+         U+0922: "ढ" DEVANAGARI LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0921;"
+        latin:moreKeys="&#x0922;" />
+</merge>
diff --git a/java/res/xml/rowkeys_hindi_compact2.xml b/java/res/xml/rowkeys_hindi_compact2.xml
new file mode 100644
index 0000000..94aaaf2
--- /dev/null
+++ b/java/res/xml/rowkeys_hindi_compact2.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
+    <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
+    <Key
+        latin:keySpec="&#x0913;"
+        latin:keyStyle="moreKeysDevanagariVowelSignO" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
+    <!-- U+090F: "ए" DEVANAGARI LETTER E -->
+    <Key
+        latin:keySpec="&#x090F;"
+        latin:keyStyle="moreKeysDevanagariVowelSignE" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+    <!-- U+0905: "अ" DEVANAGARI LETTER A -->
+    <Key
+        latin:keySpec="&#x0905;"
+        latin:keyStyle="moreKeySpecDevanagariSignVirama" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
+    <!-- U+0907: "इ" DEVANAGARI LETTER I -->
+    <Key
+        latin:keySpec="&#x0907;"
+        latin:keyStyle="moreKeysDevanagariVowelSignI" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
+    <!-- U+0909: "उ" DEVANAGARI LETTER U -->
+    <Key
+        latin:keySpec="&#x0909;"
+        latin:keyStyle="moreKeysDevanagariVowelSignU" />
+    <!-- U+092A: "प" DEVANAGARI LETTER PA
+         U+092B: "फ" DEVANAGARI LETTER PHA -->
+    <Key
+        latin:keySpec="&#x092A;"
+        latin:moreKeys="&#x092B;" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_vocalic_r" />
+    <!-- U+0930: "र" DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0930;"
+        latin:keyStyle="moreKeysDevanagariVowelSignVocalicR" />
+    <!-- U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0915;"
+        latin:moreKeys="&#x0916;" />
+    <!-- U+0924: "त" DEVANAGARI LETTER TA
+         U+0925: "थ" DEVANAGARI LETTER THA
+         U+0924/U+094D/U+0930: "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0924;"
+        latin:moreKeys="&#x0925;,&#x0924;&#x094D;&#x0930;" />
+    <!-- U+091A: "च" DEVANAGARI LETTER CA
+         U+091B: "छ" DEVANAGARI LETTER CHA -->
+    <Key
+        latin:keySpec="&#x091A;"
+        latin:moreKeys="&#x091B;" />
+    <!-- U+091F: "ट" DEVANAGARI LETTER TTA
+         U+0920: "ठ" DEVANAGARI LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x091F;"
+        latin:moreKeys="&#x0920;" />
+</merge>
diff --git a/java/res/xml/rowkeys_hindi_compact3.xml b/java/res/xml/rowkeys_hindi_compact3.xml
new file mode 100644
index 0000000..394eb23
--- /dev/null
+++ b/java/res/xml/rowkeys_hindi_compact3.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_candra_o" />
+    <!-- U+0911: "ऑ" DEVANAGARI LETTER CANDRA O -->
+    <Key
+        latin:keySpec="&#x0911;"
+        latin:keyStyle="moreKeysDevanagariVowelSignCandraO" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+    <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+    <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
+    <!-- U+092E: "म" DEVANAGARI LETTER MA
+         U+0950: "ॐ" DEVANAGARI OM -->
+    <Key
+        latin:keySpec="&#x092E;"
+        latin:moreKeys="&#x0950;" />
+    <!-- U+0928: "न" DEVANAGARI LETTER NA
+         U+0923: "ण" DEVANAGARI LETTER NNA
+         U+091E: "ञ" DEVANAGARI LETTER NYA
+         U+0919: "ङ" DEVANAGARI LETTER NGA -->
+    <Key
+        latin:keySpec="&#x0928;"
+        latin:moreKeys="&#x0923;,&#x091E;,&#x0919;" />
+    <!-- U+0935: "व" DEVANAGARI LETTER VA -->
+    <Key latin:keySpec="&#x0935;" />
+    <!-- U+0932: "ल" DEVANAGARI LETTER LA -->
+    <Key latin:keySpec="&#x0932;" />
+    <!-- U+0938: "स" DEVANAGARI LETTER SA
+         U+0936: "श" DEVANAGARI LETTER SHA
+         U+0937: "ष" DEVANAGARI LETTER SSA
+         U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0938;"
+        latin:moreKeys="&#x0936;,&#x0937;,&#x0936;&#x094D;&#x0930;" />
+    <!-- U+092F: "य" DEVANAGARI LETTER YA -->
+    <Key latin:keySpec="&#x092F;" />
+    <!-- U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0915;&#x094D;&#x0937;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/rowkeys_kannada1.xml b/java/res/xml/rowkeys_kannada1.xml
new file mode 100644
index 0000000..e7aecd8
--- /dev/null
+++ b/java/res/xml/rowkeys_kannada1.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0CCC: "ೌ" KANNADA VOWEL SIGN AU
+         U+0C94: "ಔ" KANNADA LETTER AU
+         U+0CE7: "೧" KANNADA DIGIT ONE -->
+    <Key
+        latin:keySpec="&#x0CCC;"
+        latin:moreKeys="&#x0C94;,&#x0CE7;,%"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1" />
+    <!-- U+0CC8: "ೈ" KANNADA VOWEL SIGN AI
+         U+0C90: "ಐ" KANNADA LETTER AI
+         U+0CE8: "೨" KANNADA DIGIT TWO -->
+    <Key
+        latin:keySpec="&#x0CC8;"
+        latin:moreKeys="&#x0C90;,&#x0CE8;,%"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2" />
+    <!-- U+0CBE: "ಾ" KANNADA VOWEL SIGN AA
+         U+0C86: "ಆ" KANNADA LETTER AA
+         U+0CE9: "೩" KANNADA DIGIT THREE -->
+    <Key
+        latin:keySpec="&#x0CBE;"
+        latin:moreKeys="&#x0C86;,&#x0CE9;,%"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3" />
+    <!-- U+0CC0: "ೀ" KANNADA VOWEL SIGN II
+         U+0C88: "ಈ" KANNADA LETTER II
+         U+0CEA: "೪" KANNADA DIGIT FOUR -->
+    <Key
+        latin:keySpec="&#x0CC0;"
+        latin:moreKeys="&#x0C88;,&#x0CEA;,%"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4" />
+    <!-- U+0CC2: "ೂ" KANNADA VOWEL SIGN UU
+         U+0C8A: "ಊ" KANNADA LETTER UU
+         U+0CEB: "೫" KANNADA DIGIT FIVE -->
+    <Key
+        latin:keySpec="&#x0CC2;"
+        latin:moreKeys="&#x0C8A;,&#x0CEB;,%"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5" />
+    <!-- U+0CAC: "ಬ" KANNADA LETTER BA
+         U+0CAD: "ಭ" KANNADA LETTER BHA
+         U+0CEC: "೬" KANNADA DIGIT SIX -->
+    <Key
+        latin:keySpec="&#x0CAC;"
+        latin:moreKeys="&#x0CAD;,&#x0CEC;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6" />
+    <!-- U+0CB9: "ಹ" KANNADA LETTER HA
+         U+0C99: "ಙ" KANNADA LETTER NGA
+         U+0CED: "೭" KANNADA DIGIT SEVEN -->
+    <Key
+        latin:keySpec="&#x0CB9;"
+        latin:moreKeys="&#x0C99;,&#x0CED;,%"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7" />
+    <!-- U+0C97: "ಗ" KANNADA LETTER GA
+         U+0C98: "ಘ" KANNADA LETTER GHA
+         U+0CEE: "೮" KANNADA DIGIT EIGHT -->
+    <Key
+        latin:keySpec="&#x0C97;"
+        latin:moreKeys="&#x0C98;,&#x0CEE;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8" />
+    <!-- U+0CA6: "ದ" KANNADA LETTER DA
+         U+0CA7: "ಧ" KANNADA LETTER DHA
+         U+0CEF: "೯" KANNADA DIGIT NINE -->
+    <Key
+        latin:keySpec="&#x0CA6;"
+        latin:moreKeys="&#x0CA7;,&#x0CEF;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9" />
+    <!-- U+0C9C: "ಜ" KANNADA LETTER JA
+         U+0C9D: "ಝ" KANNADA LETTER JHA
+         U+0CE6: "೦" KANNADA DIGIT ZERO -->
+    <Key
+        latin:keySpec="&#x0C9C;"
+        latin:moreKeys="&#x0C9D;,&#x0CE6;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+    <!-- U+0CA1: "ಡ" KANNADA LETTER DDA
+         U+0CA2: "ಢ" KANNADA LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0CA1;"
+        latin:moreKeys="&#x0CA2;" />
+</merge>
diff --git a/java/res/xml/rowkeys_kannada2.xml b/java/res/xml/rowkeys_kannada2.xml
new file mode 100644
index 0000000..f3e6c18
--- /dev/null
+++ b/java/res/xml/rowkeys_kannada2.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0CCB: "ೋ" KANNADA VOWEL SIGN OO
+         U+0C93: "ಓ" KANNADA LETTER OO -->
+    <Key
+        latin:keySpec="&#x0CCB;"
+        latin:moreKeys="&#x0C93;" />
+    <!-- U+0CC7: "ೇ" KANNADA VOWEL SIGN EE
+         U+0C8F: "ಏ" KANNADA LETTER EE -->
+    <Key
+        latin:keySpec="&#x0CC7;"
+        latin:moreKeys="&#x0C8F;" />
+    <!-- U+0CCD: "್" KANNADA SIGN VIRAMA
+         U+0C85: "ಅ" KANNADA LETTER A -->
+    <Key
+        latin:keySpec="&#x0CCD;"
+        latin:moreKeys="&#x0C85;" />
+    <!-- U+0CBF: "ಿ" KANNADA VOWEL SIGN I
+         U+0C87: "ಇ" KANNADA LETTER I -->
+    <Key
+        latin:keySpec="&#x0CBF;"
+        latin:moreKeys="&#x0C87;" />
+    <!-- U+0CC1: "ು" KANNADA VOWEL SIGN U
+         U+0C89: "ಉ" KANNADA LETTER U -->
+    <Key
+        latin:keySpec="&#x0CC1;"
+        latin:moreKeys="&#x0C89;" />
+    <!-- U+0CAA: "ಪ" KANNADA LETTER PA
+         U+0CAB: "ಫ" KANNADA LETTER PHA -->
+    <Key
+        latin:keySpec="&#x0CAA;"
+        latin:moreKeys="&#x0CAB;" />
+    <!-- U+0CB0: "ರ" KANNADA LETTER RA
+         U+0CB1: "ಱ" KANNADA LETTER RRA
+         U+0CC3: "ೃ" KANNADA VOWEL SIGN VOCALIC R -->
+    <Key
+        latin:keySpec="&#x0CB0;"
+        latin:moreKeys="&#x0CB1;,&#x0CC3;" />
+    <!-- U+0C95: "ಕ" KANNADA LETTER KA
+         U+0C96: "ಖ" KANNADA LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0C95;"
+        latin:moreKeys="&#x0C96;" />
+    <!-- U+0CA4: "ತ" KANNADA LETTER TA
+         U+0CA5: "ಥ" KANNADA LETTER THA -->
+    <Key
+        latin:keySpec="&#x0CA4;"
+        latin:moreKeys="&#x0CA5;" />
+    <!-- U+0C9A: "ಚ" KANNADA LETTER CA
+         U+0C9B: "ಛ" KANNADA LETTER CHA -->
+    <Key
+        latin:keySpec="&#x0C9A;"
+        latin:moreKeys="&#x0C9B;" />
+    <!-- U+0C9F: "ಟ" KANNADA LETTER TTA
+         U+0CA0: "ಠ" KANNADA LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x0C9F;"
+        latin:moreKeys="&#x0CA0;" />
+</merge>
diff --git a/java/res/xml/rowkeys_kannada3.xml b/java/res/xml/rowkeys_kannada3.xml
new file mode 100644
index 0000000..0f1aecb
--- /dev/null
+++ b/java/res/xml/rowkeys_kannada3.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0CC6: "ೆ" KANNADA VOWEL SIGN E
+         U+0C92: "ಒ" KANNADA LETTER O -->
+    <Key
+        latin:keySpec="&#x0CC6;"
+        latin:moreKeys="&#x0C92;" />
+    <!-- U+0C82: "ಂ" KANNADA SIGN ANUSVARA
+         U+0C8E: "ಎ" KANNADA LETTER E -->
+    <Key
+        latin:keySpec="&#x0C82;"
+        latin:moreKeys="&#x0C8E;" />
+    <!-- U+0CAE: "ಮ" KANNADA LETTER MA
+         U+0CA3: "ಣ" KANNADA LETTER NNA -->
+    <Key
+        latin:keySpec="&#x0CAE;"
+        latin:moreKeys="&#x0CA3;" />
+    <!-- U+0CA8: "ನ" KANNADA LETTER NA -->
+    <Key latin:keySpec="&#x0CA8;" />
+    <!-- U+0CB5: "ವ" KANNADA LETTER VA -->
+    <Key latin:keySpec="&#x0CB5;" />
+    <!-- U+0CB2: "ಲ" KANNADA LETTER LA
+         U+0CB3: "ಳ" KANNADA LETTER LLA -->
+    <Key
+        latin:keySpec="&#x0CB2;"
+        latin:moreKeys="&#x0CB3;" />
+    <!-- U+0CB8: "ಸ" KANNADA LETTER SA
+         U+0CB6: "ಶ" KANNADA LETTER SHA -->
+    <Key
+        latin:keySpec="&#x0CB8;"
+        latin:moreKeys="&#x0CB6;" />
+    <!-- U+0C8B: "ಋ" KANNADA LETTER VOCALIC R
+         U+0CCD/U+0CB0: "್ರ" KANNADA SIGN VIRAMA/KANNADA LETTER RA -->
+    <Key
+        latin:keySpec="&#x0C8B;"
+        latin:moreKeys="&#x0CCD;&#x0CB0;" />
+    <!-- U+0CB7: "ಷ" KANNADA LETTER SSA
+         U+0C95/U+0CCD/U+0CB7: "ಕ್ಷ" KANNADA LETTER RA/KANNADA SIGN VIRAMA/KANNADA LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0CB7;"
+        latin:moreKeys="&#x0C95;&#x0CCD;&#x0CB7;" />
+    <!-- U+0CAF: "ಯ" KANNADA LETTER YA
+         U+0C9C/U+0CCD/U+0C9E: "ಜ್ಞ" KANNADA LETTER JA/KANNADA SIGN VIRAMA/KANNADA LETTER NYA -->
+    <Key
+        latin:keySpec="&#x0CAF;"
+        latin:moreKeys="&#x0C9C;&#x0CCD;&#x0C9E;" />
+</merge>
diff --git a/java/res/xml/rowkeys_khmer1.xml b/java/res/xml/rowkeys_khmer1.xml
index 25da664..79fd231 100644
--- a/java/res/xml/rowkeys_khmer1.xml
+++ b/java/res/xml/rowkeys_khmer1.xml
@@ -18,177 +18,159 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+200D: ZERO WIDTH JOINER -->
             <Key
-                latin:keyLabel="!"
-                latin:moreKeys="!icon/zwj_key|&#x200D;" />
+                latin:keySpec="!"
+                latin:moreKeys="!icon/zwj_key|&#x200D;"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+17D7: "ៗ" KHMER SIGN LEK TOO
                  U+200C: ZERO WIDTH NON-JOINER -->
             <Key
-                latin:keyLabel="&#x17D7;"
-                latin:moreKeys="!icon/zwnj_key|&#x200C;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x17D7;"
+                latin:moreKeys="!icon/zwnj_key|&#x200C;" />
             <!-- U+17D1: "៑" KHMER SIGN VIRIAM -->
             <Key
-                latin:keyLabel="&quot;"
+                latin:keySpec="&quot;"
                 latin:keyHintLabel="&#x17D1;"
-                latin:moreKeys="&#x17D1;" />
+                latin:moreKeys="&#x17D1;"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
                  U+20AC: "€" EURO SIGN -->
             <Key
-                latin:keyLabel="&#x17DB;"
+                latin:keySpec="&#x17DB;"
                 latin:keyHintLabel="$"
-                latin:moreKeys="$,&#x20AC;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="$,&#x20AC;" />
             <!-- U+17D6: "៖" KHMER SIGN CAMNUC PII KUUH -->
             <Key
-                latin:keyLabel="%"
+                latin:keySpec="%"
                 latin:keyHintLabel="&#x17D6;"
-                latin:moreKeys="&#x17D6;" />
+                latin:moreKeys="&#x17D6;"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+17CD: "៍" KHMER SIGN TOANDAKHIAT
                  U+17D9: "៙" KHMER SIGN PHNAEK MUAN -->
             <Key
-                latin:keyLabel="&#x17CD;"
+                latin:keySpec="&#x17CD;"
                 latin:keyHintLabel="&#x17D9;"
-                latin:moreKeys="&#x17D9;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17D9;" />
             <!-- U+17D0: "័" KHMER SIGN SAMYOK SANNYA
                  U+17DA: "៚" KHMER SIGN KOOMUUT -->
             <Key
-                latin:keyLabel="&#x17D0;"
+                latin:keySpec="&#x17D0;"
                 latin:keyHintLabel="&#x17DA;"
-                latin:moreKeys="&#x17DA;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keyHintLabelVerticalAdjustment="-30%"
+                latin:moreKeys="&#x17DA;" />
             <!-- U+17CF: "៏" KHMER SIGN AHSDA -->
             <Key
-                latin:keyLabel="&#x17CF;"
+                latin:keySpec="&#x17CF;"
                 latin:keyHintLabel="*"
-                latin:moreKeys="*"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="*" />
             <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="("
+                latin:keySpec="("
                 latin:keyHintLabel="{"
-                latin:moreKeys="{,&#x00AB;" />
+                latin:moreKeys="{,&#x00AB;"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
             <Key
-                latin:keyLabel=")"
+                latin:keySpec=")"
                 latin:keyHintLabel="}"
-                latin:moreKeys="},&#x00BB;" />
+                latin:moreKeys="},&#x00BB;"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+17CC: "៌" KHMER SIGN ROBAT
                  U+00D7: "×" MULTIPLICATION SIGN -->
             <Key
-                latin:keyLabel="&#x17CC;"
+                latin:keySpec="&#x17CC;"
                 latin:keyHintLabel="&#x00D7;"
-                latin:moreKeys="&#x00D7;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x00D7;" />
             <!-- U+17CE: "៎" KHMER SIGN KAKABAT -->
-            <Key
-                latin:keyLabel="&#x17CE;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17CE;" />
         </case>
         <default>
             <!-- U+17E1: "១" KHMER DIGIT ONE
                  U+17F1: "៱" KHMER SYMBOL LEK ATTAK MUOY -->
             <Key
-                latin:keyLabel="&#x17E1;"
+                latin:keySpec="&#x17E1;"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1"
-                latin:moreKeys="&#x17F1;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F1;" />
             <!-- U+17E2: "២" KHMER DIGIT TWO
                  U+17F2: "៲" KHMER SYMBOL LEK ATTAK PII -->
             <Key
-                latin:keyLabel="&#x17E2;"
+                latin:keySpec="&#x17E2;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2"
-                latin:moreKeys="&#x17F2;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F2;" />
             <!-- U+17E3: "៣" KHMER DIGIT THREE
                  U+17F3: "៳" KHMER SYMBOL LEK ATTAK BEI -->
             <Key
-                latin:keyLabel="&#x17E3;"
+                latin:keySpec="&#x17E3;"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3"
-                latin:moreKeys="&#x17F3;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F3;" />
             <!-- U+17E4: "៤" KHMER DIGIT FOUR
                  U+17F4: "៴" KHMER SYMBOL LEK ATTAK BUON -->
             <Key
-                latin:keyLabel="&#x17E4;"
+                latin:keySpec="&#x17E4;"
                 latin:keyHintLabel="4"
                 latin:additionalMoreKeys="4"
-                latin:moreKeys="&#x17F4;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F4;" />
             <!-- U+17E5: "៥" KHMER DIGIT FIVE
                  U+17F5: "៵" KHMER SYMBOL LEK ATTAK PRAM -->
             <Key
-                latin:keyLabel="&#x17E5;"
+                latin:keySpec="&#x17E5;"
                 latin:keyHintLabel="5"
                 latin:additionalMoreKeys="5"
-                latin:moreKeys="&#x17F5;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F5;" />
             <!-- U+17E6: "៦" KHMER DIGIT SIX
                  U+17F6: "៶" KHMER SYMBOL LEK ATTAK PRAM-MUOY -->
             <Key
-                latin:keyLabel="&#x17E6;"
+                latin:keySpec="&#x17E6;"
                 latin:keyHintLabel="6"
                 latin:additionalMoreKeys="6"
-                latin:moreKeys="&#x17F6;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F6;" />
             <!-- U+17E7: "៧" KHMER DIGIT SEVEN
                  U+17F7: "៷" KHMER SYMBOL LEK ATTAK PRAM-PII -->
             <Key
-                latin:keyLabel="&#x17E7;"
+                latin:keySpec="&#x17E7;"
                 latin:keyHintLabel="7"
                 latin:additionalMoreKeys="7"
-                latin:moreKeys="&#x17F7;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F7;" />
             <!-- U+17E8: "៨" KHMER DIGIT EIGHT
                  U+17F8: "៸" KHMER SYMBOL LEK ATTAK PRAM-BEI -->
             <Key
-                latin:keyLabel="&#x17E8;"
+                latin:keySpec="&#x17E8;"
                 latin:keyHintLabel="8"
                 latin:additionalMoreKeys="8"
-                latin:moreKeys="&#x17F8;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F8;" />
             <!-- U+17E9: "៩" KHMER DIGIT NINE
                  U+17F9: "៹" KHMER SYMBOL LEK ATTAK PRAM-BUON -->
             <Key
-                latin:keyLabel="&#x17E9;"
+                latin:keySpec="&#x17E9;"
                 latin:keyHintLabel="9"
                 latin:additionalMoreKeys="9"
-                latin:moreKeys="&#x17F9;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F9;" />
             <!-- U+17E0: "០" KHMER DIGIT ZERO
                  U+17F0: "៰" KHMER SYMBOL LEK ATTAK SON -->
             <Key
-                latin:keyLabel="&#x17E0;"
+                latin:keySpec="&#x17E0;"
                 latin:keyHintLabel="0"
                 latin:additionalMoreKeys="0"
-                latin:moreKeys="&#x17F0;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17F0;" />
             <!-- U+17A5: "ឥ" KHMER INDEPENDENT VOWEL QI
                  U+17A6: "ឦ" KHMER INDEPENDENT VOWEL QII -->
             <Key
-                latin:keyLabel="&#x17A5;"
+                latin:keySpec="&#x17A5;"
                 latin:keyHintLabel="&#x17A6;"
-                latin:moreKeys=",&#x17A6;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys=",&#x17A6;" />
             <!-- U+17B2: "ឲ" KHMER INDEPENDENT VOWEL QOO TYPE TWO
                  U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE -->
             <Key
-                latin:keyLabel="&#x17B2;"
+                latin:keySpec="&#x17B2;"
                 latin:keyHintLabel="&#x17B1;"
-                latin:moreKeys="&#x17B1;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17B1;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_khmer2.xml b/java/res/xml/rowkeys_khmer2.xml
index cba2d3b..04ca1e0 100644
--- a/java/res/xml/rowkeys_khmer2.xml
+++ b/java/res/xml/rowkeys_khmer2.xml
@@ -18,116 +18,70 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+1788: "ឈ" KHMER LETTER CHO
                  U+17DC: "ៜ" KHMER SIGN AVAKRAHASANYA -->
             <Key
-                latin:keyLabel="&#x1788;"
+                latin:keySpec="&#x1788;"
                 latin:keyHintLabel="&#x17DC;"
-                latin:moreKeys="&#x17DC;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17DC;" />
             <!-- U+17BA: "ឺ" KHMER VOWEL SIGN YY
                  U+17DD: "៝" KHMER SIGN ATTHACAN -->
             <Key
-                latin:keyLabel="&#x17BA;"
+                latin:keySpec="&#x17BA;"
                 latin:keyHintLabel="&#x17DD;"
-                latin:moreKeys="&#x17DD;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keyHintLabelVerticalAdjustment="40%"
+                latin:moreKeys="&#x17DD;" />
             <!-- U+17C2: "ែ" KHMER VOWEL SIGN AE -->
-            <Key
-                latin:keyLabel="&#x17C2;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C2;" />
             <!-- U+17AC: "ឬ" KHMER INDEPENDENT VOWEL RYY
                  U+17AB: "ឫ" KHMER INDEPENDENT VOWEL RY -->
             <Key
-                latin:keyLabel="&#x17AC;"
+                latin:keySpec="&#x17AC;"
                 latin:keyHintLabel="&#x17AB;"
-                latin:moreKeys="&#x17AB;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17AB;" />
             <!-- U+1791: "ទ" KHMER LETTER TO -->
-            <Key
-                latin:keyLabel="&#x1791;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1791;" />
             <!-- U+17BD: "ួ" KHMER VOWEL SIGN UA -->
-            <Key
-                latin:keyLabel="&#x17BD;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17BD;" />
             <!-- U+17BC: "ូ" KHMER VOWEL SIGN UU -->
-            <Key
-                latin:keyLabel="&#x17BC;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17BC;" />
             <!-- U+17B8: "ី" KHMER VOWEL SIGN II -->
-            <Key
-                latin:keyLabel="&#x17B8;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17B8;" />
             <!-- U+17C5: "ៅ" KHMER VOWEL SIGN AU -->
-            <Key
-                latin:keyLabel="&#x17C5;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C5;" />
             <!-- U+1797: "ភ" KHMER LETTER PHO -->
-            <Key
-                latin:keyLabel="&#x1797;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1797;" />
             <!-- U+17BF: "ឿ" KHMER VOWEL SIGN YA -->
-            <Key
-                latin:keyLabel="&#x17BF;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17BF;" />
             <!-- U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI -->
-            <Key
-                latin:keyLabel="&#x17B0;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17B0;" />
         </case>
         <default>
             <!-- U+1786: "ឆ" KHMER LETTER CHA -->
-            <Key
-                latin:keyLabel="&#x1786;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1786;" />
             <!-- U+17B9: "ឹ" KHMER VOWEL SIGN Y -->
-            <Key
-                latin:keyLabel="&#x17B9;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17B9;" />
             <!-- U+17C1: "េ" KHMER VOWEL SIGN E -->
-            <Key
-                latin:keyLabel="&#x17C1;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C1;" />
             <!-- U+179A: "រ" KHMER LETTER RO -->
-            <Key
-                latin:keyLabel="&#x179A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x179A;" />
             <!-- U+178F: "ត" KHMER LETTER TA -->
-            <Key
-                latin:keyLabel="&#x178F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x178F;" />
             <!-- U+1799: "យ" KHMER LETTER YO -->
-            <Key
-                latin:keyLabel="&#x1799;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1799;" />
             <!-- U+17BB: "ុ" KHMER VOWEL SIGN U -->
-            <Key
-                latin:keyLabel="&#x17BB;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17BB;" />
             <!-- U+17B7: "ិ" KHMER VOWEL SIGN I -->
-            <Key
-                latin:keyLabel="&#x17B7;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17B7;" />
             <!-- U+17C4: "ោ" KHMER VOWEL SIGN OO -->
-            <Key
-                latin:keyLabel="&#x17C4;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C4;" />
             <!-- U+1795: "ផ" KHMER LETTER PHA -->
-            <Key
-                latin:keyLabel="&#x1795;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1795;" />
             <!-- U+17C0: "ៀ" KHMER VOWEL SIGN IE -->
-            <Key
-                latin:keyLabel="&#x17C0;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C0;" />
             <!-- U+17AA: "ឪ" KHMER INDEPENDENT VOWEL QUUV
                  U+17A7: "ឧ" KHMER INDEPENDENT VOWEL QU
                  U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
@@ -135,10 +89,9 @@
                  U+17A9: "ឩ" KHMER INDEPENDENT VOWEL QUU
                  U+17A8: "ឨ" KHMER INDEPENDENT VOWEL QUK -->
             <Key
-                latin:keyLabel="&#x17AA;"
+                latin:keySpec="&#x17AA;"
                 latin:keyHintLabel="&#x17A7;"
-                latin:moreKeys="&#x17A7;,&#x17B1;,&#x17B3;,&#x17A9;,&#x17A8;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17A7;,&#x17B1;,&#x17B3;,&#x17A9;,&#x17A8;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_khmer3.xml b/java/res/xml/rowkeys_khmer3.xml
index ff6c9ca..c2db364 100644
--- a/java/res/xml/rowkeys_khmer3.xml
+++ b/java/res/xml/rowkeys_khmer3.xml
@@ -18,121 +18,76 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+17B6/U+17C6: "ាំ" KHMER VOWEL SIGN AA/KHMER SIGN NIKAHIT -->
             <Key
-                latin:keyLabel="&#x17B6;&#x17C6;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x17B6;&#x17C6;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+17C3: "ៃ" KHMER VOWEL SIGN AI -->
-            <Key
-                latin:keyLabel="&#x17C3;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C3;" />
             <!-- U+178C: "ឌ" KHMER LETTER DO -->
-            <Key
-                latin:keyLabel="&#x178C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x178C;" />
             <!-- U+1792: "ធ" KHMER LETTER THO -->
-            <Key
-                latin:keyLabel="&#x1792;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1792;" />
             <!-- U+17A2: "អ" KHMER LETTER QA -->
-            <Key
-                latin:keyLabel="&#x17A2;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17A2;" />
             <!-- U+17C7: "ះ" KHMER SIGN REAHMUK
-                 U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU;-->
+                 U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU -->
             <Key
-                latin:keyLabel="&#x17C7;"
+                latin:keySpec="&#x17C7;"
                 latin:keyHintLabel="&#x17C8;"
-                latin:moreKeys="&#x17C8;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17C8;" />
             <!-- U+1789: "ញ" KHMER LETTER NYO -->
-            <Key
-                latin:keyLabel="&#x1789;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1789;" />
             <!-- U+1782: "គ" KHMER LETTER KO
                  U+179D: "ឝ" KHMER LETTER SHA -->
             <Key
-                latin:keyLabel="&#x1782;"
+                latin:keySpec="&#x1782;"
                 latin:keyHintLabel="&#x179D;"
-                latin:moreKeys="&#x179D;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x179D;" />
             <!-- U+17A1: "ឡ" KHMER LETTER LA -->
-            <Key
-                latin:keyLabel="&#x17A1;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17A1;" />
             <!-- U+17C4/U+17C7: "ោះ" KHMER VOWEL SIGN OO/KHMER SIGN REAHMUK -->
             <Key
-                latin:keyLabel="&#x17C4;&#x17C7;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x17C4;&#x17C7;"
+                latin:keyLabelFlags="followKeyLetterRatio|autoScale" />
             <!-- U+17C9: "៉" KHMER SIGN MUUSIKATOAN -->
-            <Key
-                latin:keyLabel="&#x17C9;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C9;" />
             <!-- U+17AF: "ឯ" KHMER INDEPENDENT VOWEL QE -->
-            <Key
-                latin:keyLabel="&#x17AF;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17AF;" />
         </case>
         <default>
             <!-- U+17B6: "ា" KHMER VOWEL SIGN AA -->
-            <Key
-                latin:keyLabel="&#x17B6;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17B6;" />
             <!-- U+179F: "ស" KHMER LETTER SA -->
-            <Key
-                latin:keyLabel="&#x179F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x179F;" />
             <!-- U+178A: "ដ" KHMER LETTER DA -->
-            <Key
-                latin:keyLabel="&#x178A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x178A;" />
             <!-- U+1790: "ថ" KHMER LETTER THA -->
-            <Key
-                latin:keyLabel="&#x1790;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1790;" />
             <!-- U+1784: "ង" KHMER LETTER NGO -->
-            <Key
-                latin:keyLabel="&#x1784;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1784;" />
             <!-- U+17A0: "ហ" KHMER LETTER HA -->
-            <Key
-                latin:keyLabel="&#x17A0;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17A0;" />
             <!-- U+17D2: "្" KHMER SIGN COENG -->
-            <Key
-                latin:keyLabel="&#x17D2;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17D2;" />
             <!-- U+1780: "ក" KHMER LETTER KA -->
-            <Key
-                latin:keyLabel="&#x1780;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1780;" />
             <!-- U+179B: "ល" KHMER LETTER LO -->
-            <Key
-                latin:keyLabel="&#x179B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x179B;" />
             <!-- U+17BE: "ើ" KHMER VOWEL SIGN OE -->
-            <Key
-                latin:keyLabel="&#x17BE;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17BE;" />
             <!-- U+17CB: "់" KHMER SIGN BANTOC -->
-            <Key
-                latin:keyLabel="&#x17CB;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17CB;" />
             <!-- U+17AE: "ឮ" KHMER INDEPENDENT VOWEL LYY
                  U+17AD: "ឭ" KHMER INDEPENDENT VOWEL LY
                  U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI -->
             <Key
-                latin:keyLabel="&#x17AE;"
+                latin:keySpec="&#x17AE;"
                 latin:keyHintLabel="&#x17AD;"
-                latin:moreKeys="&#x17AD;,&#x17B0;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x17AD;,&#x17B0;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_khmer4.xml b/java/res/xml/rowkeys_khmer4.xml
index fe6c591..70bdcf1 100644
--- a/java/res/xml/rowkeys_khmer4.xml
+++ b/java/res/xml/rowkeys_khmer4.xml
@@ -18,96 +18,62 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+178D: "ឍ" KHMER LETTER TTHO -->
-            <Key
-                latin:keyLabel="&#x178D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x178D;" />
             <!-- U+1783: "ឃ" KHMER LETTER KHO -->
-            <Key
-                latin:keyLabel="&#x1783;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1783;" />
             <!-- U+1787: "ជ" KHMER LETTER CO -->
-            <Key
-                latin:keyLabel="&#x1787;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1787;" />
             <!-- U+17C1/U+17C7: "េះ" KHMER VOWEL SIGN E/KHMER SIGN REAHMUK -->
             <Key
-                latin:keyLabel="&#x17C1;&#x17C7;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x17C1;&#x17C7;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+1796: "ព" KHMER LETTER PO
                  U+179E: "ឞ" KHMER LETTER SSO -->
             <Key
-                latin:keyLabel="&#x1796;"
+                latin:keySpec="&#x1796;"
                 latin:keyHintLabel="&#x179E;"
-                latin:moreKeys="&#x179E;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x179E;" />
             <!-- U+178E: "ណ" KHMER LETTER NNO -->
-            <Key
-                latin:keyLabel="&#x178E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x178E;" />
             <!-- U+17C6: "ំ" KHMER SIGN NIKAHIT -->
-            <Key
-                latin:keyLabel="&#x17C6;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17C6;" />
             <!-- U+17BB/U+17C7: "ុះ" KHMER VOWEL SIGN U/KHMER SIGN REAHMUK -->
             <Key
-                latin:keyLabel="&#x17BB;&#x17C7;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x17BB;&#x17C7;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+17D5: "៕" KHMER SIGN BARIYOOSAN -->
+            <Key latin:keySpec="&#x17D5;" />
             <Key
-                latin:keyLabel="&#x17D5;"
-                latin:keyLabelFlags="fontNormal" />
-            <Key
-                latin:keyLabel="\?" />
+                latin:keySpec="\?"
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- U+178B: "ឋ" KHMER LETTER TTHA -->
-            <Key
-                latin:keyLabel="&#x178B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x178B;" />
             <!-- U+1781: "ខ" KHMER LETTER KHA -->
-            <Key
-                latin:keyLabel="&#x1781;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1781;" />
             <!-- U+1785: "ច" KHMER LETTER CA -->
-            <Key
-                latin:keyLabel="&#x1785;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1785;" />
             <!-- U+179C: "វ" KHMER LETTER VO -->
-            <Key
-                latin:keyLabel="&#x179C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x179C;" />
             <!-- U+1794: "ប" KHMER LETTER BA -->
-            <Key
-                latin:keyLabel="&#x1794;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1794;" />
             <!-- U+1793: "ន" KHMER LETTER NO -->
-            <Key
-                latin:keyLabel="&#x1793;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1793;" />
             <!-- U+1798: "ម" KHMER LETTER MO -->
-            <Key
-                latin:keyLabel="&#x1798;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x1798;" />
             <!-- U+17BB/U+17C6: "ុំ" KHMER VOWEL SIGN U/KHMER SIGN NIKAHIT -->
             <Key
-                latin:keyLabel="&#x17BB;&#x17C6;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x17BB;&#x17C6;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+17D4: "។" KHMER SIGN KHAN -->
-            <Key
-                latin:keyLabel="&#x17D4;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17D4;" />
             <!-- U+17CA: "៊" KHMER SIGN TRIISAP -->
-            <Key
-                latin:keyLabel="&#x17CA;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x17CA;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_lao1.xml b/java/res/xml/rowkeys_lao1.xml
index fa1ad97..f88d5fd 100644
--- a/java/res/xml/rowkeys_lao1.xml
+++ b/java/res/xml/rowkeys_lao1.xml
@@ -18,147 +18,106 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0ED1: "໑" LAO DIGIT ONE -->
-            <Key
-                latin:keyLabel="&#x0ED1;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED1;" />
             <!-- U+0ED2: "໒" LAO DIGIT TWO -->
-            <Key
-                latin:keyLabel="&#x0ED2;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED2;" />
             <!-- U+0ED3: "໓" LAO DIGIT THREE -->
-            <Key
-                latin:keyLabel="&#x0ED3;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED3;" />
             <!-- U+0ED4: "໔" LAO DIGIT FOUR -->
-            <Key
-                latin:keyLabel="&#x0ED4;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED4;" />
             <!-- U+0ECC: "໌" LAO CANCELLATION MARK -->
-            <Key
-                latin:keyLabel="&#x0ECC;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ECC;" />
             <!-- U+0EBC: "ຼ" LAO SEMIVOWEL SIGN LO -->
-            <Key
-                latin:keyLabel="&#x0EBC;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EBC;" />
             <!-- U+0ED5: "໕" LAO DIGIT FIVE -->
-            <Key
-                latin:keyLabel="&#x0ED5;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED5;" />
             <!-- U+0ED6: "໖" LAO DIGIT SIX -->
-            <Key
-                latin:keyLabel="&#x0ED6;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED6;" />
             <!-- U+0ED7: "໗" LAO DIGIT SEVEN -->
-            <Key
-                latin:keyLabel="&#x0ED7;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED7;" />
             <!-- U+0ED8: "໘" LAO DIGIT EIGHT -->
-            <Key
-                latin:keyLabel="&#x0ED8;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED8;" />
             <!-- U+0ED9: "໙" LAO DIGIT NINE -->
-            <Key
-                latin:keyLabel="&#x0ED9;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED9;" />
             <!-- U+0ECD/U+0EC8: "ໍ່" LAO NIGGAHITA/LAO TONE MAI EK -->
             <Key
-                latin:keyLabel="&#x0ECD;&#x0EC8;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0ECD;&#x0EC8;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
         </case>
         <default>
             <!-- U+0EA2: "ຢ" LAO LETTER YO
                  U+0ED1: "໑" LAO DIGIT ONE -->
             <Key
-                latin:keyLabel="&#x0EA2;"
+                latin:keySpec="&#x0EA2;"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1"
-                latin:moreKeys="&#x0ED1;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED1;" />
             <!-- U+0E9F: "ຟ" LAO LETTER FO SUNG
                  U+0ED2: "໒" LAO DIGIT TWO -->
             <Key
-                latin:keyLabel="&#x0E9F;"
+                latin:keySpec="&#x0E9F;"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2"
-                latin:moreKeys="&#x0ED2;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED2;" />
             <!-- U+0EC2: "ໂ" LAO VOWEL SIGN O
                  U+0ED3: "໓" LAO DIGIT THREE -->
             <Key
-                latin:keyLabel="&#x0EC2;"
+                latin:keySpec="&#x0EC2;"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3"
-                latin:moreKeys="&#x0ED3;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED3;" />
             <!-- U+0E96: "ຖ" LAO LETTER THO SUNG
                  U+0ED4: "໔" LAO DIGIT FOUR -->
             <Key
-                latin:keyLabel="&#x0E96;"
+                latin:keySpec="&#x0E96;"
                 latin:keyHintLabel="4"
                 latin:additionalMoreKeys="4"
-                latin:moreKeys="&#x0ED4;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED4;" />
             <!-- U+0EB8: "ຸ" LAO VOWEL SIGN U -->
-            <Key
-                latin:keyLabel="&#x0EB8;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB8;" />
             <!-- U+0EB9: "ູ" LAO VOWEL SIGN UU -->
-            <Key
-                latin:keyLabel="&#x0EB9;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB9;" />
             <!-- U+0E84: "ຄ" LAO LETTER KHO TAM
                  U+0ED5: "໕" LAO DIGIT FIVE -->
             <Key
-                latin:keyLabel="&#x0E84;"
+                latin:keySpec="&#x0E84;"
                 latin:keyHintLabel="5"
                 latin:additionalMoreKeys="5"
-                latin:moreKeys="&#x0ED5;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED5;" />
             <!-- U+0E95: "ຕ" LAO LETTER TO
                  U+0ED6: "໖" LAO DIGIT SIX -->
             <Key
-                latin:keyLabel="&#x0E95;"
+                latin:keySpec="&#x0E95;"
                 latin:keyHintLabel="6"
                 latin:additionalMoreKeys="6"
-                latin:moreKeys="&#x0ED6;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED6;" />
             <!-- U+0E88: "ຈ" LAO LETTER CO
                  U+0ED7: "໗" LAO DIGIT SEVEN -->
             <Key
-                latin:keyLabel="&#x0E88;"
+                latin:keySpec="&#x0E88;"
                 latin:keyHintLabel="7"
                 latin:additionalMoreKeys="7"
-                latin:moreKeys="&#x0ED7;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED7;" />
             <!-- U+0E82: "ຂ" LAO LETTER KHO SUNG
                  U+0ED8: "໘" LAO DIGIT EIGHT -->
             <Key
-                latin:keyLabel="&#x0E82;"
+                latin:keySpec="&#x0E82;"
                 latin:keyHintLabel="8"
                 latin:additionalMoreKeys="8"
-                latin:moreKeys="&#x0ED8;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED8;" />
             <!-- U+0E8A: "ຊ" LAO LETTER SO TAM
                  U+0ED9: "໙" LAO DIGIT NINE -->
             <Key
-                latin:keyLabel="&#x0E8A;"
+                latin:keySpec="&#x0E8A;"
                 latin:keyHintLabel="9"
                 latin:additionalMoreKeys="9"
-                latin:moreKeys="&#x0ED9;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED9;" />
             <!-- U+0ECD: "ໍ" LAO NIGGAHITA -->
-            <Key
-                latin:keyLabel="&#x0ECD;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ECD;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_lao2.xml b/java/res/xml/rowkeys_lao2.xml
index fca58ac..46b6395 100644
--- a/java/res/xml/rowkeys_lao2.xml
+++ b/java/res/xml/rowkeys_lao2.xml
@@ -18,110 +18,78 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0EBB/U+0EC9: "" LAO VOWEL SIGN MAI KON/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EBB;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EBB;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0ED0: "໐" LAO DIGIT ZERO -->
-            <Key
-                latin:keyLabel="&#x0ED0;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ED0;" />
             <!-- U+0EB3/U+0EC9: "ຳ້" LAO VOWEL SIGN AM/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EB3;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EB3;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <Key
-                latin:keyLabel="_" />
+                latin:keySpec="_"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="+" />
+                latin:keySpec="+"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0EB4/U+0EC9: "ິ້" LAO VOWEL SIGN I/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EB4;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EB4;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0EB5/U+0EC9: "ີ້" LAO VOWEL SIGN II/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EB5;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EB5;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0EA3: "ຣ" LAO LETTER LO LING -->
-            <Key
-                latin:keyLabel="&#x0EA3;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EA3;" />
             <!-- U+0EDC: "ໜ" LAO HO NO -->
-            <Key
-                latin:keyLabel="&#x0EDC;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EDC;" />
             <!-- U+0EBD: "ຽ" LAO SEMIVOWEL SIGN NYO -->
-            <Key
-                latin:keyLabel="&#x0EBD;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EBD;" />
             <!-- U+0EAB/U+0EBC: "" LAO LETTER HO SUNG/LAO SEMIVOWEL SIGN LO -->
             <Key
-                latin:keyLabel="&#x0EAB;&#x0EBC;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EAB;&#x0EBC;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+201D: "”" RIGHT DOUBLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="&#x201D;" />
+                latin:keySpec="&#x201D;"
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- U+0EBB: "ົ" LAO VOWEL SIGN MAI KON -->
-            <Key
-                latin:keyLabel="&#x0EBB;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EBB;" />
             <!-- U+0EC4: "ໄ" LAO VOWEL SIGN AI
                  U+0ED0: "໐" LAO DIGIT ZERO -->
             <Key
-                latin:keyLabel="&#x0EC4;"
+                latin:keySpec="&#x0EC4;"
                 latin:keyHintLabel="0"
                 latin:additionalMoreKeys="0"
-                latin:moreKeys="&#x0ED0;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0ED0;" />
             <!-- U+0EB3: "ຳ" LAO VOWEL SIGN AM -->
-            <Key
-                latin:keyLabel="&#x0EB3;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB3;" />
             <!-- U+0E9E: "ພ" LAO LETTER PHO TAM -->
-            <Key
-                latin:keyLabel="&#x0E9E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E9E;" />
             <!-- U+0EB0: "ະ" LAO VOWEL SIGN A -->
-            <Key
-                latin:keyLabel="&#x0EB0;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB0;" />
             <!-- U+0EB4: "ິ" LAO VOWEL SIGN I -->
-            <Key
-                latin:keyLabel="&#x0EB4;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB4;" />
             <!-- U+0EB5: "ີ" LAO VOWEL SIGN II -->
-            <Key
-                latin:keyLabel="&#x0EB5;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB5;" />
             <!-- U+0EAE: "ຮ" LAO LETTER HO TAM -->
-            <Key
-                latin:keyLabel="&#x0EAE;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EAE;" />
             <!-- U+0E99: "ນ" LAO LETTER NO -->
-            <Key
-                latin:keyLabel="&#x0E99;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E99;" />
             <!-- U+0E8D: "ຍ" LAO LETTER NYO -->
-            <Key
-                latin:keyLabel="&#x0E8D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E8D;" />
             <!-- U+0E9A: "ບ" LAO LETTER BO -->
-            <Key
-                latin:keyLabel="&#x0E9A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E9A;" />
             <!-- U+0EA5: "ລ" LAO LETTER LO LOOT -->
-            <Key
-                latin:keyLabel="&#x0EA5;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EA5;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_lao3.xml b/java/res/xml/rowkeys_lao3.xml
index 2a6c2d1..ab3e251 100644
--- a/java/res/xml/rowkeys_lao3.xml
+++ b/java/res/xml/rowkeys_lao3.xml
@@ -18,93 +18,73 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0EB1/U+0EC9: "ັ້" LAO VOWEL SIGN MAI KAN/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EB1;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EB1;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <Key
-                latin:keyLabel=";" />
+                latin:keySpec=";"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="." />
+                latin:keySpec="."
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="," />
+                latin:keySpec=","
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel=":" />
+                latin:keySpec=":"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0ECA: "໊" LAO TONE MAI TI -->
-            <Key
-                latin:keyLabel="&#x0ECA;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0ECA;" />
             <!-- U+0ECB: "໋" LAO TONE MAI CATAWA -->
+            <Key latin:keySpec="&#x0ECB;" />
             <Key
-                latin:keyLabel="&#x0ECB;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="!"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="!" />
+                latin:keySpec="\?"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="\?" />
+                latin:keySpec="%"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="%" />
-            <Key
-                latin:keyLabel="=" />
+                latin:keySpec="="
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+201C: "“" LEFT DOUBLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="&#x201C;" />
+                latin:keySpec="&#x201C;"
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- U+0EB1: "ັ" LAO VOWEL SIGN MAI KAN -->
-            <Key
-                latin:keyLabel="&#x0EB1;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB1;" />
             <!-- U+0EAB: "ຫ" LAO LETTER HO SUNG -->
-            <Key
-                latin:keyLabel="&#x0EAB;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EAB;" />
             <!-- U+0E81: "ກ" LAO LETTER KO -->
-            <Key
-                latin:keyLabel="&#x0E81;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E81;" />
             <!-- U+0E94: "ດ" LAO LETTER DO -->
-            <Key
-                latin:keyLabel="&#x0E94;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E94;" />
             <!-- U+0EC0: "ເ" LAO VOWEL SIGN E -->
-            <Key
-                latin:keyLabel="&#x0EC0;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EC0;" />
             <!-- U+0EC9: "້" LAO TONE MAI THO -->
-            <Key
-                latin:keyLabel="&#x0EC9;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EC9;" />
             <!-- U+0EC8: "່" LAO TONE MAI EK -->
-            <Key
-                latin:keyLabel="&#x0EC8;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EC8;" />
             <!-- U+0EB2: "າ" LAO VOWEL SIGN AA -->
-            <Key
-                latin:keyLabel="&#x0EB2;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB2;" />
             <!-- U+0EAA: "ສ" LAO LETTER SO SUNG -->
-            <Key
-                latin:keyLabel="&#x0EAA;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EAA;" />
             <!-- U+0EA7: "ວ" LAO LETTER WO -->
-            <Key
-                latin:keyLabel="&#x0EA7;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EA7;" />
             <!-- U+0E87: "ງ" LAO LETTER NGO -->
-            <Key
-                latin:keyLabel="&#x0E87;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E87;" />
             <!-- U+201C: "“" LEFT DOUBLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="&#x201C;" />
+                latin:keySpec="&#x201C;"
+                latin:keyLabelFlags="fontDefault" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_lao4.xml b/java/res/xml/rowkeys_lao4.xml
index fae9cc9..5beb1cb 100644
--- a/java/res/xml/rowkeys_lao4.xml
+++ b/java/res/xml/rowkeys_lao4.xml
@@ -18,86 +18,60 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+20AD: "₭" KIP SIGN -->
             <Key
-                latin:keyLabel="&#x20AD;" />
+                latin:keySpec="&#x20AD;"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="(" />
-            <!-- U+0EAF: "ຯ" LAO ELLIPSIS -->
+                latin:keySpec="("
+                latin:keyLabelFlags="fontDefault" />
+            <Key latin:keySpec="&#x0EAF;" />
             <Key
-                latin:keyLabel="&#x0EAF;"
-                latin:keyLabelFlags="fontNormal" />
-            <Key
-                latin:keyLabel="\@" />
+                latin:keySpec="\@"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0EB6/U+0EC9: "ຶ້" LAO VOWEL SIGN Y/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EB6;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EB6;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0EB7/U+0EC9: "ື້" LAO VOWEL SIGN YY/LAO TONE MAI THO -->
             <Key
-                latin:keyLabel="&#x0EB7;&#x0EC9;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0EB7;&#x0EC9;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0EC6: "ໆ" LAO KO LA -->
-            <Key
-                latin:keyLabel="&#x0EC6;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EC6;" />
             <!-- U+0EDD: "ໝ" LAO HO MO -->
+            <Key latin:keySpec="&#x0EDD;" />
             <Key
-                latin:keyLabel="&#x0EDD;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="$"
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel="$" />
-            <Key
-                latin:keyLabel=")" />
+                latin:keySpec=")"
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- U+0E9C: "ຜ" LAO LETTER PHO SUNG -->
-            <Key
-                latin:keyLabel="&#x0E9C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E9C;" />
             <!-- U+0E9B: "ປ" LAO LETTER PO -->
-            <Key
-                latin:keyLabel="&#x0E9B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E9B;" />
             <!-- U+0EC1: "ແ" LAO VOWEL SIGN EI -->
-            <Key
-                latin:keyLabel="&#x0EC1;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EC1;" />
             <!-- U+0EAD: "ອ" LAO LETTER O -->
-            <Key
-                latin:keyLabel="&#x0EAD;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EAD;" />
             <!-- U+0EB6: "ຶ" LAO VOWEL SIGN Y -->
-            <Key
-                latin:keyLabel="&#x0EB6;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB6;" />
             <!-- U+0EB7: "ື" LAO VOWEL SIGN YY -->
-            <Key
-                latin:keyLabel="&#x0EB7;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EB7;" />
             <!-- U+0E97: "ທ" LAO LETTER THO TAM -->
-            <Key
-                latin:keyLabel="&#x0E97;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E97;" />
             <!-- U+0EA1: "ມ" LAO LETTER MO -->
-            <Key
-                latin:keyLabel="&#x0EA1;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EA1;" />
             <!-- U+0EC3: "ໃ" LAO VOWEL SIGN AY -->
-            <Key
-                latin:keyLabel="&#x0EC3;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0EC3;" />
             <!-- U+0E9D: "ຝ" LAO LETTER FO TAM -->
-            <Key
-                latin:keyLabel="&#x0E9D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E9D;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_malayalam1.xml b/java/res/xml/rowkeys_malayalam1.xml
new file mode 100644
index 0000000..79d96cb
--- /dev/null
+++ b/java/res/xml/rowkeys_malayalam1.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" >
+    <!-- U+0D4D: "്" MALAYALAM SIGN VIRAMA
+         U+0D05: "അ" MALAYALAM LETTER A -->
+    <Key
+        latin:keySpec="&#x0D4D;"
+        latin:moreKeys="&#x0D05;,%"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1" />
+    <!-- U+0D3E: "ാ" MALAYALAM VOWEL SIGN AA
+         U+0D06: "ആ" MALAYALAM LETTER AA -->
+    <Key
+        latin:keySpec="&#x0D3E;"
+        latin:moreKeys="&#x0D06;,%"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2" />
+    <!-- U+0D3F: "ി" MALAYALAM VOWEL SIGN I
+         U+0D07: "ഇ" MALAYALAM LETTER I -->
+    <Key
+        latin:keySpec="&#x0D3F;"
+        latin:moreKeys="&#x0D07;,%"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3" />
+    <!-- U+0D40: "ീ" MALAYALAM VOWEL SIGN II
+         U+0D08: "ഈ" MALAYALAM LETTER II -->
+    <Key
+        latin:keySpec="&#x0D40;"
+        latin:moreKeys="&#x0D08;,%"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4" />
+    <!-- U+0D41: "ു" MALAYALAM VOWEL SIGN U
+         U+0D09: "ഉ" MALAYALAM LETTER U -->
+    <Key
+        latin:keySpec="&#x0D41;"
+        latin:moreKeys="&#x0D09;,%"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5" />
+    <!-- U+0D42: "ൂ" MALAYALAM VOWEL SIGN UU
+         U+0D0A: "ഊ" MALAYALAM LETTER UU -->
+    <Key
+        latin:keySpec="&#x0D42;"
+        latin:moreKeys="&#x0D0A;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6" />
+    <!-- U+0D43: "ൃ" MALAYALAM VOWEL SIGN VOCALIC R
+         U+0D0B: "ഋ" MALAYALAM LETTER VOCALIC R -->
+    <Key
+        latin:keySpec="&#x0D43;"
+        latin:moreKeys="&#x0D0B;,%"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7" />
+    <!-- U+0D46: "െ" MALAYALAM VOWEL SIGN E
+         U+0D0E: "എ" MALAYALAM LETTER E
+         U+0D10: "ഐ" MALAYALAM LETTER AI
+         U+0D48: "ൈ" MALAYALAM VOWEL SIGN AI -->
+    <Key
+        latin:keySpec="&#x0D46;"
+        latin:moreKeys="&#x0D0E;,&#x0D10;,&#x0D48;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8" />
+    <!-- U+0D47: "േ" MALAYALAM VOWEL SIGN EE
+         U+0D0F: "ഏ" MALAYALAM LETTER EE -->
+    <Key
+        latin:keySpec="&#x0D47;"
+        latin:moreKeys="&#x0D0F;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9" />
+    <!-- U+0D4A: "ൊ" MALAYALAM VOWEL SIGN O
+         U+0D12: "ഒ" MALAYALAM LETTER O -->
+    <Key
+        latin:keySpec="&#x0D4A;"
+        latin:moreKeys="&#x0D12;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+    <!-- U+0D4B: "ോ" MALAYALAM VOWEL SIGN OO
+         U+0D13: "ഓ" MALAYALAM LETTER OO
+         U+0D14: "ഔ" MALAYALAM LETTER AU
+         U+0D57: "ൗ" MALAYALAM AU LENGTH MARK -->
+    <Key latin:keySpec="&#x0D4B;"
+         latin:moreKeys="&#x0D13;,&#x0D14;,&#x0D57;" />
+</merge>
diff --git a/java/res/xml/rowkeys_malayalam2.xml b/java/res/xml/rowkeys_malayalam2.xml
new file mode 100644
index 0000000..f0f9df0
--- /dev/null
+++ b/java/res/xml/rowkeys_malayalam2.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0D15: "ക" MALAYALAM LETTER KA
+         U+0D16: "ഖ" MALAYALAM LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0D15;"
+        latin:moreKeys="&#x0D16;" />
+    <!-- U+0D17: "ഗ" MALAYALAM LETTER GA
+         U+0D18: "ഘ" MALAYALAM LETTER GHA -->
+    <Key
+        latin:keySpec="&#x0D17;"
+        latin:moreKeys="&#x0D18;" />
+    <!-- U+0D19: "ങ" MALAYALAM LETTER NGA
+         U+0D1E: "ഞ" MALAYALAM LETTER NYA -->
+    <Key
+        latin:keySpec="&#x0D19;"
+        latin:moreKeys="&#x0D1E;" />
+    <!-- U+0D1A: "ച" MALAYALAM LETTER CA
+         U+0D1B: "ഛ" MALAYALAM LETTER CHA -->
+    <Key
+        latin:keySpec="&#x0D1A;"
+        latin:moreKeys="&#x0D1B;" />
+    <!-- U+0D1C: "ജ" MALAYALAM LETTER JA
+         U+0D1D: "ഝ" MALAYALAM LETTER JHA -->
+    <Key
+        latin:keySpec="&#x0D1C;"
+        latin:moreKeys="&#x0D1D;" />
+    <!-- U+0D1F: "ട" MALAYALAM LETTER TTA
+         U+0D20: "ഠ" MALAYALAM LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x0D1F;"
+        latin:moreKeys="&#x0D20;" />
+    <!-- U+0D21: "ഡ" MALAYALAM LETTER DDA
+         U+0D22: "ഢ" MALAYALAM LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0D21;"
+        latin:moreKeys="&#x0D22;" />
+    <!-- U+0D23: "ണ" MALAYALAM LETTER NNA
+         U+0D7A: "ൺ" MALAYALAM LETTER CHILLU NN -->
+    <Key
+        latin:keySpec="&#x0D23;"
+        latin:moreKeys="&#x0D7A;" />
+    <!-- U+0D24: "ത" MALAYALAM LETTER TA
+         U+0D25: "ഥ" MALAYALAM LETTER THA -->
+    <Key
+        latin:keySpec="&#x0D24;"
+        latin:moreKeys="&#x0D25;" />
+    <!-- U+0D26: "ദ" MALAYALAM LETTER DA
+         U+0D27: "ധ" MALAYALAM LETTER DHA -->
+    <Key
+        latin:keySpec="&#x0D26;"
+        latin:moreKeys="&#x0D27;" />
+    <!-- U+0D28: "ഗന" MALAYALAM LETTER NA
+         U+0D7B: "ൻ" MALAYALAM LETTER CHILLU N -->
+    <Key
+        latin:keySpec="&#x0D28;"
+        latin:moreKeys="&#x0D7B;" />
+</merge>
diff --git a/java/res/xml/rowkeys_malayalam3.xml b/java/res/xml/rowkeys_malayalam3.xml
new file mode 100644
index 0000000..6959ccd
--- /dev/null
+++ b/java/res/xml/rowkeys_malayalam3.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0D2A: "പ" MALAYALAM LETTER PA
+         U+0D2B: "ഫ" MALAYALAM LETTER PHA -->
+    <Key
+        latin:keySpec="&#x0D2A;"
+        latin:moreKeys="&#x0D2B;" />
+    <!-- U+0D2C: "ബ" MALAYALAM LETTER BA
+         U+0D2D: "ഭ" MALAYALAM LETTER BHA -->
+    <Key
+        latin:keySpec="&#x0D2C;"
+        latin:moreKeys="&#x0D2D;" />
+    <!-- U+0D2E: "മ" MALAYALAM LETTER MA
+         U+0D02: "ം" MALAYALAM SIGN ANUSVARA -->
+    <Key
+        latin:keySpec="&#x0D2E;"
+        latin:moreKeys="&#x0D02;" />
+    <!-- U+0D2F: "യ" MALAYALAM LETTER YA
+         U+0D4D/U+0D2F: "്യ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER YA -->
+    <Key
+        latin:keySpec="&#x0D2F;"
+        latin:moreKeys="&#x0D4D;&#x0D2F;" />
+    <!-- U+0D30: "ര" MALAYALAM LETTER RA
+         U+0D4D/U+0D30: "്ര" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER RA
+         U+0D7C: "ർ" MALAYALAM LETTER CHILLU RR
+         U+0D31: "റ" MALAYALAM LETTER RRA -->
+    <Key
+        latin:keySpec="&#x0D30;"
+        latin:moreKeys="&#x0D4D;&#x0D30;,&#x0D7C;,&#x0D31;" />
+    <!-- U+0D32: "ല" MALAYALAM LETTER LA
+         U+0D7D: "ൽ" MALAYALAM LETTER CHILLU L -->
+    <Key
+        latin:keySpec="&#x0D32;"
+        latin:moreKeys="&#x0D7D;" />
+    <!-- U+0D35: "വ" MALAYALAM LETTER VA
+         U+0D4D/U+0D35: "്വ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER VA -->
+    <Key
+        latin:keySpec="&#x0D35;"
+        latin:moreKeys="&#x0D4D;&#x0D35;" />
+    <!-- U+0D36: "ശ" MALAYALAM LETTER SHA
+         U+0D37: "ഷ" MALAYALAM LETTER SSA
+         U+0D38: "സ" MALAYALAM LETTER SA -->
+    <Key
+        latin:keySpec="&#x0D36;"
+        latin:moreKeys="&#x0D37;,&#x0D38;" />
+    <!-- U+0D39: "ഹ" MALAYALAM LETTER HA
+         U+0D03: "ഃ" MALAYALAM SIGN VISARGA -->
+    <Key
+        latin:keySpec="&#x0D39;"
+        latin:moreKeys="&#x0D03;" />
+    <!-- U+0D33: "ള" MALAYALAM LETTER LLA
+         U+0D7E: "ൾ" MALAYALAM LETTER CHILLU LL
+         U+0D34: "ഴ" MALAYALAM LETTER LLLA -->
+    <Key
+        latin:keySpec="&#x0D33;"
+        latin:moreKeys="&#x0D7E;,&#x0D34;" />
+</merge>
diff --git a/java/res/xml/rowkeys_marathi1.xml b/java/res/xml/rowkeys_marathi1.xml
new file mode 100644
index 0000000..596664b
--- /dev/null
+++ b/java/res/xml/rowkeys_marathi1.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
+    <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignAu"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="&#x0967;,1" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
+    <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignAi"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="&#x0968;,2" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
+    <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignAa"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="&#x0969;,3" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
+    <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignIi"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="&#x096A;,4" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
+    <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <Key
+        latin:keyStyle="baseKeyDevanagariVowelSignUu"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="&#x096B;,5" />
+    <!-- U+092C: "ब" DEVANAGARI LETTER BA
+         U+092D: "भ" DEVANAGARI LETTER BHA
+         U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <Key
+        latin:keySpec="&#x092C;"
+        latin:moreKeys="&#x092D;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="&#x096C;,6" />
+    <!-- U+0939: "ह" DEVANAGARI LETTER HA
+         U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <Key
+        latin:keySpec="&#x0939;"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="&#x096D;,7" />
+    <!-- U+0917: "ग" DEVANAGARI LETTER GA
+         U+0918: "घ" DEVANAGARI LETTER GHA
+         U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <Key
+        latin:keySpec="&#x0917;"
+        latin:moreKeys="&#x0918;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="&#x096E;,8" />
+    <!-- U+0926: "द" DEVANAGARI LETTER DA
+         U+0927: "ध" DEVANAGARI LETTER DHA
+         U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <Key
+        latin:keySpec="&#x0926;"
+        latin:moreKeys="&#x0927;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="&#x096F;,9" />
+    <!-- U+091C: "ज" DEVANAGARI LETTER JA
+         U+091D: "झ" DEVANAGARI LETTER JHA
+         U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER JHA -->
+    <Key
+        latin:keySpec="&#x091C;"
+        latin:moreKeys="&#x091D;,&#x091C;&#x094D;&#x091E;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="&#x0966;,0" />
+    <!-- U+0921: "ड" DEVANAGARI LETTER DDA
+         U+0922: "ढ" DEVANAGARI LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0921;"
+        latin:moreKeys="&#x0922;" />
+</merge>
diff --git a/java/res/xml/rowkeys_marathi2.xml b/java/res/xml/rowkeys_marathi2.xml
new file mode 100644
index 0000000..060822e
--- /dev/null
+++ b/java/res/xml/rowkeys_marathi2.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
+    <Key latin:keyStyle="baseKeyDevanagariVowelSignO" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
+    <Key latin:keyStyle="baseKeyDevanagariVowelSignE" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+    <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
+    <Key latin:keyStyle="baseKeyDevanagariVowelSignI" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
+    <Key latin:keyStyle="baseKeyDevanagariVowelSignU" />
+    <!-- U+092A: "प" DEVANAGARI LETTER PA
+         U+092B: "फ" DEVANAGARI LETTER PHA -->
+    <Key
+        latin:keySpec="&#x092A;"
+        latin:moreKeys="&#x092B;" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_vocalic_r" />
+    <!-- U+0930: "र" DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0930;"
+        latin:keyStyle="moreKeysDevanagariVowelSignVocalicR" />
+    <!-- U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0915;"
+        latin:moreKeys="&#x0916;" />
+    <!-- U+0924: "त" DEVANAGARI LETTER TA
+         U+0925: "थ" DEVANAGARI LETTER THA
+         U+0924/U+094D/U+0930: "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0924;"
+        latin:moreKeys="&#x0925;,&#x0924;&#x094D;&#x0930;" />
+    <!-- U+091A: "च" DEVANAGARI LETTER CA
+         U+091B: "छ" DEVANAGARI LETTER CHA -->
+    <Key
+        latin:keySpec="&#x091A;"
+        latin:moreKeys="&#x091B;" />
+    <!-- U+091F: "ट" DEVANAGARI LETTER TTA
+         U+0920: "ठ" DEVANAGARI LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x091F;"
+        latin:moreKeys="&#x0920;" />
+</merge>
diff --git a/java/res/xml/rowkeys_marathi3.xml b/java/res/xml/rowkeys_marathi3.xml
new file mode 100644
index 0000000..661e796
--- /dev/null
+++ b/java/res/xml/rowkeys_marathi3.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_candra_o" />
+    <Key latin:keyStyle="baseKeyDevanagariVowelSignCandraO" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_candra_e" />
+    <Key latin:keyStyle="baseKeyDevanagariVowelSignCandraE" />
+    <!-- Because the font rendering system prior to API version 16 can't automatically
+         render dotted circle for incomplete combining letter of some scripts, different
+         set of Key definitions are needed based on the API version. -->
+    <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+    <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
+    <!-- U+092E: "म" DEVANAGARI LETTER MA -->
+    <Key latin:keySpec="&#x092E;" />
+    <!-- U+0928: "न" DEVANAGARI LETTER NA
+         U+0923: "ण" DEVANAGARI LETTER NNA
+         U+091E: "ञ" DEVANAGARI LETTER NYA
+         U+0919: "ङ" DEVANAGARI LETTER NGA -->
+    <Key
+        latin:keySpec="&#x0928;"
+        latin:moreKeys="&#x0923;,&#x091E;,&#x0919;" />
+    <!-- U+0935: "व" DEVANAGARI LETTER VA -->
+    <Key latin:keySpec="&#x0935;" />
+    <!-- U+0932: "ल" DEVANAGARI LETTER LA
+         U+0933: "ळ" DEVANAGARI LETTER LLA -->
+    <Key
+        latin:keySpec="&#x0932;"
+        latin:moreKeys="&#x0933;" />
+    <!-- U+0938: "स" DEVANAGARI LETTER SA
+         U+0936: "श" DEVANAGARI LETTER SHA
+         U+0937: "ष" DEVANAGARI LETTER SSA
+         U+0936/U+094D/U+0930: "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA -->
+    <Key
+        latin:keySpec="&#x0938;"
+        latin:moreKeys="&#x0936;,&#x0937;,&#x0936;&#x094D;&#x0930;" />
+    <!-- U+092F: "य" DEVANAGARI LETTER YA -->
+    <Key latin:keySpec="&#x092F;" />
+    <!-- U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0915;&#x094D;&#x0937;"
+        latin:keyLabelFlags="followKeyLetterRatio" />
+</merge>
diff --git a/java/res/xml/rowkeys_mongolian1.xml b/java/res/xml/rowkeys_mongolian1.xml
index 6c8c8e2..2bd8097 100644
--- a/java/res/xml/rowkeys_mongolian1.xml
+++ b/java/res/xml/rowkeys_mongolian1.xml
@@ -23,61 +23,61 @@
 >
     <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
     <Key
-        latin:keyLabel="&#x0444;"
+        latin:keySpec="&#x0444;"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE -->
     <Key
-        latin:keyLabel="&#x0446;"
+        latin:keySpec="&#x0446;"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2" />
     <!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
     <Key
-        latin:keyLabel="&#x0443;"
+        latin:keySpec="&#x0443;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="!text/more_keys_for_cyrillic_u" />
+        latin:moreKeys="!text/morekeys_cyrillic_u" />
     <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
     <Key
-        latin:keyLabel="&#x0436;"
+        latin:keySpec="&#x0436;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
     <Key
-        latin:keyLabel="&#x044D;"
+        latin:keySpec="&#x044D;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_cyrillic_ie" />
+        latin:moreKeys="!text/morekeys_cyrillic_ie" />
     <!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
     <Key
-        latin:keyLabel="&#x043D;"
+        latin:keySpec="&#x043D;"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="!text/more_keys_for_cyrillic_en" />
+        latin:moreKeys="!text/morekeys_cyrillic_en" />
     <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
     <Key
-        latin:keyLabel="&#x0433;"
+        latin:keySpec="&#x0433;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_cyrillic_ghe" />
+        latin:moreKeys="!text/morekeys_cyrillic_ghe" />
     <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA
          U+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
     <Key
-        latin:keyLabel="&#x0448;"
+        latin:keySpec="&#x0448;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
         latin:moreKeys="&#x0449;" />
     <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U -->
     <Key
-        latin:keyLabel="&#x04AF;"
+        latin:keySpec="&#x04AF;"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9" />
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
     <Key
-        latin:keyLabel="&#x0437;"
+        latin:keySpec="&#x0437;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
     <!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
     <Key
-        latin:keyLabel="&#x043A;" />
+        latin:keySpec="&#x043A;" />
 </merge>
diff --git a/java/res/xml/rowkeys_mongolian2.xml b/java/res/xml/rowkeys_mongolian2.xml
index a8aa006..f11f4f2 100644
--- a/java/res/xml/rowkeys_mongolian2.xml
+++ b/java/res/xml/rowkeys_mongolian2.xml
@@ -23,35 +23,35 @@
 >
     <!-- U+0439: "й" CYRILLIC SMALL LETTER SHORT I -->
     <Key
-        latin:keyLabel="&#x0439;" />
+        latin:keySpec="&#x0439;" />
     <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
     <Key
-        latin:keyLabel="&#x044B;" />
+        latin:keySpec="&#x044B;" />
     <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
     <Key
-        latin:keyLabel="&#x0431;" />
+        latin:keySpec="&#x0431;" />
     <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O -->
     <Key
-        latin:keyLabel="&#x04E9;" />
+        latin:keySpec="&#x04E9;" />
     <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
     <Key
-        latin:keyLabel="&#x0430;" />
+        latin:keySpec="&#x0430;" />
     <!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
     <Key
-        latin:keyLabel="&#x0445;" />
+        latin:keySpec="&#x0445;" />
     <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
     <Key
-        latin:keyLabel="&#x0440;" />
+        latin:keySpec="&#x0440;" />
     <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
     <Key
-        latin:keyLabel="&#x043E;" />
+        latin:keySpec="&#x043E;" />
     <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
     <Key
-        latin:keyLabel="&#x043B;" />
+        latin:keySpec="&#x043B;" />
     <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
     <Key
-        latin:keyLabel="&#x0434;" />
+        latin:keySpec="&#x0434;" />
     <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
     <Key
-        latin:keyLabel="&#x043F;" />
+        latin:keySpec="&#x043F;" />
 </merge>
diff --git a/java/res/xml/rowkeys_mongolian3.xml b/java/res/xml/rowkeys_mongolian3.xml
index dc80c37..cf57d1c 100644
--- a/java/res/xml/rowkeys_mongolian3.xml
+++ b/java/res/xml/rowkeys_mongolian3.xml
@@ -23,35 +23,35 @@
 >
     <!-- U+044F: "я" CYRILLIC SMALL LETTER YA -->
     <Key
-        latin:keyLabel="&#x044F;" />
+        latin:keySpec="&#x044F;" />
     <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
     <Key
-        latin:keyLabel="&#x0447;" />
+        latin:keySpec="&#x0447;" />
     <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO
          U+0435: "е" CYRILLIC SMALL LETTER IE -->
     <Key
-        latin:keyLabel="&#x0451;"
+        latin:keySpec="&#x0451;"
         latin:moreKeys="&#x0435;" />
     <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
     <Key
-        latin:keyLabel="&#x0441;" />
+        latin:keySpec="&#x0441;" />
     <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
     <Key
-        latin:keyLabel="&#x043C;" />
+        latin:keySpec="&#x043C;" />
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
     <Key
-        latin:keyLabel="&#x0438;" />
+        latin:keySpec="&#x0438;" />
     <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
     <Key
-        latin:keyLabel="&#x0442;" />
+        latin:keySpec="&#x0442;" />
     <!-- U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
          U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
     <Key
-        latin:keyLabel="&#x044C;"
+        latin:keySpec="&#x044C;"
         latin:moreKeys="&#x044A;" />
     <!-- U+0432: "в" CYRILLIC SMALL LETTER VE
          U+044E: "ю" CYRILLIC SMALL LETTER YU -->
     <Key
-        latin:keyLabel="&#x0432;"
+        latin:keySpec="&#x0432;"
         latin:moreKeys="&#x044E;" />
 </merge>
diff --git a/java/res/xml/rowkeys_myanmar1.xml b/java/res/xml/rowkeys_myanmar1.xml
new file mode 100644
index 0000000..1170074
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar1.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+1027: "ဧ" MYANMAR LETTER E -->
+            <Key latin:keySpec="&#x1027;" />
+            <!-- U+104F: "၏" MYANMAR SYMBOL GENITIVE -->
+            <Key latin:keySpec="&#x104F;" />
+            <!-- U+1024: "ဤ" MYANMAR LETTER II -->
+            <Key latin:keySpec="&#x1024;" />
+            <!-- U+1023: "ဣ" MYANMAR LETTER I -->
+            <Key latin:keySpec="&#x1023;" />
+            <!-- U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED -->
+            <Key latin:keySpec="&#x104E;" />
+            <!-- U+1000/U+103B/U+1015/U+103A: "ကျပ်"
+                 MYANMAR LETTER KA/MYANMAR CONSONANT SIGN MEDIAL YA/MYANMAR LETTER PA/MYANMAR SIGN ASAT -->
+            <Key
+                latin:keySpec="&#x1000;&#x103B;&#x1015;&#x103A;"
+                latin:keyLabelFlags="followKeyLetterRatio|autoScale" />
+            <!-- U+1029: "ဩ" MYANMAR LETTER O -->
+            <Key
+                latin:keySpec="&#x1029;"
+                latin:keyLabelFlags="autoScale" />
+            <!-- U+102A: "ဪ" MYANMAR LETTER AU -->
+            <Key
+                latin:keySpec="&#x102A;"
+                latin:keyLabelFlags="autoScale" />
+            <!-- U+104D: "၍" MYANMAR SYMBOL COMPLETED -->
+            <Key latin:keySpec="&#x104D;" />
+            <!-- U+104C: "၌" MYANMAR SYMBOL LOCATIVE -->
+            <Key latin:keySpec="&#x104C;" />
+        </case>
+        <default>
+            <!-- U+1041: "၁" MYANMAR DIGIT ONE -->
+            <Key
+                latin:keySpec="&#x1041;"
+                latin:keyHintLabel="1"
+                latin:additionalMoreKeys="1" />
+            <!-- U+1042: "၂" MYANMAR DIGIT TWO -->
+            <Key
+                latin:keySpec="&#x1042;"
+                latin:keyHintLabel="2"
+                latin:additionalMoreKeys="2" />
+            <!-- U+1043: "၃" MYANMAR DIGIT THREE -->
+            <Key
+                latin:keySpec="&#x1043;"
+                latin:keyHintLabel="3"
+                latin:additionalMoreKeys="3" />
+            <!-- U+1044: "၄" MYANMAR DIGIT FOUR -->
+            <Key
+                latin:keySpec="&#x1044;"
+                latin:keyHintLabel="4"
+                latin:additionalMoreKeys="4" />
+            <!-- U+1045: "၅" MYANMAR DIGIT FIVE -->
+            <Key
+                latin:keySpec="&#x1045;"
+                latin:keyHintLabel="5"
+                latin:additionalMoreKeys="5" />
+            <!-- U+1046: "၆" MYANMAR DIGIT SIX -->
+            <Key
+                latin:keySpec="&#x1046;"
+                latin:keyHintLabel="6"
+                latin:additionalMoreKeys="6" />
+            <!-- U+1047: "၇" MYANMAR DIGIT SEVEN -->
+            <Key
+                latin:keySpec="&#x1047;"
+                latin:keyHintLabel="7"
+                latin:additionalMoreKeys="7" />
+            <!-- U+1048: "၈" MYANMAR DIGIT EIGHT -->
+            <Key
+                latin:keySpec="&#x1048;"
+                latin:keyHintLabel="8"
+                latin:additionalMoreKeys="8" />
+            <!-- U+1049: "၉" MYANMAR DIGIT NINE -->
+            <Key
+                latin:keySpec="&#x1049;"
+                latin:keyHintLabel="9"
+                latin:additionalMoreKeys="9" />
+            <!-- U+1040: "၀" MYANMAR DIGIT ZERO -->
+            <Key
+                latin:keySpec="&#x1040;"
+                latin:keyHintLabel="0"
+                latin:additionalMoreKeys="0" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_myanmar2.xml b/java/res/xml/rowkeys_myanmar2.xml
new file mode 100644
index 0000000..ae71ecb
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar2.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+1017: "ဗ" MYANMAR LETTER BA
+                 U+1039/U+1017: "္ဗ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BA -->
+            <Key
+                latin:keySpec="&#x1017;"
+                latin:moreKeys="&#x1039;&#x1017;" />
+            <!-- U+1012: "ဒ" MYANMAR LETTER DA
+                 U+1039/U+1012: "္ဒ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DA -->
+            <Key
+                latin:keySpec="&#x1012;"
+                latin:moreKeys="&#x1039;&#x1012;" />
+            <!-- U+1013: "ဓ" MYANMAR LETTER DHA
+                 U+1039/U+1013: "္ဓ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DHA -->
+            <Key
+                latin:keySpec="&#x1013;"
+                latin:moreKeys="&#x1039;&#x1013;" />
+            <!-- U+1003: "ဃ" MYANMAR LETTER GHA -->
+            <Key latin:keySpec="&#x1003;" />
+            <!-- U+100E: "ဎ" MYANMAR LETTER DDHA -->
+            <Key latin:keySpec="&#x100E;" />
+            <!-- U+103F: "ဿ" MYANMAR LETTER GREAT SA -->
+            <Key latin:keySpec="&#x103F;" />
+            <!-- U+100F: "ဏ" MYANMAR LETTER NNA -->
+            <Key latin:keySpec="&#x100F;" />
+            <!-- U+1008: "ဈ" MYANMAR LETTER JHA
+                 U+1039/U+1008: "္ဈ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JHA -->
+            <Key
+                latin:keySpec="&#x1008;"
+                latin:moreKeys="&#x1039;&#x1008;" />
+            <!-- U+1007: "ဇ" MYANMAR LETTER JA
+                 U+1039/U+1007: "္ဇ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JA -->
+            <Key
+                latin:keySpec="&#x1007;"
+                latin:moreKeys="&#x1039;&#x1007;" />
+            <!-- U+1002: "ဂ" MYANMAR LETTER GA
+                 U+1039/U+1002: "္ဂ" MYANMAR SIGN VIRAMA/MYANMAR LETTER GA -->
+            <Key
+                latin:keySpec="&#x1002;"
+                latin:moreKeys="&#x1039;&#x1002;" />
+        </case>
+        <default>
+            <!-- U+1006: "ဆ" MYANMAR LETTER CHA
+                 U+1039/U+1006: "္ဆ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CHA -->
+            <Key
+                latin:keySpec="&#x1006;"
+                latin:moreKeys="&#x1039;&#x1006;" />
+            <!-- U+1010: "တ" MYANMAR LETTER TA
+                 U+1039/U+1010: "္တ" MYANMAR SIGN VIRAMA/MYANMAR LETTER TA -->
+            <Key
+                latin:keySpec="&#x1010;"
+                latin:moreKeys="&#x1039;&#x1010;" />
+            <!-- U+1014: "န" MYANMAR LETTER NA
+                 U+1039/U+1014: "္န" MYANMAR SIGN VIRAMA/MYANMAR LETTER NA -->
+            <Key
+                latin:keySpec="&#x1014;"
+                latin:moreKeys="&#x1039;&#x1014;" />
+            <!-- U+1019: "မ" MYANMAR LETTER MA
+                 U+1039/U+1019: "္မ" MYANMAR SIGN VIRAMA/MYANMAR LETTER MA -->
+            <Key
+                latin:keySpec="&#x1019;"
+                latin:moreKeys="&#x1039;&#x1019;" />
+            <!-- U+1021: "အ" MYANMAR LETTER A -->
+            <Key latin:keySpec="&#x1021;" />
+            <!-- U+1015: "ပ" MYANMAR LETTER PA -->
+            <Key latin:keySpec="&#x1015;" />
+            <!-- U+1000: "က" MYANMAR LETTER KA
+                 U+1039/U+1000: "္က" MYANMAR SIGN VIRAMA/MYANMAR LETTER KA -->
+            <Key
+                latin:keySpec="&#x1000;"
+                latin:moreKeys="&#x1039;&#x1000;" />
+            <!-- U+1004: "င" MYANMAR LETTER NGA -->
+            <Key latin:keySpec="&#x1004;" />
+            <!-- U+101E: "သ" MYANMAR LETTER SA -->
+            <Key latin:keySpec="&#x101E;" />
+            <!-- U+1005: "စ" MYANMAR LETTER CA
+                 U+1039/U+1005: "္စ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CA -->
+            <Key
+                latin:keySpec="&#x1005;"
+                latin:moreKeys="&#x1039;&#x1005;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_myanmar3.xml b/java/res/xml/rowkeys_myanmar3.xml
new file mode 100644
index 0000000..4dafe09
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar3.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+101A: "ယ" MYANMAR LETTER YA -->
+            <Key latin:keySpec="&#x101A;" />
+            <!-- U+1039: "္" MYANMAR SIGN VIRAMA -->
+            <Key latin:keySpec="&#x1039;" />
+            <!-- U+1004/U+103A/U+1039: "င်္င" MYANMAR LETTER NGA/MYANMAR SIGN ASAT/MYANMAR SIGN VIRAMA -->
+            <Key
+                latin:keySpec="&#x1004;&#x103A;&#x1039;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
+            <!-- U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA -->
+            <Key latin:keySpec="&#x103E;" />
+            <!-- U+102E: "ီ" MYANMAR VOWEL SIGN II -->
+            <Key latin:keySpec="&#x102E;" />
+            <!-- U+1030: "ူ" MYANMAR VOWEL SIGN UU -->
+            <Key latin:keySpec="&#x1030;" />
+            <!-- U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA -->
+            <Key latin:keySpec="&#x102B;" />
+            <!-- U+1032: "ဲ" MYANMAR VOWEL SIGN AI -->
+            <Key latin:keySpec="&#x1032;" />
+            <!-- U+1036: "ံ" MYANMAR SIGN ANUSVARA -->
+            <Key latin:keySpec="&#x1036;" />
+            <!-- U+101F: "ဟ" MYANMAR LETTER HA -->
+            <Key latin:keySpec="&#x101F;" />
+        </case>
+        <default>
+            <!-- U+1031: "ေ" MYANMAR VOWEL SIGN E -->
+            <Key latin:keySpec="&#x1031;" />
+            <!-- U+103B: "ျ" MYANMAR CONSONANT SIGN MEDIAL YA -->
+            <Key latin:keySpec="&#x103B;" />
+            <!-- U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA -->
+            <Key latin:keySpec="&#x103C;" />
+            <!-- U+103D: "ွ" MYANMAR CONSONANT SIGN MEDIAL WA
+                 U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
+                 U+103D/U+103E: "ွှ" MYANMAR CONSONANT SIGN MEDIAL WA/MYANMAR CONSONANT SIGN MEDIAL HA -->
+            <Key
+                latin:keySpec="&#x103D;"
+                latin:moreKeys="&#x103E;,&#x103D;&#x103E;" />
+            <!-- U+102D: "ိ" MYANMAR VOWEL SIGN I
+                 U+102E: "ီ" MYANMAR VOWEL SIGN II -->
+            <Key
+                latin:keySpec="&#x102D;"
+                latin:moreKeys="&#x102E;" />
+            <!-- U+102F: "ု" MYANMAR VOWEL SIGN U
+                 U+1030: "ူ" MYANMAR VOWEL SIGN UU -->
+            <Key
+                latin:keySpec="&#x102F;"
+                latin:moreKeys="&#x1030;" />
+            <!-- U+102C: "ာ" MYANMAR VOWEL SIGN AA
+                 U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA -->
+            <Key
+                latin:keySpec="&#x102C;"
+                latin:moreKeys="&#x102B;" />
+            <!-- U+103A: "်" MYANMAR SIGN ASAT
+                 U+1032: "ဲ" MYANMAR VOWEL SIGN AI -->
+            <Key
+                latin:keySpec="&#x103A;"
+                latin:moreKeys="&#x1032;" />
+            <!-- U+1037: "့" MYANMAR SIGN DOT BELOW
+                 U+1036: "ံ" MYANMAR SIGN ANUSVARA -->
+            <Key
+                latin:keySpec="&#x1037;"
+                latin:moreKeys="&#x1036;" />
+            <!-- U+1038: "း" MYANMAR SIGN VISARGA -->
+            <Key latin:keySpec="&#x1038;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_myanmar4.xml b/java/res/xml/rowkeys_myanmar4.xml
new file mode 100644
index 0000000..a1befcf
--- /dev/null
+++ b/java/res/xml/rowkeys_myanmar4.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+1025: "ဥ" MYANMAR LETTER U -->
+            <Key latin:keySpec="&#x1025;" />
+            <!-- U+1026: "ဦ" MYANMAR LETTER UU -->
+            <Key latin:keySpec="&#x1026;" />
+            <!-- U+100C: "ဌ" MYANMAR LETTER TTHA -->
+            <Key latin:keySpec="&#x100C;" />
+            <!-- U+100B: "ဋ" MYANMAR LETTER TTA -->
+            <Key latin:keySpec="&#x100B;" />
+            <!-- U+100D: "ဍ" MYANMAR LETTER DDA -->
+            <Key latin:keySpec="&#x100D;" />
+            <!-- U+1020: "ဠ" MYANMAR LETTER LLA -->
+            <Key latin:keySpec="&#x1020;" />
+            <!-- U+100B/U+1039/U+100C: "ဋ္ဌ" MYANMAR LETTER TTA/MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA -->
+            <Key
+                latin:keySpec="&#x100B;&#x1039;&#x100C;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
+            <!-- U+100F/U+1039/U+100D: "ဏ္ဍ" MYANMAR LETTER NNA/MYANMAR SIGN VIRAMA/MYANMAR LETTER DDA
+                 U+100F/U+1039/U+100C: "ဏ္ဌ" MYANMAR LETTER NNA/MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA -->
+            <Key
+                latin:keySpec="&#x100F;&#x1039;&#x100D;"
+                latin:moreKeys="&#x100F;&#x1039;&#x100C;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
+        </case>
+        <default>
+            <!-- U+1016: "ဖ" MYANMAR LETTER PHA -->
+            <Key latin:keySpec="&#x1016;" />
+            <!-- U+1011: "ထ" MYANMAR LETTER THA
+                 U+1039/U+1011: "္ထ" MYANMAR SIGN VIRAMA/MYANMAR LETTER THA -->
+            <Key
+                latin:keySpec="&#x1011;"
+                latin:moreKeys="&#x1039;&#x1011;" />
+            <!-- U+1001: "ခ" MYANMAR LETTER KHA
+                 U+1039/U+1001: "္ခ" MYANMAR SIGN VIRAMA/MYANMAR LETTER KHA -->
+            <Key
+                latin:keySpec="&#x1001;"
+                latin:moreKeys="&#x1039;&#x1001;" />
+            <!-- U+101C: "လ" MYANMAR LETTER LA
+                 U+1039/U+101C: "္လ" MYANMAR SIGN VIRAMA/MYANMAR LETTER LA -->
+            <Key
+                latin:keySpec="&#x101C;"
+                latin:moreKeys="&#x1039;&#x101C;" />
+            <!-- U+1018: "ဘ" MYANMAR LETTER BHA
+                 U+1039/U+1018: "္ဘ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BHA -->
+            <Key
+                latin:keySpec="&#x1018;"
+                latin:moreKeys="&#x1039;&#x1018;" />
+            <!-- U+100A: "ည" MYANMAR LETTER NNYA
+                 U+1009: "ဉ" MYANMAR LETTER NYA -->
+            <Key
+                latin:keySpec="&#x100A;"
+                latin:moreKeys="&#x1009;" />
+            <!-- U+101B: "ရ" MYANMAR LETTER RA -->
+            <Key latin:keySpec="&#x101B;" />
+            <!-- U+101D: "ဝ" MYANMAR LETTER WA -->
+            <Key latin:keySpec="&#x101D;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_nepali_romanized1.xml b/java/res/xml/rowkeys_nepali_romanized1.xml
index 408a966..67be51b 100644
--- a/java/res/xml/rowkeys_nepali_romanized1.xml
+++ b/java/res/xml/rowkeys_nepali_romanized1.xml
@@ -18,84 +18,61 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0920: "ठ" DEVANAGARI LETTER TTHA -->
-            <Key
-                latin:keyLabel="&#x0920;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0920;" />
             <!-- U+0914: "औ" DEVANAGARI LETTER AU -->
-            <Key
-                latin:keyLabel="&#x0914;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0914;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignAi" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignAi" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_vowel_sign_vocalic_r" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_vocalic_r" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignVocalicR" />
             <!-- U+0925: "थ" DEVANAGARI LETTER THA -->
-            <Key
-                latin:keyLabel="&#x0925;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0925;" />
             <!-- U+091E: "ञ" DEVANAGARI LETTER NYA -->
-            <Key
-                latin:keyLabel="&#x091E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091E;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignUu" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignUu" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignIi" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignIi" />
             <!-- U+0913: "ओ" DEVANAGARI LETTER O -->
-            <Key
-                latin:keyLabel="&#x0913;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0913;" />
             <!-- U+092B: "फ" DEVANAGARI LETTER PHA -->
-            <Key
-                latin:keyLabel="&#x092B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092B;" />
             <!-- U+0908: "ई" DEVANAGARI LETTER II -->
-            <Key
-                latin:keyLabel="&#x0908;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0908;" />
         </case>
         <default>
-            <!-- U+091F: "ट" DEVANAGARI LETTER TTA
-                 U+0967: "१" DEVANAGARI DIGIT ONE
-                 U+093C: "़" DEVANAGARI SIGN NUKTA -->
-            <Key
-                latin:keyLabel="&#x091F;"
-                latin:keyHintLabel="1"
-                latin:additionalMoreKeys="&#x0967;,1"
-                latin:moreKeys="&#x093C;"
-                latin:keyLabelFlags="fontNormal" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_nukta" />
+            <!-- U+091F: "ट" DEVANAGARI LETTER TTA
+                 U+0967: "१" DEVANAGARI DIGIT ONE -->
+            <Key
+                latin:keySpec="&#x091F;"
+                latin:keyHintLabel="1"
+                latin:additionalMoreKeys="&#x0967;,1"
+                latin:keyStyle="moreKeysDevanagariSignNukta" />
+            <!-- Because the font rendering system prior to API version 16 can't automatically
+                 render dotted circle for incomplete combining letter of some scripts, different
+                 set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
             <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignAu"
                 latin:keyHintLabel="2"
@@ -103,9 +80,8 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
             <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignE"
                 latin:keyHintLabel="3"
@@ -113,30 +89,26 @@
             <!-- U+0930: "र" DEVANAGARI LETTER RA
                  U+096A: "४" DEVANAGARI DIGIT FOUR -->
             <Key
-                latin:keyLabel="&#x0930;"
+                latin:keySpec="&#x0930;"
                 latin:keyHintLabel="4"
-                latin:additionalMoreKeys="&#x096A;,4"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096A;,4" />
             <!-- U+0924: "त" DEVANAGARI LETTER TA
                  U+096B: "५" DEVANAGARI DIGIT FIVE -->
             <Key
-                latin:keyLabel="&#x0924;"
+                latin:keySpec="&#x0924;"
                 latin:keyHintLabel="5"
-                latin:additionalMoreKeys="&#x096B;,5"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096B;,5" />
             <!-- U+092F: "य" DEVANAGARI LETTER YA
                  U+096C: "६" DEVANAGARI DIGIT SIX -->
             <Key
-                latin:keyLabel="&#x092F;"
+                latin:keySpec="&#x092F;"
                 latin:keyHintLabel="6"
-                latin:additionalMoreKeys="&#x096C;,6"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096C;,6" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
             <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignU"
                 latin:keyHintLabel="7"
@@ -144,9 +116,8 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
             <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignI"
                 latin:keyHintLabel="8"
@@ -154,9 +125,8 @@
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
             <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
             <Key
                 latin:keyStyle="baseKeyDevanagariVowelSignO"
                 latin:keyHintLabel="9"
@@ -164,14 +134,11 @@
             <!-- U+092A: "प" DEVANAGARI LETTER PA
                  U+0966: "०" DEVANAGARI DIGIT ZERO -->
             <Key
-                latin:keyLabel="&#x092A;"
+                latin:keySpec="&#x092A;"
                 latin:keyHintLabel="0"
-                latin:additionalMoreKeys="&#x0966;,0"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x0966;,0" />
             <!-- U+0907: "इ" DEVANAGARI LETTER I -->
-            <Key
-                latin:keyLabel="&#x0907;"
-                latin:keyLabelFlags="fontNormal" />
-         </default>
+            <Key latin:keySpec="&#x0907;" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_romanized2.xml b/java/res/xml/rowkeys_nepali_romanized2.xml
index 66359ff..2e2583c 100644
--- a/java/res/xml/rowkeys_nepali_romanized2.xml
+++ b/java/res/xml/rowkeys_nepali_romanized2.xml
@@ -18,109 +18,61 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0906: "आ" DEVANAGARI LETTER AA -->
-            <Key
-                latin:keyLabel="&#x0906;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0906;" />
             <!-- U+0936: "श" DEVANAGARI LETTER SHA -->
-            <Key
-                latin:keyLabel="&#x0936;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0936;" />
             <!-- U+0927: "ध" DEVANAGARI LETTER DHA -->
-            <Key
-                latin:keyLabel="&#x0927;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0927;" />
             <!-- U+090A: "ऊ" DEVANAGARI LETTER UU -->
-            <Key
-                latin:keyLabel="&#x090A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x090A;" />
             <!-- U+0918: "घ" DEVANAGARI LETTER GHA -->
-            <Key
-                latin:keyLabel="&#x0918;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0918;" />
             <!-- U+0905: "अ" DEVANAGARI LETTER A -->
-            <Key
-                latin:keyLabel="&#x0905;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0905;" />
             <!-- U+091D: "झ" DEVANAGARI LETTER JHA -->
-            <Key
-                latin:keyLabel="&#x091D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091D;" />
             <!-- U+0916: "ख" DEVANAGARI LETTER KHA -->
-            <Key
-                latin:keyLabel="&#x0916;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0916;" />
             <!-- U+0965: "॥" DEVANAGARI DOUBLE DANDA -->
-            <Key
-                latin:keyLabel="&#x0965;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0965;" />
             <!-- U+0910: "ऐ" DEVANAGARI LETTER AI -->
-            <Key
-                latin:keyLabel="&#x0910;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0910;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariSignVisarga" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
+            <Key latin:keyStyle="baseKeyDevanagariSignVisarga" />
         </case>
         <default>
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignAa" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignAa" />
             <!-- U+0938: "स" DEVANAGARI LETTER SA -->
-            <Key
-                latin:keyLabel="&#x0938;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0938;" />
             <!-- U+0926: "द" DEVANAGARI LETTER DA -->
-            <Key
-                latin:keyLabel="&#x0926;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0926;" />
             <!-- U+0909: "उ" DEVANAGARI LETTER U -->
-            <Key
-                latin:keyLabel="&#x0909;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0909;" />
             <!-- U+0917: "ग" DEVANAGARI LETTER GA -->
-            <Key
-                latin:keyLabel="&#x0917;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0917;" />
             <!-- U+0939: "ह" DEVANAGARI LETTER HA -->
-            <Key
-                latin:keyLabel="&#x0939;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0939;" />
             <!-- U+091C: "ज" DEVANAGARI LETTER JA -->
-            <Key
-                latin:keyLabel="&#x091C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091C;" />
             <!-- U+0915: "क" DEVANAGARI LETTER KA -->
-            <Key
-                latin:keyLabel="&#x0915;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0915;" />
             <!-- U+0932: "ल" DEVANAGARI LETTER LA -->
-            <Key
-                latin:keyLabel="&#x0932;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0932;" />
             <!-- U+090F: "ए" DEVANAGARI LETTER E -->
-            <Key
-                latin:keyLabel="&#x090F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x090F;" />
             <!-- U+0950: "ॐ" DEVANAGARI OM -->
-            <Key
-                latin:keyLabel="&#x0950;"
-                latin:keyLabelFlags="fontNormal" />
-         </default>
+            <Key latin:keySpec="&#x0950;" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_romanized3.xml b/java/res/xml/rowkeys_nepali_romanized3.xml
index 166d028..24f5908 100644
--- a/java/res/xml/rowkeys_nepali_romanized3.xml
+++ b/java/res/xml/rowkeys_nepali_romanized3.xml
@@ -18,97 +18,62 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R -->
-            <Key
-                latin:keyLabel="&#x090B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x090B;" />
             <!-- U+0922: "ढ" DEVANAGARI LETTER DDHA -->
-            <Key
-                latin:keyLabel="&#x0922;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0922;" />
             <!-- U+091B: "छ" DEVANAGARI LETTER CHA -->
-            <Key
-                latin:keyLabel="&#x091B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091B;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_candrabindu" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_candrabindu" />
+            <Key latin:keyStyle="baseKeyDevanagariSignCandrabindu" />
             <!-- U+092D: "भ" DEVANAGARI LETTER BHA -->
-            <Key
-                latin:keyLabel="&#x092D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092D;" />
             <!-- U+0923: "ण" DEVANAGARI LETTER NNA -->
-            <Key
-                latin:keyLabel="&#x0923;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0923;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+            <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
             <!-- U+0919: "ङ" DEVANAGARI LETTER NGA -->
-            <Key
-                latin:keyLabel="&#x0919;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0919;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariSignVirama" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+            <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
         </case>
         <default>
             <!-- U+0937: "ष" DEVANAGARI LETTER SSA -->
-            <Key
-                latin:keyLabel="&#x0937;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0937;" />
             <!-- U+0921: "ड" DEVANAGARI LETTER DDA -->
-            <Key
-                latin:keyLabel="&#x0921;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0921;" />
             <!-- U+091A: "च" DEVANAGARI LETTER CA -->
-            <Key
-                latin:keyLabel="&#x091A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091A;" />
             <!-- U+0935: "व" DEVANAGARI LETTER VA -->
-            <Key
-                latin:keyLabel="&#x0935;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0935;" />
             <!-- U+092C: "ब" DEVANAGARI LETTER BHA -->
-            <Key
-                latin:keyLabel="&#x092C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092C;" />
             <!-- U+0928: "न" DEVANAGARI LETTER NA -->
-            <Key
-                latin:keyLabel="&#x0928;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0928;" />
             <!-- U+092E: "म" DEVANAGARI LETTER MA -->
-            <Key
-                latin:keyLabel="&#x092E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092E;" />
             <!-- U+0964: "।" DEVANAGARI DANDA
                  U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
             <Key
-                latin:keyLabel="&#x0964;"
-                latin:moreKeys="&#x093D;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0964;"
+                latin:moreKeys="&#x093D;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariSignVirama" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+            <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional1.xml b/java/res/xml/rowkeys_nepali_traditional1.xml
index c7883c7..73b2275 100644
--- a/java/res/xml/rowkeys_nepali_traditional1.xml
+++ b/java/res/xml/rowkeys_nepali_traditional1.xml
@@ -18,158 +18,139 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0924/U+094D/U+0924: "त्त" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TA
                  U+091E: "ञ" DEVANAGARI LETTER NYA
                  U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
                  U+0965: "॥" DEVANAGARI DOUBLE DANDA -->
             <Key
-                latin:keyLabel="&#x0924;&#x094D;&#x0924;"
+                latin:keySpec="&#x0924;&#x094D;&#x0924;"
                 latin:moreKeys="&#x091E;,&#x091C;&#x094D;&#x091E;,&#x0965;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0921/U+094D/U+0922: "ड्ढ" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDHA
                  U+0908: "ई" DEVANAGARI LETTER II -->
             <Key
-                latin:keyLabel="&#x0921;&#x094D;&#x0922;"
+                latin:keySpec="&#x0921;&#x094D;&#x0922;"
                 latin:moreKeys="&#x0908;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0910: "ऐ" DEVANAGARI LETTER AI
                  U+0918: "घ" DEVANAGARI LETTER GHA -->
             <Key
-                latin:keyLabel="&#x0910;"
-                latin:moreKeys="&#x0918;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0910;"
+                latin:moreKeys="&#x0918;" />
             <!-- U+0926/U+094D/U+0935: "द्व" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER VA
                  U+0926/U+094D/U+0927: "द्ध" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DHA -->
             <Key
-                latin:keyLabel="&#x0926;&#x094D;&#x0935;"
+                latin:keySpec="&#x0926;&#x094D;&#x0935;"
                 latin:moreKeys="&#x0926;&#x094D;&#x0927;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+091F/U+094D/U+091F: "ट्ट" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTA
                  U+091B: "छ" DEVANAGARI LETTER CHA -->
             <Key
-                latin:keyLabel="&#x091F;&#x094D;&#x091F;"
+                latin:keySpec="&#x091F;&#x094D;&#x091F;"
                 latin:moreKeys="&#x091B;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0920/U+094D/U+0920: "ठ्ठ" DEVANAGARI LETTER TTHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA
                  U+091F: "ट" DEVANAGARI LETTER TTA -->
             <Key
-                latin:keyLabel="&#x0920;&#x094D;&#x0920;"
+                latin:keySpec="&#x0920;&#x094D;&#x0920;"
                 latin:moreKeys="&#x091F;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+090A: "ऊ" DEVANAGARI LETTER UU
                  U+0920: "ठ" DEVANAGARI LETTER TTHA -->
             <Key
-                latin:keyLabel="&#x090A;"
-                latin:moreKeys="&#x0920;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x090A;"
+                latin:moreKeys="&#x0920;" />
             <!-- U+0915/U+094D/U+0937: "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
                  U+0921: "ड" DEVANAGARI LETTER DDA -->
             <Key
-                latin:keyLabel="&#x0915;&#x094D;&#x0937;"
+                latin:keySpec="&#x0915;&#x094D;&#x0937;"
                 latin:moreKeys="&#x0921;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0907: "इ" DEVANAGARI LETTER I
                  U+0922: "ढ" DEVANAGARI LETTER DDHA -->
             <Key
-                latin:keyLabel="&#x0907;"
-                latin:moreKeys="&#x0922;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0907;"
+                latin:moreKeys="&#x0922;" />
             <!-- U+090F: "ए" DEVANAGARI LETTER E
                  U+0923: "ण" DEVANAGARI LETTER NNA -->
             <Key
-                latin:keyLabel="&#x090F;"
-                latin:moreKeys="&#x0923;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x090F;"
+                latin:moreKeys="&#x0923;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_vowel_sign_vocalic_r" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_vocalic_r" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignVocalicR" />
         </case>
         <default>
             <!-- U+091F: "ट" DEVANAGARI LETTER TTA
                  U+0967: "१" DEVANAGARI DIGIT ONE -->
             <Key
-                latin:keyLabel="&#x091F;"
+                latin:keySpec="&#x091F;"
                 latin:keyHintLabel="1"
-                latin:additionalMoreKeys="&#x0967;,1"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x0967;,1" />
             <!-- U+0927: "ध" DEVANAGARI LETTER DHA
                  U+0968: "२" DEVANAGARI DIGIT TWO -->
             <Key
-                latin:keyLabel="&#x0927;"
+                latin:keySpec="&#x0927;"
                 latin:keyHintLabel="2"
-                latin:additionalMoreKeys="&#x0968;,2"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x0968;,2" />
             <!-- U+092D: "भ" DEVANAGARI LETTER BHA
                  U+0969: "३" DEVANAGARI DIGIT THREE -->
             <Key
-                latin:keyLabel="&#x092D;"
+                latin:keySpec="&#x092D;"
                 latin:keyHintLabel="3"
-                latin:additionalMoreKeys="&#x0969;,3"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x0969;,3" />
             <!-- U+091A: "च" DEVANAGARI LETTER CA
                  U+096A: "४" DEVANAGARI DIGIT FOUR -->
             <Key
-                latin:keyLabel="&#x091A;"
+                latin:keySpec="&#x091A;"
                 latin:keyHintLabel="4"
-                latin:additionalMoreKeys="&#x096A;,4"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096A;,4" />
             <!-- U+0924: "त" DEVANAGARI LETTER TA
                  U+096B: "५" DEVANAGARI DIGIT FIVE -->
             <Key
-                latin:keyLabel="&#x0924;"
+                latin:keySpec="&#x0924;"
                 latin:keyHintLabel="5"
-                latin:additionalMoreKeys="&#x096B;,5"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096B;,5" />
             <!-- U+0925: "थ" DEVANAGARI LETTER THA
                  U+096C: "६" DEVANAGARI DIGIT SIX -->
             <Key
-                latin:keyLabel="&#x0925;"
+                latin:keySpec="&#x0925;"
                 latin:keyHintLabel="6"
-                latin:additionalMoreKeys="&#x096C;,6"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096C;,6" />
             <!-- U+0917: "ग" DEVANAGARI LETTER G
                  U+096D: "७" DEVANAGARI DIGIT SEVEN -->
             <Key
-                latin:keyLabel="&#x0917;"
+                latin:keySpec="&#x0917;"
                 latin:keyHintLabel="7"
-                latin:additionalMoreKeys="&#x096D;,7"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096D;,7" />
             <!-- U+0937: "ष" DEVANAGARI LETTER SSA
                  U+096E: "८" DEVANAGARI DIGIT EIGHT -->
             <Key
-                latin:keyLabel="&#x0937;"
+                latin:keySpec="&#x0937;"
                 latin:keyHintLabel="8"
-                latin:additionalMoreKeys="&#x096E;,8"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096E;,8" />
             <!-- U+092F: "य" DEVANAGARI LETTER YA
                  U+096F: "९" DEVANAGARI DIGIT NINE -->
             <Key
-                latin:keyLabel="&#x092F;"
+                latin:keySpec="&#x092F;"
                 latin:keyHintLabel="9"
-                latin:additionalMoreKeys="&#x096F;,9"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x096F;,9" />
             <!-- U+0909: "उ" DEVANAGARI LETTER U
                  U+0966: "०" DEVANAGARI DIGIT ZERO -->
             <Key
-                latin:keyLabel="&#x0909;"
+                latin:keySpec="&#x0909;"
                 latin:keyHintLabel="0"
-                latin:additionalMoreKeys="&#x0966;,0"
-                latin:keyLabelFlags="fontNormal" />
+                latin:additionalMoreKeys="&#x0966;,0" />
             <!-- U+0907: "इ" DEVANAGARI LETTER I
                  U+0914: "औ" DEVANAGARI LETTER AU -->
             <Key
-                latin:keyLabel="&#x0907;"
-                latin:moreKeys="&#x0914;"
-                latin:keyLabelFlags="fontNormal" />
-         </default>
+                latin:keySpec="&#x0907;"
+                latin:moreKeys="&#x0914;" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional2.xml b/java/res/xml/rowkeys_nepali_traditional2.xml
index 45620a9..c443daf 100644
--- a/java/res/xml/rowkeys_nepali_traditional2.xml
+++ b/java/res/xml/rowkeys_nepali_traditional2.xml
@@ -18,122 +18,84 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0906: "आ" DEVANAGARI LETTER AA -->
-            <Key
-                latin:keyLabel="&#x0906;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0906;" />
             <!-- U+0919/U+094D: "ङ्" DEVANAGARI LETTER NGA/DEVANAGARI SIGN VIRAMA -->
             <Key
-                latin:keyLabel="&#x0919;&#x094D;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0919;&#x094D;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0921/U+094D/U+0921: "ड्ड" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDA -->
             <Key
-                latin:keyLabel="&#x0921;&#x094D;&#x0921;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0921;&#x094D;&#x0921;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_candrabindu" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_candrabindu" />
+            <Key latin:keyStyle="baseKeyDevanagariSignCandrabindu" />
             <!-- U+0926/U+094D/U+0926: "द्द" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DA -->
             <Key
-                latin:keyLabel="&#x0926;&#x094D;&#x0926;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0926;&#x094D;&#x0926;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+091D: "झ" DEVANAGARI LETTER JHA -->
-            <Key
-                latin:keyLabel="&#x091D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091D;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignO" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_o" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignO" />
             <!-- U+092B: "फ" DEVANAGARI LETTER PHA -->
-            <Key
-                latin:keyLabel="&#x092B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092B;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignIi" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ii" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignIi" />
             <!-- U+091F/U+094D/U+0920: "ट्ठ" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA -->
             <Key
-                latin:keyLabel="&#x091F;&#x094D;&#x0920;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x091F;&#x094D;&#x0920;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignUu" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_uu" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignUu" />
         </case>
         <default>
             <!-- U+092C: "ब" DEVANAGARI LETTER BA -->
-            <Key
-                latin:keyLabel="&#x092C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092C;" />
             <!-- U+0915: "क" DEVANAGARI LETTER KA -->
-            <Key
-                latin:keyLabel="&#x0915;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0915;" />
             <!-- U+092E: "म" DEVANAGARI LETTER MA -->
-            <Key
-                latin:keyLabel="&#x092E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092E;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignAa" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_aa" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignAa" />
             <!-- U+0928: "न" DEVANAGARI LETTER NA -->
-            <Key
-                latin:keyLabel="&#x0928;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0928;" />
             <!-- U+091C: "ज" DEVANAGARI LETTER JA -->
-            <Key
-                latin:keyLabel="&#x091C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x091C;" />
             <!-- U+0935: "व" DEVANAGARI LETTER VA -->
-            <Key
-                latin:keyLabel="&#x0935;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0935;" />
             <!-- U+092A: "प" DEVANAGARI LETTER PA -->
-            <Key
-                latin:keyLabel="&#x092A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x092A;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignI" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_i" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignI" />
             <!-- U+0938: "स" DEVANAGARI LETTER SA -->
-            <Key
-                latin:keyLabel="&#x0938;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0938;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignU" />
-         </default>
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_u" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignU" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional3_left6.xml b/java/res/xml/rowkeys_nepali_traditional3_left6.xml
index 1cacced..ade2787 100644
--- a/java/res/xml/rowkeys_nepali_traditional3_left6.xml
+++ b/java/res/xml/rowkeys_nepali_traditional3_left6.xml
@@ -18,66 +18,44 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA -->
             <Key
-                latin:keyLabel="&#x0915;&#x094D;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0915;&#x094D;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0939/U+094D/U+092E: "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA -->
             <Key
-                latin:keyLabel="&#x0939;&#x094D;&#x092E;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0939;&#x094D;&#x092E;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R -->
-            <Key
-                latin:keyLabel="&#x090B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x090B;" />
             <!-- U+0950: "ॐ" DEVANAGARI OM -->
-            <Key
-                latin:keyLabel="&#x0950;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0950;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignAu" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignAu" />
             <!-- U+0926/U+094D/U+092F: "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA -->
             <Key
-                latin:keyLabel="&#x0926;&#x094D;&#x092F;"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x0926;&#x094D;&#x092F;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
         </case>
         <default>
             <!-- U+0936: "श" DEVANAGARI LETTER SHA -->
-            <Key
-                latin:keyLabel="&#x0936;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0936;" />
             <!-- U+0939: "ह" DEVANAGARI LETTER HA -->
-            <Key
-                latin:keyLabel="&#x0939;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0939;" />
             <!-- U+0905: "अ" DEVANAGARI LETTER A -->
-            <Key
-                latin:keyLabel="&#x0905;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0905;" />
             <!-- U+0916: "ख" DEVANAGARI LETTER KHA -->
-            <Key
-                latin:keyLabel="&#x0916;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0916;" />
             <!-- U+0926: "द" DEVANAGARI LETTER DA -->
-            <Key
-                latin:keyLabel="&#x0926;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0926;" />
             <!-- U+0932: "ल" DEVANAGARI LETTER LA -->
-            <Key
-                latin:keyLabel="&#x0932;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0932;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional3_right3.xml b/java/res/xml/rowkeys_nepali_traditional3_right3.xml
index b2e01e4..4db438d 100644
--- a/java/res/xml/rowkeys_nepali_traditional3_right3.xml
+++ b/java/res/xml/rowkeys_nepali_traditional3_right3.xml
@@ -18,48 +18,35 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+            <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
             <!-- U+0919: "ङ" DEVANAGARI LETTER NGA -->
-            <Key
-                latin:keyLabel="&#x0919;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0919;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignAi" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignAi" />
         </case>
         <default>
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignE" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignE" />
             <!-- U+0964: "।" DEVANAGARI DANDA -->
+            <Key latin:keySpec="&#x0964;" />
+            <!-- U+0930: "र" DEVANAGARI LETTER RA
+                 U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U -->
             <Key
-                latin:keyLabel="&#x0964;"
-                latin:keyLabelFlags="fontNormal" />
-             <!-- U+0930: "र" DEVANAGARI LETTER RA
-                  U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U -->
-            <Key
-                latin:keyLabel="&#x0930;"
-                latin:moreKeys="&#x0930;&#x0941;"
-                latin:keyLabelFlags="fontNormal" />
-         </default>
+                latin:keySpec="&#x0930;"
+                latin:moreKeys="&#x0930;&#x0941;" />
+        </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional3_right5.xml b/java/res/xml/rowkeys_nepali_traditional3_right5.xml
index 87f0616..c7c73a4 100644
--- a/java/res/xml/rowkeys_nepali_traditional3_right5.xml
+++ b/java/res/xml/rowkeys_nepali_traditional3_right5.xml
@@ -18,71 +18,56 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/key_devanagari_sign_anusvara" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
+            <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
             <!-- U+0919: "ङ" DEVANAGARI LETTER NGA -->
-            <Key
-                latin:keyLabel="&#x0919;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0919;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignAi" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignAi" />
             <!-- U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U -->
             <Key
-                latin:keyLabel="&#x0930;&#x0941;"
+                latin:keySpec="&#x0930;&#x0941;"
                 latin:moreKeys="!"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <Key
-                latin:keyLabel="\?" />
+                latin:keySpec="\?"
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
             <!-- U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
             <Key
                 latin:keyStyle="baseKeyDevanagariSignVisarga"
                 latin:moreKeys="&#x093D;" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
             <!-- Override more keys with empty definition -->
-            <key-style
-                latin:styleName="moreKeysDevanagariVowelSignE" />
-            <Key
-                latin:keyStyle="baseKeyDevanagariVowelSignE" />
+            <key-style latin:styleName="moreKeysDevanagariVowelSignE" />
+            <Key latin:keyStyle="baseKeyDevanagariVowelSignE" />
             <!-- U+0964: "।" DEVANAGARI DANDA -->
-            <Key
-                latin:keyLabel="&#x0964;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0964;" />
             <!-- U+0930: "र" DEVANAGARI LETTER RA -->
             <Key
-                latin:keyLabel="&#x0930;"
-                latin:moreKeys="!"
-                latin:keyLabelFlags="fontNormal" />
+                latin:keySpec="&#x0930;"
+                latin:moreKeys="!" />
             <!-- Because the font rendering system prior to API version 16 can't automatically
                  render dotted circle for incomplete combining letter of some scripts, different
                  set of Key definitions are needed based on the API version. -->
-            <include
-                latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+            <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
             <Key
                 latin:keyStyle="baseKeyDevanagariSignVirama"
                 latin:moreKeys="\?" />
diff --git a/java/res/xml/rowkeys_nordic1.xml b/java/res/xml/rowkeys_nordic1.xml
index 72ac86b..ff589cc 100644
--- a/java/res/xml/rowkeys_nordic1.xml
+++ b/java/res/xml/rowkeys_nordic1.xml
@@ -24,5 +24,5 @@
     <include
         latin:keyboardLayout="@xml/rowkeys_qwerty1" />
     <Key
-        latin:keyLabel="!text/keylabel_for_nordic_row1_11" />
+        latin:keySpec="!text/keyspec_nordic_row1_11" />
 </merge>
diff --git a/java/res/xml/rowkeys_nordic2.xml b/java/res/xml/rowkeys_nordic2.xml
index 836214a..0330c0f 100644
--- a/java/res/xml/rowkeys_nordic2.xml
+++ b/java/res/xml/rowkeys_nordic2.xml
@@ -24,9 +24,9 @@
     <include
         latin:keyboardLayout="@xml/rowkeys_qwerty2" />
     <Key
-        latin:keyLabel="!text/keylabel_for_nordic_row2_10"
-        latin:moreKeys="!text/more_keys_for_nordic_row2_10" />
+        latin:keySpec="!text/keyspec_nordic_row2_10"
+        latin:moreKeys="!text/morekeys_nordic_row2_10" />
     <Key
-        latin:keyLabel="!text/keylabel_for_nordic_row2_11"
-        latin:moreKeys="!text/more_keys_for_nordic_row2_11" />
+        latin:keySpec="!text/keyspec_nordic_row2_11"
+        latin:moreKeys="!text/morekeys_nordic_row2_11" />
 </merge>
diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml
index de548d0..564468a 100644
--- a/java/res/xml/rowkeys_pcqwerty1.xml
+++ b/java/res/xml/rowkeys_pcqwerty1.xml
@@ -21,61 +21,72 @@
 <merge
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
-    <Key
-        latin:keyLabel="`"
-        latin:additionalMoreKeys="~" />
-    <Key
-        latin:keyLabel="1"
-        latin:additionalMoreKeys="!,!text/more_keys_for_symbols_exclamation"
-        latin:moreKeys="!text/more_keys_for_symbols_1" />
-    <Key
-        latin:keyLabel="2"
-        latin:additionalMoreKeys="\@"
-        latin:moreKeys="!text/more_keys_for_symbols_2" />
-    <Key
-        latin:keyLabel="3"
-        latin:additionalMoreKeys="\#"
-        latin:moreKeys="!text/more_keys_for_symbols_3" />
-    <Key
-        latin:keyLabel="4"
-        latin:additionalMoreKeys="$"
-        latin:moreKeys="!text/more_keys_for_symbols_4" />
-    <Key
-        latin:keyLabel="5"
-        latin:additionalMoreKeys="\\%"
-        latin:moreKeys="!text/more_keys_for_symbols_5" />
-    <Key
-        latin:keyLabel="6"
-        latin:additionalMoreKeys="^"
-        latin:moreKeys="!text/more_keys_for_symbols_6" />
-    <Key
-        latin:keyLabel="7"
-        latin:additionalMoreKeys="&amp;"
-        latin:moreKeys="!text/more_keys_for_symbols_7" />
-    <Key
-        latin:keyLabel="8"
-        latin:additionalMoreKeys="*"
-        latin:moreKeys="!text/more_keys_for_symbols_8" />
-    <Key
-        latin:keyLabel="9"
-        latin:additionalMoreKeys="("
-        latin:moreKeys="!text/more_keys_for_symbols_9" />
-    <Key
-        latin:keyLabel="0"
-        latin:additionalMoreKeys=")"
-        latin:moreKeys="!text/more_keys_for_symbols_0" />
-    <!-- U+2013: "–" EN DASH
-         U+2014: "—" EM DASH
-         U+00B7: "·" MIDDLE DOT -->
-    <Key
-        latin:keyLabel="-"
-        latin:additionalMoreKeys="_"
-        latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
-    <!-- U+221E: "∞" INFINITY
-         U+2260: "≠" NOT EQUAL TO
-         U+2248: "≈" ALMOST EQUAL TO -->
-    <Key
-        latin:keyLabel="="
-        latin:additionalMoreKeys="+"
-        latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+    <switch>
+        <case
+            latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+        >
+            <Key
+                latin:keySpec="`"
+                latin:additionalMoreKeys="~" />
+            <Key
+                latin:keySpec="1"
+                latin:additionalMoreKeys="!,!text/morekeys_exclamation"
+                latin:moreKeys="!text/morekeys_symbols_1" />
+            <Key
+                latin:keySpec="2"
+                latin:additionalMoreKeys="\@"
+                latin:moreKeys="!text/morekeys_symbols_2" />
+            <Key
+                latin:keySpec="3"
+                latin:additionalMoreKeys="\#"
+                latin:moreKeys="!text/morekeys_symbols_3" />
+            <Key
+                latin:keySpec="4"
+                latin:additionalMoreKeys="$"
+                latin:moreKeys="!text/morekeys_symbols_4" />
+            <Key
+                latin:keySpec="5"
+                latin:additionalMoreKeys="\\%"
+                latin:moreKeys="!text/morekeys_symbols_5" />
+            <Key
+                latin:keySpec="6"
+                latin:additionalMoreKeys="^"
+                latin:moreKeys="!text/morekeys_symbols_6" />
+            <Key
+                latin:keySpec="7"
+                latin:additionalMoreKeys="&amp;"
+                latin:moreKeys="!text/morekeys_symbols_7" />
+            <Key
+                latin:keySpec="8"
+                latin:additionalMoreKeys="*"
+                latin:moreKeys="!text/morekeys_symbols_8" />
+            <Key
+                latin:keySpec="9"
+                latin:additionalMoreKeys="("
+                latin:moreKeys="!text/morekeys_symbols_9" />
+            <Key
+                latin:keySpec="0"
+                latin:additionalMoreKeys=")"
+                latin:moreKeys="!text/morekeys_symbols_0" />
+            <!-- U+2013: "–" EN DASH
+                 U+2014: "—" EM DASH
+                 U+00B7: "·" MIDDLE DOT -->
+            <Key
+                latin:keySpec="-"
+                latin:additionalMoreKeys="_"
+                latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+            <!-- U+221E: "∞" INFINITY
+                 U+2260: "≠" NOT EQUAL TO
+                 U+2248: "≈" ALMOST EQUAL TO -->
+            <Key
+                latin:keySpec="="
+                latin:additionalMoreKeys="+"
+                latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+        </case>
+        <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+        <default>
+            <include
+                 latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+        </default>
+    </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_pcqwerty1_shift.xml b/java/res/xml/rowkeys_pcqwerty1_shift.xml
index bc39f94..c72040f 100644
--- a/java/res/xml/rowkeys_pcqwerty1_shift.xml
+++ b/java/res/xml/rowkeys_pcqwerty1_shift.xml
@@ -22,39 +22,38 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="~" />
+        latin:keySpec="~" />
     <Key
-        latin:keyLabel="!"
-        latin:additionalMoreKeys="!text/more_keys_for_symbols_exclamation" />
+        latin:keySpec="!"
+        latin:additionalMoreKeys="!text/morekeys_exclamation" />
     <Key
-        latin:keyLabel="\@" />
+        latin:keySpec="\@" />
     <Key
-        latin:keyLabel="\#" />
+        latin:keySpec="\#" />
     <Key
-        latin:keyLabel="$"
-        latin:additionalMoreKeys="!text/more_keys_for_currency_dollar" />
+        latin:keySpec="$"
+        latin:additionalMoreKeys="!text/morekeys_currency_dollar" />
     <Key
-        latin:keyLabel="%"
-        latin:additionalMoreKeys="!text/more_keys_for_symbols_percent" />
+        latin:keySpec="%"
+        latin:additionalMoreKeys="!text/morekeys_symbols_percent" />
     <Key
-        latin:keyLabel="^" />
+        latin:keySpec="^" />
     <Key
-        latin:keyLabel="&amp;" />
+        latin:keySpec="&amp;" />
     <Key
-        latin:keyLabel="*"
-        latin:additionalMoreKeys="!text/more_keys_for_star" />
+        latin:keySpec="*"
+        latin:additionalMoreKeys="!text/morekeys_star" />
     <Key
-        latin:keyLabel="(" />
+        latin:keySpec="(" />
     <Key
-        latin:keyLabel=")" />
+        latin:keySpec=")" />
     <Key
-        latin:keyLabel="_" />
-    <!-- U+00B1: "±" PLUS-MINUS SIGN
-         U+00D7: "×" MULTIPLICATION SIGN
+        latin:keySpec="_" />
+    <!-- U+00D7: "×" MULTIPLICATION SIGN
          U+00F7: "÷" DIVISION SIGN
          U+221A: "√" SQUARE ROOT -->
     <Key
-        latin:keyLabel="+"
-        latin:additionalMoreKeys="!text/more_keys_for_plus"
-        latin:moreKeys="&#x00B1;,&#x00D7;,&#x00F7;,&#x221A;" />
+        latin:keySpec="+"
+        latin:additionalMoreKeys="!text/morekeys_plus"
+        latin:moreKeys="&#x00D7;,&#x00F7;,&#x221A;" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty1.xml b/java/res/xml/rowkeys_qwerty1.xml
index e7c9b59..8f3b160 100644
--- a/java/res/xml/rowkeys_qwerty1.xml
+++ b/java/res/xml/rowkeys_qwerty1.xml
@@ -22,52 +22,52 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="!text/keylabel_for_q"
+        latin:keySpec="!text/keyspec_q"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1"
-        latin:moreKeys="!text/more_keys_for_q" />
+        latin:moreKeys="!text/morekeys_q" />
     <Key
-        latin:keyLabel="!text/keylabel_for_w"
+        latin:keySpec="!text/keyspec_w"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2"
-        latin:moreKeys="!text/more_keys_for_w" />
+        latin:moreKeys="!text/morekeys_w" />
     <Key
-        latin:keyLabel="e"
+        latin:keySpec="e"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="!text/more_keys_for_e" />
+        latin:moreKeys="!text/morekeys_e" />
     <Key
-        latin:keyLabel="r"
+        latin:keySpec="r"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4"
-        latin:moreKeys="!text/more_keys_for_r" />
+        latin:moreKeys="!text/morekeys_r" />
     <Key
-        latin:keyLabel="t"
+        latin:keySpec="t"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_t" />
+        latin:moreKeys="!text/morekeys_t" />
     <Key
-        latin:keyLabel="!text/keylabel_for_y"
+        latin:keySpec="!text/keyspec_y"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="!text/more_keys_for_y" />
+        latin:moreKeys="!text/morekeys_y" />
     <Key
-        latin:keyLabel="u"
+        latin:keySpec="u"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_u" />
+        latin:moreKeys="!text/morekeys_u" />
     <Key
-        latin:keyLabel="i"
+        latin:keySpec="i"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="!text/more_keys_for_i" />
+        latin:moreKeys="!text/morekeys_i" />
     <Key
-        latin:keyLabel="o"
+        latin:keySpec="o"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9"
-        latin:moreKeys="!text/more_keys_for_o" />
+        latin:moreKeys="!text/morekeys_o" />
     <Key
-        latin:keyLabel="p"
+        latin:keySpec="p"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty2.xml b/java/res/xml/rowkeys_qwerty2.xml
index d9777d9..4077bea 100644
--- a/java/res/xml/rowkeys_qwerty2.xml
+++ b/java/res/xml/rowkeys_qwerty2.xml
@@ -22,29 +22,29 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="a"
-        latin:moreKeys="!text/more_keys_for_a" />
+        latin:keySpec="a"
+        latin:moreKeys="!text/morekeys_a" />
     <Key
-        latin:keyLabel="s"
-        latin:moreKeys="!text/more_keys_for_s" />
+        latin:keySpec="s"
+        latin:moreKeys="!text/morekeys_s" />
     <Key
-        latin:keyLabel="d"
-        latin:moreKeys="!text/more_keys_for_d" />
+        latin:keySpec="d"
+        latin:moreKeys="!text/morekeys_d" />
     <Key
-        latin:keyLabel="f" />
+        latin:keySpec="f" />
     <Key
-        latin:keyLabel="g"
-        latin:moreKeys="!text/more_keys_for_g" />
+        latin:keySpec="g"
+        latin:moreKeys="!text/morekeys_g" />
     <Key
-        latin:keyLabel="h"
-        latin:moreKeys="!text/more_keys_for_h" />
+        latin:keySpec="h"
+        latin:moreKeys="!text/morekeys_h" />
     <Key
-        latin:keyLabel="j"
-        latin:moreKeys="!text/more_keys_for_j" />
+        latin:keySpec="j"
+        latin:moreKeys="!text/morekeys_j" />
     <Key
-        latin:keyLabel="k"
-        latin:moreKeys="!text/more_keys_for_k" />
+        latin:keySpec="k"
+        latin:moreKeys="!text/morekeys_k" />
     <Key
-        latin:keyLabel="l"
-        latin:moreKeys="!text/more_keys_for_l" />
+        latin:keySpec="l"
+        latin:moreKeys="!text/morekeys_l" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwerty3.xml b/java/res/xml/rowkeys_qwerty3.xml
index b70fd72..8562003 100644
--- a/java/res/xml/rowkeys_qwerty3.xml
+++ b/java/res/xml/rowkeys_qwerty3.xml
@@ -22,22 +22,22 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="z"
-        latin:moreKeys="!text/more_keys_for_z" />
+        latin:keySpec="z"
+        latin:moreKeys="!text/morekeys_z" />
     <Key
-        latin:keyLabel="!text/keylabel_for_x"
-        latin:moreKeys="!text/more_keys_for_x" />
+        latin:keySpec="!text/keyspec_x"
+        latin:moreKeys="!text/morekeys_x" />
     <Key
-        latin:keyLabel="c"
-        latin:moreKeys="!text/more_keys_for_c" />
+        latin:keySpec="c"
+        latin:moreKeys="!text/morekeys_c" />
     <Key
-        latin:keyLabel="v"
-        latin:moreKeys="!text/more_keys_for_v" />
+        latin:keySpec="v"
+        latin:moreKeys="!text/morekeys_v" />
     <Key
-        latin:keyLabel="b" />
+        latin:keySpec="b" />
     <Key
-        latin:keyLabel="n"
-        latin:moreKeys="!text/more_keys_for_n" />
+        latin:keySpec="n"
+        latin:moreKeys="!text/morekeys_n" />
     <Key
-        latin:keyLabel="m" />
+        latin:keySpec="m" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwertz1.xml b/java/res/xml/rowkeys_qwertz1.xml
index d87f03d..c4edae3 100644
--- a/java/res/xml/rowkeys_qwertz1.xml
+++ b/java/res/xml/rowkeys_qwertz1.xml
@@ -22,51 +22,51 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="q"
+        latin:keySpec="q"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <Key
-        latin:keyLabel="w"
+        latin:keySpec="w"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2"
-        latin:moreKeys="!text/more_keys_for_w" />
+        latin:moreKeys="!text/morekeys_w" />
     <Key
-        latin:keyLabel="e"
+        latin:keySpec="e"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="!text/more_keys_for_e" />
+        latin:moreKeys="!text/morekeys_e" />
     <Key
-        latin:keyLabel="r"
+        latin:keySpec="r"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4"
-        latin:moreKeys="!text/more_keys_for_r" />
+        latin:moreKeys="!text/morekeys_r" />
     <Key
-        latin:keyLabel="t"
+        latin:keySpec="t"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5"
-        latin:moreKeys="!text/more_keys_for_t" />
+        latin:moreKeys="!text/morekeys_t" />
     <Key
-        latin:keyLabel="z"
+        latin:keySpec="z"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6"
-        latin:moreKeys="!text/more_keys_for_z" />
+        latin:moreKeys="!text/morekeys_z" />
      <Key
-        latin:keyLabel="u"
+        latin:keySpec="u"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7"
-        latin:moreKeys="!text/more_keys_for_u" />
+        latin:moreKeys="!text/morekeys_u" />
     <Key
-        latin:keyLabel="i"
+        latin:keySpec="i"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="!text/more_keys_for_i" />
+        latin:moreKeys="!text/morekeys_i" />
     <Key
-        latin:keyLabel="o"
+        latin:keySpec="o"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9"
-        latin:moreKeys="!text/more_keys_for_o" />
+        latin:moreKeys="!text/morekeys_o" />
     <Key
-        latin:keyLabel="p"
+        latin:keySpec="p"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
 </merge>
diff --git a/java/res/xml/rowkeys_qwertz3.xml b/java/res/xml/rowkeys_qwertz3.xml
index 9e39fe0..a66c348 100644
--- a/java/res/xml/rowkeys_qwertz3.xml
+++ b/java/res/xml/rowkeys_qwertz3.xml
@@ -22,21 +22,21 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="y"
-        latin:moreKeys="!text/more_keys_for_y" />
+        latin:keySpec="y"
+        latin:moreKeys="!text/morekeys_y" />
     <Key
-        latin:keyLabel="x" />
+        latin:keySpec="x" />
     <Key
-        latin:keyLabel="c"
-        latin:moreKeys="!text/more_keys_for_c" />
+        latin:keySpec="c"
+        latin:moreKeys="!text/morekeys_c" />
     <Key
-        latin:keyLabel="v"
-        latin:moreKeys="!text/more_keys_for_v" />
+        latin:keySpec="v"
+        latin:moreKeys="!text/morekeys_v" />
     <Key
-        latin:keyLabel="b" />
+        latin:keySpec="b" />
     <Key
-        latin:keyLabel="n"
-        latin:moreKeys="!text/more_keys_for_n" />
+        latin:keySpec="n"
+        latin:moreKeys="!text/morekeys_n" />
     <Key
-        latin:keyLabel="m" />
+        latin:keySpec="m" />
 </merge>
diff --git a/java/res/xml/rowkeys_sinhala1.xml b/java/res/xml/rowkeys_sinhala1.xml
new file mode 100644
index 0000000..2ecb47e
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala1.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+0DD6: "ූ" SINHALA VOWEL SIGN DIGA PAA-PILLA -->
+            <Key latin:keySpec="&#x0DD6;" />
+            <!-- U+0D8B: "උ" SINHALA LETTER UYANNA -->
+            <Key latin:keySpec="&#x0D8B;" />
+            <!-- U+0DD1: "ෑ" SINHALA VOWEL SIGN DIGA AEDA-PILLA -->
+            <Key latin:keySpec="&#x0DD1;" />
+            <!-- U+0D8D: "ඍ" SINHALA LETTER IRUYANNA -->
+            <Key latin:keySpec="&#x0D8D;" />
+            <!-- U+0D94: "ඔ" SINHALA LETTER OYANNA -->
+            <Key latin:keySpec="&#x0D94;" />
+            <!-- U+0DC1: "ශ" SINHALA LETTER TAALUJA SAYANNA -->
+            <Key latin:keySpec="&#x0DC1;" />
+            <!-- U+0DB9: "ඹ" SINHALA LETTER AMBA BAYANNA -->
+            <Key latin:keySpec="&#x0DB9;" />
+            <!-- U+0DC2: "ෂ" SINHALA LETTER MUURDHAJA SAYANNA -->
+            <Key latin:keySpec="&#x0DC2;" />
+            <!-- U+0DB0: "ධ" SINHALA LETTER MAHAAPRAANA DAYANNA -->
+            <Key latin:keySpec="&#x0DB0;" />
+            <!-- U+0DA1: "ඡ" SINHALA LETTER MAHAAPRAANA CAYANNA -->
+            <Key latin:keySpec="&#x0DA1;" />
+            <!-- U+0DA5: "ඥ" SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+                 U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA  -->
+            <Key
+                latin:keySpec="&#x0DA5;"
+                latin:moreKeys="&#x0DF4;" />
+        </case>
+        <default>
+            <!-- U+0DD4: "ු" SINHALA VOWEL SIGN KETTI PAA-PILLA -->
+            <Key
+                latin:keySpec="&#x0DD4;"
+                latin:keyHintLabel="1"
+                latin:additionalMoreKeys="1" />
+            <!-- U+0D85: "අ" SINHALA LETTER AYANNA -->
+            <Key
+                latin:keySpec="&#x0D85;"
+                latin:keyHintLabel="2"
+                latin:additionalMoreKeys="2" />
+            <!-- U+0DD0: "ැ" SINHALA VOWEL SIGN KETTI AEDA-PILLA -->
+            <Key
+                latin:keySpec="&#x0DD0;"
+                latin:keyHintLabel="3"
+                latin:additionalMoreKeys="3" />
+            <!-- U+0DBB: "ර" SINHALA LETTER RAYANNA -->
+            <Key
+                latin:keySpec="&#x0DBB;"
+                latin:keyHintLabel="4"
+                latin:additionalMoreKeys="4" />
+            <!-- U+0D91: "එ" SINHALA LETTER EYANNA -->
+            <Key
+                latin:keySpec="&#x0D91;"
+                latin:keyHintLabel="5"
+                latin:additionalMoreKeys="5" />
+            <!-- U+0DC4: "හ" SINHALA LETTER HAYANNA -->
+            <Key
+                latin:keySpec="&#x0DC4;"
+                latin:keyHintLabel="6"
+                latin:additionalMoreKeys="6" />
+            <!-- U+0DB8: "ම" SINHALA LETTER MAYANNA -->
+            <Key
+                latin:keySpec="&#x0DB8;"
+                latin:keyHintLabel="7"
+                latin:additionalMoreKeys="7" />
+            <!-- U+0DC3: "ස" SINHALA LETTER DANTAJA SAYANNA -->
+            <Key
+                latin:keySpec="&#x0DC3;"
+                latin:keyHintLabel="8"
+                latin:additionalMoreKeys="8" />
+            <!-- U+0DAF: "ද" SINHALA LETTER ALPAPRAANA DAYANNA
+                 U+0DB3: "ඳ" SINHALA LETTER SANYAKA DAYANNA -->
+            <Key
+                latin:keySpec="&#x0DAF;"
+                latin:moreKeys="&#x0DB3;"
+                latin:keyHintLabel="9"
+                latin:additionalMoreKeys="9" />
+            <!-- U+0DA0: "ච" SINHALA LETTER ALPAPRAANA CAYANNA -->
+            <Key
+                latin:keySpec="&#x0DA0;"
+                latin:keyHintLabel="0"
+                latin:additionalMoreKeys="0" />
+            <!-- U+0DA4: "ඤ" SINHALA LETTER TAALUJA NAASIKYAYA
+                 U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA -->
+            <Key
+                latin:keySpec="&#x0DA4;"
+                latin:moreKeys="&#x0DF4;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_sinhala2.xml b/java/res/xml/rowkeys_sinhala2.xml
new file mode 100644
index 0000000..92c1e08
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala2.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+0DDF: "ෟ" SINHALA VOWEL SIGN GAYANUKITTA -->
+            <Key latin:keySpec="&#x0DDF;" />
+            <!-- U+0DD3: "ී" SINHALA VOWEL SIGN DIGA IS-PILLA -->
+            <Key latin:keySpec="&#x0DD3;" />
+            <!-- U+0DD8: "ෘ" SINHALA VOWEL SIGN GAETTA-PILLA -->
+            <Key latin:keySpec="&#x0DD8;" />
+            <!-- U+0DC6: "ෆ" SINHALA LETTER FAYANNA -->
+            <Key latin:keySpec="&#x0DC6;" />
+            <!-- U+0DA8: "ඨ" SINHALA LETTER MAHAAPRAANA TTAYANNA -->
+            <Key latin:keySpec="&#x0DA8;" />
+            <!-- U+0DCA/U+200D/U+0DBA: "්‍ය" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER YAYANNA -->
+            <Key latin:keySpec="&#x0DCA;&#x200D;&#x0DBA;" />
+            <!-- U+0DC5/U+0DD4: "ළු" SINHALA LETTER MUURDHAJA LAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA -->
+            <Key latin:keySpec="&#x0DC5;&#x0DD4;" />
+            <!-- U+0DAB: "ණ" SINHALA LETTER MUURDHAJA NAYANNA -->
+            <Key latin:keySpec="&#x0DAB;" />
+            <!-- U+0D9B: "ඛ" SINHALA LETTER MAHAAPRAANA KAYANNA -->
+            <Key latin:keySpec="&#x0D9B;" />
+            <!-- U+0DAE: "ථ" SINHALA LETTER MAHAAPRAANA TAYANNA -->
+            <Key latin:keySpec="&#x0DAE;" />
+            <!-- U+0DCA/U+200D/U+0DBB: "්‍ර" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER RAYANNA -->
+            <Key latin:keySpec="&#x0DCA;&#x200D;&#x0DBB;" />
+        </case>
+        <default>
+            <!-- U+0DCA: "්" SINHALA SIGN AL-LAKUNA -->
+            <Key latin:keySpec="&#x0DCA;" />
+            <!-- U+0DD2: "ි" SINHALA VOWEL SIGN KETTI IS-PILLA -->
+            <Key latin:keySpec="&#x0DD2;" />
+            <!-- U+0DCF: "ා" SINHALA VOWEL SIGN AELA-PILLA -->
+            <Key latin:keySpec="&#x0DCF;" />
+            <!-- U+0DD9: "ෙ" SINHALA VOWEL SIGN KOMBUVA -->
+            <Key latin:keySpec="&#x0DD9;" />
+            <!-- U+0DA7: "ට" SINHALA LETTER ALPAPRAANA TTAYANNA -->
+            <Key latin:keySpec="&#x0DA7;" />
+            <!-- U+0DBA: "ය" SINHALA LETTER YAYANNA -->
+            <Key latin:keySpec="&#x0DBA;" />
+            <!-- U+0DC0: "ව" SINHALA LETTER VAYANNA -->
+            <Key latin:keySpec="&#x0DC0;" />
+            <!-- U+0DB1: "න" SINHALA LETTER DANTAJA NAYANNA -->
+            <Key latin:keySpec="&#x0DB1;" />
+            <!-- U+0D9A: "ක" SINHALA LETTER ALPAPRAANA KAYANNA -->
+            <Key latin:keySpec="&#x0D9A;" />
+            <!-- U+0DAD: "ත" SINHALA LETTER ALPAPRAANA TAYANNA -->
+            <Key latin:keySpec="&#x0DAD;" />
+            <!-- U+0D8F: "ඏ" SINHALA LETTER ILUYANNA -->
+            <Key latin:keySpec="&#x0D8F;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_sinhala3.xml b/java/res/xml/rowkeys_sinhala3.xml
new file mode 100644
index 0000000..8727875
--- /dev/null
+++ b/java/res/xml/rowkeys_sinhala3.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <switch>
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+            <!-- U+0D9E: "ඞ" SINHALA LETTER KANTAJA NAASIKYAYA -->
+            <Key latin:keySpec="&#x0D9E;" />
+            <!-- U+0DA3: "ඣ" SINHALA LETTER MAHAAPRAANA JAYANNA -->
+            <Key latin:keySpec="&#x0DA3;" />
+            <!-- U+0DAA: "ඪ" SINHALA LETTER MAHAAPRAANA DDAYANNA -->
+            <Key latin:keySpec="&#x0DAA;" />
+            <!-- U+0D8A: "ඊ" SINHALA LETTER IIYANNA -->
+            <Key latin:keySpec="&#x0D8A;" />
+            <!-- U+0DB7: "භ" SINHALA LETTER MAHAAPRAANA BAYANNA -->
+            <Key latin:keySpec="&#x0DB7;" />
+            <!-- U+0DB5: "ඵ" SINHALA LETTER MAHAAPRAANA PAYANNA -->
+            <Key latin:keySpec="&#x0DB5;" />
+            <!-- U+0DC5: "ළ" SINHALA LETTER MUURDHAJA LAYANNA -->
+            <Key latin:keySpec="&#x0DC5;" />
+            <!-- U+0D9D: "ඝ" SINHALA LETTER MAHAAPRAANA GAYANNA -->
+            <Key latin:keySpec="&#x0D9D;" />
+            <!-- U+0DBB/U+0DCA/U+200D: "ර්‍" SINHALA LETTER RAYANNA/SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER -->
+            <Key latin:keySpec="&#x0DBB;&#x0DCA;&#x200D;" />
+        </case>
+        <default>
+            <!-- U+0D82: "ං" SINHALA SIGN ANUSVARAYA
+                 U+0D83: "ඃ" SINHALA SIGN VISARGAYA -->
+            <Key
+                latin:keySpec="&#x0D82;"
+                latin:moreKeys="&#x0D83;" />
+            <!-- U+0DA2: "ජ" SINHALA LETTER ALPAPRAANA JAYANNA
+                 U+0DA6: "ඦ" SINHALA LETTER SANYAKA JAYANNA -->
+            <Key
+                latin:keySpec="&#x0DA2;"
+                latin:moreKeys="&#x0DA6;" />
+            <!-- U+0DA9: "ඩ" SINHALA LETTER ALPAPRAANA DDAYANNA
+                 U+0DAC: "ඬ" SINHALA LETTER SANYAKA DDAYANNA -->
+            <Key
+                latin:keySpec="&#x0DA9;"
+                latin:moreKeys="&#x0DAC;" />
+            <!-- U+0D89: "ඉ" SINHALA LETTER IYANNA -->
+            <Key latin:keySpec="&#x0D89;" />
+            <!-- U+0DB6: "බ" SINHALA LETTER ALPAPRAANA BAYANNA -->
+            <Key latin:keySpec="&#x0DB6;" />
+            <!-- U+0DB4: "ප" SINHALA LETTER ALPAPRAANA PAYANNA -->
+            <Key latin:keySpec="&#x0DB4;" />
+            <!-- U+0DBD: "ල" SINHALA LETTER DANTAJA LAYANNA -->
+            <Key latin:keySpec="&#x0DBD;" />
+            <!-- U+0D9C: "ග" SINHALA LETTER ALPAPRAANA GAYANNA
+                 U+0D9F: "ඟ" SINHALA LETTER SANYAKA GAYANNA -->
+            <Key
+                latin:keySpec="&#x0D9C;"
+                latin:moreKeys="&#x0D9F;" />
+            <!-- U+0DF3: "ෳ" SINHALA VOWEL SIGN DIGA GAYANUKITTA -->
+            <Key latin:keySpec="&#x0DF3;" />
+        </default>
+    </switch>
+</merge>
diff --git a/java/res/xml/rowkeys_south_slavic1.xml b/java/res/xml/rowkeys_south_slavic1.xml
index 6117d46..064f164 100644
--- a/java/res/xml/rowkeys_south_slavic1.xml
+++ b/java/res/xml/rowkeys_south_slavic1.xml
@@ -23,56 +23,56 @@
 >
     <!-- U+0459: "љ" CYRILLIC SMALL LETTER LJE -->
     <Key
-        latin:keyLabel="&#x0459;"
+        latin:keySpec="&#x0459;"
         latin:keyHintLabel="1"
         latin:additionalMoreKeys="1" />
     <!-- U+045A: "њ" CYRILLIC SMALL LETTER NJE -->
     <Key
-        latin:keyLabel="&#x045A;"
+        latin:keySpec="&#x045A;"
         latin:keyHintLabel="2"
         latin:additionalMoreKeys="2" />
     <!-- U+0435: "е" CYRILLIC SMALL LETTER IE -->
     <Key
-        latin:keyLabel="&#x0435;"
+        latin:keySpec="&#x0435;"
         latin:keyHintLabel="3"
         latin:additionalMoreKeys="3"
-        latin:moreKeys="!text/more_keys_for_cyrillic_ie" />
+        latin:moreKeys="!text/morekeys_cyrillic_ie" />
     <!-- U+0440: "р" CYRILLIC SMALL LETTER ER -->
     <Key
-        latin:keyLabel="&#x0440;"
+        latin:keySpec="&#x0440;"
         latin:keyHintLabel="4"
         latin:additionalMoreKeys="4" />
     <!-- U+0442: "т" CYRILLIC SMALL LETTER TE -->
     <Key
-        latin:keyLabel="&#x0442;"
+        latin:keySpec="&#x0442;"
         latin:keyHintLabel="5"
         latin:additionalMoreKeys="5" />
     <Key
-        latin:keyLabel="!text/keylabel_for_south_slavic_row1_6"
+        latin:keySpec="!text/keyspec_south_slavic_row1_6"
         latin:keyHintLabel="6"
         latin:additionalMoreKeys="6" />
     <!-- U+0443: "у" CYRILLIC SMALL LETTER U -->
     <Key
-        latin:keyLabel="&#x0443;"
+        latin:keySpec="&#x0443;"
         latin:keyHintLabel="7"
         latin:additionalMoreKeys="7" />
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
     <Key
-        latin:keyLabel="&#x0438;"
+        latin:keySpec="&#x0438;"
         latin:keyHintLabel="8"
         latin:additionalMoreKeys="8"
-        latin:moreKeys="!text/more_keys_for_cyrillic_i" />
+        latin:moreKeys="!text/morekeys_cyrillic_i" />
     <!-- U+043E: "о" CYRILLIC SMALL LETTER O -->
     <Key
-        latin:keyLabel="&#x043E;"
+        latin:keySpec="&#x043E;"
         latin:keyHintLabel="9"
         latin:additionalMoreKeys="9" />
     <!-- U+043F: "п" CYRILLIC SMALL LETTER PE -->
     <Key
-        latin:keyLabel="&#x043F;"
+        latin:keySpec="&#x043F;"
         latin:keyHintLabel="0"
         latin:additionalMoreKeys="0" />
     <!-- U+0448: "ш" CYRILLIC SMALL LETTER SHA -->
     <Key
-        latin:keyLabel="&#x0448;" />
+        latin:keySpec="&#x0448;" />
 </merge>
diff --git a/java/res/xml/rowkeys_south_slavic2.xml b/java/res/xml/rowkeys_south_slavic2.xml
index 88e8940..3b98001 100644
--- a/java/res/xml/rowkeys_south_slavic2.xml
+++ b/java/res/xml/rowkeys_south_slavic2.xml
@@ -23,34 +23,34 @@
 >
     <!-- U+0430: "а" CYRILLIC SMALL LETTER A -->
     <Key
-        latin:keyLabel="&#x0430;" />
+        latin:keySpec="&#x0430;" />
     <!-- U+0441: "с" CYRILLIC SMALL LETTER ES -->
     <Key
-        latin:keyLabel="&#x0441;" />
+        latin:keySpec="&#x0441;" />
     <!-- U+0434: "д" CYRILLIC SMALL LETTER DE -->
     <Key
-        latin:keyLabel="&#x0434;" />
+        latin:keySpec="&#x0434;" />
     <!-- U+0444: "ф" CYRILLIC SMALL LETTER EF -->
     <Key
-        latin:keyLabel="&#x0444;" />
+        latin:keySpec="&#x0444;" />
     <!-- U+0433: "г" CYRILLIC SMALL LETTER GHE -->
     <Key
-        latin:keyLabel="&#x0433;" />
+        latin:keySpec="&#x0433;" />
     <!-- U+0445: "х" CYRILLIC SMALL LETTER HA -->
     <Key
-        latin:keyLabel="&#x0445;" />
+        latin:keySpec="&#x0445;" />
     <!-- U+0458: "ј" CYRILLIC SMALL LETTER JE -->
     <Key
-        latin:keyLabel="&#x0458;" />
+        latin:keySpec="&#x0458;" />
     <!-- U+043A: "к" CYRILLIC SMALL LETTER KA -->
     <Key
-        latin:keyLabel="&#x043A;" />
+        latin:keySpec="&#x043A;" />
     <!-- U+043B: "л" CYRILLIC SMALL LETTER EL -->
     <Key
-        latin:keyLabel="&#x043B;" />
+        latin:keySpec="&#x043B;" />
     <!-- U+0447: "ч" CYRILLIC SMALL LETTER CHE -->
     <Key
-        latin:keyLabel="&#x0447;" />
+        latin:keySpec="&#x0447;" />
     <Key
-        latin:keyLabel="!text/keylabel_for_south_slavic_row2_11" />
+        latin:keySpec="!text/keyspec_south_slavic_row2_11" />
 </merge>
diff --git a/java/res/xml/rowkeys_south_slavic3.xml b/java/res/xml/rowkeys_south_slavic3.xml
index b015509..31df9b9 100644
--- a/java/res/xml/rowkeys_south_slavic3.xml
+++ b/java/res/xml/rowkeys_south_slavic3.xml
@@ -22,28 +22,28 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="!text/keylabel_for_south_slavic_row3_1" />
+        latin:keySpec="!text/keyspec_south_slavic_row3_1" />
     <!-- U+045F: "џ" CYRILLIC SMALL LETTER DZHE -->
     <Key
-        latin:keyLabel="&#x045F;" />
+        latin:keySpec="&#x045F;" />
     <!-- U+0446: "ц" CYRILLIC SMALL LETTER TSE -->
     <Key
-        latin:keyLabel="&#x0446;" />
+        latin:keySpec="&#x0446;" />
     <!-- U+0432: "в" CYRILLIC SMALL LETTER VE -->
     <Key
-        latin:keyLabel="&#x0432;" />
+        latin:keySpec="&#x0432;" />
     <!-- U+0431: "б" CYRILLIC SMALL LETTER BE -->
     <Key
-        latin:keyLabel="&#x0431;" />
+        latin:keySpec="&#x0431;" />
     <!-- U+043D: "н" CYRILLIC SMALL LETTER EN -->
     <Key
-        latin:keyLabel="&#x043D;" />
+        latin:keySpec="&#x043D;" />
     <!-- U+043C: "м" CYRILLIC SMALL LETTER EM -->
     <Key
-        latin:keyLabel="&#x043C;" />
+        latin:keySpec="&#x043C;" />
     <Key
-        latin:keyLabel="!text/keylabel_for_south_slavic_row3_8" />
+        latin:keySpec="!text/keyspec_south_slavic_row3_8" />
     <!-- U+0436: "ж" CYRILLIC SMALL LETTER ZHE -->
     <Key
-        latin:keyLabel="&#x0436;" />
+        latin:keySpec="&#x0436;" />
 </merge>
diff --git a/java/res/xml/rowkeys_spanish2.xml b/java/res/xml/rowkeys_spanish2.xml
index 335dff3..5c7f67c 100644
--- a/java/res/xml/rowkeys_spanish2.xml
+++ b/java/res/xml/rowkeys_spanish2.xml
@@ -25,5 +25,5 @@
         latin:keyboardLayout="@xml/rowkeys_qwerty2" />
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
     <Key
-        latin:keyLabel="!text/keylabel_for_spanish_row2_10" />
+        latin:keySpec="!text/keyspec_spanish_row2_10" />
  </merge>
diff --git a/java/res/xml/rowkeys_swiss1.xml b/java/res/xml/rowkeys_swiss1.xml
new file mode 100644
index 0000000..2b82c81
--- /dev/null
+++ b/java/res/xml/rowkeys_swiss1.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rowkeys_qwertz1" />
+    <Key
+        latin:keySpec="!text/keyspec_swiss_row1_11"
+        latin:moreKeys="!text/morekeys_swiss_row1_11" />
+</merge>
diff --git a/java/res/xml/rowkeys_swiss2.xml b/java/res/xml/rowkeys_swiss2.xml
new file mode 100644
index 0000000..7709111
--- /dev/null
+++ b/java/res/xml/rowkeys_swiss2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rowkeys_qwerty2" />
+    <Key
+        latin:keySpec="!text/keyspec_swiss_row2_10"
+        latin:moreKeys="!text/morekeys_swiss_row2_10" />
+    <Key
+        latin:keySpec="!text/keyspec_swiss_row2_11"
+        latin:moreKeys="!text/morekeys_swiss_row2_11" />
+</merge>
diff --git a/java/res/xml/rowkeys_symbols1.xml b/java/res/xml/rowkeys_symbols1.xml
index 6e2f92d..daf9087 100644
--- a/java/res/xml/rowkeys_symbols1.xml
+++ b/java/res/xml/rowkeys_symbols1.xml
@@ -22,43 +22,43 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_1"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_1"
-        latin:moreKeys="!text/more_keys_for_symbols_1" />
+        latin:keySpec="!text/keyspec_symbols_1"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_1"
+        latin:moreKeys="!text/morekeys_symbols_1" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_2"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_2"
-        latin:moreKeys="!text/more_keys_for_symbols_2" />
+        latin:keySpec="!text/keyspec_symbols_2"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_2"
+        latin:moreKeys="!text/morekeys_symbols_2" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_3"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_3"
-        latin:moreKeys="!text/more_keys_for_symbols_3" />
+        latin:keySpec="!text/keyspec_symbols_3"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_3"
+        latin:moreKeys="!text/morekeys_symbols_3" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_4"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_4"
-        latin:moreKeys="!text/more_keys_for_symbols_4" />
+        latin:keySpec="!text/keyspec_symbols_4"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_4"
+        latin:moreKeys="!text/morekeys_symbols_4" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_5"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_5"
-        latin:moreKeys="!text/more_keys_for_symbols_5" />
+        latin:keySpec="!text/keyspec_symbols_5"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_5"
+        latin:moreKeys="!text/morekeys_symbols_5" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_6"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_6"
-        latin:moreKeys="!text/more_keys_for_symbols_6" />
+        latin:keySpec="!text/keyspec_symbols_6"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_6"
+        latin:moreKeys="!text/morekeys_symbols_6" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_7"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_7"
-        latin:moreKeys="!text/more_keys_for_symbols_7" />
+        latin:keySpec="!text/keyspec_symbols_7"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_7"
+        latin:moreKeys="!text/morekeys_symbols_7" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_8"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_8"
-        latin:moreKeys="!text/more_keys_for_symbols_8" />
+        latin:keySpec="!text/keyspec_symbols_8"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_8"
+        latin:moreKeys="!text/morekeys_symbols_8" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_9"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_9"
-        latin:moreKeys="!text/more_keys_for_symbols_9" />
+        latin:keySpec="!text/keyspec_symbols_9"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_9"
+        latin:moreKeys="!text/morekeys_symbols_9" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_0"
-        latin:additionalMoreKeys="!text/additional_more_keys_for_symbols_0"
-        latin:moreKeys="!text/more_keys_for_symbols_0" />
+        latin:keySpec="!text/keyspec_symbols_0"
+        latin:additionalMoreKeys="!text/additional_morekeys_symbols_0"
+        latin:moreKeys="!text/morekeys_symbols_0" />
 </merge>
diff --git a/java/res/xml/rowkeys_symbols2.xml b/java/res/xml/rowkeys_symbols2.xml
index 76cbf62..8119158 100644
--- a/java/res/xml/rowkeys_symbols2.xml
+++ b/java/res/xml/rowkeys_symbols2.xml
@@ -28,37 +28,37 @@
             <!-- U+066C: "٬" ARABIC THOUSANDS SEPARATOR
                  U+066B: "٫" ARABIC DECIMAL SEPARATOR -->
             <Key
-                latin:keyLabel="&#x066C;"
+                latin:keySpec="&#x066C;"
                 latin:keyHintLabel="\@"
                 latin:moreKeys="\@" />
             <Key
-                latin:keyLabel="&#x066B;"
+                latin:keySpec="&#x066B;"
                 latin:keyHintLabel="\#"
                 latin:moreKeys="\#" />
         </case>
         <default>
             <Key
-                latin:keyLabel="\@" />
+                latin:keySpec="\@" />
             <Key
-                latin:keyLabel="\#" />
+                latin:keySpec="\#" />
         </default>
     </switch>
     <Key
         latin:keyStyle="currencyKeyStyle" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_percent"
-        latin:moreKeys="!text/more_keys_for_symbols_percent" />
+        latin:keySpec="!text/keyspec_symbols_percent"
+        latin:moreKeys="!text/morekeys_symbols_percent" />
     <Key
-        latin:keyLabel="&amp;" />
+        latin:keySpec="&amp;" />
     <!-- U+2013: "–" EN DASH
          U+2014: "—" EM DASH
          U+00B7: "·" MIDDLE DOT -->
     <Key
-        latin:keyLabel="-"
+        latin:keySpec="-"
         latin:moreKeys="_,&#x2013;,&#x2014;,&#x00B7;" />
     <Key
-        latin:keyLabel="+"
-        latin:moreKeys="!text/more_keys_for_plus" />
+        latin:keySpec="+"
+        latin:moreKeys="!text/morekeys_plus" />
     <include
         latin:keyboardLayout="@xml/keys_parentheses" />
 </merge>
diff --git a/java/res/xml/rowkeys_symbols3.xml b/java/res/xml/rowkeys_symbols3.xml
index 074078c..8093081 100644
--- a/java/res/xml/rowkeys_symbols3.xml
+++ b/java/res/xml/rowkeys_symbols3.xml
@@ -22,41 +22,37 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="*"
-        latin:moreKeys="!text/more_keys_for_star" />
+        latin:keySpec="*"
+        latin:moreKeys="!text/morekeys_star" />
     <switch>
         <case
             latin:languageCode="fa"
         >
-            <!-- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-                 U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
             <Key
-                latin:keyLabel="&#x00AB;"
-                latin:code="0x00BB"
-                latin:moreKeys="!text/more_keys_for_double_quote" />
+                latin:keySpec="!text/keyspec_left_double_angle_quote"
+                latin:moreKeys="!text/morekeys_double_quote" />
             <Key
-                latin:keyLabel="&#x00BB;"
-                latin:code="0x00AB"
-                latin:moreKeys="!text/more_keys_for_single_quote" />
+                latin:keySpec="!text/keyspec_right_double_angle_quote"
+                latin:moreKeys="!text/morekeys_single_quote" />
         </case>
         <default>
             <Key
-                latin:keyLabel="&quot;"
-                latin:moreKeys="!text/more_keys_for_double_quote" />
+                latin:keySpec="&quot;"
+                latin:moreKeys="!text/morekeys_double_quote" />
             <Key
-                latin:keyLabel="\'"
-                latin:moreKeys="!text/more_keys_for_single_quote" />
+                latin:keySpec="\'"
+                latin:moreKeys="!text/morekeys_single_quote" />
         </default>
     </switch>
     <Key
-        latin:keyLabel=":" />
+        latin:keySpec=":" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_semicolon"
-        latin:moreKeys="!text/more_keys_for_symbols_semicolon" />
+        latin:keySpec="!text/keyspec_symbols_semicolon"
+        latin:moreKeys="!text/morekeys_symbols_semicolon" />
     <Key
-        latin:keyLabel="!"
-        latin:moreKeys="!text/more_keys_for_symbols_exclamation" />
+        latin:keySpec="!"
+        latin:moreKeys="!text/morekeys_exclamation" />
     <Key
-        latin:keyLabel="!text/keylabel_for_symbols_question"
-        latin:moreKeys="!text/more_keys_for_symbols_question" />
+        latin:keySpec="!text/keyspec_symbols_question"
+        latin:moreKeys="!text/morekeys_question" />
 </merge>
diff --git a/java/res/xml/rowkeys_symbols_shift1.xml b/java/res/xml/rowkeys_symbols_shift1.xml
index 6013493..f232a7d 100644
--- a/java/res/xml/rowkeys_symbols_shift1.xml
+++ b/java/res/xml/rowkeys_symbols_shift1.xml
@@ -22,35 +22,35 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="~" />
+        latin:keySpec="~" />
     <Key
-        latin:keyLabel="`" />
+        latin:keySpec="`" />
     <Key
-        latin:keyLabel="|" />
+        latin:keySpec="|" />
     <!-- U+2022: "•" BULLET -->
     <Key
-        latin:keyLabel="&#x2022;"
-        latin:moreKeys="!text/more_keys_for_bullet" />
+        latin:keySpec="&#x2022;"
+        latin:moreKeys="!text/morekeys_bullet" />
     <!-- U+221A: "√" SQUARE ROOT -->
     <Key
-        latin:keyLabel="&#x221A;" />
-    <!-- U+03A0: "Π" GREEK CAPITAL LETTER PI
-         U+03C0: "π" GREEK SMALL LETTER PI  -->
+        latin:keySpec="&#x221A;" />
+    <!-- U+03C0: "π" GREEK SMALL LETTER PI
+         U+03A0: "Π" GREEK CAPITAL LETTER PI -->
     <Key
-        latin:keyLabel="&#x03A0;"
-        latin:moreKeys="&#x03C0;" />
+        latin:keySpec="&#x03C0;"
+        latin:moreKeys="&#x03A0;" />
     <!-- U+00F7: "÷" DIVISION SIGN -->
     <Key
-        latin:keyLabel="&#x00F7;" />
+        latin:keySpec="&#x00F7;" />
     <!-- U+00D7: "×" MULTIPLICATION SIGN -->
     <Key
-        latin:keyLabel="&#x00D7;" />
+        latin:keySpec="&#x00D7;" />
     <!-- U+00B6: "¶" PILCROW SIGN
          U+00A7: "§" SECTION SIGN -->
     <Key
-        latin:keyLabel="&#x00B6;"
+        latin:keySpec="&#x00B6;"
         latin:moreKeys="&#x00A7;" />
     <!-- U+2206: "∆" INCREMENT -->
     <Key
-        latin:keyLabel="&#x2206;" />
+        latin:keySpec="&#x2206;" />
 </merge>
diff --git a/java/res/xml/rowkeys_symbols_shift2.xml b/java/res/xml/rowkeys_symbols_shift2.xml
index 36f9214..39a5803 100644
--- a/java/res/xml/rowkeys_symbols_shift2.xml
+++ b/java/res/xml/rowkeys_symbols_shift2.xml
@@ -34,19 +34,19 @@
          U+2190: "←" LEFTWARDS ARROW
          U+2192: "→" RIGHTWARDS ARROW -->
     <Key
-        latin:keyLabel="^"
+        latin:keySpec="^"
         latin:moreKeys="&#x2191;,&#x2193;,&#x2190;,&#x2192;" />
     <!-- U+00B0: "°" DEGREE SIGN
          U+2032: "′" PRIME
          U+2033: "″" DOUBLE PRIME -->
     <Key
-        latin:keyLabel="&#x00B0;"
+        latin:keySpec="&#x00B0;"
         latin:moreKeys="&#x2032;,&#x2033;" />
     <!-- U+2260: "≠" NOT EQUAL TO
          U+2248: "≈" ALMOST EQUAL TO
          U+221E: "∞" INFINITY -->
     <Key
-        latin:keyLabel="="
+        latin:keySpec="="
         latin:moreKeys="&#x2260;,&#x2248;,&#x221E;" />
     <include
         latin:keyboardLayout="@xml/keys_curly_brackets" />
diff --git a/java/res/xml/rowkeys_symbols_shift3.xml b/java/res/xml/rowkeys_symbols_shift3.xml
index 5fe1c74..92ff97b 100644
--- a/java/res/xml/rowkeys_symbols_shift3.xml
+++ b/java/res/xml/rowkeys_symbols_shift3.xml
@@ -22,19 +22,19 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <Key
-        latin:keyLabel="\\" />
+        latin:keySpec="\\" />
     <!-- U+00A9: "©" COPYRIGHT SIGN -->
     <Key
-        latin:keyLabel="&#x00A9;" />
+        latin:keySpec="&#x00A9;" />
     <!-- U+00AE: "®" REGISTERED SIGN -->
     <Key
-        latin:keyLabel="&#x00AE;" />
+        latin:keySpec="&#x00AE;" />
     <!-- U+2122: "™" TRADE MARK SIGN -->
     <Key
-        latin:keyLabel="&#x2122;" />
+        latin:keySpec="&#x2122;" />
     <!-- U+2105: "℅" CARE OF -->
     <Key
-        latin:keyLabel="&#x2105;" />
+        latin:keySpec="&#x2105;" />
     <include
         latin:keyboardLayout="@xml/keys_square_brackets" />
 </merge>
diff --git a/java/res/xml/rowkeys_tamil1.xml b/java/res/xml/rowkeys_tamil1.xml
new file mode 100644
index 0000000..4debd9e
--- /dev/null
+++ b/java/res/xml/rowkeys_tamil1.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0B94: "ஔ" TAMIL LETTER AU -->
+    <Key
+        latin:keySpec="&#x0B94;"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1" />
+    <!-- U+0B90: "ஐ" TAMIL LETTER AI -->
+    <Key
+        latin:keySpec="&#x0B90;"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2" />
+    <!-- U+0B86: "ஆ" TAMIL LETTER AA -->
+    <Key
+        latin:keySpec="&#x0B86;"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3" />
+    <!-- U+0B88: "ஈ" TAMIL LETTER II -->
+    <Key
+        latin:keySpec="&#x0B88;"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4" />
+    <!-- U+0B8A: "ஊ" TAMIL LETTER UU -->
+    <Key
+        latin:keySpec="&#x0B8A;"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5" />
+    <!-- U+0BAE: "ம" TAMIL LETTER MA -->
+    <Key
+        latin:keySpec="&#x0BAE;"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6" />
+    <!-- U+0BA9: "ன" TAMIL LETTER NNNA -->
+    <Key
+        latin:keySpec="&#x0BA9;"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7" />
+    <!-- U+0BA8: "ந" TAMIL LETTER NA -->
+    <Key
+        latin:keySpec="&#x0BA8;"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8" />
+    <!-- U+0B99: "ங" TAMIL LETTER NGA -->
+    <Key
+        latin:keySpec="&#x0B99;"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9" />
+    <!-- U+0BA3: "ண" TAMIL LETTER NNA -->
+    <Key
+        latin:keySpec="&#x0BA3;"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+    <!-- U+0B9E: "ஞ" TAMIL LETTER NYA -->
+    <Key latin:keySpec="&#x0B9E;" />
+</merge>
diff --git a/java/res/xml/rowkeys_tamil2.xml b/java/res/xml/rowkeys_tamil2.xml
new file mode 100644
index 0000000..894825c
--- /dev/null
+++ b/java/res/xml/rowkeys_tamil2.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0B93: "ஓ" TAMIL LETTER OO
+         U+0BD0: "ௐ" TAMIL OM -->
+    <Key
+        latin:keySpec="&#x0B93;"
+        latin:moreKeys="&#x0BD0;" />
+    <!-- U+0B8F: "ஏ" TAMIL LETTER EE -->
+    <Key latin:keySpec="&#x0B8F;" />
+    <!-- U+0B85: "அ" TAMIL LETTER A
+         U+0B83: "ஃ" TAMIL SIGN VISARGA -->
+    <Key
+        latin:keySpec="&#x0B85;"
+        latin:moreKeys="&#x0B83;" />
+    <!-- U+0B87: "இ" TAMIL LETTER I -->
+    <Key latin:keySpec="&#x0B87;" />
+    <!-- U+0B89: "உ" TAMIL LETTER U -->
+    <Key latin:keySpec="&#x0B89;" />
+    <!-- U+0BB1: "ற" TAMIL LETTER RRA -->
+    <Key latin:keySpec="&#x0BB1;" />
+    <!-- U+0BAA: "ப" TAMIL LETTER PA -->
+    <Key latin:keySpec="&#x0BAA;" />
+    <!-- U+0B95: "க" TAMIL LETTER KA
+         U+0BB9: "ஹ" TAMIL LETTER HA
+         U+0B95/U+0BCD/U+0BB7: "க்ஷ" TAMIL LETTER KA/TAMIL SIGN VIRAMA/TAMIL LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0B95;"
+        latin:moreKeys="&#x0BB9;,&#x0B95;&#x0BCD;&#x0BB7;" />
+    <!-- U+0BA4: "த" TAMIL LETTER TA -->
+    <Key latin:keySpec="&#x0BA4;" />
+    <!-- U+0B9A: "ச" TAMIL LETTER CA
+         U+0BB8: "ஸ" TAMIL LETTER SA
+         U+0BB6/U+0BCD/U+0BB0/U+0BC0: "ஶ்ரீ" TAMIL LETTER SHA/TAMIL SIGN VIRAMA/TAMIL LETTER RA/TAMIL VOWEL SIGN II -->
+    <Key
+        latin:keySpec="&#x0B9A;"
+        latin:moreKeys="&#x0BB8;,&#x0BB6;&#x0BCD;&#x0BB0;&#x0BC0;" />
+    <!-- U+0B9F: "ட" TAMIL LETTER TTA -->
+    <Key latin:keySpec="&#x0B9F;" />
+</merge>
diff --git a/java/res/xml/rowkeys_tamil3.xml b/java/res/xml/rowkeys_tamil3.xml
new file mode 100644
index 0000000..5386e61
--- /dev/null
+++ b/java/res/xml/rowkeys_tamil3.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0B92: "ஒ" TAMIL LETTER O -->
+    <Key latin:keySpec="&#x0B92;" />
+    <!-- U+0B8E: "எ" TAMIL LETTER E -->
+    <Key latin:keySpec="&#x0B8E;" />
+    <!-- U+0BCD: "்" TAMIL SIGN VIRAMA -->
+    <Key latin:keySpec="&#x0BCD;" />
+    <!-- U+0BB0: "ர" TAMIL LETTER RA -->
+    <Key latin:keySpec="&#x0BB0;" />
+    <!-- U+0BB5: "வ" TAMIL LETTER VA -->
+    <Key latin:keySpec="&#x0BB5;" />
+    <!-- U+0BB4: "ழ TAMIL LETTER LLLA -->
+    <Key latin:keySpec="&#x0BB4;" />
+    <!-- U+0BB2: "ல" TAMIL LETTER LA -->
+    <Key latin:keySpec="&#x0BB2;" />
+    <!-- U+0BB3: "ள" TAMIL LETTER LLA -->
+    <Key latin:keySpec="&#x0BB3;" />
+    <!-- U+0BAF: "ய" TAMIL LETTER YA -->
+    <Key latin:keySpec="&#x0BAF;" />
+    <!-- U+0BB7: "ஷ" TAMIL LETTER SSA
+         U+0B9C: "ஜ" TAMIL LETTER JA -->
+    <Key
+        latin:keySpec="&#x0BB7;"
+        latin:moreKeys="&#x0B9C;" />
+</merge>
diff --git a/java/res/xml/rowkeys_telugu1.xml b/java/res/xml/rowkeys_telugu1.xml
new file mode 100644
index 0000000..8a5c850
--- /dev/null
+++ b/java/res/xml/rowkeys_telugu1.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0C4C: "ౌ" TELUGU VOWEL SIGN AU
+         U+0C14: "ఔ" TELUGU LETTER AU -->
+    <Key
+        latin:keySpec="&#x0C4C;"
+        latin:moreKeys="&#x0C14;,%"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1" />
+    <!-- U+0C48: "ై" TELUGU VOWEL SIGN AI
+         U+0C10: "ఐ" TELUGU LETTER AI -->
+    <Key
+        latin:keySpec="&#x0C48;"
+        latin:moreKeys="&#x0C10;,%"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2" />
+    <!-- U+0C3E: "ా" TELUGU VOWEL SIGN AA
+         U+0C06: "ఆ" TELUGU LETTER AA -->
+    <Key
+        latin:keySpec="&#x0C3E;"
+        latin:moreKeys="&#x0C06;,%"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3" />
+    <!-- U+0C40: "ీ" TELUGU VOWEL SIGN II
+         U+0C08: "ఈ" TELUGU LETTER II -->
+    <Key
+        latin:keySpec="&#x0C40;"
+        latin:moreKeys="&#x0C08;,%"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4" />
+    <!-- U+0C42: "ూ" TELUGU VOWEL SIGN UU
+         U+0C0A: "ఊ" TELUGU LETTER UU -->
+    <Key
+        latin:keySpec="&#x0C42;"
+        latin:moreKeys="&#x0C0A;,%"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5" />
+    <!-- U+0C2C: "బ" TELUGU LETTER BA
+         U+0C2D: "భ" TELUGU LETTER BHA -->
+    <Key
+        latin:keySpec="&#x0C2C;"
+        latin:moreKeys="&#x0C2D;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6" />
+    <!-- U+0C39: "హ" TELUGU LETTER HA
+         U+0C03: "ః" TELUGU SIGN VISARGA -->
+    <Key
+        latin:keySpec="&#x0C39;"
+        latin:moreKeys="&#x0C03;,%"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7" />
+    <!-- U+0C17: "గ" TELUGU LETTER GA
+         U+0C18: "ఘ" TELUGU LETTER GHA -->
+    <Key
+        latin:keySpec="&#x0C17;"
+        latin:moreKeys="&#x0C18;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8" />
+    <!-- U+0C26: "ద" TELUGU LETTER DA
+         U+0C27: "ధ" TELUGU LETTER DHA -->
+    <Key
+        latin:keySpec="&#x0C26;"
+        latin:moreKeys="&#x0C27;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9" />
+    <!-- U+0C1C: "జ" TELUGU LETTER JA
+         U+0C1D: "ఝ" TELUGU LETTER JHA -->
+    <Key
+        latin:keySpec="&#x0C1C;"
+        latin:moreKeys="&#x0C1D;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+    <!-- U+0C21: "డ" TELUGU LETTER DDA
+         U+0C22: "ఢ" TELUGU LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0C21;"
+        latin:moreKeys="&#x0C22;" />
+</merge>
diff --git a/java/res/xml/rowkeys_telugu2.xml b/java/res/xml/rowkeys_telugu2.xml
new file mode 100644
index 0000000..a472fd3
--- /dev/null
+++ b/java/res/xml/rowkeys_telugu2.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0C4B: "ో" TELUGU VOWEL SIGN OO
+         U+0C13: "ఓ" TELUGU LETTER OO -->
+    <Key
+        latin:keySpec="&#x0C4B;"
+        latin:moreKeys="&#x0C13;" />
+    <!-- U+0C47: "ే" TELUGU VOWEL SIGN EE
+         U+0C0F: "ఏ" TELUGU LETTER EE -->
+    <Key
+        latin:keySpec="&#x0C47;"
+        latin:moreKeys="&#x0C0F;" />
+    <!-- U+0C4D: "్" TELUGU SIGN VIRAMA
+         U+0C05: "అ" TELUGU LETTER A -->
+    <Key
+        latin:keySpec="&#x0C4D;"
+        latin:moreKeys="&#x0C05;" />
+    <!-- U+0C3F: "ి" TELUGU VOWEL SIGN I
+         U+0C07: "ఇ" TELUGU LETTER I -->
+    <Key
+        latin:keySpec="&#x0C3F;"
+        latin:moreKeys="&#x0C07;" />
+    <!-- U+0C41: "ు" TELUGU VOWEL SIGN U
+         U+0C09: "ఉ" TELUGU LETTER U -->
+    <Key
+        latin:keySpec="&#x0C41;"
+        latin:moreKeys="&#x0C09;" />
+    <!-- U+0C2A: "ప" TELUGU LETTER PA
+         U+0C2B: "ఫ" TELUGU LETTER PHA -->
+    <Key
+        latin:keySpec="&#x0C2A;"
+        latin:moreKeys="&#x0C2B;" />
+    <!-- U+0C30: "ర" TELUGU LETTER RA
+         U+0C31: "ఱ" TELUGU LETTER RRA
+         U+0C43: "ృ" TELUGU VOWEL SIGN VOCALIC R -->
+    <Key
+        latin:keySpec="&#x0C30;"
+        latin:moreKeys="&#x0C31;,&#x0C43;" />
+    <!-- U+0C15: "క" TELUGU LETTER KA
+         U+0C16: "ఖ" TELUGU LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0C15;"
+        latin:moreKeys="&#x0C16;" />
+    <!-- U+0C24: "త" TELUGU LETTER TA
+         U+0C25: "థ" TELUGU LETTER THA -->
+    <Key
+        latin:keySpec="&#x0C24;"
+        latin:moreKeys="&#x0C25;" />
+    <!-- U+0C1A: "చ" TELUGU LETTER CA
+         U+0C1B: "ఛ" TELUGU LETTER CHA -->
+    <Key
+        latin:keySpec="&#x0C1A;"
+        latin:moreKeys="&#x0C1B;" />
+    <!-- U+0C1F: "ట" TELUGU LETTER TTA
+         U+0C20: "ఠ" TELUGU LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x0C1F;"
+        latin:moreKeys="&#x0C20;" />
+</merge>
diff --git a/java/res/xml/rowkeys_telugu3.xml b/java/res/xml/rowkeys_telugu3.xml
new file mode 100644
index 0000000..05755ec
--- /dev/null
+++ b/java/res/xml/rowkeys_telugu3.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0C46: "ె" TELUGU VOWEL SIGN E
+         U+0C12: "ఒ" TELUGU LETTER O -->
+    <Key
+        latin:keySpec="&#x0C46;"
+        latin:moreKeys="&#x0C12;" />
+    <!-- U+0C02: "ం" TELUGU SIGN ANUSVARA
+         U+0C0E: "ఎ" TELUGU LETTER E -->
+    <Key
+        latin:keySpec="&#x0C02;"
+        latin:moreKeys="&#x0C0E;" />
+    <!-- U+0C2E: "మ" TELUGU LETTER MA -->
+    <Key latin:keySpec="&#x0C2E;" />
+    <!-- U+0C28: "న" TELUGU LETTER NA
+         U+0C23: "ణ" TELUGU LETTER NNA
+         U+0C19: "ఙ" TELUGU LETTER NGA -->
+    <Key
+        latin:keySpec="&#x0C28;"
+        latin:moreKeys="&#x0C23;,&#x0C19;" />
+    <!-- U+0C35: "వ" TELUGU LETTER VA -->
+    <Key latin:keySpec="&#x0C35;" />
+    <!-- U+0C32: "ల" TELUGU LETTER LA
+         U+0C33: "ళ" TELUGU LETTER LLA -->
+    <Key
+        latin:keySpec="&#x0C32;"
+        latin:moreKeys="&#x0C33;" />
+    <!-- U+0C38: "స" TELUGU LETTER SA
+         U+0C36: "శ" TELUGU LETTER SHA -->
+    <Key
+        latin:keySpec="&#x0C38;"
+        latin:moreKeys="&#x0C36;" />
+    <!-- U+0C0B: "ఋ" TELUGU LETTER VOCALIC R
+         U+0C4D/U+0C30: "్ర" TELUGU SIGN VIRAMA/TELUGU LETTER RA -->
+    <Key
+        latin:keySpec="&#x0C0B;"
+        latin:moreKeys="&#x0C4D;&#x0C30;" />
+    <!-- U+0C37: "ష" TELUGU LETTER SSA
+         U+0C15/U+0C4D/U+0C37: "క్ష" TELUGU LETTER KA/TELUGU SIGN VIRAMA/TELUGU LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0C37;"
+        latin:moreKeys="&#x0C15;&#x0C4D;&#x0C37;" />
+    <!-- U+0C2F: "య" TELUGU LETTER YA
+         U+0C1C/U+0C4D/U+0C1E: "జ్ఞ" TELUGU LETTER JA/TELUGU SIGN VIRAMA/TELUGU LETTER NYA -->
+    <Key
+        latin:keySpec="&#x0C2F;"
+        latin:moreKeys="&#x0C1C;&#x0C4D;&#x0C1E;" />
+</merge>
diff --git a/java/res/xml/rowkeys_thai1.xml b/java/res/xml/rowkeys_thai1.xml
index cd53665..864bca8 100644
--- a/java/res/xml/rowkeys_thai1.xml
+++ b/java/res/xml/rowkeys_thai1.xml
@@ -18,153 +18,120 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <Key
-                latin:keyLabel="+" />
+                latin:keySpec="+"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0E51: "๑" THAI DIGIT ONE -->
-            <Key
-                latin:keyLabel="&#x0E51;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E51;" />
             <!-- U+0E52: "๒" THAI DIGIT TWO -->
-            <Key
-                latin:keyLabel="&#x0E52;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E52;" />
             <!-- U+0E53: "๓" THAI DIGIT THREE -->
-            <Key
-                latin:keyLabel="&#x0E53;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E53;" />
             <!-- U+0E54: "๔" THAI DIGIT FOUR -->
-            <Key
-                latin:keyLabel="&#x0E54;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E54;" />
             <!-- U+0020: " " SPACE
                  U+0E39: " ู" THAI CHARACTER SARA UU -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E39;"
-                latin:code="0x0E39"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E39;|&#x0E39;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT -->
-            <Key
-                latin:keyLabel="&#x0E3F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E3F;" />
             <!-- U+0E55: "๕" THAI DIGIT FIVE -->
-            <Key
-                latin:keyLabel="&#x0E55;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E55;" />
             <!-- U+0E56: "๖" THAI DIGIT SIX -->
-            <Key
-                latin:keyLabel="&#x0E56;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E56;" />
             <!-- U+0E57: "๗" THAI DIGIT SEVEN -->
-            <Key
-                latin:keyLabel="&#x0E57;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E57;" />
             <!-- U+0E58: "๘" THAI DIGIT EIGHT -->
-            <Key
-                latin:keyLabel="&#x0E58;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E58;" />
             <!-- U+0E59: "๙" THAI DIGIT NINE -->
-            <Key
-                latin:keyLabel="&#x0E59;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E59;" />
         </case>
         <default>
             <!-- U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO -->
-            <Key
-                latin:keyLabel="&#x0E45;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E45;" />
             <!-- U+0E51: "๑" THAI DIGIT ONE -->
             <Key
+                latin:keySpec="/"
                 latin:keyHintLabel="1"
                 latin:additionalMoreKeys="1"
                 latin:moreKeys="&#x0E51;"
-                latin:keyLabel="/" />
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0E52: "๒" THAI DIGIT TWO -->
             <Key
+                latin:keySpec="_"
                 latin:keyHintLabel="2"
                 latin:additionalMoreKeys="2"
                 latin:moreKeys="&#x0E52;"
-                latin:keyLabel="_" />
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO
                  U+0E53: "๓" THAI DIGIT THREE -->
             <Key
-                latin:keyLabel="&#x0E20;"
+                latin:keySpec="&#x0E20;"
                 latin:keyHintLabel="3"
                 latin:additionalMoreKeys="3"
-                latin:moreKeys="&#x0E53;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E53;" />
             <!-- U+0E16: "ถ" THAI CHARACTER THO THUNG
                  U+0E54: "๔" THAI DIGIT FOUR -->
             <Key
-                latin:keyLabel="&#x0E16;"
+                latin:keySpec="&#x0E16;"
                 latin:keyHintLabel="4"
                 latin:additionalMoreKeys="4"
-                latin:moreKeys="&#x0E54;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E54;" />
             <!-- U+0020: " " SPACE
                  U+0E38: " ุ" THAI CHARACTER SARA U -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E38;"
-                latin:code="0x0E38"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E38;|&#x0E38;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E36: " ึ" THAI CHARACTER SARA UE -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E36;"
-                latin:code="0x0E36"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E36;|&#x0E36;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E04: "ค" THAI CHARACTER KHO KHWAI
                  U+0E55: "๕" THAI DIGIT FIVE -->
             <Key
-                latin:keyLabel="&#x0E04;"
+                latin:keySpec="&#x0E04;"
                 latin:keyHintLabel="5"
                 latin:additionalMoreKeys="5"
-                latin:moreKeys="&#x0E55;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E55;" />
             <!-- U+0E15: "ต" THAI CHARACTER TO TAO
                  U+0E56: "๖" THAI DIGIT SIX -->
             <Key
-                latin:keyLabel="&#x0E15;"
+                latin:keySpec="&#x0E15;"
                 latin:keyHintLabel="6"
                 latin:additionalMoreKeys="6"
-                latin:moreKeys="&#x0E56;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E56;" />
             <!-- U+0E08: "จ" THAI CHARACTER CHO CHAN
                  U+0E57: "๗" THAI DIGIT SEVEN -->
             <Key
-                latin:keyLabel="&#x0E08;"
+                latin:keySpec="&#x0E08;"
                 latin:keyHintLabel="7"
                 latin:additionalMoreKeys="7"
-                latin:moreKeys="&#x0E57;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E57;" />
             <!-- U+0E02: "ข" THAI CHARACTER KHO KHAI
                  U+0E58: "๘" THAI DIGIT EIGHT -->
             <Key
-                latin:keyLabel="&#x0E02;"
+                latin:keySpec="&#x0E02;"
                 latin:keyHintLabel="8"
                 latin:additionalMoreKeys="8"
-                latin:moreKeys="&#x0E58;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E58;" />
             <!-- U+0E0A: "ช" THAI CHARACTER CHO CHANG
                  U+0E59: "๙" THAI DIGIT NINE -->
             <Key
-                latin:keyLabel="&#x0E0A;"
+                latin:keySpec="&#x0E0A;"
                 latin:keyHintLabel="9"
                 latin:additionalMoreKeys="9"
-                latin:moreKeys="&#x0E59;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E59;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_thai2.xml b/java/res/xml/rowkeys_thai2.xml
index 4bcbbbf..f43d31f 100644
--- a/java/res/xml/rowkeys_thai2.xml
+++ b/java/res/xml/rowkeys_thai2.xml
@@ -18,127 +18,86 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0E50: "๐" THAI DIGIT ZERO -->
+            <Key latin:keySpec="&#x0E50;" />
             <Key
-                latin:keyLabel="&#x0E50;"
-                latin:keyLabelFlags="fontNormal" />
-            <Key
-                latin:keyLabel="&quot;" />
+                latin:keySpec="&quot;"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0E0E: "ฎ" THAI CHARACTER DO CHADA -->
-            <Key
-                latin:keyLabel="&#x0E0E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E0E;" />
             <!-- U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO -->
-            <Key
-                latin:keyLabel="&#x0E11;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E11;" />
             <!-- U+0E18: "ธ" THAI CHARACTER THO THONG -->
-            <Key
-                latin:keyLabel="&#x0E18;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E18;" />
             <!-- U+0020: " " SPACE
                  U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E4D;"
-                latin:code="0x0E4D"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E4D;|&#x0E4D;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E4A: " ๊" THAI CHARACTER MAI TRI -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E4A;"
-                latin:code="0x0E4A"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E4A;|&#x0E4A;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E13: "ณ" THAI CHARACTER NO NEN -->
-            <Key
-                latin:keyLabel="&#x0E13;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E13;" />
             <!-- U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI -->
-            <Key
-                latin:keyLabel="&#x0E2F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E2F;" />
             <!-- U+0E0D: "ญ" THAI CHARACTER YO YING -->
-            <Key
-                latin:keyLabel="&#x0E0D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E0D;" />
             <!-- U+0E10: "ฐ" THAI CHARACTER THO THAN -->
+            <Key latin:keySpec="&#x0E10;" />
             <Key
-                latin:keyLabel="&#x0E10;"
-                latin:keyLabelFlags="fontNormal" />
-            <Key
-                latin:keyLabel="," />
+                latin:keySpec=","
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- U+0E46: "ๆ" THAI CHARACTER MAIYAMOK
                  U+0E50: "๐" THAI DIGIT ZERO -->
             <Key
-                latin:keyLabel="&#x0E46;"
+                latin:keySpec="&#x0E46;"
                 latin:keyHintLabel="0"
                 latin:additionalMoreKeys="0"
-                latin:moreKeys="&#x0E50;"
-                latin:keyLabelFlags="fontNormal" />
+                latin:moreKeys="&#x0E50;" />
             <!-- U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI -->
-            <Key
-                latin:keyLabel="&#x0E44;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E44;" />
             <!-- U+0E33: "ำ" THAI CHARACTER SARA AM -->
-            <Key
-                latin:keyLabel="&#x0E33;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E33;" />
             <!-- U+0E1E: "พ" THAI CHARACTER PHO PHAN -->
-            <Key
-                latin:keyLabel="&#x0E1E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E1E;" />
             <!-- U+0E30: "ะ" THAI CHARACTER SARA A -->
-            <Key
-                latin:keyLabel="&#x0E30;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E30;" />
             <!-- U+0020: " " SPACE
                  U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E31;"
-                latin:code="0x0E31"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E31;|&#x0E31;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E35: " ี" HAI CHARACTER SARA II -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E35;"
-                latin:code="0x0E35"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E35;|&#x0E35;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E23: "ร" THAI CHARACTER RO RUA -->
-            <Key
-                latin:keyLabel="&#x0E23;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E23;" />
             <!-- U+0E19: "น" THAI CHARACTER NO NU -->
-            <Key
-                latin:keyLabel="&#x0E19;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E19;" />
             <!-- U+0E22: "ย" THAI CHARACTER YO YAK -->
-            <Key
-                latin:keyLabel="&#x0E22;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E22;" />
             <!-- U+0E1A: "บ" THAI CHARACTER BO BAIMAI -->
-            <Key
-                latin:keyLabel="&#x0E1A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E1A;" />
             <!-- U+0E25: "ล" THAI CHARACTER LO LING -->
-            <Key
-                latin:keyLabel="&#x0E25;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E25;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_thai3.xml b/java/res/xml/rowkeys_thai3.xml
index 7b6e637..03959b9 100644
--- a/java/res/xml/rowkeys_thai3.xml
+++ b/java/res/xml/rowkeys_thai3.xml
@@ -18,117 +18,76 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <!-- U+0E24: "ฤ" THAI CHARACTER RU -->
-            <Key
-                latin:keyLabel="&#x0E24;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E24;" />
             <!-- U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG -->
-            <Key
-                latin:keyLabel="&#x0E06;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E06;" />
             <!-- U+0E0F: "ฏ" THAI CHARACTER TO PATAK -->
-            <Key
-                latin:keyLabel="&#x0E0F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E0F;" />
             <!-- U+0E42: "โ" THAI CHARACTER SARA O -->
-            <Key
-                latin:keyLabel="&#x0E42;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E42;" />
             <!-- U+0E0C: "ฌ" THAI CHARACTER CHO CHOE -->
-            <Key
-                latin:keyLabel="&#x0E0C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E0C;" />
             <!-- U+0020: " " SPACE
                  U+0E47: " ็" THAI CHARACTER MAITAIKHU -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E47;"
-                latin:code="0x0E47"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E47;|&#x0E47;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E4B;"
-                latin:code="0x0E4B"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E4B;|&#x0E4B;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E29: "ษ" THAI CHARACTER SO RUSI -->
-            <Key
-                latin:keyLabel="&#x0E29;"
-                latin:keyLabelFlags="fontNormal" />
-            <!--  U+0E28: "ศ" THAI CHARACTER SO SALA -->
-            <Key
-                latin:keyLabel="&#x0E28;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E29;" />
+            <!-- U+0E28: "ศ" THAI CHARACTER SO SALA -->
+            <Key latin:keySpec="&#x0E28;" />
             <!-- U+0E0B: "ซ" THAI CHARACTER SO SO -->
+            <Key latin:keySpec="&#x0E0B;" />
             <Key
-                latin:keyLabel="&#x0E0B;"
-                latin:keyLabelFlags="fontNormal" />
-            <Key
-                latin:keyLabel="." />
+                latin:keySpec="."
+                latin:keyLabelFlags="fontDefault" />
         </case>
         <default>
             <!-- U+0E1F: "ฟ" THAI CHARACTER FO FAN -->
-            <Key
-                latin:keyLabel="&#x0E1F;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E1F;" />
             <!-- U+0E2B: "ห" THAI CHARACTER HO HIP -->
-            <Key
-                latin:keyLabel="&#x0E2B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E2B;" />
             <!-- U+0E01: "ก" THAI CHARACTER KO KAI -->
-            <Key
-                latin:keyLabel="&#x0E01;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E01;" />
             <!-- U+0E14: "ด" THAI CHARACTER DO DEK -->
-            <Key
-                latin:keyLabel="&#x0E14;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E14;" />
             <!-- U+0E40: "เ" THAI CHARACTER SARA E -->
-            <Key
-                latin:keyLabel="&#x0E40;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E40;" />
             <!-- U+0020: " " SPACE
                  U+0E49: " ้" THAI CHARACTER MAI THO -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E49;"
-                latin:code="0x0E49"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E49;|&#x0E49;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E48: " ่" THAI CHARACTER MAI EK -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E48;"
-                latin:code="0x0E48"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E48;|&#x0E48;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E32: "า" THAI CHARACTER SARA AA -->
-            <Key
-                latin:keyLabel="&#x0E32;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E32;" />
             <!-- U+0E2A: "ส" THAI CHARACTER SO SUA -->
-            <Key
-                latin:keyLabel="&#x0E2A;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E2A;" />
             <!-- U+0E27: "ว" THAI CHARACTER WO WAEN -->
-            <Key
-                latin:keyLabel="&#x0E27;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E27;" />
             <!-- U+0E07: "ง" THAI CHARACTER NGO NGU -->
-            <Key
-                latin:keyLabel="&#x0E07;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E07;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rowkeys_thai4.xml b/java/res/xml/rowkeys_thai4.xml
index 8a78424..db665be 100644
--- a/java/res/xml/rowkeys_thai4.xml
+++ b/java/res/xml/rowkeys_thai4.xml
@@ -18,105 +18,74 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
     <switch>
-        <case
-            latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted"
-        >
+        <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
             <Key
-                latin:keyLabel="(" />
+                latin:keySpec="("
+                latin:keyLabelFlags="fontDefault" />
             <Key
-                latin:keyLabel=")" />
+                latin:keySpec=")"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0E09: "ฉ" THAI CHARACTER CHO CHING -->
-            <Key
-                latin:keyLabel="&#x0E09;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E09;" />
             <!-- U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK -->
-            <Key
-                latin:keyLabel="&#x0E2E;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E2E;" />
             <!-- U+0020: " " SPACE
                  U+0E3A: " ฺ" THAI CHARACTER PHINTHU -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E3A;"
-                latin:code="0x0E3A"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E3A;|&#x0E3A;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E4C: " ์" THAI CHARACTER THANTHAKHAT -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E4C;"
-                latin:code="0x0E4C"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E4C;|&#x0E4C;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <Key
-                latin:keyLabel="\?" />
+                latin:keySpec="\?"
+                latin:keyLabelFlags="fontDefault" />
             <!-- U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO -->
-            <Key
-                latin:keyLabel="&#x0E12;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E12;" />
             <!-- U+0E2C: "ฬ" THAI CHARACTER LO CHULA -->
-            <Key
-                latin:keyLabel="&#x0E2C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E2C;" />
             <!-- U+0E26: "ฦ" THAI CHARACTER LU -->
-            <Key
-                latin:keyLabel="&#x0E26;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E26;" />
         </case>
         <default>
             <!-- U+0E1C: "ผ" THAI CHARACTER PHO PHUNG -->
-            <Key
-                latin:keyLabel="&#x0E1C;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E1C;" />
             <!-- U+0E1B: "ป" THAI CHARACTER PO PLA -->
-            <Key
-                latin:keyLabel="&#x0E1B;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E1B;" />
             <!-- U+0E41: "แ" THAI CHARACTER SARA AE -->
-            <Key
-                latin:keyLabel="&#x0E41;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E41;" />
             <!-- U+0E2D: "อ" THAI CHARACTER O ANG -->
-            <Key
-                latin:keyLabel="&#x0E2D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E2D;" />
             <!-- U+0020: " " SPACE
                  U+0E34: " ิ" THAI CHARACTER SARA I -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E34;"
-                latin:code="0x0E34"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E34;|&#x0E34;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0020: " " SPACE
                  U+0E37: " ื" THAI CHARACTER SARA UEE -->
             <!-- Note: The space character is needed as a preceding letter to draw some Thai
                  composing characters correctly. -->
             <Key
-                latin:keyLabel="&#x20;&#x0E37;"
-                latin:code="0x0E37"
-                latin:keyLabelFlags="fontNormal|followKeyLetterRatio" />
+                latin:keySpec="&#x20;&#x0E37;|&#x0E37;"
+                latin:keyLabelFlags="followKeyLetterRatio" />
             <!-- U+0E17: "ท" THAI CHARACTER THO THAHAN -->
-            <Key
-                latin:keyLabel="&#x0E17;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E17;" />
             <!-- U+0E21: "ม" THAI CHARACTER MO MA -->
-            <Key
-                latin:keyLabel="&#x0E21;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E21;" />
             <!-- U+0E43: "ใ" THAI CHARACTER SARA AI MAIMUAN -->
-            <Key
-                latin:keyLabel="&#x0E43;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E43;" />
             <!-- U+0E1D: "ฝ" THAI CHARACTER FO FA -->
-            <Key
-                latin:keyLabel="&#x0E1D;"
-                latin:keyLabelFlags="fontNormal" />
+            <Key latin:keySpec="&#x0E1D;" />
         </default>
     </switch>
 </merge>
diff --git a/java/res/xml/rows_arabic.xml b/java/res/xml/rows_arabic.xml
index 798c23e..3f765f3 100644
--- a/java/res/xml/rows_arabic.xml
+++ b/java/res/xml/rows_arabic.xml
@@ -18,32 +18,28 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_arabic1" />
+        <include latin:keyboardLayout="@xml/rowkeys_arabic1" />
     </Row>
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_arabic2" />
+        <include latin:keyboardLayout="@xml/rowkeys_arabic2" />
     </Row>
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_arabic3" />
+        <include latin:keyboardLayout="@xml/rowkeys_arabic3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_armenian_phonetic.xml b/java/res/xml/rows_armenian_phonetic.xml
index ea8870e..198436c 100644
--- a/java/res/xml/rows_armenian_phonetic.xml
+++ b/java/res/xml/rows_armenian_phonetic.xml
@@ -18,47 +18,40 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
-    <include
-        latin:keyboardLayout="@xml/key_styles_currency" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <include latin:keyboardLayout="@xml/key_styles_currency" />
     <Row
         latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic1" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic1" />
     </Row>
     <Row
         latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic2" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic2" />
     </Row>
     <Row
         latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic3" />
-        <include
-            latin:keyboardLayout="@xml/key_armenian_xeh" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic3" />
+        <include latin:keyboardLayout="@xml/key_armenian_xeh" />
     </Row>
     <Row
         latin:keyWidth="9.8000%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.8%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_armenian_phonetic4" />
-        <include
-            latin:keyboardLayout="@xml/key_armenian_sha" />
+        <include latin:keyboardLayout="@xml/rowkeys_armenian_phonetic4" />
+        <include latin:keyboardLayout="@xml/key_armenian_sha" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_bengali.xml b/java/res/xml/rows_bengali.xml
new file mode 100644
index 0000000..4e4223b
--- /dev/null
+++ b/java/res/xml/rows_bengali.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_bengali1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_bengali2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_bengali3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_colemak.xml b/java/res/xml/rows_colemak.xml
index d74c2c9..ec553c2 100644
--- a/java/res/xml/rows_colemak.xml
+++ b/java/res/xml/rows_colemak.xml
@@ -28,8 +28,6 @@
     >
         <include
             latin:keyboardLayout="@xml/rowkeys_colemak1" />
-        <include
-            latin:keyboardLayout="@xml/key_colemak_colon" />
     </Row>
     <Row
         latin:keyWidth="10%p"
diff --git a/java/res/xml/rows_farsi.xml b/java/res/xml/rows_farsi.xml
index c74614f..b78048c 100644
--- a/java/res/xml/rows_farsi.xml
+++ b/java/res/xml/rows_farsi.xml
@@ -18,32 +18,28 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_farsi1" />
+        <include latin:keyboardLayout="@xml/rowkeys_farsi1" />
     </Row>
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_farsi2" />
+        <include latin:keyboardLayout="@xml/rowkeys_farsi2" />
     </Row>
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_farsi3" />
+        <include latin:keyboardLayout="@xml/rowkeys_farsi3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_greek.xml b/java/res/xml/rows_greek.xml
index ca6d240..e00b927 100644
--- a/java/res/xml/rows_greek.xml
+++ b/java/res/xml/rows_greek.xml
@@ -27,8 +27,6 @@
         latin:keyWidth="10%p"
     >
         <include
-            latin:keyboardLayout="@xml/key_greek_semicolon" />
-        <include
             latin:keyboardLayout="@xml/rowkeys_greek1" />
     </Row>
     <Row
diff --git a/java/res/xml/rows_hindi.xml b/java/res/xml/rows_hindi.xml
index 5c631eb..da869b1 100644
--- a/java/res/xml/rows_hindi.xml
+++ b/java/res/xml/rows_hindi.xml
@@ -18,35 +18,31 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_hindi1" />
+        <include latin:keyboardLayout="@xml/rowkeys_hindi1" />
     </Row>
     <Row
-            latin:keyWidth="9.091%p"
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_hindi2" />
+        <include latin:keyboardLayout="@xml/rowkeys_hindi2" />
     </Row>
     <Row
         latin:keyWidth="8.711%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.8%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_hindi3" />
+        <include latin:keyboardLayout="@xml/rowkeys_hindi3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_hindi_compact.xml b/java/res/xml/rows_hindi_compact.xml
new file mode 100644
index 0000000..d21fada
--- /dev/null
+++ b/java/res/xml/rows_hindi_compact.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_hindi_compact1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_hindi_compact2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_hindi_compact3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_kannada.xml b/java/res/xml/rows_kannada.xml
new file mode 100644
index 0000000..5dc6271
--- /dev/null
+++ b/java/res/xml/rows_kannada.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_khmer.xml b/java/res/xml/rows_khmer.xml
index e399387..69334f3 100644
--- a/java/res/xml/rows_khmer.xml
+++ b/java/res/xml/rows_khmer.xml
@@ -18,39 +18,33 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer1" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer1" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer2" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer2" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer3" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer3" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
     >
-        <Key
-            latin:keyStyle="shiftKeyStyle" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_khmer4" />
-        <Key
-            latin:keyStyle="deleteKeyStyle" />
+        <Key latin:keyStyle="shiftKeyStyle" />
+        <include latin:keyboardLayout="@xml/rowkeys_khmer4" />
+        <Key latin:keyStyle="deleteKeyStyle" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_lao.xml b/java/res/xml/rows_lao.xml
index 321f411..b3fbf56 100644
--- a/java/res/xml/rows_lao.xml
+++ b/java/res/xml/rows_lao.xml
@@ -18,39 +18,33 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao1" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao1" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao2" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao2" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao3" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao3" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <Key
-            latin:keyStyle="shiftKeyStyle" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_lao4" />
-        <Key
-            latin:keyStyle="deleteKeyStyle" />
+        <Key latin:keyStyle="shiftKeyStyle" />
+        <include latin:keyboardLayout="@xml/rowkeys_lao4" />
+        <Key latin:keyStyle="deleteKeyStyle" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_malayalam.xml b/java/res/xml/rows_malayalam.xml
new file mode 100644
index 0000000..5e7a491
--- /dev/null
+++ b/java/res/xml/rows_malayalam.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_malayalam1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_malayalam2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_malayalam3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_marathi.xml b/java/res/xml/rows_marathi.xml
new file mode 100644
index 0000000..ff11adb
--- /dev/null
+++ b/java/res/xml/rows_marathi.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_marathi1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_marathi2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_marathi3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_myanmar.xml b/java/res/xml/rows_myanmar.xml
new file mode 100644
index 0000000..54538a9
--- /dev/null
+++ b/java/res/xml/rows_myanmar.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar1" />
+    </Row>
+    <Row
+        latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar2" />
+    </Row>
+    <Row
+        latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar3" />
+    </Row>
+    <Row
+        latin:keyWidth="10.0%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <Key latin:keyStyle="shiftKeyStyle" />
+        <include latin:keyboardLayout="@xml/rowkeys_myanmar4" />
+        <Key latin:keyStyle="deleteKeyStyle" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_nepali_romanized.xml b/java/res/xml/rows_nepali_romanized.xml
index 6df09c8..daca3ee 100644
--- a/java/res/xml/rows_nepali_romanized.xml
+++ b/java/res/xml/rows_nepali_romanized.xml
@@ -18,35 +18,31 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_romanized1" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_romanized1" />
     </Row>
     <Row
-            latin:keyWidth="9.091%p"
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_romanized2" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_romanized2" />
     </Row>
     <Row
         latin:keyWidth="8.711%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.8%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_romanized3" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_romanized3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_nepali_traditional.xml b/java/res/xml/rows_nepali_traditional.xml
index 7789135..edcc73a 100644
--- a/java/res/xml/rows_nepali_traditional.xml
+++ b/java/res/xml/rows_nepali_traditional.xml
@@ -18,39 +18,33 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
-    <include
-        latin:keyboardLayout="@xml/key_styles_currency" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <include latin:keyboardLayout="@xml/key_styles_currency" />
     <Row
         latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional1" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional1" />
     </Row>
     <Row
-            latin:keyWidth="9.091%p"
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional2" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional2" />
     </Row>
     <Row
         latin:keyWidth="8.711%p"
+        latin:keyLabelFlags="fontNormal"
     >
         <Key
             latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="10.8%p" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_left6" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_right3" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_left6" />
+        <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_right3" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml
index 291018a..d8d1508 100644
--- a/java/res/xml/rows_number_normal.xml
+++ b/java/res/xml/rows_number_normal.xml
@@ -23,16 +23,16 @@
 >
     <Row>
         <Key
-            latin:keyLabel="1"
+            latin:keySpec="1"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="2"
+            latin:keySpec="2"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="3"
+            latin:keySpec="3"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="-"
+            latin:keySpec="-"
             latin:moreKeys="+"
             latin:keyLabelFlags="hasPopupHint"
             latin:keyStyle="numFunctionalKeyStyle"
@@ -40,20 +40,20 @@
     </Row>
     <Row>
         <Key
-            latin:keyLabel="4"
+            latin:keySpec="4"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="5"
+            latin:keySpec="5"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="6"
+            latin:keySpec="6"
             latin:keyStyle="numKeyStyle" />
         <switch>
             <case
                 latin:mode="date"
             >
                 <Key
-                    latin:keyLabel="."
+                    latin:keySpec="."
                     latin:keyStyle="numFunctionalKeyStyle"
                     latin:keyWidth="fillRight" />
             </case>
@@ -61,15 +61,15 @@
                 latin:mode="time|datetime"
             >
                 <Key
-                    latin:keyLabel="."
+                    latin:keySpec="."
                     latin:keyLabelFlags="hasPopupHint"
-                    latin:moreKeys="!text/more_keys_for_am_pm"
+                    latin:moreKeys="!text/morekeys_am_pm"
                     latin:keyStyle="numFunctionalKeyStyle"
                     latin:keyWidth="fillRight" />
             </case>
             <default>
                 <Key
-                    latin:keyLabel=","
+                    latin:keySpec=","
                     latin:keyStyle="numFunctionalKeyStyle"
                     latin:keyWidth="fillRight" />
             </default>
@@ -77,56 +77,54 @@
     </Row>
     <Row>
         <Key
-            latin:keyLabel="7"
+            latin:keySpec="7"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="8"
+            latin:keySpec="8"
             latin:keyStyle="numKeyStyle"/>
         <Key
-            latin:keyLabel="9"
+            latin:keySpec="9"
             latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
     <Row>
-        <Key
-            latin:keyStyle="numSpaceKeyStyle" />
-        <Key
-            latin:keyLabel="0"
-            latin:keyStyle="numKeyStyle" />
         <switch>
             <case
                 latin:mode="date"
             >
                 <Key
-                    latin:keyLabel="/"
+                    latin:keySpec="/"
                     latin:keyStyle="numKeyStyle" />
             </case>
             <case
                 latin:mode="time"
             >
                 <Key
-                    latin:keyLabel=":"
+                    latin:keySpec=":"
                     latin:keyStyle="numKeyStyle" />
             </case>
             <case
                 latin:mode="datetime"
             >
-                <!-- U+002F: "/" SOLIDUS -->
                 <Key
-                    latin:code="0x002F"
-                    latin:keyLabel="/ :"
+                    latin:keySpec="/ :|/"
                     latin:moreKeys="!noPanelAutoMoreKey!,:"
                     latin:keyStyle="numKeyStyle" />
             </case>
             <default>
                 <Key
-                    latin:keyLabel="."
+                    latin:keySpec="."
                     latin:keyStyle="numKeyStyle" />
             </default>
         </switch>
         <Key
+            latin:keySpec="0"
+            latin:keyStyle="numKeyStyle" />
+        <Key
+            latin:keyStyle="numSpaceKeyStyle" />
+        <Key
             latin:keyStyle="enterKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
diff --git a/java/res/xml/rows_pcqwerty.xml b/java/res/xml/rows_pcqwerty.xml
index 8846989..a5ed745 100644
--- a/java/res/xml/rows_pcqwerty.xml
+++ b/java/res/xml/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
     <Row
         latin:keyWidth="7.692%p"
     >
-        <switch>
-            <case
-                latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
-            >
-                <include
-                    latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
-            </case>
-            <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
-            <default>
-                <include
-                     latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
-            </default>
-        </switch>
+        <include
+            latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
     </Row>
     <Row
         latin:keyWidth="7.692%p"
diff --git a/java/res/xml/rows_phone.xml b/java/res/xml/rows_phone.xml
index d8dcfbd..03e4541 100644
--- a/java/res/xml/rows_phone.xml
+++ b/java/res/xml/rows_phone.xml
@@ -33,7 +33,7 @@
         <Key
             latin:keyStyle="num3KeyStyle" />
         <Key
-            latin:keyLabel="-"
+            latin:keySpec="-"
             latin:moreKeys="+"
             latin:keyLabelFlags="hasPopupHint"
             latin:keyStyle="numFunctionalKeyStyle"
@@ -47,7 +47,7 @@
         <Key
             latin:keyStyle="num6KeyStyle" />
         <Key
-            latin:keyLabel="."
+            latin:keySpec="."
             latin:keyStyle="numFunctionalKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
@@ -68,8 +68,7 @@
         <!-- U+0030: "0" DIGIT ZERO -->
         <Key
             latin:keyStyle="num0KeyStyle"
-            latin:code="0x0030"
-            latin:keyLabel="0 +"
+            latin:keySpec="0 +|0"
             latin:moreKeys="!noPanelAutoMoreKey!,+" />
         <Key
             latin:keyStyle="numSpaceKeyStyle" />
diff --git a/java/res/xml/rows_phone_symbols.xml b/java/res/xml/rows_phone_symbols.xml
index 8c10a2d..983bfb5 100644
--- a/java/res/xml/rows_phone_symbols.xml
+++ b/java/res/xml/rows_phone_symbols.xml
@@ -27,16 +27,16 @@
         latin:keyboardLayout="@xml/key_styles_number" />
     <Row>
         <Key
-            latin:keyLabel="("
+            latin:keySpec="("
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="/"
+            latin:keySpec="/"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel=")"
+            latin:keySpec=")"
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="-"
+            latin:keySpec="-"
             latin:moreKeys="+"
             latin:keyLabelFlags="hasPopupHint"
             latin:keyStyle="numFunctionalKeyStyle"
@@ -44,17 +44,17 @@
     </Row>
     <Row>
         <Key
-            latin:keyLabel="N"
+            latin:keySpec="N"
             latin:keyStyle="numKeyBaseStyle" />
         <!-- Pause is a comma. Check PhoneNumberUtils.java to see if this
             has changed. -->
         <Key
             latin:keyStyle="numPauseKeyStyle" />
         <Key
-            latin:keyLabel=","
+            latin:keySpec=","
             latin:keyStyle="numKeyStyle" />
         <Key
-            latin:keyLabel="."
+            latin:keySpec="."
             latin:keyStyle="numFunctionalKeyStyle"
             latin:keyWidth="fillRight" />
     </Row>
@@ -65,7 +65,7 @@
         <Key
             latin:keyStyle="numWaitKeyStyle" />
         <Key
-            latin:keyLabel="\#"
+            latin:keySpec="\#"
             latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyStyle="deleteKeyStyle"
@@ -75,7 +75,7 @@
         <Key
             latin:keyStyle="numPhoneToNumericKeyStyle" />
         <Key
-            latin:keyLabel="+"
+            latin:keySpec="+"
             latin:keyStyle="numKeyStyle" />
         <Key
             latin:keyStyle="numSpaceKeyStyle" />
diff --git a/java/res/xml/rows_sinhala.xml b/java/res/xml/rows_sinhala.xml
new file mode 100644
index 0000000..a2ba0bb
--- /dev/null
+++ b/java/res/xml/rows_sinhala.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_sinhala1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_sinhala2" />
+    </Row>
+    <Row
+        latin:keyWidth="8.711%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="10.8%p" />
+        <include latin:keyboardLayout="@xml/rowkeys_sinhala3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_swiss.xml b/java/res/xml/rows_swiss.xml
new file mode 100644
index 0000000..03e4129
--- /dev/null
+++ b/java/res/xml/rows_swiss.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_swiss1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+    >
+        <include
+            latin:keyboardLayout="@xml/rowkeys_swiss2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.2%p"
+    >
+        <Key
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="15%p"
+            latin:visualInsetsRight="1%p" />
+        <Spacer
+            latin:keyWidth="2.8%p" />
+        <include
+            latin:keyboardLayout="@xml/rowkeys_qwertz3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyXPos="-15%p"
+            latin:keyWidth="fillRight"
+            latin:visualInsetsLeft="1%p" />
+    </Row>
+    <include
+        latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/rows_symbols.xml b/java/res/xml/rows_symbols.xml
index d0606c6..6fd876f 100644
--- a/java/res/xml/rows_symbols.xml
+++ b/java/res/xml/rows_symbols.xml
@@ -54,6 +54,7 @@
     </Row>
     <Row
         latin:keyWidth="10%p"
+        latin:backgroundType="functional"
     >
         <Key
             latin:keyStyle="toAlphaKeyStyle"
diff --git a/java/res/xml/rows_symbols_shift.xml b/java/res/xml/rows_symbols_shift.xml
index c4bdb9f..64f6e61 100644
--- a/java/res/xml/rows_symbols_shift.xml
+++ b/java/res/xml/rows_symbols_shift.xml
@@ -54,6 +54,7 @@
     </Row>
     <Row
         latin:keyWidth="10%p"
+        latin:backgroundType="functional"
     >
         <Key
             latin:keyStyle="toAlphaKeyStyle"
diff --git a/java/res/xml/rows_tamil.xml b/java/res/xml/rows_tamil.xml
new file mode 100644
index 0000000..3aa2c8d
--- /dev/null
+++ b/java/res/xml/rows_tamil.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_tamil1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_tamil2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_tamil3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_telugu.xml b/java/res/xml/rows_telugu.xml
new file mode 100644
index 0000000..4a31d5d
--- /dev/null
+++ b/java/res/xml/rows_telugu.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_thai.xml b/java/res/xml/rows_thai.xml
index 108b7e1..fffdb44 100644
--- a/java/res/xml/rows_thai.xml
+++ b/java/res/xml/rows_thai.xml
@@ -18,41 +18,34 @@
 */
 -->
 
-<merge
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
-    <include
-        latin:keyboardLayout="@xml/key_styles_common" />
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_thai1" />
+        <include latin:keyboardLayout="@xml/rowkeys_thai1" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_thai2" />
+        <include latin:keyboardLayout="@xml/rowkeys_thai2" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <include
-            latin:keyboardLayout="@xml/rowkeys_thai3" />
-        <include
-            latin:keyboardLayout="@xml/key_thai_kho_khuat" />
+        <include latin:keyboardLayout="@xml/rowkeys_thai3" />
+        <include latin:keyboardLayout="@xml/key_thai_kho_khuat" />
     </Row>
     <Row
         latin:keyWidth="8.3333%p"
+        latin:keyLabelFlags="fontNormal"
     >
-        <Key
-            latin:keyStyle="shiftKeyStyle" />
-        <include
-            latin:keyboardLayout="@xml/rowkeys_thai4" />
-        <Key
-            latin:keyStyle="deleteKeyStyle" />
+        <Key latin:keyStyle="shiftKeyStyle" />
+        <include latin:keyboardLayout="@xml/rowkeys_thai4" />
+        <Key latin:keyStyle="deleteKeyStyle" />
     </Row>
-    <include
-        latin:keyboardLayout="@xml/row_qwerty4" />
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
 </merge>
diff --git a/java/res/xml/spell_checker_settings.xml b/java/res/xml/spell_checker_settings.xml
index de67e7f..3d95018 100644
--- a/java/res/xml/spell_checker_settings.xml
+++ b/java/res/xml/spell_checker_settings.xml
@@ -15,11 +15,12 @@
 -->
 
 <PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android">
-  <CheckBoxPreference
-     android:key="pref_spellcheck_use_contacts"
-     android:title="@string/use_contacts_for_spellchecking_option_title"
-     android:summary="@string/use_contacts_for_spellchecking_option_summary"
-     android:persistent="true"
-     android:defaultValue="true" />
+    xmlns:android="http://schemas.android.com/apk/res/android"
+>
+    <CheckBoxPreference
+        android:key="pref_spellcheck_use_contacts"
+        android:title="@string/use_contacts_for_spellchecking_option_title"
+        android:summary="@string/use_contacts_for_spellchecking_option_summary"
+        android:defaultValue="true"
+        android:persistent="true" />
 </PreferenceScreen>
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
deleted file mode 100644
index c628c5b..0000000
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * 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.accessibility;
-
-import android.graphics.Rect;
-import android.inputmethodservice.InputMethodService;
-import android.os.Bundle;
-import android.os.SystemClock;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.view.accessibility.AccessibilityEventCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
-import android.support.v4.view.accessibility.AccessibilityRecordCompat;
-import android.util.Log;
-import android.util.SparseArray;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.inputmethod.EditorInfo;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardView;
-import com.android.inputmethod.latin.settings.Settings;
-import com.android.inputmethod.latin.settings.SettingsValues;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.CoordinateUtils;
-
-/**
- * Exposes a virtual view sub-tree for {@link KeyboardView} and generates
- * {@link AccessibilityEvent}s for individual {@link Key}s.
- * <p>
- * A virtual sub-tree is composed of imaginary {@link View}s that are reported
- * as a part of the view hierarchy for accessibility purposes. This enables
- * custom views that draw complex content to report them selves as a tree of
- * virtual views, thus conveying their logical structure.
- * </p>
- */
-public final class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat {
-    private static final String TAG = AccessibilityEntityProvider.class.getSimpleName();
-    private static final int UNDEFINED = Integer.MIN_VALUE;
-
-    private final InputMethodService mInputMethodService;
-    private final KeyCodeDescriptionMapper mKeyCodeDescriptionMapper;
-    private final AccessibilityUtils mAccessibilityUtils;
-
-    /** A map of integer IDs to {@link Key}s. */
-    private final SparseArray<Key> mVirtualViewIdToKey = CollectionUtils.newSparseArray();
-
-    /** Temporary rect used to calculate in-screen bounds. */
-    private final Rect mTempBoundsInScreen = new Rect();
-
-    /** The parent view's cached on-screen location. */
-    private final int[] mParentLocation = CoordinateUtils.newInstance();
-
-    /** The virtual view identifier for the focused node. */
-    private int mAccessibilityFocusedView = UNDEFINED;
-
-    /** The current keyboard view. */
-    private KeyboardView mKeyboardView;
-
-    public AccessibilityEntityProvider(final KeyboardView keyboardView,
-            final InputMethodService inputMethod) {
-        mInputMethodService = inputMethod;
-        mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance();
-        mAccessibilityUtils = AccessibilityUtils.getInstance();
-        setView(keyboardView);
-    }
-
-    /**
-     * Sets the keyboard view represented by this node provider.
-     *
-     * @param keyboardView The keyboard view to represent.
-     */
-    public void setView(final KeyboardView keyboardView) {
-        mKeyboardView = keyboardView;
-        updateParentLocation();
-
-        // Since this class is constructed lazily, we might not get a subsequent
-        // call to setKeyboard() and therefore need to call it now.
-        setKeyboard();
-    }
-
-    /**
-     * Sets the keyboard represented by this node provider.
-     */
-    public void setKeyboard() {
-        assignVirtualViewIds();
-    }
-
-    /**
-     * Creates and populates an {@link AccessibilityEvent} for the specified key
-     * and event type.
-     *
-     * @param key A key on the host keyboard view.
-     * @param eventType The event type to create.
-     * @return A populated {@link AccessibilityEvent} for the key.
-     * @see AccessibilityEvent
-     */
-    public AccessibilityEvent createAccessibilityEvent(final Key key, final int eventType) {
-        final int virtualViewId = generateVirtualViewIdForKey(key);
-        final String keyDescription = getKeyDescription(key);
-        final AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
-        event.setPackageName(mKeyboardView.getContext().getPackageName());
-        event.setClassName(key.getClass().getName());
-        event.setContentDescription(keyDescription);
-        event.setEnabled(true);
-        final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event);
-        record.setSource(mKeyboardView, virtualViewId);
-        return event;
-    }
-
-    /**
-     * Returns an {@link AccessibilityNodeInfoCompat} representing a virtual
-     * view, i.e. a descendant of the host View, with the given <code>virtualViewId</code> or
-     * the host View itself if <code>virtualViewId</code> equals to {@link View#NO_ID}.
-     * <p>
-     * A virtual descendant is an imaginary View that is reported as a part of
-     * the view hierarchy for accessibility purposes. This enables custom views
-     * that draw complex content to report them selves as a tree of virtual
-     * views, thus conveying their logical structure.
-     * </p>
-     * <p>
-     * The implementer is responsible for obtaining an accessibility node info
-     * from the pool of reusable instances and setting the desired properties of
-     * the node info before returning it.
-     * </p>
-     *
-     * @param virtualViewId A client defined virtual view id.
-     * @return A populated {@link AccessibilityNodeInfoCompat} for a virtual descendant or the host
-     * View.
-     * @see AccessibilityNodeInfoCompat
-     */
-    @Override
-    public AccessibilityNodeInfoCompat createAccessibilityNodeInfo(final int virtualViewId) {
-        if (virtualViewId == UNDEFINED) {
-            return null;
-        }
-        if (virtualViewId == View.NO_ID) {
-            // We are requested to create an AccessibilityNodeInfo describing
-            // this View, i.e. the root of the virtual sub-tree.
-            final AccessibilityNodeInfoCompat rootInfo =
-                    AccessibilityNodeInfoCompat.obtain(mKeyboardView);
-            ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, rootInfo);
-
-            // Add the virtual children of the root View.
-            final Keyboard keyboard = mKeyboardView.getKeyboard();
-            final Key[] keys = keyboard.getKeys();
-            for (Key key : keys) {
-                final int childVirtualViewId = generateVirtualViewIdForKey(key);
-                rootInfo.addChild(mKeyboardView, childVirtualViewId);
-            }
-            return rootInfo;
-        }
-
-        // Find the view that corresponds to the given id.
-        final Key key = mVirtualViewIdToKey.get(virtualViewId);
-        if (key == null) {
-            Log.e(TAG, "Invalid virtual view ID: " + virtualViewId);
-            return null;
-        }
-        final String keyDescription = getKeyDescription(key);
-        final Rect boundsInParent = key.getHitBox();
-
-        // Calculate the key's in-screen bounds.
-        mTempBoundsInScreen.set(boundsInParent);
-        mTempBoundsInScreen.offset(
-                CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation));
-        final Rect boundsInScreen = mTempBoundsInScreen;
-
-        // Obtain and initialize an AccessibilityNodeInfo with information about the virtual view.
-        final AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
-        info.setPackageName(mKeyboardView.getContext().getPackageName());
-        info.setClassName(key.getClass().getName());
-        info.setContentDescription(keyDescription);
-        info.setBoundsInParent(boundsInParent);
-        info.setBoundsInScreen(boundsInScreen);
-        info.setParent(mKeyboardView);
-        info.setSource(mKeyboardView, virtualViewId);
-        info.setBoundsInScreen(boundsInScreen);
-        info.setEnabled(true);
-        info.setVisibleToUser(true);
-
-        if (mAccessibilityFocusedView == virtualViewId) {
-            info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
-        } else {
-            info.addAction(AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS);
-        }
-        return info;
-    }
-
-    /**
-     * Simulates a key press by injecting touch events into the keyboard view.
-     * This avoids the complexity of trackers and listeners within the keyboard.
-     *
-     * @param key The key to press.
-     */
-    void simulateKeyPress(final Key key) {
-        final int x = key.getHitBox().centerX();
-        final int y = key.getHitBox().centerY();
-        final long downTime = SystemClock.uptimeMillis();
-        final MotionEvent downEvent = MotionEvent.obtain(
-                downTime, downTime, MotionEvent.ACTION_DOWN, x, y, 0);
-        final MotionEvent upEvent = MotionEvent.obtain(
-                downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0);
-
-        mKeyboardView.onTouchEvent(downEvent);
-        mKeyboardView.onTouchEvent(upEvent);
-        downEvent.recycle();
-        upEvent.recycle();
-    }
-
-    @Override
-    public boolean performAction(final int virtualViewId, final int action,
-            final Bundle arguments) {
-        final Key key = mVirtualViewIdToKey.get(virtualViewId);
-        if (key == null) {
-            return false;
-        }
-        return performActionForKey(key, action, arguments);
-    }
-
-    /**
-     * Performs the specified accessibility action for the given key.
-     *
-     * @param key The on which to perform the action.
-     * @param action The action to perform.
-     * @param arguments The action's arguments.
-     * @return The result of performing the action, or false if the action is not supported.
-     */
-    boolean performActionForKey(final Key key, final int action, final Bundle arguments) {
-        final int virtualViewId = generateVirtualViewIdForKey(key);
-
-        switch (action) {
-        case AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS:
-            if (mAccessibilityFocusedView == virtualViewId) {
-                return false;
-            }
-            mAccessibilityFocusedView = virtualViewId;
-            sendAccessibilityEventForKey(
-                    key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
-            return true;
-        case AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
-            if (mAccessibilityFocusedView != virtualViewId) {
-                return false;
-            }
-            mAccessibilityFocusedView = UNDEFINED;
-            sendAccessibilityEventForKey(
-                    key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
-            return true;
-        default:
-            return false;
-        }
-    }
-
-    /**
-     * Sends an accessibility event for the given {@link Key}.
-     *
-     * @param key The key that's sending the event.
-     * @param eventType The type of event to send.
-     */
-    void sendAccessibilityEventForKey(final Key key, final int eventType) {
-        final AccessibilityEvent event = createAccessibilityEvent(key, eventType);
-        mAccessibilityUtils.requestSendAccessibilityEvent(event);
-    }
-
-    /**
-     * Returns the context-specific description for a {@link Key}.
-     *
-     * @param key The key to describe.
-     * @return The context-specific description of the key.
-     */
-    private String getKeyDescription(final Key key) {
-        final EditorInfo editorInfo = mInputMethodService.getCurrentInputEditorInfo();
-        final boolean shouldObscure = mAccessibilityUtils.shouldObscureInput(editorInfo);
-        final SettingsValues currentSettings = Settings.getInstance().getCurrent();
-        final String keyCodeDescription = mKeyCodeDescriptionMapper.getDescriptionForKey(
-                mKeyboardView.getContext(), mKeyboardView.getKeyboard(), key, shouldObscure);
-        if (currentSettings.isWordSeparator(key.getCode())) {
-            return mAccessibilityUtils.getAutoCorrectionDescription(
-                    keyCodeDescription, shouldObscure);
-        } else {
-            return keyCodeDescription;
-        }
-    }
-
-    /**
-     * Assigns virtual view IDs to keyboard keys and populates the related maps.
-     */
-    private void assignVirtualViewIds() {
-        final Keyboard keyboard = mKeyboardView.getKeyboard();
-        if (keyboard == null) {
-            return;
-        }
-        mVirtualViewIdToKey.clear();
-
-        final Key[] keys = keyboard.getKeys();
-        for (Key key : keys) {
-            final int virtualViewId = generateVirtualViewIdForKey(key);
-            mVirtualViewIdToKey.put(virtualViewId, key);
-        }
-    }
-
-    /**
-     * Updates the parent's on-screen location.
-     */
-    private void updateParentLocation() {
-        mKeyboardView.getLocationOnScreen(mParentLocation);
-    }
-
-    /**
-     * Generates a virtual view identifier for the given key. Returned
-     * identifiers are valid until the next global layout state change.
-     *
-     * @param key The key to identify.
-     * @return A virtual view identifier.
-     */
-    private static int generateVirtualViewIdForKey(final Key key) {
-        // The key x- and y-coordinates are stable between layout changes.
-        // Generate an identifier by bit-shifting the x-coordinate to the
-        // left-half of the integer and OR'ing with the y-coordinate.
-        return ((0xFFFF & key.getX()) << (Integer.SIZE / 2)) | (0xFFFF & key.getY());
-    }
-}
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java b/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java
new file mode 100644
index 0000000..37d910e
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityLongPressTimer.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.latin.R;
+
+// Handling long press timer to show a more keys keyboard.
+final class AccessibilityLongPressTimer extends Handler {
+    public interface LongPressTimerCallback {
+        public void performLongClickOn(Key key);
+    }
+
+    private static final int MSG_LONG_PRESS = 1;
+
+    private final LongPressTimerCallback mCallback;
+    private final long mConfigAccessibilityLongPressTimeout;
+
+    public AccessibilityLongPressTimer(final LongPressTimerCallback callback,
+            final Context context) {
+        super();
+        mCallback = callback;
+        mConfigAccessibilityLongPressTimeout = context.getResources().getInteger(
+                R.integer.config_accessibility_long_press_key_timeout);
+    }
+
+    @Override
+    public void handleMessage(final Message msg) {
+        switch (msg.what) {
+        case MSG_LONG_PRESS:
+            cancelLongPress();
+            mCallback.performLongClickOn((Key)msg.obj);
+            return;
+        default:
+            super.handleMessage(msg);
+            return;
+        }
+    }
+
+    public void startLongPress(final Key key) {
+        cancelLongPress();
+        final Message longPressMessage = obtainMessage(MSG_LONG_PRESS, key);
+        sendMessageDelayed(longPressMessage, mConfigAccessibilityLongPressTimeout);
+    }
+
+    public void cancelLongPress() {
+        removeMessages(MSG_LONG_PRESS);
+    }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
index 10fb9fe..2762a9f 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java
@@ -17,7 +17,6 @@
 package com.android.inputmethod.accessibility;
 
 import android.content.Context;
-import android.inputmethodservice.InputMethodService;
 import android.media.AudioManager;
 import android.os.Build;
 import android.os.SystemClock;
@@ -63,13 +62,11 @@
      */
     private static final boolean ENABLE_ACCESSIBILITY = true;
 
-    public static void init(final InputMethodService inputMethod) {
+    public static void init(final Context context) {
         if (!ENABLE_ACCESSIBILITY) return;
 
         // These only need to be initialized if the kill switch is off.
-        sInstance.initInternal(inputMethod);
-        KeyCodeDescriptionMapper.init();
-        AccessibleKeyboardViewProxy.init(inputMethod);
+        sInstance.initInternal(context);
     }
 
     public static AccessibilityUtils getInstance() {
@@ -116,7 +113,7 @@
      * @param event The event to check.
      * @return {@true} is the event is a touch exploration event
      */
-    public boolean isTouchExplorationEvent(final MotionEvent event) {
+    public static boolean isTouchExplorationEvent(final MotionEvent event) {
         final int action = event.getAction();
         return action == MotionEvent.ACTION_HOVER_ENTER
                 || action == MotionEvent.ACTION_HOVER_EXIT
@@ -158,7 +155,7 @@
      * @param typedWord the currently typed word
      */
     public void setAutoCorrection(final SuggestedWords suggestedWords, final String typedWord) {
-        if (suggestedWords != null && suggestedWords.mWillAutoCorrect) {
+        if (suggestedWords.mWillAutoCorrect) {
             mAutoCorrectionWord = suggestedWords.getWord(SuggestedWords.INDEX_OF_AUTO_CORRECTION);
             mTypedWord = typedWord;
         } else {
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
deleted file mode 100644
index 73896df..0000000
--- a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.accessibility;
-
-import android.content.Context;
-import android.inputmethodservice.InputMethodService;
-import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.view.accessibility.AccessibilityEventCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.util.SparseIntArray;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewParent;
-import android.view.accessibility.AccessibilityEvent;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardId;
-import com.android.inputmethod.keyboard.MainKeyboardView;
-import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.latin.R;
-
-public final class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat {
-    private static final AccessibleKeyboardViewProxy sInstance = new AccessibleKeyboardViewProxy();
-
-    /** Map of keyboard modes to resource IDs. */
-    private static final SparseIntArray KEYBOARD_MODE_RES_IDS = new SparseIntArray();
-
-    static {
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_DATE, R.string.keyboard_mode_date);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_DATETIME, R.string.keyboard_mode_date_time);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_EMAIL, R.string.keyboard_mode_email);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_IM, R.string.keyboard_mode_im);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_NUMBER, R.string.keyboard_mode_number);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_PHONE, R.string.keyboard_mode_phone);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_TEXT, R.string.keyboard_mode_text);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_TIME, R.string.keyboard_mode_time);
-        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_URL, R.string.keyboard_mode_url);
-    }
-
-    private InputMethodService mInputMethod;
-    private MainKeyboardView mView;
-    private AccessibilityEntityProvider mAccessibilityNodeProvider;
-
-    private Key mLastHoverKey = null;
-
-    /**
-     * Inset in pixels to look for keys when the user's finger exits the keyboard area.
-     */
-    private int mEdgeSlop;
-
-    /** The most recently set keyboard mode. */
-    private int mLastKeyboardMode;
-
-    public static void init(final InputMethodService inputMethod) {
-        sInstance.initInternal(inputMethod);
-    }
-
-    public static AccessibleKeyboardViewProxy getInstance() {
-        return sInstance;
-    }
-
-    private AccessibleKeyboardViewProxy() {
-        // Not publicly instantiable.
-    }
-
-    private void initInternal(final InputMethodService inputMethod) {
-        mInputMethod = inputMethod;
-        mEdgeSlop = inputMethod.getResources().getDimensionPixelSize(
-                R.dimen.accessibility_edge_slop);
-    }
-
-    /**
-     * Sets the view wrapped by this proxy.
-     *
-     * @param view The view to wrap.
-     */
-    public void setView(final MainKeyboardView view) {
-        if (view == null) {
-            // Ignore null views.
-            return;
-        }
-        mView = view;
-
-        // Ensure that the view has an accessibility delegate.
-        ViewCompat.setAccessibilityDelegate(view, this);
-
-        if (mAccessibilityNodeProvider == null) {
-            return;
-        }
-        mAccessibilityNodeProvider.setView(view);
-    }
-
-    /**
-     * Called when the keyboard layout changes.
-     * <p>
-     * <b>Note:</b> This method will be called even if accessibility is not
-     * enabled.
-     */
-    public void setKeyboard() {
-        if (mView == null) {
-            return;
-        }
-        if (mAccessibilityNodeProvider != null) {
-            mAccessibilityNodeProvider.setKeyboard();
-        }
-        final int keyboardMode = mView.getKeyboard().mId.mMode;
-
-        // Since this method is called even when accessibility is off, make sure
-        // to check the state before announcing anything. Also, don't announce
-        // changes within the same mode.
-        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()
-                && (mLastKeyboardMode != keyboardMode)) {
-            announceKeyboardMode(keyboardMode);
-        }
-        mLastKeyboardMode = keyboardMode;
-    }
-
-    /**
-     * Called when the keyboard is hidden and accessibility is enabled.
-     */
-    public void onHideWindow() {
-        if (mView == null) {
-            return;
-        }
-        announceKeyboardHidden();
-        mLastKeyboardMode = -1;
-    }
-
-    /**
-     * Announces which type of keyboard is being displayed. If the keyboard type
-     * is unknown, no announcement is made.
-     *
-     * @param mode The new keyboard mode.
-     */
-    private void announceKeyboardMode(int mode) {
-        final int resId = KEYBOARD_MODE_RES_IDS.get(mode);
-        if (resId == 0) {
-            return;
-        }
-        final Context context = mView.getContext();
-        final String keyboardMode = context.getString(resId);
-        final String text = context.getString(R.string.announce_keyboard_mode, keyboardMode);
-        sendWindowStateChanged(text);
-    }
-
-    /**
-     * Announces that the keyboard has been hidden.
-     */
-    private void announceKeyboardHidden() {
-        final Context context = mView.getContext();
-        final String text = context.getString(R.string.announce_keyboard_hidden);
-
-        sendWindowStateChanged(text);
-    }
-
-    /**
-     * Sends a window state change event with the specified text.
-     *
-     * @param text The text to send with the event.
-     */
-    private void sendWindowStateChanged(final String text) {
-        final AccessibilityEvent stateChange = AccessibilityEvent.obtain(
-                AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
-        mView.onInitializeAccessibilityEvent(stateChange);
-        stateChange.getText().add(text);
-        stateChange.setContentDescription(null);
-
-        final ViewParent parent = mView.getParent();
-        if (parent != null) {
-            parent.requestSendAccessibilityEvent(mView, stateChange);
-        }
-    }
-
-    /**
-     * Proxy method for View.getAccessibilityNodeProvider(). This method is called in SDK
-     * version 15 (Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) and higher to obtain the virtual
-     * node hierarchy provider.
-     *
-     * @param host The host view for the provider.
-     * @return The accessibility node provider for the current keyboard.
-     */
-    @Override
-    public AccessibilityEntityProvider getAccessibilityNodeProvider(final View host) {
-        if (mView == null) {
-            return null;
-        }
-        return getAccessibilityNodeProvider();
-    }
-
-    /**
-     * Intercepts touch events before dispatch when touch exploration is turned on in ICS and
-     * higher.
-     *
-     * @param event The motion event being dispatched.
-     * @return {@code true} if the event is handled
-     */
-    public boolean dispatchTouchEvent(final MotionEvent event) {
-        // To avoid accidental key presses during touch exploration, always drop
-        // touch events generated by the user.
-        return false;
-    }
-
-    /**
-     * Receives hover events when touch exploration is turned on in SDK versions ICS and higher.
-     *
-     * @param event The hover event.
-     * @return {@code true} if the event is handled
-     */
-    public boolean dispatchHoverEvent(final MotionEvent event, final PointerTracker tracker) {
-        if (mView == null) {
-            return false;
-        }
-
-        final int x = (int) event.getX();
-        final int y = (int) event.getY();
-        final Key previousKey = mLastHoverKey;
-        final Key key;
-
-        if (pointInView(x, y)) {
-            key = tracker.getKeyOn(x, y);
-        } else {
-            key = null;
-        }
-        mLastHoverKey = key;
-
-        switch (event.getAction()) {
-        case MotionEvent.ACTION_HOVER_EXIT:
-            // Make sure we're not getting an EXIT event because the user slid
-            // off the keyboard area, then force a key press.
-            if (key != null) {
-                getAccessibilityNodeProvider().simulateKeyPress(key);
-            }
-            //$FALL-THROUGH$
-        case MotionEvent.ACTION_HOVER_ENTER:
-            return onHoverKey(key, event);
-        case MotionEvent.ACTION_HOVER_MOVE:
-            if (key != previousKey) {
-                return onTransitionKey(key, previousKey, event);
-            }
-            return onHoverKey(key, event);
-        }
-        return false;
-    }
-
-    /**
-     * @return A lazily-instantiated node provider for this view proxy.
-     */
-    private AccessibilityEntityProvider getAccessibilityNodeProvider() {
-        // Instantiate the provide only when requested. Since the system
-        // will call this method multiple times it is a good practice to
-        // cache the provider instance.
-        if (mAccessibilityNodeProvider == null) {
-            mAccessibilityNodeProvider = new AccessibilityEntityProvider(mView, mInputMethod);
-        }
-        return mAccessibilityNodeProvider;
-    }
-
-    /**
-     * Utility method to determine whether the given point, in local coordinates, is inside the
-     * view, where the area of the view is contracted by the edge slop factor.
-     *
-     * @param localX The local x-coordinate.
-     * @param localY The local y-coordinate.
-     */
-    private boolean pointInView(final int localX, final int localY) {
-        return (localX >= mEdgeSlop) && (localY >= mEdgeSlop)
-                && (localX < (mView.getWidth() - mEdgeSlop))
-                && (localY < (mView.getHeight() - mEdgeSlop));
-    }
-
-    /**
-     * Simulates a transition between two {@link Key}s by sending a HOVER_EXIT on the previous key,
-     * a HOVER_ENTER on the current key, and a HOVER_MOVE on the current key.
-     *
-     * @param currentKey The currently hovered key.
-     * @param previousKey The previously hovered key.
-     * @param event The event that triggered the transition.
-     * @return {@code true} if the event was handled.
-     */
-    private boolean onTransitionKey(final Key currentKey, final Key previousKey,
-            final MotionEvent event) {
-        final int savedAction = event.getAction();
-        event.setAction(MotionEvent.ACTION_HOVER_EXIT);
-        onHoverKey(previousKey, event);
-        event.setAction(MotionEvent.ACTION_HOVER_ENTER);
-        onHoverKey(currentKey, event);
-        event.setAction(MotionEvent.ACTION_HOVER_MOVE);
-        final boolean handled = onHoverKey(currentKey, event);
-        event.setAction(savedAction);
-        return handled;
-    }
-
-    /**
-     * Handles a hover event on a key. If {@link Key} extended View, this would be analogous to
-     * calling View.onHoverEvent(MotionEvent).
-     *
-     * @param key The currently hovered key.
-     * @param event The hover event.
-     * @return {@code true} if the event was handled.
-     */
-    private boolean onHoverKey(final Key key, final MotionEvent event) {
-        // Null keys can't receive events.
-        if (key == null) {
-            return false;
-        }
-        final AccessibilityEntityProvider provider = getAccessibilityNodeProvider();
-
-        switch (event.getAction()) {
-        case MotionEvent.ACTION_HOVER_ENTER:
-            provider.sendAccessibilityEventForKey(
-                    key, AccessibilityEventCompat.TYPE_VIEW_HOVER_ENTER);
-            provider.performActionForKey(
-                    key, AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS, null);
-            break;
-        case MotionEvent.ACTION_HOVER_EXIT:
-            provider.sendAccessibilityEventForKey(
-                    key, AccessibilityEventCompat.TYPE_VIEW_HOVER_EXIT);
-            break;
-        }
-        return true;
-    }
-
-    /**
-     * Notifies the user of changes in the keyboard shift state.
-     */
-    public void notifyShiftState() {
-        if (mView == null) {
-            return;
-        }
-
-        final Keyboard keyboard = mView.getKeyboard();
-        final KeyboardId keyboardId = keyboard.mId;
-        final int elementId = keyboardId.mElementId;
-        final Context context = mView.getContext();
-        final CharSequence text;
-
-        switch (elementId) {
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
-            text = context.getText(R.string.spoken_description_shiftmode_locked);
-            break;
-        case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
-        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
-            text = context.getText(R.string.spoken_description_shiftmode_on);
-            break;
-        default:
-            text = context.getText(R.string.spoken_description_shiftmode_off);
-        }
-        AccessibilityUtils.getInstance().announceForAccessibility(mView, text);
-    }
-
-    /**
-     * Notifies the user of changes in the keyboard symbols state.
-     */
-    public void notifySymbolsState() {
-        if (mView == null) {
-            return;
-        }
-
-        final Keyboard keyboard = mView.getKeyboard();
-        final Context context = mView.getContext();
-        final KeyboardId keyboardId = keyboard.mId;
-        final int elementId = keyboardId.mElementId;
-        final int resId;
-
-        switch (elementId) {
-        case KeyboardId.ELEMENT_ALPHABET:
-        case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
-        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
-            resId = R.string.spoken_description_mode_alpha;
-            break;
-        case KeyboardId.ELEMENT_SYMBOLS:
-        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
-            resId = R.string.spoken_description_mode_symbol;
-            break;
-        case KeyboardId.ELEMENT_PHONE:
-            resId = R.string.spoken_description_mode_phone;
-            break;
-        case KeyboardId.ELEMENT_PHONE_SYMBOLS:
-            resId = R.string.spoken_description_mode_phone_shift;
-            break;
-        default:
-            resId = -1;
-        }
-
-        if (resId < 0) {
-            return;
-        }
-        final String text = context.getString(resId);
-        AccessibilityUtils.getInstance().announceForAccessibility(mView, text);
-    }
-}
diff --git a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
index 58624a2..7a3510e 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyCodeDescriptionMapper.java
@@ -17,6 +17,7 @@
 package com.android.inputmethod.accessibility;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseIntArray;
@@ -27,40 +28,29 @@
 import com.android.inputmethod.keyboard.KeyboardId;
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.StringUtils;
 
-import java.util.HashMap;
+import java.util.Locale;
 
-public final class KeyCodeDescriptionMapper {
+final class KeyCodeDescriptionMapper {
     private static final String TAG = KeyCodeDescriptionMapper.class.getSimpleName();
+    private static final String SPOKEN_LETTER_RESOURCE_NAME_FORMAT = "spoken_accented_letter_%04X";
+    private static final String SPOKEN_SYMBOL_RESOURCE_NAME_FORMAT = "spoken_symbol_%04X";
+    private static final String SPOKEN_EMOJI_RESOURCE_NAME_FORMAT = "spoken_emoji_%04X";
 
     // The resource ID of the string spoken for obscured keys
     private static final int OBSCURED_KEY_RES_ID = R.string.spoken_description_dot;
 
-    private static KeyCodeDescriptionMapper sInstance = new KeyCodeDescriptionMapper();
-
-    // Map of key labels to spoken description resource IDs
-    private final HashMap<CharSequence, Integer> mKeyLabelMap = CollectionUtils.newHashMap();
-
-    // Sparse array of spoken description resource IDs indexed by key codes
-    private final SparseIntArray mKeyCodeMap;
-
-    public static void init() {
-        sInstance.initInternal();
-    }
+    private static final KeyCodeDescriptionMapper sInstance = new KeyCodeDescriptionMapper();
 
     public static KeyCodeDescriptionMapper getInstance() {
         return sInstance;
     }
 
+    // Sparse array of spoken description resource IDs indexed by key codes
+    private final SparseIntArray mKeyCodeMap = new SparseIntArray();
+
     private KeyCodeDescriptionMapper() {
-        mKeyCodeMap = new SparseIntArray();
-    }
-
-    private void initInternal() {
-        // Manual label substitutions for key labels with no string resource
-        mKeyLabelMap.put(":-)", R.string.spoken_description_smiley);
-
         // Special non-character codes defined in Keyboard
         mKeyCodeMap.put(Constants.CODE_SPACE, R.string.spoken_description_space);
         mKeyCodeMap.put(Constants.CODE_DELETE, R.string.spoken_description_delete);
@@ -75,19 +65,21 @@
         mKeyCodeMap.put(Constants.CODE_ACTION_NEXT, R.string.spoken_description_action_next);
         mKeyCodeMap.put(Constants.CODE_ACTION_PREVIOUS,
                 R.string.spoken_description_action_previous);
+        mKeyCodeMap.put(Constants.CODE_EMOJI, R.string.spoken_description_emoji);
+        // Because the upper-case and lower-case mappings of the following letters is depending on
+        // the locale, the upper case descriptions should be defined here. The lower case
+        // descriptions are handled in {@link #getSpokenLetterDescriptionId(Context,int)}.
+        // U+0049: "I" LATIN CAPITAL LETTER I
+        // U+0069: "i" LATIN SMALL LETTER I
+        // U+0130: "İ" LATIN CAPITAL LETTER I WITH DOT ABOVE
+        // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+        mKeyCodeMap.put(0x0049, R.string.spoken_letter_0049);
+        mKeyCodeMap.put(0x0130, R.string.spoken_letter_0130);
     }
 
     /**
      * Returns the localized description of the action performed by a specified
      * key based on the current keyboard state.
-     * <p>
-     * The order of precedence for key descriptions is:
-     * <ol>
-     * <li>Manually-defined based on the key label</li>
-     * <li>Automatic or manually-defined based on the key code</li>
-     * <li>Automatically based on the key label</li>
-     * <li>{code null} for keys with no label or key code defined</li>
-     * </p>
      *
      * @param context The package's context.
      * @param keyboard The keyboard on which the key resides.
@@ -116,18 +108,26 @@
             return getDescriptionForActionKey(context, keyboard, key);
         }
 
-        if (!TextUtils.isEmpty(key.getLabel())) {
-            final String label = key.getLabel().trim();
-
-            // First, attempt to map the label to a pre-defined description.
-            if (mKeyLabelMap.containsKey(label)) {
-                return context.getString(mKeyLabelMap.get(label));
-            }
+        if (code == Constants.CODE_OUTPUT_TEXT) {
+            return key.getOutputText();
         }
 
         // Just attempt to speak the description.
-        if (key.getCode() != Constants.CODE_UNSPECIFIED) {
-            return getDescriptionForKeyCode(context, keyboard, key, shouldObscure);
+        if (code != Constants.CODE_UNSPECIFIED) {
+            // If the key description should be obscured, now is the time to do it.
+            final boolean isDefinedNonCtrl = Character.isDefined(code)
+                    && !Character.isISOControl(code);
+            if (shouldObscure && isDefinedNonCtrl) {
+                return context.getString(OBSCURED_KEY_RES_ID);
+            }
+            final String description = getDescriptionForCodePoint(context, code);
+            if (description != null) {
+                return description;
+            }
+            if (!TextUtils.isEmpty(key.getLabel())) {
+                return key.getLabel();
+            }
+            return context.getString(R.string.spoken_description_unknown);
         }
         return null;
     }
@@ -141,7 +141,7 @@
      * @param keyboard The keyboard on which the key resides.
      * @return a character sequence describing the action performed by pressing the key
      */
-    private String getDescriptionForSwitchAlphaSymbol(final Context context,
+    private static String getDescriptionForSwitchAlphaSymbol(final Context context,
             final Keyboard keyboard) {
         final KeyboardId keyboardId = keyboard.mId;
         final int elementId = keyboardId.mElementId;
@@ -179,7 +179,8 @@
      * @param keyboard The keyboard on which the key resides.
      * @return A context-sensitive description of the "Shift" key.
      */
-    private String getDescriptionForShiftKey(final Context context, final Keyboard keyboard) {
+    private static String getDescriptionForShiftKey(final Context context,
+            final Keyboard keyboard) {
         final KeyboardId keyboardId = keyboard.mId;
         final int elementId = keyboardId.mElementId;
         final int resId;
@@ -191,9 +192,14 @@
             break;
         case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
         case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
-        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
             resId = R.string.spoken_description_shift_shifted;
             break;
+        case KeyboardId.ELEMENT_SYMBOLS:
+            resId = R.string.spoken_description_symbols_shift;
+            break;
+        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
+            resId = R.string.spoken_description_symbols_shift_shifted;
+            break;
         default:
             resId = R.string.spoken_description_shift;
         }
@@ -208,7 +214,7 @@
      * @param key The key to describe.
      * @return Returns a context-sensitive description of the "Enter" action key.
      */
-    private String getDescriptionForActionKey(final Context context, final Keyboard keyboard,
+    private static String getDescriptionForActionKey(final Context context, final Keyboard keyboard,
             final Key key) {
         final KeyboardId keyboardId = keyboard.mId;
         final int actionId = keyboardId.imeAction();
@@ -247,42 +253,91 @@
 
     /**
      * Returns a localized character sequence describing what will happen when
-     * the specified key is pressed based on its key code.
-     * <p>
-     * The order of precedence for key code descriptions is:
-     * <ol>
-     * <li>Manually-defined shift-locked description</li>
-     * <li>Manually-defined shifted description</li>
-     * <li>Manually-defined normal description</li>
-     * <li>Automatic based on the character represented by the key code</li>
-     * <li>Fall-back for undefined or control characters</li>
-     * </ol>
-     * </p>
+     * the specified key is pressed based on its key code point.
      *
      * @param context The package's context.
-     * @param keyboard The keyboard on which the key resides.
-     * @param key The key from which to obtain a description.
-     * @param shouldObscure {@true} if text (e.g. non-control) characters should be obscured.
-     * @return a character sequence describing the action performed by pressing the key
+     * @param codePoint The code point from which to obtain a description.
+     * @return a character sequence describing the code point.
      */
-    private String getDescriptionForKeyCode(final Context context, final Keyboard keyboard,
-            final Key key, final boolean shouldObscure) {
-        final int code = key.getCode();
-
+    public String getDescriptionForCodePoint(final Context context, final int codePoint) {
         // If the key description should be obscured, now is the time to do it.
-        final boolean isDefinedNonCtrl = Character.isDefined(code) && !Character.isISOControl(code);
-        if (shouldObscure && isDefinedNonCtrl) {
-            return context.getString(OBSCURED_KEY_RES_ID);
+        final int index = mKeyCodeMap.indexOfKey(codePoint);
+        if (index >= 0) {
+            return context.getString(mKeyCodeMap.valueAt(index));
         }
-        if (mKeyCodeMap.indexOfKey(code) >= 0) {
-            return context.getString(mKeyCodeMap.get(code));
+        final String accentedLetter = getSpokenAccentedLetterDescription(context, codePoint);
+        if (accentedLetter != null) {
+            return accentedLetter;
         }
-        if (isDefinedNonCtrl) {
-            return Character.toString((char) code);
+        // Here, <code>code</code> may be a base (non-accented) letter.
+        final String unsupportedSymbol = getSpokenSymbolDescription(context, codePoint);
+        if (unsupportedSymbol != null) {
+            return unsupportedSymbol;
         }
-        if (!TextUtils.isEmpty(key.getLabel())) {
-            return key.getLabel();
+        final String emojiDescription = getSpokenEmojiDescription(context, codePoint);
+        if (emojiDescription != null) {
+            return emojiDescription;
         }
-        return context.getString(R.string.spoken_description_unknown, code);
+        if (Character.isDefined(codePoint) && !Character.isISOControl(codePoint)) {
+            return StringUtils.newSingleCodePointString(codePoint);
+        }
+        return null;
+    }
+
+    // TODO: Remove this method once TTS supports those accented letters' verbalization.
+    private String getSpokenAccentedLetterDescription(final Context context, final int code) {
+        final boolean isUpperCase = Character.isUpperCase(code);
+        final int baseCode = isUpperCase ? Character.toLowerCase(code) : code;
+        final int baseIndex = mKeyCodeMap.indexOfKey(baseCode);
+        final int resId = (baseIndex >= 0) ? mKeyCodeMap.valueAt(baseIndex)
+                : getSpokenDescriptionId(context, baseCode, SPOKEN_LETTER_RESOURCE_NAME_FORMAT);
+        if (resId == 0) {
+            return null;
+        }
+        final String spokenText = context.getString(resId);
+        return isUpperCase ? context.getString(R.string.spoken_description_upper_case, spokenText)
+                : spokenText;
+    }
+
+    // TODO: Remove this method once TTS supports those symbols' verbalization.
+    private String getSpokenSymbolDescription(final Context context, final int code) {
+        final int resId = getSpokenDescriptionId(context, code, SPOKEN_SYMBOL_RESOURCE_NAME_FORMAT);
+        if (resId == 0) {
+            return null;
+        }
+        final String spokenText = context.getString(resId);
+        if (!TextUtils.isEmpty(spokenText)) {
+            return spokenText;
+        }
+        // If a translated description is empty, fall back to unknown symbol description.
+        return context.getString(R.string.spoken_symbol_unknown);
+    }
+
+    // TODO: Remove this method once TTS supports emoji verbalization.
+    private String getSpokenEmojiDescription(final Context context, final int code) {
+        final int resId = getSpokenDescriptionId(context, code, SPOKEN_EMOJI_RESOURCE_NAME_FORMAT);
+        if (resId == 0) {
+            return null;
+        }
+        final String spokenText = context.getString(resId);
+        if (!TextUtils.isEmpty(spokenText)) {
+            return spokenText;
+        }
+        // If a translated description is empty, fall back to unknown emoji description.
+        return context.getString(R.string.spoken_emoji_unknown);
+    }
+
+    private int getSpokenDescriptionId(final Context context, final int code,
+            final String resourceNameFormat) {
+        final String resourceName = String.format(Locale.ROOT, resourceNameFormat, code);
+        final Resources resources = context.getResources();
+        // Note that the resource package name may differ from the context package name.
+        final String resourcePackageName = resources.getResourcePackageName(
+                R.string.spoken_description_unknown);
+        final int resId = resources.getIdentifier(resourceName, "string", resourcePackageName);
+        if (resId != 0) {
+            mKeyCodeMap.append(code, resId);
+        }
+        return resId;
     }
 }
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
new file mode 100644
index 0000000..237117d
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
@@ -0,0 +1,327 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.content.Context;
+import android.os.SystemClock;
+import android.support.v4.view.AccessibilityDelegateCompat;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewParent;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardView;
+
+/**
+ * This class represents a delegate that can be registered in a class that extends
+ * {@link KeyboardView} to enhance accessibility support via composition rather via inheritance.
+ *
+ * To implement accessibility mode, the target keyboard view has to:<p>
+ * - Call {@link #setKeyboard(Keyboard)} when a new keyboard is set to the keyboard view.
+ * - Dispatch a hover event by calling {@link #onHoverEnter(MotionEvent)}.
+ *
+ * @param <KV> The keyboard view class type.
+ */
+public class KeyboardAccessibilityDelegate<KV extends KeyboardView>
+        extends AccessibilityDelegateCompat {
+    private static final String TAG = KeyboardAccessibilityDelegate.class.getSimpleName();
+    protected static final boolean DEBUG_HOVER = false;
+
+    protected final KV mKeyboardView;
+    protected final KeyDetector mKeyDetector;
+    private Keyboard mKeyboard;
+    private KeyboardAccessibilityNodeProvider<KV> mAccessibilityNodeProvider;
+    private Key mLastHoverKey;
+
+    public static final int HOVER_EVENT_POINTER_ID = 0;
+
+    public KeyboardAccessibilityDelegate(final KV keyboardView, final KeyDetector keyDetector) {
+        super();
+        mKeyboardView = keyboardView;
+        mKeyDetector = keyDetector;
+
+        // Ensure that the view has an accessibility delegate.
+        ViewCompat.setAccessibilityDelegate(keyboardView, this);
+    }
+
+    /**
+     * Called when the keyboard layout changes.
+     * <p>
+     * <b>Note:</b> This method will be called even if accessibility is not
+     * enabled.
+     * @param keyboard The keyboard that is being set to the wrapping view.
+     */
+    public void setKeyboard(final Keyboard keyboard) {
+        if (keyboard == null) {
+            return;
+        }
+        if (mAccessibilityNodeProvider != null) {
+            mAccessibilityNodeProvider.setKeyboard(keyboard);
+        }
+        mKeyboard = keyboard;
+    }
+
+    protected final Keyboard getKeyboard() {
+        return mKeyboard;
+    }
+
+    protected final void setLastHoverKey(final Key key) {
+        mLastHoverKey = key;
+    }
+
+    protected final Key getLastHoverKey() {
+        return mLastHoverKey;
+    }
+
+    /**
+     * Sends a window state change event with the specified string resource id.
+     *
+     * @param resId The string resource id of the text to send with the event.
+     */
+    protected void sendWindowStateChanged(final int resId) {
+        if (resId == 0) {
+            return;
+        }
+        final Context context = mKeyboardView.getContext();
+        sendWindowStateChanged(context.getString(resId));
+    }
+
+    /**
+     * Sends a window state change event with the specified text.
+     *
+     * @param text The text to send with the event.
+     */
+    protected void sendWindowStateChanged(final String text) {
+        final AccessibilityEvent stateChange = AccessibilityEvent.obtain(
+                AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+        mKeyboardView.onInitializeAccessibilityEvent(stateChange);
+        stateChange.getText().add(text);
+        stateChange.setContentDescription(null);
+
+        final ViewParent parent = mKeyboardView.getParent();
+        if (parent != null) {
+            parent.requestSendAccessibilityEvent(mKeyboardView, stateChange);
+        }
+    }
+
+    /**
+     * Delegate method for View.getAccessibilityNodeProvider(). This method is called in SDK
+     * version 15 (Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) and higher to obtain the virtual
+     * node hierarchy provider.
+     *
+     * @param host The host view for the provider.
+     * @return The accessibility node provider for the current keyboard.
+     */
+    @Override
+    public KeyboardAccessibilityNodeProvider<KV> getAccessibilityNodeProvider(final View host) {
+        return getAccessibilityNodeProvider();
+    }
+
+    /**
+     * @return A lazily-instantiated node provider for this view delegate.
+     */
+    protected KeyboardAccessibilityNodeProvider<KV> getAccessibilityNodeProvider() {
+        // Instantiate the provide only when requested. Since the system
+        // will call this method multiple times it is a good practice to
+        // cache the provider instance.
+        if (mAccessibilityNodeProvider == null) {
+            mAccessibilityNodeProvider =
+                    new KeyboardAccessibilityNodeProvider<>(mKeyboardView, this);
+        }
+        return mAccessibilityNodeProvider;
+    }
+
+    /**
+     * Get a key that a hover event is on.
+     *
+     * @param event The hover event.
+     * @return key The key that the <code>event</code> is on.
+     */
+    protected final Key getHoverKeyOf(final MotionEvent event) {
+        final int actionIndex = event.getActionIndex();
+        final int x = (int)event.getX(actionIndex);
+        final int y = (int)event.getY(actionIndex);
+        return mKeyDetector.detectHitKey(x, y);
+    }
+
+    /**
+     * Receives hover events when touch exploration is turned on in SDK versions ICS and higher.
+     *
+     * @param event The hover event.
+     * @return {@code true} if the event is handled.
+     */
+    public boolean onHoverEvent(final MotionEvent event) {
+        switch (event.getActionMasked()) {
+        case MotionEvent.ACTION_HOVER_ENTER:
+            onHoverEnter(event);
+            break;
+        case MotionEvent.ACTION_HOVER_MOVE:
+            onHoverMove(event);
+            break;
+        case MotionEvent.ACTION_HOVER_EXIT:
+            onHoverExit(event);
+            break;
+        default:
+            Log.w(getClass().getSimpleName(), "Unknown hover event: " + event);
+            break;
+        }
+        return true;
+    }
+
+    /**
+     * Process {@link MotionEvent#ACTION_HOVER_ENTER} event.
+     *
+     * @param event A hover enter event.
+     */
+    protected void onHoverEnter(final MotionEvent event) {
+        final Key key = getHoverKeyOf(event);
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverEnter: key=" + key);
+        }
+        if (key != null) {
+            onHoverEnterTo(key);
+        }
+        setLastHoverKey(key);
+    }
+
+    /**
+     * Process {@link MotionEvent#ACTION_HOVER_MOVE} event.
+     *
+     * @param event A hover move event.
+     */
+    protected void onHoverMove(final MotionEvent event) {
+        final Key lastKey = getLastHoverKey();
+        final Key key = getHoverKeyOf(event);
+        if (key != lastKey) {
+            if (lastKey != null) {
+                onHoverExitFrom(lastKey);
+            }
+            if (key != null) {
+                onHoverEnterTo(key);
+            }
+        }
+        if (key != null) {
+            onHoverMoveWithin(key);
+        }
+        setLastHoverKey(key);
+    }
+
+    /**
+     * Process {@link MotionEvent#ACTION_HOVER_EXIT} event.
+     *
+     * @param event A hover exit event.
+     */
+    protected void onHoverExit(final MotionEvent event) {
+        final Key lastKey = getLastHoverKey();
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverExit: key=" + getHoverKeyOf(event) + " last=" + lastKey);
+        }
+        if (lastKey != null) {
+            onHoverExitFrom(lastKey);
+        }
+        final Key key = getHoverKeyOf(event);
+        // Make sure we're not getting an EXIT event because the user slid
+        // off the keyboard area, then force a key press.
+        if (key != null) {
+            performClickOn(key);
+            onHoverExitFrom(key);
+        }
+        setLastHoverKey(null);
+    }
+
+    /**
+     * Perform click on a key.
+     *
+     * @param key A key to be registered.
+     */
+    public void performClickOn(final Key key) {
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "performClickOn: key=" + key);
+        }
+        simulateTouchEvent(MotionEvent.ACTION_DOWN, key);
+        simulateTouchEvent(MotionEvent.ACTION_UP, key);
+    }
+
+    /**
+     * Simulating a touch event by injecting a synthesized touch event into {@link KeyboardView}.
+     *
+     * @param touchAction The action of the synthesizing touch event.
+     * @param key The key that a synthesized touch event is on.
+     */
+    private void simulateTouchEvent(final int touchAction, final Key key) {
+        final int x = key.getHitBox().centerX();
+        final int y = key.getHitBox().centerY();
+        final long eventTime = SystemClock.uptimeMillis();
+        final MotionEvent touchEvent = MotionEvent.obtain(
+                eventTime, eventTime, touchAction, x, y, 0 /* metaState */);
+        mKeyboardView.onTouchEvent(touchEvent);
+        touchEvent.recycle();
+    }
+
+    /**
+     * Handles a hover enter event on a key.
+     *
+     * @param key The currently hovered key.
+     */
+    protected void onHoverEnterTo(final Key key) {
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverEnterTo: key=" + key);
+        }
+        key.onPressed();
+        mKeyboardView.invalidateKey(key);
+        final KeyboardAccessibilityNodeProvider<KV> provider = getAccessibilityNodeProvider();
+        provider.onHoverEnterTo(key);
+        provider.performActionForKey(key, AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS);
+    }
+
+    /**
+     * Handles a hover move event on a key.
+     *
+     * @param key The currently hovered key.
+     */
+    protected void onHoverMoveWithin(final Key key) { }
+
+    /**
+     * Handles a hover exit event on a key.
+     *
+     * @param key The currently hovered key.
+     */
+    protected void onHoverExitFrom(final Key key) {
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverExitFrom: key=" + key);
+        }
+        key.onReleased();
+        mKeyboardView.invalidateKey(key);
+        final KeyboardAccessibilityNodeProvider<KV> provider = getAccessibilityNodeProvider();
+        provider.onHoverExitFrom(key);
+    }
+
+    /**
+     * Perform long click on a key.
+     *
+     * @param key A key to be long pressed on.
+     */
+    public void performLongClickOn(final Key key) {
+        // A extended class should override this method to implement long press.
+    }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
new file mode 100644
index 0000000..66b0acb
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
@@ -0,0 +1,343 @@
+/*
+ * 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.accessibility;
+
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.accessibility.AccessibilityEventCompat;
+import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
+import android.support.v4.view.accessibility.AccessibilityNodeProviderCompat;
+import android.support.v4.view.accessibility.AccessibilityRecordCompat;
+import android.util.Log;
+import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.inputmethod.EditorInfo;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.latin.settings.Settings;
+import com.android.inputmethod.latin.settings.SettingsValues;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+
+import java.util.List;
+
+/**
+ * Exposes a virtual view sub-tree for {@link KeyboardView} and generates
+ * {@link AccessibilityEvent}s for individual {@link Key}s.
+ * <p>
+ * A virtual sub-tree is composed of imaginary {@link View}s that are reported
+ * as a part of the view hierarchy for accessibility purposes. This enables
+ * custom views that draw complex content to report them selves as a tree of
+ * virtual views, thus conveying their logical structure.
+ * </p>
+ */
+final class KeyboardAccessibilityNodeProvider<KV extends KeyboardView>
+        extends AccessibilityNodeProviderCompat {
+    private static final String TAG = KeyboardAccessibilityNodeProvider.class.getSimpleName();
+
+    // From {@link android.view.accessibility.AccessibilityNodeInfo#UNDEFINED_ITEM_ID}.
+    private static final int UNDEFINED = Integer.MAX_VALUE;
+
+    private final KeyCodeDescriptionMapper mKeyCodeDescriptionMapper;
+    private final AccessibilityUtils mAccessibilityUtils;
+
+    /** Temporary rect used to calculate in-screen bounds. */
+    private final Rect mTempBoundsInScreen = new Rect();
+
+    /** The parent view's cached on-screen location. */
+    private final int[] mParentLocation = CoordinateUtils.newInstance();
+
+    /** The virtual view identifier for the focused node. */
+    private int mAccessibilityFocusedView = UNDEFINED;
+
+    /** The virtual view identifier for the hovering node. */
+    private int mHoveringNodeId = UNDEFINED;
+
+    /** The keyboard view to provide an accessibility node info. */
+    private final KV mKeyboardView;
+    /** The accessibility delegate. */
+    private final KeyboardAccessibilityDelegate<KV> mDelegate;
+
+    /** The current keyboard. */
+    private Keyboard mKeyboard;
+
+    public KeyboardAccessibilityNodeProvider(final KV keyboardView,
+            final KeyboardAccessibilityDelegate<KV> delegate) {
+        super();
+        mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance();
+        mAccessibilityUtils = AccessibilityUtils.getInstance();
+        mKeyboardView = keyboardView;
+        mDelegate = delegate;
+
+        // Since this class is constructed lazily, we might not get a subsequent
+        // call to setKeyboard() and therefore need to call it now.
+        setKeyboard(keyboardView.getKeyboard());
+    }
+
+    /**
+     * Sets the keyboard represented by this node provider.
+     *
+     * @param keyboard The keyboard that is being set to the keyboard view.
+     */
+    public void setKeyboard(final Keyboard keyboard) {
+        mKeyboard = keyboard;
+    }
+
+    private Key getKeyOf(final int virtualViewId) {
+        if (mKeyboard == null) {
+            return null;
+        }
+        final List<Key> sortedKeys = mKeyboard.getSortedKeys();
+        // Use a virtual view id as an index of the sorted keys list.
+        if (virtualViewId >= 0 && virtualViewId < sortedKeys.size()) {
+            return sortedKeys.get(virtualViewId);
+        }
+        return null;
+    }
+
+    private int getVirtualViewIdOf(final Key key) {
+        if (mKeyboard == null) {
+            return View.NO_ID;
+        }
+        final List<Key> sortedKeys = mKeyboard.getSortedKeys();
+        final int size = sortedKeys.size();
+        for (int index = 0; index < size; index++) {
+            if (sortedKeys.get(index) == key) {
+                // Use an index of the sorted keys list as a virtual view id.
+                return index;
+            }
+        }
+        return View.NO_ID;
+    }
+
+    /**
+     * Creates and populates an {@link AccessibilityEvent} for the specified key
+     * and event type.
+     *
+     * @param key A key on the host keyboard view.
+     * @param eventType The event type to create.
+     * @return A populated {@link AccessibilityEvent} for the key.
+     * @see AccessibilityEvent
+     */
+    public AccessibilityEvent createAccessibilityEvent(final Key key, final int eventType) {
+        final int virtualViewId = getVirtualViewIdOf(key);
+        final String keyDescription = getKeyDescription(key);
+        final AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
+        event.setPackageName(mKeyboardView.getContext().getPackageName());
+        event.setClassName(key.getClass().getName());
+        event.setContentDescription(keyDescription);
+        event.setEnabled(true);
+        final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
+        record.setSource(mKeyboardView, virtualViewId);
+        return event;
+    }
+
+    public void onHoverEnterTo(final Key key) {
+        final int id = getVirtualViewIdOf(key);
+        if (id == View.NO_ID) {
+            return;
+        }
+        // Start hovering on the key. Because our accessibility model is lift-to-type, we should
+        // report the node info without click and long click actions to avoid unnecessary
+        // announcements.
+        mHoveringNodeId = id;
+        // Invalidate the node info of the key.
+        sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED);
+        sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_VIEW_HOVER_ENTER);
+    }
+
+    public void onHoverExitFrom(final Key key) {
+        mHoveringNodeId = UNDEFINED;
+        // Invalidate the node info of the key to be able to revert the change we have done
+        // in {@link #onHoverEnterTo(Key)}.
+        sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED);
+        sendAccessibilityEventForKey(key, AccessibilityEventCompat.TYPE_VIEW_HOVER_EXIT);
+    }
+
+    /**
+     * Returns an {@link AccessibilityNodeInfoCompat} representing a virtual
+     * view, i.e. a descendant of the host View, with the given <code>virtualViewId</code> or
+     * the host View itself if <code>virtualViewId</code> equals to {@link View#NO_ID}.
+     * <p>
+     * A virtual descendant is an imaginary View that is reported as a part of
+     * the view hierarchy for accessibility purposes. This enables custom views
+     * that draw complex content to report them selves as a tree of virtual
+     * views, thus conveying their logical structure.
+     * </p>
+     * <p>
+     * The implementer is responsible for obtaining an accessibility node info
+     * from the pool of reusable instances and setting the desired properties of
+     * the node info before returning it.
+     * </p>
+     *
+     * @param virtualViewId A client defined virtual view id.
+     * @return A populated {@link AccessibilityNodeInfoCompat} for a virtual descendant or the host
+     * View.
+     * @see AccessibilityNodeInfoCompat
+     */
+    @Override
+    public AccessibilityNodeInfoCompat createAccessibilityNodeInfo(final int virtualViewId) {
+        if (virtualViewId == UNDEFINED) {
+            return null;
+        }
+        if (virtualViewId == View.NO_ID) {
+            // We are requested to create an AccessibilityNodeInfo describing
+            // this View, i.e. the root of the virtual sub-tree.
+            final AccessibilityNodeInfoCompat rootInfo =
+                    AccessibilityNodeInfoCompat.obtain(mKeyboardView);
+            ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, rootInfo);
+            updateParentLocation();
+
+            // Add the virtual children of the root View.
+            final List<Key> sortedKeys = mKeyboard.getSortedKeys();
+            final int size = sortedKeys.size();
+            for (int index = 0; index < size; index++) {
+                final Key key = sortedKeys.get(index);
+                if (key.isSpacer()) {
+                    continue;
+                }
+                // Use an index of the sorted keys list as a virtual view id.
+                rootInfo.addChild(mKeyboardView, index);
+            }
+            return rootInfo;
+        }
+
+        // Find the key that corresponds to the given virtual view id.
+        final Key key = getKeyOf(virtualViewId);
+        if (key == null) {
+            Log.e(TAG, "Invalid virtual view ID: " + virtualViewId);
+            return null;
+        }
+        final String keyDescription = getKeyDescription(key);
+        final Rect boundsInParent = key.getHitBox();
+
+        // Calculate the key's in-screen bounds.
+        mTempBoundsInScreen.set(boundsInParent);
+        mTempBoundsInScreen.offset(
+                CoordinateUtils.x(mParentLocation), CoordinateUtils.y(mParentLocation));
+        final Rect boundsInScreen = mTempBoundsInScreen;
+
+        // Obtain and initialize an AccessibilityNodeInfo with information about the virtual view.
+        final AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
+        info.setPackageName(mKeyboardView.getContext().getPackageName());
+        info.setClassName(key.getClass().getName());
+        info.setContentDescription(keyDescription);
+        info.setBoundsInParent(boundsInParent);
+        info.setBoundsInScreen(boundsInScreen);
+        info.setParent(mKeyboardView);
+        info.setSource(mKeyboardView, virtualViewId);
+        info.setEnabled(key.isEnabled());
+        info.setVisibleToUser(true);
+        // Don't add ACTION_CLICK and ACTION_LONG_CLOCK actions while hovering on the key.
+        // See {@link #onHoverEnterTo(Key)} and {@link #onHoverExitFrom(Key)}.
+        if (virtualViewId != mHoveringNodeId) {
+            info.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
+            if (key.isLongPressEnabled()) {
+                info.addAction(AccessibilityNodeInfoCompat.ACTION_LONG_CLICK);
+            }
+        }
+
+        if (mAccessibilityFocusedView == virtualViewId) {
+            info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
+        } else {
+            info.addAction(AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS);
+        }
+        return info;
+    }
+
+    @Override
+    public boolean performAction(final int virtualViewId, final int action,
+            final Bundle arguments) {
+        final Key key = getKeyOf(virtualViewId);
+        if (key == null) {
+            return false;
+        }
+        return performActionForKey(key, action);
+    }
+
+    /**
+     * Performs the specified accessibility action for the given key.
+     *
+     * @param key The on which to perform the action.
+     * @param action The action to perform.
+     * @return The result of performing the action, or false if the action is not supported.
+     */
+    boolean performActionForKey(final Key key, final int action) {
+        switch (action) {
+        case AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS:
+            mAccessibilityFocusedView = getVirtualViewIdOf(key);
+            sendAccessibilityEventForKey(
+                    key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
+            return true;
+        case AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
+            mAccessibilityFocusedView = UNDEFINED;
+            sendAccessibilityEventForKey(
+                    key, AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
+            return true;
+        case AccessibilityNodeInfoCompat.ACTION_CLICK:
+            sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_VIEW_CLICKED);
+            mDelegate.performClickOn(key);
+            return true;
+        case AccessibilityNodeInfoCompat.ACTION_LONG_CLICK:
+            sendAccessibilityEventForKey(key, AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
+            mDelegate.performLongClickOn(key);
+            return true;
+        default:
+            return false;
+        }
+    }
+
+    /**
+     * Sends an accessibility event for the given {@link Key}.
+     *
+     * @param key The key that's sending the event.
+     * @param eventType The type of event to send.
+     */
+    void sendAccessibilityEventForKey(final Key key, final int eventType) {
+        final AccessibilityEvent event = createAccessibilityEvent(key, eventType);
+        mAccessibilityUtils.requestSendAccessibilityEvent(event);
+    }
+
+    /**
+     * Returns the context-specific description for a {@link Key}.
+     *
+     * @param key The key to describe.
+     * @return The context-specific description of the key.
+     */
+    private String getKeyDescription(final Key key) {
+        final EditorInfo editorInfo = mKeyboard.mId.mEditorInfo;
+        final boolean shouldObscure = mAccessibilityUtils.shouldObscureInput(editorInfo);
+        final SettingsValues currentSettings = Settings.getInstance().getCurrent();
+        final String keyCodeDescription = mKeyCodeDescriptionMapper.getDescriptionForKey(
+                mKeyboardView.getContext(), mKeyboard, key, shouldObscure);
+        if (currentSettings.isWordSeparator(key.getCode())) {
+            return mAccessibilityUtils.getAutoCorrectionDescription(
+                    keyCodeDescription, shouldObscure);
+        } else {
+            return keyCodeDescription;
+        }
+    }
+
+    /**
+     * Updates the parent's on-screen location.
+     */
+    private void updateParentLocation() {
+        mKeyboardView.getLocationOnScreen(mParentLocation);
+    }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
new file mode 100644
index 0000000..b84d402
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.os.SystemClock;
+import android.util.Log;
+import android.util.SparseIntArray;
+import android.view.MotionEvent;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.MainKeyboardView;
+import com.android.inputmethod.keyboard.PointerTracker;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+/**
+ * This class represents a delegate that can be registered in {@link MainKeyboardView} to enhance
+ * accessibility support via composition rather via inheritance.
+ */
+public final class MainKeyboardAccessibilityDelegate
+        extends KeyboardAccessibilityDelegate<MainKeyboardView>
+        implements AccessibilityLongPressTimer.LongPressTimerCallback {
+    private static final String TAG = MainKeyboardAccessibilityDelegate.class.getSimpleName();
+
+    /** Map of keyboard modes to resource IDs. */
+    private static final SparseIntArray KEYBOARD_MODE_RES_IDS = new SparseIntArray();
+
+    static {
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_DATE, R.string.keyboard_mode_date);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_DATETIME, R.string.keyboard_mode_date_time);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_EMAIL, R.string.keyboard_mode_email);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_IM, R.string.keyboard_mode_im);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_NUMBER, R.string.keyboard_mode_number);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_PHONE, R.string.keyboard_mode_phone);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_TEXT, R.string.keyboard_mode_text);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_TIME, R.string.keyboard_mode_time);
+        KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_URL, R.string.keyboard_mode_url);
+    }
+
+    /** The most recently set keyboard mode. */
+    private int mLastKeyboardMode = KEYBOARD_IS_HIDDEN;
+    private static final int KEYBOARD_IS_HIDDEN = -1;
+    // The rectangle region to ignore hover events.
+    private final Rect mBoundsToIgnoreHoverEvent = new Rect();
+
+    private final AccessibilityLongPressTimer mAccessibilityLongPressTimer;
+
+    public MainKeyboardAccessibilityDelegate(final MainKeyboardView mainKeyboardView,
+            final KeyDetector keyDetector) {
+        super(mainKeyboardView, keyDetector);
+        mAccessibilityLongPressTimer = new AccessibilityLongPressTimer(
+                this /* callback */, mainKeyboardView.getContext());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setKeyboard(final Keyboard keyboard) {
+        if (keyboard == null) {
+            return;
+        }
+        final Keyboard lastKeyboard = getKeyboard();
+        super.setKeyboard(keyboard);
+        final int lastKeyboardMode = mLastKeyboardMode;
+        mLastKeyboardMode = keyboard.mId.mMode;
+
+        // Since this method is called even when accessibility is off, make sure
+        // to check the state before announcing anything.
+        if (!AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
+            return;
+        }
+        // Announce the language name only when the language is changed.
+        if (lastKeyboard == null || !keyboard.mId.mSubtype.equals(lastKeyboard.mId.mSubtype)) {
+            announceKeyboardLanguage(keyboard);
+            return;
+        }
+        // Announce the mode only when the mode is changed.
+        if (keyboard.mId.mMode != lastKeyboardMode) {
+            announceKeyboardMode(keyboard);
+            return;
+        }
+        // Announce the keyboard type only when the type is changed.
+        if (keyboard.mId.mElementId != lastKeyboard.mId.mElementId) {
+            announceKeyboardType(keyboard, lastKeyboard);
+            return;
+        }
+    }
+
+    /**
+     * Called when the keyboard is hidden and accessibility is enabled.
+     */
+    public void onHideWindow() {
+        announceKeyboardHidden();
+        mLastKeyboardMode = KEYBOARD_IS_HIDDEN;
+    }
+
+    /**
+     * Announces which language of keyboard is being displayed.
+     *
+     * @param keyboard The new keyboard.
+     */
+    private void announceKeyboardLanguage(final Keyboard keyboard) {
+        final String languageText = SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(
+                keyboard.mId.mSubtype);
+        sendWindowStateChanged(languageText);
+    }
+
+    /**
+     * Announces which type of keyboard is being displayed.
+     * If the keyboard type is unknown, no announcement is made.
+     *
+     * @param keyboard The new keyboard.
+     */
+    private void announceKeyboardMode(final Keyboard keyboard) {
+        final Context context = mKeyboardView.getContext();
+        final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(keyboard.mId.mMode);
+        if (modeTextResId == 0) {
+            return;
+        }
+        final String modeText = context.getString(modeTextResId);
+        final String text = context.getString(R.string.announce_keyboard_mode, modeText);
+        sendWindowStateChanged(text);
+    }
+
+    /**
+     * Announces which type of keyboard is being displayed.
+     *
+     * @param keyboard The new keyboard.
+     * @param lastKeyboard The last keyboard.
+     */
+    private void announceKeyboardType(final Keyboard keyboard, final Keyboard lastKeyboard) {
+        final int lastElementId = lastKeyboard.mId.mElementId;
+        final int resId;
+        switch (keyboard.mId.mElementId) {
+        case KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED:
+        case KeyboardId.ELEMENT_ALPHABET:
+            if (lastElementId == KeyboardId.ELEMENT_ALPHABET
+                    || lastElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+                // Transition between alphabet mode and automatic shifted mode should be silently
+                // ignored because it can be determined by each key's talk back announce.
+                return;
+            }
+            resId = R.string.spoken_description_mode_alpha;
+            break;
+        case KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED:
+            if (lastElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+                // Resetting automatic shifted mode by pressing the shift key causes the transition
+                // from automatic shifted to manual shifted that should be silently ignored.
+                return;
+            }
+            resId = R.string.spoken_description_shiftmode_on;
+            break;
+        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
+            if (lastElementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) {
+                // Resetting caps locked mode by pressing the shift key causes the transition
+                // from shift locked to shift lock shifted that should be silently ignored.
+                return;
+            }
+            resId = R.string.spoken_description_shiftmode_locked;
+            break;
+        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
+            resId = R.string.spoken_description_shiftmode_locked;
+            break;
+        case KeyboardId.ELEMENT_SYMBOLS:
+            resId = R.string.spoken_description_mode_symbol;
+            break;
+        case KeyboardId.ELEMENT_SYMBOLS_SHIFTED:
+            resId = R.string.spoken_description_mode_symbol_shift;
+            break;
+        case KeyboardId.ELEMENT_PHONE:
+            resId = R.string.spoken_description_mode_phone;
+            break;
+        case KeyboardId.ELEMENT_PHONE_SYMBOLS:
+            resId = R.string.spoken_description_mode_phone_shift;
+            break;
+        default:
+            return;
+        }
+        sendWindowStateChanged(resId);
+    }
+
+    /**
+     * Announces that the keyboard has been hidden.
+     */
+    private void announceKeyboardHidden() {
+        sendWindowStateChanged(R.string.announce_keyboard_hidden);
+    }
+
+    @Override
+    public void performClickOn(final Key key) {
+        final int x = key.getHitBox().centerX();
+        final int y = key.getHitBox().centerY();
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "performClickOn: key=" + key
+                    + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
+        }
+        if (mBoundsToIgnoreHoverEvent.contains(x, y)) {
+            // This hover exit event points to the key that should be ignored.
+            // Clear the ignoring region to handle further hover events.
+            mBoundsToIgnoreHoverEvent.setEmpty();
+            return;
+        }
+        super.performClickOn(key);
+    }
+
+    @Override
+    protected void onHoverEnterTo(final Key key) {
+        final int x = key.getHitBox().centerX();
+        final int y = key.getHitBox().centerY();
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverEnterTo: key=" + key
+                    + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
+        }
+        mAccessibilityLongPressTimer.cancelLongPress();
+        if (mBoundsToIgnoreHoverEvent.contains(x, y)) {
+            return;
+        }
+        // This hover enter event points to the key that isn't in the ignoring region.
+        // Further hover events should be handled.
+        mBoundsToIgnoreHoverEvent.setEmpty();
+        super.onHoverEnterTo(key);
+        if (key.isLongPressEnabled()) {
+            mAccessibilityLongPressTimer.startLongPress(key);
+        }
+    }
+
+    @Override
+    protected void onHoverExitFrom(final Key key) {
+        final int x = key.getHitBox().centerX();
+        final int y = key.getHitBox().centerY();
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverExitFrom: key=" + key
+                    + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
+        }
+        mAccessibilityLongPressTimer.cancelLongPress();
+        super.onHoverExitFrom(key);
+    }
+
+    @Override
+    public void performLongClickOn(final Key key) {
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "performLongClickOn: key=" + key);
+        }
+        final PointerTracker tracker = PointerTracker.getPointerTracker(HOVER_EVENT_POINTER_ID);
+        final long eventTime = SystemClock.uptimeMillis();
+        final int x = key.getHitBox().centerX();
+        final int y = key.getHitBox().centerY();
+        final MotionEvent downEvent = MotionEvent.obtain(
+                eventTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0 /* metaState */);
+        // Inject a fake down event to {@link PointerTracker} to handle a long press correctly.
+        tracker.processMotionEvent(downEvent, mKeyDetector);
+        // The above fake down event triggers an unnecessary long press timer that should be
+        // canceled.
+        tracker.cancelLongPressTimer();
+        downEvent.recycle();
+        // Invoke {@link MainKeyboardView#onLongPress(PointerTracker)} as if a long press timeout
+        // has passed.
+        mKeyboardView.onLongPress(tracker);
+        // If {@link Key#hasNoPanelAutoMoreKeys()} is true (such as "0 +" key on the phone layout)
+        // or a key invokes IME switcher dialog, we should just ignore the next
+        // {@link #onRegisterHoverKey(Key,MotionEvent)}. It can be determined by whether
+        // {@link PointerTracker} is in operation or not.
+        if (tracker.isInOperation()) {
+            // This long press shows a more keys keyboard and further hover events should be
+            // handled.
+            mBoundsToIgnoreHoverEvent.setEmpty();
+            return;
+        }
+        // This long press has handled at {@link MainKeyboardView#onLongPress(PointerTracker)}.
+        // We should ignore further hover events on this key.
+        mBoundsToIgnoreHoverEvent.set(key.getHitBox());
+        if (key.hasNoPanelAutoMoreKey()) {
+            // This long press has registered a code point without showing a more keys keyboard.
+            // We should talk back the code point if possible.
+            final int codePointOfNoPanelAutoMoreKey = key.getMoreKeys()[0].mCode;
+            final String text = KeyCodeDescriptionMapper.getInstance().getDescriptionForCodePoint(
+                    mKeyboardView.getContext(), codePointOfNoPanelAutoMoreKey);
+            if (text != null) {
+                sendWindowStateChanged(text);
+            }
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java
new file mode 100644
index 0000000..4022da3
--- /dev/null
+++ b/java/src/com/android/inputmethod/accessibility/MoreKeysKeyboardAccessibilityDelegate.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.accessibility;
+
+import android.graphics.Rect;
+import android.util.Log;
+import android.view.MotionEvent;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.MoreKeysKeyboardView;
+import com.android.inputmethod.keyboard.PointerTracker;
+
+/**
+ * This class represents a delegate that can be registered in {@link MoreKeysKeyboardView} to
+ * enhance accessibility support via composition rather via inheritance.
+ */
+public class MoreKeysKeyboardAccessibilityDelegate
+        extends KeyboardAccessibilityDelegate<MoreKeysKeyboardView> {
+    private static final String TAG = MoreKeysKeyboardAccessibilityDelegate.class.getSimpleName();
+
+    private final Rect mMoreKeysKeyboardValidBounds = new Rect();
+    private static final int CLOSING_INSET_IN_PIXEL = 1;
+    private int mOpenAnnounceResId;
+    private int mCloseAnnounceResId;
+
+    public MoreKeysKeyboardAccessibilityDelegate(final MoreKeysKeyboardView moreKeysKeyboardView,
+            final KeyDetector keyDetector) {
+        super(moreKeysKeyboardView, keyDetector);
+    }
+
+    public void setOpenAnnounce(final int resId) {
+        mOpenAnnounceResId = resId;
+    }
+
+    public void setCloseAnnounce(final int resId) {
+        mCloseAnnounceResId = resId;
+    }
+
+    public void onShowMoreKeysKeyboard() {
+        sendWindowStateChanged(mOpenAnnounceResId);
+    }
+
+    public void onDismissMoreKeysKeyboard() {
+        sendWindowStateChanged(mCloseAnnounceResId);
+    }
+
+    @Override
+    protected void onHoverEnter(final MotionEvent event) {
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverEnter: key=" + getHoverKeyOf(event));
+        }
+        super.onHoverEnter(event);
+        final int actionIndex = event.getActionIndex();
+        final int x = (int)event.getX(actionIndex);
+        final int y = (int)event.getY(actionIndex);
+        final int pointerId = event.getPointerId(actionIndex);
+        final long eventTime = event.getEventTime();
+        mKeyboardView.onDownEvent(x, y, pointerId, eventTime);
+    }
+
+    @Override
+    protected void onHoverMove(final MotionEvent event) {
+        super.onHoverMove(event);
+        final int actionIndex = event.getActionIndex();
+        final int x = (int)event.getX(actionIndex);
+        final int y = (int)event.getY(actionIndex);
+        final int pointerId = event.getPointerId(actionIndex);
+        final long eventTime = event.getEventTime();
+        mKeyboardView.onMoveEvent(x, y, pointerId, eventTime);
+    }
+
+    @Override
+    protected void onHoverExit(final MotionEvent event) {
+        final Key lastKey = getLastHoverKey();
+        if (DEBUG_HOVER) {
+            Log.d(TAG, "onHoverExit: key=" + getHoverKeyOf(event) + " last=" + lastKey);
+        }
+        if (lastKey != null) {
+            super.onHoverExitFrom(lastKey);
+        }
+        setLastHoverKey(null);
+        final int actionIndex = event.getActionIndex();
+        final int x = (int)event.getX(actionIndex);
+        final int y = (int)event.getY(actionIndex);
+        final int pointerId = event.getPointerId(actionIndex);
+        final long eventTime = event.getEventTime();
+        // A hover exit event at one pixel width or height area on the edges of more keys keyboard
+        // are treated as closing.
+        mMoreKeysKeyboardValidBounds.set(0, 0, mKeyboardView.getWidth(), mKeyboardView.getHeight());
+        mMoreKeysKeyboardValidBounds.inset(CLOSING_INSET_IN_PIXEL, CLOSING_INSET_IN_PIXEL);
+        if (mMoreKeysKeyboardValidBounds.contains(x, y)) {
+            // Invoke {@link MoreKeysKeyboardView#onUpEvent(int,int,int,long)} as if this hover
+            // exit event selects a key.
+            mKeyboardView.onUpEvent(x, y, pointerId, eventTime);
+            // TODO: Should fix this reference. This is a hack to clear the state of
+            // {@link PointerTracker}.
+            PointerTracker.dismissAllMoreKeysPanels();
+            return;
+        }
+        // Close the more keys keyboard.
+        // TODO: Should fix this reference. This is a hack to clear the state of
+        // {@link PointerTracker}.
+        PointerTracker.dismissAllMoreKeysPanels();
+    }
+}
diff --git a/java/src/com/android/inputmethod/compat/AppWorkaroundsUtils.java b/java/src/com/android/inputmethod/compat/AppWorkaroundsUtils.java
index 7e9e2e3..6e43cc9 100644
--- a/java/src/com/android/inputmethod/compat/AppWorkaroundsUtils.java
+++ b/java/src/com/android/inputmethod/compat/AppWorkaroundsUtils.java
@@ -23,10 +23,10 @@
  * A class to encapsulate work-arounds specific to particular apps.
  */
 public class AppWorkaroundsUtils {
-    private PackageInfo mPackageInfo; // May be null
-    private boolean mIsBrokenByRecorrection = false;
+    private final PackageInfo mPackageInfo; // May be null
+    private final boolean mIsBrokenByRecorrection;
 
-    public void setPackageInfo(final PackageInfo packageInfo) {
+    public AppWorkaroundsUtils(final PackageInfo packageInfo) {
         mPackageInfo = packageInfo;
         mIsBrokenByRecorrection = AppWorkaroundsHelper.evaluateIsBrokenByRecorrection(
                 packageInfo);
diff --git a/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
new file mode 100644
index 0000000..be7bf40
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/InputConnectionCompatUtils.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.util.Log;
+import android.view.inputmethod.InputConnection;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+public final class InputConnectionCompatUtils {
+    private static final String TAG = InputConnectionCompatUtils.class.getSimpleName();
+
+    // Note that CursorAnchorInfoRequest is supposed to be available in API level 21 and later.
+    private static Class<?> getCursorAnchorInfoRequestClass() {
+        try {
+            return Class.forName("android.view.inputmethod.CursorAnchorInfoRequest");
+        } catch (ClassNotFoundException e) {
+            return null;
+        }
+    }
+
+    private static final Class<?> TYPE_CursorAnchorInfoRequest;
+    private static final Constructor<?> CONSTRUCTOR_CursorAnchorInfoRequest;
+    private static final Method METHOD_requestCursorAnchorInfo;
+    static {
+        TYPE_CursorAnchorInfoRequest = getCursorAnchorInfoRequestClass();
+        CONSTRUCTOR_CursorAnchorInfoRequest = CompatUtils.getConstructor(
+                TYPE_CursorAnchorInfoRequest, int.class, int.class);
+        METHOD_requestCursorAnchorInfo = CompatUtils.getMethod(InputConnection.class,
+                "requestCursorAnchorInfo", TYPE_CursorAnchorInfoRequest);
+    }
+
+    public static boolean isRequestCursorAnchorInfoAvailable() {
+        return METHOD_requestCursorAnchorInfo != null &&
+                CONSTRUCTOR_CursorAnchorInfoRequest != null;
+    }
+
+    /**
+     * Local copies of some constants in CursorAnchorInfoRequest until the SDK becomes publicly
+     * available.
+     */
+    private final static int RESULT_NOT_HANDLED = 0;
+    private final static int RESULT_SCHEDULED = 1;
+    private final static int TYPE_CURSOR_ANCHOR_INFO = 1;
+    private final static int FLAG_CURSOR_ANCHOR_INFO_MONITOR = 1;
+    private final static int FLAG_CURSOR_ANCHOR_INFO_IMMEDIATE = 2;
+    private final static int TYPE_CURSOR_RECT = 2;
+    private final static int FLAG_CURSOR_RECT_MONITOR = 1;
+    private final static int FLAG_CURSOR_RECT_IN_SCREEN_COORDINATES = 2;
+    private final static int FLAG_CURSOR_RECT_WITH_VIEW_MATRIX = 4;
+
+    private static int requestCursorAnchorInfoImpl(final InputConnection inputConnection,
+            final int type, final int flags) {
+        if (!isRequestCursorAnchorInfoAvailable()) {
+             return RESULT_NOT_HANDLED;
+        }
+        final Object requestObject = CompatUtils.newInstance(
+                CONSTRUCTOR_CursorAnchorInfoRequest, type, flags);
+        if (requestObject == null) {
+            return RESULT_NOT_HANDLED;
+        }
+        return (Integer) CompatUtils.invoke(inputConnection,
+                RESULT_NOT_HANDLED /* defaultValue */,
+                METHOD_requestCursorAnchorInfo, requestObject);
+    }
+
+    /**
+     * Requests the editor to call back {@link InputMethodManager#updateCursorAnchorInfo}.
+     * @param inputConnection the input connection to which the request is to be sent.
+     * @param enableMonitor {@code true} to request the editor to call back the method whenever the
+     * cursor/anchor position is changed.
+     * @param requestImmediateCallback {@code true} to request the editor to call back the method
+     * as soon as possible to notify the current cursor/anchor position to the input method.
+     * @return {@code false} if the request is not handled. Otherwise returns {@code true}.
+     */
+    public static boolean requestCursorAnchorInfo(final InputConnection inputConnection,
+            final boolean enableMonitor, final boolean requestImmediateCallback) {
+        final int requestFlags = (enableMonitor ? FLAG_CURSOR_ANCHOR_INFO_MONITOR : 0)
+                | (requestImmediateCallback ? FLAG_CURSOR_ANCHOR_INFO_IMMEDIATE : 0);
+        final int requestResult = requestCursorAnchorInfoImpl(inputConnection,
+                TYPE_CURSOR_ANCHOR_INFO, requestFlags);
+        switch (requestResult) {
+            case RESULT_NOT_HANDLED:
+                return false;
+            case RESULT_SCHEDULED:
+                return true;
+            default:
+                Log.w(TAG, "requestCursorAnchorInfo returned unknown result=" + requestResult
+                        + " for type=TYPE_CURSOR_ANCHOR_INFO flags=" + requestFlags);
+                return true;
+        }
+    }
+
+    /**
+     * Requests the editor to call back {@link InputMethodManager#updateCursor}.
+     * @param inputConnection the input connection to which the request is to be sent.
+     * @param enableMonitor {@code true} to request the editor to call back the method whenever the
+     * cursor position is changed.
+     * @return {@code false} if the request is not handled. Otherwise returns {@code true}.
+     */
+    public static boolean requestCursorRect(final InputConnection inputConnection,
+            final boolean enableMonitor) {
+        final int requestFlags = enableMonitor ?
+                FLAG_CURSOR_RECT_MONITOR | FLAG_CURSOR_RECT_IN_SCREEN_COORDINATES |
+                FLAG_CURSOR_RECT_WITH_VIEW_MATRIX : 0;
+        final int requestResult = requestCursorAnchorInfoImpl(inputConnection, TYPE_CURSOR_RECT,
+                requestFlags);
+        switch (requestResult) {
+            case RESULT_NOT_HANDLED:
+                return false;
+            case RESULT_SCHEDULED:
+                return true;
+            default:
+                Log.w(TAG, "requestCursorAnchorInfo returned unknown result=" + requestResult
+                        + " for type=TYPE_CURSOR_RECT flags=" + requestFlags);
+                return true;
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java b/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java
index a80c3fe..18b3a60 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodManagerCompatWrapper.java
@@ -28,6 +28,12 @@
     private static final Method METHOD_switchToNextInputMethod = CompatUtils.getMethod(
             InputMethodManager.class, "switchToNextInputMethod", IBinder.class, Boolean.TYPE);
 
+    // Note that InputMethodManager.shouldOfferSwitchingToNextInputMethod() has been introduced
+    // in API level 19 (Build.VERSION_CODES.KITKAT).
+    private static final Method METHOD_shouldOfferSwitchingToNextInputMethod =
+            CompatUtils.getMethod(InputMethodManager.class,
+                    "shouldOfferSwitchingToNextInputMethod", IBinder.class);
+
     public final InputMethodManager mImm;
 
     public InputMethodManagerCompatWrapper(final Context context) {
@@ -38,4 +44,9 @@
         return (Boolean)CompatUtils.invoke(mImm, false /* defaultValue */,
                 METHOD_switchToNextInputMethod, token, onlyCurrentIme);
     }
+
+    public boolean shouldOfferSwitchingToNextInputMethod(final IBinder token) {
+        return (Boolean)CompatUtils.invoke(mImm, false /* defaultValue */,
+                METHOD_shouldOfferSwitchingToNextInputMethod, token);
+    }
 }
diff --git a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
index 14ee654..48047dd 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodServiceCompatUtils.java
@@ -21,7 +21,7 @@
 import java.lang.reflect.Method;
 
 public final class InputMethodServiceCompatUtils {
-    // Note that InputMethodService.enableHardwareAcceleration() has been introduced
+    // Note that {@link InputMethodService#enableHardwareAcceleration} has been introduced
     // in API level 17 (Build.VERSION_CODES.JELLY_BEAN_MR1).
     private static final Method METHOD_enableHardwareAcceleration =
             CompatUtils.getMethod(InputMethodService.class, "enableHardwareAcceleration");
diff --git a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java
index b119d6c..ee9125a 100644
--- a/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatUtils.java
@@ -19,7 +19,11 @@
 import android.os.Build;
 import android.view.inputmethod.InputMethodSubtype;
 
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Constants;
+
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
 
 public final class InputMethodSubtypeCompatUtils {
     private static final String TAG = InputMethodSubtypeCompatUtils.class.getSimpleName();
@@ -37,6 +41,12 @@
             }
         }
     }
+
+    // Note that {@link InputMethodSubtype#isAsciiCapable()} has been introduced in API level 19
+    // (Build.VERSION_CODE.KITKAT).
+    private static final Method METHOD_isAsciiCapable = CompatUtils.getMethod(
+            InputMethodSubtype.class, "isAsciiCapable");
+
     private InputMethodSubtypeCompatUtils() {
         // This utility class is not publicly instantiable.
     }
@@ -53,4 +63,14 @@
                 nameId, iconId, locale, mode, extraValue, isAuxiliary,
                 overridesImplicitlyEnabledSubtype, id);
     }
+
+    public static boolean isAsciiCapable(final InputMethodSubtype subtype) {
+        return isAsciiCapableWithAPI(subtype)
+                || subtype.containsExtraValueKey(Constants.Subtype.ExtraValue.ASCII_CAPABLE);
+    }
+
+    @UsedForTesting
+    public static boolean isAsciiCapableWithAPI(final InputMethodSubtype subtype) {
+        return (Boolean)CompatUtils.invoke(subtype, false, METHOD_isAsciiCapable);
+    }
 }
diff --git a/java/src/com/android/inputmethod/compat/LocaleSpanCompatUtils.java b/java/src/com/android/inputmethod/compat/LocaleSpanCompatUtils.java
new file mode 100644
index 0000000..f411f18
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/LocaleSpanCompatUtils.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.text.Spannable;
+import android.text.style.LocaleSpan;
+import android.util.Log;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Locale;
+
+@UsedForTesting
+public final class LocaleSpanCompatUtils {
+    private static final String TAG = LocaleSpanCompatUtils.class.getSimpleName();
+
+    // Note that LocaleSpan(Locale locale) has been introduced in API level 17
+    // (Build.VERSION_CODE.JELLY_BEAN_MR1).
+    private static Class<?> getLocaleSpanClass() {
+        try {
+            return Class.forName("android.text.style.LocaleSpan");
+        } catch (ClassNotFoundException e) {
+            return null;
+        }
+    }
+    private static final Class<?> LOCALE_SPAN_TYPE;
+    private static final Constructor<?> LOCALE_SPAN_CONSTRUCTOR;
+    private static final Method LOCALE_SPAN_GET_LOCALE;
+    static {
+        LOCALE_SPAN_TYPE = getLocaleSpanClass();
+        LOCALE_SPAN_CONSTRUCTOR = CompatUtils.getConstructor(LOCALE_SPAN_TYPE, Locale.class);
+        LOCALE_SPAN_GET_LOCALE = CompatUtils.getMethod(LOCALE_SPAN_TYPE, "getLocale");
+    }
+
+    @UsedForTesting
+    public static boolean isLocaleSpanAvailable() {
+        return (LOCALE_SPAN_CONSTRUCTOR != null && LOCALE_SPAN_GET_LOCALE != null);
+    }
+
+    @UsedForTesting
+    public static Object newLocaleSpan(final Locale locale) {
+        return CompatUtils.newInstance(LOCALE_SPAN_CONSTRUCTOR, locale);
+    }
+
+    @UsedForTesting
+    public static Locale getLocaleFromLocaleSpan(final Object localeSpan) {
+        return (Locale) CompatUtils.invoke(localeSpan, null, LOCALE_SPAN_GET_LOCALE);
+    }
+
+    /**
+     * Ensures that the specified range is covered with only one {@link LocaleSpan} with the given
+     * locale. If the region is already covered by one or more {@link LocaleSpan}, their ranges are
+     * updated so that each character has only one locale.
+     * @param spannable the spannable object to be updated.
+     * @param start the start index from which {@link LocaleSpan} is attached (inclusive).
+     * @param end the end index to which {@link LocaleSpan} is attached (exclusive).
+     * @param locale the locale to be attached to the specified range.
+     */
+    @UsedForTesting
+    public static void updateLocaleSpan(final Spannable spannable, final int start,
+            final int end, final Locale locale) {
+        if (end < start) {
+            Log.e(TAG, "Invalid range: start=" + start + " end=" + end);
+            return;
+        }
+        if (!isLocaleSpanAvailable()) {
+            return;
+        }
+        // A brief summary of our strategy;
+        //   1. Enumerate all LocaleSpans between [start - 1, end + 1].
+        //   2. For each LocaleSpan S:
+        //      - Update the range of S so as not to cover [start, end] if S doesn't have the
+        //        expected locale.
+        //      - Mark S as "to be merged" if S has the expected locale.
+        //   3. Merge all the LocaleSpans that are marked as "to be merged" into one LocaleSpan.
+        //      If no appropriate span is found, create a new one with newLocaleSpan method.
+        final int searchStart = Math.max(start - 1, 0);
+        final int searchEnd = Math.min(end + 1, spannable.length());
+        // LocaleSpans found in the target range. See the step 1 in the above comment.
+        final Object[] existingLocaleSpans = spannable.getSpans(searchStart, searchEnd,
+                LOCALE_SPAN_TYPE);
+        // LocaleSpans that are marked as "to be merged". See the step 2 in the above comment.
+        final ArrayList<Object> existingLocaleSpansToBeMerged = new ArrayList<>();
+        boolean isStartExclusive = true;
+        boolean isEndExclusive = true;
+        int newStart = start;
+        int newEnd = end;
+        for (final Object existingLocaleSpan : existingLocaleSpans) {
+            final Locale attachedLocale = getLocaleFromLocaleSpan(existingLocaleSpan);
+            if (!locale.equals(attachedLocale)) {
+                // This LocaleSpan does not have the expected locale. Update its range if it has
+                // an intersection with the range [start, end] (the first case of the step 2 in the
+                // above comment).
+                removeLocaleSpanFromRange(existingLocaleSpan, spannable, start, end);
+                continue;
+            }
+            final int spanStart = spannable.getSpanStart(existingLocaleSpan);
+            final int spanEnd = spannable.getSpanEnd(existingLocaleSpan);
+            if (spanEnd < spanStart) {
+                Log.e(TAG, "Invalid span: spanStart=" + spanStart + " spanEnd=" + spanEnd);
+                continue;
+            }
+            if (spanEnd < start || end < spanStart) {
+                // No intersection found.
+                continue;
+            }
+
+            // Here existingLocaleSpan has the expected locale and an intersection with the
+            // range [start, end] (the second case of the the step 2 in the above comment).
+            final int spanFlag = spannable.getSpanFlags(existingLocaleSpan);
+            if (spanStart < newStart) {
+                newStart = spanStart;
+                isStartExclusive = ((spanFlag & Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) ==
+                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            }
+            if (newEnd < spanEnd) {
+                newEnd = spanEnd;
+                isEndExclusive = ((spanFlag & Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) ==
+                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            }
+            existingLocaleSpansToBeMerged.add(existingLocaleSpan);
+        }
+
+        int originalLocaleSpanFlag = 0;
+        Object localeSpan = null;
+        if (existingLocaleSpansToBeMerged.isEmpty()) {
+            // If there is no LocaleSpan that is marked as to be merged, create a new one.
+            localeSpan = newLocaleSpan(locale);
+        } else {
+            // Reuse the first LocaleSpan to avoid unnecessary object instantiation.
+            localeSpan = existingLocaleSpansToBeMerged.get(0);
+            originalLocaleSpanFlag = spannable.getSpanFlags(localeSpan);
+            // No need to keep other instances.
+            for (int i = 1; i < existingLocaleSpansToBeMerged.size(); ++i) {
+                spannable.removeSpan(existingLocaleSpansToBeMerged.get(i));
+            }
+        }
+        final int localeSpanFlag = getSpanFlag(originalLocaleSpanFlag, isStartExclusive,
+                isEndExclusive);
+        spannable.setSpan(localeSpan, newStart, newEnd, localeSpanFlag);
+    }
+
+    private static void removeLocaleSpanFromRange(final Object localeSpan,
+            final Spannable spannable, final int removeStart, final int removeEnd) {
+        if (!isLocaleSpanAvailable()) {
+            return;
+        }
+        final int spanStart = spannable.getSpanStart(localeSpan);
+        final int spanEnd = spannable.getSpanEnd(localeSpan);
+        if (spanStart > spanEnd) {
+            Log.e(TAG, "Invalid span: spanStart=" + spanStart + " spanEnd=" + spanEnd);
+            return;
+        }
+        if (spanEnd < removeStart) {
+            // spanStart < spanEnd < removeStart < removeEnd
+            return;
+        }
+        if (removeEnd < spanStart) {
+            // spanStart < removeEnd < spanStart < spanEnd
+            return;
+        }
+        final int spanFlags = spannable.getSpanFlags(localeSpan);
+        if (spanStart < removeStart) {
+            if (removeEnd < spanEnd) {
+                // spanStart < removeStart < removeEnd < spanEnd
+                final Locale locale = getLocaleFromLocaleSpan(localeSpan);
+                spannable.setSpan(localeSpan, spanStart, removeStart, spanFlags);
+                final Object attionalLocaleSpan = newLocaleSpan(locale);
+                spannable.setSpan(attionalLocaleSpan, removeEnd, spanEnd, spanFlags);
+                return;
+            }
+            // spanStart < removeStart < spanEnd <= removeEnd
+            spannable.setSpan(localeSpan, spanStart, removeStart, spanFlags);
+            return;
+        }
+        if (removeEnd < spanEnd) {
+            // removeStart <= spanStart < removeEnd < spanEnd
+            spannable.setSpan(localeSpan, removeEnd, spanEnd, spanFlags);
+            return;
+        }
+        // removeStart <= spanStart < spanEnd < removeEnd
+        spannable.removeSpan(localeSpan);
+    }
+
+    private static int getSpanFlag(final int originalFlag,
+            final boolean isStartExclusive, final boolean isEndExclusive) {
+        return (originalFlag & ~Spannable.SPAN_POINT_MARK_MASK) |
+                getSpanPointMarkFlag(isStartExclusive, isEndExclusive);
+    }
+
+    private static int getSpanPointMarkFlag(final boolean isStartExclusive,
+            final boolean isEndExclusive) {
+        if (isStartExclusive) {
+            if (isEndExclusive) {
+                return Spannable.SPAN_EXCLUSIVE_EXCLUSIVE;
+            } else {
+                return Spannable.SPAN_EXCLUSIVE_INCLUSIVE;
+            }
+        } else {
+            if (isEndExclusive) {
+                return Spannable.SPAN_INCLUSIVE_EXCLUSIVE;
+            } else {
+                return Spannable.SPAN_INCLUSIVE_INCLUSIVE;
+            }
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/compat/LooperCompatUtils.java b/java/src/com/android/inputmethod/compat/LooperCompatUtils.java
new file mode 100644
index 0000000..d647dbb
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/LooperCompatUtils.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.os.Looper;
+
+import java.lang.reflect.Method;
+
+/**
+ * Helper to call Looper#quitSafely, which was introduced in API
+ * level 18 (Build.VERSION_CODES.JELLY_BEAN_MR2).
+ *
+ * In unit tests, we create lots of instances of LatinIME, which means we need to clean up
+ * some Loopers lest we leak file descriptors. In normal use on a device though, this is never
+ * necessary (although it does not hurt).
+ */
+public final class LooperCompatUtils {
+    private static final Method METHOD_quitSafely = CompatUtils.getMethod(
+            Looper.class, "quitSafely");
+
+    public static void quitSafely(final Looper looper) {
+        if (null != METHOD_quitSafely) {
+            CompatUtils.invoke(looper, null /* default return value */, METHOD_quitSafely);
+        } else {
+            looper.quit();
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
index 55282c5..4c76635 100644
--- a/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
+++ b/java/src/com/android/inputmethod/compat/SuggestionSpanUtils.java
@@ -23,10 +23,10 @@
 import android.text.TextUtils;
 import android.text.style.SuggestionSpan;
 
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.define.DebugFlags;
 import com.android.inputmethod.latin.SuggestionSpanPickedNotificationReceiver;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.lang.reflect.Field;
 import java.util.ArrayList;
@@ -40,7 +40,7 @@
             null /* receiver */, null /* defaultValue */, FIELD_FLAG_AUTO_CORRECTION);
 
     static {
-        if (LatinImeLogger.sDBG) {
+        if (DebugFlags.DEBUG_ENABLED) {
             if (OBJ_FLAG_AUTO_CORRECTION == null) {
                 throw new RuntimeException("Field is accidentially null.");
             }
@@ -66,30 +66,30 @@
     }
 
     public static CharSequence getTextWithSuggestionSpan(final Context context,
-            final String pickedWord, final SuggestedWords suggestedWords,
-            final boolean dictionaryAvailable) {
-        if (!dictionaryAvailable || TextUtils.isEmpty(pickedWord) || suggestedWords.isEmpty()
-                || suggestedWords.mIsPrediction || suggestedWords.mIsPunctuationSuggestions) {
+            final String pickedWord, final SuggestedWords suggestedWords) {
+        if (TextUtils.isEmpty(pickedWord) || suggestedWords.isEmpty()
+                || suggestedWords.mIsPrediction || suggestedWords.isPunctuationSuggestions()) {
             return pickedWord;
         }
 
-        final Spannable spannable = new SpannableString(pickedWord);
-        final ArrayList<String> suggestionsList = CollectionUtils.newArrayList();
+        final ArrayList<String> suggestionsList = new ArrayList<>();
         for (int i = 0; i < suggestedWords.size(); ++i) {
             if (suggestionsList.size() >= SuggestionSpan.SUGGESTIONS_MAX_SIZE) {
                 break;
             }
+            final SuggestedWordInfo info = suggestedWords.getInfo(i);
+            if (info.isKindOf(SuggestedWordInfo.KIND_PREDICTION)) {
+                continue;
+            }
             final String word = suggestedWords.getWord(i);
             if (!TextUtils.equals(pickedWord, word)) {
                 suggestionsList.add(word.toString());
             }
         }
-
-        // TODO: We should avoid adding suggestion span candidates that came from the bigram
-        // prediction.
         final SuggestionSpan suggestionSpan = new SuggestionSpan(context, null /* locale */,
                 suggestionsList.toArray(new String[suggestionsList.size()]), 0 /* flags */,
                 SuggestionSpanPickedNotificationReceiver.class);
+        final Spannable spannable = new SpannableString(pickedWord);
         spannable.setSpan(suggestionSpan, 0, pickedWord.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         return spannable;
     }
diff --git a/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java b/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java
new file mode 100644
index 0000000..09f39a7
--- /dev/null
+++ b/java/src/com/android/inputmethod/compat/TextInfoCompatUtils.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.view.textservice.TextInfo;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+@UsedForTesting
+public final class TextInfoCompatUtils {
+    // Note that TextInfo.getCharSequence() is supposed to be available in API level 21 and later.
+    private static final Method TEXT_INFO_GET_CHAR_SEQUENCE =
+            CompatUtils.getMethod(TextInfo.class, "getCharSequence");
+    private static final Constructor<?> TEXT_INFO_CONSTRUCTOR_FOR_CHAR_SEQUENCE =
+            CompatUtils.getConstructor(TextInfo.class, CharSequence.class, int.class, int.class,
+                    int.class, int.class);
+
+    @UsedForTesting
+    public static boolean isCharSequenceSupported() {
+        return TEXT_INFO_GET_CHAR_SEQUENCE != null &&
+                TEXT_INFO_CONSTRUCTOR_FOR_CHAR_SEQUENCE != null;
+    }
+
+    @UsedForTesting
+    public static TextInfo newInstance(CharSequence charSequence, int start, int end, int cookie,
+            int sequenceNumber) {
+        if (TEXT_INFO_CONSTRUCTOR_FOR_CHAR_SEQUENCE != null) {
+            return (TextInfo) CompatUtils.newInstance(TEXT_INFO_CONSTRUCTOR_FOR_CHAR_SEQUENCE,
+                    charSequence, start, end, cookie, sequenceNumber);
+        }
+        return new TextInfo(charSequence.subSequence(start, end).toString(), cookie,
+                sequenceNumber);
+    }
+
+    /**
+     * Returns the result of {@link TextInfo#getCharSequence()} when available. Otherwise returns
+     * the result of {@link TextInfo#getText()} as fall back.
+     * @param textInfo the instance for which {@link TextInfo#getCharSequence()} or
+     * {@link TextInfo#getText()} is called.
+     * @return the result of {@link TextInfo#getCharSequence()} when available. Otherwise returns
+     * the result of {@link TextInfo#getText()} as fall back. If {@code textInfo} is {@code null},
+     * returns {@code null}.
+     */
+    @UsedForTesting
+    public static CharSequence getCharSequenceOrString(final TextInfo textInfo) {
+        final CharSequence defaultValue = (textInfo == null ? null : textInfo.getText());
+        return (CharSequence) CompatUtils.invoke(textInfo, defaultValue,
+                TEXT_INFO_GET_CHAR_SEQUENCE);
+    }
+}
diff --git a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
index a0d7641..6e32e74 100644
--- a/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/UserDictionaryCompatUtils.java
@@ -29,8 +29,8 @@
             Context.class, String.class, Integer.TYPE, String.class, Locale.class);
 
     @SuppressWarnings("deprecation")
-    public static void addWord(final Context context, final String word, final int freq,
-            final String shortcut, final Locale locale) {
+    public static void addWord(final Context context, final String word,
+            final int freq, final String shortcut, final Locale locale) {
         if (hasNewerAddWord()) {
             CompatUtils.invoke(Words.class, null, METHOD_addWord, context, word, freq, shortcut,
                     locale);
diff --git a/java/src/com/android/inputmethod/compat/ViewCompatUtils.java b/java/src/com/android/inputmethod/compat/ViewCompatUtils.java
index a8fab88..767cc42 100644
--- a/java/src/com/android/inputmethod/compat/ViewCompatUtils.java
+++ b/java/src/com/android/inputmethod/compat/ViewCompatUtils.java
@@ -20,24 +20,17 @@
 
 import java.lang.reflect.Method;
 
+// TODO: Use {@link android.support.v4.view.ViewCompat} instead of this utility class.
+// Currently {@link #getPaddingEnd(View)} and {@link #setPaddingRelative(View,int,int,int,int)}
+// are missing from android-support-v4 static library in KitKat SDK.
 public final class ViewCompatUtils {
-    // Note that View.LAYOUT_DIRECTION_LTR and View.LAYOUT_DIRECTION_RTL have been introduced in
-    // API level 17 (Build.VERSION_CODE.JELLY_BEAN_MR1).
-    public static final int LAYOUT_DIRECTION_LTR = (Integer)CompatUtils.getFieldValue(null, 0x0,
-            CompatUtils.getField(View.class, "LAYOUT_DIRECTION_LTR"));
-    public static final int LAYOUT_DIRECTION_RTL = (Integer)CompatUtils.getFieldValue(null, 0x1,
-            CompatUtils.getField(View.class, "LAYOUT_DIRECTION_RTL"));
-
-    // Note that View.getPaddingEnd(), View.setPaddingRelative(int,int,int,int), and
-    // View.getLayoutDirection() have been introduced in API level 17
-    // (Build.VERSION_CODE.JELLY_BEAN_MR1).
+    // Note that View.getPaddingEnd(), View.setPaddingRelative(int,int,int,int) have been
+    // introduced in API level 17 (Build.VERSION_CODE.JELLY_BEAN_MR1).
     private static final Method METHOD_getPaddingEnd = CompatUtils.getMethod(
             View.class, "getPaddingEnd");
     private static final Method METHOD_setPaddingRelative = CompatUtils.getMethod(
             View.class, "setPaddingRelative",
             Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE);
-    private static final Method METHOD_getLayoutDirection = CompatUtils.getMethod(
-            View.class, "getLayoutDirection");
 
     private ViewCompatUtils() {
         // This utility class is not publicly instantiable.
@@ -58,11 +51,4 @@
         }
         CompatUtils.invoke(view, null, METHOD_setPaddingRelative, start, top, end, bottom);
     }
-
-    public static int getLayoutDirection(final View view) {
-        if (METHOD_getLayoutDirection == null) {
-            return LAYOUT_DIRECTION_LTR;
-        }
-        return (Integer)CompatUtils.invoke(view, 0, METHOD_getLayoutDirection);
-    }
 }
diff --git a/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java b/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java
index d5e638e..3d294ac 100644
--- a/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java
+++ b/java/src/com/android/inputmethod/dictionarypack/ActionBatch.java
@@ -16,7 +16,6 @@
 
 package com.android.inputmethod.dictionarypack;
 
-import android.app.DownloadManager;
 import android.app.DownloadManager.Request;
 import android.content.ContentValues;
 import android.content.Context;
@@ -117,16 +116,11 @@
             final ContentValues values = MetadataDbHelper.getContentValuesByWordListId(db,
                     mWordList.mId, mWordList.mVersion);
             final int status = values.getAsInteger(MetadataDbHelper.STATUS_COLUMN);
-            final DownloadManager manager =
-                    (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
+            final DownloadManagerWrapper manager = new DownloadManagerWrapper(context);
             if (MetadataDbHelper.STATUS_DOWNLOADING == status) {
                 // The word list is still downloading. Cancel the download and revert the
                 // word list status to "available".
-                if (null != manager) {
-                    // DownloadManager is disabled (or not installed?). We can't cancel - there
-                    // is nothing we can do. We still need to mark the entry as available.
-                    manager.remove(values.getAsLong(MetadataDbHelper.PENDINGID_COLUMN));
-                }
+                 manager.remove(values.getAsLong(MetadataDbHelper.PENDINGID_COLUMN));
                 MetadataDbHelper.markEntryAsAvailable(db, mWordList.mId, mWordList.mVersion);
             } else if (MetadataDbHelper.STATUS_AVAILABLE != status) {
                 // Should never happen
@@ -136,9 +130,6 @@
             // Download it.
             DebugLogUtils.l("Upgrade word list, downloading", mWordList.mRemoteFilename);
 
-            // TODO: if DownloadManager is disabled or not installed, download by ourselves
-            if (null == manager) return;
-
             // This is an upgraded word list: we should download it.
             // Adding a disambiguator to circumvent a bug in older versions of DownloadManager.
             // DownloadManager also stupidly cuts the extension to replace with its own that it
@@ -293,13 +284,8 @@
                 }
                 // The word list is still downloading. Cancel the download and revert the
                 // word list status to "available".
-                final DownloadManager manager =
-                        (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
-                if (null != manager) {
-                    // If we can't cancel the download because DownloadManager is not available,
-                    // we still need to mark the entry as available.
-                    manager.remove(values.getAsLong(MetadataDbHelper.PENDINGID_COLUMN));
-                }
+                final DownloadManagerWrapper manager = new DownloadManagerWrapper(context);
+                manager.remove(values.getAsLong(MetadataDbHelper.PENDINGID_COLUMN));
                 MetadataDbHelper.markEntryAsAvailable(db, mWordList.mId, mWordList.mVersion);
             }
         }
@@ -338,8 +324,9 @@
                     MetadataDbHelper.TYPE_BULK, MetadataDbHelper.STATUS_AVAILABLE,
                     mWordList.mId, mWordList.mLocale, mWordList.mDescription,
                     null == mWordList.mLocalFilename ? "" : mWordList.mLocalFilename,
-                    mWordList.mRemoteFilename, mWordList.mLastUpdate, mWordList.mChecksum,
-                    mWordList.mFileSize, mWordList.mVersion, mWordList.mFormatVersion);
+                    mWordList.mRemoteFilename, mWordList.mLastUpdate, mWordList.mRawChecksum,
+                    mWordList.mChecksum, mWordList.mFileSize, mWordList.mVersion,
+                    mWordList.mFormatVersion);
             PrivateLog.log("Insert 'available' record for " + mWordList.mDescription
                     + " and locale " + mWordList.mLocale);
             db.insert(MetadataDbHelper.METADATA_TABLE_NAME, null, values);
@@ -387,7 +374,7 @@
             final ContentValues values = MetadataDbHelper.makeContentValues(0,
                     MetadataDbHelper.TYPE_BULK, MetadataDbHelper.STATUS_INSTALLED,
                     mWordList.mId, mWordList.mLocale, mWordList.mDescription,
-                    "", mWordList.mRemoteFilename, mWordList.mLastUpdate,
+                    "", mWordList.mRemoteFilename, mWordList.mLastUpdate, mWordList.mRawChecksum,
                     mWordList.mChecksum, mWordList.mFileSize, mWordList.mVersion,
                     mWordList.mFormatVersion);
             PrivateLog.log("Insert 'preinstalled' record for " + mWordList.mDescription
@@ -429,8 +416,9 @@
                     oldValues.getAsInteger(MetadataDbHelper.STATUS_COLUMN),
                     mWordList.mId, mWordList.mLocale, mWordList.mDescription,
                     oldValues.getAsString(MetadataDbHelper.LOCAL_FILENAME_COLUMN),
-                    mWordList.mRemoteFilename, mWordList.mLastUpdate, mWordList.mChecksum,
-                    mWordList.mFileSize, mWordList.mVersion, mWordList.mFormatVersion);
+                    mWordList.mRemoteFilename, mWordList.mLastUpdate, mWordList.mRawChecksum,
+                    mWordList.mChecksum, mWordList.mFileSize, mWordList.mVersion,
+                    mWordList.mFormatVersion);
             PrivateLog.log("Updating record for " + mWordList.mDescription
                     + " and locale " + mWordList.mLocale);
             db.update(MetadataDbHelper.METADATA_TABLE_NAME, values,
@@ -611,7 +599,7 @@
     private final Queue<Action> mActions;
 
     public ActionBatch() {
-        mActions = new LinkedList<Action>();
+        mActions = new LinkedList<>();
     }
 
     public void add(final Action a) {
diff --git a/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java b/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java
index 7c27e6d..3d0e29e 100644
--- a/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java
+++ b/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java
@@ -23,7 +23,7 @@
     private static final String COMMON_PREFERENCES_NAME = "LatinImeDictPrefs";
 
     public static SharedPreferences getCommonPreferences(final Context context) {
-        return context.getSharedPreferences(COMMON_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
+        return context.getSharedPreferences(COMMON_PREFERENCES_NAME, 0);
     }
 
     public static void enable(final SharedPreferences pref, final String id) {
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
index 88b5032..1d84e58 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
@@ -29,7 +29,6 @@
 import android.widget.ProgressBar;
 
 public class DictionaryDownloadProgressBar extends ProgressBar {
-    @SuppressWarnings("unused")
     private static final String TAG = DictionaryDownloadProgressBar.class.getSimpleName();
     private static final int NOT_A_DOWNLOADMANAGER_PENDING_ID = 0;
 
@@ -100,32 +99,28 @@
 
     @Override
     protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
         mIsCurrentlyAttachedToWindow = false;
         updateReporterThreadRunningStatusAccordingToVisibility();
     }
 
     private class UpdaterThread extends Thread {
         private final static int REPORT_PERIOD = 150; // how often to report progress, in ms
-        final DownloadManager mDownloadManager;
+        final DownloadManagerWrapper mDownloadManagerWrapper;
         final int mId;
         public UpdaterThread(final Context context, final int id) {
             super();
-            mDownloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
+            mDownloadManagerWrapper = new DownloadManagerWrapper(context);
             mId = id;
         }
         @Override
         public void run() {
             try {
-                // It's almost impossible that mDownloadManager is null (it would mean it has been
-                // disabled between pressing the 'install' button and displaying the progress
-                // bar), but just in case.
-                if (null == mDownloadManager) return;
                 final UpdateHelper updateHelper = new UpdateHelper();
                 final Query query = new Query().setFilterById(mId);
-                int lastProgress = 0;
                 setIndeterminate(true);
                 while (!isInterrupted()) {
-                    final Cursor cursor = mDownloadManager.query(query);
+                    final Cursor cursor = mDownloadManagerWrapper.query(query);
                     if (null == cursor) {
                         // Can't contact DownloadManager: this should never happen.
                         return;
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
index 13c07de..8e02617 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java
@@ -18,8 +18,6 @@
 
 import android.view.View;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 
@@ -39,8 +37,8 @@
         public int mStatus = MetadataDbHelper.STATUS_UNKNOWN;
     }
 
-    private HashMap<String, State> mWordlistToState = CollectionUtils.newHashMap();
-    private ArrayList<View> mViewCache = CollectionUtils.newArrayList();
+    private HashMap<String, State> mWordlistToState = new HashMap<>();
+    private ArrayList<View> mViewCache = new ArrayList<>();
 
     public boolean isOpen(final String wordlistId) {
         final State state = mWordlistToState.get(wordlistId);
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java
index 1d9b999..f5bd84c 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java
@@ -89,10 +89,13 @@
     private static final class WordListInfo {
         public final String mId;
         public final String mLocale;
+        public final String mRawChecksum;
         public final int mMatchLevel;
-        public WordListInfo(final String id, final String locale, final int matchLevel) {
+        public WordListInfo(final String id, final String locale, final String rawChecksum,
+                final int matchLevel) {
             mId = id;
             mLocale = locale;
+            mRawChecksum = rawChecksum;
             mMatchLevel = matchLevel;
         }
     }
@@ -106,7 +109,8 @@
     private static final class ResourcePathCursor extends AbstractCursor {
 
         // Column names for the cursor returned by this content provider.
-        static private final String[] columnNames = { "id", "locale" };
+        static private final String[] columnNames = { MetadataDbHelper.WORDLISTID_COLUMN,
+                MetadataDbHelper.LOCALE_COLUMN, MetadataDbHelper.RAW_CHECKSUM_COLUMN };
 
         // The list of word lists served by this provider that match the client request.
         final WordListInfo[] mWordLists;
@@ -141,6 +145,7 @@
             switch (column) {
                 case 0: return mWordLists[mPos].mId;
                 case 1: return mWordLists[mPos].mLocale;
+                case 2: return mWordLists[mPos].mRawChecksum;
                 default : return null;
             }
         }
@@ -350,12 +355,15 @@
                         clientId);
         if (null == results) {
             return Collections.<WordListInfo>emptyList();
-        } else {
-            final HashMap<String, WordListInfo> dicts = new HashMap<String, WordListInfo>();
+        }
+        try {
+            final HashMap<String, WordListInfo> dicts = new HashMap<>();
             final int idIndex = results.getColumnIndex(MetadataDbHelper.WORDLISTID_COLUMN);
             final int localeIndex = results.getColumnIndex(MetadataDbHelper.LOCALE_COLUMN);
             final int localFileNameIndex =
                     results.getColumnIndex(MetadataDbHelper.LOCAL_FILENAME_COLUMN);
+            final int rawChecksumIndex =
+                    results.getColumnIndex(MetadataDbHelper.RAW_CHECKSUM_COLUMN);
             final int statusIndex = results.getColumnIndex(MetadataDbHelper.STATUS_COLUMN);
             if (results.moveToFirst()) {
                 do {
@@ -378,6 +386,7 @@
                     }
                     final String wordListLocale = results.getString(localeIndex);
                     final String wordListLocalFilename = results.getString(localFileNameIndex);
+                    final String wordListRawChecksum = results.getString(rawChecksumIndex);
                     final int wordListStatus = results.getInt(statusIndex);
                     // Test the requested locale against this wordlist locale. The requested locale
                     // has to either match exactly or be more specific than the dictionary - a
@@ -411,13 +420,14 @@
                     final WordListInfo currentBestMatch = dicts.get(wordListCategory);
                     if (null == currentBestMatch
                             || currentBestMatch.mMatchLevel < matchLevel) {
-                        dicts.put(wordListCategory,
-                                new WordListInfo(wordListId, wordListLocale, matchLevel));
+                        dicts.put(wordListCategory, new WordListInfo(wordListId, wordListLocale,
+                                wordListRawChecksum, matchLevel));
                     }
                 } while (results.moveToNext());
             }
-            results.close();
             return Collections.unmodifiableCollection(dicts.values());
+        } finally {
+            results.close();
         }
     }
 
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
index 7bbd041..11982fa 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
@@ -33,13 +33,13 @@
 import android.text.TextUtils;
 import android.text.format.DateUtils;
 import android.util.Log;
-import android.view.animation.AnimationUtils;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.animation.AnimationUtils;
 
 import com.android.inputmethod.latin.R;
 
@@ -67,8 +67,8 @@
     private boolean mChangedSettings;
     private DictionaryListInterfaceState mDictionaryListInterfaceState =
             new DictionaryListInterfaceState();
-    private TreeMap<String, WordListPreference> mCurrentPreferenceMap =
-            new TreeMap<String, WordListPreference>(); // never null
+    // never null
+    private TreeMap<String, WordListPreference> mCurrentPreferenceMap = new TreeMap<>();
 
     private final BroadcastReceiver mConnectivityChangedReceiver = new BroadcastReceiver() {
             @Override
@@ -280,62 +280,72 @@
                 : activity.getContentResolver().query(contentUri, null, null, null, null);
 
         if (null == cursor) {
-            final ArrayList<Preference> result = new ArrayList<Preference>();
+            final ArrayList<Preference> result = new ArrayList<>();
             result.add(createErrorMessage(activity, R.string.cannot_connect_to_dict_service));
             return result;
-        } else if (!cursor.moveToFirst()) {
-            final ArrayList<Preference> result = new ArrayList<Preference>();
-            result.add(createErrorMessage(activity, R.string.no_dictionaries_available));
-            cursor.close();
-            return result;
-        } else {
-            final String systemLocaleString = Locale.getDefault().toString();
-            final TreeMap<String, WordListPreference> prefMap =
-                    new TreeMap<String, WordListPreference>();
-            final int idIndex = cursor.getColumnIndex(MetadataDbHelper.WORDLISTID_COLUMN);
-            final int versionIndex = cursor.getColumnIndex(MetadataDbHelper.VERSION_COLUMN);
-            final int localeIndex = cursor.getColumnIndex(MetadataDbHelper.LOCALE_COLUMN);
-            final int descriptionIndex = cursor.getColumnIndex(MetadataDbHelper.DESCRIPTION_COLUMN);
-            final int statusIndex = cursor.getColumnIndex(MetadataDbHelper.STATUS_COLUMN);
-            final int filesizeIndex = cursor.getColumnIndex(MetadataDbHelper.FILESIZE_COLUMN);
-            do {
-                final String wordlistId = cursor.getString(idIndex);
-                final int version = cursor.getInt(versionIndex);
-                final String localeString = cursor.getString(localeIndex);
-                final Locale locale = new Locale(localeString);
-                final String description = cursor.getString(descriptionIndex);
-                final int status = cursor.getInt(statusIndex);
-                final int matchLevel = LocaleUtils.getMatchLevel(systemLocaleString, localeString);
-                final String matchLevelString = LocaleUtils.getMatchLevelSortedString(matchLevel);
-                final int filesize = cursor.getInt(filesizeIndex);
-                // The key is sorted in lexicographic order, according to the match level, then
-                // the description.
-                final String key = matchLevelString + "." + description + "." + wordlistId;
-                final WordListPreference existingPref = prefMap.get(key);
-                if (null == existingPref || existingPref.hasPriorityOver(status)) {
-                    final WordListPreference oldPreference = mCurrentPreferenceMap.get(key);
-                    final WordListPreference pref;
-                    if (null != oldPreference
-                            && oldPreference.mVersion == version
-                            && oldPreference.mLocale.equals(locale)) {
-                        // If the old preference has all the new attributes, reuse it. We test
-                        // for version and locale because although attributes other than status
-                        // need to be the same, others have been tested through the key of the
-                        // map. Also, status may differ so we don't want to use #equals() here.
-                        pref = oldPreference;
-                        pref.setStatus(status);
-                    } else {
-                        // Otherwise, discard it and create a new one instead.
-                        pref = new WordListPreference(activity, mDictionaryListInterfaceState,
-                                mClientId, wordlistId, version, locale, description, status,
-                                filesize);
+        }
+        try {
+            if (!cursor.moveToFirst()) {
+                final ArrayList<Preference> result = new ArrayList<>();
+                result.add(createErrorMessage(activity, R.string.no_dictionaries_available));
+                return result;
+            } else {
+                final String systemLocaleString = Locale.getDefault().toString();
+                final TreeMap<String, WordListPreference> prefMap = new TreeMap<>();
+                final int idIndex = cursor.getColumnIndex(MetadataDbHelper.WORDLISTID_COLUMN);
+                final int versionIndex = cursor.getColumnIndex(MetadataDbHelper.VERSION_COLUMN);
+                final int localeIndex = cursor.getColumnIndex(MetadataDbHelper.LOCALE_COLUMN);
+                final int descriptionIndex =
+                        cursor.getColumnIndex(MetadataDbHelper.DESCRIPTION_COLUMN);
+                final int statusIndex = cursor.getColumnIndex(MetadataDbHelper.STATUS_COLUMN);
+                final int filesizeIndex = cursor.getColumnIndex(MetadataDbHelper.FILESIZE_COLUMN);
+                do {
+                    final String wordlistId = cursor.getString(idIndex);
+                    final int version = cursor.getInt(versionIndex);
+                    final String localeString = cursor.getString(localeIndex);
+                    final Locale locale = new Locale(localeString);
+                    final String description = cursor.getString(descriptionIndex);
+                    final int status = cursor.getInt(statusIndex);
+                    final int matchLevel =
+                            LocaleUtils.getMatchLevel(systemLocaleString, localeString);
+                    final String matchLevelString =
+                            LocaleUtils.getMatchLevelSortedString(matchLevel);
+                    final int filesize = cursor.getInt(filesizeIndex);
+                    // The key is sorted in lexicographic order, according to the match level, then
+                    // the description.
+                    final String key = matchLevelString + "." + description + "." + wordlistId;
+                    final WordListPreference existingPref = prefMap.get(key);
+                    if (null == existingPref || existingPref.hasPriorityOver(status)) {
+                        final WordListPreference oldPreference = mCurrentPreferenceMap.get(key);
+                        final WordListPreference pref;
+                        if (null != oldPreference
+                                && oldPreference.mVersion == version
+                                && oldPreference.hasStatus(status)
+                                && oldPreference.mLocale.equals(locale)) {
+                            // If the old preference has all the new attributes, reuse it. Ideally,
+                            // we should reuse the old pref even if its status is different and call
+                            // setStatus here, but setStatus calls Preference#setSummary() which
+                            // needs to be done on the UI thread and we're not on the UI thread
+                            // here. We could do all this work on the UI thread, but in this case
+                            // it's probably lighter to stay on a background thread and throw this
+                            // old preference out.
+                            pref = oldPreference;
+                        } else {
+                            // Otherwise, discard it and create a new one instead.
+                            // TODO: when the status is different from the old one, we need to
+                            // animate the old one out before animating the new one in.
+                            pref = new WordListPreference(activity, mDictionaryListInterfaceState,
+                                    mClientId, wordlistId, version, locale, description, status,
+                                    filesize);
+                        }
+                        prefMap.put(key, pref);
                     }
-                    prefMap.put(key, pref);
-                }
-            } while (cursor.moveToNext());
+                } while (cursor.moveToNext());
+                mCurrentPreferenceMap = prefMap;
+                return prefMap.values();
+            }
+        } finally {
             cursor.close();
-            mCurrentPreferenceMap = prefMap;
-            return prefMap.values();
         }
     }
 
diff --git a/java/src/com/android/inputmethod/dictionarypack/DownloadManagerWrapper.java b/java/src/com/android/inputmethod/dictionarypack/DownloadManagerWrapper.java
new file mode 100644
index 0000000..75cc7d4
--- /dev/null
+++ b/java/src/com/android/inputmethod/dictionarypack/DownloadManagerWrapper.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.dictionarypack;
+
+import android.app.DownloadManager;
+import android.app.DownloadManager.Query;
+import android.app.DownloadManager.Request;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteException;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import java.io.FileNotFoundException;
+
+/**
+ * A class to help with calling DownloadManager methods.
+ *
+ * Mostly, the problem here is that most methods from DownloadManager may throw SQL exceptions if
+ * they can't open the database on disk. We want to avoid crashing in these cases but can't do
+ * much more, so this class insulates the callers from these. SQLiteException also inherit from
+ * RuntimeException so they are unchecked :(
+ * While we're at it, we also insulate callers from the cases where DownloadManager is disabled,
+ * and getSystemService returns null.
+ */
+public class DownloadManagerWrapper {
+    private final static String TAG = DownloadManagerWrapper.class.getSimpleName();
+    private final DownloadManager mDownloadManager;
+
+    public DownloadManagerWrapper(final Context context) {
+        this((DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE));
+    }
+
+    private DownloadManagerWrapper(final DownloadManager downloadManager) {
+        mDownloadManager = downloadManager;
+    }
+
+    public void remove(final long... ids) {
+        try {
+            if (null != mDownloadManager) {
+                mDownloadManager.remove(ids);
+            }
+        } catch (SQLiteException e) {
+            // We couldn't remove the file from DownloadManager. Apparently, the database can't
+            // be opened. It may be a problem with file system corruption. In any case, there is
+            // not much we can do apart from avoiding crashing.
+            Log.e(TAG, "Can't remove files with ID " + ids + " from download manager", e);
+        } catch (IllegalArgumentException e) {
+            // Not sure how this can happen, but it could be another case where the provider
+            // is disabled. Or it could be a bug in older versions of the framework.
+            Log.e(TAG, "Can't find the content URL for DownloadManager?", e);
+        }
+    }
+
+    public ParcelFileDescriptor openDownloadedFile(final long fileId) throws FileNotFoundException {
+        try {
+            if (null != mDownloadManager) {
+                return mDownloadManager.openDownloadedFile(fileId);
+            }
+        } catch (SQLiteException e) {
+            Log.e(TAG, "Can't open downloaded file with ID " + fileId, e);
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Can't find the content URL for DownloadManager?", e);
+        }
+        // We come here if mDownloadManager is null or if an exception was thrown.
+        throw new FileNotFoundException();
+    }
+
+    public Cursor query(final Query query) {
+        try {
+            if (null != mDownloadManager) {
+                return mDownloadManager.query(query);
+            }
+        } catch (SQLiteException e) {
+            Log.e(TAG, "Can't query the download manager", e);
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Can't find the content URL for DownloadManager?", e);
+        }
+        // We come here if mDownloadManager is null or if an exception was thrown.
+        return null;
+    }
+
+    public long enqueue(final Request request) {
+        try {
+            if (null != mDownloadManager) {
+                return mDownloadManager.enqueue(request);
+            }
+        } catch (SQLiteException e) {
+            Log.e(TAG, "Can't enqueue a request with the download manager", e);
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Can't find the content URL for DownloadManager?", e);
+        }
+        return 0;
+    }
+}
diff --git a/java/src/com/android/inputmethod/dictionarypack/LocaleUtils.java b/java/src/com/android/inputmethod/dictionarypack/LocaleUtils.java
index 77f67b8..4f0805c 100644
--- a/java/src/com/android/inputmethod/dictionarypack/LocaleUtils.java
+++ b/java/src/com/android/inputmethod/dictionarypack/LocaleUtils.java
@@ -175,7 +175,7 @@
         return saveLocale;
     }
 
-    private static final HashMap<String, Locale> sLocaleCache = new HashMap<String, Locale>();
+    private static final HashMap<String, Locale> sLocaleCache = new HashMap<>();
 
     /**
      * Creates a locale from a string specification.
diff --git a/java/src/com/android/inputmethod/dictionarypack/MD5Calculator.java b/java/src/com/android/inputmethod/dictionarypack/MD5Calculator.java
index e47e86e..ccd054c 100644
--- a/java/src/com/android/inputmethod/dictionarypack/MD5Calculator.java
+++ b/java/src/com/android/inputmethod/dictionarypack/MD5Calculator.java
@@ -20,7 +20,7 @@
 import java.io.IOException;
 import java.security.MessageDigest;
 
-final class MD5Calculator {
+public final class MD5Calculator {
     private MD5Calculator() {} // This helper class is not instantiable
 
     public static String checksum(final InputStream in) throws IOException {
diff --git a/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java b/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java
index ff5aba6..17dd781 100644
--- a/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java
+++ b/java/src/com/android/inputmethod/dictionarypack/MetadataDbHelper.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.text.TextUtils;
 import android.util.Log;
@@ -45,10 +46,8 @@
     // This is the first released version of the database that implements CLIENTID. It is
     // used to identify the versions for upgrades. This should never change going forward.
     private static final int METADATA_DATABASE_VERSION_WITH_CLIENTID = 6;
-    // This is the current database version. It should be updated when the database schema
-    // gets updated. It is passed to the framework constructor of SQLiteOpenHelper, so
-    // that's what the framework uses to track our database version.
-    private static final int METADATA_DATABASE_VERSION = 6;
+    // The current database version.
+    private static final int CURRENT_METADATA_DATABASE_VERSION = 9;
 
     private final static long NOT_A_DOWNLOAD_ID = -1;
 
@@ -68,7 +67,8 @@
     public static final String VERSION_COLUMN = "version";
     public static final String FORMATVERSION_COLUMN = "formatversion";
     public static final String FLAGS_COLUMN = "flags";
-    public static final int COLUMN_COUNT = 13;
+    public static final String RAW_CHECKSUM_COLUMN = "rawChecksum";
+    public static final int COLUMN_COUNT = 14;
 
     private static final String CLIENT_CLIENT_ID_COLUMN = "clientid";
     private static final String CLIENT_METADATA_URI_COLUMN = "uri";
@@ -121,8 +121,9 @@
             + CHECKSUM_COLUMN + " TEXT, "
             + FILESIZE_COLUMN + " INTEGER, "
             + VERSION_COLUMN + " INTEGER,"
-            + FORMATVERSION_COLUMN + " INTEGER,"
-            + FLAGS_COLUMN + " INTEGER,"
+            + FORMATVERSION_COLUMN + " INTEGER, "
+            + FLAGS_COLUMN + " INTEGER, "
+            + RAW_CHECKSUM_COLUMN + " TEXT,"
             + "PRIMARY KEY (" + WORDLISTID_COLUMN + "," + VERSION_COLUMN + "));";
     private static final String METADATA_CREATE_CLIENT_TABLE =
             "CREATE TABLE IF NOT EXISTS " + CLIENT_TABLE_NAME + " ("
@@ -138,7 +139,8 @@
     static final String[] METADATA_TABLE_COLUMNS = { PENDINGID_COLUMN, TYPE_COLUMN,
             STATUS_COLUMN, WORDLISTID_COLUMN, LOCALE_COLUMN, DESCRIPTION_COLUMN,
             LOCAL_FILENAME_COLUMN, REMOTE_FILENAME_COLUMN, DATE_COLUMN, CHECKSUM_COLUMN,
-            FILESIZE_COLUMN, VERSION_COLUMN, FORMATVERSION_COLUMN, FLAGS_COLUMN };
+            FILESIZE_COLUMN, VERSION_COLUMN, FORMATVERSION_COLUMN, FLAGS_COLUMN,
+            RAW_CHECKSUM_COLUMN };
     // List of all client table columns.
     static final String[] CLIENT_TABLE_COLUMNS = { CLIENT_CLIENT_ID_COLUMN,
             CLIENT_METADATA_URI_COLUMN, CLIENT_PENDINGID_COLUMN, FLAGS_COLUMN };
@@ -158,7 +160,7 @@
         // this legacy database. New clients should make sure to always pass a client ID so as
         // to avoid conflicts.
         final String clientId = null != clientIdOrNull ? clientIdOrNull : "";
-        if (null == sInstanceMap) sInstanceMap = new TreeMap<String, MetadataDbHelper>();
+        if (null == sInstanceMap) sInstanceMap = new TreeMap<>();
         MetadataDbHelper helper = sInstanceMap.get(clientId);
         if (null == helper) {
             helper = new MetadataDbHelper(context, clientId);
@@ -169,7 +171,7 @@
     private MetadataDbHelper(final Context context, final String clientId) {
         super(context,
                 METADATA_DATABASE_NAME_STEM + (TextUtils.isEmpty(clientId) ? "" : "." + clientId),
-                null, METADATA_DATABASE_VERSION);
+                null, CURRENT_METADATA_DATABASE_VERSION);
         mContext = context;
         mClientId = clientId;
     }
@@ -217,28 +219,68 @@
         createClientTable(db);
     }
 
+    private void addRawChecksumColumnUnlessPresent(final SQLiteDatabase db, final String clientId) {
+        try {
+            db.execSQL("SELECT " + RAW_CHECKSUM_COLUMN + " FROM "
+                    + METADATA_TABLE_NAME + " LIMIT 0;");
+        } catch (SQLiteException e) {
+            Log.i(TAG, "No " + RAW_CHECKSUM_COLUMN + " column : creating it");
+            db.execSQL("ALTER TABLE " + METADATA_TABLE_NAME + " ADD COLUMN "
+                    + RAW_CHECKSUM_COLUMN + " TEXT;");
+        }
+    }
+
     /**
      * Upgrade the database. Upgrade from version 3 is supported.
+     * Version 3 has a DB named METADATA_DATABASE_NAME_STEM containing a table METADATA_TABLE_NAME.
+     * Version 6 and above has a DB named METADATA_DATABASE_NAME_STEM containing a
+     * table CLIENT_TABLE_NAME, and for each client a table called METADATA_TABLE_STEM + "." + the
+     * name of the client and contains a table METADATA_TABLE_NAME.
+     * For schemas, see the above create statements. The schemas have never changed so far.
+     *
+     * This method is called by the framework. See {@link SQLiteOpenHelper#onUpgrade}
+     * @param db The database we are upgrading
+     * @param oldVersion The old database version (the one on the disk)
+     * @param newVersion The new database version as supplied to the constructor of SQLiteOpenHelper
      */
     @Override
     public void onUpgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) {
         if (METADATA_DATABASE_INITIAL_VERSION == oldVersion
-                && METADATA_DATABASE_VERSION_WITH_CLIENTID == newVersion) {
+                && METADATA_DATABASE_VERSION_WITH_CLIENTID <= newVersion
+                && CURRENT_METADATA_DATABASE_VERSION >= newVersion) {
             // Upgrade from version METADATA_DATABASE_INITIAL_VERSION to version
             // METADATA_DATABASE_VERSION_WITH_CLIENT_ID
+            // Only the default database should contain the client table, so we test for mClientId.
             if (TextUtils.isEmpty(mClientId)) {
-                // Only the default database should contain the client table.
-                // Anyway in version 3 only the default table existed so the emptyness
+                // Anyway in version 3 only the default table existed so the emptiness
                 // test should always be true, but better check to be sure.
                 createClientTable(db);
             }
+        } else if (METADATA_DATABASE_VERSION_WITH_CLIENTID < newVersion
+                && CURRENT_METADATA_DATABASE_VERSION >= newVersion) {
+            // Here we drop the client table, so that all clients send us their information again.
+            // The client table contains the URL to hit to update the available dictionaries list,
+            // but the info about the dictionaries themselves is stored in the table called
+            // METADATA_TABLE_NAME and we want to keep it, so we only drop the client table.
+            db.execSQL("DROP TABLE IF EXISTS " + CLIENT_TABLE_NAME);
+            // Only the default database should contain the client table, so we test for mClientId.
+            if (TextUtils.isEmpty(mClientId)) {
+                createClientTable(db);
+            }
         } else {
-            // Version 3 was the earliest version, so we should never come here. If we do, we
-            // have no idea what this database is, so we'd better wipe it off.
+            // If we're not in the above case, either we are upgrading from an earlier versionCode
+            // and we should wipe the database, or we are handling a version we never heard about
+            // (can only be a bug) so it's safer to wipe the database.
             db.execSQL("DROP TABLE IF EXISTS " + METADATA_TABLE_NAME);
             db.execSQL("DROP TABLE IF EXISTS " + CLIENT_TABLE_NAME);
             onCreate(db);
         }
+        // A rawChecksum column that did not exist in the previous versions was added that
+        // corresponds to the md5 checksum of the file after decompression/decryption. This is to
+        // strengthen the system against corrupted dictionary files.
+        // The most secure way to upgrade a database is to just test for the column presence, and
+        // add it if it's not there.
+        addRawChecksumColumnUnlessPresent(db, mClientId);
     }
 
     /**
@@ -410,7 +452,7 @@
     public static ContentValues makeContentValues(final int pendingId, final int type,
             final int status, final String wordlistId, final String locale,
             final String description, final String filename, final String url, final long date,
-            final String checksum, final long filesize, final int version,
+            final String rawChecksum, final String checksum, final long filesize, final int version,
             final int formatVersion) {
         final ContentValues result = new ContentValues(COLUMN_COUNT);
         result.put(PENDINGID_COLUMN, pendingId);
@@ -422,6 +464,7 @@
         result.put(LOCAL_FILENAME_COLUMN, filename);
         result.put(REMOTE_FILENAME_COLUMN, url);
         result.put(DATE_COLUMN, date);
+        result.put(RAW_CHECKSUM_COLUMN, rawChecksum);
         result.put(CHECKSUM_COLUMN, checksum);
         result.put(FILESIZE_COLUMN, filesize);
         result.put(VERSION_COLUMN, version);
@@ -457,6 +500,8 @@
         if (null == result.get(REMOTE_FILENAME_COLUMN)) result.put(REMOTE_FILENAME_COLUMN, "");
         // 0 for the update date : 1970/1/1. Unless specified.
         if (null == result.get(DATE_COLUMN)) result.put(DATE_COLUMN, 0);
+        // Raw checksum unknown unless specified
+        if (null == result.get(RAW_CHECKSUM_COLUMN)) result.put(RAW_CHECKSUM_COLUMN, "");
         // Checksum unknown unless specified
         if (null == result.get(CHECKSUM_COLUMN)) result.put(CHECKSUM_COLUMN, "");
         // No filesize unless specified
@@ -504,6 +549,7 @@
             putStringResult(result, cursor, LOCAL_FILENAME_COLUMN);
             putStringResult(result, cursor, REMOTE_FILENAME_COLUMN);
             putIntResult(result, cursor, DATE_COLUMN);
+            putStringResult(result, cursor, RAW_CHECKSUM_COLUMN);
             putStringResult(result, cursor, CHECKSUM_COLUMN);
             putIntResult(result, cursor, FILESIZE_COLUMN);
             putIntResult(result, cursor, VERSION_COLUMN);
@@ -533,12 +579,17 @@
                 PENDINGID_COLUMN + "= ?",
                 new String[] { Long.toString(id) },
                 null, null, null);
-        // There should never be more than one result. If because of some bug there are, returning
-        // only one result is the right thing to do, because we couldn't handle several anyway
-        // and we should still handle one.
-        final ContentValues result = getFirstLineAsContentValues(cursor);
-        cursor.close();
-        return result;
+        if (null == cursor) {
+            return null;
+        }
+        try {
+            // There should never be more than one result. If because of some bug there are,
+            // returning only one result is the right thing to do, because we couldn't handle
+            // several anyway and we should still handle one.
+            return getFirstLineAsContentValues(cursor);
+        } finally {
+            cursor.close();
+        }
     }
 
     /**
@@ -559,11 +610,16 @@
                 new String[] { id, Integer.toString(STATUS_INSTALLED),
                         Integer.toString(STATUS_DELETING) },
                 null, null, null);
-        // There should only be one result, but if there are several, we can't tell which
-        // is the best, so we just return the first one.
-        final ContentValues result = getFirstLineAsContentValues(cursor);
-        cursor.close();
-        return result;
+        if (null == cursor) {
+            return null;
+        }
+        try {
+            // There should only be one result, but if there are several, we can't tell which
+            // is the best, so we just return the first one.
+            return getFirstLineAsContentValues(cursor);
+        } finally {
+            cursor.close();
+        }
     }
 
     /**
@@ -583,7 +639,7 @@
     public static ArrayList<DownloadRecord> getDownloadRecordsForDownloadId(final Context context,
             final long downloadId) {
         final SQLiteDatabase defaultDb = getDb(context, "");
-        final ArrayList<DownloadRecord> results = new ArrayList<DownloadRecord>();
+        final ArrayList<DownloadRecord> results = new ArrayList<>();
         final Cursor cursor = defaultDb.query(CLIENT_TABLE_NAME, CLIENT_TABLE_COLUMNS,
                 null, null, null, null, null);
         try {
@@ -622,10 +678,15 @@
                 METADATA_TABLE_COLUMNS,
                 WORDLISTID_COLUMN + "= ? AND " + VERSION_COLUMN + "= ?",
                 new String[] { id, Integer.toString(version) }, null, null, null);
-        // This is a lookup by primary key, so there can't be more than one result.
-        final ContentValues result = getFirstLineAsContentValues(cursor);
-        cursor.close();
-        return result;
+        if (null == cursor) {
+            return null;
+        }
+        try {
+            // This is a lookup by primary key, so there can't be more than one result.
+            return getFirstLineAsContentValues(cursor);
+        } finally {
+            cursor.close();
+        }
     }
 
     /**
@@ -641,10 +702,15 @@
                 METADATA_TABLE_COLUMNS,
                 WORDLISTID_COLUMN + "= ?",
                 new String[] { id }, null, null, VERSION_COLUMN + " DESC", "1");
-        // This is a lookup by primary key, so there can't be more than one result.
-        final ContentValues result = getFirstLineAsContentValues(cursor);
-        cursor.close();
-        return result;
+        if (null == cursor) {
+            return null;
+        }
+        try {
+            // This is a lookup by primary key, so there can't be more than one result.
+            return getFirstLineAsContentValues(cursor);
+        } finally {
+            cursor.close();
+        }
     }
 
     /**
@@ -857,7 +923,7 @@
                 // - Remove the old entry from the table
                 // - Erase the old file
                 // We start by gathering the names of the files we should delete.
-                final List<String> filenames = new LinkedList<String>();
+                final List<String> filenames = new LinkedList<>();
                 final Cursor c = db.query(METADATA_TABLE_NAME,
                         new String[] { LOCAL_FILENAME_COLUMN },
                         LOCALE_COLUMN + " = ? AND " +
diff --git a/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java b/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java
index a0147b6..d66b690 100644
--- a/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java
+++ b/java/src/com/android/inputmethod/dictionarypack/MetadataHandler.java
@@ -43,9 +43,8 @@
      * @return the constructed list of wordlist metadata.
      */
     private static List<WordListMetadata> makeMetadataObject(final Cursor results) {
-        final ArrayList<WordListMetadata> buildingMetadata = new ArrayList<WordListMetadata>();
-
-        if (results.moveToFirst()) {
+        final ArrayList<WordListMetadata> buildingMetadata = new ArrayList<>();
+        if (null != results && results.moveToFirst()) {
             final int localeColumn = results.getColumnIndex(MetadataDbHelper.LOCALE_COLUMN);
             final int typeColumn = results.getColumnIndex(MetadataDbHelper.TYPE_COLUMN);
             final int descriptionColumn =
@@ -53,6 +52,8 @@
             final int idIndex = results.getColumnIndex(MetadataDbHelper.WORDLISTID_COLUMN);
             final int updateIndex = results.getColumnIndex(MetadataDbHelper.DATE_COLUMN);
             final int fileSizeIndex = results.getColumnIndex(MetadataDbHelper.FILESIZE_COLUMN);
+            final int rawChecksumIndex =
+                    results.getColumnIndex(MetadataDbHelper.RAW_CHECKSUM_COLUMN);
             final int checksumIndex = results.getColumnIndex(MetadataDbHelper.CHECKSUM_COLUMN);
             final int localFilenameIndex =
                     results.getColumnIndex(MetadataDbHelper.LOCAL_FILENAME_COLUMN);
@@ -61,13 +62,13 @@
             final int versionIndex = results.getColumnIndex(MetadataDbHelper.VERSION_COLUMN);
             final int formatVersionIndex =
                     results.getColumnIndex(MetadataDbHelper.FORMATVERSION_COLUMN);
-
             do {
                 buildingMetadata.add(new WordListMetadata(results.getString(idIndex),
                         results.getInt(typeColumn),
                         results.getString(descriptionColumn),
                         results.getLong(updateIndex),
                         results.getLong(fileSizeIndex),
+                        results.getString(rawChecksumIndex),
                         results.getString(checksumIndex),
                         results.getString(localFilenameIndex),
                         results.getString(remoteFilenameIndex),
@@ -75,8 +76,6 @@
                         results.getInt(formatVersionIndex),
                         0, results.getString(localeColumn)));
             } while (results.moveToNext());
-
-            results.close();
         }
         return Collections.unmodifiableList(buildingMetadata);
     }
@@ -92,9 +91,14 @@
         // If clientId is null, we get a cursor on the default database (see
         // MetadataDbHelper#getInstance() for more on this)
         final Cursor results = MetadataDbHelper.queryCurrentMetadata(context, clientId);
-        final List<WordListMetadata> resultList = makeMetadataObject(results);
-        results.close();
-        return resultList;
+        // If null, we should return makeMetadataObject(null), so we go through.
+        try {
+            return makeMetadataObject(results);
+        } finally {
+            if (null != results) {
+                results.close();
+            }
+        }
     }
 
     /**
diff --git a/java/src/com/android/inputmethod/dictionarypack/MetadataParser.java b/java/src/com/android/inputmethod/dictionarypack/MetadataParser.java
index 27670fd..52290ca 100644
--- a/java/src/com/android/inputmethod/dictionarypack/MetadataParser.java
+++ b/java/src/com/android/inputmethod/dictionarypack/MetadataParser.java
@@ -37,6 +37,7 @@
     private static final String DESCRIPTION_FIELD_NAME = MetadataDbHelper.DESCRIPTION_COLUMN;
     private static final String UPDATE_FIELD_NAME = "update";
     private static final String FILESIZE_FIELD_NAME = MetadataDbHelper.FILESIZE_COLUMN;
+    private static final String RAW_CHECKSUM_FIELD_NAME = MetadataDbHelper.RAW_CHECKSUM_COLUMN;
     private static final String CHECKSUM_FIELD_NAME = MetadataDbHelper.CHECKSUM_COLUMN;
     private static final String REMOTE_FILENAME_FIELD_NAME =
             MetadataDbHelper.REMOTE_FILENAME_COLUMN;
@@ -51,7 +52,7 @@
      */
     private static WordListMetadata parseOneWordList(final JsonReader reader)
             throws IOException, BadFormatException {
-        final TreeMap<String, String> arguments = new TreeMap<String, String>();
+        final TreeMap<String, String> arguments = new TreeMap<>();
         reader.beginObject();
         while (reader.hasNext()) {
             final String name = reader.nextName();
@@ -80,6 +81,7 @@
                 arguments.get(DESCRIPTION_FIELD_NAME),
                 Long.parseLong(arguments.get(UPDATE_FIELD_NAME)),
                 Long.parseLong(arguments.get(FILESIZE_FIELD_NAME)),
+                arguments.get(RAW_CHECKSUM_FIELD_NAME),
                 arguments.get(CHECKSUM_FIELD_NAME),
                 null,
                 arguments.get(REMOTE_FILENAME_FIELD_NAME),
@@ -98,7 +100,7 @@
     public static List<WordListMetadata> parseMetadata(final InputStreamReader input)
             throws IOException, BadFormatException {
         JsonReader reader = new JsonReader(input);
-        final ArrayList<WordListMetadata> readInfo = new ArrayList<WordListMetadata>();
+        final ArrayList<WordListMetadata> readInfo = new ArrayList<>();
         reader.beginArray();
         while (reader.hasNext()) {
             final WordListMetadata thisMetadata = parseOneWordList(reader);
diff --git a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
index 0e7c3bb..95a0942 100644
--- a/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
+++ b/java/src/com/android/inputmethod/dictionarypack/UpdateHandler.java
@@ -177,7 +177,7 @@
      */
     public static boolean tryUpdate(final Context context, final boolean updateNow) {
         // TODO: loop through all clients instead of only doing the default one.
-        final TreeSet<String> uris = new TreeSet<String>();
+        final TreeSet<String> uris = new TreeSet<>();
         final Cursor cursor = MetadataDbHelper.queryClientIds(context);
         if (null == cursor) return false;
         try {
@@ -249,13 +249,7 @@
         metadataRequest.setVisibleInDownloadsUi(
                 res.getBoolean(R.bool.metadata_downloads_visible_in_download_UI));
 
-        final DownloadManager manager =
-                (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
-        if (null == manager) {
-            // Download manager is not installed or disabled.
-            // TODO: fall back to self-managed download?
-            return;
-        }
+        final DownloadManagerWrapper manager = new DownloadManagerWrapper(context);
         cancelUpdateWithDownloadManager(context, metadataUri, manager);
         final long downloadId;
         synchronized (sSharedIdProtector) {
@@ -278,10 +272,10 @@
      *
      * @param context the context to open the database on
      * @param metadataUri the URI to cancel
-     * @param manager an instance of DownloadManager
+     * @param manager an wrapped instance of DownloadManager
      */
     private static void cancelUpdateWithDownloadManager(final Context context,
-            final String metadataUri, final DownloadManager manager) {
+            final String metadataUri, final DownloadManagerWrapper manager) {
         synchronized (sSharedIdProtector) {
             final long metadataDownloadId =
                     MetadataDbHelper.getMetadataDownloadIdForURI(context, metadataUri);
@@ -306,10 +300,9 @@
      * @param clientId the ID of the client we want to cancel the update of
      */
     public static void cancelUpdate(final Context context, final String clientId) {
-        final DownloadManager manager =
-                    (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
+        final DownloadManagerWrapper manager = new DownloadManagerWrapper(context);
         final String metadataUri = MetadataDbHelper.getMetadataUriAsString(context, clientId);
-        if (null != manager) cancelUpdateWithDownloadManager(context, metadataUri, manager);
+        cancelUpdateWithDownloadManager(context, metadataUri, manager);
     }
 
     /**
@@ -323,15 +316,15 @@
      * download request id, which is not known before submitting the request to the download
      * manager. Hence, it only updates the relevant line.
      *
-     * @param manager the download manager service to register the request with.
+     * @param manager a wrapped download manager service to register the request with.
      * @param request the request to register.
      * @param db the metadata database.
      * @param id the id of the word list.
      * @param version the version of the word list.
      * @return the download id returned by the download manager.
      */
-    public static long registerDownloadRequest(final DownloadManager manager, final Request request,
-            final SQLiteDatabase db, final String id, final int version) {
+    public static long registerDownloadRequest(final DownloadManagerWrapper manager,
+            final Request request, final SQLiteDatabase db, final String id, final int version) {
         DebugLogUtils.l("RegisterDownloadRequest for word list id : ", id, ", version ", version);
         final long downloadId;
         synchronized (sSharedIdProtector) {
@@ -345,8 +338,8 @@
     /**
      * Retrieve information about a specific download from DownloadManager.
      */
-    private static CompletedDownloadInfo getCompletedDownloadInfo(final DownloadManager manager,
-            final long downloadId) {
+    private static CompletedDownloadInfo getCompletedDownloadInfo(
+            final DownloadManagerWrapper manager, final long downloadId) {
         final Query query = new Query().setFilterById(downloadId);
         final Cursor cursor = manager.query(query);
 
@@ -425,8 +418,7 @@
         DebugLogUtils.l("DownloadFinished with id", fileId);
         if (NOT_AN_ID == fileId) return; // Spurious wake-up: ignore
 
-        final DownloadManager manager =
-                (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
+        final DownloadManagerWrapper manager = new DownloadManagerWrapper(context);
         final CompletedDownloadInfo downloadInfo = getCompletedDownloadInfo(manager, fileId);
 
         final ArrayList<DownloadRecord> recordList =
@@ -517,7 +509,7 @@
     }
 
     private static boolean handleDownloadedFile(final Context context,
-            final DownloadRecord downloadRecord, final DownloadManager manager,
+            final DownloadRecord downloadRecord, final DownloadManagerWrapper manager,
             final long fileId) {
         try {
             // {@link handleWordList(Context,InputStream,ContentValues)}.
@@ -565,7 +557,7 @@
         // Instantiation of a parameterized type is not possible in Java, so it's not possible to
         // return the same type of list that was passed - probably the same reason why Collections
         // does not do it. So we need to decide statically which concrete type to return.
-        return new LinkedList<T>(src);
+        return new LinkedList<>(src);
     }
 
     /**
@@ -748,10 +740,10 @@
         final ActionBatch actions = new ActionBatch();
         // Upgrade existing word lists
         DebugLogUtils.l("Comparing dictionaries");
-        final Set<String> wordListIds = new TreeSet<String>();
+        final Set<String> wordListIds = new TreeSet<>();
         // TODO: Can these be null?
-        if (null == from) from = new ArrayList<WordListMetadata>();
-        if (null == to) to = new ArrayList<WordListMetadata>();
+        if (null == from) from = new ArrayList<>();
+        if (null == to) to = new ArrayList<>();
         for (WordListMetadata wlData : from) wordListIds.add(wlData.mId);
         for (WordListMetadata wlData : to) wordListIds.add(wlData.mId);
         for (String id : wordListIds) {
diff --git a/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java b/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java
index 69bff95..9e510a6 100644
--- a/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java
+++ b/java/src/com/android/inputmethod/dictionarypack/WordListMetadata.java
@@ -30,6 +30,7 @@
     public final String mDescription;
     public final long mLastUpdate;
     public final long mFileSize;
+    public final String mRawChecksum;
     public final String mChecksum;
     public final String mLocalFilename;
     public final String mRemoteFilename;
@@ -50,13 +51,15 @@
 
     public WordListMetadata(final String id, final int type,
             final String description, final long lastUpdate, final long fileSize,
-            final String checksum, final String localFilename, final String remoteFilename,
-            final int version, final int formatVersion, final int flags, final String locale) {
+            final String rawChecksum, final String checksum, final String localFilename,
+            final String remoteFilename, final int version, final int formatVersion,
+            final int flags, final String locale) {
         mId = id;
         mType = type;
         mDescription = description;
         mLastUpdate = lastUpdate; // In milliseconds
         mFileSize = fileSize;
+        mRawChecksum = rawChecksum;
         mChecksum = checksum;
         mLocalFilename = localFilename;
         mRemoteFilename = remoteFilename;
@@ -77,6 +80,7 @@
         final String description = values.getAsString(MetadataDbHelper.DESCRIPTION_COLUMN);
         final Long lastUpdate = values.getAsLong(MetadataDbHelper.DATE_COLUMN);
         final Long fileSize = values.getAsLong(MetadataDbHelper.FILESIZE_COLUMN);
+        final String rawChecksum = values.getAsString(MetadataDbHelper.RAW_CHECKSUM_COLUMN);
         final String checksum = values.getAsString(MetadataDbHelper.CHECKSUM_COLUMN);
         final String localFilename = values.getAsString(MetadataDbHelper.LOCAL_FILENAME_COLUMN);
         final String remoteFilename = values.getAsString(MetadataDbHelper.REMOTE_FILENAME_COLUMN);
@@ -98,8 +102,8 @@
                 || null == locale) {
             throw new IllegalArgumentException();
         }
-        return new WordListMetadata(id, type, description, lastUpdate, fileSize, checksum,
-                localFilename, remoteFilename, version, formatVersion, flags, locale);
+        return new WordListMetadata(id, type, description, lastUpdate, fileSize, rawChecksum,
+                checksum, localFilename, remoteFilename, version, formatVersion, flags, locale);
     }
 
     @Override
@@ -110,6 +114,7 @@
         sb.append("\nDescription : ").append(mDescription);
         sb.append("\nLastUpdate : ").append(mLastUpdate);
         sb.append("\nFileSize : ").append(mFileSize);
+        sb.append("\nRawChecksum : ").append(mRawChecksum);
         sb.append("\nChecksum : ").append(mChecksum);
         sb.append("\nLocalFilename : ").append(mLocalFilename);
         sb.append("\nRemoteFilename : ").append(mRemoteFilename);
diff --git a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
index ba1fce1..aea16af 100644
--- a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
+++ b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java
@@ -98,6 +98,10 @@
         setSummary(getSummary(status));
     }
 
+    public boolean hasStatus(final int status) {
+        return status == mStatus;
+    }
+
     @Override
     public View onCreateView(final ViewGroup parent) {
         final View orphanedView = mInterfaceState.findFirstOrphanedView();
@@ -217,6 +221,7 @@
         progressBar.setIds(mClientId, mWordlistId);
         progressBar.setMax(mFilesize);
         final boolean showProgressBar = (MetadataDbHelper.STATUS_DOWNLOADING == mStatus);
+        setSummary(getSummary(mStatus));
         status.setVisibility(showProgressBar ? View.INVISIBLE : View.VISIBLE);
         progressBar.setVisibility(showProgressBar ? View.VISIBLE : View.INVISIBLE);
 
diff --git a/java/src/com/android/inputmethod/event/Combiner.java b/java/src/com/android/inputmethod/event/Combiner.java
index ab6b70c..8b808c6 100644
--- a/java/src/com/android/inputmethod/event/Combiner.java
+++ b/java/src/com/android/inputmethod/event/Combiner.java
@@ -16,14 +16,33 @@
 
 package com.android.inputmethod.event;
 
+import java.util.ArrayList;
+
 /**
- * A generic interface for combiners.
+ * A generic interface for combiners. Combiners are objects that transform chains of input events
+ * into committable strings and manage feedback to show to the user on the combining state.
  */
 public interface Combiner {
     /**
-     * Combine an event with the existing state and return the new event.
+     * Process an event, possibly combining it with the existing state and return the new event.
+     *
+     * If this event does not result in any new event getting passed down the chain, this method
+     * returns null. It may also modify the previous event list if appropriate.
+     *
+     * @param previousEvents the previous events in this composition.
      * @param event the event to combine with the existing state.
      * @return the resulting event.
      */
-    Event combine(Event event);
+    Event processEvent(ArrayList<Event> previousEvents, Event event);
+
+    /**
+     * Get the feedback that should be shown to the user for the current state of this combiner.
+     * @return A CharSequence representing the feedback to show users. It may include styles.
+     */
+    CharSequence getCombiningStateFeedback();
+
+    /**
+     * Reset the state of this combiner, for example when the cursor was moved.
+     */
+    void reset();
 }
diff --git a/java/src/com/android/inputmethod/event/CombinerChain.java b/java/src/com/android/inputmethod/event/CombinerChain.java
new file mode 100644
index 0000000..61bc11b
--- /dev/null
+++ b/java/src/com/android/inputmethod/event/CombinerChain.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.event;
+
+import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
+
+import com.android.inputmethod.latin.Constants;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+/**
+ * This class implements the logic chain between receiving events and generating code points.
+ *
+ * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard,
+ * or any exotic input source.
+ * This class will orchestrate the composing chain that starts with an event as its input. Each
+ * composer will be given turns one after the other.
+ * The output is composed of two sequences of code points: the first, representing the already
+ * finished combining part, will be shown normally as the composing string, while the second is
+ * feedback on the composing state and will typically be shown with different styling such as
+ * a colored background.
+ */
+public class CombinerChain {
+    // The already combined text, as described above
+    private StringBuilder mCombinedText;
+    // The feedback on the composing state, as described above
+    private SpannableStringBuilder mStateFeedback;
+    private final ArrayList<Combiner> mCombiners;
+
+    private static final HashMap<String, Class<? extends Combiner>> IMPLEMENTED_COMBINERS =
+            new HashMap<>();
+    static {
+        IMPLEMENTED_COMBINERS.put("MyanmarReordering", MyanmarReordering.class);
+    }
+    private static final String COMBINER_SPEC_SEPARATOR = ";";
+
+    /**
+     * Create an combiner chain.
+     *
+     * The combiner chain takes events as inputs and outputs code points and combining state.
+     * For example, if the input language is Japanese, the combining chain will typically perform
+     * kana conversion. This takes a string for initial text, taken to be present before the
+     * cursor: we'll start after this.
+     *
+     * @param initialText The text that has already been combined so far.
+     * @param combinerList A list of combiners to be applied in order.
+     */
+    public CombinerChain(final String initialText, final Combiner... combinerList) {
+        mCombiners = new ArrayList<>();
+        // The dead key combiner is always active, and always first
+        mCombiners.add(new DeadKeyCombiner());
+        for (final Combiner combiner : combinerList) {
+            mCombiners.add(combiner);
+        }
+        mCombinedText = new StringBuilder(initialText);
+        mStateFeedback = new SpannableStringBuilder();
+    }
+
+    public void reset() {
+        mCombinedText.setLength(0);
+        mStateFeedback.clear();
+        for (final Combiner c : mCombiners) {
+            c.reset();
+        }
+    }
+
+    /**
+     * Pass a new event through the whole chain.
+     * @param previousEvents the list of previous events in this composition
+     * @param newEvent the new event to process
+     */
+    public void processEvent(final ArrayList<Event> previousEvents, final Event newEvent) {
+        final ArrayList<Event> modifiablePreviousEvents = new ArrayList<>(previousEvents);
+        Event event = newEvent;
+        for (final Combiner combiner : mCombiners) {
+            // A combiner can never return more than one event; it can return several
+            // code points, but they should be encapsulated within one event.
+            event = combiner.processEvent(modifiablePreviousEvents, event);
+            if (null == event) {
+                // Combiners return null if they eat the event.
+                break;
+            }
+        }
+        if (null != event) {
+            // TODO: figure out the generic way of doing this
+            if (Constants.CODE_DELETE == event.mKeyCode) {
+                final int length = mCombinedText.length();
+                if (length > 0) {
+                    final int lastCodePoint = mCombinedText.codePointBefore(length);
+                    mCombinedText.delete(length - Character.charCount(lastCodePoint), length);
+                }
+            } else {
+                final CharSequence textToCommit = event.getTextToCommit();
+                if (!TextUtils.isEmpty(textToCommit)) {
+                    mCombinedText.append(textToCommit);
+                }
+            }
+        }
+        mStateFeedback.clear();
+        for (int i = mCombiners.size() - 1; i >= 0; --i) {
+            mStateFeedback.append(mCombiners.get(i).getCombiningStateFeedback());
+        }
+    }
+
+    /**
+     * Get the char sequence that should be displayed as the composing word. It may include
+     * styling spans.
+     */
+    public CharSequence getComposingWordWithCombiningFeedback() {
+        final SpannableStringBuilder s = new SpannableStringBuilder(mCombinedText);
+        return s.append(mStateFeedback);
+    }
+
+    public static Combiner[] createCombiners(final String spec) {
+        if (TextUtils.isEmpty(spec)) {
+            return new Combiner[0];
+        }
+        final String[] combinerDescriptors = spec.split(COMBINER_SPEC_SEPARATOR);
+        final Combiner[] combiners = new Combiner[combinerDescriptors.length];
+        int i = 0;
+        for (final String combinerDescriptor : combinerDescriptors) {
+            final Class<? extends Combiner> combinerClass =
+                    IMPLEMENTED_COMBINERS.get(combinerDescriptor);
+            if (null == combinerClass) {
+                throw new RuntimeException("Unknown combiner descriptor: " + combinerDescriptor);
+            }
+            try {
+                combiners[i++] = combinerClass.newInstance();
+            } catch (InstantiationException e) {
+                throw new RuntimeException("Unable to instantiate combiner: " + combinerDescriptor,
+                        e);
+            } catch (IllegalAccessException e) {
+                throw new RuntimeException("Unable to instantiate combiner: " + combinerDescriptor,
+                        e);
+            }
+        }
+        return combiners;
+    }
+}
diff --git a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
index 52987d5..bef4d85 100644
--- a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
+++ b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
@@ -21,14 +21,17 @@
 
 import com.android.inputmethod.latin.Constants;
 
+import java.util.ArrayList;
+
 /**
  * A combiner that handles dead keys.
  */
 public class DeadKeyCombiner implements Combiner {
+    // TODO: make this a list of events instead
     final StringBuilder mDeadSequence = new StringBuilder();
 
     @Override
-    public Event combine(final Event event) {
+    public Event processEvent(final ArrayList<Event> previousEvents, final Event event) {
         if (null == event) return null; // Just in case some combiner is broken
         if (TextUtils.isEmpty(mDeadSequence)) {
             if (event.isDead()) {
@@ -43,19 +46,33 @@
             final int resultingCodePoint =
                     KeyCharacterMap.getDeadChar(deadCodePoint, event.mCodePoint);
             if (0 == resultingCodePoint) {
-                // We can't combine both characters. We need to commit the dead key as a committable
+                // We can't combine both characters. We need to commit the dead key as a separate
                 // character, and the next char too unless it's a space (because as a special case,
                 // dead key + space should result in only the dead key being committed - that's
                 // how dead keys work).
                 // If the event is a space, we should commit the dead char alone, but if it's
                 // not, we need to commit both.
-                return Event.createCommittableEvent(deadCodePoint,
-                        Constants.CODE_SPACE == event.mCodePoint ? null : event /* next */);
+                // TODO: this is not necessarily triggered by hardware key events, so it's not
+                // a good idea to masquerade as one. This should be typed as a software
+                // composite event or something.
+                return Event.createHardwareKeypressEvent(deadCodePoint, event.mKeyCode,
+                        Constants.CODE_SPACE == event.mCodePoint ? null : event /* next */,
+                        false /* isKeyRepeat */);
             } else {
                 // We could combine the characters.
-                return Event.createCommittableEvent(resultingCodePoint, null /* next */);
+                return Event.createHardwareKeypressEvent(resultingCodePoint, event.mKeyCode,
+                        null /* next */, false /* isKeyRepeat */);
             }
         }
     }
 
+    @Override
+    public void reset() {
+        mDeadSequence.setLength(0);
+    }
+
+    @Override
+    public CharSequence getCombiningStateFeedback() {
+        return mDeadSequence;
+    }
 }
diff --git a/java/src/com/android/inputmethod/event/Event.java b/java/src/com/android/inputmethod/event/Event.java
index 1f3320e..d257441 100644
--- a/java/src/com/android/inputmethod/event/Event.java
+++ b/java/src/com/android/inputmethod/event/Event.java
@@ -16,6 +16,10 @@
 
 package com.android.inputmethod.event;
 
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.utils.StringUtils;
+
 /**
  * Class representing a generic input event as handled by Latin IME.
  *
@@ -32,62 +36,234 @@
     // Should the types below be represented by separate classes instead? It would be cleaner
     // but probably a bit too much
     // An event we don't handle in Latin IME, for example pressing Ctrl on a hardware keyboard.
-    final public static int EVENT_NOT_HANDLED = 0;
-    // A character that is already final, for example pressing an alphabetic character on a
-    // hardware qwerty keyboard.
-    final public static int EVENT_COMMITTABLE = 1;
-    // A dead key, which means a character that should combine with what is coming next. Examples
-    // include the "^" character on an azerty keyboard which combines with "e" to make "ê", or
-    // AltGr+' on a dvorak international keyboard which combines with "e" to make "é". This is
-    // true regardless of the language or combining mode, and should be seen as a property of the
-    // key - a dead key followed by another key with which it can combine should be regarded as if
-    // the keyboard actually had such a key.
-    final public static int EVENT_DEAD = 2;
+    final public static int EVENT_TYPE_NOT_HANDLED = 0;
+    // A key press that is part of input, for example pressing an alphabetic character on a
+    // hardware qwerty keyboard. It may be part of a sequence that will be re-interpreted later
+    // through combination.
+    final public static int EVENT_TYPE_INPUT_KEYPRESS = 1;
     // A toggle event is triggered by a key that affects the previous character. An example would
     // be a numeric key on a 10-key keyboard, which would toggle between 1 - a - b - c with
     // repeated presses.
-    final public static int EVENT_TOGGLE = 3;
+    final public static int EVENT_TYPE_TOGGLE = 2;
     // A mode event instructs the combiner to change modes. The canonical example would be the
     // hankaku/zenkaku key on a Japanese keyboard, or even the caps lock key on a qwerty keyboard
     // if handled at the combiner level.
-    final public static int EVENT_MODE_KEY = 4;
+    final public static int EVENT_TYPE_MODE_KEY = 3;
+    // An event corresponding to a gesture.
+    final public static int EVENT_TYPE_GESTURE = 4;
+    // An event corresponding to the manual pick of a suggestion.
+    final public static int EVENT_TYPE_SUGGESTION_PICKED = 5;
+    // An event corresponding to a string generated by some software process.
+    final public static int EVENT_TYPE_SOFTWARE_GENERATED_STRING = 6;
 
-    final private static int NOT_A_CODE_POINT = 0;
+    // 0 is a valid code point, so we use -1 here.
+    final public static int NOT_A_CODE_POINT = -1;
+    // -1 is a valid key code, so we use 0 here.
+    final public static int NOT_A_KEY_CODE = 0;
 
-    final private int mType; // The type of event - one of the constants above
+    final private static int FLAG_NONE = 0;
+    // This event is a dead character, usually input by a dead key. Examples include dead-acute
+    // or dead-abovering.
+    final private static int FLAG_DEAD = 0x1;
+    // This event is coming from a key repeat, software or hardware.
+    final private static int FLAG_REPEAT = 0x2;
+
+    final private int mEventType; // The type of event - one of the constants above
     // The code point associated with the event, if relevant. This is a unicode code point, and
     // has nothing to do with other representations of the key. It is only relevant if this event
-    // is the right type: COMMITTABLE or DEAD or TOGGLE, but for a mode key like hankaku/zenkaku or
-    // ctrl, there is no code point associated so this should be NOT_A_CODE_POINT to avoid
-    // unintentional use of its value when it's not relevant.
+    // is of KEYPRESS type, but for a mode key like hankaku/zenkaku or ctrl, there is no code point
+    // associated so this should be NOT_A_CODE_POINT to avoid unintentional use of its value when
+    // it's not relevant.
     final public int mCodePoint;
+
+    // If applicable, this contains the string that should be input.
+    final public CharSequence mText;
+
+    // The key code associated with the event, if relevant. This is relevant whenever this event
+    // has been triggered by a key press, but not for a gesture for example. This has conceptually
+    // no link to the code point, although keys that enter a straight code point may often set
+    // this to be equal to mCodePoint for convenience. If this is not a key, this must contain
+    // NOT_A_KEY_CODE.
+    final public int mKeyCode;
+
+    // Coordinates of the touch event, if relevant. If useful, we may want to replace this with
+    // a MotionEvent or something in the future. This is only relevant when the keypress is from
+    // a software keyboard obviously, unless there are touch-sensitive hardware keyboards in the
+    // future or some other awesome sauce.
+    final public int mX;
+    final public int mY;
+
+    // Some flags that can't go into the key code. It's a bit field of FLAG_*
+    final private int mFlags;
+
+    // If this is of type EVENT_TYPE_SUGGESTION_PICKED, this must not be null (and must be null in
+    // other cases).
+    final public SuggestedWordInfo mSuggestedWordInfo;
+
     // The next event, if any. Null if there is no next event yet.
     final public Event mNextEvent;
 
     // This method is private - to create a new event, use one of the create* utility methods.
-    private Event(final int type, final int codePoint, final Event next) {
-        mType = type;
+    private Event(final int type, final CharSequence text, final int codePoint, final int keyCode,
+            final int x, final int y, final SuggestedWordInfo suggestedWordInfo, final int flags,
+            final Event next) {
+        mEventType = type;
+        mText = text;
         mCodePoint = codePoint;
+        mKeyCode = keyCode;
+        mX = x;
+        mY = y;
+        mSuggestedWordInfo = suggestedWordInfo;
+        mFlags = flags;
         mNextEvent = next;
+        // Sanity checks
+        // mSuggestedWordInfo is non-null if and only if the type is SUGGESTION_PICKED
+        if (EVENT_TYPE_SUGGESTION_PICKED == mEventType) {
+            if (null == mSuggestedWordInfo) {
+                throw new RuntimeException("Wrong event: SUGGESTION_PICKED event must have a "
+                        + "non-null SuggestedWordInfo");
+            }
+        } else {
+            if (null != mSuggestedWordInfo) {
+                throw new RuntimeException("Wrong event: only SUGGESTION_PICKED events may have " +
+                        "a non-null SuggestedWordInfo");
+            }
+        }
     }
 
-    public static Event createDeadEvent(final int codePoint, final Event next) {
-        return new Event(EVENT_DEAD, codePoint, next);
+    public static Event createSoftwareKeypressEvent(final int codePoint, final int keyCode,
+            final int x, final int y, final boolean isKeyRepeat) {
+        return new Event(EVENT_TYPE_INPUT_KEYPRESS, null /* text */, codePoint, keyCode, x, y,
+                null /* suggestedWordInfo */, isKeyRepeat ? FLAG_REPEAT : FLAG_NONE, null);
     }
 
-    public static Event createCommittableEvent(final int codePoint, final Event next) {
-        return new Event(EVENT_COMMITTABLE, codePoint, next);
+    public static Event createHardwareKeypressEvent(final int codePoint, final int keyCode,
+            final Event next, final boolean isKeyRepeat) {
+        return new Event(EVENT_TYPE_INPUT_KEYPRESS, null /* text */, codePoint, keyCode,
+                Constants.EXTERNAL_KEYBOARD_COORDINATE, Constants.EXTERNAL_KEYBOARD_COORDINATE,
+                null /* suggestedWordInfo */, isKeyRepeat ? FLAG_REPEAT : FLAG_NONE, next);
+    }
+
+    // This creates an input event for a dead character. @see {@link #FLAG_DEAD}
+    public static Event createDeadEvent(final int codePoint, final int keyCode, final Event next) {
+        // TODO: add an argument or something if we ever create a software layout with dead keys.
+        return new Event(EVENT_TYPE_INPUT_KEYPRESS, null /* text */, codePoint, keyCode,
+                Constants.EXTERNAL_KEYBOARD_COORDINATE, Constants.EXTERNAL_KEYBOARD_COORDINATE,
+                null /* suggestedWordInfo */, FLAG_DEAD, next);
+    }
+
+    /**
+     * Create an input event with nothing but a code point. This is the most basic possible input
+     * event; it contains no information on many things the IME requires to function correctly,
+     * so avoid using it unless really nothing is known about this input.
+     * @param codePoint the code point.
+     * @return an event for this code point.
+     */
+    public static Event createEventForCodePointFromUnknownSource(final int codePoint) {
+        // TODO: should we have a different type of event for this? After all, it's not a key press.
+        return new Event(EVENT_TYPE_INPUT_KEYPRESS, null /* text */, codePoint, NOT_A_KEY_CODE,
+                Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                null /* suggestedWordInfo */, FLAG_NONE, null /* next */);
+    }
+
+    /**
+     * Creates an input event with a code point and x, y coordinates. This is typically used when
+     * resuming a previously-typed word, when the coordinates are still known.
+     * @param codePoint the code point to input.
+     * @param x the X coordinate.
+     * @param y the Y coordinate.
+     * @return an event for this code point and coordinates.
+     */
+    public static Event createEventForCodePointFromAlreadyTypedText(final int codePoint,
+            final int x, final int y) {
+        // TODO: should we have a different type of event for this? After all, it's not a key press.
+        return new Event(EVENT_TYPE_INPUT_KEYPRESS, null /* text */, codePoint, NOT_A_KEY_CODE,
+                x, y, null /* suggestedWordInfo */, FLAG_NONE, null /* next */);
+    }
+
+    /**
+     * Creates an input event representing the manual pick of a suggestion.
+     * @return an event for this suggestion pick.
+     */
+    public static Event createSuggestionPickedEvent(final SuggestedWordInfo suggestedWordInfo) {
+        return new Event(EVENT_TYPE_SUGGESTION_PICKED, suggestedWordInfo.mWord,
+                NOT_A_CODE_POINT, NOT_A_KEY_CODE,
+                Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE,
+                suggestedWordInfo, FLAG_NONE, null /* next */);
+    }
+
+    /**
+     * Creates an input event with a CharSequence. This is used by some software processes whose
+     * output is a string, possibly with styling. Examples include press on a multi-character key,
+     * or combination that outputs a string.
+     * @param text the CharSequence associated with this event.
+     * @param keyCode the key code, or NOT_A_KEYCODE if not applicable.
+     * @return an event for this text.
+     */
+    public static Event createSoftwareTextEvent(final CharSequence text, final int keyCode) {
+        return new Event(EVENT_TYPE_SOFTWARE_GENERATED_STRING, text, NOT_A_CODE_POINT, keyCode,
+                Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                null /* suggestedWordInfo */, FLAG_NONE, null /* next */);
+    }
+
+    /**
+     * Creates an input event representing the manual pick of a punctuation suggestion.
+     * @return an event for this suggestion pick.
+     */
+    public static Event createPunctuationSuggestionPickedEvent(
+            final SuggestedWordInfo suggestedWordInfo) {
+        final int primaryCode = suggestedWordInfo.mWord.charAt(0);
+        return new Event(EVENT_TYPE_SUGGESTION_PICKED, suggestedWordInfo.mWord, primaryCode,
+                NOT_A_KEY_CODE, Constants.SUGGESTION_STRIP_COORDINATE,
+                Constants.SUGGESTION_STRIP_COORDINATE, suggestedWordInfo, FLAG_NONE,
+                null /* next */);
     }
 
     public static Event createNotHandledEvent() {
-        return new Event(EVENT_NOT_HANDLED, NOT_A_CODE_POINT, null);
+        return new Event(EVENT_TYPE_NOT_HANDLED, null /* text */, NOT_A_CODE_POINT, NOT_A_KEY_CODE,
+                Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                null /* suggestedWordInfo */, FLAG_NONE, null);
     }
 
-    public boolean isCommittable() {
-        return EVENT_COMMITTABLE == mType;
+    // Returns whether this is a function key like backspace, ctrl, settings... as opposed to keys
+    // that result in input like letters or space.
+    public boolean isFunctionalKeyEvent() {
+        // This logic may need to be refined in the future
+        return NOT_A_CODE_POINT == mCodePoint;
     }
 
+    // Returns whether this event is for a dead character. @see {@link #FLAG_DEAD}
     public boolean isDead() {
-        return EVENT_DEAD == mType;
+        return 0 != (FLAG_DEAD & mFlags);
+    }
+
+    public boolean isKeyRepeat() {
+        return 0 != (FLAG_REPEAT & mFlags);
+    }
+
+    // Returns whether this is a fake key press from the suggestion strip. This happens with
+    // punctuation signs selected from the suggestion strip.
+    public boolean isSuggestionStripPress() {
+        return EVENT_TYPE_SUGGESTION_PICKED == mEventType;
+    }
+
+    public boolean isHandled() {
+        return EVENT_TYPE_NOT_HANDLED != mEventType;
+    }
+
+    public CharSequence getTextToCommit() {
+        switch (mEventType) {
+        case EVENT_TYPE_MODE_KEY:
+        case EVENT_TYPE_NOT_HANDLED:
+        case EVENT_TYPE_TOGGLE:
+            return "";
+        case EVENT_TYPE_INPUT_KEYPRESS:
+            return StringUtils.newSingleCodePointString(mCodePoint);
+        case EVENT_TYPE_GESTURE:
+        case EVENT_TYPE_SOFTWARE_GENERATED_STRING:
+        case EVENT_TYPE_SUGGESTION_PICKED:
+            return mText;
+        }
+        throw new RuntimeException("Unknown event type: " + mEventType);
     }
 }
diff --git a/java/src/com/android/inputmethod/event/EventDecoderSpec.java b/java/src/com/android/inputmethod/event/EventDecoderSpec.java
deleted file mode 100644
index 303b4b4..0000000
--- a/java/src/com/android/inputmethod/event/EventDecoderSpec.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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.event;
-
-/**
- * Class describing a decoder chain. This will depend on the language and the input medium (soft
- * or hard keyboard for example).
- */
-public class EventDecoderSpec {
-    public EventDecoderSpec() {
-    }
-}
diff --git a/java/src/com/android/inputmethod/event/EventInterpreter.java b/java/src/com/android/inputmethod/event/EventInterpreter.java
deleted file mode 100644
index 726b920..0000000
--- a/java/src/com/android/inputmethod/event/EventInterpreter.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.event;
-
-import android.util.SparseArray;
-import android.view.KeyEvent;
-
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.LatinIME;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.util.ArrayList;
-
-/**
- * This class implements the logic between receiving events and generating code points.
- *
- * Event sources are multiple. It may be a hardware keyboard, a D-PAD, a software keyboard,
- * or any exotic input source.
- * This class will orchestrate the decoding chain that starts with an event and ends up with
- * a stream of code points + decoding state.
- */
-public class EventInterpreter {
-    // TODO: Implement an object pool for events, as we'll create a lot of them
-    // TODO: Create a combiner
-    // TODO: Create an object type to represent input material + visual feedback + decoding state
-    // TODO: Create an interface to call back to Latin IME through the above object
-
-    final EventDecoderSpec mDecoderSpec;
-    final SparseArray<HardwareEventDecoder> mHardwareEventDecoders;
-    final SoftwareEventDecoder mSoftwareEventDecoder;
-    final LatinIME mLatinIme;
-    final ArrayList<Combiner> mCombiners;
-
-    /**
-     * Create a default interpreter.
-     *
-     * This creates a default interpreter that does nothing. A default interpreter should normally
-     * only be used for fallback purposes, when we really don't know what we want to do with input.
-     *
-     * @param latinIme a reference to the ime.
-     */
-    public EventInterpreter(final LatinIME latinIme) {
-        this(null, latinIme);
-    }
-
-    /**
-     * Create an event interpreter according to a specification.
-     *
-     * The specification contains information about what to do with events. Typically, it will
-     * contain information about the type of keyboards - for example, if hardware keyboard(s) is/are
-     * attached, their type will be included here so that the decoder knows what to do with each
-     * keypress (a 10-key keyboard is not handled like a qwerty-ish keyboard).
-     * It also contains information for combining characters. For example, if the input language
-     * is Japanese, the specification will typically request kana conversion.
-     * Also note that the specification can be null. This means that we need to create a default
-     * interpreter that does no specific combining, and assumes the most common cases.
-     *
-     * @param specification the specification for event interpretation. null for default.
-     * @param latinIme a reference to the ime.
-     */
-    public EventInterpreter(final EventDecoderSpec specification, final LatinIME latinIme) {
-        mDecoderSpec = null != specification ? specification : new EventDecoderSpec();
-        // For both, we expect to have only one decoder in almost all cases, hence the default
-        // capacity of 1.
-        mHardwareEventDecoders = new SparseArray<HardwareEventDecoder>(1);
-        mSoftwareEventDecoder = new SoftwareKeyboardEventDecoder();
-        mCombiners = CollectionUtils.newArrayList();
-        mCombiners.add(new DeadKeyCombiner());
-        mLatinIme = latinIme;
-    }
-
-    // Helper method to decode a hardware key event into a generic event, and execute any
-    // necessary action.
-    public boolean onHardwareKeyEvent(final KeyEvent hardwareKeyEvent) {
-        final Event decodedEvent = getHardwareKeyEventDecoder(hardwareKeyEvent.getDeviceId())
-                .decodeHardwareKey(hardwareKeyEvent);
-        return onEvent(decodedEvent);
-    }
-
-    public boolean onSoftwareEvent() {
-        final Event decodedEvent = getSoftwareEventDecoder().decodeSoftwareEvent();
-        return onEvent(decodedEvent);
-    }
-
-    private HardwareEventDecoder getHardwareKeyEventDecoder(final int deviceId) {
-        final HardwareEventDecoder decoder = mHardwareEventDecoders.get(deviceId);
-        if (null != decoder) return decoder;
-        // TODO: create the decoder according to the specification
-        final HardwareEventDecoder newDecoder = new HardwareKeyboardEventDecoder(deviceId);
-        mHardwareEventDecoders.put(deviceId, newDecoder);
-        return newDecoder;
-    }
-
-    private SoftwareEventDecoder getSoftwareEventDecoder() {
-        // Within the context of Latin IME, since we never present several software interfaces
-        // at the time, we should never need multiple software event decoders at a time.
-        return mSoftwareEventDecoder;
-    }
-
-    private boolean onEvent(final Event event) {
-        Event currentlyProcessingEvent = event;
-        boolean processed = false;
-        for (int i = 0; i < mCombiners.size(); ++i) {
-            currentlyProcessingEvent = mCombiners.get(i).combine(event);
-        }
-        while (null != currentlyProcessingEvent) {
-            if (currentlyProcessingEvent.isCommittable()) {
-                mLatinIme.onCodeInput(currentlyProcessingEvent.mCodePoint,
-                        Constants.EXTERNAL_KEYBOARD_COORDINATE,
-                        Constants.EXTERNAL_KEYBOARD_COORDINATE);
-                processed = true;
-            } else if (event.isDead()) {
-                processed = true;
-            }
-            currentlyProcessingEvent = currentlyProcessingEvent.mNextEvent;
-        }
-        return processed;
-    }
-}
diff --git a/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java b/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
index 720d074..c61f45e 100644
--- a/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
+++ b/java/src/com/android/inputmethod/event/HardwareKeyboardEventDecoder.java
@@ -46,28 +46,36 @@
         // do not necessarily map to a unicode character. This represents a physical key, like
         // the key for 'A' or Space, but also Backspace or Ctrl or Caps Lock.
         final int keyCode = keyEvent.getKeyCode();
+        final boolean isKeyRepeat = (0 != keyEvent.getRepeatCount());
         if (KeyEvent.KEYCODE_DEL == keyCode) {
-            return Event.createCommittableEvent(Constants.CODE_DELETE, null /* next */);
+            return Event.createHardwareKeypressEvent(Event.NOT_A_CODE_POINT, Constants.CODE_DELETE,
+                    null /* next */, isKeyRepeat);
         }
         if (keyEvent.isPrintingKey() || KeyEvent.KEYCODE_SPACE == keyCode
                 || KeyEvent.KEYCODE_ENTER == keyCode) {
             if (0 != (codePointAndFlags & KeyCharacterMap.COMBINING_ACCENT)) {
                 // A dead key.
                 return Event.createDeadEvent(
-                        codePointAndFlags & KeyCharacterMap.COMBINING_ACCENT_MASK, null /* next */);
+                        codePointAndFlags & KeyCharacterMap.COMBINING_ACCENT_MASK, keyCode,
+                        null /* next */);
             }
             if (KeyEvent.KEYCODE_ENTER == keyCode) {
                 // The Enter key. If the Shift key is not being pressed, this should send a
                 // CODE_ENTER to trigger the action if any, or a carriage return otherwise. If the
                 // Shift key is being pressed, this should send a CODE_SHIFT_ENTER and let
                 // Latin IME decide what to do with it.
-                return Event.createCommittableEvent(keyEvent.isShiftPressed()
-                        ? Constants.CODE_SHIFT_ENTER : Constants.CODE_ENTER,
-                        null /* next */);
+                if (keyEvent.isShiftPressed()) {
+                    return Event.createHardwareKeypressEvent(Event.NOT_A_CODE_POINT,
+                            Constants.CODE_SHIFT_ENTER, null /* next */, isKeyRepeat);
+                } else {
+                    return Event.createHardwareKeypressEvent(Constants.CODE_ENTER, keyCode,
+                            null /* next */, isKeyRepeat);
+                }
             }
-            // If not Enter, then we have a committable character. This should be committed
-            // right away, taking into account the current state.
-            return Event.createCommittableEvent(codePointAndFlags, null /* next */);
+            // If not Enter, then this is just a regular keypress event for a normal character
+            // that can be committed right away, taking into account the current state.
+            return Event.createHardwareKeypressEvent(codePointAndFlags, keyCode, null /* next */,
+                    isKeyRepeat);
         }
         return Event.createNotHandledEvent();
     }
diff --git a/java/src/com/android/inputmethod/event/InputTransaction.java b/java/src/com/android/inputmethod/event/InputTransaction.java
new file mode 100644
index 0000000..cdff265
--- /dev/null
+++ b/java/src/com/android/inputmethod/event/InputTransaction.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.event;
+
+import com.android.inputmethod.latin.settings.SettingsValues;
+
+/**
+ * An object encapsulating a single transaction for input.
+ */
+public class InputTransaction {
+    // UPDATE_LATER is stronger than UPDATE_NOW. The reason for this is, if we have to update later,
+    // it's because something will change that we can't evaluate now, which means that even if we
+    // re-evaluate now we'll have to do it again later. The only case where that wouldn't apply
+    // would be if we needed to update now to find out the new state right away, but then we
+    // can't do it with this deferred mechanism anyway.
+    public static final int SHIFT_NO_UPDATE = 0;
+    public static final int SHIFT_UPDATE_NOW = 1;
+    public static final int SHIFT_UPDATE_LATER = 2;
+
+    // Initial conditions
+    public final SettingsValues mSettingsValues;
+    public final Event mEvent;
+    public final long mTimestamp;
+    public final int mSpaceState;
+    public final int mShiftState;
+
+    // Outputs
+    private int mRequiredShiftUpdate = SHIFT_NO_UPDATE;
+    private boolean mRequiresUpdateSuggestions = false;
+    private boolean mDidAffectContents = false;
+
+    public InputTransaction(final SettingsValues settingsValues, final Event event,
+            final long timestamp, final int spaceState, final int shiftState) {
+        mSettingsValues = settingsValues;
+        mEvent = event;
+        mTimestamp = timestamp;
+        mSpaceState = spaceState;
+        mShiftState = shiftState;
+    }
+
+    /**
+     * Indicate that this transaction requires some type of shift update.
+     * @param updateType What type of shift update this requires.
+     */
+    public void requireShiftUpdate(final int updateType) {
+        mRequiredShiftUpdate = Math.max(mRequiredShiftUpdate, updateType);
+    }
+
+    /**
+     * Gets what type of shift update this transaction requires.
+     * @return The shift update type.
+     */
+    public int getRequiredShiftUpdate() {
+        return mRequiredShiftUpdate;
+    }
+
+    /**
+     * Indicate that this transaction requires updating the suggestions.
+     */
+    public void setRequiresUpdateSuggestions() {
+        mRequiresUpdateSuggestions = true;
+    }
+
+    /**
+     * Find out whether this transaction requires updating the suggestions.
+     * @return Whether this transaction requires updating the suggestions.
+     */
+    public boolean requiresUpdateSuggestions() {
+        return mRequiresUpdateSuggestions;
+    }
+
+    /**
+     * Indicate that this transaction affected the contents of the editor.
+     */
+    public void setDidAffectContents() {
+        mDidAffectContents = true;
+    }
+
+    /**
+     * Find out whether this transaction affected contents of the editor.
+     * @return Whether this transaction affected contents of the editor.
+     */
+    public boolean didAffectContents() {
+        return mDidAffectContents;
+    }
+}
diff --git a/java/src/com/android/inputmethod/event/MyanmarReordering.java b/java/src/com/android/inputmethod/event/MyanmarReordering.java
new file mode 100644
index 0000000..3291993
--- /dev/null
+++ b/java/src/com/android/inputmethod/event/MyanmarReordering.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.event;
+
+import com.android.inputmethod.latin.Constants;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * A combiner that reorders input for Myanmar.
+ */
+public class MyanmarReordering implements Combiner {
+    // U+1031 MYANMAR VOWEL SIGN E
+    private final static int VOWEL_E = 0x1031; // Code point for vowel E that we need to reorder
+    // U+200C ZERO WIDTH NON-JOINER
+    // U+200B ZERO WIDTH SPACE
+    private final static int ZERO_WIDTH_NON_JOINER = 0x200B; // should be 0x200C
+
+    private final ArrayList<Event> mCurrentEvents = new ArrayList<>();
+
+    // List of consonants :
+    // U+1000 MYANMAR LETTER KA
+    // U+1001 MYANMAR LETTER KHA
+    // U+1002 MYANMAR LETTER GA
+    // U+1003 MYANMAR LETTER GHA
+    // U+1004 MYANMAR LETTER NGA
+    // U+1005 MYANMAR LETTER CA
+    // U+1006 MYANMAR LETTER CHA
+    // U+1007 MYANMAR LETTER JA
+    // U+1008 MYANMAR LETTER JHA
+    // U+1009 MYANMAR LETTER NYA
+    // U+100A MYANMAR LETTER NNYA
+    // U+100B MYANMAR LETTER TTA
+    // U+100C MYANMAR LETTER TTHA
+    // U+100D MYANMAR LETTER DDA
+    // U+100E MYANMAR LETTER DDHA
+    // U+100F MYANMAR LETTER NNA
+    // U+1010 MYANMAR LETTER TA
+    // U+1011 MYANMAR LETTER THA
+    // U+1012 MYANMAR LETTER DA
+    // U+1013 MYANMAR LETTER DHA
+    // U+1014 MYANMAR LETTER NA
+    // U+1015 MYANMAR LETTER PA
+    // U+1016 MYANMAR LETTER PHA
+    // U+1017 MYANMAR LETTER BA
+    // U+1018 MYANMAR LETTER BHA
+    // U+1019 MYANMAR LETTER MA
+    // U+101A MYANMAR LETTER YA
+    // U+101B MYANMAR LETTER RA
+    // U+101C MYANMAR LETTER LA
+    // U+101D MYANMAR LETTER WA
+    // U+101E MYANMAR LETTER SA
+    // U+101F MYANMAR LETTER HA
+    // U+1020 MYANMAR LETTER LLA
+    // U+103F MYANMAR LETTER GREAT SA
+    private static boolean isConsonant(final int codePoint) {
+        return (codePoint >= 0x1000 && codePoint <= 0x1020) || 0x103F == codePoint;
+    }
+
+    // List of medials :
+    // U+103B MYANMAR CONSONANT SIGN MEDIAL YA
+    // U+103C MYANMAR CONSONANT SIGN MEDIAL RA
+    // U+103D MYANMAR CONSONANT SIGN MEDIAL WA
+    // U+103E MYANMAR CONSONANT SIGN MEDIAL HA
+    // U+105E MYANMAR CONSONANT SIGN MON MEDIAL NA
+    // U+105F MYANMAR CONSONANT SIGN MON MEDIAL MA
+    // U+1060 MYANMAR CONSONANT SIGN MON MEDIAL LA
+    // U+1082 MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+    private static int[] MEDIAL_LIST = { 0x103B, 0x103C, 0x103D, 0x103E,
+            0x105E, 0x105F, 0x1060, 0x1082};
+    private static boolean isMedial(final int codePoint) {
+        return Arrays.binarySearch(MEDIAL_LIST, codePoint) >= 0;
+    }
+
+    private static boolean isConsonantOrMedial(final int codePoint) {
+        return isConsonant(codePoint) || isMedial(codePoint);
+    }
+
+    private Event getLastEvent() {
+        final int size = mCurrentEvents.size();
+        if (size <= 0) {
+            return null;
+        }
+        return mCurrentEvents.get(size - 1);
+    }
+
+    private CharSequence getCharSequence() {
+        final StringBuilder s = new StringBuilder();
+        for (final Event e : mCurrentEvents) {
+            s.appendCodePoint(e.mCodePoint);
+        }
+        return s;
+    }
+
+    /**
+     * Clears the currently combining stream of events and returns the resulting software text
+     * event corresponding to the stream. Optionally adds a new event to the cleared stream.
+     * @param newEvent the new event to add to the stream. null if none.
+     * @return the resulting software text event. Null if none.
+     */
+    private Event clearAndGetResultingEvent(final Event newEvent) {
+        final CharSequence combinedText;
+        if (mCurrentEvents.size() > 0) {
+            combinedText = getCharSequence();
+            mCurrentEvents.clear();
+        } else {
+            combinedText = null;
+        }
+        if (null != newEvent) {
+            mCurrentEvents.add(newEvent);
+        }
+        return null == combinedText ? null
+                : Event.createSoftwareTextEvent(combinedText, Event.NOT_A_KEY_CODE);
+    }
+
+    @Override
+    public Event processEvent(ArrayList<Event> previousEvents, Event newEvent) {
+        final int codePoint = newEvent.mCodePoint;
+        if (VOWEL_E == codePoint) {
+            final Event lastEvent = getLastEvent();
+            if (null == lastEvent) {
+                mCurrentEvents.add(newEvent);
+                return null;
+            } else if (isConsonantOrMedial(lastEvent.mCodePoint)) {
+                final Event resultingEvent = clearAndGetResultingEvent(null);
+                mCurrentEvents.add(Event.createSoftwareKeypressEvent(ZERO_WIDTH_NON_JOINER,
+                        Event.NOT_A_KEY_CODE,
+                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                        false /* isKeyRepeat */));
+                mCurrentEvents.add(newEvent);
+                return resultingEvent;
+            } else { // VOWEL_E == lastCodePoint. But if that was anything else this is correct too.
+                return clearAndGetResultingEvent(newEvent);
+            }
+        } if (isConsonant(codePoint)) {
+            final Event lastEvent = getLastEvent();
+            if (null == lastEvent) {
+                mCurrentEvents.add(newEvent);
+                return null;
+            } else if (VOWEL_E == lastEvent.mCodePoint) {
+                final int eventSize = mCurrentEvents.size();
+                if (eventSize >= 2
+                        && mCurrentEvents.get(eventSize - 2).mCodePoint == ZERO_WIDTH_NON_JOINER) {
+                    // We have a ZWJN before a vowel E. We need to remove the ZWNJ and then
+                    // reorder the vowel with respect to the consonant.
+                    mCurrentEvents.remove(eventSize - 1);
+                    mCurrentEvents.remove(eventSize - 2);
+                    mCurrentEvents.add(newEvent);
+                    mCurrentEvents.add(lastEvent);
+                    return null;
+                }
+                // If there is already a consonant, then we are starting a new syllable.
+                for (int i = eventSize - 2; i >= 0; --i) {
+                    if (isConsonant(mCurrentEvents.get(i).mCodePoint)) {
+                        return clearAndGetResultingEvent(newEvent);
+                    }
+                }
+                // If we come here, we didn't have a consonant so we reorder
+                mCurrentEvents.remove(eventSize - 1);
+                mCurrentEvents.add(newEvent);
+                mCurrentEvents.add(lastEvent);
+                return null;
+            } else { // lastCodePoint is a consonant/medial. But if it's something else it's fine
+                return clearAndGetResultingEvent(newEvent);
+            }
+        } else if (isMedial(codePoint)) {
+            final Event lastEvent = getLastEvent();
+            if (null == lastEvent) {
+                mCurrentEvents.add(newEvent);
+                return null;
+            } else if (VOWEL_E == lastEvent.mCodePoint) {
+                final int eventSize = mCurrentEvents.size();
+                // If there is already a consonant, then we are in the middle of a syllable, and we
+                // need to reorder.
+                boolean hasConsonant = false;
+                for (int i = eventSize - 2; i >= 0; --i) {
+                    if (isConsonant(mCurrentEvents.get(i).mCodePoint)) {
+                        hasConsonant = true;
+                        break;
+                    }
+                }
+                if (hasConsonant) {
+                    mCurrentEvents.remove(eventSize - 1);
+                    mCurrentEvents.add(newEvent);
+                    mCurrentEvents.add(lastEvent);
+                    return null;
+                }
+                // Otherwise, we just commit everything.
+                return clearAndGetResultingEvent(null);
+            } else { // lastCodePoint is a consonant/medial. But if it's something else it's fine
+                return clearAndGetResultingEvent(newEvent);
+            }
+        } else if (Constants.CODE_DELETE == newEvent.mKeyCode) {
+            final Event lastEvent = getLastEvent();
+            final int eventSize = mCurrentEvents.size();
+            if (null != lastEvent) {
+                if (VOWEL_E == lastEvent.mCodePoint) {
+                    // We have a VOWEL_E at the end. There are four cases.
+                    // - The vowel is the only code point in the buffer. Remove it.
+                    // - The vowel is preceded by a ZWNJ. Remove both vowel E and ZWNJ.
+                    // - The vowel is preceded by a consonant/medial, remove the consonant/medial.
+                    // - In all other cases, it's strange, so just remove the last code point.
+                    if (eventSize <= 1) {
+                        mCurrentEvents.clear();
+                    } else { // eventSize >= 2
+                        final int previousCodePoint = mCurrentEvents.get(eventSize - 2).mCodePoint;
+                        if (previousCodePoint == ZERO_WIDTH_NON_JOINER) {
+                            mCurrentEvents.remove(eventSize - 1);
+                            mCurrentEvents.remove(eventSize - 2);
+                        } else if (isConsonantOrMedial(previousCodePoint)) {
+                            mCurrentEvents.remove(eventSize - 2);
+                        } else {
+                            mCurrentEvents.remove(eventSize - 1);
+                        }
+                    }
+                    return null;
+                } else if (eventSize > 0) {
+                    mCurrentEvents.remove(eventSize - 1);
+                    return null;
+                }
+            }
+        }
+        // This character is not part of the combining scheme, so we should reset everything.
+        if (mCurrentEvents.size() > 0) {
+            // If we have events in flight, then add the new event and return the resulting event.
+            mCurrentEvents.add(newEvent);
+            return clearAndGetResultingEvent(null);
+        } else {
+            // If we don't have any events in flight, then just pass this one through.
+            return newEvent;
+        }
+    }
+
+    @Override
+    public CharSequence getCombiningStateFeedback() {
+        return getCharSequence();
+    }
+
+    @Override
+    public void reset() {
+        mCurrentEvents.clear();
+    }
+}
diff --git a/java/src/com/android/inputmethod/event/SoftwareEventDecoder.java b/java/src/com/android/inputmethod/event/SoftwareEventDecoder.java
deleted file mode 100644
index d81ee0b..0000000
--- a/java/src/com/android/inputmethod/event/SoftwareEventDecoder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.event;
-
-/**
- * An event decoder for events out of a software keyboard.
- *
- * This defines the interface for an event decoder that supports events out of a software keyboard.
- * This differs significantly from hardware keyboard event decoders in several respects. First,
- * a software keyboard does not have a scancode/layout system; the keypresses that insert
- * characters output unicode characters directly.
- */
-public interface SoftwareEventDecoder extends EventDecoder {
-    public Event decodeSoftwareEvent();
-}
diff --git a/java/src/com/android/inputmethod/event/SoftwareKeyboardEventDecoder.java b/java/src/com/android/inputmethod/event/SoftwareKeyboardEventDecoder.java
deleted file mode 100644
index de91567..0000000
--- a/java/src/com/android/inputmethod/event/SoftwareKeyboardEventDecoder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.event;
-
-/**
- * A decoder for events from software keyboard, like the ones displayed by Latin IME.
- */
-public class SoftwareKeyboardEventDecoder implements SoftwareEventDecoder {
-    @Override
-    public Event decodeSoftwareEvent() {
-        return null;
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java b/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java
deleted file mode 100644
index e23131a..0000000
--- a/java/src/com/android/inputmethod/keyboard/EmojiCategoryPageIndicatorView.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard;
-
-import com.android.inputmethod.latin.R;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-import android.widget.LinearLayout;
-
-public class EmojiCategoryPageIndicatorView extends LinearLayout {
-    private static final float BOTTOM_MARGIN_RATIO = 0.66f;
-    private final Paint mPaint = new Paint();
-    private int mCategoryPageSize = 0;
-    private int mCurrentCategoryPageId = 0;
-    private float mOffset = 0.0f;
-
-    public EmojiCategoryPageIndicatorView(Context context) {
-        this(context, null /* attrs */);
-    }
-
-    public EmojiCategoryPageIndicatorView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        mPaint.setColor(context.getResources().getColor(
-                R.color.emoji_category_page_id_view_foreground));
-    }
-
-    public void setCategoryPageId(int size, int id, float offset) {
-        mCategoryPageSize = size;
-        mCurrentCategoryPageId = id;
-        mOffset = offset;
-        invalidate();
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        if (mCategoryPageSize <= 1) {
-            // If the category is not set yet or contains only one category,
-            // just clear and return.
-            canvas.drawColor(0);
-            return;
-        }
-        final float height = getHeight();
-        final float width = getWidth();
-        final float unitWidth = width / mCategoryPageSize;
-        final float left = unitWidth * mCurrentCategoryPageId + mOffset * unitWidth;
-        final float top = 0.0f;
-        final float right = left + unitWidth;
-        final float bottom = height * BOTTOM_MARGIN_RATIO;
-        canvas.drawRect(left, top, right, bottom, mPaint);
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java
deleted file mode 100644
index 967448c..0000000
--- a/java/src/com/android/inputmethod/keyboard/EmojiLayoutParams.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard;
-
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.ResourceUtils;
-
-import android.content.res.Resources;
-import android.support.v4.view.ViewPager;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-
-public class EmojiLayoutParams {
-    private static final int DEFAULT_KEYBOARD_ROWS = 4;
-
-    public final int mEmojiPagerHeight;
-    private final int mEmojiPagerBottomMargin;
-    public final int mEmojiKeyboardHeight;
-    private final int mEmojiCategoryPageIdViewHeight;
-    public final int mEmojiActionBarHeight;
-    public final int mKeyVerticalGap;
-    private final int mKeyHorizontalGap;
-    private final int mBottomPadding;
-    private final int mTopPadding;
-
-    public EmojiLayoutParams(Resources res) {
-        final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
-        final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
-        mKeyVerticalGap = (int) res.getFraction(R.fraction.key_bottom_gap_holo,
-                (int) defaultKeyboardHeight, (int) defaultKeyboardHeight);
-        mBottomPadding = (int) res.getFraction(R.fraction.keyboard_bottom_padding_holo,
-                (int) defaultKeyboardHeight, (int) defaultKeyboardHeight);
-        mTopPadding = (int) res.getFraction(R.fraction.keyboard_top_padding_holo,
-                (int) defaultKeyboardHeight, (int) defaultKeyboardHeight);
-        mKeyHorizontalGap = (int) (res.getFraction(R.fraction.key_horizontal_gap_holo,
-                defaultKeyboardWidth, defaultKeyboardWidth));
-        mEmojiCategoryPageIdViewHeight =
-                (int) (res.getDimension(R.dimen.emoji_category_page_id_height));
-        final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding
-                + mKeyVerticalGap;
-        mEmojiActionBarHeight = ((int) baseheight) / DEFAULT_KEYBOARD_ROWS
-                - (mKeyVerticalGap - mBottomPadding) / 2;
-        mEmojiPagerHeight = defaultKeyboardHeight - mEmojiActionBarHeight
-                - mEmojiCategoryPageIdViewHeight;
-        mEmojiPagerBottomMargin = 0;
-        mEmojiKeyboardHeight = mEmojiPagerHeight - mEmojiPagerBottomMargin - 1;
-    }
-
-    public void setPagerProperties(ViewPager vp) {
-        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) vp.getLayoutParams();
-        lp.height = mEmojiKeyboardHeight;
-        lp.bottomMargin = mEmojiPagerBottomMargin;
-        vp.setLayoutParams(lp);
-    }
-
-    public void setCategoryPageIdViewProperties(LinearLayout ll) {
-        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
-        lp.height = mEmojiCategoryPageIdViewHeight;
-        ll.setLayoutParams(lp);
-    }
-
-    public void setActionBarProperties(LinearLayout ll) {
-        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
-        lp.height = mEmojiActionBarHeight - mBottomPadding;
-        ll.setLayoutParams(lp);
-    }
-
-    public void setKeyProperties(ImageView ib) {
-        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ib.getLayoutParams();
-        lp.leftMargin = mKeyHorizontalGap / 2;
-        lp.rightMargin = mKeyHorizontalGap / 2;
-        ib.setLayoutParams(lp);
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
deleted file mode 100644
index f123735..0000000
--- a/java/src/com/android/inputmethod/keyboard/EmojiPalettesView.java
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard;
-
-import static com.android.inputmethod.latin.Constants.NOT_A_COORDINATE;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.ColorStateList;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Rect;
-import android.os.Build;
-import android.preference.PreferenceManager;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.text.format.DateUtils;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.Pair;
-import android.util.SparseArray;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TabHost;
-import android.widget.TabHost.OnTabChangeListener;
-import android.widget.TextView;
-
-import com.android.inputmethod.keyboard.internal.DynamicGridKeyboard;
-import com.android.inputmethod.keyboard.internal.ScrollKeyboardView;
-import com.android.inputmethod.keyboard.internal.ScrollViewWithNotifier;
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.SubtypeSwitcher;
-import com.android.inputmethod.latin.settings.Settings;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.ResourceUtils;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * View class to implement Emoji palettes.
- * The Emoji keyboard consists of group of views {@link R.layout#emoji_palettes_view}.
- * <ol>
- * <li> Emoji category tabs.
- * <li> Delete button.
- * <li> Emoji keyboard pages that can be scrolled by swiping horizontally or by selecting a tab.
- * <li> Back to main keyboard button and enter button.
- * </ol>
- * Because of the above reasons, this class doesn't extend {@link KeyboardView}.
- */
-public final class EmojiPalettesView extends LinearLayout implements OnTabChangeListener,
-        ViewPager.OnPageChangeListener, View.OnClickListener,
-        ScrollKeyboardView.OnKeyClickListener {
-    private static final String TAG = EmojiPalettesView.class.getSimpleName();
-    private static final boolean DEBUG_PAGER = false;
-    private final int mKeyBackgroundId;
-    private final int mEmojiFunctionalKeyBackgroundId;
-    private final KeyboardLayoutSet mLayoutSet;
-    private final ColorStateList mTabLabelColor;
-    private final DeleteKeyOnTouchListener mDeleteKeyOnTouchListener;
-    private EmojiPalettesAdapter mEmojiPalettesAdapter;
-
-    private TabHost mTabHost;
-    private ViewPager mEmojiPager;
-    private int mCurrentPagerPosition = 0;
-    private EmojiCategoryPageIndicatorView mEmojiCategoryPageIndicatorView;
-
-    private KeyboardActionListener mKeyboardActionListener = KeyboardActionListener.EMPTY_LISTENER;
-
-    private static final int CATEGORY_ID_UNSPECIFIED = -1;
-    public static final int CATEGORY_ID_RECENTS = 0;
-    public static final int CATEGORY_ID_PEOPLE = 1;
-    public static final int CATEGORY_ID_OBJECTS = 2;
-    public static final int CATEGORY_ID_NATURE = 3;
-    public static final int CATEGORY_ID_PLACES = 4;
-    public static final int CATEGORY_ID_SYMBOLS = 5;
-    public static final int CATEGORY_ID_EMOTICONS = 6;
-
-    private static class CategoryProperties {
-        public int mCategoryId;
-        public int mPageCount;
-        public CategoryProperties(final int categoryId, final int pageCount) {
-            mCategoryId = categoryId;
-            mPageCount = pageCount;
-        }
-    }
-
-    private static class EmojiCategory {
-        private static final String[] sCategoryName = {
-                "recents",
-                "people",
-                "objects",
-                "nature",
-                "places",
-                "symbols",
-                "emoticons" };
-        private static final int[] sCategoryIcon = new int[] {
-                R.drawable.ic_emoji_recent_light,
-                R.drawable.ic_emoji_people_light,
-                R.drawable.ic_emoji_objects_light,
-                R.drawable.ic_emoji_nature_light,
-                R.drawable.ic_emoji_places_light,
-                R.drawable.ic_emoji_symbols_light,
-                0 };
-        private static final String[] sCategoryLabel =
-                { null, null, null, null, null, null, ":-)" };
-        private static final int[] sCategoryElementId = {
-                KeyboardId.ELEMENT_EMOJI_RECENTS,
-                KeyboardId.ELEMENT_EMOJI_CATEGORY1,
-                KeyboardId.ELEMENT_EMOJI_CATEGORY2,
-                KeyboardId.ELEMENT_EMOJI_CATEGORY3,
-                KeyboardId.ELEMENT_EMOJI_CATEGORY4,
-                KeyboardId.ELEMENT_EMOJI_CATEGORY5,
-                KeyboardId.ELEMENT_EMOJI_CATEGORY6 };
-        private final SharedPreferences mPrefs;
-        private final int mMaxPageKeyCount;
-        private final KeyboardLayoutSet mLayoutSet;
-        private final HashMap<String, Integer> mCategoryNameToIdMap = CollectionUtils.newHashMap();
-        private final ArrayList<CategoryProperties> mShownCategories =
-                CollectionUtils.newArrayList();
-        private final ConcurrentHashMap<Long, DynamicGridKeyboard>
-                mCategoryKeyboardMap = new ConcurrentHashMap<Long, DynamicGridKeyboard>();
-
-        private int mCurrentCategoryId = CATEGORY_ID_UNSPECIFIED;
-        private int mCurrentCategoryPageId = 0;
-
-        public EmojiCategory(final SharedPreferences prefs, final Resources res,
-                final KeyboardLayoutSet layoutSet) {
-            mPrefs = prefs;
-            mMaxPageKeyCount = res.getInteger(R.integer.emoji_keyboard_max_key_count);
-            mLayoutSet = layoutSet;
-            for (int i = 0; i < sCategoryName.length; ++i) {
-                mCategoryNameToIdMap.put(sCategoryName[i], i);
-            }
-            addShownCategoryId(CATEGORY_ID_RECENTS);
-            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2
-                    || android.os.Build.VERSION.CODENAME.equalsIgnoreCase("KeyLimePie")
-                    || android.os.Build.VERSION.CODENAME.equalsIgnoreCase("KitKat")) {
-                addShownCategoryId(CATEGORY_ID_PEOPLE);
-                addShownCategoryId(CATEGORY_ID_OBJECTS);
-                addShownCategoryId(CATEGORY_ID_NATURE);
-                addShownCategoryId(CATEGORY_ID_PLACES);
-                mCurrentCategoryId =
-                        Settings.readLastShownEmojiCategoryId(mPrefs, CATEGORY_ID_PEOPLE);
-            } else {
-                mCurrentCategoryId =
-                        Settings.readLastShownEmojiCategoryId(mPrefs, CATEGORY_ID_SYMBOLS);
-            }
-            addShownCategoryId(CATEGORY_ID_SYMBOLS);
-            addShownCategoryId(CATEGORY_ID_EMOTICONS);
-            getKeyboard(CATEGORY_ID_RECENTS, 0 /* cagetoryPageId */)
-                    .loadRecentKeys(mCategoryKeyboardMap.values());
-        }
-
-        private void addShownCategoryId(int categoryId) {
-            // Load a keyboard of categoryId
-            getKeyboard(categoryId, 0 /* cagetoryPageId */);
-            final CategoryProperties properties =
-                    new CategoryProperties(categoryId, getCategoryPageCount(categoryId));
-            mShownCategories.add(properties);
-        }
-
-        public String getCategoryName(int categoryId, int categoryPageId) {
-            return sCategoryName[categoryId] + "-" + categoryPageId;
-        }
-
-        public int getCategoryId(String name) {
-            final String[] strings = name.split("-");
-            return mCategoryNameToIdMap.get(strings[0]);
-        }
-
-        public int getCategoryIcon(int categoryId) {
-            return sCategoryIcon[categoryId];
-        }
-
-        public String getCategoryLabel(int categoryId) {
-            return sCategoryLabel[categoryId];
-        }
-
-        public ArrayList<CategoryProperties> getShownCategories() {
-            return mShownCategories;
-        }
-
-        public int getCurrentCategoryId() {
-            return mCurrentCategoryId;
-        }
-
-        public int getCurrentCategoryPageSize() {
-            return getCategoryPageSize(mCurrentCategoryId);
-        }
-
-        public int getCategoryPageSize(int categoryId) {
-            for (final CategoryProperties prop : mShownCategories) {
-                if (prop.mCategoryId == categoryId) {
-                    return prop.mPageCount;
-                }
-            }
-            Log.w(TAG, "Invalid category id: " + categoryId);
-            // Should not reach here.
-            return 0;
-        }
-
-        public void setCurrentCategoryId(int categoryId) {
-            mCurrentCategoryId = categoryId;
-            Settings.writeLastShownEmojiCategoryId(mPrefs, categoryId);
-        }
-
-        public void setCurrentCategoryPageId(int id) {
-            mCurrentCategoryPageId = id;
-        }
-
-        public int getCurrentCategoryPageId() {
-            return mCurrentCategoryPageId;
-        }
-
-        public void saveLastTypedCategoryPage() {
-            Settings.writeLastTypedEmojiCategoryPageId(
-                    mPrefs, mCurrentCategoryId, mCurrentCategoryPageId);
-        }
-
-        public boolean isInRecentTab() {
-            return mCurrentCategoryId == CATEGORY_ID_RECENTS;
-        }
-
-        public int getTabIdFromCategoryId(int categoryId) {
-            for (int i = 0; i < mShownCategories.size(); ++i) {
-                if (mShownCategories.get(i).mCategoryId == categoryId) {
-                    return i;
-                }
-            }
-            Log.w(TAG, "categoryId not found: " + categoryId);
-            return 0;
-        }
-
-        // Returns the view pager's page position for the categoryId
-        public int getPageIdFromCategoryId(int categoryId) {
-            final int lastSavedCategoryPageId =
-                    Settings.readLastTypedEmojiCategoryPageId(mPrefs, categoryId);
-            int sum = 0;
-            for (int i = 0; i < mShownCategories.size(); ++i) {
-                final CategoryProperties props = mShownCategories.get(i);
-                if (props.mCategoryId == categoryId) {
-                    return sum + lastSavedCategoryPageId;
-                }
-                sum += props.mPageCount;
-            }
-            Log.w(TAG, "categoryId not found: " + categoryId);
-            return 0;
-        }
-
-        public int getRecentTabId() {
-            return getTabIdFromCategoryId(CATEGORY_ID_RECENTS);
-        }
-
-        private int getCategoryPageCount(int categoryId) {
-            final Keyboard keyboard = mLayoutSet.getKeyboard(sCategoryElementId[categoryId]);
-            return (keyboard.getKeys().length - 1) / mMaxPageKeyCount + 1;
-        }
-
-        // Returns a pair of the category id and the category page id from the view pager's page
-        // position. The category page id is numbered in each category. And the view page position
-        // is the position of the current shown page in the view pager which contains all pages of
-        // all categories.
-        public Pair<Integer, Integer> getCategoryIdAndPageIdFromPagePosition(int position) {
-            int sum = 0;
-            for (CategoryProperties properties : mShownCategories) {
-                final int temp = sum;
-                sum += properties.mPageCount;
-                if (sum > position) {
-                    return new Pair<Integer, Integer>(properties.mCategoryId, position - temp);
-                }
-            }
-            return null;
-        }
-
-        // Returns a keyboard from the view pager's page position.
-        public DynamicGridKeyboard getKeyboardFromPagePosition(int position) {
-            final Pair<Integer, Integer> categoryAndId =
-                    getCategoryIdAndPageIdFromPagePosition(position);
-            if (categoryAndId != null) {
-                return getKeyboard(categoryAndId.first, categoryAndId.second);
-            }
-            return null;
-        }
-
-        public DynamicGridKeyboard getKeyboard(int categoryId, int id) {
-            synchronized(mCategoryKeyboardMap) {
-                final long key = (((long) categoryId) << Constants.MAX_INT_BIT_COUNT) | id;
-                final DynamicGridKeyboard kbd;
-                if (!mCategoryKeyboardMap.containsKey(key)) {
-                    if (categoryId != CATEGORY_ID_RECENTS) {
-                        final Keyboard keyboard =
-                                mLayoutSet.getKeyboard(sCategoryElementId[categoryId]);
-                        final Key[][] sortedKeys = sortKeys(keyboard.getKeys(), mMaxPageKeyCount);
-                        for (int i = 0; i < sortedKeys.length; ++i) {
-                            final DynamicGridKeyboard tempKbd = new DynamicGridKeyboard(mPrefs,
-                                    mLayoutSet.getKeyboard(KeyboardId.ELEMENT_EMOJI_RECENTS),
-                                    mMaxPageKeyCount, categoryId, i /* categoryPageId */);
-                            for (Key emojiKey : sortedKeys[i]) {
-                                if (emojiKey == null) {
-                                    break;
-                                }
-                                tempKbd.addKeyLast(emojiKey);
-                            }
-                            mCategoryKeyboardMap.put((((long) categoryId)
-                                    << Constants.MAX_INT_BIT_COUNT) | i, tempKbd);
-                        }
-                        kbd = mCategoryKeyboardMap.get(key);
-                    } else {
-                        kbd = new DynamicGridKeyboard(mPrefs,
-                                mLayoutSet.getKeyboard(KeyboardId.ELEMENT_EMOJI_RECENTS),
-                                mMaxPageKeyCount, categoryId, 0 /* categoryPageId */);
-                        mCategoryKeyboardMap.put(key, kbd);
-                    }
-                } else {
-                    kbd = mCategoryKeyboardMap.get(key);
-                }
-                return kbd;
-            }
-        }
-
-        public int getTotalPageCountOfAllCategories() {
-            int sum = 0;
-            for (CategoryProperties properties : mShownCategories) {
-                sum += properties.mPageCount;
-            }
-            return sum;
-        }
-
-        private Key[][] sortKeys(Key[] inKeys, int maxPageCount) {
-            Key[] keys = Arrays.copyOf(inKeys, inKeys.length);
-            Arrays.sort(keys, 0, keys.length, new Comparator<Key>() {
-                @Override
-                public int compare(Key lhs, Key rhs) {
-                    final Rect lHitBox = lhs.getHitBox();
-                    final Rect rHitBox = rhs.getHitBox();
-                    if (lHitBox.top < rHitBox.top) {
-                        return -1;
-                    } else if (lHitBox.top > rHitBox.top) {
-                        return 1;
-                    }
-                    if (lHitBox.left < rHitBox.left) {
-                        return -1;
-                    } else if (lHitBox.left > rHitBox.left) {
-                        return 1;
-                    }
-                    if (lhs.getCode() == rhs.getCode()) {
-                        return 0;
-                    }
-                    return lhs.getCode() < rhs.getCode() ? -1 : 1;
-                }
-            });
-            final int pageCount = (keys.length - 1) / maxPageCount + 1;
-            final Key[][] retval = new Key[pageCount][maxPageCount];
-            for (int i = 0; i < keys.length; ++i) {
-                retval[i / maxPageCount][i % maxPageCount] = keys[i];
-            }
-            return retval;
-        }
-    }
-
-    private final EmojiCategory mEmojiCategory;
-
-    public EmojiPalettesView(final Context context, final AttributeSet attrs) {
-        this(context, attrs, R.attr.emojiPalettesViewStyle);
-    }
-
-    public EmojiPalettesView(final Context context, final AttributeSet attrs, final int defStyle) {
-        super(context, attrs, defStyle);
-        final TypedArray keyboardViewAttr = context.obtainStyledAttributes(attrs,
-                R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
-        mKeyBackgroundId = keyboardViewAttr.getResourceId(
-                R.styleable.KeyboardView_keyBackground, 0);
-        mEmojiFunctionalKeyBackgroundId = keyboardViewAttr.getResourceId(
-                R.styleable.KeyboardView_keyBackgroundEmojiFunctional, 0);
-        keyboardViewAttr.recycle();
-        final TypedArray emojiPalettesViewAttr = context.obtainStyledAttributes(attrs,
-                R.styleable.EmojiPalettesView, defStyle, R.style.EmojiPalettesView);
-        mTabLabelColor = emojiPalettesViewAttr.getColorStateList(
-                R.styleable.EmojiPalettesView_emojiTabLabelColor);
-        emojiPalettesViewAttr.recycle();
-        final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
-                context, null /* editorInfo */);
-        final Resources res = context.getResources();
-        final EmojiLayoutParams emojiLp = new EmojiLayoutParams(res);
-        builder.setSubtype(SubtypeSwitcher.getInstance().getEmojiSubtype());
-        builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(res),
-                emojiLp.mEmojiKeyboardHeight);
-        builder.setOptions(false, false, false /* lanuageSwitchKeyEnabled */);
-        mLayoutSet = builder.build();
-        mEmojiCategory = new EmojiCategory(PreferenceManager.getDefaultSharedPreferences(context),
-                context.getResources(), builder.build());
-        mDeleteKeyOnTouchListener = new DeleteKeyOnTouchListener(context);
-    }
-
-    @Override
-    protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        final Resources res = getContext().getResources();
-        // The main keyboard expands to the entire this {@link KeyboardView}.
-        final int width = ResourceUtils.getDefaultKeyboardWidth(res)
-                + getPaddingLeft() + getPaddingRight();
-        final int height = ResourceUtils.getDefaultKeyboardHeight(res)
-                + res.getDimensionPixelSize(R.dimen.suggestions_strip_height)
-                + getPaddingTop() + getPaddingBottom();
-        setMeasuredDimension(width, height);
-    }
-
-    private void addTab(final TabHost host, final int categoryId) {
-        final String tabId = mEmojiCategory.getCategoryName(categoryId, 0 /* categoryPageId */);
-        final TabHost.TabSpec tspec = host.newTabSpec(tabId);
-        tspec.setContent(R.id.emoji_keyboard_dummy);
-        if (mEmojiCategory.getCategoryIcon(categoryId) != 0) {
-            final ImageView iconView = (ImageView)LayoutInflater.from(getContext()).inflate(
-                    R.layout.emoji_keyboard_tab_icon, null);
-            iconView.setImageResource(mEmojiCategory.getCategoryIcon(categoryId));
-            tspec.setIndicator(iconView);
-        }
-        if (mEmojiCategory.getCategoryLabel(categoryId) != null) {
-            final TextView textView = (TextView)LayoutInflater.from(getContext()).inflate(
-                    R.layout.emoji_keyboard_tab_label, null);
-            textView.setText(mEmojiCategory.getCategoryLabel(categoryId));
-            textView.setTextColor(mTabLabelColor);
-            tspec.setIndicator(textView);
-        }
-        host.addTab(tspec);
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        mTabHost = (TabHost)findViewById(R.id.emoji_category_tabhost);
-        mTabHost.setup();
-        for (final CategoryProperties properties : mEmojiCategory.getShownCategories()) {
-            addTab(mTabHost, properties.mCategoryId);
-        }
-        mTabHost.setOnTabChangedListener(this);
-        mTabHost.getTabWidget().setStripEnabled(true);
-
-        mEmojiPalettesAdapter = new EmojiPalettesAdapter(mEmojiCategory, mLayoutSet, this);
-
-        mEmojiPager = (ViewPager)findViewById(R.id.emoji_keyboard_pager);
-        mEmojiPager.setAdapter(mEmojiPalettesAdapter);
-        mEmojiPager.setOnPageChangeListener(this);
-        mEmojiPager.setOffscreenPageLimit(0);
-        mEmojiPager.setPersistentDrawingCache(ViewPager.PERSISTENT_NO_CACHE);
-        final Resources res = getResources();
-        final EmojiLayoutParams emojiLp = new EmojiLayoutParams(res);
-        emojiLp.setPagerProperties(mEmojiPager);
-
-        mEmojiCategoryPageIndicatorView =
-                (EmojiCategoryPageIndicatorView)findViewById(R.id.emoji_category_page_id_view);
-        emojiLp.setCategoryPageIdViewProperties(mEmojiCategoryPageIndicatorView);
-
-        setCurrentCategoryId(mEmojiCategory.getCurrentCategoryId(), true /* force */);
-
-        final LinearLayout actionBar = (LinearLayout)findViewById(R.id.emoji_action_bar);
-        emojiLp.setActionBarProperties(actionBar);
-
-        final ImageView deleteKey = (ImageView)findViewById(R.id.emoji_keyboard_delete);
-        deleteKey.setTag(Constants.CODE_DELETE);
-        deleteKey.setOnTouchListener(mDeleteKeyOnTouchListener);
-        final ImageView alphabetKey = (ImageView)findViewById(R.id.emoji_keyboard_alphabet);
-        alphabetKey.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
-        alphabetKey.setTag(Constants.CODE_SWITCH_ALPHA_SYMBOL);
-        alphabetKey.setOnClickListener(this);
-        final ImageView spaceKey = (ImageView)findViewById(R.id.emoji_keyboard_space);
-        spaceKey.setBackgroundResource(mKeyBackgroundId);
-        spaceKey.setTag(Constants.CODE_SPACE);
-        spaceKey.setOnClickListener(this);
-        emojiLp.setKeyProperties(spaceKey);
-        final ImageView alphabetKey2 = (ImageView)findViewById(R.id.emoji_keyboard_alphabet2);
-        alphabetKey2.setBackgroundResource(mEmojiFunctionalKeyBackgroundId);
-        alphabetKey2.setTag(Constants.CODE_SWITCH_ALPHA_SYMBOL);
-        alphabetKey2.setOnClickListener(this);
-    }
-
-    @Override
-    public void onTabChanged(final String tabId) {
-        final int categoryId = mEmojiCategory.getCategoryId(tabId);
-        setCurrentCategoryId(categoryId, false /* force */);
-        updateEmojiCategoryPageIdView();
-    }
-
-
-    @Override
-    public void onPageSelected(final int position) {
-        final Pair<Integer, Integer> newPos =
-                mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
-        setCurrentCategoryId(newPos.first /* categoryId */, false /* force */);
-        mEmojiCategory.setCurrentCategoryPageId(newPos.second /* categoryPageId */);
-        updateEmojiCategoryPageIdView();
-        mCurrentPagerPosition = position;
-    }
-
-    @Override
-    public void onPageScrollStateChanged(final int state) {
-        // Ignore this message. Only want the actual page selected.
-    }
-
-    @Override
-    public void onPageScrolled(final int position, final float positionOffset,
-            final int positionOffsetPixels) {
-        final Pair<Integer, Integer> newPos =
-                mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
-        final int newCategoryId = newPos.first;
-        final int newCategorySize = mEmojiCategory.getCategoryPageSize(newCategoryId);
-        final int currentCategoryId = mEmojiCategory.getCurrentCategoryId();
-        final int currentCategoryPageId = mEmojiCategory.getCurrentCategoryPageId();
-        final int currentCategorySize = mEmojiCategory.getCurrentCategoryPageSize();
-        if (newCategoryId == currentCategoryId) {
-            mEmojiCategoryPageIndicatorView.setCategoryPageId(
-                    newCategorySize, newPos.second, positionOffset);
-        } else if (newCategoryId > currentCategoryId) {
-            mEmojiCategoryPageIndicatorView.setCategoryPageId(
-                    currentCategorySize, currentCategoryPageId, positionOffset);
-        } else if (newCategoryId < currentCategoryId) {
-            mEmojiCategoryPageIndicatorView.setCategoryPageId(
-                    currentCategorySize, currentCategoryPageId, positionOffset - 1);
-        }
-    }
-
-    @Override
-    public void onClick(final View v) {
-        if (v.getTag() instanceof Integer) {
-            final int code = (Integer)v.getTag();
-            registerCode(code);
-            return;
-        }
-    }
-
-    private void registerCode(final int code) {
-        mKeyboardActionListener.onPressKey(code, 0 /* repeatCount */, true /* isSinglePointer */);
-        mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE);
-        mKeyboardActionListener.onReleaseKey(code, false /* withSliding */);
-    }
-
-    @Override
-    public void onKeyClick(final Key key) {
-        mEmojiPalettesAdapter.addRecentKey(key);
-        mEmojiCategory.saveLastTypedCategoryPage();
-        final int code = key.getCode();
-        if (code == Constants.CODE_OUTPUT_TEXT) {
-            mKeyboardActionListener.onTextInput(key.getOutputText());
-            return;
-        }
-        registerCode(code);
-    }
-
-    public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) {
-        // TODO:
-    }
-
-    public void startEmojiPalettes() {
-        if (DEBUG_PAGER) {
-            Log.d(TAG, "allocate emoji palettes memory " + mCurrentPagerPosition);
-        }
-        mEmojiPager.setAdapter(mEmojiPalettesAdapter);
-        mEmojiPager.setCurrentItem(mCurrentPagerPosition);
-    }
-
-    public void stopEmojiPalettes() {
-        if (DEBUG_PAGER) {
-            Log.d(TAG, "deallocate emoji palettes memory");
-        }
-        mEmojiPalettesAdapter.flushPendingRecentKeys();
-        mEmojiPager.setAdapter(null);
-    }
-
-    public void setKeyboardActionListener(final KeyboardActionListener listener) {
-        mKeyboardActionListener = listener;
-        mDeleteKeyOnTouchListener.setKeyboardActionListener(mKeyboardActionListener);
-    }
-
-    private void updateEmojiCategoryPageIdView() {
-        if (mEmojiCategoryPageIndicatorView == null) {
-            return;
-        }
-        mEmojiCategoryPageIndicatorView.setCategoryPageId(
-                mEmojiCategory.getCurrentCategoryPageSize(),
-                mEmojiCategory.getCurrentCategoryPageId(), 0.0f /* offset */);
-    }
-
-    private void setCurrentCategoryId(final int categoryId, final boolean force) {
-        final int oldCategoryId = mEmojiCategory.getCurrentCategoryId();
-        if (oldCategoryId == categoryId && !force) {
-            return;
-        }
-
-        if (oldCategoryId == CATEGORY_ID_RECENTS) {
-            // Needs to save pending updates for recent keys when we get out of the recents
-            // category because we don't want to move the recent emojis around while the user
-            // is in the recents category.
-            mEmojiPalettesAdapter.flushPendingRecentKeys();
-        }
-
-        mEmojiCategory.setCurrentCategoryId(categoryId);
-        final int newTabId = mEmojiCategory.getTabIdFromCategoryId(categoryId);
-        final int newCategoryPageId = mEmojiCategory.getPageIdFromCategoryId(categoryId);
-        if (force || mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(
-                mEmojiPager.getCurrentItem()).first != categoryId) {
-            mEmojiPager.setCurrentItem(newCategoryPageId, false /* smoothScroll */);
-        }
-        if (force || mTabHost.getCurrentTab() != newTabId) {
-            mTabHost.setCurrentTab(newTabId);
-        }
-    }
-
-    private static class EmojiPalettesAdapter extends PagerAdapter {
-        private final ScrollKeyboardView.OnKeyClickListener mListener;
-        private final DynamicGridKeyboard mRecentsKeyboard;
-        private final SparseArray<ScrollKeyboardView> mActiveKeyboardViews =
-                CollectionUtils.newSparseArray();
-        private final EmojiCategory mEmojiCategory;
-        private int mActivePosition = 0;
-
-        public EmojiPalettesAdapter(final EmojiCategory emojiCategory,
-                final KeyboardLayoutSet layoutSet,
-                final ScrollKeyboardView.OnKeyClickListener listener) {
-            mEmojiCategory = emojiCategory;
-            mListener = listener;
-            mRecentsKeyboard = mEmojiCategory.getKeyboard(CATEGORY_ID_RECENTS, 0);
-        }
-
-        public void flushPendingRecentKeys() {
-            mRecentsKeyboard.flushPendingRecentKeys();
-            final KeyboardView recentKeyboardView =
-                    mActiveKeyboardViews.get(mEmojiCategory.getRecentTabId());
-            if (recentKeyboardView != null) {
-                recentKeyboardView.invalidateAllKeys();
-            }
-        }
-
-        public void addRecentKey(final Key key) {
-            if (mEmojiCategory.isInRecentTab()) {
-                mRecentsKeyboard.addPendingKey(key);
-                return;
-            }
-            mRecentsKeyboard.addKeyFirst(key);
-            final KeyboardView recentKeyboardView =
-                    mActiveKeyboardViews.get(mEmojiCategory.getRecentTabId());
-            if (recentKeyboardView != null) {
-                recentKeyboardView.invalidateAllKeys();
-            }
-        }
-
-        @Override
-        public int getCount() {
-            return mEmojiCategory.getTotalPageCountOfAllCategories();
-        }
-
-        @Override
-        public void setPrimaryItem(final View container, final int position, final Object object) {
-            if (mActivePosition == position) {
-                return;
-            }
-            final ScrollKeyboardView oldKeyboardView = mActiveKeyboardViews.get(mActivePosition);
-            if (oldKeyboardView != null) {
-                oldKeyboardView.releaseCurrentKey();
-                oldKeyboardView.deallocateMemory();
-            }
-            mActivePosition = position;
-        }
-
-        @Override
-        public Object instantiateItem(final ViewGroup container, final int position) {
-            if (DEBUG_PAGER) {
-                Log.d(TAG, "instantiate item: " + position);
-            }
-            final ScrollKeyboardView oldKeyboardView = mActiveKeyboardViews.get(position);
-            if (oldKeyboardView != null) {
-                oldKeyboardView.deallocateMemory();
-                // This may be redundant but wanted to be safer..
-                mActiveKeyboardViews.remove(position);
-            }
-            final Keyboard keyboard =
-                    mEmojiCategory.getKeyboardFromPagePosition(position);
-            final LayoutInflater inflater = LayoutInflater.from(container.getContext());
-            final View view = inflater.inflate(
-                    R.layout.emoji_keyboard_page, container, false /* attachToRoot */);
-            final ScrollKeyboardView keyboardView = (ScrollKeyboardView)view.findViewById(
-                    R.id.emoji_keyboard_page);
-            keyboardView.setKeyboard(keyboard);
-            keyboardView.setOnKeyClickListener(mListener);
-            final ScrollViewWithNotifier scrollView = (ScrollViewWithNotifier)view.findViewById(
-                    R.id.emoji_keyboard_scroller);
-            keyboardView.setScrollView(scrollView);
-            container.addView(view);
-            mActiveKeyboardViews.put(position, keyboardView);
-            return view;
-        }
-
-        @Override
-        public boolean isViewFromObject(final View view, final Object object) {
-            return view == object;
-        }
-
-        @Override
-        public void destroyItem(final ViewGroup container, final int position,
-                final Object object) {
-            if (DEBUG_PAGER) {
-                Log.d(TAG, "destroy item: " + position + ", " + object.getClass().getSimpleName());
-            }
-            final ScrollKeyboardView keyboardView = mActiveKeyboardViews.get(position);
-            if (keyboardView != null) {
-                keyboardView.deallocateMemory();
-                mActiveKeyboardViews.remove(position);
-            }
-            if (object instanceof View) {
-                container.removeView((View)object);
-            } else {
-                Log.w(TAG, "Warning!!! Emoji palette may be leaking. " + object);
-            }
-        }
-    }
-
-    // TODO: Do the same things done in PointerTracker
-    private static class DeleteKeyOnTouchListener implements OnTouchListener {
-        private static final long MAX_REPEAT_COUNT_TIME = 30 * DateUtils.SECOND_IN_MILLIS;
-        private final int mDeleteKeyPressedBackgroundColor;
-        private final long mKeyRepeatStartTimeout;
-        private final long mKeyRepeatInterval;
-
-        public DeleteKeyOnTouchListener(Context context) {
-            final Resources res = context.getResources();
-            mDeleteKeyPressedBackgroundColor =
-                    res.getColor(R.color.emoji_key_pressed_background_color);
-            mKeyRepeatStartTimeout = res.getInteger(R.integer.config_key_repeat_start_timeout);
-            mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval);
-        }
-
-        private KeyboardActionListener mKeyboardActionListener =
-                KeyboardActionListener.EMPTY_LISTENER;
-        private DummyRepeatKeyRepeatTimer mTimer;
-
-        private synchronized void startRepeat() {
-            if (mTimer != null) {
-                abortRepeat();
-            }
-            mTimer = new DummyRepeatKeyRepeatTimer();
-            mTimer.start();
-        }
-
-        private synchronized void abortRepeat() {
-            mTimer.abort();
-            mTimer = null;
-        }
-
-        // TODO: Remove
-        // This function is mimicking the repeat code in PointerTracker.
-        // Specifically referring to PointerTracker#startRepeatKey and PointerTracker#onKeyRepeat.
-        private class DummyRepeatKeyRepeatTimer extends Thread {
-            public boolean mAborted = false;
-
-            @Override
-            public void run() {
-                int repeatCount = 1;
-                int timeCount = 0;
-                while (timeCount < MAX_REPEAT_COUNT_TIME && !mAborted) {
-                    if (timeCount > mKeyRepeatStartTimeout) {
-                        pressDelete(repeatCount);
-                    }
-                    timeCount += mKeyRepeatInterval;
-                    ++repeatCount;
-                    try {
-                        Thread.sleep(mKeyRepeatInterval);
-                    } catch (InterruptedException e) {
-                    }
-                }
-            }
-
-            public void abort() {
-                mAborted = true;
-            }
-        }
-
-        public void pressDelete(int repeatCount) {
-            mKeyboardActionListener.onPressKey(
-                    Constants.CODE_DELETE, repeatCount, true /* isSinglePointer */);
-            mKeyboardActionListener.onCodeInput(
-                    Constants.CODE_DELETE, NOT_A_COORDINATE, NOT_A_COORDINATE);
-            mKeyboardActionListener.onReleaseKey(
-                    Constants.CODE_DELETE, false /* withSliding */);
-        }
-
-        public void setKeyboardActionListener(KeyboardActionListener listener) {
-            mKeyboardActionListener = listener;
-        }
-
-        @Override
-        public boolean onTouch(View v, MotionEvent event) {
-            switch(event.getAction()) {
-                case MotionEvent.ACTION_DOWN:
-                    v.setBackgroundColor(mDeleteKeyPressedBackgroundColor);
-                    pressDelete(0 /* repeatCount */);
-                    startRepeat();
-                    return true;
-                case MotionEvent.ACTION_UP:
-                    v.setBackgroundColor(0);
-                    abortRepeat();
-                    return true;
-            }
-            return false;
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index f7ec950..af54fb6 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -22,14 +22,11 @@
 import static com.android.inputmethod.latin.Constants.CODE_SWITCH_ALPHA_SYMBOL;
 import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
 
-import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.Rect;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
-import android.util.Log;
-import android.util.Xml;
 
 import com.android.inputmethod.keyboard.internal.KeyDrawParams;
 import com.android.inputmethod.keyboard.internal.KeySpecParser;
@@ -43,9 +40,6 @@
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.utils.StringUtils;
 
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
 import java.util.Arrays;
 import java.util.Locale;
 
@@ -53,8 +47,6 @@
  * Class for describing the position and characteristics of a single key in the keyboard.
  */
 public class Key implements Comparable<Key> {
-    private static final String TAG = Key.class.getSimpleName();
-
     /**
      * The key code (unicode or custom code) that this key generates.
      */
@@ -66,11 +58,12 @@
     private final String mHintLabel;
     /** Flags of the label */
     private final int mLabelFlags;
-    private static final int LABEL_FLAGS_ALIGN_LEFT = 0x01;
-    private static final int LABEL_FLAGS_ALIGN_RIGHT = 0x02;
     private static final int LABEL_FLAGS_ALIGN_LEFT_OF_CENTER = 0x08;
+    // Font typeface specification.
+    private static final int LABEL_FLAGS_FONT_MASK = 0x30;
     private static final int LABEL_FLAGS_FONT_NORMAL = 0x10;
     private static final int LABEL_FLAGS_FONT_MONO_SPACE = 0x20;
+    private static final int LABEL_FLAGS_FONT_DEFAULT = 0x30;
     // Start of key text ratio enum values
     private static final int LABEL_FLAGS_FOLLOW_KEY_TEXT_RATIO_MASK = 0x1C0;
     private static final int LABEL_FLAGS_FOLLOW_KEY_LARGE_LETTER_RATIO = 0x40;
@@ -82,12 +75,17 @@
     private static final int LABEL_FLAGS_HAS_POPUP_HINT = 0x200;
     private static final int LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT = 0x400;
     private static final int LABEL_FLAGS_HAS_HINT_LABEL = 0x800;
-    private static final int LABEL_FLAGS_WITH_ICON_LEFT = 0x1000;
-    private static final int LABEL_FLAGS_WITH_ICON_RIGHT = 0x2000;
+    // The bit to calculate the ratio of key label width against key width. If autoXScale bit is on
+    // and autoYScale bit is off, the key label may be shrunk only for X-direction.
+    // If both autoXScale and autoYScale bits are on, the key label text size may be auto scaled.
     private static final int LABEL_FLAGS_AUTO_X_SCALE = 0x4000;
-    private static final int LABEL_FLAGS_PRESERVE_CASE = 0x8000;
-    private static final int LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED = 0x10000;
-    private static final int LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL = 0x20000;
+    private static final int LABEL_FLAGS_AUTO_Y_SCALE = 0x8000;
+    private static final int LABEL_FLAGS_AUTO_SCALE = LABEL_FLAGS_AUTO_X_SCALE
+            | LABEL_FLAGS_AUTO_Y_SCALE;
+    private static final int LABEL_FLAGS_PRESERVE_CASE = 0x10000;
+    private static final int LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED = 0x20000;
+    private static final int LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL = 0x40000;
+    private static final int LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR = 0x80000;
     private static final int LABEL_FLAGS_DISABLE_HINT_LABEL = 0x40000000;
     private static final int LABEL_FLAGS_DISABLE_ADDITIONAL_MORE_KEYS = 0x80000000;
 
@@ -139,41 +137,34 @@
 
     private final OptionalAttributes mOptionalAttributes;
 
-    private static final int DEFAULT_TEXT_COLOR = 0xFFFFFFFF;
-
     private static final class OptionalAttributes {
         /** Text to output when pressed. This can be multiple characters, like ".com" */
         public final String mOutputText;
         public final int mAltCode;
         /** Icon for disabled state */
         public final int mDisabledIconId;
-        /** Preview version of the icon, for the preview popup */
-        public final int mPreviewIconId;
         /** The visual insets */
         public final int mVisualInsetsLeft;
         public final int mVisualInsetsRight;
 
         private OptionalAttributes(final String outputText, final int altCode,
-                final int disabledIconId, final int previewIconId,
-                final int visualInsetsLeft, final int visualInsetsRight) {
+                final int disabledIconId, final int visualInsetsLeft, final int visualInsetsRight) {
             mOutputText = outputText;
             mAltCode = altCode;
             mDisabledIconId = disabledIconId;
-            mPreviewIconId = previewIconId;
             mVisualInsetsLeft = visualInsetsLeft;
             mVisualInsetsRight = visualInsetsRight;
         }
 
         public static OptionalAttributes newInstance(final String outputText, final int altCode,
-                final int disabledIconId, final int previewIconId,
-                final int visualInsetsLeft, final int visualInsetsRight) {
+                final int disabledIconId, final int visualInsetsLeft, final int visualInsetsRight) {
             if (outputText == null && altCode == CODE_UNSPECIFIED
-                    && disabledIconId == ICON_UNDEFINED && previewIconId == ICON_UNDEFINED
-                    && visualInsetsLeft == 0 && visualInsetsRight == 0) {
+                    && disabledIconId == ICON_UNDEFINED && visualInsetsLeft == 0
+                    && visualInsetsRight == 0) {
                 return null;
             }
-            return new OptionalAttributes(outputText, altCode, disabledIconId, previewIconId,
-                    visualInsetsLeft, visualInsetsRight);
+            return new OptionalAttributes(outputText, altCode, disabledIconId, visualInsetsLeft,
+                    visualInsetsRight);
         }
     }
 
@@ -185,37 +176,30 @@
     private boolean mEnabled = true;
 
     /**
-     * This constructor is being used only for keys in more keys keyboard.
+     * Constructor for a key on <code>MoreKeyKeyboard</code>, on <code>MoreSuggestions</code>,
+     * and in a <GridRows/>.
      */
-    public Key(final KeyboardParams params, final MoreKeySpec moreKeySpec, final int x, final int y,
-            final int width, final int height, final int labelFlags) {
-        this(params, moreKeySpec.mLabel, null, moreKeySpec.mIconId, moreKeySpec.mCode,
-                moreKeySpec.mOutputText, x, y, width, height, labelFlags, BACKGROUND_TYPE_NORMAL);
-    }
-
-    /**
-     * This constructor is being used only for key in popup suggestions pane.
-     */
-    public Key(final KeyboardParams params, final String label, final String hintLabel,
-            final int iconId, final int code, final String outputText, final int x, final int y,
-            final int width, final int height, final int labelFlags, final int backgroundType) {
-        mHeight = height - params.mVerticalGap;
-        mWidth = width - params.mHorizontalGap;
+    public Key(final String label, final int iconId, final int code, final String outputText,
+            final String hintLabel, final int labelFlags, final int backgroundType, final int x,
+            final int y, final int width, final int height, final int horizontalGap,
+            final int verticalGap) {
+        mHeight = height - verticalGap;
+        mWidth = width - horizontalGap;
         mHintLabel = hintLabel;
         mLabelFlags = labelFlags;
         mBackgroundType = backgroundType;
-        mActionFlags = 0;
+        // TODO: Pass keyActionFlags as an argument.
+        mActionFlags = ACTION_FLAGS_NO_KEY_PREVIEW;
         mMoreKeys = null;
         mMoreKeysColumnAndFlags = 0;
         mLabel = label;
         mOptionalAttributes = OptionalAttributes.newInstance(outputText, CODE_UNSPECIFIED,
-                ICON_UNDEFINED, ICON_UNDEFINED,
-                0 /* visualInsetsLeft */, 0 /* visualInsetsRight */);
+                ICON_UNDEFINED, 0 /* visualInsetsLeft */, 0 /* visualInsetsRight */);
         mCode = code;
         mEnabled = (code != CODE_UNSPECIFIED);
         mIconId = iconId;
         // Horizontal gap is divided equally to both sides of the key.
-        mX = x + params.mHorizontalGap / 2;
+        mX = x + horizontalGap / 2;
         mY = y;
         mHitBox.set(x, y, x + width + 1, y + height);
         mKeyVisualAttributes = null;
@@ -224,25 +208,22 @@
     }
 
     /**
-     * Create a key with the given top-left coordinate and extract its attributes from the XML
-     * parser.
-     * @param res resources associated with the caller's context
+     * Create a key with the given top-left coordinate and extract its attributes from a key
+     * specification string, Key attribute array, key style, and etc.
+     *
+     * @param keySpec the key specification.
+     * @param keyAttr the Key XML attributes array.
+     * @param style the {@link KeyStyle} of this key.
      * @param params the keyboard building parameters.
      * @param row the row that this key belongs to. row's x-coordinate will be the right edge of
      *        this key.
-     * @param parser the XML parser containing the attributes for this key
-     * @throws XmlPullParserException
      */
-    public Key(final Resources res, final KeyboardParams params, final KeyboardRow row,
-            final XmlPullParser parser) throws XmlPullParserException {
+    public Key(final String keySpec, final TypedArray keyAttr, final KeyStyle style,
+            final KeyboardParams params, final KeyboardRow row) {
         final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap;
         final int rowHeight = row.getRowHeight();
         mHeight = rowHeight - params.mVerticalGap;
 
-        final TypedArray keyAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
-                R.styleable.Keyboard_Key);
-
-        final KeyStyle style = params.mKeyStyles.getKeyStyle(keyAttr, parser);
         final float keyXPos = row.getKeyX(keyAttr);
         final float keyWidth = row.getKeyWidth(keyAttr, keyXPos);
         final int keyYPos = row.getKeyY();
@@ -264,12 +245,6 @@
                 R.styleable.Keyboard_Key_visualInsetsLeft, baseWidth, baseWidth, 0));
         final int visualInsetsRight = Math.round(keyAttr.getFraction(
                 R.styleable.Keyboard_Key_visualInsetsRight, baseWidth, baseWidth, 0));
-        mIconId = KeySpecParser.getIconId(style.getString(keyAttr,
-                R.styleable.Keyboard_Key_keyIcon));
-        final int disabledIconId = KeySpecParser.getIconId(style.getString(keyAttr,
-                R.styleable.Keyboard_Key_keyIconDisabled));
-        final int previewIconId = KeySpecParser.getIconId(style.getString(keyAttr,
-                R.styleable.Keyboard_Key_keyIconPreview));
 
         mLabelFlags = style.getFlags(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags)
                 | row.getDefaultKeyLabelFlags();
@@ -281,19 +256,19 @@
         int moreKeysColumn = style.getInt(keyAttr,
                 R.styleable.Keyboard_Key_maxMoreKeysColumn, params.mMaxMoreKeysKeyboardColumn);
         int value;
-        if ((value = KeySpecParser.getIntValue(moreKeys, MORE_KEYS_AUTO_COLUMN_ORDER, -1)) > 0) {
+        if ((value = MoreKeySpec.getIntValue(moreKeys, MORE_KEYS_AUTO_COLUMN_ORDER, -1)) > 0) {
             moreKeysColumn = value & MORE_KEYS_COLUMN_MASK;
         }
-        if ((value = KeySpecParser.getIntValue(moreKeys, MORE_KEYS_FIXED_COLUMN_ORDER, -1)) > 0) {
+        if ((value = MoreKeySpec.getIntValue(moreKeys, MORE_KEYS_FIXED_COLUMN_ORDER, -1)) > 0) {
             moreKeysColumn = MORE_KEYS_FLAGS_FIXED_COLUMN_ORDER | (value & MORE_KEYS_COLUMN_MASK);
         }
-        if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_HAS_LABELS)) {
+        if (MoreKeySpec.getBooleanValue(moreKeys, MORE_KEYS_HAS_LABELS)) {
             moreKeysColumn |= MORE_KEYS_FLAGS_HAS_LABELS;
         }
-        if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_NEEDS_DIVIDERS)) {
+        if (MoreKeySpec.getBooleanValue(moreKeys, MORE_KEYS_NEEDS_DIVIDERS)) {
             moreKeysColumn |= MORE_KEYS_FLAGS_NEEDS_DIVIDERS;
         }
-        if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_NO_PANEL_AUTO_MORE_KEY)) {
+        if (MoreKeySpec.getBooleanValue(moreKeys, MORE_KEYS_NO_PANEL_AUTO_MORE_KEY)) {
             moreKeysColumn |= MORE_KEYS_FLAGS_NO_PANEL_AUTO_MORE_KEY;
         }
         mMoreKeysColumnAndFlags = moreKeysColumn;
@@ -305,21 +280,23 @@
             additionalMoreKeys = style.getStringArray(keyAttr,
                     R.styleable.Keyboard_Key_additionalMoreKeys);
         }
-        moreKeys = KeySpecParser.insertAdditionalMoreKeys(moreKeys, additionalMoreKeys);
+        moreKeys = MoreKeySpec.insertAdditionalMoreKeys(moreKeys, additionalMoreKeys);
         if (moreKeys != null) {
             actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS;
             mMoreKeys = new MoreKeySpec[moreKeys.length];
             for (int i = 0; i < moreKeys.length; i++) {
-                mMoreKeys[i] = new MoreKeySpec(
-                        moreKeys[i], needsToUpperCase, locale, params.mCodesSet);
+                mMoreKeys[i] = new MoreKeySpec(moreKeys[i], needsToUpperCase, locale);
             }
         } else {
             mMoreKeys = null;
         }
         mActionFlags = actionFlags;
 
-        final int code = KeySpecParser.parseCode(style.getString(keyAttr,
-                R.styleable.Keyboard_Key_code), params.mCodesSet, CODE_UNSPECIFIED);
+        mIconId = KeySpecParser.getIconId(keySpec);
+        final int disabledIconId = KeySpecParser.getIconId(style.getString(keyAttr,
+                R.styleable.Keyboard_Key_keyIconDisabled));
+
+        final int code = KeySpecParser.getCode(keySpec);
         if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) {
             mLabel = params.mId.mCustomActionLabel;
         } else if (code >= Character.MIN_SUPPLEMENTARY_CODE_POINT) {
@@ -328,25 +305,24 @@
             // code point nor as a surrogate pair.
             mLabel = new StringBuilder().appendCodePoint(code).toString();
         } else {
-            mLabel = KeySpecParser.toUpperCaseOfStringForLocale(style.getString(keyAttr,
-                    R.styleable.Keyboard_Key_keyLabel), needsToUpperCase, locale);
+            mLabel = StringUtils.toUpperCaseOfStringForLocale(
+                    KeySpecParser.getLabel(keySpec), needsToUpperCase, locale);
         }
         if ((mLabelFlags & LABEL_FLAGS_DISABLE_HINT_LABEL) != 0) {
             mHintLabel = null;
         } else {
-            mHintLabel = KeySpecParser.toUpperCaseOfStringForLocale(style.getString(keyAttr,
+            mHintLabel = StringUtils.toUpperCaseOfStringForLocale(style.getString(keyAttr,
                     R.styleable.Keyboard_Key_keyHintLabel), needsToUpperCase, locale);
         }
-        String outputText = KeySpecParser.toUpperCaseOfStringForLocale(style.getString(keyAttr,
-                R.styleable.Keyboard_Key_keyOutputText), needsToUpperCase, locale);
+        String outputText = StringUtils.toUpperCaseOfStringForLocale(
+                KeySpecParser.getOutputText(keySpec), needsToUpperCase, locale);
         // Choose the first letter of the label as primary code if not specified.
         if (code == CODE_UNSPECIFIED && TextUtils.isEmpty(outputText)
                 && !TextUtils.isEmpty(mLabel)) {
             if (StringUtils.codePointCount(mLabel) == 1) {
                 // Use the first letter of the hint label if shiftedLetterActivated flag is
                 // specified.
-                if (hasShiftedLetterHint() && isShiftedLetterActivated()
-                        && !TextUtils.isEmpty(mHintLabel)) {
+                if (hasShiftedLetterHint() && isShiftedLetterActivated()) {
                     mCode = mHintLabel.codePointAt(0);
                 } else {
                     mCode = mLabel.codePointAt(0);
@@ -365,24 +341,20 @@
                 mCode = CODE_OUTPUT_TEXT;
             }
         } else {
-            mCode = KeySpecParser.toUpperCaseOfCodeForLocale(code, needsToUpperCase, locale);
+            mCode = StringUtils.toUpperCaseOfCodeForLocale(code, needsToUpperCase, locale);
         }
-        final int altCode = KeySpecParser.toUpperCaseOfCodeForLocale(
-                KeySpecParser.parseCode(style.getString(keyAttr,
-                R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED),
-                needsToUpperCase, locale);
+        final int altCodeInAttr = KeySpecParser.parseCode(
+                style.getString(keyAttr, R.styleable.Keyboard_Key_altCode), CODE_UNSPECIFIED);
+        final int altCode = StringUtils.toUpperCaseOfCodeForLocale(
+                altCodeInAttr, needsToUpperCase, locale);
         mOptionalAttributes = OptionalAttributes.newInstance(outputText, altCode,
-                disabledIconId, previewIconId, visualInsetsLeft, visualInsetsRight);
+                disabledIconId, visualInsetsLeft, visualInsetsRight);
         mKeyVisualAttributes = KeyVisualAttributes.newInstance(keyAttr);
-        keyAttr.recycle();
         mHashCode = computeHashCode(this);
-        if (hasShiftedLetterHint() && TextUtils.isEmpty(mHintLabel)) {
-            Log.w(TAG, "hasShiftedLetterHint specified without keyHintLabel: " + this);
-        }
     }
 
     /**
-     * Copy constructor.
+     * Copy constructor for DynamicGridKeyboard.GridKey.
      *
      * @param key the original key.
      */
@@ -486,15 +458,24 @@
 
     @Override
     public String toString() {
-        final String label;
-        if (StringUtils.codePointCount(mLabel) == 1 && mLabel.codePointAt(0) == mCode) {
-            label = "";
-        } else {
-            label = "/" + mLabel;
+        return toShortString() + " " + getX() + "," + getY() + " " + getWidth() + "x" + getHeight();
+    }
+
+    public String toShortString() {
+        final int code = getCode();
+        if (code == Constants.CODE_OUTPUT_TEXT) {
+            return getOutputText();
         }
-        return String.format(Locale.ROOT, "%s%s %d,%d %dx%d %s/%s/%s",
-                Constants.printableCode(mCode), label, mX, mY, mWidth, mHeight, mHintLabel,
-                KeyboardIconsSet.getIconName(mIconId), backgroundName(mBackgroundType));
+        return Constants.printableCode(code);
+    }
+
+    public String toLongString() {
+        final int iconId = getIconId();
+        final String topVisual = (iconId == KeyboardIconsSet.ICON_UNDEFINED)
+                ? KeyboardIconsSet.PREFIX_ICON + KeyboardIconsSet.getIconName(iconId) : getLabel();
+        final String hintLabel = getHintLabel();
+        final String visual = (hintLabel == null) ? topVisual : topVisual + "^" + hintLabel;
+        return toString() + " " + visual + "/" + backgroundName(mBackgroundType);
     }
 
     private static String backgroundName(final int backgroundType) {
@@ -576,14 +557,16 @@
     }
 
     public final Typeface selectTypeface(final KeyDrawParams params) {
-        // TODO: Handle "bold" here too?
-        if ((mLabelFlags & LABEL_FLAGS_FONT_NORMAL) != 0) {
+        switch (mLabelFlags & LABEL_FLAGS_FONT_MASK) {
+        case LABEL_FLAGS_FONT_NORMAL:
             return Typeface.DEFAULT;
-        }
-        if ((mLabelFlags & LABEL_FLAGS_FONT_MONO_SPACE) != 0) {
+        case LABEL_FLAGS_FONT_MONO_SPACE:
             return Typeface.MONOSPACE;
+        case LABEL_FLAGS_FONT_DEFAULT:
+        default:
+            // The type-face is specified by keyTypeface attribute.
+            return params.mTypeface;
         }
-        return params.mTypeface;
     }
 
     public final int selectTextSize(final KeyDrawParams params) {
@@ -604,22 +587,10 @@
     }
 
     public final int selectTextColor(final KeyDrawParams params) {
-        if (isShiftedLetterActivated()) {
-            return params.mTextInactivatedColor;
+        if ((mLabelFlags & LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR) != 0) {
+            return params.mFunctionalTextColor;
         }
-        if (params.mTextColorStateList == null) {
-            return DEFAULT_TEXT_COLOR;
-        }
-        final int[] state;
-        // TODO: Hack!!!!!!!! Consider having a new attribute for the functional text labels.
-        // Currently, we distinguish "input key" from "functional key" by checking the
-        // length of the label( > 1) and "functional" attributes (= true).
-        if (mLabel != null && mLabel.length() > 1) {
-            state = getCurrentDrawableState();
-        } else {
-            state = KEY_STATE_NORMAL;
-        }
-        return params.mTextColorStateList.getColorForState(state, DEFAULT_TEXT_COLOR);
+        return isShiftedLetterActivated() ? params.mTextInactivatedColor : params.mTextColor;
     }
 
     public final int selectHintTextSize(final KeyDrawParams params) {
@@ -670,14 +641,6 @@
         return Typeface.DEFAULT_BOLD;
     }
 
-    public final boolean isAlignLeft() {
-        return (mLabelFlags & LABEL_FLAGS_ALIGN_LEFT) != 0;
-    }
-
-    public final boolean isAlignRight() {
-        return (mLabelFlags & LABEL_FLAGS_ALIGN_RIGHT) != 0;
-    }
-
     public final boolean isAlignLeftOfCenter() {
         return (mLabelFlags & LABEL_FLAGS_ALIGN_LEFT_OF_CENTER) != 0;
     }
@@ -687,27 +650,25 @@
     }
 
     public final boolean hasShiftedLetterHint() {
-        return (mLabelFlags & LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT) != 0;
+        return (mLabelFlags & LABEL_FLAGS_HAS_SHIFTED_LETTER_HINT) != 0
+                && !TextUtils.isEmpty(mHintLabel);
     }
 
     public final boolean hasHintLabel() {
         return (mLabelFlags & LABEL_FLAGS_HAS_HINT_LABEL) != 0;
     }
 
-    public final boolean hasLabelWithIconLeft() {
-        return (mLabelFlags & LABEL_FLAGS_WITH_ICON_LEFT) != 0;
-    }
-
-    public final boolean hasLabelWithIconRight() {
-        return (mLabelFlags & LABEL_FLAGS_WITH_ICON_RIGHT) != 0;
-    }
-
-    public final boolean needsXScale() {
+    public final boolean needsAutoXScale() {
         return (mLabelFlags & LABEL_FLAGS_AUTO_X_SCALE) != 0;
     }
 
-    public final boolean isShiftedLetterActivated() {
-        return (mLabelFlags & LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED) != 0;
+    public final boolean needsAutoScale() {
+        return (mLabelFlags & LABEL_FLAGS_AUTO_SCALE) == LABEL_FLAGS_AUTO_SCALE;
+    }
+
+    private final boolean isShiftedLetterActivated() {
+        return (mLabelFlags & LABEL_FLAGS_SHIFTED_LETTER_ACTIVATED) != 0
+                && !TextUtils.isEmpty(mHintLabel);
     }
 
     public final int getMoreKeysColumn() {
@@ -746,10 +707,14 @@
         return (attrs != null) ? attrs.mAltCode : CODE_UNSPECIFIED;
     }
 
+    public int getIconId() {
+        return mIconId;
+    }
+
     public Drawable getIcon(final KeyboardIconsSet iconSet, final int alpha) {
         final OptionalAttributes attrs = mOptionalAttributes;
         final int disabledIconId = (attrs != null) ? attrs.mDisabledIconId : ICON_UNDEFINED;
-        final int iconId = mEnabled ? mIconId : disabledIconId;
+        final int iconId = mEnabled ? getIconId() : disabledIconId;
         final Drawable icon = iconSet.getIconDrawable(iconId);
         if (icon != null) {
             icon.setAlpha(alpha);
@@ -758,10 +723,7 @@
     }
 
     public Drawable getPreviewIcon(final KeyboardIconsSet iconSet) {
-        final OptionalAttributes attrs = mOptionalAttributes;
-        final int previewIconId = (attrs != null) ? attrs.mPreviewIconId : ICON_UNDEFINED;
-        return previewIconId != ICON_UNDEFINED
-                ? iconSet.getIconDrawable(previewIconId) : iconSet.getIconDrawable(mIconId);
+        return iconSet.getIconDrawable(getIconId());
     }
 
     public int getWidth() {
@@ -883,17 +845,6 @@
         android.R.attr.state_empty
     };
 
-    // functional normal state (with properties)
-    private static final int[] KEY_STATE_FUNCTIONAL_NORMAL = {
-            android.R.attr.state_single
-    };
-
-    // functional pressed state (with properties)
-    private static final int[] KEY_STATE_FUNCTIONAL_PRESSED = {
-            android.R.attr.state_single,
-            android.R.attr.state_pressed
-    };
-
     // action normal state (with properties)
     private static final int[] KEY_STATE_ACTIVE_NORMAL = {
             android.R.attr.state_active
@@ -906,31 +857,49 @@
     };
 
     /**
-     * Returns the drawable state for the key, based on the current state and type of the key.
-     * @return the drawable state of the key.
+     * Returns the background drawable for the key, based on the current state and type of the key.
+     * @return the background drawable of the key.
      * @see android.graphics.drawable.StateListDrawable#setState(int[])
      */
-    public final int[] getCurrentDrawableState() {
-        switch (mBackgroundType) {
-        case BACKGROUND_TYPE_FUNCTIONAL:
-            return mPressed ? KEY_STATE_FUNCTIONAL_PRESSED : KEY_STATE_FUNCTIONAL_NORMAL;
-        case BACKGROUND_TYPE_ACTION:
-            return mPressed ? KEY_STATE_ACTIVE_PRESSED : KEY_STATE_ACTIVE_NORMAL;
-        case BACKGROUND_TYPE_STICKY_OFF:
-            return mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_OFF : KEY_STATE_NORMAL_HIGHLIGHT_OFF;
-        case BACKGROUND_TYPE_STICKY_ON:
-            return mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_ON : KEY_STATE_NORMAL_HIGHLIGHT_ON;
-        case BACKGROUND_TYPE_EMPTY:
-            return mPressed ? KEY_STATE_PRESSED : KEY_STATE_EMPTY;
-        default: /* BACKGROUND_TYPE_NORMAL */
-            return mPressed ? KEY_STATE_PRESSED : KEY_STATE_NORMAL;
+    public final Drawable selectBackgroundDrawable(final Drawable keyBackground,
+            final Drawable functionalKeyBackground, final Drawable spacebarBackground) {
+        final Drawable background;
+        if (mBackgroundType == BACKGROUND_TYPE_FUNCTIONAL) {
+            background = functionalKeyBackground;
+        } else if (getCode() == Constants.CODE_SPACE) {
+            background = spacebarBackground;
+        } else {
+            background = keyBackground;
         }
+        final int[] stateSet;
+        switch (mBackgroundType) {
+        case BACKGROUND_TYPE_ACTION:
+            stateSet = mPressed ? KEY_STATE_ACTIVE_PRESSED : KEY_STATE_ACTIVE_NORMAL;
+            break;
+        case BACKGROUND_TYPE_STICKY_OFF:
+            stateSet = mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_OFF : KEY_STATE_NORMAL_HIGHLIGHT_OFF;
+            break;
+        case BACKGROUND_TYPE_STICKY_ON:
+            stateSet = mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_ON : KEY_STATE_NORMAL_HIGHLIGHT_ON;
+            break;
+        case BACKGROUND_TYPE_EMPTY:
+            stateSet = mPressed ? KEY_STATE_PRESSED : KEY_STATE_EMPTY;
+            break;
+        case BACKGROUND_TYPE_FUNCTIONAL:
+            stateSet = mPressed ? KEY_STATE_PRESSED : KEY_STATE_NORMAL;
+            break;
+        default: /* BACKGROUND_TYPE_NORMAL */
+            stateSet = mPressed ? KEY_STATE_PRESSED : KEY_STATE_NORMAL;
+            break;
+        }
+        background.setState(stateSet);
+        return background;
     }
 
     public static class Spacer extends Key {
-        public Spacer(final Resources res, final KeyboardParams params, final KeyboardRow row,
-                final XmlPullParser parser) throws XmlPullParserException {
-            super(res, params, row, parser);
+        public Spacer(final TypedArray keyAttr, final KeyStyle keyStyle,
+                final KeyboardParams params, final KeyboardRow row) {
+            super(null /* keySpec */, keyAttr, keyStyle, params, row);
         }
 
         /**
@@ -938,8 +907,9 @@
          */
         protected Spacer(final KeyboardParams params, final int x, final int y, final int width,
                 final int height) {
-            super(params, null, null, ICON_UNDEFINED, CODE_UNSPECIFIED,
-                    null, x, y, width, height, 0, BACKGROUND_TYPE_EMPTY);
+            super(null /* label */, ICON_UNDEFINED, CODE_UNSPECIFIED, null /* outputText */,
+                    null /* hintLabel */, 0 /* labelFlags */, BACKGROUND_TYPE_EMPTY, x, y, width,
+                    height, params.mHorizontalGap, params.mVerticalGap);
         }
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index befb6fa..87368d4 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -16,9 +16,9 @@
 
 package com.android.inputmethod.keyboard;
 
-import com.android.inputmethod.latin.Constants;
-
-
+/**
+ * This class handles key detection.
+ */
 public class KeyDetector {
     private final int mKeyHysteresisDistanceSquared;
     private final int mKeyHysteresisDistanceForSlidingModifierSquared;
@@ -27,31 +27,27 @@
     private int mCorrectionX;
     private int mCorrectionY;
 
-    /**
-     * This class handles key detection.
-     *
-     * @param keyHysteresisDistance if the pointer movement distance is smaller than this, the
-     * movement will not be handled as meaningful movement. The unit is pixel.
-     */
-    public KeyDetector(float keyHysteresisDistance) {
-        this(keyHysteresisDistance, keyHysteresisDistance);
+    public KeyDetector() {
+        this(0.0f /* keyHysteresisDistance */, 0.0f /* keyHysteresisDistanceForSlidingModifier */);
     }
 
     /**
-     * This class handles key detection.
+     * Key detection object constructor with key hysteresis distances.
      *
      * @param keyHysteresisDistance if the pointer movement distance is smaller than this, the
      * movement will not be handled as meaningful movement. The unit is pixel.
      * @param keyHysteresisDistanceForSlidingModifier the same parameter for sliding input that
      * starts from a modifier key such as shift and symbols key.
      */
-    public KeyDetector(float keyHysteresisDistance, float keyHysteresisDistanceForSlidingModifier) {
+    public KeyDetector(final float keyHysteresisDistance,
+            final float keyHysteresisDistanceForSlidingModifier) {
         mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance);
         mKeyHysteresisDistanceForSlidingModifierSquared = (int)(
                 keyHysteresisDistanceForSlidingModifier * keyHysteresisDistanceForSlidingModifier);
     }
 
-    public void setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
+    public void setKeyboard(final Keyboard keyboard, final float correctionX,
+            final float correctionY) {
         if (keyboard == null) {
             throw new NullPointerException();
         }
@@ -60,28 +56,25 @@
         mKeyboard = keyboard;
     }
 
-    public int getKeyHysteresisDistanceSquared(boolean isSlidingFromModifier) {
+    public int getKeyHysteresisDistanceSquared(final boolean isSlidingFromModifier) {
         return isSlidingFromModifier
                 ? mKeyHysteresisDistanceForSlidingModifierSquared : mKeyHysteresisDistanceSquared;
     }
 
-    public int getTouchX(int x) {
+    public int getTouchX(final int x) {
         return x + mCorrectionX;
     }
 
     // TODO: Remove vertical correction.
-    public int getTouchY(int y) {
+    public int getTouchY(final int y) {
         return y + mCorrectionY;
     }
 
     public Keyboard getKeyboard() {
-        if (mKeyboard == null) {
-            throw new IllegalStateException("keyboard isn't set");
-        }
         return mKeyboard;
     }
 
-    public boolean alwaysAllowsSlidingInput() {
+    public boolean alwaysAllowsKeySelectionByDraggingFinger() {
         return false;
     }
 
@@ -92,7 +85,10 @@
      * @param y The y-coordinate of a touch point
      * @return the key that the touch point hits.
      */
-    public Key detectHitKey(int x, int y) {
+    public Key detectHitKey(final int x, final int y) {
+        if (mKeyboard == null) {
+            return null;
+        }
         final int touchX = getTouchX(x);
         final int touchY = getTouchY(y);
 
@@ -117,20 +113,4 @@
         }
         return primaryKey;
     }
-
-    public static String printableCode(Key key) {
-        return key != null ? Constants.printableCode(key.getCode()) : "none";
-    }
-
-    public static String printableCodes(int[] codes) {
-        final StringBuilder sb = new StringBuilder();
-        boolean addDelimiter = false;
-        for (final int code : codes) {
-            if (code == Constants.NOT_A_CODE) break;
-            if (addDelimiter) sb.append(", ");
-            sb.append(Constants.printableCode(code));
-            addDelimiter = true;
-        }
-        return "[" + sb + "]";
-    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index bc1383a..85dfea4 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -22,7 +22,11 @@
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
 import com.android.inputmethod.keyboard.internal.KeyboardParams;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 /**
  * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@@ -73,13 +77,13 @@
     /** Maximum column for more keys keyboard */
     public final int mMaxMoreKeysKeyboardColumn;
 
-    /** Array of keys and icons in this keyboard */
-    private final Key[] mKeys;
-    public final Key[] mShiftKeys;
-    public final Key[] mAltCodeKeysWhileTyping;
+    /** List of keys in this keyboard */
+    private final List<Key> mSortedKeys;
+    public final List<Key> mShiftKeys;
+    public final List<Key> mAltCodeKeysWhileTyping;
     public final KeyboardIconsSet mIconsSet;
 
-    private final SparseArray<Key> mKeyCache = CollectionUtils.newSparseArray();
+    private final SparseArray<Key> mKeyCache = new SparseArray<>();
 
     private final ProximityInfo mProximityInfo;
     private final boolean mProximityCharsCorrectionEnabled;
@@ -99,15 +103,15 @@
         mTopPadding = params.mTopPadding;
         mVerticalGap = params.mVerticalGap;
 
-        mKeys = params.mKeys.toArray(new Key[params.mKeys.size()]);
-        mShiftKeys = params.mShiftKeys.toArray(new Key[params.mShiftKeys.size()]);
-        mAltCodeKeysWhileTyping = params.mAltCodeKeysWhileTyping.toArray(
-                new Key[params.mAltCodeKeysWhileTyping.size()]);
+        mSortedKeys = Collections.unmodifiableList(new ArrayList<>(params.mSortedKeys));
+        mShiftKeys = Collections.unmodifiableList(params.mShiftKeys);
+        mAltCodeKeysWhileTyping = Collections.unmodifiableList(params.mAltCodeKeysWhileTyping);
         mIconsSet = params.mIconsSet;
 
         mProximityInfo = new ProximityInfo(params.mId.mLocale.toString(),
                 params.GRID_WIDTH, params.GRID_HEIGHT, mOccupiedWidth, mOccupiedHeight,
-                mMostCommonKeyWidth, mMostCommonKeyHeight, mKeys, params.mTouchPositionCorrection);
+                mMostCommonKeyWidth, mMostCommonKeyHeight, mSortedKeys,
+                params.mTouchPositionCorrection);
         mProximityCharsCorrectionEnabled = params.mProximityCharsCorrectionEnabled;
     }
 
@@ -126,7 +130,7 @@
         mTopPadding = keyboard.mTopPadding;
         mVerticalGap = keyboard.mVerticalGap;
 
-        mKeys = keyboard.mKeys;
+        mSortedKeys = keyboard.mSortedKeys;
         mShiftKeys = keyboard.mShiftKeys;
         mAltCodeKeysWhileTyping = keyboard.mAltCodeKeysWhileTyping;
         mIconsSet = keyboard.mIconsSet;
@@ -151,17 +155,14 @@
         return mProximityInfo;
     }
 
-    public Key[] getKeys() {
-        return mKeys;
-    }
-
-    public Key getKeyFromOutputText(final String outputText) {
-        for (final Key key : getKeys()) {
-            if (outputText.equals(key.getOutputText())) {
-                return key;
-            }
-        }
-        return null;
+    /**
+     * Return the sorted list of keys of this keyboard.
+     * The keys are sorted from top-left to bottom-right order.
+     * The list may contain {@link Key.Spacer} object as well.
+     * @return the sorted unmodifiable list of {@link Key}s of this keyboard.
+     */
+    public List<Key> getSortedKeys() {
+        return mSortedKeys;
     }
 
     public Key getKey(final int code) {
@@ -174,7 +175,7 @@
                 return mKeyCache.valueAt(index);
             }
 
-            for (final Key key : getKeys()) {
+            for (final Key key : getSortedKeys()) {
                 if (key.getCode() == code) {
                     mKeyCache.put(code, key);
                     return key;
@@ -190,7 +191,7 @@
             return true;
         }
 
-        for (final Key key : getKeys()) {
+        for (final Key key : getSortedKeys()) {
             if (key == aKey) {
                 mKeyCache.put(key.getCode(), key);
                 return true;
@@ -208,13 +209,29 @@
      * Returns the array of the keys that are closest to the given point.
      * @param x the x-coordinate of the point
      * @param y the y-coordinate of the point
-     * @return the array of the nearest keys to the given point. If the given
+     * @return the list of the nearest keys to the given point. If the given
      * point is out of range, then an array of size zero is returned.
      */
-    public Key[] getNearestKeys(final int x, final int y) {
+    public List<Key> getNearestKeys(final int x, final int y) {
         // Avoid dead pixels at edges of the keyboard
         final int adjustedX = Math.max(0, Math.min(x, mOccupiedWidth - 1));
         final int adjustedY = Math.max(0, Math.min(y, mOccupiedHeight - 1));
         return mProximityInfo.getNearestKeys(adjustedX, adjustedY);
     }
+
+    public int[] getCoordinates(final int[] codePoints) {
+        final int length = codePoints.length;
+        final int[] coordinates = CoordinateUtils.newCoordinateArray(length);
+        for (int i = 0; i < length; ++i) {
+            final Key key = getKey(codePoints[i]);
+            if (null != key) {
+                CoordinateUtils.setXYInArray(coordinates, i,
+                        key.getX() + key.getWidth() / 2, key.getY() + key.getHeight() / 2);
+            } else {
+                CoordinateUtils.setXYInArray(coordinates, i,
+                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+            }
+        }
+        return coordinates;
+    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
index dc760e6..c565866 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
@@ -53,8 +53,10 @@
      *            {@link PointerTracker} or so, the value should be
      *            {@link Constants#NOT_A_COORDINATE}.If it's called on insertion from the
      *            suggestion strip, it should be {@link Constants#SUGGESTION_STRIP_COORDINATE}.
+     * @param isKeyRepeat true if this is a key repeat, false otherwise
      */
-    public void onCodeInput(int primaryCode, int x, int y);
+    // TODO: change this to send an Event object instead
+    public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat);
 
     /**
      * Sends a string of characters to the listener.
@@ -107,7 +109,7 @@
         @Override
         public void onReleaseKey(int primaryCode, boolean withSliding) {}
         @Override
-        public void onCodeInput(int primaryCode, int x, int y) {}
+        public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat) {}
         @Override
         public void onTextInput(String text) {}
         @Override
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 736f13e..3c11675 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -68,10 +68,8 @@
     public final int mHeight;
     public final int mMode;
     public final int mElementId;
-    private final EditorInfo mEditorInfo;
+    public final EditorInfo mEditorInfo;
     public final boolean mClobberSettingsKey;
-    public final boolean mShortcutKeyEnabled;
-    public final boolean mShortcutKeyOnSymbols;
     public final boolean mLanguageSwitchKeyEnabled;
     public final String mCustomActionLabel;
     public final boolean mHasShortcutKey;
@@ -87,17 +85,10 @@
         mElementId = elementId;
         mEditorInfo = params.mEditorInfo;
         mClobberSettingsKey = params.mNoSettingsKey;
-        mShortcutKeyEnabled = params.mVoiceKeyEnabled;
-        mShortcutKeyOnSymbols = mShortcutKeyEnabled && !params.mVoiceKeyOnMain;
         mLanguageSwitchKeyEnabled = params.mLanguageSwitchKeyEnabled;
         mCustomActionLabel = (mEditorInfo.actionLabel != null)
                 ? mEditorInfo.actionLabel.toString() : null;
-        final boolean alphabetMayHaveShortcutKey = isAlphabetKeyboard(elementId)
-                && !mShortcutKeyOnSymbols;
-        final boolean symbolsMayHaveShortcutKey = (elementId == KeyboardId.ELEMENT_SYMBOLS)
-                && mShortcutKeyOnSymbols;
-        mHasShortcutKey = mShortcutKeyEnabled
-                && (alphabetMayHaveShortcutKey || symbolsMayHaveShortcutKey);
+        mHasShortcutKey = params.mVoiceInputKeyEnabled;
 
         mHashCode = computeHashCode(this);
     }
@@ -110,8 +101,7 @@
                 id.mHeight,
                 id.passwordInput(),
                 id.mClobberSettingsKey,
-                id.mShortcutKeyEnabled,
-                id.mShortcutKeyOnSymbols,
+                id.mHasShortcutKey,
                 id.mLanguageSwitchKeyEnabled,
                 id.isMultiLine(),
                 id.imeAction(),
@@ -131,8 +121,7 @@
                 && other.mHeight == mHeight
                 && other.passwordInput() == passwordInput()
                 && other.mClobberSettingsKey == mClobberSettingsKey
-                && other.mShortcutKeyEnabled == mShortcutKeyEnabled
-                && other.mShortcutKeyOnSymbols == mShortcutKeyOnSymbols
+                && other.mHasShortcutKey == mHasShortcutKey
                 && other.mLanguageSwitchKeyEnabled == mLanguageSwitchKeyEnabled
                 && other.isMultiLine() == isMultiLine()
                 && other.imeAction() == imeAction()
@@ -186,21 +175,19 @@
 
     @Override
     public String toString() {
-        return String.format(Locale.ROOT, "[%s %s:%s %dx%d %s %s %s%s%s%s%s%s%s%s%s]",
+        return String.format(Locale.ROOT, "[%s %s:%s %dx%d %s %s%s%s%s%s%s%s%s]",
                 elementIdToName(mElementId),
                 mLocale, mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET),
                 mWidth, mHeight,
                 modeName(mMode),
-                imeAction(),
-                (navigateNext() ? "navigateNext" : ""),
-                (navigatePrevious() ? "navigatePrevious" : ""),
+                actionName(imeAction()),
+                (navigateNext() ? " navigateNext" : ""),
+                (navigatePrevious() ? " navigatePrevious" : ""),
                 (mClobberSettingsKey ? " clobberSettingsKey" : ""),
                 (passwordInput() ? " passwordInput" : ""),
-                (mShortcutKeyEnabled ? " shortcutKeyEnabled" : ""),
-                (mShortcutKeyOnSymbols ? " shortcutKeyOnSymbols" : ""),
                 (mHasShortcutKey ? " hasShortcutKey" : ""),
                 (mLanguageSwitchKeyEnabled ? " languageSwitchKeyEnabled" : ""),
-                (isMultiLine() ? "isMultiLine" : "")
+                (isMultiLine() ? " isMultiLine" : "")
         );
     }
 
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
index 1eccdf3..870ac86 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardLayoutSet.java
@@ -17,10 +17,7 @@
 package com.android.inputmethod.keyboard;
 
 import static com.android.inputmethod.latin.Constants.ImeOption.FORCE_ASCII;
-import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE;
-import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE_COMPAT;
 import static com.android.inputmethod.latin.Constants.ImeOption.NO_SETTINGS_KEY;
-import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.ASCII_CAPABLE;
 
 import android.content.Context;
 import android.content.res.Resources;
@@ -34,15 +31,16 @@
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.inputmethod.compat.EditorInfoCompatUtils;
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
 import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
 import com.android.inputmethod.keyboard.internal.KeyboardParams;
 import com.android.inputmethod.keyboard.internal.KeysCache;
 import com.android.inputmethod.latin.InputAttributes;
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SubtypeSwitcher;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.define.DebugFlags;
 import com.android.inputmethod.latin.utils.InputTypeUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 import com.android.inputmethod.latin.utils.XmlParseUtils;
 
@@ -62,10 +60,11 @@
  */
 public final class KeyboardLayoutSet {
     private static final String TAG = KeyboardLayoutSet.class.getSimpleName();
-    private static final boolean DEBUG_CACHE = LatinImeLogger.sDBG;
+    private static final boolean DEBUG_CACHE = DebugFlags.DEBUG_ENABLED;
 
     private static final String TAG_KEYBOARD_SET = "KeyboardLayoutSet";
     private static final String TAG_ELEMENT = "Element";
+    private static final String TAG_FEATURE = "Feature";
 
     private static final String KEYBOARD_LAYOUT_SET_RESOURCE_PREFIX = "keyboard_layout_set_";
 
@@ -81,7 +80,7 @@
     // them from disappearing from sKeyboardCache.
     private static final Keyboard[] sForcibleKeyboardCache = new Keyboard[FORCIBLE_CACHE_SIZE];
     private static final HashMap<KeyboardId, SoftReference<Keyboard>> sKeyboardCache =
-            CollectionUtils.newHashMap();
+            new HashMap<>();
     private static final KeysCache sKeysCache = new KeysCache();
 
     @SuppressWarnings("serial")
@@ -103,21 +102,21 @@
     public static final class Params {
         String mKeyboardLayoutSetName;
         int mMode;
-        EditorInfo mEditorInfo;
         boolean mDisableTouchPositionCorrectionDataForTest;
-        boolean mVoiceKeyEnabled;
-        // TODO: Remove mVoiceKeyOnMain when it's certainly confirmed that we no longer show
-        // the voice input key on the symbol layout
-        boolean mVoiceKeyOnMain;
+        // TODO: Use {@link InputAttributes} instead of these variables.
+        EditorInfo mEditorInfo;
+        boolean mIsPasswordField;
+        boolean mVoiceInputKeyEnabled;
         boolean mNoSettingsKey;
         boolean mLanguageSwitchKeyEnabled;
         InputMethodSubtype mSubtype;
         boolean mIsSpellChecker;
         int mKeyboardWidth;
         int mKeyboardHeight;
+        int mScriptId;
         // Sparse array of KeyboardLayoutSet element parameters indexed by element's id.
         final SparseArray<ElementParams> mKeyboardLayoutSetElementIdToParamsMap =
-                CollectionUtils.newSparseArray();
+                new SparseArray<>();
     }
 
     public static void clearKeyboardCache() {
@@ -181,7 +180,7 @@
         }
 
         final KeyboardBuilder<KeyboardParams> builder =
-                new KeyboardBuilder<KeyboardParams>(mContext, new KeyboardParams());
+                new KeyboardBuilder<>(mContext, new KeyboardParams());
         if (id.isAlphabetKeyboard()) {
             builder.setAutoGenerate(sKeysCache);
         }
@@ -192,7 +191,7 @@
         }
         builder.setProximityCharsCorrectionEnabled(elementParams.mProximityCharsCorrectionEnabled);
         final Keyboard keyboard = builder.build();
-        sKeyboardCache.put(id, new SoftReference<Keyboard>(keyboard));
+        sKeyboardCache.put(id, new SoftReference<>(keyboard));
         if ((id.mElementId == KeyboardId.ELEMENT_ALPHABET
                 || id.mElementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED)
                 && !mParams.mIsSpellChecker) {
@@ -212,6 +211,10 @@
         return keyboard;
     }
 
+    public int getScriptId() {
+        return mParams.mScriptId;
+    }
+
     public static final class Builder {
         private final Context mContext;
         private final String mPackageName;
@@ -221,16 +224,19 @@
 
         private static final EditorInfo EMPTY_EDITOR_INFO = new EditorInfo();
 
-        public Builder(final Context context, final EditorInfo editorInfo) {
+        public Builder(final Context context, final EditorInfo ei) {
             mContext = context;
             mPackageName = context.getPackageName();
             mResources = context.getResources();
             final Params params = mParams;
 
+            final EditorInfo editorInfo = (ei != null) ? ei : EMPTY_EDITOR_INFO;
             params.mMode = getKeyboardMode(editorInfo);
-            params.mEditorInfo = (editorInfo != null) ? editorInfo : EMPTY_EDITOR_INFO;
+            // TODO: Consolidate those with {@link InputAttributes}.
+            params.mEditorInfo = editorInfo;
+            params.mIsPasswordField = InputTypeUtils.isPasswordInputType(editorInfo.inputType);
             params.mNoSettingsKey = InputAttributes.inPrivateImeOptions(
-                    mPackageName, NO_SETTINGS_KEY, params.mEditorInfo);
+                    mPackageName, NO_SETTINGS_KEY, editorInfo);
         }
 
         public Builder setKeyboardGeometry(final int keyboardWidth, final int keyboardHeight) {
@@ -240,7 +246,8 @@
         }
 
         public Builder setSubtype(final InputMethodSubtype subtype) {
-            final boolean asciiCapable = subtype.containsExtraValueKey(ASCII_CAPABLE);
+            final boolean asciiCapable = InputMethodSubtypeCompatUtils.isAsciiCapable(subtype);
+            // TODO: Consolidate with {@link InputAttributes}.
             @SuppressWarnings("deprecation")
             final boolean deprecatedForceAscii = InputAttributes.inPrivateImeOptions(
                     mPackageName, FORCE_ASCII, mParams.mEditorInfo);
@@ -261,19 +268,13 @@
             return this;
         }
 
-        // TODO: Remove mVoiceKeyOnMain when it's certainly confirmed that we no longer show
-        // the voice input key on the symbol layout
-        public Builder setOptions(final boolean voiceKeyEnabled, final boolean voiceKeyOnMain,
-                final boolean languageSwitchKeyEnabled) {
-            @SuppressWarnings("deprecation")
-            final boolean deprecatedNoMicrophone = InputAttributes.inPrivateImeOptions(
-                    null, NO_MICROPHONE_COMPAT, mParams.mEditorInfo);
-            final boolean noMicrophone = InputAttributes.inPrivateImeOptions(
-                    mPackageName, NO_MICROPHONE, mParams.mEditorInfo)
-                    || deprecatedNoMicrophone;
-            mParams.mVoiceKeyEnabled = voiceKeyEnabled && !noMicrophone;
-            mParams.mVoiceKeyOnMain = voiceKeyOnMain;
-            mParams.mLanguageSwitchKeyEnabled = languageSwitchKeyEnabled;
+        public Builder setVoiceInputKeyEnabled(final boolean enabled) {
+            mParams.mVoiceInputKeyEnabled = enabled;
+            return this;
+        }
+
+        public Builder setLanguageSwitchKeyEnabled(final boolean enabled) {
+            mParams.mLanguageSwitchKeyEnabled = enabled;
             return this;
         }
 
@@ -281,6 +282,10 @@
             mParams.mDisableTouchPositionCorrectionDataForTest = true;
         }
 
+        public void setScriptId(final int scriptId) {
+            mParams.mScriptId = scriptId;
+        }
+
         public KeyboardLayoutSet build() {
             if (mParams.mSubtype == null)
                 throw new RuntimeException("KeyboardLayoutSet subtype is not specified");
@@ -326,6 +331,8 @@
                     final String tag = parser.getName();
                     if (TAG_ELEMENT.equals(tag)) {
                         parseKeyboardLayoutSetElement(parser);
+                    } else if (TAG_FEATURE.equals(tag)) {
+                        parseKeyboardLayoutSetFeature(parser);
                     } else {
                         throw new XmlParseUtils.IllegalStartTag(parser, tag, TAG_KEYBOARD_SET);
                     }
@@ -367,10 +374,22 @@
             }
         }
 
-        private static int getKeyboardMode(final EditorInfo editorInfo) {
-            if (editorInfo == null)
-                return KeyboardId.MODE_TEXT;
+        private void parseKeyboardLayoutSetFeature(final XmlPullParser parser)
+                throws XmlPullParserException, IOException {
+            final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
+                    R.styleable.KeyboardLayoutSet_Feature);
+            try {
+                final int scriptId = a.getInt(
+                        R.styleable.KeyboardLayoutSet_Feature_supportedScript,
+                        ScriptUtils.SCRIPT_LATIN);
+                XmlParseUtils.checkEndTag(TAG_FEATURE, parser);
+                setScriptId(scriptId);
+            } finally {
+                a.recycle();
+            }
+        }
 
+        private static int getKeyboardMode(final EditorInfo editorInfo) {
             final int inputType = editorInfo.inputType;
             final int variation = inputType & InputType.TYPE_MASK_VARIATION;
 
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 5abc9ab..f351267 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -26,46 +26,24 @@
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 
-import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
 import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
 import com.android.inputmethod.keyboard.KeyboardLayoutSet.KeyboardLayoutSetException;
+import com.android.inputmethod.keyboard.emoji.EmojiPalettesView;
 import com.android.inputmethod.keyboard.internal.KeyboardState;
+import com.android.inputmethod.keyboard.internal.KeyboardTextsSet;
 import com.android.inputmethod.latin.InputView;
 import com.android.inputmethod.latin.LatinIME;
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.RichInputMethodManager;
 import com.android.inputmethod.latin.SubtypeSwitcher;
 import com.android.inputmethod.latin.WordComposer;
-import com.android.inputmethod.latin.settings.Settings;
 import com.android.inputmethod.latin.settings.SettingsValues;
 import com.android.inputmethod.latin.utils.ResourceUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 
 public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
     private static final String TAG = KeyboardSwitcher.class.getSimpleName();
 
-    static final class KeyboardTheme {
-        public final int mThemeId;
-        public final int mStyleId;
-
-        // Note: The themeId should be aligned with "themeId" attribute of Keyboard style
-        // in values/style.xml.
-        public KeyboardTheme(final int themeId, final int styleId) {
-            mThemeId = themeId;
-            mStyleId = styleId;
-        }
-    }
-
-    public static final int THEME_INDEX_ICS = 0;
-    public static final int THEME_INDEX_GB = 1;
-    public static final int THEME_INDEX_KLP = 2;
-    public static final int THEME_INDEX_DEFAULT = THEME_INDEX_KLP;
-    public static final KeyboardTheme[] KEYBOARD_THEMES = {
-        new KeyboardTheme(THEME_INDEX_ICS, R.style.KeyboardTheme_ICS),
-        new KeyboardTheme(THEME_INDEX_GB, R.style.KeyboardTheme_GB),
-        new KeyboardTheme(THEME_INDEX_KLP, R.style.KeyboardTheme_KLP),
-    };
-
     private SubtypeSwitcher mSubtypeSwitcher;
     private SharedPreferences mPrefs;
 
@@ -74,18 +52,16 @@
     private MainKeyboardView mKeyboardView;
     private EmojiPalettesView mEmojiPalettesView;
     private LatinIME mLatinIME;
-    private Resources mResources;
     private boolean mIsHardwareAcceleratedDrawingEnabled;
 
     private KeyboardState mState;
 
     private KeyboardLayoutSet mKeyboardLayoutSet;
+    // TODO: The following {@link KeyboardTextsSet} should be in {@link KeyboardLayoutSet}.
+    private final KeyboardTextsSet mKeyboardTextsSet = new KeyboardTextsSet();
+    private SettingsValues mCurrentSettingsValues;
 
-    /** mIsAutoCorrectionActive indicates that auto corrected word will be input instead of
-     * what user actually typed. */
-    private boolean mIsAutoCorrectionActive;
-
-    private KeyboardTheme mKeyboardTheme = KEYBOARD_THEMES[THEME_INDEX_DEFAULT];
+    private KeyboardTheme mKeyboardTheme;
     private Context mThemeContext;
 
     private static final KeyboardSwitcher sInstance = new KeyboardSwitcher();
@@ -105,7 +81,6 @@
 
     private void initInternal(final LatinIME latinIme, final SharedPreferences prefs) {
         mLatinIME = latinIme;
-        mResources = latinIme.getResources();
         mPrefs = prefs;
         mSubtypeSwitcher = SubtypeSwitcher.getInstance();
         mState = new KeyboardState(this);
@@ -115,28 +90,15 @@
 
     public void updateKeyboardTheme() {
         final boolean themeUpdated = updateKeyboardThemeAndContextThemeWrapper(
-                mLatinIME, getKeyboardTheme(mLatinIME, mPrefs));
+                mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs));
         if (themeUpdated && mKeyboardView != null) {
             mLatinIME.setInputView(onCreateInputView(mIsHardwareAcceleratedDrawingEnabled));
         }
     }
 
-    private static KeyboardTheme getKeyboardTheme(final Context context,
-            final SharedPreferences prefs) {
-        final Resources res = context.getResources();
-        final int index = Settings.readKeyboardThemeIndex(prefs, res);
-        if (index >= 0 && index < KEYBOARD_THEMES.length) {
-            return KEYBOARD_THEMES[index];
-        }
-        final int defaultThemeIndex = Settings.resetAndGetDefaultKeyboardThemeIndex(prefs, res);
-        Log.w(TAG, "Illegal keyboard theme in preference: " + index + ", default to "
-                + defaultThemeIndex);
-        return KEYBOARD_THEMES[defaultThemeIndex];
-    }
-
     private boolean updateKeyboardThemeAndContextThemeWrapper(final Context context,
             final KeyboardTheme keyboardTheme) {
-        if (mThemeContext == null || mKeyboardTheme.mThemeId != keyboardTheme.mThemeId) {
+        if (mThemeContext == null || !keyboardTheme.equals(mKeyboardTheme)) {
             mKeyboardTheme = keyboardTheme;
             mThemeContext = new ContextThemeWrapper(context, keyboardTheme.mStyleId);
             KeyboardLayoutSet.clearKeyboardCache();
@@ -145,7 +107,8 @@
         return false;
     }
 
-    public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues settingsValues) {
+    public void loadKeyboard(final EditorInfo editorInfo, final SettingsValues settingsValues,
+            final int currentAutoCapsState, final int currentRecapitalizeState) {
         final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
                 mThemeContext, editorInfo);
         final Resources res = mThemeContext.getResources();
@@ -153,16 +116,15 @@
         final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
         builder.setKeyboardGeometry(keyboardWidth, keyboardHeight);
         builder.setSubtype(mSubtypeSwitcher.getCurrentSubtype());
-        builder.setOptions(
-                settingsValues.isVoiceKeyEnabled(editorInfo),
-                true /* always show a voice key on the main keyboard */,
-                settingsValues.isLanguageSwitchKeyEnabled());
+        builder.setVoiceInputKeyEnabled(settingsValues.mShowsVoiceInputKey);
+        builder.setLanguageSwitchKeyEnabled(mLatinIME.shouldShowLanguageSwitchKey());
         mKeyboardLayoutSet = builder.build();
+        mCurrentSettingsValues = settingsValues;
         try {
-            mState.onLoadKeyboard();
+            mState.onLoadKeyboard(currentAutoCapsState, currentRecapitalizeState);
+            mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext);
         } catch (KeyboardLayoutSetException e) {
             Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause());
-            LatinImeLogger.logOnException(e.mKeyboardId.toString(), e.getCause());
             return;
         }
     }
@@ -173,12 +135,10 @@
         }
     }
 
-    public void onFinishInputView() {
-        mIsAutoCorrectionActive = false;
-    }
-
     public void onHideWindow() {
-        mIsAutoCorrectionActive = false;
+        if (mKeyboardView != null) {
+            mKeyboardView.onHideWindow();
+        }
     }
 
     private void setKeyboard(final Keyboard keyboard) {
@@ -187,18 +147,24 @@
         final MainKeyboardView keyboardView = mKeyboardView;
         final Keyboard oldKeyboard = keyboardView.getKeyboard();
         keyboardView.setKeyboard(keyboard);
-        mCurrentInputView.setKeyboardGeometry(keyboard.mTopPadding);
+        mCurrentInputView.setKeyboardTopPadding(keyboard.mTopPadding);
         keyboardView.setKeyPreviewPopupEnabled(
-                Settings.readKeyPreviewPopupEnabled(mPrefs, mResources),
-                Settings.readKeyPreviewPopupDismissDelay(mPrefs, mResources));
-        keyboardView.updateAutoCorrectionState(mIsAutoCorrectionActive);
+                mCurrentSettingsValues.mKeyPreviewPopupOn,
+                mCurrentSettingsValues.mKeyPreviewPopupDismissDelay);
+        keyboardView.setKeyPreviewAnimationParams(
+                mCurrentSettingsValues.mKeyPreviewShowUpStartScale,
+                mCurrentSettingsValues.mKeyPreviewShowUpDuration,
+                mCurrentSettingsValues.mKeyPreviewDismissEndScale,
+                mCurrentSettingsValues.mKeyPreviewDismissDuration);
         keyboardView.updateShortcutKey(mSubtypeSwitcher.isShortcutImeReady());
         final boolean subtypeChanged = (oldKeyboard == null)
                 || !keyboard.mId.mLocale.equals(oldKeyboard.mId.mLocale);
-        final boolean needsToDisplayLanguage = mSubtypeSwitcher.needsToDisplayLanguage(
-                keyboard.mId.mLocale);
-        keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, needsToDisplayLanguage,
-                RichInputMethodManager.getInstance().hasMultipleEnabledIMEsOrSubtypes(true));
+        final int languageOnSpacebarFormatType = mSubtypeSwitcher.getLanguageOnSpacebarFormatType(
+                keyboard.mId.mSubtype);
+        final boolean hasMultipleEnabledIMEsOrSubtypes = RichInputMethodManager.getInstance()
+                .hasMultipleEnabledIMEsOrSubtypes(true /* shouldIncludeAuxiliarySubtypes */);
+        keyboardView.startDisplayLanguageOnSpacebar(subtypeChanged, languageOnSpacebarFormatType,
+                hasMultipleEnabledIMEsOrSubtypes);
     }
 
     public Keyboard getKeyboard() {
@@ -208,30 +174,26 @@
         return null;
     }
 
-    /**
-     * Update keyboard shift state triggered by connected EditText status change.
-     */
-    public void updateShiftState() {
-        mState.onUpdateShiftState(mLatinIME.getCurrentAutoCapsState(),
-                mLatinIME.getCurrentRecapitalizeState());
-    }
-
     // TODO: Remove this method. Come up with a more comprehensive way to reset the keyboard layout
     // when a keyboard layout set doesn't get reloaded in LatinIME.onStartInputViewInternal().
-    public void resetKeyboardStateToAlphabet() {
-        mState.onResetKeyboardStateToAlphabet();
+    public void resetKeyboardStateToAlphabet(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
+        mState.onResetKeyboardStateToAlphabet(currentAutoCapsState, currentRecapitalizeState);
     }
 
-    public void onPressKey(final int code, final boolean isSinglePointer) {
-        mState.onPressKey(code, isSinglePointer, mLatinIME.getCurrentAutoCapsState());
+    public void onPressKey(final int code, final boolean isSinglePointer,
+            final int currentAutoCapsState, final int currentRecapitalizeState) {
+        mState.onPressKey(code, isSinglePointer, currentAutoCapsState, currentRecapitalizeState);
     }
 
-    public void onReleaseKey(final int code, final boolean withSliding) {
-        mState.onReleaseKey(code, withSliding);
+    public void onReleaseKey(final int code, final boolean withSliding,
+            final int currentAutoCapsState, final int currentRecapitalizeState) {
+        mState.onReleaseKey(code, withSliding, currentAutoCapsState, currentRecapitalizeState);
     }
 
-    public void onFinishSlidingInput() {
-        mState.onFinishSlidingInput();
+    public void onFinishSlidingInput(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
+        mState.onFinishSlidingInput(currentAutoCapsState, currentRecapitalizeState);
     }
 
     // Implements {@link KeyboardState.SwitchActions}.
@@ -279,8 +241,11 @@
     // Implements {@link KeyboardState.SwitchActions}.
     @Override
     public void setEmojiKeyboard() {
+        final Keyboard keyboard = mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET);
         mMainKeyboardFrame.setVisibility(View.GONE);
-        mEmojiPalettesView.startEmojiPalettes();
+        mEmojiPalettesView.startEmojiPalettes(
+                mKeyboardTextsSet.getText(KeyboardTextsSet.SWITCH_TO_ALPHA_KEY_LABEL),
+                mKeyboardView.getKeyVisualAttribute(), keyboard.mIconsSet);
         mEmojiPalettesView.setVisibility(View.VISIBLE);
     }
 
@@ -290,11 +255,10 @@
         setKeyboard(mKeyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_SYMBOLS_SHIFTED));
     }
 
-    // Implements {@link KeyboardState.SwitchActions}.
-    @Override
-    public void requestUpdatingShiftState() {
-        mState.onUpdateShiftState(mLatinIME.getCurrentAutoCapsState(),
-                mLatinIME.getCurrentRecapitalizeState());
+    // Future method for requesting an updating to the shift state.
+    public void requestUpdatingShiftState(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
+        mState.onUpdateShiftState(currentAutoCapsState, currentRecapitalizeState);
     }
 
     // Implements {@link KeyboardState.SwitchActions}.
@@ -325,12 +289,9 @@
     /**
      * Updates state machine to figure out when to automatically switch back to the previous mode.
      */
-    public void onCodeInput(final int code) {
-        mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState());
-    }
-
-    private boolean isShowingMainKeyboard() {
-        return null != mKeyboardView && mKeyboardView.isShown();
+    public void onCodeInput(final int code, final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
+        mState.onCodeInput(code, currentAutoCapsState, currentRecapitalizeState);
     }
 
     public boolean isShowingEmojiPalettes() {
@@ -365,16 +326,13 @@
         }
     }
 
-    public boolean isShowingMainKeyboardOrEmojiPalettes() {
-        return isShowingMainKeyboard() || isShowingEmojiPalettes();
-    }
-
     public View onCreateInputView(final boolean isHardwareAcceleratedDrawingEnabled) {
         if (mKeyboardView != null) {
             mKeyboardView.closing();
         }
 
-        updateKeyboardThemeAndContextThemeWrapper(mLatinIME, mKeyboardTheme);
+        updateKeyboardThemeAndContextThemeWrapper(
+                mLatinIME, KeyboardTheme.getKeyboardTheme(mPrefs));
         mCurrentInputView = (InputView)LayoutInflater.from(mThemeContext).inflate(
                 R.layout.input_view, null);
         mMainKeyboardFrame = mCurrentInputView.findViewById(R.id.main_keyboard_frame);
@@ -387,11 +345,6 @@
         mEmojiPalettesView.setHardwareAcceleratedDrawingEnabled(
                 isHardwareAcceleratedDrawingEnabled);
         mEmojiPalettesView.setKeyboardActionListener(mLatinIME);
-
-        // This always needs to be set since the accessibility state can
-        // potentially change without the input view being re-created.
-        AccessibleKeyboardViewProxy.getInstance().setView(mKeyboardView);
-
         return mCurrentInputView;
     }
 
@@ -401,15 +354,6 @@
         }
     }
 
-    public void onAutoCorrectionStateChanged(final boolean isAutoCorrection) {
-        if (mIsAutoCorrectionActive != isAutoCorrection) {
-            mIsAutoCorrectionActive = isAutoCorrection;
-            if (mKeyboardView != null) {
-                mKeyboardView.updateAutoCorrectionState(isAutoCorrection);
-            }
-        }
-    }
-
     public int getKeyboardShiftMode() {
         final Keyboard keyboard = getKeyboard();
         if (keyboard == null) {
@@ -427,4 +371,11 @@
             return WordComposer.CAPS_MODE_OFF;
         }
     }
+
+    public int getCurrentKeyboardScriptId() {
+        if (null == mKeyboardLayoutSet) {
+            return ScriptUtils.SCRIPT_UNKNOWN;
+        }
+        return mKeyboardLayoutSet.getScriptId();
+    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
new file mode 100644
index 0000000..4c2e0dd
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.content.SharedPreferences;
+import android.os.Build;
+import android.os.Build.VERSION_CODES;
+import android.util.Log;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.R;
+
+import java.util.Arrays;
+
+public final class KeyboardTheme implements Comparable<KeyboardTheme> {
+    private static final String TAG = KeyboardTheme.class.getSimpleName();
+
+    static final String KLP_KEYBOARD_THEME_KEY = "pref_keyboard_layout_20110916";
+    static final String LXX_KEYBOARD_THEME_KEY = "pref_keyboard_theme_20140509";
+
+    public static final int THEME_ID_ICS = 0;
+    public static final int THEME_ID_KLP = 2;
+    public static final int THEME_ID_LXX_LIGHT = 3;
+    public static final int THEME_ID_LXX_DARK = 4;
+    public static final int DEFAULT_THEME_ID = THEME_ID_KLP;
+
+    private static final KeyboardTheme[] KEYBOARD_THEMES = {
+        new KeyboardTheme(THEME_ID_ICS, R.style.KeyboardTheme_ICS,
+                // This has never been selected because we support ICS or later.
+                VERSION_CODES.BASE),
+        new KeyboardTheme(THEME_ID_KLP, R.style.KeyboardTheme_KLP,
+                // Default theme for ICS, JB, and KLP.
+                VERSION_CODES.ICE_CREAM_SANDWICH),
+        new KeyboardTheme(THEME_ID_LXX_LIGHT, R.style.KeyboardTheme_LXX_Light,
+                // Default theme for LXX.
+                // TODO: Update this constant once the *next* version becomes available.
+                VERSION_CODES.CUR_DEVELOPMENT),
+        new KeyboardTheme(THEME_ID_LXX_DARK, R.style.KeyboardTheme_LXX_Dark,
+                VERSION_CODES.BASE),
+    };
+
+    static {
+        // Sort {@link #KEYBOARD_THEME} by descending order of {@link #mMinApiVersion}.
+        Arrays.sort(KEYBOARD_THEMES);
+    }
+
+    public final int mThemeId;
+    public final int mStyleId;
+    private final int mMinApiVersion;
+
+    // Note: The themeId should be aligned with "themeId" attribute of Keyboard style
+    // in values/themes-<style>.xml.
+    private KeyboardTheme(final int themeId, final int styleId, final int minApiVersion) {
+        mThemeId = themeId;
+        mStyleId = styleId;
+        mMinApiVersion = minApiVersion;
+    }
+
+    @Override
+    public int compareTo(final KeyboardTheme rhs) {
+        if (mMinApiVersion > rhs.mMinApiVersion) return -1;
+        if (mMinApiVersion < rhs.mMinApiVersion) return 1;
+        return 0;
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        if (o == this) return true;
+        return (o instanceof KeyboardTheme) && ((KeyboardTheme)o).mThemeId == mThemeId;
+    }
+
+    @Override
+    public int hashCode() {
+        return mThemeId;
+    }
+
+    @UsedForTesting
+    static KeyboardTheme searchKeyboardThemeById(final int themeId) {
+        // TODO: This search algorithm isn't optimal if there are many themes.
+        for (final KeyboardTheme theme : KEYBOARD_THEMES) {
+            if (theme.mThemeId == themeId) {
+                return theme;
+            }
+        }
+        return null;
+    }
+
+    private static int getSdkVersion() {
+        final int sdkVersion = Build.VERSION.SDK_INT;
+        // TODO: Consider to remove this check once the *next* version becomes available.
+        if (sdkVersion > VERSION_CODES.KITKAT) {
+            return VERSION_CODES.CUR_DEVELOPMENT;
+        }
+        return sdkVersion;
+    }
+
+    @UsedForTesting
+    static KeyboardTheme getDefaultKeyboardTheme(final SharedPreferences prefs,
+            final int sdkVersion) {
+        final String klpThemeIdString = prefs.getString(KLP_KEYBOARD_THEME_KEY, null);
+        if (klpThemeIdString != null) {
+            if (sdkVersion <= VERSION_CODES.KITKAT) {
+                try {
+                    final int themeId = Integer.parseInt(klpThemeIdString);
+                    final KeyboardTheme theme = searchKeyboardThemeById(themeId);
+                    if (theme != null) {
+                        return theme;
+                    }
+                    Log.w(TAG, "Unknown keyboard theme in KLP preference: " + klpThemeIdString);
+                } catch (final NumberFormatException e) {
+                    Log.w(TAG, "Illegal keyboard theme in KLP preference: " + klpThemeIdString, e);
+                }
+            }
+            // Remove old preference.
+            Log.i(TAG, "Remove KLP keyboard theme preference: " + klpThemeIdString);
+            prefs.edit().remove(KLP_KEYBOARD_THEME_KEY).apply();
+        }
+        // TODO: This search algorithm isn't optimal if there are many themes.
+        for (final KeyboardTheme theme : KEYBOARD_THEMES) {
+            if (sdkVersion >= theme.mMinApiVersion) {
+                return theme;
+            }
+        }
+        return searchKeyboardThemeById(DEFAULT_THEME_ID);
+    }
+
+    public static void saveKeyboardThemeId(final String themeIdString,
+            final SharedPreferences prefs) {
+        saveKeyboardThemeId(themeIdString, prefs, getSdkVersion());
+    }
+
+    @UsedForTesting
+    static String getPreferenceKey(final int sdkVersion) {
+        if (sdkVersion <= VERSION_CODES.KITKAT) {
+            return KLP_KEYBOARD_THEME_KEY;
+        }
+        return LXX_KEYBOARD_THEME_KEY;
+    }
+
+    @UsedForTesting
+    static void saveKeyboardThemeId(final String themeIdString,
+            final SharedPreferences prefs, final int sdkVersion) {
+        final String prefKey = getPreferenceKey(sdkVersion);
+        prefs.edit().putString(prefKey, themeIdString).apply();
+    }
+
+    public static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs) {
+        return getKeyboardTheme(prefs, getSdkVersion());
+    }
+
+    @UsedForTesting
+    static KeyboardTheme getKeyboardTheme(final SharedPreferences prefs, final int sdkVersion) {
+        final String lxxThemeIdString = prefs.getString(LXX_KEYBOARD_THEME_KEY, null);
+        if (lxxThemeIdString == null) {
+            return getDefaultKeyboardTheme(prefs, sdkVersion);
+        }
+        try {
+            final int themeId = Integer.parseInt(lxxThemeIdString);
+            final KeyboardTheme theme = searchKeyboardThemeById(themeId);
+            if (theme != null) {
+                return theme;
+            }
+            Log.w(TAG, "Unknown keyboard theme in LXX preference: " + lxxThemeIdString);
+        } catch (final NumberFormatException e) {
+            Log.w(TAG, "Illegal keyboard theme in LXX preference: " + lxxThemeIdString, e);
+        }
+        // Remove preference that contains unknown or illegal theme id.
+        prefs.edit().remove(LXX_KEYBOARD_THEME_KEY).apply();
+        return getDefaultKeyboardTheme(prefs, sdkVersion);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 5578713..f967f62 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -28,18 +28,15 @@
 import android.graphics.Region;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.NinePatchDrawable;
 import android.util.AttributeSet;
 import android.view.View;
 
 import com.android.inputmethod.keyboard.internal.KeyDrawParams;
 import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.define.ProductionFlag;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.TypefaceUtils;
-import com.android.inputmethod.research.ResearchLogger;
 
 import java.util.HashSet;
 
@@ -47,7 +44,9 @@
  * A view that renders a virtual {@link Keyboard}.
  *
  * @attr ref R.styleable#KeyboardView_keyBackground
- * @attr ref R.styleable#KeyboardView_keyLabelHorizontalPadding
+ * @attr ref R.styleable#KeyboardView_functionalKeyBackground
+ * @attr ref R.styleable#KeyboardView_spacebarBackground
+ * @attr ref R.styleable#KeyboardView_spacebarIconWidthRatio
  * @attr ref R.styleable#KeyboardView_keyHintLetterPadding
  * @attr ref R.styleable#KeyboardView_keyPopupHintLetterPadding
  * @attr ref R.styleable#KeyboardView_keyShiftedLetterHintPadding
@@ -74,23 +73,21 @@
 public class KeyboardView extends View {
     // XML attributes
     private final KeyVisualAttributes mKeyVisualAttributes;
-    private final int mKeyLabelHorizontalPadding;
     private final float mKeyHintLetterPadding;
     private final float mKeyPopupHintLetterPadding;
     private final float mKeyShiftedLetterHintPadding;
     private final float mKeyTextShadowRadius;
     private final float mVerticalCorrection;
     private final Drawable mKeyBackground;
+    private final Drawable mFunctionalKeyBackground;
+    private final Drawable mSpacebarBackground;
+    private final float mSpacebarIconWidthRatio;
     private final Rect mKeyBackgroundPadding = new Rect();
+    private static final float KET_TEXT_SHADOW_RADIUS_DISABLED = -1.0f;
 
     // HORIZONTAL ELLIPSIS "...", character for popup hint.
     private static final String POPUP_HINT_CHAR = "\u2026";
 
-    // Margin between the label and the icon on a key that has both of them.
-    // Specified by the fraction of the key width.
-    // TODO: Use resource parameter for this value.
-    private static final float LABEL_ICON_MARGIN = 0.05f;
-
     // The maximum key label width in the proportion to the key width.
     private static final float MAX_LABEL_RATIO = 0.90f;
 
@@ -102,7 +99,7 @@
     /** True if all keys should be drawn */
     private boolean mInvalidateAllKeys;
     /** The keys that should be drawn */
-    private final HashSet<Key> mInvalidatedKeys = CollectionUtils.newHashSet();
+    private final HashSet<Key> mInvalidatedKeys = new HashSet<>();
     /** The working rectangle variable */
     private final Rect mWorkingRect = new Rect();
     /** The keyboard bitmap buffer for faster updates */
@@ -113,9 +110,6 @@
     private final Canvas mOffscreenCanvas = new Canvas();
     private final Paint mPaint = new Paint();
     private final Paint.FontMetrics mFontMetrics = new Paint.FontMetrics();
-    private static final char[] KEY_LABEL_REFERENCE_CHAR = { 'M' };
-    private static final char[] KEY_NUMERIC_HINT_LABEL_REFERENCE_CHAR = { '8' };
-
     public KeyboardView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.keyboardViewStyle);
     }
@@ -127,8 +121,15 @@
                 R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
         mKeyBackground = keyboardViewAttr.getDrawable(R.styleable.KeyboardView_keyBackground);
         mKeyBackground.getPadding(mKeyBackgroundPadding);
-        mKeyLabelHorizontalPadding = keyboardViewAttr.getDimensionPixelOffset(
-                R.styleable.KeyboardView_keyLabelHorizontalPadding, 0);
+        final Drawable functionalKeyBackground = keyboardViewAttr.getDrawable(
+                R.styleable.KeyboardView_functionalKeyBackground);
+        mFunctionalKeyBackground = (functionalKeyBackground != null) ? functionalKeyBackground
+                : mKeyBackground;
+        final Drawable spacebarBackground = keyboardViewAttr.getDrawable(
+                R.styleable.KeyboardView_spacebarBackground);
+        mSpacebarBackground = (spacebarBackground != null) ? spacebarBackground : mKeyBackground;
+        mSpacebarIconWidthRatio = keyboardViewAttr.getFloat(
+                R.styleable.KeyboardView_spacebarIconWidthRatio, 1.0f);
         mKeyHintLetterPadding = keyboardViewAttr.getDimension(
                 R.styleable.KeyboardView_keyHintLetterPadding, 0.0f);
         mKeyPopupHintLetterPadding = keyboardViewAttr.getDimension(
@@ -136,7 +137,7 @@
         mKeyShiftedLetterHintPadding = keyboardViewAttr.getDimension(
                 R.styleable.KeyboardView_keyShiftedLetterHintPadding, 0.0f);
         mKeyTextShadowRadius = keyboardViewAttr.getFloat(
-                R.styleable.KeyboardView_keyTextShadowRadius, 0.0f);
+                R.styleable.KeyboardView_keyTextShadowRadius, KET_TEXT_SHADOW_RADIUS_DISABLED);
         mVerticalCorrection = keyboardViewAttr.getDimension(
                 R.styleable.KeyboardView_verticalCorrection, 0.0f);
         keyboardViewAttr.recycle();
@@ -149,6 +150,10 @@
         mPaint.setAntiAlias(true);
     }
 
+    public KeyVisualAttributes getKeyVisualAttribute() {
+        return mKeyVisualAttributes;
+    }
+
     private static void blendAlpha(final Paint paint, final int alpha) {
         final int color = paint.getColor();
         paint.setARGB((paint.getAlpha() * alpha) / Constants.Color.ALPHA_OPAQUE,
@@ -170,7 +175,6 @@
      */
     public void setKeyboard(final Keyboard keyboard) {
         mKeyboard = keyboard;
-        LatinImeLogger.onSetKeyboard(keyboard);
         final int keyHeight = keyboard.mMostCommonKeyHeight - keyboard.mVerticalGap;
         mKeyDrawParams.updateParams(keyHeight, mKeyVisualAttributes);
         mKeyDrawParams.updateParams(keyHeight, keyboard.mKeyVisualAttributes);
@@ -288,7 +292,7 @@
         // TODO: Confirm if it's really required to draw all keys when hardware acceleration is on.
         if (drawAllKeys || isHardwareAccelerated) {
             // Draw all keys.
-            for (final Key key : mKeyboard.getKeys()) {
+            for (final Key key : mKeyboard.getSortedKeys()) {
                 onDrawKey(key, canvas, paint);
             }
         } else {
@@ -300,13 +304,6 @@
             }
         }
 
-        // Research Logging (Development Only Diagnostics) indicator.
-        // TODO: Reimplement using a keyboard background image specific to the ResearchLogger,
-        // and remove this call.
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.getInstance().paintIndicator(this, paint, canvas, width, height);
-        }
-
         mInvalidatedKeys.clear();
         mInvalidateAllKeys = false;
     }
@@ -322,7 +319,9 @@
         params.mAnimAlpha = Constants.Color.ALPHA_OPAQUE;
 
         if (!key.isSpacer()) {
-            onDrawKeyBackground(key, canvas);
+            final Drawable background = key.selectBackgroundDrawable(
+                    mKeyBackground, mFunctionalKeyBackground, mSpacebarBackground);
+            onDrawKeyBackground(key, canvas, background);
         }
         onDrawKeyTopVisuals(key, canvas, paint, params);
 
@@ -330,24 +329,19 @@
     }
 
     // Draw key background.
-    protected void onDrawKeyBackground(final Key key, final Canvas canvas) {
+    protected void onDrawKeyBackground(final Key key, final Canvas canvas,
+            final Drawable background) {
         final Rect padding = mKeyBackgroundPadding;
         final int bgWidth = key.getDrawWidth() + padding.left + padding.right;
         final int bgHeight = key.getHeight() + padding.top + padding.bottom;
         final int bgX = -padding.left;
         final int bgY = -padding.top;
-        final int[] drawableState = key.getCurrentDrawableState();
-        final Drawable background = mKeyBackground;
-        background.setState(drawableState);
         final Rect bounds = background.getBounds();
         if (bgWidth != bounds.right || bgHeight != bounds.bottom) {
             background.setBounds(0, 0, bgWidth, bgHeight);
         }
         canvas.translate(bgX, bgY);
         background.draw(canvas);
-        if (LatinImeLogger.sVISUALDEBUG) {
-            drawRectangle(canvas, 0.0f, 0.0f, bgWidth, bgHeight, 0x80c00000, new Paint());
-        }
         canvas.translate(-bgX, -bgY);
     }
 
@@ -359,10 +353,6 @@
         final float centerX = keyWidth * 0.5f;
         final float centerY = keyHeight * 0.5f;
 
-        if (LatinImeLogger.sVISUALDEBUG) {
-            drawRectangle(canvas, 0.0f, 0.0f, keyWidth, keyHeight, 0x800000c0, new Paint());
-        }
-
         // Draw key label.
         final Drawable icon = key.getIcon(mKeyboard.mIconsSet, params.mAnimAlpha);
         float positionX = centerX;
@@ -370,77 +360,50 @@
         if (label != null) {
             paint.setTypeface(key.selectTypeface(params));
             paint.setTextSize(key.selectTextSize(params));
-            final float labelCharHeight = TypefaceUtils.getCharHeight(
-                    KEY_LABEL_REFERENCE_CHAR, paint);
-            final float labelCharWidth = TypefaceUtils.getCharWidth(
-                    KEY_LABEL_REFERENCE_CHAR, paint);
+            final float labelCharHeight = TypefaceUtils.getReferenceCharHeight(paint);
+            final float labelCharWidth = TypefaceUtils.getReferenceCharWidth(paint);
 
             // Vertical label text alignment.
             final float baseline = centerY + labelCharHeight / 2.0f;
 
             // Horizontal label text alignment
-            float labelWidth = 0.0f;
-            if (key.isAlignLeft()) {
-                positionX = mKeyLabelHorizontalPadding;
-                paint.setTextAlign(Align.LEFT);
-            } else if (key.isAlignRight()) {
-                positionX = keyWidth - mKeyLabelHorizontalPadding;
-                paint.setTextAlign(Align.RIGHT);
-            } else if (key.isAlignLeftOfCenter()) {
+            if (key.isAlignLeftOfCenter()) {
                 // TODO: Parameterise this?
                 positionX = centerX - labelCharWidth * 7.0f / 4.0f;
                 paint.setTextAlign(Align.LEFT);
-            } else if (key.hasLabelWithIconLeft() && icon != null) {
-                labelWidth = TypefaceUtils.getLabelWidth(label, paint) + icon.getIntrinsicWidth()
-                        + LABEL_ICON_MARGIN * keyWidth;
-                positionX = centerX + labelWidth / 2.0f;
-                paint.setTextAlign(Align.RIGHT);
-            } else if (key.hasLabelWithIconRight() && icon != null) {
-                labelWidth = TypefaceUtils.getLabelWidth(label, paint) + icon.getIntrinsicWidth()
-                        + LABEL_ICON_MARGIN * keyWidth;
-                positionX = centerX - labelWidth / 2.0f;
-                paint.setTextAlign(Align.LEFT);
             } else {
                 positionX = centerX;
                 paint.setTextAlign(Align.CENTER);
             }
-            if (key.needsXScale()) {
-                paint.setTextScaleX(Math.min(1.0f,
-                        (keyWidth * MAX_LABEL_RATIO) / TypefaceUtils.getLabelWidth(label, paint)));
+            if (key.needsAutoXScale()) {
+                final float ratio = Math.min(1.0f, (keyWidth * MAX_LABEL_RATIO) /
+                        TypefaceUtils.getStringWidth(label, paint));
+                if (key.needsAutoScale()) {
+                    final float autoSize = paint.getTextSize() * ratio;
+                    paint.setTextSize(autoSize);
+                } else {
+                    paint.setTextScaleX(ratio);
+                }
             }
 
-            paint.setColor(key.selectTextColor(params));
             if (key.isEnabled()) {
-                // Set a drop shadow for the text
-                paint.setShadowLayer(mKeyTextShadowRadius, 0.0f, 0.0f, params.mTextShadowColor);
+                paint.setColor(key.selectTextColor(params));
+                // Set a drop shadow for the text if the shadow radius is positive value.
+                if (mKeyTextShadowRadius > 0.0f) {
+                    paint.setShadowLayer(mKeyTextShadowRadius, 0.0f, 0.0f, params.mTextShadowColor);
+                } else {
+                    paint.clearShadowLayer();
+                }
             } else {
                 // Make label invisible
                 paint.setColor(Color.TRANSPARENT);
+                paint.clearShadowLayer();
             }
             blendAlpha(paint, params.mAnimAlpha);
             canvas.drawText(label, 0, label.length(), positionX, baseline, paint);
             // Turn off drop shadow and reset x-scale.
-            paint.setShadowLayer(0.0f, 0.0f, 0.0f, Color.TRANSPARENT);
+            paint.clearShadowLayer();
             paint.setTextScaleX(1.0f);
-
-            if (icon != null) {
-                final int iconWidth = icon.getIntrinsicWidth();
-                final int iconHeight = icon.getIntrinsicHeight();
-                final int iconY = (keyHeight - iconHeight) / 2;
-                if (key.hasLabelWithIconLeft()) {
-                    final int iconX = (int)(centerX - labelWidth / 2.0f);
-                    drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
-                } else if (key.hasLabelWithIconRight()) {
-                    final int iconX = (int)(centerX + labelWidth / 2.0f - iconWidth);
-                    drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
-                }
-            }
-
-            if (LatinImeLogger.sVISUALDEBUG) {
-                final Paint line = new Paint();
-                drawHorizontalLine(canvas, baseline, keyWidth, 0xc0008000, line);
-                drawVerticalLine(canvas, positionX, keyHeight, 0xc0800080, line);
-            }
         }
 
         // Draw hint label.
@@ -451,67 +414,50 @@
             // TODO: Should add a way to specify type face for hint letters
             paint.setTypeface(Typeface.DEFAULT_BOLD);
             blendAlpha(paint, params.mAnimAlpha);
+            final float labelCharHeight = TypefaceUtils.getReferenceCharHeight(paint);
+            final float labelCharWidth = TypefaceUtils.getReferenceCharWidth(paint);
+            final KeyVisualAttributes visualAttr = key.getVisualAttributes();
+            final float adjustmentY = (visualAttr == null) ? 0.0f
+                    : visualAttr.mHintLabelVerticalAdjustment * labelCharHeight;
             final float hintX, hintY;
             if (key.hasHintLabel()) {
                 // The hint label is placed just right of the key label. Used mainly on
                 // "phone number" layout.
                 // TODO: Generalize the following calculations.
-                hintX = positionX
-                        + TypefaceUtils.getCharWidth(KEY_LABEL_REFERENCE_CHAR, paint) * 2.0f;
-                hintY = centerY
-                        + TypefaceUtils.getCharHeight(KEY_LABEL_REFERENCE_CHAR, paint) / 2.0f;
+                hintX = positionX + labelCharWidth * 2.0f;
+                hintY = centerY + labelCharHeight / 2.0f;
                 paint.setTextAlign(Align.LEFT);
             } else if (key.hasShiftedLetterHint()) {
                 // The hint label is placed at top-right corner of the key. Used mainly on tablet.
-                hintX = keyWidth - mKeyShiftedLetterHintPadding
-                        - TypefaceUtils.getCharWidth(KEY_LABEL_REFERENCE_CHAR, paint) / 2.0f;
+                hintX = keyWidth - mKeyShiftedLetterHintPadding - labelCharWidth / 2.0f;
                 paint.getFontMetrics(mFontMetrics);
                 hintY = -mFontMetrics.top;
                 paint.setTextAlign(Align.CENTER);
             } else { // key.hasHintLetter()
                 // The hint letter is placed at top-right corner of the key. Used mainly on phone.
-                final float keyNumericHintLabelReferenceCharWidth =
-                        TypefaceUtils.getCharWidth(KEY_NUMERIC_HINT_LABEL_REFERENCE_CHAR, paint);
-                final float keyHintLabelStringWidth =
-                        TypefaceUtils.getStringWidth(hintLabel, paint);
+                final float hintDigitWidth = TypefaceUtils.getReferenceDigitWidth(paint);
+                final float hintLabelWidth = TypefaceUtils.getStringWidth(hintLabel, paint);
                 hintX = keyWidth - mKeyHintLetterPadding
-                        - Math.max(keyNumericHintLabelReferenceCharWidth, keyHintLabelStringWidth)
-                                / 2.0f;
+                        - Math.max(hintDigitWidth, hintLabelWidth) / 2.0f;
                 hintY = -paint.ascent();
                 paint.setTextAlign(Align.CENTER);
             }
-            canvas.drawText(hintLabel, 0, hintLabel.length(), hintX, hintY, paint);
-
-            if (LatinImeLogger.sVISUALDEBUG) {
-                final Paint line = new Paint();
-                drawHorizontalLine(canvas, (int)hintY, keyWidth, 0xc0808000, line);
-                drawVerticalLine(canvas, (int)hintX, keyHeight, 0xc0808000, line);
-            }
+            canvas.drawText(hintLabel, 0, hintLabel.length(), hintX, hintY + adjustmentY, paint);
         }
 
         // Draw key icon.
         if (label == null && icon != null) {
-            final int iconWidth = Math.min(icon.getIntrinsicWidth(), keyWidth);
+            final int iconWidth;
+            if (key.getCode() == Constants.CODE_SPACE && icon instanceof NinePatchDrawable) {
+                iconWidth = (int)(keyWidth * mSpacebarIconWidthRatio);
+            } else {
+                iconWidth = Math.min(icon.getIntrinsicWidth(), keyWidth);
+            }
             final int iconHeight = icon.getIntrinsicHeight();
-            final int iconX, alignX;
+            // Align center.
             final int iconY = (keyHeight - iconHeight) / 2;
-            if (key.isAlignLeft()) {
-                iconX = mKeyLabelHorizontalPadding;
-                alignX = iconX;
-            } else if (key.isAlignRight()) {
-                iconX = keyWidth - mKeyLabelHorizontalPadding - iconWidth;
-                alignX = iconX + iconWidth;
-            } else { // Align center
-                iconX = (keyWidth - iconWidth) / 2;
-                alignX = iconX + iconWidth / 2;
-            }
+            final int iconX = (keyWidth - iconWidth) / 2;
             drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
-
-            if (LatinImeLogger.sVISUALDEBUG) {
-                final Paint line = new Paint();
-                drawVerticalLine(canvas, alignX, keyHeight, 0xc0800080, line);
-                drawRectangle(canvas, iconX, iconY, iconWidth, iconHeight, 0x80c00000, line);
-            }
         }
 
         if (key.hasPopupHint() && key.getMoreKeys() != null) {
@@ -530,15 +476,9 @@
         paint.setColor(params.mHintLabelColor);
         paint.setTextAlign(Align.CENTER);
         final float hintX = keyWidth - mKeyHintLetterPadding
-                - TypefaceUtils.getCharWidth(KEY_LABEL_REFERENCE_CHAR, paint) / 2.0f;
+                - TypefaceUtils.getReferenceCharWidth(paint) / 2.0f;
         final float hintY = keyHeight - mKeyPopupHintLetterPadding;
         canvas.drawText(POPUP_HINT_CHAR, hintX, hintY, paint);
-
-        if (LatinImeLogger.sVISUALDEBUG) {
-            final Paint line = new Paint();
-            drawHorizontalLine(canvas, (int)hintY, keyWidth, 0xc0808000, line);
-            drawVerticalLine(canvas, (int)hintX, keyHeight, 0xc0808000, line);
-        }
     }
 
     protected static void drawIcon(final Canvas canvas, final Drawable icon, final int x,
@@ -549,32 +489,6 @@
         canvas.translate(-x, -y);
     }
 
-    private static void drawHorizontalLine(final Canvas canvas, final float y, final float w,
-            final int color, final Paint paint) {
-        paint.setStyle(Paint.Style.STROKE);
-        paint.setStrokeWidth(1.0f);
-        paint.setColor(color);
-        canvas.drawLine(0.0f, y, w, y, paint);
-    }
-
-    private static void drawVerticalLine(final Canvas canvas, final float x, final float h,
-            final int color, final Paint paint) {
-        paint.setStyle(Paint.Style.STROKE);
-        paint.setStrokeWidth(1.0f);
-        paint.setColor(color);
-        canvas.drawLine(x, 0.0f, x, h, paint);
-    }
-
-    private static void drawRectangle(final Canvas canvas, final float x, final float y,
-            final float w, final float h, final int color, final Paint paint) {
-        paint.setStyle(Paint.Style.STROKE);
-        paint.setStrokeWidth(1.0f);
-        paint.setColor(color);
-        canvas.translate(x, y);
-        canvas.drawRect(0.0f, 0.0f, w, h, paint);
-        canvas.translate(-x, -y);
-    }
-
     public Paint newLabelPaint(final Key key) {
         final Paint paint = new Paint();
         paint.setAntiAlias(true);
@@ -582,6 +496,7 @@
             paint.setTypeface(mKeyDrawParams.mTypeface);
             paint.setTextSize(mKeyDrawParams.mLabelSize);
         } else {
+            paint.setColor(key.selectTextColor(mKeyDrawParams));
             paint.setTypeface(key.selectTypeface(mKeyDrawParams));
             paint.setTextSize(key.selectTextSize(mKeyDrawParams));
         }
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index 13db470..702efb3 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -27,60 +27,47 @@
 import android.graphics.Paint;
 import android.graphics.Paint.Align;
 import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
-import android.os.Message;
-import android.os.SystemClock;
 import android.preference.PreferenceManager;
 import android.util.AttributeSet;
-import android.util.DisplayMetrics;
 import android.util.Log;
-import android.util.SparseArray;
-import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.inputmethod.InputMethodSubtype;
-import android.widget.TextView;
 
 import com.android.inputmethod.accessibility.AccessibilityUtils;
-import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
+import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate;
 import com.android.inputmethod.annotations.ExternallyReferenced;
-import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
-import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
-import com.android.inputmethod.keyboard.internal.GestureFloatingPreviewText;
-import com.android.inputmethod.keyboard.internal.GestureTrailsPreview;
+import com.android.inputmethod.keyboard.internal.DrawingHandler;
+import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView;
+import com.android.inputmethod.keyboard.internal.GestureFloatingTextDrawingPreview;
+import com.android.inputmethod.keyboard.internal.GestureTrailsDrawingPreview;
 import com.android.inputmethod.keyboard.internal.KeyDrawParams;
+import com.android.inputmethod.keyboard.internal.KeyPreviewChoreographer;
 import com.android.inputmethod.keyboard.internal.KeyPreviewDrawParams;
+import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper;
+import com.android.inputmethod.keyboard.internal.MoreKeySpec;
 import com.android.inputmethod.keyboard.internal.NonDistinctMultitouchHelper;
-import com.android.inputmethod.keyboard.internal.PreviewPlacerView;
-import com.android.inputmethod.keyboard.internal.SlidingKeyInputPreview;
+import com.android.inputmethod.keyboard.internal.SlidingKeyInputDrawingPreview;
+import com.android.inputmethod.keyboard.internal.TimerHandler;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.define.ProductionFlag;
 import com.android.inputmethod.latin.settings.DebugSettings;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.CoordinateUtils;
-import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper;
-import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+import com.android.inputmethod.latin.utils.SpacebarLanguageUtils;
 import com.android.inputmethod.latin.utils.TypefaceUtils;
-import com.android.inputmethod.latin.utils.UsabilityStudyLogUtils;
-import com.android.inputmethod.latin.utils.ViewLayoutUtils;
-import com.android.inputmethod.research.ResearchLogger;
 
 import java.util.WeakHashMap;
 
 /**
  * A view that is responsible for detecting key presses and touch movements.
  *
- * @attr ref R.styleable#MainKeyboardView_autoCorrectionSpacebarLedEnabled
- * @attr ref R.styleable#MainKeyboardView_autoCorrectionSpacebarLedIcon
- * @attr ref R.styleable#MainKeyboardView_spacebarTextRatio
- * @attr ref R.styleable#MainKeyboardView_spacebarTextColor
- * @attr ref R.styleable#MainKeyboardView_spacebarTextShadowColor
+ * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextRatio
+ * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextColor
+ * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextShadowRadius
+ * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarTextShadowColor
  * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarFinalAlpha
  * @attr ref R.styleable#MainKeyboardView_languageOnSpacebarFadeoutAnimator
  * @attr ref R.styleable#MainKeyboardView_altCodeKeyWhileTypingFadeoutAnimator
@@ -88,7 +75,7 @@
  * @attr ref R.styleable#MainKeyboardView_keyHysteresisDistance
  * @attr ref R.styleable#MainKeyboardView_touchNoiseThresholdTime
  * @attr ref R.styleable#MainKeyboardView_touchNoiseThresholdDistance
- * @attr ref R.styleable#MainKeyboardView_slidingKeyInputEnable
+ * @attr ref R.styleable#MainKeyboardView_keySelectionByDraggingFinger
  * @attr ref R.styleable#MainKeyboardView_keyRepeatStartTimeout
  * @attr ref R.styleable#MainKeyboardView_keyRepeatInterval
  * @attr ref R.styleable#MainKeyboardView_longPressKeyTimeout
@@ -114,61 +101,51 @@
  * @attr ref R.styleable#MainKeyboardView_gestureRecognitionSpeedThreshold
  * @attr ref R.styleable#MainKeyboardView_suppressKeyPreviewAfterBatchInputDuration
  */
-public final class MainKeyboardView extends KeyboardView implements PointerTracker.KeyEventHandler,
-        PointerTracker.DrawingProxy, MoreKeysPanel.Controller {
+public final class MainKeyboardView extends KeyboardView implements PointerTracker.DrawingProxy,
+        MoreKeysPanel.Controller, DrawingHandler.Callbacks, TimerHandler.Callbacks {
     private static final String TAG = MainKeyboardView.class.getSimpleName();
 
     /** Listener for {@link KeyboardActionListener}. */
     private KeyboardActionListener mKeyboardActionListener;
 
-    /* Space key and its icons */
+    /* Space key and its icon and background. */
     private Key mSpaceKey;
-    private Drawable mSpaceIcon;
     // Stuff to draw language name on spacebar.
     private final int mLanguageOnSpacebarFinalAlpha;
     private ObjectAnimator mLanguageOnSpacebarFadeoutAnimator;
-    private boolean mNeedsToDisplayLanguage;
+    private int mLanguageOnSpacebarFormatType;
     private boolean mHasMultipleEnabledIMEsOrSubtypes;
     private int mLanguageOnSpacebarAnimAlpha = Constants.Color.ALPHA_OPAQUE;
-    private final float mSpacebarTextRatio;
-    private float mSpacebarTextSize;
-    private final int mSpacebarTextColor;
-    private final int mSpacebarTextShadowColor;
+    private final float mLanguageOnSpacebarTextRatio;
+    private float mLanguageOnSpacebarTextSize;
+    private final int mLanguageOnSpacebarTextColor;
+    private final float mLanguageOnSpacebarTextShadowRadius;
+    private final int mLanguageOnSpacebarTextShadowColor;
+    private static final float LANGUAGE_ON_SPACEBAR_TEXT_SHADOW_RADIUS_DISABLED = -1.0f;
     // The minimum x-scale to fit the language name on spacebar.
     private static final float MINIMUM_XSCALE_OF_LANGUAGE_NAME = 0.8f;
-    // Stuff to draw auto correction LED on spacebar.
-    private boolean mAutoCorrectionSpacebarLedOn;
-    private final boolean mAutoCorrectionSpacebarLedEnabled;
-    private final Drawable mAutoCorrectionSpacebarLedIcon;
-    private static final int SPACE_LED_LENGTH_PERCENT = 80;
 
     // Stuff to draw altCodeWhileTyping keys.
-    private ObjectAnimator mAltCodeKeyWhileTypingFadeoutAnimator;
-    private ObjectAnimator mAltCodeKeyWhileTypingFadeinAnimator;
+    private final ObjectAnimator mAltCodeKeyWhileTypingFadeoutAnimator;
+    private final ObjectAnimator mAltCodeKeyWhileTypingFadeinAnimator;
     private int mAltCodeKeyWhileTypingAnimAlpha = Constants.Color.ALPHA_OPAQUE;
 
-    // Preview placer view
-    private final PreviewPlacerView mPreviewPlacerView;
+    // Drawing preview placer view
+    private final DrawingPreviewPlacerView mDrawingPreviewPlacerView;
     private final int[] mOriginCoords = CoordinateUtils.newInstance();
-    private final GestureFloatingPreviewText mGestureFloatingPreviewText;
-    private final GestureTrailsPreview mGestureTrailsPreview;
-    private final SlidingKeyInputPreview mSlidingKeyInputPreview;
+    private final GestureFloatingTextDrawingPreview mGestureFloatingTextDrawingPreview;
+    private final GestureTrailsDrawingPreview mGestureTrailsDrawingPreview;
+    private final SlidingKeyInputDrawingPreview mSlidingKeyInputDrawingPreview;
 
     // Key preview
-    private final int mKeyPreviewLayoutId;
-    private final int mKeyPreviewOffset;
-    private final int mKeyPreviewHeight;
-    private final SparseArray<TextView> mKeyPreviewTexts = CollectionUtils.newSparseArray();
-    private final KeyPreviewDrawParams mKeyPreviewDrawParams = new KeyPreviewDrawParams();
-    private boolean mShowKeyPreviewPopup = true;
-    private int mKeyPreviewLingerTimeout;
+    private final KeyPreviewDrawParams mKeyPreviewDrawParams;
+    private final KeyPreviewChoreographer mKeyPreviewChoreographer;
 
     // More keys keyboard
     private final Paint mBackgroundDimAlphaPaint = new Paint();
     private boolean mNeedsToDimEntireKeyboard;
     private final View mMoreKeysKeyboardContainer;
-    private final WeakHashMap<Key, Keyboard> mMoreKeysKeyboardCache =
-            CollectionUtils.newWeakHashMap();
+    private final WeakHashMap<Key, Keyboard> mMoreKeysKeyboardCache = new WeakHashMap<>();
     private final boolean mConfigShowMoreKeysKeyboardAtTouchedPoint;
     // More keys panel (used by both more keys keyboard and more suggestions view)
     // TODO: Consider extending to support multiple more keys panels
@@ -178,244 +155,15 @@
     // TODO: Make this parameter customizable by user via settings.
     private int mGestureFloatingPreviewTextLingerTimeout;
 
-    private KeyDetector mKeyDetector;
+    private final KeyDetector mKeyDetector;
     private final NonDistinctMultitouchHelper mNonDistinctMultitouchHelper;
 
-    private final KeyTimerHandler mKeyTimerHandler;
+    private final TimerHandler mKeyTimerHandler;
     private final int mLanguageOnSpacebarHorizontalMargin;
 
-    private static final class KeyTimerHandler extends StaticInnerHandlerWrapper<MainKeyboardView>
-            implements TimerProxy {
-        private static final int MSG_TYPING_STATE_EXPIRED = 0;
-        private static final int MSG_REPEAT_KEY = 1;
-        private static final int MSG_LONGPRESS_KEY = 2;
-        private static final int MSG_DOUBLE_TAP_SHIFT_KEY = 3;
-        private static final int MSG_UPDATE_BATCH_INPUT = 4;
-
-        private final int mIgnoreAltCodeKeyTimeout;
-        private final int mGestureRecognitionUpdateTime;
-
-        public KeyTimerHandler(final MainKeyboardView outerInstance,
-                final TypedArray mainKeyboardViewAttr) {
-            super(outerInstance);
-
-            mIgnoreAltCodeKeyTimeout = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_ignoreAltCodeKeyTimeout, 0);
-            mGestureRecognitionUpdateTime = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureRecognitionUpdateTime, 0);
-        }
-
-        @Override
-        public void handleMessage(final Message msg) {
-            final MainKeyboardView keyboardView = getOuterInstance();
-            if (keyboardView == null) {
-                return;
-            }
-            final PointerTracker tracker = (PointerTracker) msg.obj;
-            switch (msg.what) {
-            case MSG_TYPING_STATE_EXPIRED:
-                startWhileTypingFadeinAnimation(keyboardView);
-                break;
-            case MSG_REPEAT_KEY:
-                tracker.onKeyRepeat(msg.arg1 /* code */, msg.arg2 /* repeatCount */);
-                break;
-            case MSG_LONGPRESS_KEY:
-                keyboardView.onLongPress(tracker);
-                break;
-            case MSG_UPDATE_BATCH_INPUT:
-                tracker.updateBatchInputByTimer(SystemClock.uptimeMillis());
-                startUpdateBatchInputTimer(tracker);
-                break;
-            }
-        }
-
-        @Override
-        public void startKeyRepeatTimer(final PointerTracker tracker, final int repeatCount,
-                final int delay) {
-            final Key key = tracker.getKey();
-            if (key == null || delay == 0) {
-                return;
-            }
-            sendMessageDelayed(
-                    obtainMessage(MSG_REPEAT_KEY, key.getCode(), repeatCount, tracker), delay);
-        }
-
-        public void cancelKeyRepeatTimer() {
-            removeMessages(MSG_REPEAT_KEY);
-        }
-
-        // TODO: Suppress layout changes in key repeat mode
-        public boolean isInKeyRepeat() {
-            return hasMessages(MSG_REPEAT_KEY);
-        }
-
-        @Override
-        public void startLongPressTimer(final PointerTracker tracker, final int delay) {
-            cancelLongPressTimer();
-            if (delay <= 0) return;
-            sendMessageDelayed(obtainMessage(MSG_LONGPRESS_KEY, tracker), delay);
-        }
-
-        @Override
-        public void cancelLongPressTimer() {
-            removeMessages(MSG_LONGPRESS_KEY);
-        }
-
-        private static void cancelAndStartAnimators(final ObjectAnimator animatorToCancel,
-                final ObjectAnimator animatorToStart) {
-            if (animatorToCancel == null || animatorToStart == null) {
-                // TODO: Stop using null as a no-operation animator.
-                return;
-            }
-            float startFraction = 0.0f;
-            if (animatorToCancel.isStarted()) {
-                animatorToCancel.cancel();
-                startFraction = 1.0f - animatorToCancel.getAnimatedFraction();
-            }
-            final long startTime = (long)(animatorToStart.getDuration() * startFraction);
-            animatorToStart.start();
-            animatorToStart.setCurrentPlayTime(startTime);
-        }
-
-        private static void startWhileTypingFadeinAnimation(final MainKeyboardView keyboardView) {
-            cancelAndStartAnimators(keyboardView.mAltCodeKeyWhileTypingFadeoutAnimator,
-                    keyboardView.mAltCodeKeyWhileTypingFadeinAnimator);
-        }
-
-        private static void startWhileTypingFadeoutAnimation(final MainKeyboardView keyboardView) {
-            cancelAndStartAnimators(keyboardView.mAltCodeKeyWhileTypingFadeinAnimator,
-                    keyboardView.mAltCodeKeyWhileTypingFadeoutAnimator);
-        }
-
-        @Override
-        public void startTypingStateTimer(final Key typedKey) {
-            if (typedKey.isModifier() || typedKey.altCodeWhileTyping()) {
-                return;
-            }
-
-            final boolean isTyping = isTypingState();
-            removeMessages(MSG_TYPING_STATE_EXPIRED);
-            final MainKeyboardView keyboardView = getOuterInstance();
-
-            // When user hits the space or the enter key, just cancel the while-typing timer.
-            final int typedCode = typedKey.getCode();
-            if (typedCode == Constants.CODE_SPACE || typedCode == Constants.CODE_ENTER) {
-                if (isTyping) {
-                    startWhileTypingFadeinAnimation(keyboardView);
-                }
-                return;
-            }
-
-            sendMessageDelayed(
-                    obtainMessage(MSG_TYPING_STATE_EXPIRED), mIgnoreAltCodeKeyTimeout);
-            if (isTyping) {
-                return;
-            }
-            startWhileTypingFadeoutAnimation(keyboardView);
-        }
-
-        @Override
-        public boolean isTypingState() {
-            return hasMessages(MSG_TYPING_STATE_EXPIRED);
-        }
-
-        @Override
-        public void startDoubleTapShiftKeyTimer() {
-            sendMessageDelayed(obtainMessage(MSG_DOUBLE_TAP_SHIFT_KEY),
-                    ViewConfiguration.getDoubleTapTimeout());
-        }
-
-        @Override
-        public void cancelDoubleTapShiftKeyTimer() {
-            removeMessages(MSG_DOUBLE_TAP_SHIFT_KEY);
-        }
-
-        @Override
-        public boolean isInDoubleTapShiftKeyTimeout() {
-            return hasMessages(MSG_DOUBLE_TAP_SHIFT_KEY);
-        }
-
-        @Override
-        public void cancelKeyTimers() {
-            cancelKeyRepeatTimer();
-            cancelLongPressTimer();
-        }
-
-        @Override
-        public void startUpdateBatchInputTimer(final PointerTracker tracker) {
-            if (mGestureRecognitionUpdateTime <= 0) {
-                return;
-            }
-            removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
-            sendMessageDelayed(obtainMessage(MSG_UPDATE_BATCH_INPUT, tracker),
-                    mGestureRecognitionUpdateTime);
-        }
-
-        @Override
-        public void cancelUpdateBatchInputTimer(final PointerTracker tracker) {
-            removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
-        }
-
-        @Override
-        public void cancelAllUpdateBatchInputTimers() {
-            removeMessages(MSG_UPDATE_BATCH_INPUT);
-        }
-
-        public void cancelAllMessages() {
-            cancelKeyTimers();
-            cancelAllUpdateBatchInputTimers();
-        }
-    }
-
     private final DrawingHandler mDrawingHandler = new DrawingHandler(this);
 
-    public static class DrawingHandler extends StaticInnerHandlerWrapper<MainKeyboardView> {
-        private static final int MSG_DISMISS_KEY_PREVIEW = 0;
-        private static final int MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 1;
-
-        public DrawingHandler(final MainKeyboardView outerInstance) {
-            super(outerInstance);
-        }
-
-        @Override
-        public void handleMessage(final Message msg) {
-            final MainKeyboardView mainKeyboardView = getOuterInstance();
-            if (mainKeyboardView == null) return;
-            final PointerTracker tracker = (PointerTracker) msg.obj;
-            switch (msg.what) {
-            case MSG_DISMISS_KEY_PREVIEW:
-                final TextView previewText = mainKeyboardView.mKeyPreviewTexts.get(
-                        tracker.mPointerId);
-                if (previewText != null) {
-                    previewText.setVisibility(INVISIBLE);
-                }
-                break;
-            case MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT:
-                mainKeyboardView.showGestureFloatingPreviewText(SuggestedWords.EMPTY);
-                break;
-            }
-        }
-
-        public void dismissKeyPreview(final long delay, final PointerTracker tracker) {
-            sendMessageDelayed(obtainMessage(MSG_DISMISS_KEY_PREVIEW, tracker), delay);
-        }
-
-        public void cancelDismissKeyPreview(final PointerTracker tracker) {
-            removeMessages(MSG_DISMISS_KEY_PREVIEW, tracker);
-        }
-
-        private void cancelAllDismissKeyPreviews() {
-            removeMessages(MSG_DISMISS_KEY_PREVIEW);
-        }
-
-        public void dismissGestureFloatingPreviewText(final long delay) {
-            sendMessageDelayed(obtainMessage(MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT), delay);
-        }
-
-        public void cancelAllMessages() {
-            cancelAllDismissKeyPreviews();
-        }
-    }
+    private MainKeyboardAccessibilityDelegate mAccessibilityDelegate;
 
     public MainKeyboardView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.mainKeyboardViewStyle);
@@ -424,7 +172,26 @@
     public MainKeyboardView(final Context context, final AttributeSet attrs, final int defStyle) {
         super(context, attrs, defStyle);
 
-        PointerTracker.init(getResources());
+        mDrawingPreviewPlacerView = new DrawingPreviewPlacerView(context, attrs);
+
+        final TypedArray mainKeyboardViewAttr = context.obtainStyledAttributes(
+                attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView);
+        final int ignoreAltCodeKeyTimeout = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_ignoreAltCodeKeyTimeout, 0);
+        final int gestureRecognitionUpdateTime = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureRecognitionUpdateTime, 0);
+        mKeyTimerHandler = new TimerHandler(
+                this, ignoreAltCodeKeyTimeout, gestureRecognitionUpdateTime);
+
+        final float keyHysteresisDistance = mainKeyboardViewAttr.getDimension(
+                R.styleable.MainKeyboardView_keyHysteresisDistance, 0.0f);
+        final float keyHysteresisDistanceForSlidingModifier = mainKeyboardViewAttr.getDimension(
+                R.styleable.MainKeyboardView_keyHysteresisDistanceForSlidingModifier, 0.0f);
+        mKeyDetector = new KeyDetector(
+                keyHysteresisDistance, keyHysteresisDistanceForSlidingModifier);
+
+        PointerTracker.init(mainKeyboardViewAttr, mKeyTimerHandler, this /* DrawingProxy */);
+
         final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
         final boolean forceNonDistinctMultitouch = prefs.getBoolean(
                 DebugSettings.PREF_FORCE_NON_DISTINCT_MULTITOUCH, false);
@@ -434,24 +201,19 @@
         mNonDistinctMultitouchHelper = hasDistinctMultitouch ? null
                 : new NonDistinctMultitouchHelper();
 
-        mPreviewPlacerView = new PreviewPlacerView(context, attrs);
-
-        final TypedArray mainKeyboardViewAttr = context.obtainStyledAttributes(
-                attrs, R.styleable.MainKeyboardView, defStyle, R.style.MainKeyboardView);
         final int backgroundDimAlpha = mainKeyboardViewAttr.getInt(
                 R.styleable.MainKeyboardView_backgroundDimAlpha, 0);
         mBackgroundDimAlphaPaint.setColor(Color.BLACK);
         mBackgroundDimAlphaPaint.setAlpha(backgroundDimAlpha);
-        mAutoCorrectionSpacebarLedEnabled = mainKeyboardViewAttr.getBoolean(
-                R.styleable.MainKeyboardView_autoCorrectionSpacebarLedEnabled, false);
-        mAutoCorrectionSpacebarLedIcon = mainKeyboardViewAttr.getDrawable(
-                R.styleable.MainKeyboardView_autoCorrectionSpacebarLedIcon);
-        mSpacebarTextRatio = mainKeyboardViewAttr.getFraction(
-                R.styleable.MainKeyboardView_spacebarTextRatio, 1, 1, 1.0f);
-        mSpacebarTextColor = mainKeyboardViewAttr.getColor(
-                R.styleable.MainKeyboardView_spacebarTextColor, 0);
-        mSpacebarTextShadowColor = mainKeyboardViewAttr.getColor(
-                R.styleable.MainKeyboardView_spacebarTextShadowColor, 0);
+        mLanguageOnSpacebarTextRatio = mainKeyboardViewAttr.getFraction(
+                R.styleable.MainKeyboardView_languageOnSpacebarTextRatio, 1, 1, 1.0f);
+        mLanguageOnSpacebarTextColor = mainKeyboardViewAttr.getColor(
+                R.styleable.MainKeyboardView_languageOnSpacebarTextColor, 0);
+        mLanguageOnSpacebarTextShadowRadius = mainKeyboardViewAttr.getFloat(
+                R.styleable.MainKeyboardView_languageOnSpacebarTextShadowRadius,
+                LANGUAGE_ON_SPACEBAR_TEXT_SHADOW_RADIUS_DISABLED);
+        mLanguageOnSpacebarTextShadowColor = mainKeyboardViewAttr.getColor(
+                R.styleable.MainKeyboardView_languageOnSpacebarTextShadowColor, 0);
         mLanguageOnSpacebarFinalAlpha = mainKeyboardViewAttr.getInt(
                 R.styleable.MainKeyboardView_languageOnSpacebarFinalAlpha,
                 Constants.Color.ALPHA_OPAQUE);
@@ -462,24 +224,9 @@
         final int altCodeKeyWhileTypingFadeinAnimatorResId = mainKeyboardViewAttr.getResourceId(
                 R.styleable.MainKeyboardView_altCodeKeyWhileTypingFadeinAnimator, 0);
 
-        final float keyHysteresisDistance = mainKeyboardViewAttr.getDimension(
-                R.styleable.MainKeyboardView_keyHysteresisDistance, 0.0f);
-        final float keyHysteresisDistanceForSlidingModifier = mainKeyboardViewAttr.getDimension(
-                R.styleable.MainKeyboardView_keyHysteresisDistanceForSlidingModifier, 0.0f);
-        mKeyDetector = new KeyDetector(
-                keyHysteresisDistance, keyHysteresisDistanceForSlidingModifier);
-        mKeyTimerHandler = new KeyTimerHandler(this, mainKeyboardViewAttr);
-        mKeyPreviewOffset = mainKeyboardViewAttr.getDimensionPixelOffset(
-                R.styleable.MainKeyboardView_keyPreviewOffset, 0);
-        mKeyPreviewHeight = mainKeyboardViewAttr.getDimensionPixelSize(
-                R.styleable.MainKeyboardView_keyPreviewHeight, 0);
-        mKeyPreviewLingerTimeout = mainKeyboardViewAttr.getInt(
-                R.styleable.MainKeyboardView_keyPreviewLingerTimeout, 0);
-        mKeyPreviewLayoutId = mainKeyboardViewAttr.getResourceId(
-                R.styleable.MainKeyboardView_keyPreviewLayout, 0);
-        if (mKeyPreviewLayoutId == 0) {
-            mShowKeyPreviewPopup = false;
-        }
+        mKeyPreviewDrawParams = new KeyPreviewDrawParams(mainKeyboardViewAttr);
+        mKeyPreviewChoreographer = new KeyPreviewChoreographer(mKeyPreviewDrawParams);
+
         final int moreKeysKeyboardLayoutId = mainKeyboardViewAttr.getResourceId(
                 R.styleable.MainKeyboardView_moreKeysKeyboardLayout, 0);
         mConfigShowMoreKeysKeyboardAtTouchedPoint = mainKeyboardViewAttr.getBoolean(
@@ -487,19 +234,16 @@
 
         mGestureFloatingPreviewTextLingerTimeout = mainKeyboardViewAttr.getInt(
                 R.styleable.MainKeyboardView_gestureFloatingPreviewTextLingerTimeout, 0);
-        PointerTracker.setParameters(mainKeyboardViewAttr);
 
-        mGestureFloatingPreviewText = new GestureFloatingPreviewText(
-                mPreviewPlacerView, mainKeyboardViewAttr);
-        mPreviewPlacerView.addPreview(mGestureFloatingPreviewText);
+        mGestureFloatingTextDrawingPreview = new GestureFloatingTextDrawingPreview(
+                mainKeyboardViewAttr);
+        mGestureFloatingTextDrawingPreview.setDrawingView(mDrawingPreviewPlacerView);
 
-        mGestureTrailsPreview = new GestureTrailsPreview(
-                mPreviewPlacerView, mainKeyboardViewAttr);
-        mPreviewPlacerView.addPreview(mGestureTrailsPreview);
+        mGestureTrailsDrawingPreview = new GestureTrailsDrawingPreview(mainKeyboardViewAttr);
+        mGestureTrailsDrawingPreview.setDrawingView(mDrawingPreviewPlacerView);
 
-        mSlidingKeyInputPreview = new SlidingKeyInputPreview(
-                mPreviewPlacerView, mainKeyboardViewAttr);
-        mPreviewPlacerView.addPreview(mSlidingKeyInputPreview);
+        mSlidingKeyInputDrawingPreview = new SlidingKeyInputDrawingPreview(mainKeyboardViewAttr);
+        mSlidingKeyInputDrawingPreview.setDrawingView(mDrawingPreviewPlacerView);
         mainKeyboardViewAttr.recycle();
 
         mMoreKeysKeyboardContainer = LayoutInflater.from(getContext())
@@ -513,14 +257,14 @@
 
         mKeyboardActionListener = KeyboardActionListener.EMPTY_LISTENER;
 
-        mLanguageOnSpacebarHorizontalMargin =
-                (int) getResources().getDimension(R.dimen.language_on_spacebar_horizontal_margin);
+        mLanguageOnSpacebarHorizontalMargin = (int)getResources().getDimension(
+                R.dimen.config_language_on_spacebar_horizontal_margin);
     }
 
     @Override
     public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) {
         super.setHardwareAcceleratedDrawingEnabled(enabled);
-        mPreviewPlacerView.setHardwareAcceleratedDrawingEnabled(enabled);
+        mDrawingPreviewPlacerView.setHardwareAcceleratedDrawingEnabled(enabled);
     }
 
     private ObjectAnimator loadObjectAnimator(final int resId, final Object target) {
@@ -536,6 +280,35 @@
         return animator;
     }
 
+    private static void cancelAndStartAnimators(final ObjectAnimator animatorToCancel,
+            final ObjectAnimator animatorToStart) {
+        if (animatorToCancel == null || animatorToStart == null) {
+            // TODO: Stop using null as a no-operation animator.
+            return;
+        }
+        float startFraction = 0.0f;
+        if (animatorToCancel.isStarted()) {
+            animatorToCancel.cancel();
+            startFraction = 1.0f - animatorToCancel.getAnimatedFraction();
+        }
+        final long startTime = (long)(animatorToStart.getDuration() * startFraction);
+        animatorToStart.start();
+        animatorToStart.setCurrentPlayTime(startTime);
+    }
+
+    // Implements {@link TimerHander.Callbacks} method.
+    @Override
+    public void startWhileTypingFadeinAnimation() {
+        cancelAndStartAnimators(
+                mAltCodeKeyWhileTypingFadeoutAnimator, mAltCodeKeyWhileTypingFadeinAnimator);
+    }
+
+    @Override
+    public void startWhileTypingFadeoutAnimation() {
+        cancelAndStartAnimators(
+                mAltCodeKeyWhileTypingFadeinAnimator, mAltCodeKeyWhileTypingFadeoutAnimator);
+    }
+
     @ExternallyReferenced
     public int getLanguageOnSpacebarAnimAlpha() {
         return mLanguageOnSpacebarAnimAlpha;
@@ -573,28 +346,16 @@
         PointerTracker.setKeyboardActionListener(listener);
     }
 
-    /**
-     * Returns the {@link KeyboardActionListener} object.
-     * @return the listener attached to this keyboard
-     */
-    @Override
-    public KeyboardActionListener getKeyboardActionListener() {
-        return mKeyboardActionListener;
+    // TODO: We should reconsider which coordinate system should be used to represent keyboard
+    // event.
+    public int getKeyX(final int x) {
+        return Constants.isValidCoordinate(x) ? mKeyDetector.getTouchX(x) : x;
     }
 
-    @Override
-    public KeyDetector getKeyDetector() {
-        return mKeyDetector;
-    }
-
-    @Override
-    public DrawingProxy getDrawingProxy() {
-        return this;
-    }
-
-    @Override
-    public TimerProxy getTimerProxy() {
-        return mKeyTimerHandler;
+    // TODO: We should reconsider which coordinate system should be used to represent keyboard
+    // event.
+    public int getKeyY(final int y) {
+        return Constants.isValidCoordinate(y) ? mKeyDetector.getTouchY(y) : y;
     }
 
     /**
@@ -607,7 +368,7 @@
     @Override
     public void setKeyboard(final Keyboard keyboard) {
         // Remove any pending messages, except dismissing preview and key repeat.
-        mKeyTimerHandler.cancelLongPressTimer();
+        mKeyTimerHandler.cancelLongPressTimers();
         super.setKeyboard(keyboard);
         mKeyDetector.setKeyboard(
                 keyboard, -getPaddingLeft(), -getPaddingTop() + getVerticalCorrection());
@@ -615,18 +376,17 @@
         mMoreKeysKeyboardCache.clear();
 
         mSpaceKey = keyboard.getKey(Constants.CODE_SPACE);
-        mSpaceIcon = (mSpaceKey != null)
-                ? mSpaceKey.getIcon(keyboard.mIconsSet, Constants.Color.ALPHA_OPAQUE) : null;
         final int keyHeight = keyboard.mMostCommonKeyHeight - keyboard.mVerticalGap;
-        mSpacebarTextSize = keyHeight * mSpacebarTextRatio;
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            final int orientation = getContext().getResources().getConfiguration().orientation;
-            ResearchLogger.mainKeyboardView_setKeyboard(keyboard, orientation);
-        }
+        mLanguageOnSpacebarTextSize = keyHeight * mLanguageOnSpacebarTextRatio;
 
-        // This always needs to be set since the accessibility state can
-        // potentially change without the keyboard being set again.
-        AccessibleKeyboardViewProxy.getInstance().setKeyboard();
+        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
+            if (mAccessibilityDelegate == null) {
+                mAccessibilityDelegate = new MainKeyboardAccessibilityDelegate(this, mKeyDetector);
+            }
+            mAccessibilityDelegate.setKeyboard(keyboard);
+        } else {
+            mAccessibilityDelegate = null;
+        }
     }
 
     /**
@@ -637,26 +397,21 @@
      * @see #isKeyPreviewPopupEnabled()
      */
     public void setKeyPreviewPopupEnabled(final boolean previewEnabled, final int delay) {
-        mShowKeyPreviewPopup = previewEnabled;
-        mKeyPreviewLingerTimeout = delay;
+        mKeyPreviewDrawParams.setPopupEnabled(previewEnabled, delay);
+    }
+
+    public void setKeyPreviewAnimationParams(final float showUpStartScale, final int showUpDuration,
+            final float dismissEndScale, final int dismissDuration) {
+        mKeyPreviewDrawParams.setAnimationParams(
+                showUpStartScale, showUpDuration, dismissEndScale, dismissDuration);
     }
 
     private void locatePreviewPlacerView() {
-        if (mPreviewPlacerView.getParent() != null) {
-            return;
-        }
-        final int width = getWidth();
-        final int height = getHeight();
-        if (width == 0 || height == 0) {
-            // In transient state.
-            return;
-        }
         getLocationInWindow(mOriginCoords);
-        final DisplayMetrics dm = getResources().getDisplayMetrics();
-        if (CoordinateUtils.y(mOriginCoords) < dm.heightPixels / 4) {
-            // In transient state.
-            return;
-        }
+        mDrawingPreviewPlacerView.setKeyboardViewGeometry(mOriginCoords, getWidth(), getHeight());
+    }
+
+    private void installPreviewPlacerView() {
         final View rootView = getRootView();
         if (rootView == null) {
             Log.w(TAG, "Cannot find root view");
@@ -665,191 +420,85 @@
         final ViewGroup windowContentView = (ViewGroup)rootView.findViewById(android.R.id.content);
         // Note: It'd be very weird if we get null by android.R.id.content.
         if (windowContentView == null) {
-            Log.w(TAG, "Cannot find android.R.id.content view to add PreviewPlacerView");
-        } else {
-            windowContentView.addView(mPreviewPlacerView);
-            mPreviewPlacerView.setKeyboardViewGeometry(mOriginCoords, width, height);
+            Log.w(TAG, "Cannot find android.R.id.content view to add DrawingPreviewPlacerView");
+            return;
         }
+        windowContentView.addView(mDrawingPreviewPlacerView);
     }
 
-    /**
-     * Returns the enabled state of the key feedback preview
-     * @return whether or not the key feedback preview is enabled
-     * @see #setKeyPreviewPopupEnabled(boolean, int)
-     */
-    public boolean isKeyPreviewPopupEnabled() {
-        return mShowKeyPreviewPopup;
-    }
-
-    private void addKeyPreview(final TextView keyPreview) {
-        locatePreviewPlacerView();
-        mPreviewPlacerView.addView(
-                keyPreview, ViewLayoutUtils.newLayoutParam(mPreviewPlacerView, 0, 0));
-    }
-
-    private TextView getKeyPreviewText(final int pointerId) {
-        TextView previewText = mKeyPreviewTexts.get(pointerId);
-        if (previewText != null) {
-            return previewText;
-        }
-        final Context context = getContext();
-        if (mKeyPreviewLayoutId != 0) {
-            previewText = (TextView)LayoutInflater.from(context).inflate(mKeyPreviewLayoutId, null);
-        } else {
-            previewText = new TextView(context);
-        }
-        mKeyPreviewTexts.put(pointerId, previewText);
-        return previewText;
-    }
-
-    private void dismissAllKeyPreviews() {
-        final int pointerCount = mKeyPreviewTexts.size();
-        for (int id = 0; id < pointerCount; id++) {
-            final TextView previewText = mKeyPreviewTexts.get(id);
-            if (previewText != null) {
-                previewText.setVisibility(INVISIBLE);
-            }
-        }
+    // Implements {@link DrawingHandler.Callbacks} method.
+    @Override
+    public void dismissAllKeyPreviews() {
+        mKeyPreviewChoreographer.dismissAllKeyPreviews();
         PointerTracker.setReleasedKeyGraphicsToAllKeys();
     }
 
-    // Background state set
-    private static final int[][][] KEY_PREVIEW_BACKGROUND_STATE_TABLE = {
-        { // STATE_MIDDLE
-            EMPTY_STATE_SET,
-            { R.attr.state_has_morekeys }
-        },
-        { // STATE_LEFT
-            { R.attr.state_left_edge },
-            { R.attr.state_left_edge, R.attr.state_has_morekeys }
-        },
-        { // STATE_RIGHT
-            { R.attr.state_right_edge },
-            { R.attr.state_right_edge, R.attr.state_has_morekeys }
-        }
-    };
-    private static final int STATE_MIDDLE = 0;
-    private static final int STATE_LEFT = 1;
-    private static final int STATE_RIGHT = 2;
-    private static final int STATE_NORMAL = 0;
-    private static final int STATE_HAS_MOREKEYS = 1;
-
     @Override
-    public void showKeyPreview(final PointerTracker tracker) {
-        final KeyPreviewDrawParams previewParams = mKeyPreviewDrawParams;
+    public void showKeyPreview(final Key key) {
+        // If the key is invalid or has no key preview, we must not show key preview.
+        if (key == null || key.noKeyPreview()) {
+            return;
+        }
         final Keyboard keyboard = getKeyboard();
-        if (!mShowKeyPreviewPopup) {
-            previewParams.mPreviewVisibleOffset = -keyboard.mVerticalGap;
+        if (keyboard == null) {
+            return;
+        }
+        final KeyPreviewDrawParams previewParams = mKeyPreviewDrawParams;
+        if (!previewParams.isPopupEnabled()) {
+            previewParams.setVisibleOffset(-keyboard.mVerticalGap);
             return;
         }
 
-        final TextView previewText = getKeyPreviewText(tracker.mPointerId);
-        // If the key preview has no parent view yet, add it to the ViewGroup which can place
-        // key preview absolutely in SoftInputWindow.
-        if (previewText.getParent() == null) {
-            addKeyPreview(previewText);
-        }
-
-        mDrawingHandler.cancelDismissKeyPreview(tracker);
-        final Key key = tracker.getKey();
-        // If key is invalid or IME is already closed, we must not show key preview.
-        // Trying to show key preview while root window is closed causes
-        // WindowManager.BadTokenException.
-        if (key == null) {
-            return;
-        }
-
-        final KeyDrawParams drawParams = mKeyDrawParams;
-        previewText.setTextColor(drawParams.mPreviewTextColor);
-        final Drawable background = previewText.getBackground();
-        final String label = key.getPreviewLabel();
-        // What we show as preview should match what we show on a key top in onDraw().
-        if (label != null) {
-            // TODO Should take care of temporaryShiftLabel here.
-            previewText.setCompoundDrawables(null, null, null, null);
-            previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX,
-                    key.selectPreviewTextSize(drawParams));
-            previewText.setTypeface(key.selectPreviewTypeface(drawParams));
-            previewText.setText(label);
-        } else {
-            previewText.setCompoundDrawables(null, null, null,
-                    key.getPreviewIcon(keyboard.mIconsSet));
-            previewText.setText(null);
-        }
-
-        previewText.measure(
-                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        final int keyDrawWidth = key.getDrawWidth();
-        final int previewWidth = previewText.getMeasuredWidth();
-        final int previewHeight = mKeyPreviewHeight;
-        // The width and height of visible part of the key preview background. The content marker
-        // of the background 9-patch have to cover the visible part of the background.
-        previewParams.mPreviewVisibleWidth = previewWidth - previewText.getPaddingLeft()
-                - previewText.getPaddingRight();
-        previewParams.mPreviewVisibleHeight = previewHeight - previewText.getPaddingTop()
-                - previewText.getPaddingBottom();
-        // The distance between the top edge of the parent key and the bottom of the visible part
-        // of the key preview background.
-        previewParams.mPreviewVisibleOffset = mKeyPreviewOffset - previewText.getPaddingBottom();
+        locatePreviewPlacerView();
         getLocationInWindow(mOriginCoords);
-        // The key preview is horizontally aligned with the center of the visible part of the
-        // parent key. If it doesn't fit in this {@link KeyboardView}, it is moved inward to fit and
-        // the left/right background is used if such background is specified.
-        final int statePosition;
-        int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2
-                + CoordinateUtils.x(mOriginCoords);
-        if (previewX < 0) {
-            previewX = 0;
-            statePosition = STATE_LEFT;
-        } else if (previewX > getWidth() - previewWidth) {
-            previewX = getWidth() - previewWidth;
-            statePosition = STATE_RIGHT;
-        } else {
-            statePosition = STATE_MIDDLE;
-        }
-        // The key preview is placed vertically above the top edge of the parent key with an
-        // arbitrary offset.
-        final int previewY = key.getY() - previewHeight + mKeyPreviewOffset
-                + CoordinateUtils.y(mOriginCoords);
+        mKeyPreviewChoreographer.placeAndShowKeyPreview(key, keyboard.mIconsSet, mKeyDrawParams,
+                getWidth(), mOriginCoords, mDrawingPreviewPlacerView, isHardwareAccelerated());
+    }
 
-        if (background != null) {
-            final int hasMoreKeys = (key.getMoreKeys() != null) ? STATE_HAS_MOREKEYS : STATE_NORMAL;
-            background.setState(KEY_PREVIEW_BACKGROUND_STATE_TABLE[statePosition][hasMoreKeys]);
-        }
-        ViewLayoutUtils.placeViewAt(
-                previewText, previewX, previewY, previewWidth, previewHeight);
-        previewText.setVisibility(VISIBLE);
+    // Implements {@link TimerHandler.Callbacks} method.
+    @Override
+    public void dismissKeyPreviewWithoutDelay(final Key key) {
+        mKeyPreviewChoreographer.dismissKeyPreview(key, false /* withAnimation */);
+        // To redraw key top letter.
+        invalidateKey(key);
     }
 
     @Override
-    public void dismissKeyPreview(final PointerTracker tracker) {
-        mDrawingHandler.dismissKeyPreview(mKeyPreviewLingerTimeout, tracker);
+    public void dismissKeyPreview(final Key key) {
+        if (!isHardwareAccelerated()) {
+            // TODO: Implement preference option to control key preview method and duration.
+            mDrawingHandler.dismissKeyPreview(mKeyPreviewDrawParams.getLingerTimeout(), key);
+            return;
+        }
+        mKeyPreviewChoreographer.dismissKeyPreview(key, true /* withAnimation */);
     }
 
     public void setSlidingKeyInputPreviewEnabled(final boolean enabled) {
-        mSlidingKeyInputPreview.setPreviewEnabled(enabled);
+        mSlidingKeyInputDrawingPreview.setPreviewEnabled(enabled);
     }
 
     @Override
     public void showSlidingKeyInputPreview(final PointerTracker tracker) {
         locatePreviewPlacerView();
-        mSlidingKeyInputPreview.setPreviewPosition(tracker);
+        mSlidingKeyInputDrawingPreview.setPreviewPosition(tracker);
     }
 
     @Override
     public void dismissSlidingKeyInputPreview() {
-        mSlidingKeyInputPreview.dismissSlidingKeyInputPreview();
+        mSlidingKeyInputDrawingPreview.dismissSlidingKeyInputPreview();
     }
 
     private void setGesturePreviewMode(final boolean isGestureTrailEnabled,
             final boolean isGestureFloatingPreviewTextEnabled) {
-        mGestureFloatingPreviewText.setPreviewEnabled(isGestureFloatingPreviewTextEnabled);
-        mGestureTrailsPreview.setPreviewEnabled(isGestureTrailEnabled);
+        mGestureFloatingTextDrawingPreview.setPreviewEnabled(isGestureFloatingPreviewTextEnabled);
+        mGestureTrailsDrawingPreview.setPreviewEnabled(isGestureTrailEnabled);
     }
 
+    // Implements {@link DrawingHandler.Callbacks} method.
+    @Override
     public void showGestureFloatingPreviewText(final SuggestedWords suggestedWords) {
         locatePreviewPlacerView();
-        mGestureFloatingPreviewText.setSuggetedWords(suggestedWords);
+        mGestureFloatingTextDrawingPreview.setSuggetedWords(suggestedWords);
     }
 
     public void dismissGestureFloatingPreviewText() {
@@ -862,12 +511,13 @@
             final boolean showsFloatingPreviewText) {
         locatePreviewPlacerView();
         if (showsFloatingPreviewText) {
-            mGestureFloatingPreviewText.setPreviewPosition(tracker);
+            mGestureFloatingTextDrawingPreview.setPreviewPosition(tracker);
         }
-        mGestureTrailsPreview.setPreviewPosition(tracker);
+        mGestureTrailsDrawingPreview.setPreviewPosition(tracker);
     }
 
     // Note that this method is called from a non-UI thread.
+    @SuppressWarnings("static-method")
     public void setMainDictionaryAvailability(final boolean mainDictionaryAvailable) {
         PointerTracker.setMainDictionaryAvailability(mainDictionaryAvailable);
     }
@@ -883,34 +533,35 @@
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
-        // Notify the ResearchLogger (development only diagnostics) that the keyboard view has
-        // been attached.  This is needed to properly show the splash screen, which requires that
-        // the window token of the KeyboardView be non-null.
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.getInstance().mainKeyboardView_onAttachedToWindow(this);
-        }
+        installPreviewPlacerView();
     }
 
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
-        mPreviewPlacerView.removeAllViews();
-        // Notify the ResearchLogger (development only diagnostics) that the keyboard view has
-        // been detached.  This is needed to invalidate the reference of {@link MainKeyboardView}
-        // to null.
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.getInstance().mainKeyboardView_onDetachedFromWindow();
-        }
+        mDrawingPreviewPlacerView.removeAllViews();
     }
 
     private MoreKeysPanel onCreateMoreKeysPanel(final Key key, final Context context) {
-        if (key.getMoreKeys() == null) {
+        final MoreKeySpec[] moreKeys = key.getMoreKeys();
+        if (moreKeys == null) {
             return null;
         }
         Keyboard moreKeysKeyboard = mMoreKeysKeyboardCache.get(key);
         if (moreKeysKeyboard == null) {
-            moreKeysKeyboard = new MoreKeysKeyboard.Builder(
-                    context, key, this, mKeyPreviewDrawParams).build();
+            // {@link KeyPreviewDrawParams#mPreviewVisibleWidth} should have been set at
+            // {@link KeyPreviewChoreographer#placeKeyPreview(Key,TextView,KeyboardIconsSet,KeyDrawParams,int,int[]},
+            // though there may be some chances that the value is zero. <code>width == 0</code>
+            // will cause zero-division error at
+            // {@link MoreKeysKeyboardParams#setParameters(int,int,int,int,int,int,boolean,int)}.
+            final boolean isSingleMoreKeyWithPreview = mKeyPreviewDrawParams.isPopupEnabled()
+                    && !key.noKeyPreview() && moreKeys.length == 1
+                    && mKeyPreviewDrawParams.getVisibleWidth() > 0;
+            final MoreKeysKeyboard.Builder builder = new MoreKeysKeyboard.Builder(
+                    context, key, getKeyboard(), isSingleMoreKeyWithPreview,
+                    mKeyPreviewDrawParams.getVisibleWidth(),
+                    mKeyPreviewDrawParams.getVisibleHeight(), newLabelPaint(key));
+            moreKeysKeyboard = builder.build();
             mMoreKeysKeyboardCache.put(key, moreKeysKeyboard);
         }
 
@@ -922,11 +573,13 @@
         return moreKeysKeyboardView;
     }
 
+    // Implements {@link TimerHandler.Callbacks} method.
     /**
      * Called when a key is long pressed.
      * @param tracker the pointer tracker which pressed the parent key
      */
-    private void onLongPress(final PointerTracker tracker) {
+    @Override
+    public void onLongPress(final PointerTracker tracker) {
         if (isShowingMoreKeysPanel()) {
             return;
         }
@@ -934,16 +587,13 @@
         if (key == null) {
             return;
         }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.mainKeyboardView_onLongPress();
-        }
         final KeyboardActionListener listener = mKeyboardActionListener;
         if (key.hasNoPanelAutoMoreKey()) {
             final int moreKeyCode = key.getMoreKeys()[0].mCode;
             tracker.onLongPressed();
             listener.onPressKey(moreKeyCode, 0 /* repeatCount */, true /* isSinglePointer */);
-            listener.onCodeInput(moreKeyCode,
-                    Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+            listener.onCodeInput(moreKeyCode, Constants.NOT_A_COORDINATE,
+                    Constants.NOT_A_COORDINATE, false /* isKeyRepeat */);
             listener.onReleaseKey(moreKeyCode, false /* withSliding */);
             return;
         }
@@ -967,7 +617,8 @@
 
         final int[] lastCoords = CoordinateUtils.newInstance();
         tracker.getLastCoordinates(lastCoords);
-        final boolean keyPreviewEnabled = isKeyPreviewPopupEnabled() && !key.noKeyPreview();
+        final boolean keyPreviewEnabled = mKeyPreviewDrawParams.isPopupEnabled()
+                && !key.noKeyPreview();
         // The more keys keyboard is usually horizontally aligned with the center of the parent key.
         // If showMoreKeysKeyboardAtTouchedPoint is true and the key preview is disabled, the more
         // keys keyboard is placed at the touch point of the parent key.
@@ -979,26 +630,24 @@
         // aligned with the bottom edge of the visible part of the key preview.
         // {@code mPreviewVisibleOffset} has been set appropriately in
         // {@link KeyboardView#showKeyPreview(PointerTracker)}.
-        final int pointY = key.getY() + mKeyPreviewDrawParams.mPreviewVisibleOffset;
+        final int pointY = key.getY() + mKeyPreviewDrawParams.getVisibleOffset();
         moreKeysPanel.showMoreKeysPanel(this, this, pointX, pointY, mKeyboardActionListener);
         tracker.onShowMoreKeysPanel(moreKeysPanel);
+        // TODO: Implement zoom in animation of more keys panel.
+        dismissKeyPreviewWithoutDelay(key);
     }
 
-    public boolean isInSlidingKeyInput() {
+    public boolean isInDraggingFinger() {
         if (isShowingMoreKeysPanel()) {
             return true;
         }
-        return PointerTracker.isAnyInSlidingKeyInput();
+        return PointerTracker.isAnyInDraggingFinger();
     }
 
     @Override
     public void onShowMoreKeysPanel(final MoreKeysPanel panel) {
         locatePreviewPlacerView();
-        // TODO: Remove this check
-        if (panel.isShowingInParent()) {
-            panel.dismissMoreKeysPanel();
-        }
-        mPreviewPlacerView.addView(panel.getContainerView());
+        panel.showInParent(mDrawingPreviewPlacerView);
         mMoreKeysPanel = panel;
         dimEntireKeyboard(true /* dimmed */);
     }
@@ -1008,15 +657,15 @@
     }
 
     @Override
-    public void onCancelMoreKeysPanel(final MoreKeysPanel panel) {
+    public void onCancelMoreKeysPanel() {
         PointerTracker.dismissAllMoreKeysPanels();
     }
 
     @Override
-    public void onDismissMoreKeysPanel(final MoreKeysPanel panel) {
+    public void onDismissMoreKeysPanel() {
         dimEntireKeyboard(false /* dimmed */);
         if (isShowingMoreKeysPanel()) {
-            mPreviewPlacerView.removeView(mMoreKeysPanel.getContainerView());
+            mMoreKeysPanel.removeFromParent();
             mMoreKeysPanel = null;
         }
     }
@@ -1034,14 +683,6 @@
     }
 
     @Override
-    public boolean dispatchTouchEvent(MotionEvent event) {
-        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
-            return AccessibleKeyboardViewProxy.getInstance().dispatchTouchEvent(event);
-        }
-        return super.dispatchTouchEvent(event);
-    }
-
-    @Override
     public boolean onTouchEvent(final MotionEvent me) {
         if (getKeyboard() == null) {
             return false;
@@ -1049,28 +690,26 @@
         if (mNonDistinctMultitouchHelper != null) {
             if (me.getPointerCount() > 1 && mKeyTimerHandler.isInKeyRepeat()) {
                 // Key repeating timer will be canceled if 2 or more keys are in action.
-                mKeyTimerHandler.cancelKeyRepeatTimer();
+                mKeyTimerHandler.cancelKeyRepeatTimers();
             }
             // Non distinct multitouch screen support
-            mNonDistinctMultitouchHelper.processMotionEvent(me, this);
+            mNonDistinctMultitouchHelper.processMotionEvent(me, mKeyDetector);
             return true;
         }
         return processMotionEvent(me);
     }
 
     public boolean processMotionEvent(final MotionEvent me) {
-        if (LatinImeLogger.sUsabilityStudy) {
-            UsabilityStudyLogUtils.writeMotionEvent(me);
-        }
-        // Currently the same "move" event is being logged twice.
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.mainKeyboardView_processMotionEvent(me);
-        }
-
         final int index = me.getActionIndex();
         final int id = me.getPointerId(index);
-        final PointerTracker tracker = PointerTracker.getPointerTracker(id, this);
-        tracker.processMotionEvent(me, this);
+        final PointerTracker tracker = PointerTracker.getPointerTracker(id);
+        // When a more keys panel is showing, we should ignore other fingers' single touch events
+        // other than the finger that is showing the more keys panel.
+        if (isShowingMoreKeysPanel() && !tracker.isShowingMoreKeysPanel()
+                && PointerTracker.getActivePointerTrackerCount() == 1) {
+            return true;
+        }
+        tracker.processMotionEvent(me, mKeyDetector);
         return true;
     }
 
@@ -1089,22 +728,24 @@
         mMoreKeysKeyboardCache.clear();
     }
 
+    public void onHideWindow() {
+        onDismissMoreKeysPanel();
+        final MainKeyboardAccessibilityDelegate accessibilityDelegate = mAccessibilityDelegate;
+        if (accessibilityDelegate != null) {
+            accessibilityDelegate.onHideWindow();
+        }
+    }
+
     /**
-     * Receives hover events from the input framework.
-     *
-     * @param event The motion event to be dispatched.
-     * @return {@code true} if the event was handled by the view, {@code false}
-     *         otherwise
+     * {@inheritDoc}
      */
     @Override
-    public boolean dispatchHoverEvent(final MotionEvent event) {
-        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
-            final PointerTracker tracker = PointerTracker.getPointerTracker(0, this);
-            return AccessibleKeyboardViewProxy.getInstance().dispatchHoverEvent(event, tracker);
+    public boolean onHoverEvent(final MotionEvent event) {
+        final MainKeyboardAccessibilityDelegate accessibilityDelegate = mAccessibilityDelegate;
+        if (accessibilityDelegate != null) {
+            return accessibilityDelegate.onHoverEvent(event);
         }
-
-        // Reflection doesn't support calling superclass methods.
-        return false;
+        return super.onHoverEvent(event);
     }
 
     public void updateShortcutKey(final boolean available) {
@@ -1121,14 +762,16 @@
     }
 
     public void startDisplayLanguageOnSpacebar(final boolean subtypeChanged,
-            final boolean needsToDisplayLanguage, final boolean hasMultipleEnabledIMEsOrSubtypes) {
-        mNeedsToDisplayLanguage = needsToDisplayLanguage;
+            final int languageOnSpacebarFormatType,
+            final boolean hasMultipleEnabledIMEsOrSubtypes) {
+        mLanguageOnSpacebarFormatType = languageOnSpacebarFormatType;
         mHasMultipleEnabledIMEsOrSubtypes = hasMultipleEnabledIMEsOrSubtypes;
         final ObjectAnimator animator = mLanguageOnSpacebarFadeoutAnimator;
         if (animator == null) {
-            mNeedsToDisplayLanguage = false;
+            mLanguageOnSpacebarFormatType = LanguageOnSpacebarHelper.FORMAT_TYPE_NONE;
         } else {
-            if (subtypeChanged && needsToDisplayLanguage) {
+            if (subtypeChanged
+                    && languageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) {
                 setLanguageOnSpacebarAnimAlpha(Constants.Color.ALPHA_OPAQUE);
                 if (animator.isStarted()) {
                     animator.cancel();
@@ -1143,14 +786,6 @@
         invalidateKey(mSpaceKey);
     }
 
-    public void updateAutoCorrectionState(final boolean isAutoCorrection) {
-        if (!mAutoCorrectionSpacebarLedEnabled) {
-            return;
-        }
-        mAutoCorrectionSpacebarLedOn = isAutoCorrection;
-        invalidateKey(mSpaceKey);
-    }
-
     private void dimEntireKeyboard(final boolean dimmed) {
         final boolean needsRedrawing = mNeedsToDimEntireKeyboard != dimmed;
         mNeedsToDimEntireKeyboard = dimmed;
@@ -1175,25 +810,26 @@
         if (key.altCodeWhileTyping() && key.isEnabled()) {
             params.mAnimAlpha = mAltCodeKeyWhileTypingAnimAlpha;
         }
+        super.onDrawKeyTopVisuals(key, canvas, paint, params);
         final int code = key.getCode();
         if (code == Constants.CODE_SPACE) {
-            drawSpacebar(key, canvas, paint);
+            // If input language are explicitly selected.
+            if (mLanguageOnSpacebarFormatType != LanguageOnSpacebarHelper.FORMAT_TYPE_NONE) {
+                drawLanguageOnSpacebar(key, canvas, paint);
+            }
             // Whether space key needs to show the "..." popup hint for special purposes
             if (key.isLongPressEnabled() && mHasMultipleEnabledIMEsOrSubtypes) {
                 drawKeyPopupHint(key, canvas, paint, params);
             }
         } else if (code == Constants.CODE_LANGUAGE_SWITCH) {
-            super.onDrawKeyTopVisuals(key, canvas, paint, params);
             drawKeyPopupHint(key, canvas, paint, params);
-        } else {
-            super.onDrawKeyTopVisuals(key, canvas, paint, params);
         }
     }
 
     private boolean fitsTextIntoWidth(final int width, final String text, final Paint paint) {
         final int maxTextWidth = width - mLanguageOnSpacebarHorizontalMargin * 2;
         paint.setTextScaleX(1.0f);
-        final float textWidth = TypefaceUtils.getLabelWidth(text, paint);
+        final float textWidth = TypefaceUtils.getStringWidth(text, paint);
         if (textWidth < width) {
             return true;
         }
@@ -1204,74 +840,56 @@
         }
 
         paint.setTextScaleX(scaleX);
-        return TypefaceUtils.getLabelWidth(text, paint) < maxTextWidth;
+        return TypefaceUtils.getStringWidth(text, paint) < maxTextWidth;
     }
 
     // Layout language name on spacebar.
     private String layoutLanguageOnSpacebar(final Paint paint,
             final InputMethodSubtype subtype, final int width) {
-
         // Choose appropriate language name to fit into the width.
-        final String fullText = SubtypeLocaleUtils.getFullDisplayName(subtype);
-        if (fitsTextIntoWidth(width, fullText, paint)) {
-            return fullText;
+        if (mLanguageOnSpacebarFormatType == LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE) {
+            final String fullText = SpacebarLanguageUtils.getFullDisplayName(subtype);
+            if (fitsTextIntoWidth(width, fullText, paint)) {
+                return fullText;
+            }
         }
 
-        final String middleText = SubtypeLocaleUtils.getMiddleDisplayName(subtype);
+        final String middleText = SpacebarLanguageUtils.getMiddleDisplayName(subtype);
         if (fitsTextIntoWidth(width, middleText, paint)) {
             return middleText;
         }
 
-        final String shortText = SubtypeLocaleUtils.getShortDisplayName(subtype);
-        if (fitsTextIntoWidth(width, shortText, paint)) {
-            return shortText;
-        }
-
         return "";
     }
 
-    private void drawSpacebar(final Key key, final Canvas canvas, final Paint paint) {
+    private void drawLanguageOnSpacebar(final Key key, final Canvas canvas, final Paint paint) {
         final int width = key.getWidth();
         final int height = key.getHeight();
-
-        // If input language are explicitly selected.
-        if (mNeedsToDisplayLanguage) {
-            paint.setTextAlign(Align.CENTER);
-            paint.setTypeface(Typeface.DEFAULT);
-            paint.setTextSize(mSpacebarTextSize);
-            final InputMethodSubtype subtype = getKeyboard().mId.mSubtype;
-            final String language = layoutLanguageOnSpacebar(paint, subtype, width);
-            // Draw language text with shadow
-            final float descent = paint.descent();
-            final float textHeight = -paint.ascent() + descent;
-            final float baseline = height / 2 + textHeight / 2;
-            paint.setColor(mSpacebarTextShadowColor);
-            paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
-            canvas.drawText(language, width / 2, baseline - descent - 1, paint);
-            paint.setColor(mSpacebarTextColor);
-            paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
-            canvas.drawText(language, width / 2, baseline - descent, paint);
+        paint.setTextAlign(Align.CENTER);
+        paint.setTypeface(Typeface.DEFAULT);
+        paint.setTextSize(mLanguageOnSpacebarTextSize);
+        final InputMethodSubtype subtype = getKeyboard().mId.mSubtype;
+        final String language = layoutLanguageOnSpacebar(paint, subtype, width);
+        // Draw language text with shadow
+        final float descent = paint.descent();
+        final float textHeight = -paint.ascent() + descent;
+        final float baseline = height / 2 + textHeight / 2;
+        if (mLanguageOnSpacebarTextShadowRadius > 0.0f) {
+            paint.setShadowLayer(mLanguageOnSpacebarTextShadowRadius, 0, 0,
+                    mLanguageOnSpacebarTextShadowColor);
+        } else {
+            paint.clearShadowLayer();
         }
-
-        // Draw the spacebar icon at the bottom
-        if (mAutoCorrectionSpacebarLedOn) {
-            final int iconWidth = width * SPACE_LED_LENGTH_PERCENT / 100;
-            final int iconHeight = mAutoCorrectionSpacebarLedIcon.getIntrinsicHeight();
-            int x = (width - iconWidth) / 2;
-            int y = height - iconHeight;
-            drawIcon(canvas, mAutoCorrectionSpacebarLedIcon, x, y, iconWidth, iconHeight);
-        } else if (mSpaceIcon != null) {
-            final int iconWidth = mSpaceIcon.getIntrinsicWidth();
-            final int iconHeight = mSpaceIcon.getIntrinsicHeight();
-            int x = (width - iconWidth) / 2;
-            int y = height - iconHeight;
-            drawIcon(canvas, mSpaceIcon, x, y, iconWidth, iconHeight);
-        }
+        paint.setColor(mLanguageOnSpacebarTextColor);
+        paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
+        canvas.drawText(language, width / 2, baseline - descent, paint);
+        paint.clearShadowLayer();
+        paint.setTextScaleX(1.0f);
     }
 
     @Override
     public void deallocateMemory() {
         super.deallocateMemory();
-        mGestureTrailsPreview.deallocateMemory();
+        mDrawingPreviewPlacerView.deallocateMemory();
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java b/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
index 6b76e24..5a9d475 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
@@ -21,25 +21,29 @@
     private final int mSlideAllowanceSquareTop;
 
     public MoreKeysDetector(float slideAllowance) {
-        super(/* keyHysteresisDistance */0);
+        super();
         mSlideAllowanceSquare = (int)(slideAllowance * slideAllowance);
         // Top slide allowance is slightly longer (sqrt(2) times) than other edges.
         mSlideAllowanceSquareTop = mSlideAllowanceSquare * 2;
     }
 
     @Override
-    public boolean alwaysAllowsSlidingInput() {
+    public boolean alwaysAllowsKeySelectionByDraggingFinger() {
         return true;
     }
 
     @Override
-    public Key detectHitKey(int x, int y) {
+    public Key detectHitKey(final int x, final int y) {
+        final Keyboard keyboard = getKeyboard();
+        if (keyboard == null) {
+            return null;
+        }
         final int touchX = getTouchX(x);
         final int touchY = getTouchY(y);
 
         Key nearestKey = null;
         int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare;
-        for (final Key key : getKeyboard().getKeys()) {
+        for (final Key key : keyboard.getSortedKeys()) {
             final int dist = key.squaredDistanceToEdge(touchX, touchY);
             if (dist < nearestDist) {
                 nearestKey = key;
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
index 8256d46..e0184d7 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
@@ -21,7 +21,6 @@
 import android.graphics.drawable.Drawable;
 
 import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.keyboard.internal.KeyPreviewDrawParams;
 import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
 import com.android.inputmethod.keyboard.internal.KeyboardParams;
@@ -223,7 +222,7 @@
         }
 
         public int getDefaultKeyCoordX() {
-            return mLeftKeys * mColumnWidth;
+            return mLeftKeys * mColumnWidth + mLeftPadding;
         }
 
         public int getX(final int n, final int row) {
@@ -260,33 +259,27 @@
         /**
          * The builder of MoreKeysKeyboard.
          * @param context the context of {@link MoreKeysKeyboardView}.
-         * @param parentKey the {@link Key} that invokes more keys keyboard.
-         * @param parentKeyboardView the {@link KeyboardView} that contains the parentKey.
+         * @param key the {@link Key} that invokes more keys keyboard.
+         * @param keyboard the {@link Keyboard} that contains the parentKey.
+         * @param isSingleMoreKeyWithPreview true if the <code>key</code> has just a single
+         *        "more key" and its key popup preview is enabled.
          * @param keyPreviewDrawParams the parameter to place key preview.
+         * @param paintToMeasure the {@link Paint} object to measure a "more key" width
          */
-        public Builder(final Context context, final Key parentKey,
-                final MainKeyboardView parentKeyboardView,
-                final KeyPreviewDrawParams keyPreviewDrawParams) {
+        public Builder(final Context context, final Key key, final Keyboard keyboard,
+                final boolean isSingleMoreKeyWithPreview, final int keyPreviewVisibleWidth,
+                final int keyPreviewVisibleHeight, final Paint paintToMeasure) {
             super(context, new MoreKeysKeyboardParams());
-            final Keyboard parentKeyboard = parentKeyboardView.getKeyboard();
-            load(parentKeyboard.mMoreKeysTemplate, parentKeyboard.mId);
+            load(keyboard.mMoreKeysTemplate, keyboard.mId);
 
             // TODO: More keys keyboard's vertical gap is currently calculated heuristically.
             // Should revise the algorithm.
-            mParams.mVerticalGap = parentKeyboard.mVerticalGap / 2;
-            mParentKey = parentKey;
+            mParams.mVerticalGap = keyboard.mVerticalGap / 2;
+            // This {@link MoreKeysKeyboard} is invoked from the <code>key</code>.
+            mParentKey = key;
 
-            final MoreKeySpec[] moreKeys = parentKey.getMoreKeys();
-            final int width, height;
-            // {@link KeyPreviewDrawParams#mPreviewVisibleWidth} should have been set at
-            // {@link MainKeyboardView#showKeyPreview(PointerTracker}, though there may be
-            // some chances that the value is zero. <code>width == 0</code> will cause
-            // zero-division error at
-            // {@link MoreKeysKeyboardParams#setParameters(int,int,int,int,int,int,boolean,int)}.
-            final boolean singleMoreKeyWithPreview = parentKeyboardView.isKeyPreviewPopupEnabled()
-                    && !parentKey.noKeyPreview() && moreKeys.length == 1
-                    && keyPreviewDrawParams.mPreviewVisibleWidth > 0;
-            if (singleMoreKeyWithPreview) {
+            final int keyWidth, rowHeight;
+            if (isSingleMoreKeyWithPreview) {
                 // Use pre-computed width and height if this more keys keyboard has only one key to
                 // mitigate visual flicker between key preview and more keys keyboard.
                 // Caveats for the visual assets: To achieve this effect, both the key preview
@@ -294,29 +287,28 @@
                 // left/right/top paddings. The bottom paddings of both backgrounds don't need to
                 // be considered because the vertical positions of both backgrounds were already
                 // adjusted with their bottom paddings deducted.
-                width = keyPreviewDrawParams.mPreviewVisibleWidth;
-                height = keyPreviewDrawParams.mPreviewVisibleHeight + mParams.mVerticalGap;
+                keyWidth = keyPreviewVisibleWidth;
+                rowHeight = keyPreviewVisibleHeight + mParams.mVerticalGap;
             } else {
                 final float padding = context.getResources().getDimension(
-                        R.dimen.more_keys_keyboard_key_horizontal_padding)
-                        + (parentKey.hasLabelsInMoreKeys()
+                        R.dimen.config_more_keys_keyboard_key_horizontal_padding)
+                        + (key.hasLabelsInMoreKeys()
                                 ? mParams.mDefaultKeyWidth * LABEL_PADDING_RATIO : 0.0f);
-                width = getMaxKeyWidth(parentKey, mParams.mDefaultKeyWidth, padding,
-                        parentKeyboardView.newLabelPaint(parentKey));
-                height = parentKeyboard.mMostCommonKeyHeight;
+                keyWidth = getMaxKeyWidth(key, mParams.mDefaultKeyWidth, padding, paintToMeasure);
+                rowHeight = keyboard.mMostCommonKeyHeight;
             }
             final int dividerWidth;
-            if (parentKey.needsDividersInMoreKeys()) {
+            if (key.needsDividersInMoreKeys()) {
                 mDivider = mResources.getDrawable(R.drawable.more_keys_divider);
-                dividerWidth = (int)(width * DIVIDER_RATIO);
+                dividerWidth = (int)(keyWidth * DIVIDER_RATIO);
             } else {
                 mDivider = null;
                 dividerWidth = 0;
             }
-            mParams.setParameters(moreKeys.length, parentKey.getMoreKeysColumn(),
-                    width, height, parentKey.getX() + parentKey.getWidth() / 2,
-                    parentKeyboard.mId.mWidth, parentKey.isFixedColumnOrderMoreKeys(),
-                    dividerWidth);
+            final MoreKeySpec[] moreKeys = key.getMoreKeys();
+            mParams.setParameters(moreKeys.length, key.getMoreKeysColumn(), keyWidth, rowHeight,
+                    key.getX() + key.getWidth() / 2, keyboard.mId.mWidth,
+                    key.isFixedColumnOrderMoreKeys(), dividerWidth);
         }
 
         private static int getMaxKeyWidth(final Key parentKey, final int minKeyWidth,
@@ -327,7 +319,7 @@
                 // If the label is single letter, minKeyWidth is enough to hold the label.
                 if (label != null && StringUtils.codePointCount(label) > 1) {
                     maxWidth = Math.max(maxWidth,
-                            (int)(TypefaceUtils.getLabelWidth(label, paint) + padding));
+                            (int)(TypefaceUtils.getStringWidth(label, paint) + padding));
                 }
             }
             return maxWidth;
@@ -343,8 +335,7 @@
                 final int row = n / params.mNumColumns;
                 final int x = params.getX(n, row);
                 final int y = params.getY(row);
-                final Key key = new Key(params, moreKeySpec, x, y,
-                        params.mDefaultKeyWidth, params.mDefaultRowHeight, moreKeyFlags);
+                final Key key = moreKeySpec.buildKey(x, y, moreKeyFlags, params);
                 params.markAsEdgeKey(key, row);
                 params.onAddKey(key);
 
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index 973128d..5140c4f 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -17,11 +17,13 @@
 package com.android.inputmethod.keyboard;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+import com.android.inputmethod.accessibility.MoreKeysKeyboardAccessibilityDelegate;
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.utils.CoordinateUtils;
@@ -42,6 +44,8 @@
 
     private int mActivePointerId;
 
+    protected MoreKeysKeyboardAccessibilityDelegate mAccessibilityDelegate;
+
     public MoreKeysKeyboardView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.moreKeysKeyboardViewStyle);
     }
@@ -49,10 +53,8 @@
     public MoreKeysKeyboardView(final Context context, final AttributeSet attrs,
             final int defStyle) {
         super(context, attrs, defStyle);
-
-        final Resources res = context.getResources();
-        mKeyDetector = new MoreKeysDetector(
-                res.getDimension(R.dimen.more_keys_keyboard_slide_allowance));
+        mKeyDetector = new MoreKeysDetector(getResources().getDimension(
+                R.dimen.config_more_keys_keyboard_slide_allowance));
     }
 
     @Override
@@ -70,8 +72,19 @@
     @Override
     public void setKeyboard(final Keyboard keyboard) {
         super.setKeyboard(keyboard);
-        mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(),
-                -getPaddingTop() + getVerticalCorrection());
+        mKeyDetector.setKeyboard(
+                keyboard, -getPaddingLeft(), -getPaddingTop() + getVerticalCorrection());
+        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
+            if (mAccessibilityDelegate == null) {
+                mAccessibilityDelegate = new MoreKeysKeyboardAccessibilityDelegate(
+                        this, mKeyDetector);
+                mAccessibilityDelegate.setOpenAnnounce(R.string.spoken_open_more_keys_keyboard);
+                mAccessibilityDelegate.setCloseAnnounce(R.string.spoken_close_more_keys_keyboard);
+            }
+            mAccessibilityDelegate.setKeyboard(keyboard);
+        } else {
+            mAccessibilityDelegate = null;
+        }
     }
 
     @Override
@@ -81,11 +94,13 @@
         mListener = listener;
         final View container = getContainerView();
         // The coordinates of panel's left-top corner in parentView's coordinate system.
-        final int x = pointX - getDefaultCoordX() - container.getPaddingLeft();
-        final int y = pointY - container.getMeasuredHeight() + container.getPaddingBottom();
+        // We need to consider background drawable paddings.
+        final int x = pointX - getDefaultCoordX() - container.getPaddingLeft() - getPaddingLeft();
+        final int y = pointY - container.getMeasuredHeight() + container.getPaddingBottom()
+                + getPaddingBottom();
 
         parentView.getLocationInWindow(mCoordinates);
-        // Ensure the horizontal position of the panel does not extend past the screen edges.
+        // Ensure the horizontal position of the panel does not extend past the parentView edges.
         final int maxX = parentView.getMeasuredWidth() - container.getMeasuredWidth();
         final int panelX = Math.max(0, Math.min(maxX, x)) + CoordinateUtils.x(mCoordinates);
         final int panelY = y + CoordinateUtils.y(mCoordinates);
@@ -95,6 +110,10 @@
         mOriginX = x + container.getPaddingLeft();
         mOriginY = y + container.getPaddingTop();
         controller.onShowMoreKeysPanel(this);
+        final MoreKeysKeyboardAccessibilityDelegate accessibilityDelegate = mAccessibilityDelegate;
+        if (accessibilityDelegate != null) {
+            accessibilityDelegate.onShowMoreKeysKeyboard();
+        }
     }
 
     /**
@@ -107,27 +126,33 @@
     @Override
     public void onDownEvent(final int x, final int y, final int pointerId, final long eventTime) {
         mActivePointerId = pointerId;
-        onMoveKeyInternal(x, y, pointerId);
+        mCurrentKey = detectKey(x, y);
     }
 
     @Override
-    public void onMoveEvent(int x, int y, final int pointerId, long eventTime) {
+    public void onMoveEvent(final int x, final int y, final int pointerId, final long eventTime) {
         if (mActivePointerId != pointerId) {
             return;
         }
         final boolean hasOldKey = (mCurrentKey != null);
-        onMoveKeyInternal(x, y, pointerId);
+        mCurrentKey = detectKey(x, y);
         if (hasOldKey && mCurrentKey == null) {
-            // If the pointer has moved too far away from any target then cancel the panel.
-            mController.onCancelMoreKeysPanel(this);
+            // A more keys keyboard is canceled when detecting no key.
+            mController.onCancelMoreKeysPanel();
         }
     }
 
     @Override
     public void onUpEvent(final int x, final int y, final int pointerId, final long eventTime) {
-        if (mCurrentKey != null && mActivePointerId == pointerId) {
+        if (mActivePointerId != pointerId) {
+            return;
+        }
+        // Calling {@link #detectKey(int,int,int)} here is harmless because the last move event and
+        // the following up event share the same coordinates.
+        mCurrentKey = detectKey(x, y);
+        if (mCurrentKey != null) {
             updateReleaseKeyGraphics(mCurrentKey);
-            onCodeInput(mCurrentKey.getCode(), x, y);
+            onKeyInput(mCurrentKey, x, y);
             mCurrentKey = null;
         }
     }
@@ -135,31 +160,36 @@
     /**
      * Performs the specific action for this panel when the user presses a key on the panel.
      */
-    protected void onCodeInput(final int code, final int x, final int y) {
+    protected void onKeyInput(final Key key, final int x, final int y) {
+        final int code = key.getCode();
         if (code == Constants.CODE_OUTPUT_TEXT) {
             mListener.onTextInput(mCurrentKey.getOutputText());
         } else if (code != Constants.CODE_UNSPECIFIED) {
-            mListener.onCodeInput(code, x, y);
+            if (getKeyboard().hasProximityCharsCorrection(code)) {
+                mListener.onCodeInput(code, x, y, false /* isKeyRepeat */);
+            } else {
+                mListener.onCodeInput(code, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                        false /* isKeyRepeat */);
+            }
         }
     }
 
-    private void onMoveKeyInternal(int x, int y, int pointerId) {
-        if (mActivePointerId != pointerId) {
-            // Ignore old pointers when newer pointer is active.
-            return;
-        }
+    private Key detectKey(int x, int y) {
         final Key oldKey = mCurrentKey;
         final Key newKey = mKeyDetector.detectHitKey(x, y);
-        if (newKey != oldKey) {
-            mCurrentKey = newKey;
-            invalidateKey(mCurrentKey);
-            if (oldKey != null) {
-                updateReleaseKeyGraphics(oldKey);
-            }
-            if (newKey != null) {
-                updatePressKeyGraphics(newKey);
-            }
+        if (newKey == oldKey) {
+            return newKey;
         }
+        // A new key is detected.
+        if (oldKey != null) {
+            updateReleaseKeyGraphics(oldKey);
+            invalidateKey(oldKey);
+        }
+        if (newKey != null) {
+            updatePressKeyGraphics(newKey);
+            invalidateKey(newKey);
+        }
+        return newKey;
     }
 
     private void updateReleaseKeyGraphics(final Key key) {
@@ -177,7 +207,11 @@
         if (!isShowingInParent()) {
             return;
         }
-        mController.onDismissMoreKeysPanel(this);
+        final MoreKeysKeyboardAccessibilityDelegate accessibilityDelegate = mAccessibilityDelegate;
+        if (accessibilityDelegate != null) {
+            accessibilityDelegate.onDismissMoreKeysKeyboard();
+        }
+        mController.onDismissMoreKeysPanel();
     }
 
     @Override
@@ -214,12 +248,38 @@
         return true;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
-    public View getContainerView() {
+    public boolean onHoverEvent(final MotionEvent event) {
+        final MoreKeysKeyboardAccessibilityDelegate accessibilityDelegate = mAccessibilityDelegate;
+        if (accessibilityDelegate != null) {
+            return accessibilityDelegate.onHoverEvent(event);
+        }
+        return super.onHoverEvent(event);
+    }
+
+    private View getContainerView() {
         return (View)getParent();
     }
 
     @Override
+    public void showInParent(final ViewGroup parentView) {
+        removeFromParent();
+        parentView.addView(getContainerView());
+    }
+
+    @Override
+    public void removeFromParent() {
+        final View containerView = getContainerView();
+        final ViewGroup currentParent = (ViewGroup)containerView.getParent();
+        if (currentParent != null) {
+            currentParent.removeView(containerView);
+        }
+    }
+
+    @Override
     public boolean isShowingInParent() {
         return (getContainerView().getParent() != null);
     }
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java b/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java
index 886c628..7bddd09 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysPanel.java
@@ -17,6 +17,7 @@
 package com.android.inputmethod.keyboard;
 
 import android.view.View;
+import android.view.ViewGroup;
 
 public interface MoreKeysPanel {
     public interface Controller {
@@ -28,24 +29,22 @@
 
         /**
          * Remove the current {@link MoreKeysPanel} from the target view.
-         * @param panel the panel to be dismissed.
          */
-        public void onDismissMoreKeysPanel(final MoreKeysPanel panel);
+        public void onDismissMoreKeysPanel();
 
         /**
          * Instructs the parent to cancel the panel (e.g., when entering a different input mode).
-         * @param panel the panel to be canceled.
          */
-        public void onCancelMoreKeysPanel(final MoreKeysPanel panel);
+        public void onCancelMoreKeysPanel();
     }
 
     public static final Controller EMPTY_CONTROLLER = new Controller() {
         @Override
         public void onShowMoreKeysPanel(final MoreKeysPanel panel) {}
         @Override
-        public void onDismissMoreKeysPanel(final MoreKeysPanel panel) {}
+        public void onDismissMoreKeysPanel() {}
         @Override
-        public void onCancelMoreKeysPanel(final MoreKeysPanel panel) {}
+        public void onCancelMoreKeysPanel() {}
     };
 
     /**
@@ -119,9 +118,16 @@
     public int translateY(int y);
 
     /**
-     * Return the view containing the more keys panel.
+     * Show this {@link MoreKeysPanel} in the parent view.
+     *
+     * @param parentView the {@link ViewGroup} that hosts this {@link MoreKeysPanel}.
      */
-    public View getContainerView();
+    public void showInParent(ViewGroup parentView);
+
+    /**
+     * Remove this {@link MoreKeysPanel} from the parent view.
+     */
+    public void removeFromParent();
 
     /**
      * Return whether the panel is currently being shown.
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 52f190e..49288ad 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -19,73 +19,40 @@
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.os.SystemClock;
-import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.MotionEvent;
 
-import com.android.inputmethod.accessibility.AccessibilityUtils;
-import com.android.inputmethod.keyboard.internal.GestureStroke;
-import com.android.inputmethod.keyboard.internal.GestureStroke.GestureStrokeParams;
-import com.android.inputmethod.keyboard.internal.GestureStrokeWithPreviewPoints;
-import com.android.inputmethod.keyboard.internal.GestureStrokeWithPreviewPoints.GestureStrokePreviewParams;
+import com.android.inputmethod.keyboard.internal.BatchInputArbiter;
+import com.android.inputmethod.keyboard.internal.BatchInputArbiter.BatchInputArbiterListener;
+import com.android.inputmethod.keyboard.internal.BogusMoveEventDetector;
+import com.android.inputmethod.keyboard.internal.GestureEnabler;
+import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingParams;
+import com.android.inputmethod.keyboard.internal.GestureStrokeDrawingPoints;
+import com.android.inputmethod.keyboard.internal.GestureStrokeRecognitionParams;
 import com.android.inputmethod.keyboard.internal.PointerTrackerQueue;
+import com.android.inputmethod.keyboard.internal.TypingTimeRecorder;
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.InputPointers;
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.define.ProductionFlag;
+import com.android.inputmethod.latin.define.DebugFlags;
 import com.android.inputmethod.latin.settings.Settings;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.CoordinateUtils;
 import com.android.inputmethod.latin.utils.ResourceUtils;
-import com.android.inputmethod.research.ResearchLogger;
 
 import java.util.ArrayList;
 
-public final class PointerTracker implements PointerTrackerQueue.Element {
+public final class PointerTracker implements PointerTrackerQueue.Element,
+        BatchInputArbiterListener {
     private static final String TAG = PointerTracker.class.getSimpleName();
     private static final boolean DEBUG_EVENT = false;
     private static final boolean DEBUG_MOVE_EVENT = false;
     private static final boolean DEBUG_LISTENER = false;
-    private static boolean DEBUG_MODE = LatinImeLogger.sDBG || DEBUG_EVENT;
-
-    /** True if {@link PointerTracker}s should handle gesture events. */
-    private static boolean sShouldHandleGesture = false;
-    private static boolean sMainDictionaryAvailable = false;
-    private static boolean sGestureHandlingEnabledByInputField = false;
-    private static boolean sGestureHandlingEnabledByUser = false;
-
-    public interface KeyEventHandler {
-        /**
-         * Get KeyDetector object that is used for this PointerTracker.
-         * @return the KeyDetector object that is used for this PointerTracker
-         */
-        public KeyDetector getKeyDetector();
-
-        /**
-         * Get KeyboardActionListener object that is used to register key code and so on.
-         * @return the KeyboardActionListner for this PointerTracke
-         */
-        public KeyboardActionListener getKeyboardActionListener();
-
-        /**
-         * Get DrawingProxy object that is used for this PointerTracker.
-         * @return the DrawingProxy object that is used for this PointerTracker
-         */
-        public DrawingProxy getDrawingProxy();
-
-        /**
-         * Get TimerProxy object that handles key repeat and long press timer event for this
-         * PointerTracker.
-         * @return the TimerProxy object that handles key repeat and long press timer event.
-         */
-        public TimerProxy getTimerProxy();
-    }
+    private static boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED || DEBUG_EVENT;
 
     public interface DrawingProxy {
         public void invalidateKey(Key key);
-        public void showKeyPreview(PointerTracker tracker);
-        public void dismissKeyPreview(PointerTracker tracker);
+        public void showKeyPreview(Key key);
+        public void dismissKeyPreview(Key key);
         public void showSlidingKeyInputPreview(PointerTracker tracker);
         public void dismissSlidingKeyInputPreview();
         public void showGestureTrail(PointerTracker tracker, boolean showsFloatingPreviewText);
@@ -94,13 +61,14 @@
     public interface TimerProxy {
         public void startTypingStateTimer(Key typedKey);
         public boolean isTypingState();
-        public void startKeyRepeatTimer(PointerTracker tracker, int repeatCount, int delay);
-        public void startLongPressTimer(PointerTracker tracker, int delay);
-        public void cancelLongPressTimer();
+        public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay);
+        public void startLongPressTimerOf(PointerTracker tracker, int delay);
+        public void cancelLongPressTimerOf(PointerTracker tracker);
+        public void cancelLongPressShiftKeyTimers();
+        public void cancelKeyTimersOf(PointerTracker tracker);
         public void startDoubleTapShiftKeyTimer();
         public void cancelDoubleTapShiftKeyTimer();
         public boolean isInDoubleTapShiftKeyTimeout();
-        public void cancelKeyTimers();
         public void startUpdateBatchInputTimer(PointerTracker tracker);
         public void cancelUpdateBatchInputTimer(PointerTracker tracker);
         public void cancelAllUpdateBatchInputTimers();
@@ -111,11 +79,15 @@
             @Override
             public boolean isTypingState() { return false; }
             @Override
-            public void startKeyRepeatTimer(PointerTracker tracker, int repeatCount, int delay) {}
+            public void startKeyRepeatTimerOf(PointerTracker tracker, int repeatCount, int delay) {}
             @Override
-            public void startLongPressTimer(PointerTracker tracker, int delay) {}
+            public void startLongPressTimerOf(PointerTracker tracker, int delay) {}
             @Override
-            public void cancelLongPressTimer() {}
+            public void cancelLongPressTimerOf(PointerTracker tracker) {}
+            @Override
+            public void cancelLongPressShiftKeyTimers() {}
+            @Override
+            public void cancelKeyTimersOf(PointerTracker tracker) {}
             @Override
             public void startDoubleTapShiftKeyTimer() {}
             @Override
@@ -123,8 +95,6 @@
             @Override
             public boolean isInDoubleTapShiftKeyTimeout() { return false; }
             @Override
-            public void cancelKeyTimers() {}
-            @Override
             public void startUpdateBatchInputTimer(PointerTracker tracker) {}
             @Override
             public void cancelUpdateBatchInputTimer(PointerTracker tracker) {}
@@ -134,7 +104,7 @@
     }
 
     static final class PointerTrackerParams {
-        public final boolean mSlidingKeyInputEnabled;
+        public final boolean mKeySelectionByDraggingFinger;
         public final int mTouchNoiseThresholdTime;
         public final int mTouchNoiseThresholdDistance;
         public final int mSuppressKeyPreviewAfterBatchInputDuration;
@@ -142,21 +112,9 @@
         public final int mKeyRepeatInterval;
         public final int mLongPressShiftLockTimeout;
 
-        public static final PointerTrackerParams DEFAULT = new PointerTrackerParams();
-
-        private PointerTrackerParams() {
-            mSlidingKeyInputEnabled = false;
-            mTouchNoiseThresholdTime = 0;
-            mTouchNoiseThresholdDistance = 0;
-            mSuppressKeyPreviewAfterBatchInputDuration = 0;
-            mKeyRepeatStartTimeout = 0;
-            mKeyRepeatInterval = 0;
-            mLongPressShiftLockTimeout = 0;
-        }
-
         public PointerTrackerParams(final TypedArray mainKeyboardViewAttr) {
-            mSlidingKeyInputEnabled = mainKeyboardViewAttr.getBoolean(
-                    R.styleable.MainKeyboardView_slidingKeyInputEnable, false);
+            mKeySelectionByDraggingFinger = mainKeyboardViewAttr.getBoolean(
+                    R.styleable.MainKeyboardView_keySelectionByDraggingFinger, false);
             mTouchNoiseThresholdTime = mainKeyboardViewAttr.getInt(
                     R.styleable.MainKeyboardView_touchNoiseThresholdTime, 0);
             mTouchNoiseThresholdDistance = mainKeyboardViewAttr.getDimensionPixelSize(
@@ -172,149 +130,36 @@
         }
     }
 
+    private static GestureEnabler sGestureEnabler = new GestureEnabler();
+
     // Parameters for pointer handling.
     private static PointerTrackerParams sParams;
-    private static GestureStrokeParams sGestureStrokeParams;
-    private static GestureStrokePreviewParams sGesturePreviewParams;
+    private static GestureStrokeRecognitionParams sGestureStrokeRecognitionParams;
+    private static GestureStrokeDrawingParams sGestureStrokeDrawingParams;
     private static boolean sNeedsPhantomSuddenMoveEventHack;
     // Move this threshold to resource.
     // TODO: Device specific parameter would be better for device specific hack?
     private static final float PHANTOM_SUDDEN_MOVE_THRESHOLD = 0.25f; // in keyWidth
-    // This hack is applied to certain classes of tablets.
-    // See {@link #needsProximateBogusDownMoveUpEventHack(Resources)}.
-    private static boolean sNeedsProximateBogusDownMoveUpEventHack;
 
-    private static final ArrayList<PointerTracker> sTrackers = CollectionUtils.newArrayList();
+    private static final ArrayList<PointerTracker> sTrackers = new ArrayList<>();
     private static final PointerTrackerQueue sPointerTrackerQueue = new PointerTrackerQueue();
 
     public final int mPointerId;
 
-    private DrawingProxy mDrawingProxy;
-    private TimerProxy mTimerProxy;
-    private KeyDetector mKeyDetector;
-    private KeyboardActionListener mListener = KeyboardActionListener.EMPTY_LISTENER;
+    private static DrawingProxy sDrawingProxy;
+    private static TimerProxy sTimerProxy;
+    private static KeyboardActionListener sListener = KeyboardActionListener.EMPTY_LISTENER;
 
+    // The {@link KeyDetector} is set whenever the down event is processed. Also this is updated
+    // when new {@link Keyboard} is set by {@link #setKeyDetector(KeyDetector)}.
+    private KeyDetector mKeyDetector = new KeyDetector();
     private Keyboard mKeyboard;
-    private int mPhantonSuddenMoveThreshold;
+    private int mPhantomSuddenMoveThreshold;
     private final BogusMoveEventDetector mBogusMoveEventDetector = new BogusMoveEventDetector();
 
     private boolean mIsDetectingGesture = false; // per PointerTracker.
     private static boolean sInGesture = false;
-    private static long sGestureFirstDownTime;
-    private static TimeRecorder sTimeRecorder;
-    private static final InputPointers sAggregratedPointers = new InputPointers(
-            GestureStroke.DEFAULT_CAPACITY);
-    private static int sLastRecognitionPointSize = 0; // synchronized using sAggregratedPointers
-    private static long sLastRecognitionTime = 0; // synchronized using sAggregratedPointers
-
-    static final class BogusMoveEventDetector {
-        // Move these thresholds to resource.
-        // These thresholds' unit is a diagonal length of a key.
-        private static final float BOGUS_MOVE_ACCUMULATED_DISTANCE_THRESHOLD = 0.53f;
-        private static final float BOGUS_MOVE_RADIUS_THRESHOLD = 1.14f;
-
-        private int mAccumulatedDistanceThreshold;
-        private int mRadiusThreshold;
-
-        // Accumulated distance from actual and artificial down keys.
-        /* package */ int mAccumulatedDistanceFromDownKey;
-        private int mActualDownX;
-        private int mActualDownY;
-
-        public void setKeyboardGeometry(final int keyWidth, final int keyHeight) {
-            final float keyDiagonal = (float)Math.hypot(keyWidth, keyHeight);
-            mAccumulatedDistanceThreshold = (int)(
-                    keyDiagonal * BOGUS_MOVE_ACCUMULATED_DISTANCE_THRESHOLD);
-            mRadiusThreshold = (int)(keyDiagonal * BOGUS_MOVE_RADIUS_THRESHOLD);
-        }
-
-        public void onActualDownEvent(final int x, final int y) {
-            mActualDownX = x;
-            mActualDownY = y;
-        }
-
-        public void onDownKey() {
-            mAccumulatedDistanceFromDownKey = 0;
-        }
-
-        public void onMoveKey(final int distance) {
-            mAccumulatedDistanceFromDownKey += distance;
-        }
-
-        public boolean hasTraveledLongDistance(final int x, final int y) {
-            final int dx = Math.abs(x - mActualDownX);
-            final int dy = Math.abs(y - mActualDownY);
-            // A bogus move event should be a horizontal movement. A vertical movement might be
-            // a sloppy typing and should be ignored.
-            return dx >= dy && mAccumulatedDistanceFromDownKey >= mAccumulatedDistanceThreshold;
-        }
-
-        /* package */ int getDistanceFromDownEvent(final int x, final int y) {
-            return getDistance(x, y, mActualDownX, mActualDownY);
-        }
-
-        public boolean isCloseToActualDownEvent(final int x, final int y) {
-            return getDistanceFromDownEvent(x, y) < mRadiusThreshold;
-        }
-    }
-
-    static final class TimeRecorder {
-        private final int mSuppressKeyPreviewAfterBatchInputDuration;
-        private final int mStaticTimeThresholdAfterFastTyping; // msec
-        private long mLastTypingTime;
-        private long mLastLetterTypingTime;
-        private long mLastBatchInputTime;
-
-        public TimeRecorder(final PointerTrackerParams pointerTrackerParams,
-                final GestureStrokeParams gestureStrokeParams) {
-            mSuppressKeyPreviewAfterBatchInputDuration =
-                    pointerTrackerParams.mSuppressKeyPreviewAfterBatchInputDuration;
-            mStaticTimeThresholdAfterFastTyping =
-                    gestureStrokeParams.mStaticTimeThresholdAfterFastTyping;
-        }
-
-        public boolean isInFastTyping(final long eventTime) {
-            final long elapsedTimeSinceLastLetterTyping = eventTime - mLastLetterTypingTime;
-            return elapsedTimeSinceLastLetterTyping < mStaticTimeThresholdAfterFastTyping;
-        }
-
-        private boolean wasLastInputTyping() {
-            return mLastTypingTime >= mLastBatchInputTime;
-        }
-
-        public void onCodeInput(final int code, final long eventTime) {
-            // Record the letter typing time when
-            // 1. Letter keys are typed successively without any batch input in between.
-            // 2. A letter key is typed within the threshold time since the last any key typing.
-            // 3. A non-letter key is typed within the threshold time since the last letter key
-            // typing.
-            if (Character.isLetter(code)) {
-                if (wasLastInputTyping()
-                        || eventTime - mLastTypingTime < mStaticTimeThresholdAfterFastTyping) {
-                    mLastLetterTypingTime = eventTime;
-                }
-            } else {
-                if (eventTime - mLastLetterTypingTime < mStaticTimeThresholdAfterFastTyping) {
-                    // This non-letter typing should be treated as a part of fast typing.
-                    mLastLetterTypingTime = eventTime;
-                }
-            }
-            mLastTypingTime = eventTime;
-        }
-
-        public void onEndBatchInput(final long eventTime) {
-            mLastBatchInputTime = eventTime;
-        }
-
-        public long getLastLetterTypingTime() {
-            return mLastLetterTypingTime;
-        }
-
-        public boolean needsToSuppressKeyPreviewPopup(final long eventTime) {
-            return !wasLastInputTyping()
-                    && eventTime - mLastBatchInputTime < mSuppressKeyPreviewAfterBatchInputDuration;
-        }
-    }
+    private static TypingTimeRecorder sTypingTimeRecorder;
 
     // The position and time at which first down event occurred.
     private long mDownTime;
@@ -341,92 +186,63 @@
     private MoreKeysPanel mMoreKeysPanel;
 
     private static final int MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT = 3;
-    // true if this pointer is in a sliding key input.
-    boolean mIsInSlidingKeyInput;
-    // true if this pointer is in a sliding key input from a modifier key,
+    // true if this pointer is in the dragging finger mode.
+    boolean mIsInDraggingFinger;
+    // true if this pointer is sliding from a modifier key and in the sliding key input mode,
     // so that further modifier keys should be ignored.
-    boolean mIsInSlidingKeyInputFromModifier;
+    boolean mIsInSlidingKeyInput;
     // if not a NOT_A_CODE, the key of this code is repeating
     private int mCurrentRepeatingKeyCode = Constants.NOT_A_CODE;
 
-    // true if a sliding key input is allowed.
-    private boolean mIsAllowedSlidingKeyInput;
+    // true if dragging finger is allowed.
+    private boolean mIsAllowedDraggingFinger;
 
-    private final GestureStrokeWithPreviewPoints mGestureStrokeWithPreviewPoints;
+    private final BatchInputArbiter mBatchInputArbiter;
+    private final GestureStrokeDrawingPoints mGestureStrokeDrawingPoints;
 
-    private static final int SMALL_TABLET_SMALLEST_WIDTH = 600; // dp
-    private static final int LARGE_TABLET_SMALLEST_WIDTH = 768; // dp
-
-    private static boolean needsProximateBogusDownMoveUpEventHack(final Resources res) {
-        // The proximate bogus down move up event hack is needed for a device such like,
-        // 1) is large tablet, or 2) is small tablet and the screen density is less than hdpi.
-        // Though it seems odd to use screen density as criteria of the quality of the touch
-        // screen, the small table that has a less density screen than hdpi most likely has been
-        // made with the touch screen that needs the hack.
-        final int sw = res.getConfiguration().smallestScreenWidthDp;
-        final boolean isLargeTablet = (sw >= LARGE_TABLET_SMALLEST_WIDTH);
-        final boolean isSmallTablet =
-                (sw >= SMALL_TABLET_SMALLEST_WIDTH && sw < LARGE_TABLET_SMALLEST_WIDTH);
-        final int densityDpi = res.getDisplayMetrics().densityDpi;
-        final boolean hasLowDensityScreen = (densityDpi < DisplayMetrics.DENSITY_HIGH);
-        final boolean needsTheHack = isLargeTablet || (isSmallTablet && hasLowDensityScreen);
-        if (DEBUG_MODE) {
-            Log.d(TAG, "needsProximateBogusDownMoveUpEventHack=" + needsTheHack
-                    + " smallestScreenWidthDp=" + sw + " densityDpi=" + densityDpi);
-        }
-        return needsTheHack;
-    }
-
-    public static void init(final Resources res) {
-        sNeedsPhantomSuddenMoveEventHack = Boolean.parseBoolean(
-                ResourceUtils.getDeviceOverrideValue(
-                        res, R.array.phantom_sudden_move_event_device_list));
-        sNeedsProximateBogusDownMoveUpEventHack = needsProximateBogusDownMoveUpEventHack(res);
-        sParams = PointerTrackerParams.DEFAULT;
-        sGestureStrokeParams = GestureStrokeParams.DEFAULT;
-        sGesturePreviewParams = GestureStrokePreviewParams.DEFAULT;
-        sTimeRecorder = new TimeRecorder(sParams, sGestureStrokeParams);
-    }
-
-    public static void setParameters(final TypedArray mainKeyboardViewAttr) {
+    // TODO: Add PointerTrackerFactory singleton and move some class static methods into it.
+    public static void init(final TypedArray mainKeyboardViewAttr, final TimerProxy timerProxy,
+            final DrawingProxy drawingProxy) {
         sParams = new PointerTrackerParams(mainKeyboardViewAttr);
-        sGestureStrokeParams = new GestureStrokeParams(mainKeyboardViewAttr);
-        sGesturePreviewParams = new GestureStrokePreviewParams(mainKeyboardViewAttr);
-        sTimeRecorder = new TimeRecorder(sParams, sGestureStrokeParams);
-    }
+        sGestureStrokeRecognitionParams = new GestureStrokeRecognitionParams(mainKeyboardViewAttr);
+        sGestureStrokeDrawingParams = new GestureStrokeDrawingParams(mainKeyboardViewAttr);
+        sTypingTimeRecorder = new TypingTimeRecorder(
+                sGestureStrokeRecognitionParams.mStaticTimeThresholdAfterFastTyping,
+                sParams.mSuppressKeyPreviewAfterBatchInputDuration);
 
-    private static void updateGestureHandlingMode() {
-        sShouldHandleGesture = sMainDictionaryAvailable
-                && sGestureHandlingEnabledByInputField
-                && sGestureHandlingEnabledByUser
-                && !AccessibilityUtils.getInstance().isTouchExplorationEnabled();
+        final Resources res = mainKeyboardViewAttr.getResources();
+        sNeedsPhantomSuddenMoveEventHack = Boolean.parseBoolean(
+                ResourceUtils.getDeviceOverrideValue(res,
+                        R.array.phantom_sudden_move_event_device_list, Boolean.FALSE.toString()));
+        BogusMoveEventDetector.init(res);
+
+        sTimerProxy = timerProxy;
+        sDrawingProxy = drawingProxy;
     }
 
     // Note that this method is called from a non-UI thread.
     public static void setMainDictionaryAvailability(final boolean mainDictionaryAvailable) {
-        sMainDictionaryAvailable = mainDictionaryAvailable;
-        updateGestureHandlingMode();
+        sGestureEnabler.setMainDictionaryAvailability(mainDictionaryAvailable);
     }
 
     public static void setGestureHandlingEnabledByUser(final boolean gestureHandlingEnabledByUser) {
-        sGestureHandlingEnabledByUser = gestureHandlingEnabledByUser;
-        updateGestureHandlingMode();
+        sGestureEnabler.setGestureHandlingEnabledByUser(gestureHandlingEnabledByUser);
     }
 
-    public static PointerTracker getPointerTracker(final int id, final KeyEventHandler handler) {
+    public static PointerTracker getPointerTracker(final int id) {
         final ArrayList<PointerTracker> trackers = sTrackers;
 
         // Create pointer trackers until we can get 'id+1'-th tracker, if needed.
         for (int i = trackers.size(); i <= id; i++) {
-            final PointerTracker tracker = new PointerTracker(i, handler);
+            final PointerTracker tracker = new PointerTracker(i);
             trackers.add(tracker);
         }
 
         return trackers.get(id);
     }
 
-    public static boolean isAnyInSlidingKeyInput() {
-        return sPointerTrackerQueue.isAnyInSlidingKeyInput();
+    public static boolean isAnyInDraggingFinger() {
+        return sPointerTrackerQueue.isAnyInDraggingFinger();
     }
 
     public static void cancelAllPointerTrackers() {
@@ -434,31 +250,27 @@
     }
 
     public static void setKeyboardActionListener(final KeyboardActionListener listener) {
-        final int trackersSize = sTrackers.size();
-        for (int i = 0; i < trackersSize; ++i) {
-            final PointerTracker tracker = sTrackers.get(i);
-            tracker.mListener = listener;
-        }
+        sListener = listener;
     }
 
     public static void setKeyDetector(final KeyDetector keyDetector) {
+        final Keyboard keyboard = keyDetector.getKeyboard();
+        if (keyboard == null) {
+            return;
+        }
         final int trackersSize = sTrackers.size();
         for (int i = 0; i < trackersSize; ++i) {
             final PointerTracker tracker = sTrackers.get(i);
             tracker.setKeyDetectorInner(keyDetector);
-            // Mark that keyboard layout has been changed.
-            tracker.mKeyboardLayoutHasBeenChanged = true;
         }
-        final Keyboard keyboard = keyDetector.getKeyboard();
-        sGestureHandlingEnabledByInputField = !keyboard.mId.passwordInput();
-        updateGestureHandlingMode();
+        sGestureEnabler.setPasswordMode(keyboard.mId.passwordInput());
     }
 
     public static void setReleasedKeyGraphicsToAllKeys() {
         final int trackersSize = sTrackers.size();
         for (int i = 0; i < trackersSize; ++i) {
             final PointerTracker tracker = sTrackers.get(i);
-            tracker.setReleasedKeyGraphics(tracker.mCurrentKey);
+            tracker.setReleasedKeyGraphics(tracker.getKey());
         }
     }
 
@@ -466,28 +278,14 @@
         final int trackersSize = sTrackers.size();
         for (int i = 0; i < trackersSize; ++i) {
             final PointerTracker tracker = sTrackers.get(i);
-            if (tracker.isShowingMoreKeysPanel()) {
-                tracker.mMoreKeysPanel.dismissMoreKeysPanel();
-                tracker.mMoreKeysPanel = null;
-            }
+            tracker.dismissMoreKeysPanel();
         }
     }
 
-    private PointerTracker(final int id, final KeyEventHandler handler) {
-        if (handler == null) {
-            throw new NullPointerException();
-        }
+    private PointerTracker(final int id) {
         mPointerId = id;
-        mGestureStrokeWithPreviewPoints = new GestureStrokeWithPreviewPoints(
-                id, sGestureStrokeParams, sGesturePreviewParams);
-        setKeyEventHandler(handler);
-    }
-
-    private void setKeyEventHandler(final KeyEventHandler handler) {
-        setKeyDetectorInner(handler.getKeyDetector());
-        mListener = handler.getKeyboardActionListener();
-        mDrawingProxy = handler.getDrawingProxy();
-        mTimerProxy = handler.getTimerProxy();
+        mBatchInputArbiter = new BatchInputArbiter(id, sGestureStrokeRecognitionParams);
+        mGestureStrokeDrawingPoints = new GestureStrokeDrawingPoints(sGestureStrokeDrawingParams);
     }
 
     // Returns true if keyboard has been changed by this callback.
@@ -500,10 +298,10 @@
         if (sInGesture || mIsDetectingGesture || mIsTrackingForActionDisabled) {
             return false;
         }
-        final boolean ignoreModifierKey = mIsInSlidingKeyInput && key.isModifier();
+        final boolean ignoreModifierKey = mIsInDraggingFinger && key.isModifier();
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onPress    : %s%s%s%s", mPointerId,
-                    KeyDetector.printableCode(key),
+                    (key == null ? "none" : Constants.printableCode(key.getCode())),
                     ignoreModifierKey ? " ignoreModifier" : "",
                     key.isEnabled() ? "" : " disabled",
                     repeatCount > 0 ? " repeatCount=" + repeatCount : ""));
@@ -512,21 +310,21 @@
             return false;
         }
         if (key.isEnabled()) {
-            mListener.onPressKey(key.getCode(), repeatCount, getActivePointerTrackerCount() == 1);
+            sListener.onPressKey(key.getCode(), repeatCount, getActivePointerTrackerCount() == 1);
             final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged;
             mKeyboardLayoutHasBeenChanged = false;
-            mTimerProxy.startTypingStateTimer(key);
+            sTimerProxy.startTypingStateTimer(key);
             return keyboardLayoutHasBeenChanged;
         }
         return false;
     }
 
     // Note that we need primaryCode argument because the keyboard may in shifted state and the
-    // primaryCode is different from {@link Key#mCode}.
+    // primaryCode is different from {@link Key#mKeyCode}.
     private void callListenerOnCodeInput(final Key key, final int primaryCode, final int x,
-            final int y, final long eventTime) {
-        final boolean ignoreModifierKey = mIsInSlidingKeyInput && key.isModifier();
-        final boolean altersCode = key.altCodeWhileTyping() && mTimerProxy.isTypingState();
+            final int y, final long eventTime, final boolean isKeyRepeat) {
+        final boolean ignoreModifierKey = mIsInDraggingFinger && key.isModifier();
+        final boolean altersCode = key.altCodeWhileTyping() && sTimerProxy.isTypingState();
         final int code = altersCode ? key.getAltCode() : primaryCode;
         if (DEBUG_LISTENER) {
             final String output = code == Constants.CODE_OUTPUT_TEXT
@@ -535,48 +333,45 @@
                     output, ignoreModifierKey ? " ignoreModifier" : "",
                     altersCode ? " altersCode" : "", key.isEnabled() ? "" : " disabled"));
         }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.pointerTracker_callListenerOnCodeInput(key, x, y, ignoreModifierKey,
-                    altersCode, code);
-        }
         if (ignoreModifierKey) {
             return;
         }
         // Even if the key is disabled, it should respond if it is in the altCodeWhileTyping state.
         if (key.isEnabled() || altersCode) {
-            sTimeRecorder.onCodeInput(code, eventTime);
+            sTypingTimeRecorder.onCodeInput(code, eventTime);
             if (code == Constants.CODE_OUTPUT_TEXT) {
-                mListener.onTextInput(key.getOutputText());
+                sListener.onTextInput(key.getOutputText());
             } else if (code != Constants.CODE_UNSPECIFIED) {
-                mListener.onCodeInput(code, x, y);
+                if (mKeyboard.hasProximityCharsCorrection(code)) {
+                    sListener.onCodeInput(code, x, y, isKeyRepeat);
+                } else {
+                    sListener.onCodeInput(code,
+                            Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, isKeyRepeat);
+                }
             }
         }
     }
 
     // Note that we need primaryCode argument because the keyboard may be in shifted state and the
-    // primaryCode is different from {@link Key#mCode}.
+    // primaryCode is different from {@link Key#mKeyCode}.
     private void callListenerOnRelease(final Key key, final int primaryCode,
             final boolean withSliding) {
         // See the comment at {@link #callListenerOnPressAndCheckKeyboardLayoutChange(Key}}.
         if (sInGesture || mIsDetectingGesture || mIsTrackingForActionDisabled) {
             return;
         }
-        final boolean ignoreModifierKey = mIsInSlidingKeyInput && key.isModifier();
+        final boolean ignoreModifierKey = mIsInDraggingFinger && key.isModifier();
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onRelease  : %s%s%s%s", mPointerId,
                     Constants.printableCode(primaryCode),
                     withSliding ? " sliding" : "", ignoreModifierKey ? " ignoreModifier" : "",
                     key.isEnabled() ?  "": " disabled"));
         }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.pointerTracker_callListenerOnRelease(key, primaryCode, withSliding,
-                    ignoreModifierKey);
-        }
         if (ignoreModifierKey) {
             return;
         }
         if (key.isEnabled()) {
-            mListener.onReleaseKey(primaryCode, withSliding);
+            sListener.onReleaseKey(primaryCode, withSliding);
         }
     }
 
@@ -584,43 +379,41 @@
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onFinishSlidingInput", mPointerId));
         }
-        mListener.onFinishSlidingInput();
+        sListener.onFinishSlidingInput();
     }
 
     private void callListenerOnCancelInput() {
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onCancelInput", mPointerId));
         }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.pointerTracker_callListenerOnCancelInput();
-        }
-        mListener.onCancelInput();
+        sListener.onCancelInput();
     }
 
     private void setKeyDetectorInner(final KeyDetector keyDetector) {
         final Keyboard keyboard = keyDetector.getKeyboard();
+        if (keyboard == null) {
+            return;
+        }
         if (keyDetector == mKeyDetector && keyboard == mKeyboard) {
             return;
         }
         mKeyDetector = keyDetector;
-        mKeyboard = keyDetector.getKeyboard();
+        mKeyboard = keyboard;
+        // Mark that keyboard layout has been changed.
+        mKeyboardLayoutHasBeenChanged = true;
         final int keyWidth = mKeyboard.mMostCommonKeyWidth;
         final int keyHeight = mKeyboard.mMostCommonKeyHeight;
-        mGestureStrokeWithPreviewPoints.setKeyboardGeometry(keyWidth, mKeyboard.mOccupiedHeight);
-        final Key newKey = mKeyDetector.detectHitKey(mKeyX, mKeyY);
-        if (newKey != mCurrentKey) {
-            if (mDrawingProxy != null) {
-                setReleasedKeyGraphics(mCurrentKey);
-            }
-            // Keep {@link #mCurrentKey} that comes from previous keyboard.
-        }
-        mPhantonSuddenMoveThreshold = (int)(keyWidth * PHANTOM_SUDDEN_MOVE_THRESHOLD);
+        mBatchInputArbiter.setKeyboardGeometry(keyWidth, mKeyboard.mOccupiedHeight);
+        // Keep {@link #mCurrentKey} that comes from previous keyboard. The key preview of
+        // {@link #mCurrentKey} will be dismissed by {@setReleasedKeyGraphics(Key)} via
+        // {@link onMoveEventInternal(int,int,long)} or {@link #onUpEventInternal(int,int,long)}.
+        mPhantomSuddenMoveThreshold = (int)(keyWidth * PHANTOM_SUDDEN_MOVE_THRESHOLD);
         mBogusMoveEventDetector.setKeyboardGeometry(keyWidth, keyHeight);
     }
 
     @Override
-    public boolean isInSlidingKeyInput() {
-        return mIsInSlidingKeyInput;
+    public boolean isInDraggingFinger() {
+        return mIsInDraggingFinger;
     }
 
     public Key getKey() {
@@ -637,7 +430,7 @@
     }
 
     private void setReleasedKeyGraphics(final Key key) {
-        mDrawingProxy.dismissKeyPreview(this);
+        sDrawingProxy.dismissKeyPreview(key);
         if (key == null) {
             return;
         }
@@ -668,8 +461,8 @@
     }
 
     private static boolean needsToSuppressKeyPreviewPopup(final long eventTime) {
-        if (!sShouldHandleGesture) return false;
-        return sTimeRecorder.needsToSuppressKeyPreviewPopup(eventTime);
+        if (!sGestureEnabler.shouldHandleGesture()) return false;
+        return sTypingTimeRecorder.needsToSuppressKeyPreviewPopup(eventTime);
     }
 
     private void setPressedKeyGraphics(final Key key, final long eventTime) {
@@ -678,14 +471,14 @@
         }
 
         // Even if the key is disabled, it should respond if it is in the altCodeWhileTyping state.
-        final boolean altersCode = key.altCodeWhileTyping() && mTimerProxy.isTypingState();
+        final boolean altersCode = key.altCodeWhileTyping() && sTimerProxy.isTypingState();
         final boolean needsToUpdateGraphics = key.isEnabled() || altersCode;
         if (!needsToUpdateGraphics) {
             return;
         }
 
         if (!key.noKeyPreview() && !sInGesture && !needsToSuppressKeyPreviewPopup(eventTime)) {
-            mDrawingProxy.showKeyPreview(this);
+            sDrawingProxy.showKeyPreview(key);
         }
         updatePressKeyGraphics(key);
 
@@ -697,7 +490,7 @@
             }
         }
 
-        if (key.altCodeWhileTyping() && mTimerProxy.isTypingState()) {
+        if (altersCode) {
             final int altCode = key.getAltCode();
             final Key altKey = mKeyboard.getKey(altCode);
             if (altKey != null) {
@@ -711,18 +504,18 @@
         }
     }
 
-    private void updateReleaseKeyGraphics(final Key key) {
+    private static void updateReleaseKeyGraphics(final Key key) {
         key.onReleased();
-        mDrawingProxy.invalidateKey(key);
+        sDrawingProxy.invalidateKey(key);
     }
 
-    private void updatePressKeyGraphics(final Key key) {
+    private static void updatePressKeyGraphics(final Key key) {
         key.onPressed();
-        mDrawingProxy.invalidateKey(key);
+        sDrawingProxy.invalidateKey(key);
     }
 
-    public GestureStrokeWithPreviewPoints getGestureStrokeWithPreviewPoints() {
-        return mGestureStrokeWithPreviewPoints;
+    public GestureStrokeDrawingPoints getGestureStrokeDrawingPoints() {
+        return mGestureStrokeDrawingPoints;
     }
 
     public void getLastCoordinates(final int[] outCoords) {
@@ -744,7 +537,7 @@
         return onMoveToNewKey(onMoveKeyInternal(x, y), x, y);
     }
 
-    static int getDistance(final int x1, final int y1, final int x2, final int y2) {
+    private static int getDistance(final int x1, final int y1, final int x2, final int y2) {
         return (int)Math.hypot(x1 - x2, y1 - y2);
     }
 
@@ -766,7 +559,7 @@
         return newKey;
     }
 
-    private static int getActivePointerTrackerCount() {
+    /* package */ static int getActivePointerTrackerCount() {
         return sPointerTrackerQueue.size();
     }
 
@@ -774,91 +567,59 @@
         return sPointerTrackerQueue.getOldestElement() == this;
     }
 
-    private void mayStartBatchInput(final Key key) {
-        if (sInGesture || !mGestureStrokeWithPreviewPoints.isStartOfAGesture()) {
-            return;
-        }
-        if (key == null || !Character.isLetter(key.getCode())) {
-            return;
-        }
+    // Implements {@link BatchInputArbiterListener}.
+    @Override
+    public void onStartBatchInput() {
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onStartBatchInput", mPointerId));
         }
-        sInGesture = true;
-        synchronized (sAggregratedPointers) {
-            sAggregratedPointers.reset();
-            sLastRecognitionPointSize = 0;
-            sLastRecognitionTime = 0;
-            mListener.onStartBatchInput();
-            dismissAllMoreKeysPanels();
-        }
-        mTimerProxy.cancelLongPressTimer();
-        // A gesture floating preview text will be shown at the oldest pointer/finger on the screen.
-        mDrawingProxy.showGestureTrail(
-                this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
+        sListener.onStartBatchInput();
+        dismissAllMoreKeysPanels();
+        sTimerProxy.cancelLongPressTimerOf(this);
     }
 
-    public void updateBatchInputByTimer(final long eventTime) {
-        final int gestureTime = (int)(eventTime - sGestureFirstDownTime);
-        mGestureStrokeWithPreviewPoints.duplicateLastPointWith(gestureTime);
-        updateBatchInput(eventTime);
-    }
-
-    private void mayUpdateBatchInput(final long eventTime, final Key key) {
-        if (key != null) {
-            updateBatchInput(eventTime);
-        }
+    private void showGestureTrail() {
         if (mIsTrackingForActionDisabled) {
             return;
         }
         // A gesture floating preview text will be shown at the oldest pointer/finger on the screen.
-        mDrawingProxy.showGestureTrail(
+        sDrawingProxy.showGestureTrail(
                 this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
     }
 
-    private void updateBatchInput(final long eventTime) {
-        synchronized (sAggregratedPointers) {
-            final GestureStroke stroke = mGestureStrokeWithPreviewPoints;
-            stroke.appendIncrementalBatchPoints(sAggregratedPointers);
-            final int size = sAggregratedPointers.getPointerSize();
-            if (size > sLastRecognitionPointSize
-                    && stroke.hasRecognitionTimePast(eventTime, sLastRecognitionTime)) {
-                if (DEBUG_LISTENER) {
-                    Log.d(TAG, String.format("[%d] onUpdateBatchInput: batchPoints=%d", mPointerId,
-                            size));
-                }
-                mTimerProxy.startUpdateBatchInputTimer(this);
-                mListener.onUpdateBatchInput(sAggregratedPointers);
-                // The listener may change the size of the pointers (when auto-committing
-                // for example), so we need to get the size from the pointers again.
-                sLastRecognitionPointSize = sAggregratedPointers.getPointerSize();
-                sLastRecognitionTime = eventTime;
-            }
-        }
+    public void updateBatchInputByTimer(final long syntheticMoveEventTime) {
+        mBatchInputArbiter.updateBatchInputByTimer(syntheticMoveEventTime, this);
     }
 
-    private void mayEndBatchInput(final long eventTime) {
-        synchronized (sAggregratedPointers) {
-            mGestureStrokeWithPreviewPoints.appendAllBatchPoints(sAggregratedPointers);
-            if (getActivePointerTrackerCount() == 1) {
-                sInGesture = false;
-                sTimeRecorder.onEndBatchInput(eventTime);
-                mTimerProxy.cancelAllUpdateBatchInputTimers();
-                if (!mIsTrackingForActionDisabled) {
-                    if (DEBUG_LISTENER) {
-                        Log.d(TAG, String.format("[%d] onEndBatchInput   : batchPoints=%d",
-                                mPointerId, sAggregratedPointers.getPointerSize()));
-                    }
-                    mListener.onEndBatchInput(sAggregratedPointers);
-                }
-            }
+    // Implements {@link BatchInputArbiterListener}.
+    @Override
+    public void onUpdateBatchInput(final InputPointers aggregatedPointers, final long eventTime) {
+        if (DEBUG_LISTENER) {
+            Log.d(TAG, String.format("[%d] onUpdateBatchInput: batchPoints=%d", mPointerId,
+                    aggregatedPointers.getPointerSize()));
         }
+        sListener.onUpdateBatchInput(aggregatedPointers);
+    }
+
+    // Implements {@link BatchInputArbiterListener}.
+    @Override
+    public void onStartUpdateBatchInputTimer() {
+        sTimerProxy.startUpdateBatchInputTimer(this);
+    }
+
+    // Implements {@link BatchInputArbiterListener}.
+    @Override
+    public void onEndBatchInput(final InputPointers aggregatedPointers, final long eventTime) {
+        sTypingTimeRecorder.onEndBatchInput(eventTime);
+        sTimerProxy.cancelAllUpdateBatchInputTimers();
         if (mIsTrackingForActionDisabled) {
             return;
         }
-        // A gesture floating preview text will be shown at the oldest pointer/finger on the screen.
-        mDrawingProxy.showGestureTrail(
-                this, isOldestTrackerInQueue() /* showsFloatingPreviewText */);
+        if (DEBUG_LISTENER) {
+            Log.d(TAG, String.format("[%d] onEndBatchInput   : batchPoints=%d",
+                    mPointerId, aggregatedPointers.getPointerSize()));
+        }
+        sListener.onEndBatchInput(aggregatedPointers);
     }
 
     private void cancelBatchInput() {
@@ -871,19 +632,26 @@
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onCancelBatchInput", mPointerId));
         }
-        mListener.onCancelBatchInput();
+        sListener.onCancelBatchInput();
     }
 
-    public void processMotionEvent(final MotionEvent me, final KeyEventHandler handler) {
+    public void processMotionEvent(final MotionEvent me, final KeyDetector keyDetector) {
         final int action = me.getActionMasked();
         final long eventTime = me.getEventTime();
         if (action == MotionEvent.ACTION_MOVE) {
+            // When this pointer is the only active pointer and is showing a more keys panel,
+            // we should ignore other pointers' motion event.
+            final boolean shouldIgnoreOtherPointers =
+                    isShowingMoreKeysPanel() && getActivePointerTrackerCount() == 1;
             final int pointerCount = me.getPointerCount();
             for (int index = 0; index < pointerCount; index++) {
                 final int id = me.getPointerId(index);
-                final PointerTracker tracker = getPointerTracker(id, handler);
+                if (shouldIgnoreOtherPointers && id != mPointerId) {
+                    continue;
+                }
                 final int x = (int)me.getX(index);
                 final int y = (int)me.getY(index);
+                final PointerTracker tracker = getPointerTracker(id);
                 tracker.onMoveEvent(x, y, eventTime, me);
             }
             return;
@@ -894,7 +662,7 @@
         switch (action) {
         case MotionEvent.ACTION_DOWN:
         case MotionEvent.ACTION_POINTER_DOWN:
-            onDownEvent(x, y, eventTime, handler);
+            onDownEvent(x, y, eventTime, keyDetector);
             break;
         case MotionEvent.ACTION_UP:
         case MotionEvent.ACTION_POINTER_UP:
@@ -907,11 +675,11 @@
     }
 
     private void onDownEvent(final int x, final int y, final long eventTime,
-            final KeyEventHandler handler) {
+            final KeyDetector keyDetector) {
+        setKeyDetectorInner(keyDetector);
         if (DEBUG_EVENT) {
             printTouchEvent("onDownEvent:", x, y, eventTime);
         }
-        setKeyEventHandler(handler);
         // Naive up-to-down noise filter.
         final long deltaT = eventTime - mUpTime;
         if (deltaT < sParams.mTouchNoiseThresholdTime) {
@@ -921,9 +689,6 @@
                     Log.w(TAG, String.format("[%d] onDownEvent:"
                             + " ignore potential noise: time=%d distance=%d",
                             mPointerId, deltaT, distance));
-                if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                    ResearchLogger.pointerTracker_onDownEvent(deltaT, distance * distance);
-                }
                 cancelTrackingForAction();
                 return;
             }
@@ -938,7 +703,7 @@
         }
         sPointerTrackerQueue.add(this);
         onDownEventInternal(x, y, eventTime);
-        if (!sShouldHandleGesture) {
+        if (!sGestureEnabler.shouldHandleGesture()) {
             return;
         }
         // A gesture should start only from a non-modifier key. Note that the gesture detection is
@@ -946,28 +711,36 @@
         mIsDetectingGesture = (mKeyboard != null) && mKeyboard.mId.isAlphabetKeyboard()
                 && key != null && !key.isModifier();
         if (mIsDetectingGesture) {
-            if (getActivePointerTrackerCount() == 1) {
-                sGestureFirstDownTime = eventTime;
-            }
-            mGestureStrokeWithPreviewPoints.onDownEvent(x, y, eventTime, sGestureFirstDownTime,
-                    sTimeRecorder.getLastLetterTypingTime());
+            mBatchInputArbiter.addDownEventPoint(x, y, eventTime,
+                    sTypingTimeRecorder.getLastLetterTypingTime(), getActivePointerTrackerCount());
+            mGestureStrokeDrawingPoints.onDownEvent(
+                    x, y, mBatchInputArbiter.getElapsedTimeSinceFirstDown(eventTime));
         }
     }
 
-    private boolean isShowingMoreKeysPanel() {
+    /* package */ boolean isShowingMoreKeysPanel() {
         return (mMoreKeysPanel != null);
     }
 
+    private void dismissMoreKeysPanel() {
+        if (isShowingMoreKeysPanel()) {
+            mMoreKeysPanel.dismissMoreKeysPanel();
+            mMoreKeysPanel = null;
+        }
+    }
+
     private void onDownEventInternal(final int x, final int y, final long eventTime) {
         Key key = onDownKey(x, y, eventTime);
-        // Sliding key is allowed when 1) enabled by configuration, 2) this pointer starts sliding
-        // from modifier key, or 3) this pointer's KeyDetector always allows sliding input.
-        mIsAllowedSlidingKeyInput = sParams.mSlidingKeyInputEnabled
+        // Key selection by dragging finger is allowed when 1) key selection by dragging finger is
+        // enabled by configuration, 2) this pointer starts dragging from modifier key, or 3) this
+        // pointer's KeyDetector always allows key selection by dragging finger, such as
+        // {@link MoreKeysKeyboard}.
+        mIsAllowedDraggingFinger = sParams.mKeySelectionByDraggingFinger
                 || (key != null && key.isModifier())
-                || mKeyDetector.alwaysAllowsSlidingInput();
+                || mKeyDetector.alwaysAllowsKeySelectionByDraggingFinger();
         mKeyboardLayoutHasBeenChanged = false;
         mIsTrackingForActionDisabled = false;
-        resetSlidingKeyInput();
+        resetKeySelectionByDraggingFinger();
         if (key != null) {
             // This onPress call may have changed keyboard layout. Those cases are detected at
             // {@link #setKeyboard}. In those cases, we should update key according to the new
@@ -982,43 +755,47 @@
         }
     }
 
-    private void startSlidingKeyInput(final Key key) {
-        if (!mIsInSlidingKeyInput) {
-            mIsInSlidingKeyInputFromModifier = key.isModifier();
+    private void startKeySelectionByDraggingFinger(final Key key) {
+        if (!mIsInDraggingFinger) {
+            mIsInSlidingKeyInput = key.isModifier();
         }
-        mIsInSlidingKeyInput = true;
+        mIsInDraggingFinger = true;
     }
 
-    private void resetSlidingKeyInput() {
+    private void resetKeySelectionByDraggingFinger() {
+        mIsInDraggingFinger = false;
         mIsInSlidingKeyInput = false;
-        mIsInSlidingKeyInputFromModifier = false;
-        mDrawingProxy.dismissSlidingKeyInputPreview();
+        sDrawingProxy.dismissSlidingKeyInputPreview();
     }
 
     private void onGestureMoveEvent(final int x, final int y, final long eventTime,
             final boolean isMajorEvent, final Key key) {
-        final int gestureTime = (int)(eventTime - sGestureFirstDownTime);
-        if (mIsDetectingGesture) {
-            final int beforeLength = mGestureStrokeWithPreviewPoints.getLength();
-            final boolean onValidArea = mGestureStrokeWithPreviewPoints.addPointOnKeyboard(
-                    x, y, gestureTime, isMajorEvent);
-            if (mGestureStrokeWithPreviewPoints.getLength() > beforeLength) {
-                mTimerProxy.startUpdateBatchInputTimer(this);
+        if (!mIsDetectingGesture) {
+            return;
+        }
+        final boolean onValidArea = mBatchInputArbiter.addMoveEventPoint(
+                x, y, eventTime, isMajorEvent, this);
+        // If the move event goes out from valid batch input area, cancel batch input.
+        if (!onValidArea) {
+            cancelBatchInput();
+            return;
+        }
+        mGestureStrokeDrawingPoints.onMoveEvent(
+                x, y, mBatchInputArbiter.getElapsedTimeSinceFirstDown(eventTime));
+        // If the MoreKeysPanel is showing then do not attempt to enter gesture mode. However,
+        // the gestured touch points are still being recorded in case the panel is dismissed.
+        if (isShowingMoreKeysPanel()) {
+            return;
+        }
+        if (!sInGesture && key != null && Character.isLetter(key.getCode())
+                && mBatchInputArbiter.mayStartBatchInput(this)) {
+            sInGesture = true;
+        }
+        if (sInGesture) {
+            if (key != null) {
+                mBatchInputArbiter.updateBatchInput(eventTime, this);
             }
-            // If the move event goes out from valid batch input area, cancel batch input.
-            if (!onValidArea) {
-                cancelBatchInput();
-                return;
-            }
-            // If the MoreKeysPanel is showing then do not attempt to enter gesture mode. However,
-            // the gestured touch points are still being recorded in case the panel is dismissed.
-            if (isShowingMoreKeysPanel()) {
-                return;
-            }
-            mayStartBatchInput(key);
-            if (sInGesture) {
-                mayUpdateBatchInput(eventTime, key);
-            }
+            showGestureTrail();
         }
     }
 
@@ -1030,7 +807,7 @@
             return;
         }
 
-        if (sShouldHandleGesture && me != null) {
+        if (sGestureEnabler.shouldHandleGesture() && me != null) {
             // Add historical points to gesture path.
             final int pointerIndex = me.findPointerIndex(mPointerId);
             final int historicalSize = me.getHistorySize();
@@ -1048,15 +825,15 @@
             final int translatedY = mMoreKeysPanel.translateY(y);
             mMoreKeysPanel.onMoveEvent(translatedX, translatedY, mPointerId, eventTime);
             onMoveKey(x, y);
-            if (mIsInSlidingKeyInputFromModifier) {
-                mDrawingProxy.showSlidingKeyInputPreview(this);
+            if (mIsInSlidingKeyInput) {
+                sDrawingProxy.showSlidingKeyInputPreview(this);
             }
             return;
         }
         onMoveEventInternal(x, y, eventTime);
     }
 
-    private void processSlidingKeyInput(final Key newKey, final int x, final int y,
+    private void processDraggingFingerInToNewKey(final Key newKey, final int x, final int y,
             final long eventTime) {
         // This onPress call may have changed keyboard layout. Those cases are detected
         // at {@link #setKeyboard}. In those cases, we should update key according
@@ -1083,10 +860,6 @@
                     lastX, lastY, Constants.printableCode(oldKey.getCode()),
                     x, y, Constants.printableCode(key.getCode())));
         }
-        // TODO: This should be moved to outside of this nested if-clause?
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.pointerTracker_onMoveEvent(x, y, lastX, lastY);
-        }
         onUpEventInternal(x, y, eventTime);
         onDownEventInternal(x, y, eventTime);
     }
@@ -1110,35 +883,35 @@
         onDownEventInternal(x, y, eventTime);
     }
 
-    private void processSildeOutFromOldKey(final Key oldKey) {
+    private void processDraggingFingerOutFromOldKey(final Key oldKey) {
         setReleasedKeyGraphics(oldKey);
         callListenerOnRelease(oldKey, oldKey.getCode(), true /* withSliding */);
-        startSlidingKeyInput(oldKey);
-        mTimerProxy.cancelKeyTimers();
+        startKeySelectionByDraggingFinger(oldKey);
+        sTimerProxy.cancelKeyTimersOf(this);
     }
 
-    private void slideFromOldKeyToNewKey(final Key key, final int x, final int y,
+    private void dragFingerFromOldKeyToNewKey(final Key key, final int x, final int y,
             final long eventTime, final Key oldKey, final int lastX, final int lastY) {
         // The pointer has been slid in to the new key from the previous key, we must call
         // onRelease() first to notify that the previous key has been released, then call
         // onPress() to notify that the new key is being pressed.
-        processSildeOutFromOldKey(oldKey);
+        processDraggingFingerOutFromOldKey(oldKey);
         startRepeatKey(key);
-        if (mIsAllowedSlidingKeyInput) {
-            processSlidingKeyInput(key, x, y, eventTime);
+        if (mIsAllowedDraggingFinger) {
+            processDraggingFingerInToNewKey(key, x, y, eventTime);
         }
         // HACK: On some devices, quick successive touches may be reported as a sudden move by
         // touch panel firmware. This hack detects such cases and translates the move event to
         // successive up and down events.
         // TODO: Should find a way to balance gesture detection and this hack.
         else if (sNeedsPhantomSuddenMoveEventHack
-                && getDistance(x, y, lastX, lastY) >= mPhantonSuddenMoveThreshold) {
+                && getDistance(x, y, lastX, lastY) >= mPhantomSuddenMoveThreshold) {
             processPhantomSuddenMoveHack(key, x, y, eventTime, oldKey, lastX, lastY);
         }
         // HACK: On some devices, quick successive proximate touches may be reported as a bogus
         // down-move-up event by touch panel firmware. This hack detects such cases and breaks
         // these events into separate up and down events.
-        else if (sNeedsProximateBogusDownMoveUpEventHack && sTimeRecorder.isInFastTyping(eventTime)
+        else if (sTypingTimeRecorder.isInFastTyping(eventTime)
                 && mBogusMoveEventDetector.isCloseToActualDownEvent(x, y)) {
             processProximateBogusDownMoveUpEventHack(key, x, y, eventTime, oldKey, lastX, lastY);
         }
@@ -1163,11 +936,11 @@
         }
     }
 
-    private void slideOutFromOldKey(final Key oldKey, final int x, final int y) {
+    private void dragFingerOutFromOldKey(final Key oldKey, final int x, final int y) {
         // The pointer has been slid out from the previous key, we must call onRelease() to
         // notify that the previous key has been released.
-        processSildeOutFromOldKey(oldKey);
-        if (mIsAllowedSlidingKeyInput) {
+        processDraggingFingerOutFromOldKey(oldKey);
+        if (mIsAllowedDraggingFinger) {
             onMoveToNewKey(null, x, y);
         } else {
             if (!mIsDetectingGesture) {
@@ -1182,7 +955,7 @@
         final Key oldKey = mCurrentKey;
         final Key newKey = onMoveKey(x, y);
 
-        if (sShouldHandleGesture) {
+        if (sGestureEnabler.shouldHandleGesture()) {
             // Register move event on gesture tracker.
             onGestureMoveEvent(x, y, eventTime, true /* isMajorEvent */, newKey);
             if (sInGesture) {
@@ -1194,19 +967,19 @@
 
         if (newKey != null) {
             if (oldKey != null && isMajorEnoughMoveToBeOnNewKey(x, y, eventTime, newKey)) {
-                slideFromOldKeyToNewKey(newKey, x, y, eventTime, oldKey, lastX, lastY);
+                dragFingerFromOldKeyToNewKey(newKey, x, y, eventTime, oldKey, lastX, lastY);
             } else if (oldKey == null) {
                 // The pointer has been slid in to the new key, but the finger was not on any keys.
                 // In this case, we must call onPress() to notify that the new key is being pressed.
-                processSlidingKeyInput(newKey, x, y, eventTime);
+                processDraggingFingerInToNewKey(newKey, x, y, eventTime);
             }
         } else { // newKey == null
             if (oldKey != null && isMajorEnoughMoveToBeOnNewKey(x, y, eventTime, newKey)) {
-                slideOutFromOldKey(oldKey, x, y);
+                dragFingerOutFromOldKey(oldKey, x, y);
             }
         }
-        if (mIsInSlidingKeyInputFromModifier) {
-            mDrawingProxy.showSlidingKeyInputPreview(this);
+        if (mIsInSlidingKeyInput) {
+            sDrawingProxy.showSlidingKeyInputPreview(this);
         }
     }
 
@@ -1215,7 +988,7 @@
             printTouchEvent("onUpEvent  :", x, y, eventTime);
         }
 
-        mTimerProxy.cancelUpdateBatchInputTimer(this);
+        sTimerProxy.cancelUpdateBatchInputTimer(this);
         if (!sInGesture) {
             if (mCurrentKey != null && mCurrentKey.isModifier()) {
                 // Before processing an up event of modifier key, all pointers already being
@@ -1237,18 +1010,15 @@
         if (DEBUG_EVENT) {
             printTouchEvent("onPhntEvent:", mLastX, mLastY, eventTime);
         }
-        if (isShowingMoreKeysPanel()) {
-            return;
-        }
         onUpEventInternal(mLastX, mLastY, eventTime);
         cancelTrackingForAction();
     }
 
     private void onUpEventInternal(final int x, final int y, final long eventTime) {
-        mTimerProxy.cancelKeyTimers();
+        sTimerProxy.cancelKeyTimersOf(this);
+        final boolean isInDraggingFinger = mIsInDraggingFinger;
         final boolean isInSlidingKeyInput = mIsInSlidingKeyInput;
-        final boolean isInSlidingKeyInputFromModifier = mIsInSlidingKeyInputFromModifier;
-        resetSlidingKeyInput();
+        resetKeySelectionByDraggingFinger();
         mIsDetectingGesture = false;
         final Key currentKey = mCurrentKey;
         mCurrentKey = null;
@@ -1263,8 +1033,7 @@
                 final int translatedY = mMoreKeysPanel.translateY(y);
                 mMoreKeysPanel.onUpEvent(translatedX, translatedY, mPointerId, eventTime);
             }
-            mMoreKeysPanel.dismissMoreKeysPanel();
-            mMoreKeysPanel = null;
+            dismissMoreKeysPanel();
             return;
         }
 
@@ -1272,7 +1041,11 @@
             if (currentKey != null) {
                 callListenerOnRelease(currentKey, currentKey.getCode(), true /* withSliding */);
             }
-            mayEndBatchInput(eventTime);
+            if (mBatchInputArbiter.mayEndBatchInput(
+                    eventTime, getActivePointerTrackerCount(), this)) {
+                sInGesture = false;
+            }
+            showGestureTrail();
             return;
         }
 
@@ -1280,11 +1053,11 @@
             return;
         }
         if (currentKey != null && currentKey.isRepeatable()
-                && (currentKey.getCode() == currentRepeatingKeyCode) && !isInSlidingKeyInput) {
+                && (currentKey.getCode() == currentRepeatingKeyCode) && !isInDraggingFinger) {
             return;
         }
         detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime);
-        if (isInSlidingKeyInputFromModifier) {
+        if (isInSlidingKeyInput) {
             callListenerOnFinishSlidingInput();
         }
     }
@@ -1305,8 +1078,16 @@
         mIsTrackingForActionDisabled = true;
     }
 
+    public boolean isInOperation() {
+        return !mIsTrackingForActionDisabled;
+    }
+
+    public void cancelLongPressTimer() {
+        sTimerProxy.cancelLongPressTimerOf(this);
+    }
+
     public void onLongPressed() {
-        resetSlidingKeyInput();
+        resetKeySelectionByDraggingFinger();
         cancelTrackingForAction();
         setReleasedKeyGraphics(mCurrentKey);
         sPointerTrackerQueue.remove(this);
@@ -1324,20 +1105,14 @@
     }
 
     private void onCancelEventInternal() {
-        mTimerProxy.cancelKeyTimers();
+        sTimerProxy.cancelKeyTimersOf(this);
         setReleasedKeyGraphics(mCurrentKey);
-        resetSlidingKeyInput();
-        if (isShowingMoreKeysPanel()) {
-            mMoreKeysPanel.dismissMoreKeysPanel();
-            mMoreKeysPanel = null;
-        }
+        resetKeySelectionByDraggingFinger();
+        dismissMoreKeysPanel();
     }
 
     private boolean isMajorEnoughMoveToBeOnNewKey(final int x, final int y, final long eventTime,
             final Key newKey) {
-        if (mKeyDetector == null) {
-            throw new NullPointerException("keyboard and/or key detector not set");
-        }
         final Key curKey = mCurrentKey;
         if (newKey == curKey) {
             return false;
@@ -1347,7 +1122,7 @@
         }
         // Here curKey points to the different key from newKey.
         final int keyHysteresisDistanceSquared = mKeyDetector.getKeyHysteresisDistanceSquared(
-                mIsInSlidingKeyInputFromModifier);
+                mIsInSlidingKeyInput);
         final int distanceFromKeyEdgeSquared = curKey.squaredDistanceToEdge(x, y);
         if (distanceFromKeyEdgeSquared >= keyHysteresisDistanceSquared) {
             if (DEBUG_MODE) {
@@ -1358,14 +1133,13 @@
             }
             return true;
         }
-        if (sNeedsProximateBogusDownMoveUpEventHack && !mIsAllowedSlidingKeyInput
-                && sTimeRecorder.isInFastTyping(eventTime)
+        if (!mIsAllowedDraggingFinger && sTypingTimeRecorder.isInFastTyping(eventTime)
                 && mBogusMoveEventDetector.hasTraveledLongDistance(x, y)) {
             if (DEBUG_MODE) {
                 final float keyDiagonal = (float)Math.hypot(
                         mKeyboard.mMostCommonKeyWidth, mKeyboard.mMostCommonKeyHeight);
                 final float lengthFromDownRatio =
-                        mBogusMoveEventDetector.mAccumulatedDistanceFromDownKey / keyDiagonal;
+                        mBogusMoveEventDetector.getAccumulatedDistanceFromDownKey() / keyDiagonal;
                 Log.d(TAG, String.format("[%d] isMajorEnoughMoveToBeOnNewKey:"
                         + " %.2f key diagonal from virtual down point",
                         mPointerId, lengthFromDownRatio));
@@ -1376,30 +1150,34 @@
     }
 
     private void startLongPressTimer(final Key key) {
+        // Note that we need to cancel all active long press shift key timers if any whenever we
+        // start a new long press timer for both non-shift and shift keys.
+        sTimerProxy.cancelLongPressShiftKeyTimers();
         if (sInGesture) return;
         if (key == null) return;
         if (!key.isLongPressEnabled()) return;
         // Caveat: Please note that isLongPressEnabled() can be true even if the current key
-        // doesn't have its more keys. (e.g. spacebar, globe key)
+        // doesn't have its more keys. (e.g. spacebar, globe key) If we are in the dragging finger
+        // mode, we will disable long press timer of such key.
         // We always need to start the long press timer if the key has its more keys regardless of
-        // whether or not we are in the sliding input mode.
-        if (mIsInSlidingKeyInput && key.getMoreKeys() == null) return;
-        final int delay;
-        switch (key.getCode()) {
-        case Constants.CODE_SHIFT:
-            delay = sParams.mLongPressShiftLockTimeout;
-            break;
-        default:
-            final int longpressTimeout = Settings.getInstance().getCurrent().mKeyLongpressTimeout;
-            if (mIsInSlidingKeyInputFromModifier) {
-                // We use longer timeout for sliding finger input started from the modifier key.
-                delay = longpressTimeout * MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT;
-            } else {
-                delay = longpressTimeout;
-            }
-            break;
+        // whether or not we are in the dragging finger mode.
+        if (mIsInDraggingFinger && key.getMoreKeys() == null) return;
+
+        final int delay = getLongPressTimeout(key.getCode());
+        if (delay <= 0) return;
+        sTimerProxy.startLongPressTimerOf(this, delay);
+    }
+
+    private int getLongPressTimeout(final int code) {
+        if (code == Constants.CODE_SHIFT) {
+            return sParams.mLongPressShiftLockTimeout;
         }
-        mTimerProxy.startLongPressTimer(this, delay);
+        final int longpressTimeout = Settings.getInstance().getCurrent().mKeyLongpressTimeout;
+        if (mIsInSlidingKeyInput) {
+            // We use longer timeout for sliding finger input started from the modifier key.
+            return longpressTimeout * MULTIPLIER_FOR_LONG_PRESS_TIMEOUT_IN_SLIDING_INPUT;
+        }
+        return longpressTimeout;
     }
 
     private void detectAndSendKey(final Key key, final int x, final int y, final long eventTime) {
@@ -1409,7 +1187,7 @@
         }
 
         final int code = key.getCode();
-        callListenerOnCodeInput(key, code, x, y, eventTime);
+        callListenerOnCodeInput(key, code, x, y, eventTime, false /* isKeyRepeat */);
         callListenerOnRelease(key, code, false /* withSliding */);
     }
 
@@ -1417,10 +1195,10 @@
         if (sInGesture) return;
         if (key == null) return;
         if (!key.isRepeatable()) return;
-        // Don't start key repeat when we are in sliding input mode.
-        if (mIsInSlidingKeyInput) return;
+        // Don't start key repeat when we are in the dragging finger mode.
+        if (mIsInDraggingFinger) return;
         final int startRepeatCount = 1;
-        mTimerProxy.startKeyRepeatTimer(this, startRepeatCount, sParams.mKeyRepeatStartTimeout);
+        startKeyRepeatTimer(startRepeatCount);
     }
 
     public void onKeyRepeat(final int code, final int repeatCount) {
@@ -1432,15 +1210,22 @@
         mCurrentRepeatingKeyCode = code;
         mIsDetectingGesture = false;
         final int nextRepeatCount = repeatCount + 1;
-        mTimerProxy.startKeyRepeatTimer(this, nextRepeatCount, sParams.mKeyRepeatInterval);
+        startKeyRepeatTimer(nextRepeatCount);
         callListenerOnPressAndCheckKeyboardLayoutChange(key, repeatCount);
-        callListenerOnCodeInput(key, code, mKeyX, mKeyY, SystemClock.uptimeMillis());
+        callListenerOnCodeInput(key, code, mKeyX, mKeyY, SystemClock.uptimeMillis(),
+                true /* isKeyRepeat */);
+    }
+
+    private void startKeyRepeatTimer(final int repeatCount) {
+        final int delay =
+                (repeatCount == 1) ? sParams.mKeyRepeatStartTimeout : sParams.mKeyRepeatInterval;
+        sTimerProxy.startKeyRepeatTimerOf(this, repeatCount, delay);
     }
 
     private void printTouchEvent(final String title, final int x, final int y,
             final long eventTime) {
         final Key key = mKeyDetector.detectHitKey(x, y);
-        final String code = KeyDetector.printableCode(key);
+        final String code = (key == null ? "none" : Constants.printableCode(key.getCode()));
         Log.d(TAG, String.format("[%d]%s%s %4d %4d %5d %s", mPointerId,
                 (mIsTrackingForActionDisabled ? "-" : " "), title, x, y, eventTime, code));
     }
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index a031669..c19cd67 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -24,7 +24,10 @@
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.utils.JniUtils;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 
 public class ProximityInfo {
     private static final String TAG = ProximityInfo.class.getSimpleName();
@@ -34,7 +37,7 @@
     public static final int MAX_PROXIMITY_CHARS_SIZE = 16;
     /** Number of key widths from current touch point to search for nearest keys. */
     private static final float SEARCH_DISTANCE = 1.2f;
-    private static final Key[] EMPTY_KEY_ARRAY = new Key[0];
+    private static final List<Key> EMPTY_KEY_LIST = Collections.emptyList();
     private static final float DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS = 0.15f;
 
     private final int mGridWidth;
@@ -47,13 +50,14 @@
     private final int mKeyboardHeight;
     private final int mMostCommonKeyWidth;
     private final int mMostCommonKeyHeight;
-    private final Key[] mKeys;
-    private final Key[][] mGridNeighbors;
+    private final List<Key> mSortedKeys;
+    private final List<Key>[] mGridNeighbors;
     private final String mLocaleStr;
 
+    @SuppressWarnings("unchecked")
     ProximityInfo(final String localeStr, final int gridWidth, final int gridHeight,
             final int minWidth, final int height, final int mostCommonKeyWidth,
-            final int mostCommonKeyHeight, final Key[] keys,
+            final int mostCommonKeyHeight, final List<Key> sortedKeys,
             final TouchPositionCorrection touchPositionCorrection) {
         if (TextUtils.isEmpty(localeStr)) {
             mLocaleStr = "";
@@ -69,8 +73,8 @@
         mKeyboardHeight = height;
         mMostCommonKeyHeight = mostCommonKeyHeight;
         mMostCommonKeyWidth = mostCommonKeyWidth;
-        mKeys = keys;
-        mGridNeighbors = new Key[mGridSize][];
+        mSortedKeys = sortedKeys;
+        mGridNeighbors = new List[mGridSize];
         if (minWidth == 0 || height == 0) {
             // No proximity required. Keyboard might be more keys keyboard.
             return;
@@ -99,7 +103,7 @@
         return key.getCode() >= Constants.CODE_SPACE;
     }
 
-    private static int getProximityInfoKeysCount(final Key[] keys) {
+    private static int getProximityInfoKeysCount(final List<Key> keys) {
         int count = 0;
         for (final Key key : keys) {
             if (needsProximityInfo(key)) {
@@ -110,14 +114,15 @@
     }
 
     private long createNativeProximityInfo(final TouchPositionCorrection touchPositionCorrection) {
-        final Key[][] gridNeighborKeys = mGridNeighbors;
+        final List<Key>[] gridNeighborKeys = mGridNeighbors;
         final int[] proximityCharsArray = new int[mGridSize * MAX_PROXIMITY_CHARS_SIZE];
         Arrays.fill(proximityCharsArray, Constants.NOT_A_CODE);
         for (int i = 0; i < mGridSize; ++i) {
-            final int proximityCharsLength = gridNeighborKeys[i].length;
+            final List<Key> neighborKeys = gridNeighborKeys[i];
+            final int proximityCharsLength = neighborKeys.size();
             int infoIndex = i * MAX_PROXIMITY_CHARS_SIZE;
             for (int j = 0; j < proximityCharsLength; ++j) {
-                final Key neighborKey = gridNeighborKeys[i][j];
+                final Key neighborKey = neighborKeys.get(j);
                 // Excluding from proximityCharsArray
                 if (!needsProximityInfo(neighborKey)) {
                     continue;
@@ -142,8 +147,8 @@
             }
         }
 
-        final Key[] keys = mKeys;
-        final int keyCount = getProximityInfoKeysCount(keys);
+        final List<Key> sortedKeys = mSortedKeys;
+        final int keyCount = getProximityInfoKeysCount(sortedKeys);
         final int[] keyXCoordinates = new int[keyCount];
         final int[] keyYCoordinates = new int[keyCount];
         final int[] keyWidths = new int[keyCount];
@@ -153,8 +158,8 @@
         final float[] sweetSpotCenterYs;
         final float[] sweetSpotRadii;
 
-        for (int infoIndex = 0, keyIndex = 0; keyIndex < keys.length; keyIndex++) {
-            final Key key = keys[keyIndex];
+        for (int infoIndex = 0, keyIndex = 0; keyIndex < sortedKeys.size(); keyIndex++) {
+            final Key key = sortedKeys.get(keyIndex);
             // Excluding from key coordinate arrays
             if (!needsProximityInfo(key)) {
                 continue;
@@ -177,8 +182,8 @@
             final int rows = touchPositionCorrection.getRows();
             final float defaultRadius = DEFAULT_TOUCH_POSITION_CORRECTION_RADIUS
                     * (float)Math.hypot(mMostCommonKeyWidth, mMostCommonKeyHeight);
-            for (int infoIndex = 0, keyIndex = 0; keyIndex < keys.length; keyIndex++) {
-                final Key key = keys[keyIndex];
+            for (int infoIndex = 0, keyIndex = 0; keyIndex < sortedKeys.size(); keyIndex++) {
+                final Key key = sortedKeys.get(keyIndex);
                 // Excluding from touch position correction arrays
                 if (!needsProximityInfo(key)) {
                     continue;
@@ -240,7 +245,7 @@
 
     private void computeNearestNeighbors() {
         final int defaultWidth = mMostCommonKeyWidth;
-        final int keyCount = mKeys.length;
+        final int keyCount = mSortedKeys.size();
         final int gridSize = mGridNeighbors.length;
         final int threshold = (int) (defaultWidth * SEARCH_DISTANCE);
         final int thresholdSquared = threshold * threshold;
@@ -259,7 +264,7 @@
         final int[] neighborCountPerCell = new int[gridSize];
         final int halfCellWidth = mCellWidth / 2;
         final int halfCellHeight = mCellHeight / 2;
-        for (final Key key : mKeys) {
+        for (final Key key : mSortedKeys) {
             if (key.isSpacer()) continue;
 
 /* HOW WE PRE-SELECT THE CELLS (iterate over only the relevant cells, instead of all of them)
@@ -353,9 +358,13 @@
         }
 
         for (int i = 0; i < gridSize; ++i) {
-            final int base = i * keyCount;
-            mGridNeighbors[i] =
-                    Arrays.copyOfRange(neighborsFlatBuffer, base, base + neighborCountPerCell[i]);
+            final int indexStart = i * keyCount;
+            final int indexEnd = indexStart + neighborCountPerCell[i];
+            final ArrayList<Key> neighbors = new ArrayList<>(indexEnd - indexStart);
+            for (int index = indexStart; index < indexEnd; index++) {
+                neighbors.add(neighborsFlatBuffer[index]);
+            }
+            mGridNeighbors[i] = Collections.unmodifiableList(neighbors);
         }
     }
 
@@ -369,7 +378,7 @@
         if (primaryKeyCode > Constants.CODE_SPACE) {
             dest[index++] = primaryKeyCode;
         }
-        final Key[] nearestKeys = getNearestKeys(x, y);
+        final List<Key> nearestKeys = getNearestKeys(x, y);
         for (Key key : nearestKeys) {
             if (index >= destLength) {
                 break;
@@ -385,9 +394,9 @@
         }
     }
 
-    public Key[] getNearestKeys(final int x, final int y) {
+    public List<Key> getNearestKeys(final int x, final int y) {
         if (mGridNeighbors == null) {
-            return EMPTY_KEY_ARRAY;
+            return EMPTY_KEY_LIST;
         }
         if (x >= 0 && x < mKeyboardMinWidth && y >= 0 && y < mKeyboardHeight) {
             int index = (y / mCellHeight) * mGridWidth + (x / mCellWidth);
@@ -395,6 +404,6 @@
                 return mGridNeighbors[index];
             }
         }
-        return EMPTY_KEY_ARRAY;
+        return EMPTY_KEY_LIST;
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/DynamicGridKeyboard.java b/java/src/com/android/inputmethod/keyboard/emoji/DynamicGridKeyboard.java
new file mode 100644
index 0000000..daeb1f9
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/DynamicGridKeyboard.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import android.content.SharedPreferences;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.latin.settings.Settings;
+import com.android.inputmethod.latin.utils.JsonUtils;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * This is a Keyboard class where you can add keys dynamically shown in a grid layout
+ */
+final class DynamicGridKeyboard extends Keyboard {
+    private static final String TAG = DynamicGridKeyboard.class.getSimpleName();
+    private static final int TEMPLATE_KEY_CODE_0 = 0x30;
+    private static final int TEMPLATE_KEY_CODE_1 = 0x31;
+    private final Object mLock = new Object();
+
+    private final SharedPreferences mPrefs;
+    private final int mHorizontalStep;
+    private final int mVerticalStep;
+    private final int mColumnsNum;
+    private final int mMaxKeyCount;
+    private final boolean mIsRecents;
+    private final ArrayDeque<GridKey> mGridKeys = new ArrayDeque<>();
+    private final ArrayDeque<Key> mPendingKeys = new ArrayDeque<>();
+
+    private List<Key> mCachedGridKeys;
+
+    public DynamicGridKeyboard(final SharedPreferences prefs, final Keyboard templateKeyboard,
+            final int maxKeyCount, final int categoryId) {
+        super(templateKeyboard);
+        final Key key0 = getTemplateKey(TEMPLATE_KEY_CODE_0);
+        final Key key1 = getTemplateKey(TEMPLATE_KEY_CODE_1);
+        mHorizontalStep = Math.abs(key1.getX() - key0.getX());
+        mVerticalStep = key0.getHeight() + mVerticalGap;
+        mColumnsNum = mBaseWidth / mHorizontalStep;
+        mMaxKeyCount = maxKeyCount;
+        mIsRecents = categoryId == EmojiCategory.ID_RECENTS;
+        mPrefs = prefs;
+    }
+
+    private Key getTemplateKey(final int code) {
+        for (final Key key : super.getSortedKeys()) {
+            if (key.getCode() == code) {
+                return key;
+            }
+        }
+        throw new RuntimeException("Can't find template key: code=" + code);
+    }
+
+    public void addPendingKey(final Key usedKey) {
+        synchronized (mLock) {
+            mPendingKeys.addLast(usedKey);
+        }
+    }
+
+    public void flushPendingRecentKeys() {
+        synchronized (mLock) {
+            while (!mPendingKeys.isEmpty()) {
+                addKey(mPendingKeys.pollFirst(), true);
+            }
+            saveRecentKeys();
+        }
+    }
+
+    public void addKeyFirst(final Key usedKey) {
+        addKey(usedKey, true);
+        if (mIsRecents) {
+            saveRecentKeys();
+        }
+    }
+
+    public void addKeyLast(final Key usedKey) {
+        addKey(usedKey, false);
+    }
+
+    private void addKey(final Key usedKey, final boolean addFirst) {
+        if (usedKey == null) {
+            return;
+        }
+        synchronized (mLock) {
+            mCachedGridKeys = null;
+            final GridKey key = new GridKey(usedKey);
+            while (mGridKeys.remove(key)) {
+                // Remove duplicate keys.
+            }
+            if (addFirst) {
+                mGridKeys.addFirst(key);
+            } else {
+                mGridKeys.addLast(key);
+            }
+            while (mGridKeys.size() > mMaxKeyCount) {
+                mGridKeys.removeLast();
+            }
+            int index = 0;
+            for (final GridKey gridKey : mGridKeys) {
+                final int keyX0 = getKeyX0(index);
+                final int keyY0 = getKeyY0(index);
+                final int keyX1 = getKeyX1(index);
+                final int keyY1 = getKeyY1(index);
+                gridKey.updateCoordinates(keyX0, keyY0, keyX1, keyY1);
+                index++;
+            }
+        }
+    }
+
+    private void saveRecentKeys() {
+        final ArrayList<Object> keys = new ArrayList<>();
+        for (final Key key : mGridKeys) {
+            if (key.getOutputText() != null) {
+                keys.add(key.getOutputText());
+            } else {
+                keys.add(key.getCode());
+            }
+        }
+        final String jsonStr = JsonUtils.listToJsonStr(keys);
+        Settings.writeEmojiRecentKeys(mPrefs, jsonStr);
+    }
+
+    private static Key getKeyByCode(final Collection<DynamicGridKeyboard> keyboards,
+            final int code) {
+        for (final DynamicGridKeyboard keyboard : keyboards) {
+            for (final Key key : keyboard.getSortedKeys()) {
+                if (key.getCode() == code) {
+                    return key;
+                }
+            }
+        }
+        return null;
+    }
+
+    private static Key getKeyByOutputText(final Collection<DynamicGridKeyboard> keyboards,
+            final String outputText) {
+        for (final DynamicGridKeyboard keyboard : keyboards) {
+            for (final Key key : keyboard.getSortedKeys()) {
+                if (outputText.equals(key.getOutputText())) {
+                    return key;
+                }
+            }
+        }
+        return null;
+    }
+
+    public void loadRecentKeys(final Collection<DynamicGridKeyboard> keyboards) {
+        final String str = Settings.readEmojiRecentKeys(mPrefs);
+        final List<Object> keys = JsonUtils.jsonStrToList(str);
+        for (final Object o : keys) {
+            final Key key;
+            if (o instanceof Integer) {
+                final int code = (Integer)o;
+                key = getKeyByCode(keyboards, code);
+            } else if (o instanceof String) {
+                final String outputText = (String)o;
+                key = getKeyByOutputText(keyboards, outputText);
+            } else {
+                Log.w(TAG, "Invalid object: " + o);
+                continue;
+            }
+            addKeyLast(key);
+        }
+    }
+
+    private int getKeyX0(final int index) {
+        final int column = index % mColumnsNum;
+        return column * mHorizontalStep;
+    }
+
+    private int getKeyX1(final int index) {
+        final int column = index % mColumnsNum + 1;
+        return column * mHorizontalStep;
+    }
+
+    private int getKeyY0(final int index) {
+        final int row = index / mColumnsNum;
+        return row * mVerticalStep + mVerticalGap / 2;
+    }
+
+    private int getKeyY1(final int index) {
+        final int row = index / mColumnsNum + 1;
+        return row * mVerticalStep + mVerticalGap / 2;
+    }
+
+    @Override
+    public List<Key> getSortedKeys() {
+        synchronized (mLock) {
+            if (mCachedGridKeys != null) {
+                return mCachedGridKeys;
+            }
+            final ArrayList<Key> cachedKeys = new ArrayList<Key>(mGridKeys);
+            mCachedGridKeys = Collections.unmodifiableList(cachedKeys);
+            return mCachedGridKeys;
+        }
+    }
+
+    @Override
+    public List<Key> getNearestKeys(final int x, final int y) {
+        // TODO: Calculate the nearest key index in mGridKeys from x and y.
+        return getSortedKeys();
+    }
+
+    static final class GridKey extends Key {
+        private int mCurrentX;
+        private int mCurrentY;
+
+        public GridKey(final Key originalKey) {
+            super(originalKey);
+        }
+
+        public void updateCoordinates(final int x0, final int y0, final int x1, final int y1) {
+            mCurrentX = x0;
+            mCurrentY = y0;
+            getHitBox().set(x0, y0, x1, y1);
+        }
+
+        @Override
+        public int getX() {
+            return mCurrentX;
+        }
+
+        @Override
+        public int getY() {
+            return mCurrentY;
+        }
+
+        @Override
+        public boolean equals(final Object o) {
+            if (!(o instanceof Key)) return false;
+            final Key key = (Key)o;
+            if (getCode() != key.getCode()) return false;
+            if (!TextUtils.equals(getLabel(), key.getLabel())) return false;
+            return TextUtils.equals(getOutputText(), key.getOutputText());
+        }
+
+        @Override
+        public String toString() {
+            return "GridKey: " + super.toString();
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
new file mode 100644
index 0000000..512d461
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Rect;
+import android.os.Build;
+import android.util.Log;
+import android.util.Pair;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.KeyboardLayoutSet;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.settings.Settings;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+final class EmojiCategory {
+    private final String TAG = EmojiCategory.class.getSimpleName();
+
+    private static final int ID_UNSPECIFIED = -1;
+    public static final int ID_RECENTS = 0;
+    private static final int ID_PEOPLE = 1;
+    private static final int ID_OBJECTS = 2;
+    private static final int ID_NATURE = 3;
+    private static final int ID_PLACES = 4;
+    private static final int ID_SYMBOLS = 5;
+    private static final int ID_EMOTICONS = 6;
+
+    public final class CategoryProperties {
+        public final int mCategoryId;
+        public final int mPageCount;
+        public CategoryProperties(final int categoryId, final int pageCount) {
+            mCategoryId = categoryId;
+            mPageCount = pageCount;
+        }
+    }
+
+    private static final String[] sCategoryName = {
+            "recents",
+            "people",
+            "objects",
+            "nature",
+            "places",
+            "symbols",
+            "emoticons" };
+
+    private static final int[] sCategoryTabIconAttr = {
+            R.styleable.EmojiPalettesView_iconEmojiRecentsTab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory1Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory2Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory3Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory4Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory5Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory6Tab };
+
+    private static final int[] sAccessibilityDescriptionResourceIdsForCategories = {
+            R.string.spoken_descrption_emoji_category_recents,
+            R.string.spoken_descrption_emoji_category_people,
+            R.string.spoken_descrption_emoji_category_objects,
+            R.string.spoken_descrption_emoji_category_nature,
+            R.string.spoken_descrption_emoji_category_places,
+            R.string.spoken_descrption_emoji_category_symbols,
+            R.string.spoken_descrption_emoji_category_emoticons };
+
+    private static final int[] sCategoryElementId = {
+            KeyboardId.ELEMENT_EMOJI_RECENTS,
+            KeyboardId.ELEMENT_EMOJI_CATEGORY1,
+            KeyboardId.ELEMENT_EMOJI_CATEGORY2,
+            KeyboardId.ELEMENT_EMOJI_CATEGORY3,
+            KeyboardId.ELEMENT_EMOJI_CATEGORY4,
+            KeyboardId.ELEMENT_EMOJI_CATEGORY5,
+            KeyboardId.ELEMENT_EMOJI_CATEGORY6 };
+
+    private final SharedPreferences mPrefs;
+    private final Resources mRes;
+    private final int mMaxPageKeyCount;
+    private final KeyboardLayoutSet mLayoutSet;
+    private final HashMap<String, Integer> mCategoryNameToIdMap = new HashMap<>();
+    private final int[] mCategoryTabIconId = new int[sCategoryName.length];
+    private final ArrayList<CategoryProperties> mShownCategories = new ArrayList<>();
+    private final ConcurrentHashMap<Long, DynamicGridKeyboard> mCategoryKeyboardMap =
+            new ConcurrentHashMap<>();
+
+    private int mCurrentCategoryId = EmojiCategory.ID_UNSPECIFIED;
+    private int mCurrentCategoryPageId = 0;
+
+    public EmojiCategory(final SharedPreferences prefs, final Resources res,
+            final KeyboardLayoutSet layoutSet, final TypedArray emojiPaletteViewAttr) {
+        mPrefs = prefs;
+        mRes = res;
+        mMaxPageKeyCount = res.getInteger(R.integer.config_emoji_keyboard_max_page_key_count);
+        mLayoutSet = layoutSet;
+        for (int i = 0; i < sCategoryName.length; ++i) {
+            mCategoryNameToIdMap.put(sCategoryName[i], i);
+            mCategoryTabIconId[i] = emojiPaletteViewAttr.getResourceId(
+                    sCategoryTabIconAttr[i], 0);
+        }
+        addShownCategoryId(EmojiCategory.ID_RECENTS);
+        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2
+                || android.os.Build.VERSION.CODENAME.equalsIgnoreCase("KeyLimePie")
+                || android.os.Build.VERSION.CODENAME.equalsIgnoreCase("KitKat")) {
+            addShownCategoryId(EmojiCategory.ID_PEOPLE);
+            addShownCategoryId(EmojiCategory.ID_OBJECTS);
+            addShownCategoryId(EmojiCategory.ID_NATURE);
+            addShownCategoryId(EmojiCategory.ID_PLACES);
+            mCurrentCategoryId =
+                    Settings.readLastShownEmojiCategoryId(mPrefs, EmojiCategory.ID_PEOPLE);
+        } else {
+            mCurrentCategoryId =
+                    Settings.readLastShownEmojiCategoryId(mPrefs, EmojiCategory.ID_SYMBOLS);
+        }
+        addShownCategoryId(EmojiCategory.ID_SYMBOLS);
+        addShownCategoryId(EmojiCategory.ID_EMOTICONS);
+        getKeyboard(EmojiCategory.ID_RECENTS, 0 /* cagetoryPageId */)
+                .loadRecentKeys(mCategoryKeyboardMap.values());
+    }
+
+    private void addShownCategoryId(final int categoryId) {
+        // Load a keyboard of categoryId
+        getKeyboard(categoryId, 0 /* cagetoryPageId */);
+        final CategoryProperties properties =
+                new CategoryProperties(categoryId, getCategoryPageCount(categoryId));
+        mShownCategories.add(properties);
+    }
+
+    public String getCategoryName(final int categoryId, final int categoryPageId) {
+        return sCategoryName[categoryId] + "-" + categoryPageId;
+    }
+
+    public int getCategoryId(final String name) {
+        final String[] strings = name.split("-");
+        return mCategoryNameToIdMap.get(strings[0]);
+    }
+
+    public int getCategoryTabIcon(final int categoryId) {
+        return mCategoryTabIconId[categoryId];
+    }
+
+    public String getAccessibilityDescription(final int categoryId) {
+        return mRes.getString(sAccessibilityDescriptionResourceIdsForCategories[categoryId]);
+    }
+
+    public ArrayList<CategoryProperties> getShownCategories() {
+        return mShownCategories;
+    }
+
+    public int getCurrentCategoryId() {
+        return mCurrentCategoryId;
+    }
+
+    public int getCurrentCategoryPageSize() {
+        return getCategoryPageSize(mCurrentCategoryId);
+    }
+
+    public int getCategoryPageSize(final int categoryId) {
+        for (final CategoryProperties prop : mShownCategories) {
+            if (prop.mCategoryId == categoryId) {
+                return prop.mPageCount;
+            }
+        }
+        Log.w(TAG, "Invalid category id: " + categoryId);
+        // Should not reach here.
+        return 0;
+    }
+
+    public void setCurrentCategoryId(final int categoryId) {
+        mCurrentCategoryId = categoryId;
+        Settings.writeLastShownEmojiCategoryId(mPrefs, categoryId);
+    }
+
+    public void setCurrentCategoryPageId(final int id) {
+        mCurrentCategoryPageId = id;
+    }
+
+    public int getCurrentCategoryPageId() {
+        return mCurrentCategoryPageId;
+    }
+
+    public void saveLastTypedCategoryPage() {
+        Settings.writeLastTypedEmojiCategoryPageId(
+                mPrefs, mCurrentCategoryId, mCurrentCategoryPageId);
+    }
+
+    public boolean isInRecentTab() {
+        return mCurrentCategoryId == EmojiCategory.ID_RECENTS;
+    }
+
+    public int getTabIdFromCategoryId(final int categoryId) {
+        for (int i = 0; i < mShownCategories.size(); ++i) {
+            if (mShownCategories.get(i).mCategoryId == categoryId) {
+                return i;
+            }
+        }
+        Log.w(TAG, "categoryId not found: " + categoryId);
+        return 0;
+    }
+
+    // Returns the view pager's page position for the categoryId
+    public int getPageIdFromCategoryId(final int categoryId) {
+        final int lastSavedCategoryPageId =
+                Settings.readLastTypedEmojiCategoryPageId(mPrefs, categoryId);
+        int sum = 0;
+        for (int i = 0; i < mShownCategories.size(); ++i) {
+            final CategoryProperties props = mShownCategories.get(i);
+            if (props.mCategoryId == categoryId) {
+                return sum + lastSavedCategoryPageId;
+            }
+            sum += props.mPageCount;
+        }
+        Log.w(TAG, "categoryId not found: " + categoryId);
+        return 0;
+    }
+
+    public int getRecentTabId() {
+        return getTabIdFromCategoryId(EmojiCategory.ID_RECENTS);
+    }
+
+    private int getCategoryPageCount(final int categoryId) {
+        final Keyboard keyboard = mLayoutSet.getKeyboard(sCategoryElementId[categoryId]);
+        return (keyboard.getSortedKeys().size() - 1) / mMaxPageKeyCount + 1;
+    }
+
+    // Returns a pair of the category id and the category page id from the view pager's page
+    // position. The category page id is numbered in each category. And the view page position
+    // is the position of the current shown page in the view pager which contains all pages of
+    // all categories.
+    public Pair<Integer, Integer> getCategoryIdAndPageIdFromPagePosition(final int position) {
+        int sum = 0;
+        for (final CategoryProperties properties : mShownCategories) {
+            final int temp = sum;
+            sum += properties.mPageCount;
+            if (sum > position) {
+                return new Pair<>(properties.mCategoryId, position - temp);
+            }
+        }
+        return null;
+    }
+
+    // Returns a keyboard from the view pager's page position.
+    public DynamicGridKeyboard getKeyboardFromPagePosition(final int position) {
+        final Pair<Integer, Integer> categoryAndId =
+                getCategoryIdAndPageIdFromPagePosition(position);
+        if (categoryAndId != null) {
+            return getKeyboard(categoryAndId.first, categoryAndId.second);
+        }
+        return null;
+    }
+
+    private static final Long getCategoryKeyboardMapKey(final int categoryId, final int id) {
+        return (((long) categoryId) << Constants.MAX_INT_BIT_COUNT) | id;
+    }
+
+    public DynamicGridKeyboard getKeyboard(final int categoryId, final int id) {
+        synchronized (mCategoryKeyboardMap) {
+            final Long categotyKeyboardMapKey = getCategoryKeyboardMapKey(categoryId, id);
+            if (mCategoryKeyboardMap.containsKey(categotyKeyboardMapKey)) {
+                return mCategoryKeyboardMap.get(categotyKeyboardMapKey);
+            }
+
+            if (categoryId == EmojiCategory.ID_RECENTS) {
+                final DynamicGridKeyboard kbd = new DynamicGridKeyboard(mPrefs,
+                        mLayoutSet.getKeyboard(KeyboardId.ELEMENT_EMOJI_RECENTS),
+                        mMaxPageKeyCount, categoryId);
+                mCategoryKeyboardMap.put(categotyKeyboardMapKey, kbd);
+                return kbd;
+            }
+
+            final Keyboard keyboard = mLayoutSet.getKeyboard(sCategoryElementId[categoryId]);
+            final Key[][] sortedKeys = sortKeysIntoPages(
+                    keyboard.getSortedKeys(), mMaxPageKeyCount);
+            for (int pageId = 0; pageId < sortedKeys.length; ++pageId) {
+                final DynamicGridKeyboard tempKeyboard = new DynamicGridKeyboard(mPrefs,
+                        mLayoutSet.getKeyboard(KeyboardId.ELEMENT_EMOJI_RECENTS),
+                        mMaxPageKeyCount, categoryId);
+                for (final Key emojiKey : sortedKeys[pageId]) {
+                    if (emojiKey == null) {
+                        break;
+                    }
+                    tempKeyboard.addKeyLast(emojiKey);
+                }
+                mCategoryKeyboardMap.put(
+                        getCategoryKeyboardMapKey(categoryId, pageId), tempKeyboard);
+            }
+            return mCategoryKeyboardMap.get(categotyKeyboardMapKey);
+        }
+    }
+
+    public int getTotalPageCountOfAllCategories() {
+        int sum = 0;
+        for (CategoryProperties properties : mShownCategories) {
+            sum += properties.mPageCount;
+        }
+        return sum;
+    }
+
+    private static Comparator<Key> EMOJI_KEY_COMPARATOR = new Comparator<Key>() {
+        @Override
+        public int compare(final Key lhs, final Key rhs) {
+            final Rect lHitBox = lhs.getHitBox();
+            final Rect rHitBox = rhs.getHitBox();
+            if (lHitBox.top < rHitBox.top) {
+                return -1;
+            } else if (lHitBox.top > rHitBox.top) {
+                return 1;
+            }
+            if (lHitBox.left < rHitBox.left) {
+                return -1;
+            } else if (lHitBox.left > rHitBox.left) {
+                return 1;
+            }
+            if (lhs.getCode() == rhs.getCode()) {
+                return 0;
+            }
+            return lhs.getCode() < rhs.getCode() ? -1 : 1;
+        }
+    };
+
+    private static Key[][] sortKeysIntoPages(final List<Key> inKeys, final int maxPageCount) {
+        final ArrayList<Key> keys = new ArrayList<>(inKeys);
+        Collections.sort(keys, EMOJI_KEY_COMPARATOR);
+        final int pageCount = (keys.size() - 1) / maxPageCount + 1;
+        final Key[][] retval = new Key[pageCount][maxPageCount];
+        for (int i = 0; i < keys.size(); ++i) {
+            retval[i / maxPageCount][i % maxPageCount] = keys.get(i);
+        }
+        return retval;
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
new file mode 100644
index 0000000..43d62c7
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.View;
+
+public final class EmojiCategoryPageIndicatorView extends View {
+    private static final float BOTTOM_MARGIN_RATIO = 1.0f;
+    private final Paint mPaint = new Paint();
+    private int mCategoryPageSize = 0;
+    private int mCurrentCategoryPageId = 0;
+    private float mOffset = 0.0f;
+
+    public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs,
+            final int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public void setColors(final int foregroundColor, final int backgroundColor) {
+        mPaint.setColor(foregroundColor);
+        setBackgroundColor(backgroundColor);
+    }
+
+    public void setCategoryPageId(final int size, final int id, final float offset) {
+        mCategoryPageSize = size;
+        mCurrentCategoryPageId = id;
+        mOffset = offset;
+        invalidate();
+    }
+
+    @Override
+    protected void onDraw(final Canvas canvas) {
+        if (mCategoryPageSize <= 1) {
+            // If the category is not set yet or contains only one category,
+            // just clear and return.
+            canvas.drawColor(0);
+            return;
+        }
+        final float height = getHeight();
+        final float width = getWidth();
+        final float unitWidth = width / mCategoryPageSize;
+        final float left = unitWidth * mCurrentCategoryPageId + mOffset * unitWidth;
+        final float top = 0.0f;
+        final float right = left + unitWidth;
+        final float bottom = height * BOTTOM_MARGIN_RATIO;
+        canvas.drawRect(left, top, right, bottom, mPaint);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
new file mode 100644
index 0000000..582e091
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import android.content.res.Resources;
+import android.support.v4.view.ViewPager;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.ResourceUtils;
+
+final class EmojiLayoutParams {
+    private static final int DEFAULT_KEYBOARD_ROWS = 4;
+
+    public final int mEmojiPagerHeight;
+    private final int mEmojiPagerBottomMargin;
+    public final int mEmojiKeyboardHeight;
+    private final int mEmojiCategoryPageIdViewHeight;
+    public final int mEmojiActionBarHeight;
+    public final int mKeyVerticalGap;
+    private final int mKeyHorizontalGap;
+    private final int mBottomPadding;
+    private final int mTopPadding;
+
+    public EmojiLayoutParams(final Resources res) {
+        final int defaultKeyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
+        final int defaultKeyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
+        mKeyVerticalGap = (int) res.getFraction(R.fraction.config_key_vertical_gap_holo,
+                defaultKeyboardHeight, defaultKeyboardHeight);
+        mBottomPadding = (int) res.getFraction(R.fraction.config_keyboard_bottom_padding_holo,
+                defaultKeyboardHeight, defaultKeyboardHeight);
+        mTopPadding = (int) res.getFraction(R.fraction.config_keyboard_top_padding_holo,
+                defaultKeyboardHeight, defaultKeyboardHeight);
+        mKeyHorizontalGap = (int) (res.getFraction(R.fraction.config_key_horizontal_gap_holo,
+                defaultKeyboardWidth, defaultKeyboardWidth));
+        mEmojiCategoryPageIdViewHeight =
+                (int) (res.getDimension(R.dimen.config_emoji_category_page_id_height));
+        final int baseheight = defaultKeyboardHeight - mBottomPadding - mTopPadding
+                + mKeyVerticalGap;
+        mEmojiActionBarHeight = baseheight / DEFAULT_KEYBOARD_ROWS
+                - (mKeyVerticalGap - mBottomPadding) / 2;
+        mEmojiPagerHeight = defaultKeyboardHeight - mEmojiActionBarHeight
+                - mEmojiCategoryPageIdViewHeight;
+        mEmojiPagerBottomMargin = 0;
+        mEmojiKeyboardHeight = mEmojiPagerHeight - mEmojiPagerBottomMargin - 1;
+    }
+
+    public void setPagerProperties(final ViewPager vp) {
+        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) vp.getLayoutParams();
+        lp.height = mEmojiKeyboardHeight;
+        lp.bottomMargin = mEmojiPagerBottomMargin;
+        vp.setLayoutParams(lp);
+    }
+
+    public void setCategoryPageIdViewProperties(final View v) {
+        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) v.getLayoutParams();
+        lp.height = mEmojiCategoryPageIdViewHeight;
+        v.setLayoutParams(lp);
+    }
+
+    public int getActionBarHeight() {
+        return mEmojiActionBarHeight - mBottomPadding;
+    }
+
+    public void setActionBarProperties(final LinearLayout ll) {
+        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
+        lp.height = getActionBarHeight();
+        ll.setLayoutParams(lp);
+    }
+
+    public void setKeyProperties(final View v) {
+        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) v.getLayoutParams();
+        lp.leftMargin = mKeyHorizontalGap / 2;
+        lp.rightMargin = mKeyHorizontalGap / 2;
+        v.setLayoutParams(lp);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
new file mode 100644
index 0000000..17dfc9c
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import android.content.Context;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityEvent;
+
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+import com.android.inputmethod.accessibility.KeyboardAccessibilityDelegate;
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.latin.R;
+
+/**
+ * This is an extended {@link KeyboardView} class that hosts an emoji page keyboard.
+ * Multi-touch unsupported. No gesture support.
+ */
+// TODO: Implement key popup preview.
+final class EmojiPageKeyboardView extends KeyboardView implements
+        GestureDetector.OnGestureListener {
+    private static final long KEY_PRESS_DELAY_TIME = 250;  // msec
+    private static final long KEY_RELEASE_DELAY_TIME = 30;  // msec
+
+    public interface OnKeyEventListener {
+        public void onPressKey(Key key);
+        public void onReleaseKey(Key key);
+    }
+
+    private static final OnKeyEventListener EMPTY_LISTENER = new OnKeyEventListener() {
+        @Override
+        public void onPressKey(final Key key) {}
+        @Override
+        public void onReleaseKey(final Key key) {}
+    };
+
+    private OnKeyEventListener mListener = EMPTY_LISTENER;
+    private final KeyDetector mKeyDetector = new KeyDetector();
+    private final GestureDetector mGestureDetector;
+    private KeyboardAccessibilityDelegate<EmojiPageKeyboardView> mAccessibilityDelegate;
+
+    public EmojiPageKeyboardView(final Context context, final AttributeSet attrs) {
+        this(context, attrs, R.attr.keyboardViewStyle);
+    }
+
+    public EmojiPageKeyboardView(final Context context, final AttributeSet attrs,
+            final int defStyle) {
+        super(context, attrs, defStyle);
+        mGestureDetector = new GestureDetector(context, this);
+        mGestureDetector.setIsLongpressEnabled(false /* isLongpressEnabled */);
+        mHandler = new Handler();
+    }
+
+    public void setOnKeyEventListener(final OnKeyEventListener listener) {
+        mListener = listener;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setKeyboard(final Keyboard keyboard) {
+        super.setKeyboard(keyboard);
+        mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
+        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
+            if (mAccessibilityDelegate == null) {
+                mAccessibilityDelegate = new KeyboardAccessibilityDelegate<>(this, mKeyDetector);
+            }
+            mAccessibilityDelegate.setKeyboard(keyboard);
+        } else {
+            mAccessibilityDelegate = null;
+        }
+    }
+
+    @Override
+    public boolean dispatchPopulateAccessibilityEvent(final AccessibilityEvent event) {
+        // Don't populate accessibility event with all Emoji keys.
+        return true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean onHoverEvent(final MotionEvent event) {
+        final KeyboardAccessibilityDelegate<EmojiPageKeyboardView> accessibilityDelegate =
+                mAccessibilityDelegate;
+        if (accessibilityDelegate != null) {
+            return accessibilityDelegate.onHoverEvent(event);
+        }
+        return super.onHoverEvent(event);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean onTouchEvent(final MotionEvent e) {
+        if (mGestureDetector.onTouchEvent(e)) {
+            return true;
+        }
+        final Key key = getKey(e);
+        if (key != null && key != mCurrentKey) {
+            releaseCurrentKey(false /* withKeyRegistering */);
+        }
+        return true;
+    }
+
+    // {@link GestureEnabler#OnGestureListener} methods.
+    private Key mCurrentKey;
+    private Runnable mPendingKeyDown;
+    private final Handler mHandler;
+
+    private Key getKey(final MotionEvent e) {
+        final int index = e.getActionIndex();
+        final int x = (int)e.getX(index);
+        final int y = (int)e.getY(index);
+        return mKeyDetector.detectHitKey(x, y);
+    }
+
+    public void releaseCurrentKey(final boolean withKeyRegistering) {
+        mHandler.removeCallbacks(mPendingKeyDown);
+        mPendingKeyDown = null;
+        final Key currentKey = mCurrentKey;
+        if (currentKey == null) {
+            return;
+        }
+        currentKey.onReleased();
+        invalidateKey(currentKey);
+        if (withKeyRegistering) {
+            mListener.onReleaseKey(currentKey);
+        }
+        mCurrentKey = null;
+    }
+
+    @Override
+    public boolean onDown(final MotionEvent e) {
+        final Key key = getKey(e);
+        releaseCurrentKey(false /* withKeyRegistering */);
+        mCurrentKey = key;
+        if (key == null) {
+            return false;
+        }
+        // Do not trigger key-down effect right now in case this is actually a fling action.
+        mPendingKeyDown = new Runnable() {
+            @Override
+            public void run() {
+                mPendingKeyDown = null;
+                key.onPressed();
+                invalidateKey(key);
+                mListener.onPressKey(key);
+            }
+        };
+        mHandler.postDelayed(mPendingKeyDown, KEY_PRESS_DELAY_TIME);
+        return false;
+    }
+
+    @Override
+    public void onShowPress(final MotionEvent e) {
+        // User feedback is done at {@link #onDown(MotionEvent)}.
+    }
+
+    @Override
+    public boolean onSingleTapUp(final MotionEvent e) {
+        final Key key = getKey(e);
+        final Runnable pendingKeyDown = mPendingKeyDown;
+        final Key currentKey = mCurrentKey;
+        releaseCurrentKey(false /* withKeyRegistering */);
+        if (key == null) {
+            return false;
+        }
+        if (key == currentKey && pendingKeyDown != null) {
+            pendingKeyDown.run();
+            // Trigger key-release event a little later so that a user can see visual feedback.
+            mHandler.postDelayed(new Runnable() {
+                @Override
+                public void run() {
+                    key.onReleased();
+                    invalidateKey(key);
+                    mListener.onReleaseKey(key);
+                }
+            }, KEY_RELEASE_DELAY_TIME);
+        } else {
+            key.onReleased();
+            invalidateKey(key);
+            mListener.onReleaseKey(key);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean onScroll(final MotionEvent e1, final MotionEvent e2, final float distanceX,
+           final float distanceY) {
+        releaseCurrentKey(false /* withKeyRegistering */);
+        return false;
+    }
+
+    @Override
+    public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX,
+            final float velocityY) {
+        releaseCurrentKey(false /* withKeyRegistering */);
+        return false;
+    }
+
+    @Override
+    public void onLongPress(final MotionEvent e) {
+        // Long press detection of {@link #mGestureDetector} is disabled and not used.
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java
new file mode 100644
index 0000000..68056e0
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesAdapter.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import android.support.v4.view.PagerAdapter;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.latin.R;
+
+final class EmojiPalettesAdapter extends PagerAdapter {
+    private static final String TAG = EmojiPalettesAdapter.class.getSimpleName();
+    private static final boolean DEBUG_PAGER = false;
+
+    private final EmojiPageKeyboardView.OnKeyEventListener mListener;
+    private final DynamicGridKeyboard mRecentsKeyboard;
+    private final SparseArray<EmojiPageKeyboardView> mActiveKeyboardViews = new SparseArray<>();
+    private final EmojiCategory mEmojiCategory;
+    private int mActivePosition = 0;
+
+    public EmojiPalettesAdapter(final EmojiCategory emojiCategory,
+            final EmojiPageKeyboardView.OnKeyEventListener listener) {
+        mEmojiCategory = emojiCategory;
+        mListener = listener;
+        mRecentsKeyboard = mEmojiCategory.getKeyboard(EmojiCategory.ID_RECENTS, 0);
+    }
+
+    public void flushPendingRecentKeys() {
+        mRecentsKeyboard.flushPendingRecentKeys();
+        final KeyboardView recentKeyboardView =
+                mActiveKeyboardViews.get(mEmojiCategory.getRecentTabId());
+        if (recentKeyboardView != null) {
+            recentKeyboardView.invalidateAllKeys();
+        }
+    }
+
+    public void addRecentKey(final Key key) {
+        if (mEmojiCategory.isInRecentTab()) {
+            mRecentsKeyboard.addPendingKey(key);
+            return;
+        }
+        mRecentsKeyboard.addKeyFirst(key);
+        final KeyboardView recentKeyboardView =
+                mActiveKeyboardViews.get(mEmojiCategory.getRecentTabId());
+        if (recentKeyboardView != null) {
+            recentKeyboardView.invalidateAllKeys();
+        }
+    }
+
+    public void onPageScrolled() {
+        releaseCurrentKey(false /* withKeyRegistering */);
+    }
+
+    public void releaseCurrentKey(final boolean withKeyRegistering) {
+        // Make sure the delayed key-down event (highlight effect and haptic feedback) will be
+        // canceled.
+        final EmojiPageKeyboardView currentKeyboardView =
+                mActiveKeyboardViews.get(mActivePosition);
+        if (currentKeyboardView == null) {
+            return;
+        }
+        currentKeyboardView.releaseCurrentKey(withKeyRegistering);
+    }
+
+    @Override
+    public int getCount() {
+        return mEmojiCategory.getTotalPageCountOfAllCategories();
+    }
+
+    @Override
+    public void setPrimaryItem(final ViewGroup container, final int position,
+            final Object object) {
+        if (mActivePosition == position) {
+            return;
+        }
+        final EmojiPageKeyboardView oldKeyboardView = mActiveKeyboardViews.get(mActivePosition);
+        if (oldKeyboardView != null) {
+            oldKeyboardView.releaseCurrentKey(false /* withKeyRegistering */);
+            oldKeyboardView.deallocateMemory();
+        }
+        mActivePosition = position;
+    }
+
+    @Override
+    public Object instantiateItem(final ViewGroup container, final int position) {
+        if (DEBUG_PAGER) {
+            Log.d(TAG, "instantiate item: " + position);
+        }
+        final EmojiPageKeyboardView oldKeyboardView = mActiveKeyboardViews.get(position);
+        if (oldKeyboardView != null) {
+            oldKeyboardView.deallocateMemory();
+            // This may be redundant but wanted to be safer..
+            mActiveKeyboardViews.remove(position);
+        }
+        final Keyboard keyboard =
+                mEmojiCategory.getKeyboardFromPagePosition(position);
+        final LayoutInflater inflater = LayoutInflater.from(container.getContext());
+        final EmojiPageKeyboardView keyboardView = (EmojiPageKeyboardView)inflater.inflate(
+                R.layout.emoji_keyboard_page, container, false /* attachToRoot */);
+        keyboardView.setKeyboard(keyboard);
+        keyboardView.setOnKeyEventListener(mListener);
+        container.addView(keyboardView);
+        mActiveKeyboardViews.put(position, keyboardView);
+        return keyboardView;
+    }
+
+    @Override
+    public boolean isViewFromObject(final View view, final Object object) {
+        return view == object;
+    }
+
+    @Override
+    public void destroyItem(final ViewGroup container, final int position,
+            final Object object) {
+        if (DEBUG_PAGER) {
+            Log.d(TAG, "destroy item: " + position + ", " + object.getClass().getSimpleName());
+        }
+        final EmojiPageKeyboardView keyboardView = mActiveKeyboardViews.get(position);
+        if (keyboardView != null) {
+            keyboardView.deallocateMemory();
+            mActiveKeyboardViews.remove(position);
+        }
+        if (object instanceof View) {
+            container.removeView((View)object);
+        } else {
+            Log.w(TAG, "Warning!!! Emoji palette may be leaking. " + object);
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
new file mode 100644
index 0000000..e37cd23
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
@@ -0,0 +1,560 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.emoji;
+
+import static com.android.inputmethod.latin.Constants.NOT_A_COORDINATE;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Color;
+import android.os.CountDownTimer;
+import android.preference.PreferenceManager;
+import android.support.v4.view.ViewPager;
+import android.util.AttributeSet;
+import android.util.Pair;
+import android.util.TypedValue;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TabHost;
+import android.widget.TabHost.OnTabChangeListener;
+import android.widget.TabWidget;
+import android.widget.TextView;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyboardActionListener;
+import com.android.inputmethod.keyboard.KeyboardLayoutSet;
+import com.android.inputmethod.keyboard.KeyboardView;
+import com.android.inputmethod.keyboard.internal.KeyDrawParams;
+import com.android.inputmethod.keyboard.internal.KeyVisualAttributes;
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SubtypeSwitcher;
+import com.android.inputmethod.latin.utils.ResourceUtils;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * View class to implement Emoji palettes.
+ * The Emoji keyboard consists of group of views layout/emoji_palettes_view.
+ * <ol>
+ * <li> Emoji category tabs.
+ * <li> Delete button.
+ * <li> Emoji keyboard pages that can be scrolled by swiping horizontally or by selecting a tab.
+ * <li> Back to main keyboard button and enter button.
+ * </ol>
+ * Because of the above reasons, this class doesn't extend {@link KeyboardView}.
+ */
+public final class EmojiPalettesView extends LinearLayout implements OnTabChangeListener,
+        ViewPager.OnPageChangeListener, View.OnClickListener, View.OnTouchListener,
+        EmojiPageKeyboardView.OnKeyEventListener {
+    private final int mFunctionalKeyBackgroundId;
+    private final int mSpacebarBackgroundId;
+    private final boolean mCategoryIndicatorEnabled;
+    private final int mCategoryIndicatorDrawableResId;
+    private final int mCategoryIndicatorBackgroundResId;
+    private final int mCategoryPageIndicatorColor;
+    private final int mCategoryPageIndicatorBackground;
+    private final DeleteKeyOnTouchListener mDeleteKeyOnTouchListener;
+    private EmojiPalettesAdapter mEmojiPalettesAdapter;
+    private final EmojiLayoutParams mEmojiLayoutParams;
+
+    private ImageButton mDeleteKey;
+    private TextView mAlphabetKeyLeft;
+    private TextView mAlphabetKeyRight;
+    private View mSpacebar;
+    // TODO: Remove this workaround.
+    private View mSpacebarIcon;
+    private TabHost mTabHost;
+    private ViewPager mEmojiPager;
+    private int mCurrentPagerPosition = 0;
+    private EmojiCategoryPageIndicatorView mEmojiCategoryPageIndicatorView;
+
+    private KeyboardActionListener mKeyboardActionListener = KeyboardActionListener.EMPTY_LISTENER;
+
+    private final EmojiCategory mEmojiCategory;
+
+    public EmojiPalettesView(final Context context, final AttributeSet attrs) {
+        this(context, attrs, R.attr.emojiPalettesViewStyle);
+    }
+
+    public EmojiPalettesView(final Context context, final AttributeSet attrs, final int defStyle) {
+        super(context, attrs, defStyle);
+        final TypedArray keyboardViewAttr = context.obtainStyledAttributes(attrs,
+                R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
+        final int keyBackgroundId = keyboardViewAttr.getResourceId(
+                R.styleable.KeyboardView_keyBackground, 0);
+        mFunctionalKeyBackgroundId = keyboardViewAttr.getResourceId(
+                R.styleable.KeyboardView_functionalKeyBackground, keyBackgroundId);
+        mSpacebarBackgroundId = keyboardViewAttr.getResourceId(
+                R.styleable.KeyboardView_spacebarBackground, keyBackgroundId);
+        keyboardViewAttr.recycle();
+        final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
+                context, null /* editorInfo */);
+        final Resources res = context.getResources();
+        mEmojiLayoutParams = new EmojiLayoutParams(res);
+        builder.setSubtype(SubtypeSwitcher.getInstance().getEmojiSubtype());
+        builder.setKeyboardGeometry(ResourceUtils.getDefaultKeyboardWidth(res),
+                mEmojiLayoutParams.mEmojiKeyboardHeight);
+        final KeyboardLayoutSet layoutSet = builder.build();
+        final TypedArray emojiPalettesViewAttr = context.obtainStyledAttributes(attrs,
+                R.styleable.EmojiPalettesView, defStyle, R.style.EmojiPalettesView);
+        mEmojiCategory = new EmojiCategory(PreferenceManager.getDefaultSharedPreferences(context),
+                res, layoutSet, emojiPalettesViewAttr);
+        mCategoryIndicatorEnabled = emojiPalettesViewAttr.getBoolean(
+                R.styleable.EmojiPalettesView_categoryIndicatorEnabled, false);
+        mCategoryIndicatorDrawableResId = emojiPalettesViewAttr.getResourceId(
+                R.styleable.EmojiPalettesView_categoryIndicatorDrawable, 0);
+        mCategoryIndicatorBackgroundResId = emojiPalettesViewAttr.getResourceId(
+                R.styleable.EmojiPalettesView_categoryIndicatorBackground, 0);
+        mCategoryPageIndicatorColor = emojiPalettesViewAttr.getColor(
+                R.styleable.EmojiPalettesView_categoryPageIndicatorColor, 0);
+        mCategoryPageIndicatorBackground = emojiPalettesViewAttr.getColor(
+                R.styleable.EmojiPalettesView_categoryPageIndicatorBackground, 0);
+        emojiPalettesViewAttr.recycle();
+        mDeleteKeyOnTouchListener = new DeleteKeyOnTouchListener(context);
+    }
+
+    @Override
+    protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        final Resources res = getContext().getResources();
+        // The main keyboard expands to the entire this {@link KeyboardView}.
+        final int width = ResourceUtils.getDefaultKeyboardWidth(res)
+                + getPaddingLeft() + getPaddingRight();
+        final int height = ResourceUtils.getDefaultKeyboardHeight(res)
+                + res.getDimensionPixelSize(R.dimen.config_suggestions_strip_height)
+                + getPaddingTop() + getPaddingBottom();
+        setMeasuredDimension(width, height);
+    }
+
+    private void addTab(final TabHost host, final int categoryId) {
+        final String tabId = mEmojiCategory.getCategoryName(categoryId, 0 /* categoryPageId */);
+        final TabHost.TabSpec tspec = host.newTabSpec(tabId);
+        tspec.setContent(R.id.emoji_keyboard_dummy);
+        final ImageView iconView = (ImageView)LayoutInflater.from(getContext()).inflate(
+                R.layout.emoji_keyboard_tab_icon, null);
+        iconView.setImageResource(mEmojiCategory.getCategoryTabIcon(categoryId));
+        iconView.setContentDescription(mEmojiCategory.getAccessibilityDescription(categoryId));
+        tspec.setIndicator(iconView);
+        host.addTab(tspec);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        mTabHost = (TabHost)findViewById(R.id.emoji_category_tabhost);
+        mTabHost.setup();
+        for (final EmojiCategory.CategoryProperties properties
+                : mEmojiCategory.getShownCategories()) {
+            addTab(mTabHost, properties.mCategoryId);
+        }
+        mTabHost.setOnTabChangedListener(this);
+        final TabWidget tabWidget = mTabHost.getTabWidget();
+        tabWidget.setStripEnabled(mCategoryIndicatorEnabled);
+        if (mCategoryIndicatorEnabled) {
+            // On TabWidget's strip, what looks like an indicator is actually a background.
+            // And what looks like a background are actually left and right drawables.
+            tabWidget.setBackgroundResource(mCategoryIndicatorDrawableResId);
+            tabWidget.setLeftStripDrawable(mCategoryIndicatorBackgroundResId);
+            tabWidget.setRightStripDrawable(mCategoryIndicatorBackgroundResId);
+        }
+
+        mEmojiPalettesAdapter = new EmojiPalettesAdapter(mEmojiCategory, this);
+
+        mEmojiPager = (ViewPager)findViewById(R.id.emoji_keyboard_pager);
+        mEmojiPager.setAdapter(mEmojiPalettesAdapter);
+        mEmojiPager.setOnPageChangeListener(this);
+        mEmojiPager.setOffscreenPageLimit(0);
+        mEmojiPager.setPersistentDrawingCache(PERSISTENT_NO_CACHE);
+        mEmojiLayoutParams.setPagerProperties(mEmojiPager);
+
+        mEmojiCategoryPageIndicatorView =
+                (EmojiCategoryPageIndicatorView)findViewById(R.id.emoji_category_page_id_view);
+        mEmojiCategoryPageIndicatorView.setColors(
+                mCategoryPageIndicatorColor, mCategoryPageIndicatorBackground);
+        mEmojiLayoutParams.setCategoryPageIdViewProperties(mEmojiCategoryPageIndicatorView);
+
+        setCurrentCategoryId(mEmojiCategory.getCurrentCategoryId(), true /* force */);
+
+        final LinearLayout actionBar = (LinearLayout)findViewById(R.id.emoji_action_bar);
+        mEmojiLayoutParams.setActionBarProperties(actionBar);
+
+        // deleteKey depends only on OnTouchListener.
+        mDeleteKey = (ImageButton)findViewById(R.id.emoji_keyboard_delete);
+        mDeleteKey.setBackgroundResource(mFunctionalKeyBackgroundId);
+        mDeleteKey.setTag(Constants.CODE_DELETE);
+        mDeleteKey.setOnTouchListener(mDeleteKeyOnTouchListener);
+
+        // {@link #mAlphabetKeyLeft}, {@link #mAlphabetKeyRight, and spaceKey depend on
+        // {@link View.OnClickListener} as well as {@link View.OnTouchListener}.
+        // {@link View.OnTouchListener} is used as the trigger of key-press, while
+        // {@link View.OnClickListener} is used as the trigger of key-release which does not occur
+        // if the event is canceled by moving off the finger from the view.
+        // The text on alphabet keys are set at
+        // {@link #startEmojiPalettes(String,int,float,Typeface)}.
+        mAlphabetKeyLeft = (TextView)findViewById(R.id.emoji_keyboard_alphabet_left);
+        mAlphabetKeyLeft.setBackgroundResource(mFunctionalKeyBackgroundId);
+        mAlphabetKeyLeft.setTag(Constants.CODE_ALPHA_FROM_EMOJI);
+        mAlphabetKeyLeft.setOnTouchListener(this);
+        mAlphabetKeyLeft.setOnClickListener(this);
+        mAlphabetKeyRight = (TextView)findViewById(R.id.emoji_keyboard_alphabet_right);
+        mAlphabetKeyRight.setBackgroundResource(mFunctionalKeyBackgroundId);
+        mAlphabetKeyRight.setTag(Constants.CODE_ALPHA_FROM_EMOJI);
+        mAlphabetKeyRight.setOnTouchListener(this);
+        mAlphabetKeyRight.setOnClickListener(this);
+        mSpacebar = findViewById(R.id.emoji_keyboard_space);
+        mSpacebar.setBackgroundResource(mSpacebarBackgroundId);
+        mSpacebar.setTag(Constants.CODE_SPACE);
+        mSpacebar.setOnTouchListener(this);
+        mSpacebar.setOnClickListener(this);
+        mEmojiLayoutParams.setKeyProperties(mSpacebar);
+        mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon);
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(final MotionEvent ev) {
+        // Add here to the stack trace to nail down the {@link IllegalArgumentException} exception
+        // in MotionEvent that sporadically happens.
+        // TODO: Remove this override method once the issue has been addressed.
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
+    public void onTabChanged(final String tabId) {
+        AudioAndHapticFeedbackManager.getInstance().performHapticAndAudioFeedback(
+                Constants.CODE_UNSPECIFIED, this);
+        final int categoryId = mEmojiCategory.getCategoryId(tabId);
+        setCurrentCategoryId(categoryId, false /* force */);
+        updateEmojiCategoryPageIdView();
+    }
+
+    @Override
+    public void onPageSelected(final int position) {
+        final Pair<Integer, Integer> newPos =
+                mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
+        setCurrentCategoryId(newPos.first /* categoryId */, false /* force */);
+        mEmojiCategory.setCurrentCategoryPageId(newPos.second /* categoryPageId */);
+        updateEmojiCategoryPageIdView();
+        mCurrentPagerPosition = position;
+    }
+
+    @Override
+    public void onPageScrollStateChanged(final int state) {
+        // Ignore this message. Only want the actual page selected.
+    }
+
+    @Override
+    public void onPageScrolled(final int position, final float positionOffset,
+            final int positionOffsetPixels) {
+        mEmojiPalettesAdapter.onPageScrolled();
+        final Pair<Integer, Integer> newPos =
+                mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(position);
+        final int newCategoryId = newPos.first;
+        final int newCategorySize = mEmojiCategory.getCategoryPageSize(newCategoryId);
+        final int currentCategoryId = mEmojiCategory.getCurrentCategoryId();
+        final int currentCategoryPageId = mEmojiCategory.getCurrentCategoryPageId();
+        final int currentCategorySize = mEmojiCategory.getCurrentCategoryPageSize();
+        if (newCategoryId == currentCategoryId) {
+            mEmojiCategoryPageIndicatorView.setCategoryPageId(
+                    newCategorySize, newPos.second, positionOffset);
+        } else if (newCategoryId > currentCategoryId) {
+            mEmojiCategoryPageIndicatorView.setCategoryPageId(
+                    currentCategorySize, currentCategoryPageId, positionOffset);
+        } else if (newCategoryId < currentCategoryId) {
+            mEmojiCategoryPageIndicatorView.setCategoryPageId(
+                    currentCategorySize, currentCategoryPageId, positionOffset - 1);
+        }
+    }
+
+    /**
+     * Called from {@link EmojiPageKeyboardView} through {@link android.view.View.OnTouchListener}
+     * interface to handle touch events from View-based elements such as the space bar.
+     * Note that this method is used only for observing {@link MotionEvent#ACTION_DOWN} to trigger
+     * {@link KeyboardActionListener#onPressKey}. {@link KeyboardActionListener#onReleaseKey} will
+     * be covered by {@link #onClick} as long as the event is not canceled.
+     */
+    @Override
+    public boolean onTouch(final View v, final MotionEvent event) {
+        if (event.getActionMasked() != MotionEvent.ACTION_DOWN) {
+            return false;
+        }
+        final Object tag = v.getTag();
+        if (!(tag instanceof Integer)) {
+            return false;
+        }
+        final int code = (Integer) tag;
+        mKeyboardActionListener.onPressKey(
+                code, 0 /* repeatCount */, true /* isSinglePointer */);
+        // It's important to return false here. Otherwise, {@link #onClick} and touch-down visual
+        // feedback stop working.
+        return false;
+    }
+
+    /**
+     * Called from {@link EmojiPageKeyboardView} through {@link android.view.View.OnClickListener}
+     * interface to handle non-canceled touch-up events from View-based elements such as the space
+     * bar.
+     */
+    @Override
+    public void onClick(View v) {
+        final Object tag = v.getTag();
+        if (!(tag instanceof Integer)) {
+            return;
+        }
+        final int code = (Integer) tag;
+        mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE,
+                false /* isKeyRepeat */);
+        mKeyboardActionListener.onReleaseKey(code, false /* withSliding */);
+    }
+
+    /**
+     * Called from {@link EmojiPageKeyboardView} through
+     * {@link com.android.inputmethod.keyboard.emoji.EmojiPageKeyboardView.OnKeyEventListener}
+     * interface to handle touch events from non-View-based elements such as Emoji buttons.
+     */
+    @Override
+    public void onPressKey(final Key key) {
+        final int code = key.getCode();
+        mKeyboardActionListener.onPressKey(code, 0 /* repeatCount */, true /* isSinglePointer */);
+    }
+
+    /**
+     * Called from {@link EmojiPageKeyboardView} through
+     * {@link com.android.inputmethod.keyboard.emoji.EmojiPageKeyboardView.OnKeyEventListener}
+     * interface to handle touch events from non-View-based elements such as Emoji buttons.
+     */
+    @Override
+    public void onReleaseKey(final Key key) {
+        mEmojiPalettesAdapter.addRecentKey(key);
+        mEmojiCategory.saveLastTypedCategoryPage();
+        final int code = key.getCode();
+        if (code == Constants.CODE_OUTPUT_TEXT) {
+            mKeyboardActionListener.onTextInput(key.getOutputText());
+        } else {
+            mKeyboardActionListener.onCodeInput(code, NOT_A_COORDINATE, NOT_A_COORDINATE,
+                    false /* isKeyRepeat */);
+        }
+        mKeyboardActionListener.onReleaseKey(code, false /* withSliding */);
+    }
+
+    public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) {
+        if (!enabled) return;
+        // TODO: Should use LAYER_TYPE_SOFTWARE when hardware acceleration is off?
+        setLayerType(LAYER_TYPE_HARDWARE, null);
+    }
+
+    private static void setupAlphabetKey(final TextView alphabetKey, final String label,
+            final KeyDrawParams params) {
+        alphabetKey.setText(label);
+        alphabetKey.setTextColor(params.mFunctionalTextColor);
+        alphabetKey.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize);
+        alphabetKey.setTypeface(params.mTypeface);
+    }
+
+    public void startEmojiPalettes(final String switchToAlphaLabel,
+            final KeyVisualAttributes keyVisualAttr, final KeyboardIconsSet iconSet) {
+        final int deleteIconResId = iconSet.getIconResourceId(KeyboardIconsSet.NAME_DELETE_KEY);
+        if (deleteIconResId != 0) {
+            mDeleteKey.setImageResource(deleteIconResId);
+        }
+        final int spacebarResId = iconSet.getIconResourceId(KeyboardIconsSet.NAME_SPACE_KEY);
+        if (spacebarResId != 0) {
+            // TODO: Remove this workaround to place the spacebar icon.
+            mSpacebarIcon.setBackgroundResource(spacebarResId);
+        }
+        final KeyDrawParams params = new KeyDrawParams();
+        params.updateParams(mEmojiLayoutParams.getActionBarHeight(), keyVisualAttr);
+        setupAlphabetKey(mAlphabetKeyLeft, switchToAlphaLabel, params);
+        setupAlphabetKey(mAlphabetKeyRight, switchToAlphaLabel, params);
+        mEmojiPager.setAdapter(mEmojiPalettesAdapter);
+        mEmojiPager.setCurrentItem(mCurrentPagerPosition);
+    }
+
+    public void stopEmojiPalettes() {
+        mEmojiPalettesAdapter.releaseCurrentKey(true /* withKeyRegistering */);
+        mEmojiPalettesAdapter.flushPendingRecentKeys();
+        mEmojiPager.setAdapter(null);
+    }
+
+    public void setKeyboardActionListener(final KeyboardActionListener listener) {
+        mKeyboardActionListener = listener;
+        mDeleteKeyOnTouchListener.setKeyboardActionListener(mKeyboardActionListener);
+    }
+
+    private void updateEmojiCategoryPageIdView() {
+        if (mEmojiCategoryPageIndicatorView == null) {
+            return;
+        }
+        mEmojiCategoryPageIndicatorView.setCategoryPageId(
+                mEmojiCategory.getCurrentCategoryPageSize(),
+                mEmojiCategory.getCurrentCategoryPageId(), 0.0f /* offset */);
+    }
+
+    private void setCurrentCategoryId(final int categoryId, final boolean force) {
+        final int oldCategoryId = mEmojiCategory.getCurrentCategoryId();
+        if (oldCategoryId == categoryId && !force) {
+            return;
+        }
+
+        if (oldCategoryId == EmojiCategory.ID_RECENTS) {
+            // Needs to save pending updates for recent keys when we get out of the recents
+            // category because we don't want to move the recent emojis around while the user
+            // is in the recents category.
+            mEmojiPalettesAdapter.flushPendingRecentKeys();
+        }
+
+        mEmojiCategory.setCurrentCategoryId(categoryId);
+        final int newTabId = mEmojiCategory.getTabIdFromCategoryId(categoryId);
+        final int newCategoryPageId = mEmojiCategory.getPageIdFromCategoryId(categoryId);
+        if (force || mEmojiCategory.getCategoryIdAndPageIdFromPagePosition(
+                mEmojiPager.getCurrentItem()).first != categoryId) {
+            mEmojiPager.setCurrentItem(newCategoryPageId, false /* smoothScroll */);
+        }
+        if (force || mTabHost.getCurrentTab() != newTabId) {
+            mTabHost.setCurrentTab(newTabId);
+        }
+    }
+
+    private static class DeleteKeyOnTouchListener implements OnTouchListener {
+        static final long MAX_REPEAT_COUNT_TIME = TimeUnit.SECONDS.toMillis(30);
+        final long mKeyRepeatStartTimeout;
+        final long mKeyRepeatInterval;
+
+        public DeleteKeyOnTouchListener(Context context) {
+            final Resources res = context.getResources();
+            mKeyRepeatStartTimeout = res.getInteger(R.integer.config_key_repeat_start_timeout);
+            mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval);
+            mTimer = new CountDownTimer(MAX_REPEAT_COUNT_TIME, mKeyRepeatInterval) {
+                @Override
+                public void onTick(long millisUntilFinished) {
+                    final long elapsed = MAX_REPEAT_COUNT_TIME - millisUntilFinished;
+                    if (elapsed < mKeyRepeatStartTimeout) {
+                        return;
+                    }
+                    onKeyRepeat();
+                }
+                @Override
+                public void onFinish() {
+                    onKeyRepeat();
+                }
+            };
+        }
+
+        /** Key-repeat state. */
+        private static final int KEY_REPEAT_STATE_INITIALIZED = 0;
+        // The key is touched but auto key-repeat is not started yet.
+        private static final int KEY_REPEAT_STATE_KEY_DOWN = 1;
+        // At least one key-repeat event has already been triggered and the key is not released.
+        private static final int KEY_REPEAT_STATE_KEY_REPEAT = 2;
+
+        private KeyboardActionListener mKeyboardActionListener =
+                KeyboardActionListener.EMPTY_LISTENER;
+
+        // TODO: Do the same things done in PointerTracker
+        private final CountDownTimer mTimer;
+        private int mState = KEY_REPEAT_STATE_INITIALIZED;
+        private int mRepeatCount = 0;
+
+        public void setKeyboardActionListener(final KeyboardActionListener listener) {
+            mKeyboardActionListener = listener;
+        }
+
+        @Override
+        public boolean onTouch(final View v, final MotionEvent event) {
+            switch (event.getActionMasked()) {
+            case MotionEvent.ACTION_DOWN:
+                onTouchDown(v);
+                return true;
+            case MotionEvent.ACTION_MOVE:
+                final float x = event.getX();
+                final float y = event.getY();
+                if (x < 0.0f || v.getWidth() < x || y < 0.0f || v.getHeight() < y) {
+                    // Stop generating key events once the finger moves away from the view area.
+                    onTouchCanceled(v);
+                }
+                return true;
+            case MotionEvent.ACTION_CANCEL:
+            case MotionEvent.ACTION_UP:
+                onTouchUp(v);
+                return true;
+            }
+            return false;
+        }
+
+        private void handleKeyDown() {
+            mKeyboardActionListener.onPressKey(
+                    Constants.CODE_DELETE, mRepeatCount, true /* isSinglePointer */);
+        }
+
+        private void handleKeyUp() {
+            mKeyboardActionListener.onCodeInput(Constants.CODE_DELETE,
+                    NOT_A_COORDINATE, NOT_A_COORDINATE, false /* isKeyRepeat */);
+            mKeyboardActionListener.onReleaseKey(
+                    Constants.CODE_DELETE, false /* withSliding */);
+            ++mRepeatCount;
+        }
+
+        private void onTouchDown(final View v) {
+            mTimer.cancel();
+            mRepeatCount = 0;
+            handleKeyDown();
+            v.setPressed(true /* pressed */);
+            mState = KEY_REPEAT_STATE_KEY_DOWN;
+            mTimer.start();
+        }
+
+        private void onTouchUp(final View v) {
+            mTimer.cancel();
+            if (mState == KEY_REPEAT_STATE_KEY_DOWN) {
+                handleKeyUp();
+            }
+            v.setPressed(false /* pressed */);
+            mState = KEY_REPEAT_STATE_INITIALIZED;
+        }
+
+        private void onTouchCanceled(final View v) {
+            mTimer.cancel();
+            v.setBackgroundColor(Color.TRANSPARENT);
+            mState = KEY_REPEAT_STATE_INITIALIZED;
+        }
+
+        // Called by {@link #mTimer} in the UI thread as an auto key-repeat signal.
+        void onKeyRepeat() {
+            switch (mState) {
+            case KEY_REPEAT_STATE_INITIALIZED:
+                // Basically this should not happen.
+                break;
+            case KEY_REPEAT_STATE_KEY_DOWN:
+                // Do not call {@link #handleKeyDown} here because it has already been called
+                // in {@link #onTouchDown}.
+                handleKeyUp();
+                mState = KEY_REPEAT_STATE_KEY_REPEAT;
+                break;
+            case KEY_REPEAT_STATE_KEY_REPEAT:
+                handleKeyDown();
+                handleKeyUp();
+                break;
+            }
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java b/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java
index b814fc1..a194f3d 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/AbstractDrawingPreview.java
@@ -22,36 +22,50 @@
 import com.android.inputmethod.keyboard.PointerTracker;
 
 /**
- * Abstract base class for previews that are drawn on PreviewPlacerView, e.g.,
- * GestureFloatingPrevewText, GestureTrail, and SlidingKeyInputPreview.
+ * Abstract base class for previews that are drawn on DrawingPreviewPlacerView, e.g.,
+ * GestureFloatingTextDrawingPreview, GestureTrailsDrawingPreview, and
+ * SlidingKeyInputDrawingPreview.
  */
 public abstract class AbstractDrawingPreview {
-    private final View mDrawingView;
+    private View mDrawingView;
     private boolean mPreviewEnabled;
+    private boolean mHasValidGeometry;
 
-    protected AbstractDrawingPreview(final View drawingView) {
+    public void setDrawingView(final DrawingPreviewPlacerView drawingView) {
         mDrawingView = drawingView;
+        drawingView.addPreview(this);
     }
 
-    public final View getDrawingView() {
-        return mDrawingView;
+    protected void invalidateDrawingView() {
+        if (mDrawingView != null) {
+            mDrawingView.invalidate();
+        }
+    }
+
+    protected final boolean isPreviewEnabled() {
+        return mPreviewEnabled && mHasValidGeometry;
     }
 
     public final void setPreviewEnabled(final boolean enabled) {
         mPreviewEnabled = enabled;
     }
 
-    public boolean isPreviewEnabled() {
-        return mPreviewEnabled;
+    /**
+     * Set {@link MainKeyboardView} geometry and position in the {@link SoftInputWindow}.
+     * The class that is overriding this method must call this super implementation.
+     *
+     * @param originCoords the top-left coordinates of the {@link MainKeyboardView} in
+     *        {@link SoftInputWindow} coordinate-system. This is unused but has a point in an
+     *        extended class, such as {@link GestureTrailsDrawingPreview}.
+     * @param width the width of {@link MainKeyboardView}.
+     * @param height the height of {@link MainKeyboardView}.
+     */
+    public void setKeyboardViewGeometry(final int[] originCoords, final int width,
+            final int height) {
+        mHasValidGeometry = (width > 0 && height > 0);
     }
 
-    public void setKeyboardGeometry(final int[] originCoords, final int width, final int height) {
-        // Default implementation is empty.
-    }
-
-    public void onDetachFromWindow() {
-        // Default implementation is empty.
-    }
+    public abstract void onDeallocateMemory();
 
     /**
      * Draws the preview
diff --git a/java/src/com/android/inputmethod/keyboard/internal/BatchInputArbiter.java b/java/src/com/android/inputmethod/keyboard/internal/BatchInputArbiter.java
new file mode 100644
index 0000000..cd98759
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/BatchInputArbiter.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.InputPointers;
+
+/**
+ * This class arbitrates batch input.
+ * An instance of this class holds a {@link GestureStrokeRecognitionPoints}.
+ * And it arbitrates multiple strokes gestured by multiple fingers and aggregates those gesture
+ * points into one batch input.
+ */
+public class BatchInputArbiter {
+    public interface BatchInputArbiterListener {
+        public void onStartBatchInput();
+        public void onUpdateBatchInput(
+                final InputPointers aggregatedPointers, final long moveEventTime);
+        public void onStartUpdateBatchInputTimer();
+        public void onEndBatchInput(final InputPointers aggregatedPointers, final long upEventTime);
+    }
+
+    // The starting time of the first stroke of a gesture input.
+    private static long sGestureFirstDownTime;
+    // The {@link InputPointers} that includes all events of a gesture input.
+    private static final InputPointers sAggregatedPointers = new InputPointers(
+            Constants.DEFAULT_GESTURE_POINTS_CAPACITY);
+    private static int sLastRecognitionPointSize = 0; // synchronized using sAggregatedPointers
+    private static long sLastRecognitionTime = 0; // synchronized using sAggregatedPointers
+
+    private final GestureStrokeRecognitionPoints mRecognitionPoints;
+
+    public BatchInputArbiter(final int pointerId, final GestureStrokeRecognitionParams params) {
+        mRecognitionPoints = new GestureStrokeRecognitionPoints(pointerId, params);
+    }
+
+    public void setKeyboardGeometry(final int keyWidth, final int keyboardHeight) {
+        mRecognitionPoints.setKeyboardGeometry(keyWidth, keyboardHeight);
+    }
+
+    /**
+     * Calculate elapsed time since the first gesture down.
+     * @param eventTime the time of this event.
+     * @return the elapsed time in millisecond from the first gesture down.
+     */
+    public int getElapsedTimeSinceFirstDown(final long eventTime) {
+        return (int)(eventTime - sGestureFirstDownTime);
+    }
+
+    /**
+     * Add a down event point.
+     * @param x the x-coordinate of this down event.
+     * @param y the y-coordinate of this down event.
+     * @param downEventTime the time of this down event.
+     * @param lastLetterTypingTime the last typing input time.
+     * @param activePointerCount the number of active pointers when this pointer down event occurs.
+     */
+    public void addDownEventPoint(final int x, final int y, final long downEventTime,
+            final long lastLetterTypingTime, final int activePointerCount) {
+        if (activePointerCount == 1) {
+            sGestureFirstDownTime = downEventTime;
+        }
+        final int elapsedTimeSinceFirstDown = getElapsedTimeSinceFirstDown(downEventTime);
+        final int elapsedTimeSinceLastTyping = (int)(downEventTime - lastLetterTypingTime);
+        mRecognitionPoints.addDownEventPoint(
+                x, y, elapsedTimeSinceFirstDown, elapsedTimeSinceLastTyping);
+    }
+
+    /**
+     * Add a move event point.
+     * @param x the x-coordinate of this move event.
+     * @param y the y-coordinate of this move event.
+     * @param moveEventTime the time of this move event.
+     * @param isMajorEvent false if this is a historical move event.
+     * @param listener {@link BatchInputArbiterListener#onStartUpdateBatchInputTimer()} of this
+     *     <code>listener</code> may be called if enough move points have been added.
+     * @return true if this move event occurs on the valid gesture area.
+     */
+    public boolean addMoveEventPoint(final int x, final int y, final long moveEventTime,
+            final boolean isMajorEvent, final BatchInputArbiterListener listener) {
+        final int beforeLength = mRecognitionPoints.getLength();
+        final boolean onValidArea = mRecognitionPoints.addEventPoint(
+                x, y, getElapsedTimeSinceFirstDown(moveEventTime), isMajorEvent);
+        if (mRecognitionPoints.getLength() > beforeLength) {
+            listener.onStartUpdateBatchInputTimer();
+        }
+        return onValidArea;
+    }
+
+    /**
+     * Determine whether the batch input has started or not.
+     * @param listener {@link BatchInputArbiterListener#onStartBatchInput()} of this
+     *     <code>listener</code> will be called when the batch input has started successfully.
+     * @return true if the batch input has started successfully.
+     */
+    public boolean mayStartBatchInput(final BatchInputArbiterListener listener) {
+        if (!mRecognitionPoints.isStartOfAGesture()) {
+            return false;
+        }
+        synchronized (sAggregatedPointers) {
+            sAggregatedPointers.reset();
+            sLastRecognitionPointSize = 0;
+            sLastRecognitionTime = 0;
+            listener.onStartBatchInput();
+        }
+        return true;
+    }
+
+    /**
+     * Add synthetic move event point. After adding the point,
+     * {@link #updateBatchInput(long,BatchInputArbiterListener)} will be called internally.
+     * @param syntheticMoveEventTime the synthetic move event time.
+     * @param listener the listener to be passed to
+     *     {@link #updateBatchInput(long,BatchInputArbiterListener)}.
+     */
+    public void updateBatchInputByTimer(final long syntheticMoveEventTime,
+            final BatchInputArbiterListener listener) {
+        mRecognitionPoints.duplicateLastPointWith(
+                getElapsedTimeSinceFirstDown(syntheticMoveEventTime));
+        updateBatchInput(syntheticMoveEventTime, listener);
+    }
+
+    /**
+     * Determine whether we have enough gesture points to lookup dictionary.
+     * @param moveEventTime the time of this move event.
+     * @param listener {@link BatchInputArbiterListener#onUpdateBatchInput(InputPointers,long)} of
+     *     this <code>listener</code> will be called when enough event points we have. Also
+     *     {@link BatchInputArbiterListener#onStartUpdateBatchInputTimer()} will be called to have
+     *     possible future synthetic move event.
+     */
+    public void updateBatchInput(final long moveEventTime,
+            final BatchInputArbiterListener listener) {
+        synchronized (sAggregatedPointers) {
+            mRecognitionPoints.appendIncrementalBatchPoints(sAggregatedPointers);
+            final int size = sAggregatedPointers.getPointerSize();
+            if (size > sLastRecognitionPointSize && mRecognitionPoints.hasRecognitionTimePast(
+                    moveEventTime, sLastRecognitionTime)) {
+                listener.onUpdateBatchInput(sAggregatedPointers, moveEventTime);
+                listener.onStartUpdateBatchInputTimer();
+                // The listener may change the size of the pointers (when auto-committing
+                // for example), so we need to get the size from the pointers again.
+                sLastRecognitionPointSize = sAggregatedPointers.getPointerSize();
+                sLastRecognitionTime = moveEventTime;
+            }
+        }
+    }
+
+    /**
+     * Determine whether the batch input has ended successfully or continues.
+     * @param upEventTime the time of this up event.
+     * @param activePointerCount the number of active pointers when this pointer up event occurs.
+     * @param listener {@link BatchInputArbiterListener#onEndBatchInput(InputPointers,long)} of this
+     *     <code>listener</code> will be called when the batch input has started successfully.
+     * @return true if the batch input has ended successfully.
+     */
+    public boolean mayEndBatchInput(final long upEventTime, final int activePointerCount,
+            final BatchInputArbiterListener listener) {
+        synchronized (sAggregatedPointers) {
+            mRecognitionPoints.appendAllBatchPoints(sAggregatedPointers);
+            if (activePointerCount == 1) {
+                listener.onEndBatchInput(sAggregatedPointers, upEventTime);
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java b/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java
new file mode 100644
index 0000000..6420edd
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.Resources;
+import android.util.DisplayMetrics;
+import android.util.Log;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.define.DebugFlags;
+
+// This hack is applied to certain classes of tablets.
+public final class BogusMoveEventDetector {
+    private static final String TAG = BogusMoveEventDetector.class.getSimpleName();
+    private static final boolean DEBUG_MODE = DebugFlags.DEBUG_ENABLED;
+
+    // Move these thresholds to resource.
+    // These thresholds' unit is a diagonal length of a key.
+    private static final float BOGUS_MOVE_ACCUMULATED_DISTANCE_THRESHOLD = 0.53f;
+    private static final float BOGUS_MOVE_RADIUS_THRESHOLD = 1.14f;
+
+    private static boolean sNeedsProximateBogusDownMoveUpEventHack;
+
+    public static void init(final Resources res) {
+        // The proximate bogus down move up event hack is needed for a device such like,
+        // 1) is large tablet, or 2) is small tablet and the screen density is less than hdpi.
+        // Though it seems odd to use screen density as criteria of the quality of the touch
+        // screen, the small table that has a less density screen than hdpi most likely has been
+        // made with the touch screen that needs the hack.
+        final int screenMetrics = res.getInteger(R.integer.config_screen_metrics);
+        final boolean isLargeTablet = (screenMetrics == Constants.SCREEN_METRICS_LARGE_TABLET);
+        final boolean isSmallTablet = (screenMetrics == Constants.SCREEN_METRICS_SMALL_TABLET);
+        final int densityDpi = res.getDisplayMetrics().densityDpi;
+        final boolean hasLowDensityScreen = (densityDpi < DisplayMetrics.DENSITY_HIGH);
+        final boolean needsTheHack = isLargeTablet || (isSmallTablet && hasLowDensityScreen);
+        if (DEBUG_MODE) {
+            final int sw = res.getConfiguration().smallestScreenWidthDp;
+            Log.d(TAG, "needsProximateBogusDownMoveUpEventHack=" + needsTheHack
+                    + " smallestScreenWidthDp=" + sw + " densityDpi=" + densityDpi
+                    + " screenMetrics=" + screenMetrics);
+        }
+        sNeedsProximateBogusDownMoveUpEventHack = needsTheHack;
+    }
+
+    private int mAccumulatedDistanceThreshold;
+    private int mRadiusThreshold;
+
+    // Accumulated distance from actual and artificial down keys.
+    /* package */ int mAccumulatedDistanceFromDownKey;
+    private int mActualDownX;
+    private int mActualDownY;
+
+    public void setKeyboardGeometry(final int keyWidth, final int keyHeight) {
+        final float keyDiagonal = (float)Math.hypot(keyWidth, keyHeight);
+        mAccumulatedDistanceThreshold = (int)(
+                keyDiagonal * BOGUS_MOVE_ACCUMULATED_DISTANCE_THRESHOLD);
+        mRadiusThreshold = (int)(keyDiagonal * BOGUS_MOVE_RADIUS_THRESHOLD);
+    }
+
+    public void onActualDownEvent(final int x, final int y) {
+        mActualDownX = x;
+        mActualDownY = y;
+    }
+
+    public void onDownKey() {
+        mAccumulatedDistanceFromDownKey = 0;
+    }
+
+    public void onMoveKey(final int distance) {
+        mAccumulatedDistanceFromDownKey += distance;
+    }
+
+    public boolean hasTraveledLongDistance(final int x, final int y) {
+        if (!sNeedsProximateBogusDownMoveUpEventHack) {
+            return false;
+        }
+        final int dx = Math.abs(x - mActualDownX);
+        final int dy = Math.abs(y - mActualDownY);
+        // A bogus move event should be a horizontal movement. A vertical movement might be
+        // a sloppy typing and should be ignored.
+        return dx >= dy && mAccumulatedDistanceFromDownKey >= mAccumulatedDistanceThreshold;
+    }
+
+    public int getAccumulatedDistanceFromDownKey() {
+        return mAccumulatedDistanceFromDownKey;
+    }
+
+    public int getDistanceFromDownEvent(final int x, final int y) {
+        return getDistance(x, y, mActualDownX, mActualDownY);
+    }
+
+    private static int getDistance(final int x1, final int y1, final int x2, final int y2) {
+        return (int)Math.hypot(x1 - x2, y1 - y2);
+    }
+
+    public boolean isCloseToActualDownEvent(final int x, final int y) {
+        return sNeedsProximateBogusDownMoveUpEventHack
+                && getDistanceFromDownEvent(x, y) < mRadiusThreshold;
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java b/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java
index 4ccecb2..dce7fc5 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/CodesArrayParser.java
@@ -17,6 +17,7 @@
 package com.android.inputmethod.keyboard.internal;
 
 import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.StringUtils;
 
 import android.text.TextUtils;
 
@@ -29,15 +30,16 @@
  * marker. An output text may consist of multiple code points separated by comma.
  * The format of the codesArray element should be:
  * <pre>
- *   codePointInHex[,codePoint2InHex]*(|outputTextCodePointInHex[,outputTextCodePoint2InHex]*)?
+ *   label1[,label2]*(|outputText1[,outputText2]*(|minSupportSdkVersion)?)?
  * </pre>
  */
 // TODO: Write unit tests for this class.
 public final class CodesArrayParser {
     // Constants for parsing.
-    private static final char COMMA = ',';
-    private static final String VERTICAL_BAR_STRING = "\\|";
-    private static final String COMMA_STRING = ",";
+    private static final char COMMA = Constants.CODE_COMMA;
+    private static final String COMMA_REGEX = StringUtils.newSingleCodePointString(COMMA);
+    private static final String VERTICAL_BAR_REGEX = // "\\|"
+            new String(new char[] { Constants.CODE_BACKSLASH, Constants.CODE_VERTICAL_BAR });
     private static final int BASE_HEX = 16;
 
     private CodesArrayParser() {
@@ -45,7 +47,7 @@
     }
 
     private static String getLabelSpec(final String codesArraySpec) {
-        final String[] strs = codesArraySpec.split(VERTICAL_BAR_STRING, -1);
+        final String[] strs = codesArraySpec.split(VERTICAL_BAR_REGEX, -1);
         if (strs.length <= 1) {
             return codesArraySpec;
         }
@@ -55,7 +57,7 @@
     public static String parseLabel(final String codesArraySpec) {
         final String labelSpec = getLabelSpec(codesArraySpec);
         final StringBuilder sb = new StringBuilder();
-        for (final String codeInHex : labelSpec.split(COMMA_STRING)) {
+        for (final String codeInHex : labelSpec.split(COMMA_REGEX)) {
             final int codePoint = Integer.parseInt(codeInHex, BASE_HEX);
             sb.appendCodePoint(codePoint);
         }
@@ -63,17 +65,15 @@
     }
 
     private static String getCodeSpec(final String codesArraySpec) {
-        final String[] strs = codesArraySpec.split(VERTICAL_BAR_STRING, -1);
+        final String[] strs = codesArraySpec.split(VERTICAL_BAR_REGEX, -1);
         if (strs.length <= 1) {
             return codesArraySpec;
         }
         return TextUtils.isEmpty(strs[1]) ? strs[0] : strs[1];
     }
 
-    // codesArraySpec consists of:
-    // <label>|<code0>,<code1>,...|<minSupportSdkVersion>
     public static int getMinSupportSdkVersion(final String codesArraySpec) {
-        final String[] strs = codesArraySpec.split(VERTICAL_BAR_STRING, -1);
+        final String[] strs = codesArraySpec.split(VERTICAL_BAR_REGEX, -1);
         if (strs.length <= 2) {
             return 0;
         }
@@ -98,7 +98,7 @@
             return null;
         }
         final StringBuilder sb = new StringBuilder();
-        for (final String codeInHex : codeSpec.split(COMMA_STRING)) {
+        for (final String codeInHex : codeSpec.split(COMMA_REGEX)) {
             final int codePoint = Integer.parseInt(codeInHex, BASE_HEX);
             sb.appendCodePoint(codePoint);
         }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/DrawingHandler.java b/java/src/com/android/inputmethod/keyboard/internal/DrawingHandler.java
new file mode 100644
index 0000000..df82bec
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/DrawingHandler.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.os.Message;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.internal.DrawingHandler.Callbacks;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
+
+// TODO: Separate this class into KeyPreviewHandler and BatchInputPreviewHandler or so.
+public class DrawingHandler extends LeakGuardHandlerWrapper<Callbacks> {
+    public interface Callbacks {
+        public void dismissKeyPreviewWithoutDelay(Key key);
+        public void dismissAllKeyPreviews();
+        public void showGestureFloatingPreviewText(SuggestedWords suggestedWords);
+    }
+
+    private static final int MSG_DISMISS_KEY_PREVIEW = 0;
+    private static final int MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 1;
+
+    public DrawingHandler(final Callbacks ownerInstance) {
+        super(ownerInstance);
+    }
+
+    @Override
+    public void handleMessage(final Message msg) {
+        final Callbacks callbacks = getOwnerInstance();
+        if (callbacks == null) {
+            return;
+        }
+        switch (msg.what) {
+        case MSG_DISMISS_KEY_PREVIEW:
+            callbacks.dismissKeyPreviewWithoutDelay((Key)msg.obj);
+            break;
+        case MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT:
+            callbacks.showGestureFloatingPreviewText(SuggestedWords.EMPTY);
+            break;
+        }
+    }
+
+    public void dismissKeyPreview(final long delay, final Key key) {
+        sendMessageDelayed(obtainMessage(MSG_DISMISS_KEY_PREVIEW, key), delay);
+    }
+
+    private void cancelAllDismissKeyPreviews() {
+        removeMessages(MSG_DISMISS_KEY_PREVIEW);
+        final Callbacks callbacks = getOwnerInstance();
+        if (callbacks == null) {
+            return;
+        }
+        callbacks.dismissAllKeyPreviews();
+    }
+
+    public void dismissGestureFloatingPreviewText(final long delay) {
+        sendMessageDelayed(obtainMessage(MSG_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT), delay);
+    }
+
+    public void cancelAllMessages() {
+        cancelAllDismissKeyPreviews();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/DrawingPreviewPlacerView.java b/java/src/com/android/inputmethod/keyboard/internal/DrawingPreviewPlacerView.java
new file mode 100644
index 0000000..a5d47ad
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/DrawingPreviewPlacerView.java
@@ -0,0 +1,88 @@
+/*
+ * 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.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.util.AttributeSet;
+import android.widget.RelativeLayout;
+
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+
+import java.util.ArrayList;
+
+public final class DrawingPreviewPlacerView extends RelativeLayout {
+    private final int[] mKeyboardViewOrigin = CoordinateUtils.newInstance();
+
+    private final ArrayList<AbstractDrawingPreview> mPreviews = new ArrayList<>();
+
+    public DrawingPreviewPlacerView(final Context context, final AttributeSet attrs) {
+        super(context, attrs);
+        setWillNotDraw(false);
+    }
+
+    public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) {
+        if (!enabled) return;
+        final Paint layerPaint = new Paint();
+        layerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
+        setLayerType(LAYER_TYPE_HARDWARE, layerPaint);
+    }
+
+    public void addPreview(final AbstractDrawingPreview preview) {
+        if (mPreviews.indexOf(preview) < 0) {
+            mPreviews.add(preview);
+        }
+    }
+
+    public void setKeyboardViewGeometry(final int[] originCoords, final int width,
+            final int height) {
+        CoordinateUtils.copy(mKeyboardViewOrigin, originCoords);
+        final int count = mPreviews.size();
+        for (int i = 0; i < count; i++) {
+            mPreviews.get(i).setKeyboardViewGeometry(originCoords, width, height);
+        }
+    }
+
+    public void deallocateMemory() {
+        final int count = mPreviews.size();
+        for (int i = 0; i < count; i++) {
+            mPreviews.get(i).onDeallocateMemory();
+        }
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        deallocateMemory();
+    }
+
+    @Override
+    public void onDraw(final Canvas canvas) {
+        super.onDraw(canvas);
+        final int originX = CoordinateUtils.x(mKeyboardViewOrigin);
+        final int originY = CoordinateUtils.y(mKeyboardViewOrigin);
+        canvas.translate(originX, originY);
+        final int count = mPreviews.size();
+        for (int i = 0; i < count; i++) {
+            mPreviews.get(i).drawPreview(canvas);
+        }
+        canvas.translate(-originX, -originY);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java b/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java
deleted file mode 100644
index 3133e54..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.content.SharedPreferences;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.inputmethod.keyboard.EmojiPalettesView;
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.latin.settings.Settings;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.StringUtils;
-
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * This is a Keyboard class where you can add keys dynamically shown in a grid layout
- */
-public class DynamicGridKeyboard extends Keyboard {
-    private static final String TAG = DynamicGridKeyboard.class.getSimpleName();
-    private static final int TEMPLATE_KEY_CODE_0 = 0x30;
-    private static final int TEMPLATE_KEY_CODE_1 = 0x31;
-    private final Object mLock = new Object();
-
-    private final SharedPreferences mPrefs;
-    private final int mHorizontalStep;
-    private final int mVerticalStep;
-    private final int mColumnsNum;
-    private final int mMaxKeyCount;
-    private final boolean mIsRecents;
-    private final ArrayDeque<GridKey> mGridKeys = CollectionUtils.newArrayDeque();
-    private final ArrayDeque<Key> mPendingKeys = CollectionUtils.newArrayDeque();
-
-    private Key[] mCachedGridKeys;
-
-    public DynamicGridKeyboard(final SharedPreferences prefs, final Keyboard templateKeyboard,
-            final int maxKeyCount, final int categoryId, final int categoryPageId) {
-        super(templateKeyboard);
-        final Key key0 = getTemplateKey(TEMPLATE_KEY_CODE_0);
-        final Key key1 = getTemplateKey(TEMPLATE_KEY_CODE_1);
-        mHorizontalStep = Math.abs(key1.getX() - key0.getX());
-        mVerticalStep = key0.getHeight() + mVerticalGap;
-        mColumnsNum = mBaseWidth / mHorizontalStep;
-        mMaxKeyCount = maxKeyCount;
-        mIsRecents = categoryId == EmojiPalettesView.CATEGORY_ID_RECENTS;
-        mPrefs = prefs;
-    }
-
-    private Key getTemplateKey(final int code) {
-        for (final Key key : super.getKeys()) {
-            if (key.getCode() == code) {
-                return key;
-            }
-        }
-        throw new RuntimeException("Can't find template key: code=" + code);
-    }
-
-    public void addPendingKey(final Key usedKey) {
-        synchronized (mLock) {
-            mPendingKeys.addLast(usedKey);
-        }
-    }
-
-    public void flushPendingRecentKeys() {
-        synchronized (mLock) {
-            while (!mPendingKeys.isEmpty()) {
-                addKey(mPendingKeys.pollFirst(), true);
-            }
-            saveRecentKeys();
-        }
-    }
-
-    public void addKeyFirst(final Key usedKey) {
-        addKey(usedKey, true);
-        if (mIsRecents) {
-            saveRecentKeys();
-        }
-    }
-
-    public void addKeyLast(final Key usedKey) {
-        addKey(usedKey, false);
-    }
-
-    private void addKey(final Key usedKey, final boolean addFirst) {
-        if (usedKey == null) {
-            return;
-        }
-        synchronized (mLock) {
-            mCachedGridKeys = null;
-            final GridKey key = new GridKey(usedKey);
-            while (mGridKeys.remove(key)) {
-                // Remove duplicate keys.
-            }
-            if (addFirst) {
-                mGridKeys.addFirst(key);
-            } else {
-                mGridKeys.addLast(key);
-            }
-            while (mGridKeys.size() > mMaxKeyCount) {
-                mGridKeys.removeLast();
-            }
-            int index = 0;
-            for (final GridKey gridKey : mGridKeys) {
-                final int keyX0 = getKeyX0(index);
-                final int keyY0 = getKeyY0(index);
-                final int keyX1 = getKeyX1(index);
-                final int keyY1 = getKeyY1(index);
-                gridKey.updateCorrdinates(keyX0, keyY0, keyX1, keyY1);
-                index++;
-            }
-        }
-    }
-
-    private void saveRecentKeys() {
-        final ArrayList<Object> keys = CollectionUtils.newArrayList();
-        for (final Key key : mGridKeys) {
-            if (key.getOutputText() != null) {
-                keys.add(key.getOutputText());
-            } else {
-                keys.add(key.getCode());
-            }
-        }
-        final String jsonStr = StringUtils.listToJsonStr(keys);
-        Settings.writeEmojiRecentKeys(mPrefs, jsonStr);
-    }
-
-    private static Key getKey(final Collection<DynamicGridKeyboard> keyboards, final Object o) {
-        for (final DynamicGridKeyboard kbd : keyboards) {
-            if (o instanceof Integer) {
-                final int code = (Integer) o;
-                final Key key = kbd.getKey(code);
-                if (key != null) {
-                    return key;
-                }
-            } else if (o instanceof String) {
-                final String outputText = (String) o;
-                final Key key = kbd.getKeyFromOutputText(outputText);
-                if (key != null) {
-                    return key;
-                }
-            } else {
-                Log.w(TAG, "Invalid object: " + o);
-            }
-        }
-        return null;
-    }
-
-    public void loadRecentKeys(Collection<DynamicGridKeyboard> keyboards) {
-        final String str = Settings.readEmojiRecentKeys(mPrefs);
-        final List<Object> keys = StringUtils.jsonStrToList(str);
-        for (final Object o : keys) {
-            addKeyLast(getKey(keyboards, o));
-        }
-    }
-
-    private int getKeyX0(final int index) {
-        final int column = index % mColumnsNum;
-        return column * mHorizontalStep;
-    }
-
-    private int getKeyX1(final int index) {
-        final int column = index % mColumnsNum + 1;
-        return column * mHorizontalStep;
-    }
-
-    private int getKeyY0(final int index) {
-        final int row = index / mColumnsNum;
-        return row * mVerticalStep + mVerticalGap / 2;
-    }
-
-    private int getKeyY1(final int index) {
-        final int row = index / mColumnsNum + 1;
-        return row * mVerticalStep + mVerticalGap / 2;
-    }
-
-    @Override
-    public Key[] getKeys() {
-        synchronized (mLock) {
-            if (mCachedGridKeys != null) {
-                return mCachedGridKeys;
-            }
-            mCachedGridKeys = mGridKeys.toArray(new Key[mGridKeys.size()]);
-            return mCachedGridKeys;
-        }
-    }
-
-    @Override
-    public Key[] getNearestKeys(final int x, final int y) {
-        // TODO: Calculate the nearest key index in mGridKeys from x and y.
-        return getKeys();
-    }
-
-    static final class GridKey extends Key {
-        private int mCurrentX;
-        private int mCurrentY;
-
-        public GridKey(final Key originalKey) {
-            super(originalKey);
-        }
-
-        public void updateCorrdinates(final int x0, final int y0, final int x1, final int y1) {
-            mCurrentX = x0;
-            mCurrentY = y0;
-            getHitBox().set(x0, y0, x1, y1);
-        }
-
-        @Override
-        public int getX() {
-            return mCurrentX;
-        }
-
-        @Override
-        public int getY() {
-            return mCurrentY;
-        }
-
-        @Override
-        public boolean equals(final Object o) {
-            if (!(o instanceof Key)) return false;
-            final Key key = (Key)o;
-            if (getCode() != key.getCode()) return false;
-            if (!TextUtils.equals(getLabel(), key.getLabel())) return false;
-            return TextUtils.equals(getOutputText(), key.getOutputText());
-        }
-
-        @Override
-        public String toString() {
-            return "GridKey: " + super.toString();
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureEnabler.java b/java/src/com/android/inputmethod/keyboard/internal/GestureEnabler.java
new file mode 100644
index 0000000..7d14ae9
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureEnabler.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+
+public final class GestureEnabler {
+    /** True if we should handle gesture events. */
+    private boolean mShouldHandleGesture;
+    private boolean mMainDictionaryAvailable;
+    private boolean mGestureHandlingEnabledByInputField;
+    private boolean mGestureHandlingEnabledByUser;
+
+    private void updateGestureHandlingMode() {
+        mShouldHandleGesture = mMainDictionaryAvailable
+                && mGestureHandlingEnabledByInputField
+                && mGestureHandlingEnabledByUser
+                && !AccessibilityUtils.getInstance().isTouchExplorationEnabled();
+    }
+
+    // Note that this method is called from a non-UI thread.
+    public void setMainDictionaryAvailability(final boolean mainDictionaryAvailable) {
+        mMainDictionaryAvailable = mainDictionaryAvailable;
+        updateGestureHandlingMode();
+    }
+
+    public void setGestureHandlingEnabledByUser(final boolean gestureHandlingEnabledByUser) {
+        mGestureHandlingEnabledByUser = gestureHandlingEnabledByUser;
+        updateGestureHandlingMode();
+    }
+
+    public void setPasswordMode(final boolean passwordMode) {
+        mGestureHandlingEnabledByInputField = !passwordMode;
+        updateGestureHandlingMode();
+    }
+
+    public boolean shouldHandleGesture() {
+        return mShouldHandleGesture;
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java b/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java
deleted file mode 100644
index c6dd9e1..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingPreviewText.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Paint.Align;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.text.TextUtils;
-import android.view.View;
-
-import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.utils.CoordinateUtils;
-
-/**
- * The class for single gesture preview text. The class for multiple gesture preview text will be
- * derived from it.
- *
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextSize
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextColor
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextOffset
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewColor
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewHorizontalPadding
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewVerticalPadding
- * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewRoundRadius
- */
-public class GestureFloatingPreviewText extends AbstractDrawingPreview {
-    protected static final class GesturePreviewTextParams {
-        public final int mGesturePreviewTextOffset;
-        public final int mGesturePreviewTextHeight;
-        public final float mGesturePreviewHorizontalPadding;
-        public final float mGesturePreviewVerticalPadding;
-        public final float mGesturePreviewRoundRadius;
-
-        private final int mGesturePreviewTextSize;
-        private final int mGesturePreviewTextColor;
-        private final int mGesturePreviewColor;
-        private final Paint mPaint = new Paint();
-
-        private static final char[] TEXT_HEIGHT_REFERENCE_CHAR = { 'M' };
-
-        public GesturePreviewTextParams(final TypedArray mainKeyboardViewAttr) {
-            mGesturePreviewTextSize = mainKeyboardViewAttr.getDimensionPixelSize(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewTextSize, 0);
-            mGesturePreviewTextColor = mainKeyboardViewAttr.getColor(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewTextColor, 0);
-            mGesturePreviewTextOffset = mainKeyboardViewAttr.getDimensionPixelOffset(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewTextOffset, 0);
-            mGesturePreviewColor = mainKeyboardViewAttr.getColor(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewColor, 0);
-            mGesturePreviewHorizontalPadding = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewHorizontalPadding, 0.0f);
-            mGesturePreviewVerticalPadding = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewVerticalPadding, 0.0f);
-            mGesturePreviewRoundRadius = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gestureFloatingPreviewRoundRadius, 0.0f);
-
-            final Paint textPaint = getTextPaint();
-            final Rect textRect = new Rect();
-            textPaint.getTextBounds(TEXT_HEIGHT_REFERENCE_CHAR, 0, 1, textRect);
-            mGesturePreviewTextHeight = textRect.height();
-        }
-
-        public Paint getTextPaint() {
-            mPaint.setAntiAlias(true);
-            mPaint.setTextAlign(Align.CENTER);
-            mPaint.setTextSize(mGesturePreviewTextSize);
-            mPaint.setColor(mGesturePreviewTextColor);
-            return mPaint;
-        }
-
-        public Paint getBackgroundPaint() {
-            mPaint.setColor(mGesturePreviewColor);
-            return mPaint;
-        }
-    }
-
-    private final GesturePreviewTextParams mParams;
-    private final RectF mGesturePreviewRectangle = new RectF();
-    private int mPreviewTextX;
-    private int mPreviewTextY;
-    private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
-    private final int[] mLastPointerCoords = CoordinateUtils.newInstance();
-
-    public GestureFloatingPreviewText(final View drawingView, final TypedArray typedArray) {
-        super(drawingView);
-        mParams = new GesturePreviewTextParams(typedArray);
-    }
-
-    public void setSuggetedWords(final SuggestedWords suggestedWords) {
-        if (!isPreviewEnabled()) {
-            return;
-        }
-        mSuggestedWords = suggestedWords;
-        updatePreviewPosition();
-    }
-
-    @Override
-    public void setPreviewPosition(final PointerTracker tracker) {
-        if (!isPreviewEnabled()) {
-            return;
-        }
-        tracker.getLastCoordinates(mLastPointerCoords);
-        updatePreviewPosition();
-    }
-
-    /**
-     * Draws gesture preview text
-     * @param canvas The canvas where preview text is drawn.
-     */
-    @Override
-    public void drawPreview(final Canvas canvas) {
-        if (!isPreviewEnabled() || mSuggestedWords.isEmpty()
-                || TextUtils.isEmpty(mSuggestedWords.getWord(0))) {
-            return;
-        }
-        final float round = mParams.mGesturePreviewRoundRadius;
-        canvas.drawRoundRect(
-                mGesturePreviewRectangle, round, round, mParams.getBackgroundPaint());
-        final String text = mSuggestedWords.getWord(0);
-        canvas.drawText(text, mPreviewTextX, mPreviewTextY, mParams.getTextPaint());
-    }
-
-    /**
-     * Updates gesture preview text position based on mLastPointerCoords.
-     */
-    protected void updatePreviewPosition() {
-        if (mSuggestedWords.isEmpty() || TextUtils.isEmpty(mSuggestedWords.getWord(0))) {
-            getDrawingView().invalidate();
-            return;
-        }
-        final String text = mSuggestedWords.getWord(0);
-
-        final RectF rectangle = mGesturePreviewRectangle;
-
-        final int textHeight = mParams.mGesturePreviewTextHeight;
-        final float textWidth = mParams.getTextPaint().measureText(text);
-        final float hPad = mParams.mGesturePreviewHorizontalPadding;
-        final float vPad = mParams.mGesturePreviewVerticalPadding;
-        final float rectWidth = textWidth + hPad * 2.0f;
-        final float rectHeight = textHeight + vPad * 2.0f;
-
-        final int displayWidth = getDrawingView().getResources().getDisplayMetrics().widthPixels;
-        final float rectX = Math.min(
-                Math.max(CoordinateUtils.x(mLastPointerCoords) - rectWidth / 2.0f, 0.0f),
-                displayWidth - rectWidth);
-        final float rectY = CoordinateUtils.y(mLastPointerCoords)
-                - mParams.mGesturePreviewTextOffset - rectHeight;
-        rectangle.set(rectX, rectY, rectX + rectWidth, rectY + rectHeight);
-
-        mPreviewTextX = (int)(rectX + hPad + textWidth / 2.0f);
-        mPreviewTextY = (int)(rectY + vPad) + textHeight;
-        // TODO: Should narrow the invalidate region.
-        getDrawingView().invalidate();
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java b/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java
new file mode 100644
index 0000000..fd84856
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureFloatingTextDrawingPreview.java
@@ -0,0 +1,178 @@
+/*
+ * 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.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Paint.Align;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.text.TextUtils;
+
+import com.android.inputmethod.keyboard.PointerTracker;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+
+/**
+ * The class for single gesture preview text. The class for multiple gesture preview text will be
+ * derived from it.
+ *
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextSize
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextColor
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewTextOffset
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewColor
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewHorizontalPadding
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewVerticalPadding
+ * @attr ref R.styleable#KeyboardView_gestureFloatingPreviewRoundRadius
+ */
+public class GestureFloatingTextDrawingPreview extends AbstractDrawingPreview {
+    protected static final class GesturePreviewTextParams {
+        public final int mGesturePreviewTextOffset;
+        public final int mGesturePreviewTextHeight;
+        public final float mGesturePreviewHorizontalPadding;
+        public final float mGesturePreviewVerticalPadding;
+        public final float mGesturePreviewRoundRadius;
+        public final int mDisplayWidth;
+
+        private final int mGesturePreviewTextSize;
+        private final int mGesturePreviewTextColor;
+        private final int mGesturePreviewColor;
+        private final Paint mPaint = new Paint();
+
+        private static final char[] TEXT_HEIGHT_REFERENCE_CHAR = { 'M' };
+
+        public GesturePreviewTextParams(final TypedArray mainKeyboardViewAttr) {
+            mGesturePreviewTextSize = mainKeyboardViewAttr.getDimensionPixelSize(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewTextSize, 0);
+            mGesturePreviewTextColor = mainKeyboardViewAttr.getColor(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewTextColor, 0);
+            mGesturePreviewTextOffset = mainKeyboardViewAttr.getDimensionPixelOffset(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewTextOffset, 0);
+            mGesturePreviewColor = mainKeyboardViewAttr.getColor(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewColor, 0);
+            mGesturePreviewHorizontalPadding = mainKeyboardViewAttr.getDimension(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewHorizontalPadding, 0.0f);
+            mGesturePreviewVerticalPadding = mainKeyboardViewAttr.getDimension(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewVerticalPadding, 0.0f);
+            mGesturePreviewRoundRadius = mainKeyboardViewAttr.getDimension(
+                    R.styleable.MainKeyboardView_gestureFloatingPreviewRoundRadius, 0.0f);
+            mDisplayWidth = mainKeyboardViewAttr.getResources().getDisplayMetrics().widthPixels;
+
+            final Paint textPaint = getTextPaint();
+            final Rect textRect = new Rect();
+            textPaint.getTextBounds(TEXT_HEIGHT_REFERENCE_CHAR, 0, 1, textRect);
+            mGesturePreviewTextHeight = textRect.height();
+        }
+
+        public Paint getTextPaint() {
+            mPaint.setAntiAlias(true);
+            mPaint.setTextAlign(Align.CENTER);
+            mPaint.setTextSize(mGesturePreviewTextSize);
+            mPaint.setColor(mGesturePreviewTextColor);
+            return mPaint;
+        }
+
+        public Paint getBackgroundPaint() {
+            mPaint.setColor(mGesturePreviewColor);
+            return mPaint;
+        }
+    }
+
+    private final GesturePreviewTextParams mParams;
+    private final RectF mGesturePreviewRectangle = new RectF();
+    private int mPreviewTextX;
+    private int mPreviewTextY;
+    private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
+    private final int[] mLastPointerCoords = CoordinateUtils.newInstance();
+
+    public GestureFloatingTextDrawingPreview(final TypedArray mainKeyboardViewAttr) {
+        mParams = new GesturePreviewTextParams(mainKeyboardViewAttr);
+    }
+
+    @Override
+    public void onDeallocateMemory() {
+        // Nothing to do here.
+    }
+
+    public void setSuggetedWords(final SuggestedWords suggestedWords) {
+        if (!isPreviewEnabled()) {
+            return;
+        }
+        mSuggestedWords = suggestedWords;
+        updatePreviewPosition();
+    }
+
+    @Override
+    public void setPreviewPosition(final PointerTracker tracker) {
+        if (!isPreviewEnabled()) {
+            return;
+        }
+        tracker.getLastCoordinates(mLastPointerCoords);
+        updatePreviewPosition();
+    }
+
+    /**
+     * Draws gesture preview text
+     * @param canvas The canvas where preview text is drawn.
+     */
+    @Override
+    public void drawPreview(final Canvas canvas) {
+        if (!isPreviewEnabled() || mSuggestedWords.isEmpty()
+                || TextUtils.isEmpty(mSuggestedWords.getWord(0))) {
+            return;
+        }
+        final float round = mParams.mGesturePreviewRoundRadius;
+        canvas.drawRoundRect(
+                mGesturePreviewRectangle, round, round, mParams.getBackgroundPaint());
+        final String text = mSuggestedWords.getWord(0);
+        canvas.drawText(text, mPreviewTextX, mPreviewTextY, mParams.getTextPaint());
+    }
+
+    /**
+     * Updates gesture preview text position based on mLastPointerCoords.
+     */
+    protected void updatePreviewPosition() {
+        if (mSuggestedWords.isEmpty() || TextUtils.isEmpty(mSuggestedWords.getWord(0))) {
+            invalidateDrawingView();
+            return;
+        }
+        final String text = mSuggestedWords.getWord(0);
+
+        final RectF rectangle = mGesturePreviewRectangle;
+
+        final int textHeight = mParams.mGesturePreviewTextHeight;
+        final float textWidth = mParams.getTextPaint().measureText(text);
+        final float hPad = mParams.mGesturePreviewHorizontalPadding;
+        final float vPad = mParams.mGesturePreviewVerticalPadding;
+        final float rectWidth = textWidth + hPad * 2.0f;
+        final float rectHeight = textHeight + vPad * 2.0f;
+
+        final float rectX = Math.min(
+                Math.max(CoordinateUtils.x(mLastPointerCoords) - rectWidth / 2.0f, 0.0f),
+                mParams.mDisplayWidth - rectWidth);
+        final float rectY = CoordinateUtils.y(mLastPointerCoords)
+                - mParams.mGesturePreviewTextOffset - rectHeight;
+        rectangle.set(rectX, rectY, rectX + rectWidth, rectY + rectHeight);
+
+        mPreviewTextX = (int)(rectX + hPad + textWidth / 2.0f);
+        mPreviewTextY = (int)(rectY + vPad) + textHeight;
+        // TODO: Should narrow the invalidate region.
+        invalidateDrawingView();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
deleted file mode 100644
index f29ade8..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStroke.java
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * 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.res.TypedArray;
-import android.util.Log;
-
-import com.android.inputmethod.latin.InputPointers;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.ResizableIntArray;
-import com.android.inputmethod.latin.utils.ResourceUtils;
-
-public class GestureStroke {
-    private static final String TAG = GestureStroke.class.getSimpleName();
-    private static final boolean DEBUG = false;
-    private static final boolean DEBUG_SPEED = false;
-
-    // The height of extra area above the keyboard to draw gesture trails.
-    // Proportional to the keyboard height.
-    public static final float EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO = 0.25f;
-
-    public static final int DEFAULT_CAPACITY = 128;
-
-    private final int mPointerId;
-    private final ResizableIntArray mEventTimes = new ResizableIntArray(DEFAULT_CAPACITY);
-    private final ResizableIntArray mXCoordinates = new ResizableIntArray(DEFAULT_CAPACITY);
-    private final ResizableIntArray mYCoordinates = new ResizableIntArray(DEFAULT_CAPACITY);
-
-    private final GestureStrokeParams mParams;
-
-    private int mKeyWidth; // pixel
-    private int mMinYCoordinate; // pixel
-    private int mMaxYCoordinate; // pixel
-    // Static threshold for starting gesture detection
-    private int mDetectFastMoveSpeedThreshold; // pixel /sec
-    private int mDetectFastMoveTime;
-    private int mDetectFastMoveX;
-    private int mDetectFastMoveY;
-    // Dynamic threshold for gesture after fast typing
-    private boolean mAfterFastTyping;
-    private int mGestureDynamicDistanceThresholdFrom; // pixel
-    private int mGestureDynamicDistanceThresholdTo; // pixel
-    // Variables for gesture sampling
-    private int mGestureSamplingMinimumDistance; // pixel
-    private long mLastMajorEventTime;
-    private int mLastMajorEventX;
-    private int mLastMajorEventY;
-    // Variables for gesture recognition
-    private int mGestureRecognitionSpeedThreshold; // pixel / sec
-    private int mIncrementalRecognitionSize;
-    private int mLastIncrementalBatchSize;
-
-    public static final class GestureStrokeParams {
-        // Static threshold for gesture after fast typing
-        public final int mStaticTimeThresholdAfterFastTyping; // msec
-        // Static threshold for starting gesture detection
-        public final float mDetectFastMoveSpeedThreshold; // keyWidth/sec
-        // Dynamic threshold for gesture after fast typing
-        public final int mDynamicThresholdDecayDuration; // msec
-        // Time based threshold values
-        public final int mDynamicTimeThresholdFrom; // msec
-        public final int mDynamicTimeThresholdTo; // msec
-        // Distance based threshold values
-        public final float mDynamicDistanceThresholdFrom; // keyWidth
-        public final float mDynamicDistanceThresholdTo; // keyWidth
-        // Parameters for gesture sampling
-        public final float mSamplingMinimumDistance; // keyWidth
-        // Parameters for gesture recognition
-        public final int mRecognitionMinimumTime; // msec
-        public final float mRecognitionSpeedThreshold; // keyWidth/sec
-
-        // Default GestureStroke parameters.
-        public static final GestureStrokeParams DEFAULT = new GestureStrokeParams();
-
-        private GestureStrokeParams() {
-            // These parameter values are default and intended for testing.
-            mStaticTimeThresholdAfterFastTyping = 350; // msec
-            mDetectFastMoveSpeedThreshold = 1.5f; // keyWidth / sec
-            mDynamicThresholdDecayDuration = 450; // msec
-            mDynamicTimeThresholdFrom = 300; // msec
-            mDynamicTimeThresholdTo = 20; // msec
-            mDynamicDistanceThresholdFrom = 6.0f; // keyWidth
-            mDynamicDistanceThresholdTo = 0.35f; // keyWidth
-            // The following parameters' change will affect the result of regression test.
-            mSamplingMinimumDistance = 1.0f / 6.0f; // keyWidth
-            mRecognitionMinimumTime = 100; // msec
-            mRecognitionSpeedThreshold = 5.5f; // keyWidth / sec
-        }
-
-        public GestureStrokeParams(final TypedArray mainKeyboardViewAttr) {
-            mStaticTimeThresholdAfterFastTyping = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureStaticTimeThresholdAfterFastTyping,
-                    DEFAULT.mStaticTimeThresholdAfterFastTyping);
-            mDetectFastMoveSpeedThreshold = ResourceUtils.getFraction(mainKeyboardViewAttr,
-                    R.styleable.MainKeyboardView_gestureDetectFastMoveSpeedThreshold,
-                    DEFAULT.mDetectFastMoveSpeedThreshold);
-            mDynamicThresholdDecayDuration = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureDynamicThresholdDecayDuration,
-                    DEFAULT.mDynamicThresholdDecayDuration);
-            mDynamicTimeThresholdFrom = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureDynamicTimeThresholdFrom,
-                    DEFAULT.mDynamicTimeThresholdFrom);
-            mDynamicTimeThresholdTo = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureDynamicTimeThresholdTo,
-                    DEFAULT.mDynamicTimeThresholdTo);
-            mDynamicDistanceThresholdFrom = ResourceUtils.getFraction(mainKeyboardViewAttr,
-                    R.styleable.MainKeyboardView_gestureDynamicDistanceThresholdFrom,
-                    DEFAULT.mDynamicDistanceThresholdFrom);
-            mDynamicDistanceThresholdTo = ResourceUtils.getFraction(mainKeyboardViewAttr,
-                    R.styleable.MainKeyboardView_gestureDynamicDistanceThresholdTo,
-                    DEFAULT.mDynamicDistanceThresholdTo);
-            mSamplingMinimumDistance = ResourceUtils.getFraction(mainKeyboardViewAttr,
-                    R.styleable.MainKeyboardView_gestureSamplingMinimumDistance,
-                    DEFAULT.mSamplingMinimumDistance);
-            mRecognitionMinimumTime = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureRecognitionMinimumTime,
-                    DEFAULT.mRecognitionMinimumTime);
-            mRecognitionSpeedThreshold = ResourceUtils.getFraction(mainKeyboardViewAttr,
-                    R.styleable.MainKeyboardView_gestureRecognitionSpeedThreshold,
-                    DEFAULT.mRecognitionSpeedThreshold);
-        }
-    }
-
-    private static final int MSEC_PER_SEC = 1000;
-
-    public GestureStroke(final int pointerId, final GestureStrokeParams params) {
-        mPointerId = pointerId;
-        mParams = params;
-    }
-
-    public void setKeyboardGeometry(final int keyWidth, final int keyboardHeight) {
-        mKeyWidth = keyWidth;
-        mMinYCoordinate = -(int)(keyboardHeight * EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
-        mMaxYCoordinate = keyboardHeight;
-        // TODO: Find an appropriate base metric for these length. Maybe diagonal length of the key?
-        mDetectFastMoveSpeedThreshold = (int)(keyWidth * mParams.mDetectFastMoveSpeedThreshold);
-        mGestureDynamicDistanceThresholdFrom =
-                (int)(keyWidth * mParams.mDynamicDistanceThresholdFrom);
-        mGestureDynamicDistanceThresholdTo = (int)(keyWidth * mParams.mDynamicDistanceThresholdTo);
-        mGestureSamplingMinimumDistance = (int)(keyWidth * mParams.mSamplingMinimumDistance);
-        mGestureRecognitionSpeedThreshold = (int)(keyWidth * mParams.mRecognitionSpeedThreshold);
-        if (DEBUG) {
-            Log.d(TAG, String.format(
-                    "[%d] setKeyboardGeometry: keyWidth=%3d tT=%3d >> %3d tD=%3d >> %3d",
-                    mPointerId, keyWidth,
-                    mParams.mDynamicTimeThresholdFrom,
-                    mParams.mDynamicTimeThresholdTo,
-                    mGestureDynamicDistanceThresholdFrom,
-                    mGestureDynamicDistanceThresholdTo));
-        }
-    }
-
-    public int getLength() {
-        return mEventTimes.getLength();
-    }
-
-    public void onDownEvent(final int x, final int y, final long downTime,
-            final long gestureFirstDownTime, final long lastTypingTime) {
-        reset();
-        final long elapsedTimeAfterTyping = downTime - lastTypingTime;
-        if (elapsedTimeAfterTyping < mParams.mStaticTimeThresholdAfterFastTyping) {
-            mAfterFastTyping = true;
-        }
-        if (DEBUG) {
-            Log.d(TAG, String.format("[%d] onDownEvent: dT=%3d%s", mPointerId,
-                    elapsedTimeAfterTyping, mAfterFastTyping ? " afterFastTyping" : ""));
-        }
-        final int elapsedTimeFromFirstDown = (int)(downTime - gestureFirstDownTime);
-        addPointOnKeyboard(x, y, elapsedTimeFromFirstDown, true /* isMajorEvent */);
-    }
-
-    private int getGestureDynamicDistanceThreshold(final int deltaTime) {
-        if (!mAfterFastTyping || deltaTime >= mParams.mDynamicThresholdDecayDuration) {
-            return mGestureDynamicDistanceThresholdTo;
-        }
-        final int decayedThreshold =
-                (mGestureDynamicDistanceThresholdFrom - mGestureDynamicDistanceThresholdTo)
-                * deltaTime / mParams.mDynamicThresholdDecayDuration;
-        return mGestureDynamicDistanceThresholdFrom - decayedThreshold;
-    }
-
-    private int getGestureDynamicTimeThreshold(final int deltaTime) {
-        if (!mAfterFastTyping || deltaTime >= mParams.mDynamicThresholdDecayDuration) {
-            return mParams.mDynamicTimeThresholdTo;
-        }
-        final int decayedThreshold =
-                (mParams.mDynamicTimeThresholdFrom - mParams.mDynamicTimeThresholdTo)
-                * deltaTime / mParams.mDynamicThresholdDecayDuration;
-        return mParams.mDynamicTimeThresholdFrom - decayedThreshold;
-    }
-
-    public final boolean isStartOfAGesture() {
-        if (!hasDetectedFastMove()) {
-            return false;
-        }
-        final int size = getLength();
-        if (size <= 0) {
-            return false;
-        }
-        final int lastIndex = size - 1;
-        final int deltaTime = mEventTimes.get(lastIndex) - mDetectFastMoveTime;
-        if (deltaTime < 0) {
-            return false;
-        }
-        final int deltaDistance = getDistance(
-                mXCoordinates.get(lastIndex), mYCoordinates.get(lastIndex),
-                mDetectFastMoveX, mDetectFastMoveY);
-        final int distanceThreshold = getGestureDynamicDistanceThreshold(deltaTime);
-        final int timeThreshold = getGestureDynamicTimeThreshold(deltaTime);
-        final boolean isStartOfAGesture = deltaTime >= timeThreshold
-                && deltaDistance >= distanceThreshold;
-        if (DEBUG) {
-            Log.d(TAG, String.format("[%d] isStartOfAGesture: dT=%3d tT=%3d dD=%3d tD=%3d%s%s",
-                    mPointerId, deltaTime, timeThreshold,
-                    deltaDistance, distanceThreshold,
-                    mAfterFastTyping ? " afterFastTyping" : "",
-                    isStartOfAGesture ? " startOfAGesture" : ""));
-        }
-        return isStartOfAGesture;
-    }
-
-    public void duplicateLastPointWith(final int time) {
-        final int lastIndex = getLength() - 1;
-        if (lastIndex >= 0) {
-            final int x = mXCoordinates.get(lastIndex);
-            final int y = mYCoordinates.get(lastIndex);
-            if (DEBUG) {
-                Log.d(TAG, String.format("[%d] duplicateLastPointWith: %d,%d|%d", mPointerId,
-                        x, y, time));
-            }
-            // TODO: Have appendMajorPoint()
-            appendPoint(x, y, time);
-            updateIncrementalRecognitionSize(x, y, time);
-        }
-    }
-
-    protected void reset() {
-        mIncrementalRecognitionSize = 0;
-        mLastIncrementalBatchSize = 0;
-        mEventTimes.setLength(0);
-        mXCoordinates.setLength(0);
-        mYCoordinates.setLength(0);
-        mLastMajorEventTime = 0;
-        mDetectFastMoveTime = 0;
-        mAfterFastTyping = false;
-    }
-
-    private void appendPoint(final int x, final int y, final int time) {
-        final int lastIndex = getLength() - 1;
-        // The point that is created by {@link duplicateLastPointWith(int)} may have later event
-        // time than the next {@link MotionEvent}. To maintain the monotonicity of the event time,
-        // drop the successive point here.
-        if (lastIndex >= 0 && mEventTimes.get(lastIndex) > time) {
-            Log.w(TAG, String.format("[%d] drop stale event: %d,%d|%d last: %d,%d|%d", mPointerId,
-                    x, y, time, mXCoordinates.get(lastIndex), mYCoordinates.get(lastIndex),
-                    mEventTimes.get(lastIndex)));
-            return;
-        }
-        mEventTimes.add(time);
-        mXCoordinates.add(x);
-        mYCoordinates.add(y);
-    }
-
-    private void updateMajorEvent(final int x, final int y, final int time) {
-        mLastMajorEventTime = time;
-        mLastMajorEventX = x;
-        mLastMajorEventY = y;
-    }
-
-    private final boolean hasDetectedFastMove() {
-        return mDetectFastMoveTime > 0;
-    }
-
-    private int detectFastMove(final int x, final int y, final int time) {
-        final int size = getLength();
-        final int lastIndex = size - 1;
-        final int lastX = mXCoordinates.get(lastIndex);
-        final int lastY = mYCoordinates.get(lastIndex);
-        final int dist = getDistance(lastX, lastY, x, y);
-        final int msecs = time - mEventTimes.get(lastIndex);
-        if (msecs > 0) {
-            final int pixels = getDistance(lastX, lastY, x, y);
-            final int pixelsPerSec = pixels * MSEC_PER_SEC;
-            if (DEBUG_SPEED) {
-                final float speed = (float)pixelsPerSec / msecs / mKeyWidth;
-                Log.d(TAG, String.format("[%d] detectFastMove: speed=%5.2f", mPointerId, speed));
-            }
-            // Equivalent to (pixels / msecs < mStartSpeedThreshold / MSEC_PER_SEC)
-            if (!hasDetectedFastMove() && pixelsPerSec > mDetectFastMoveSpeedThreshold * msecs) {
-                if (DEBUG) {
-                    final float speed = (float)pixelsPerSec / msecs / mKeyWidth;
-                    Log.d(TAG, String.format(
-                            "[%d] detectFastMove: speed=%5.2f T=%3d points=%3d fastMove",
-                            mPointerId, speed, time, size));
-                }
-                mDetectFastMoveTime = time;
-                mDetectFastMoveX = x;
-                mDetectFastMoveY = y;
-            }
-        }
-        return dist;
-    }
-
-    /**
-     * Add a touch event as a gesture point. Returns true if the touch event is on the valid
-     * gesture area.
-     * @param x the x-coordinate of the touch event
-     * @param y the y-coordinate of the touch event
-     * @param time the elapsed time in millisecond from the first gesture down
-     * @param isMajorEvent false if this is a historical move event
-     * @return true if the touch event is on the valid gesture area
-     */
-    public boolean addPointOnKeyboard(final int x, final int y, final int time,
-            final boolean isMajorEvent) {
-        final int size = getLength();
-        if (size <= 0) {
-            // Down event
-            appendPoint(x, y, time);
-            updateMajorEvent(x, y, time);
-        } else {
-            final int distance = detectFastMove(x, y, time);
-            if (distance > mGestureSamplingMinimumDistance) {
-                appendPoint(x, y, time);
-            }
-        }
-        if (isMajorEvent) {
-            updateIncrementalRecognitionSize(x, y, time);
-            updateMajorEvent(x, y, time);
-        }
-        return y >= mMinYCoordinate && y < mMaxYCoordinate;
-    }
-
-    private void updateIncrementalRecognitionSize(final int x, final int y, final int time) {
-        final int msecs = (int)(time - mLastMajorEventTime);
-        if (msecs <= 0) {
-            return;
-        }
-        final int pixels = getDistance(mLastMajorEventX, mLastMajorEventY, x, y);
-        final int pixelsPerSec = pixels * MSEC_PER_SEC;
-        // Equivalent to (pixels / msecs < mGestureRecognitionThreshold / MSEC_PER_SEC)
-        if (pixelsPerSec < mGestureRecognitionSpeedThreshold * msecs) {
-            mIncrementalRecognitionSize = getLength();
-        }
-    }
-
-    public final boolean hasRecognitionTimePast(
-            final long currentTime, final long lastRecognitionTime) {
-        return currentTime > lastRecognitionTime + mParams.mRecognitionMinimumTime;
-    }
-
-    public final void appendAllBatchPoints(final InputPointers out) {
-        appendBatchPoints(out, getLength());
-    }
-
-    public final void appendIncrementalBatchPoints(final InputPointers out) {
-        appendBatchPoints(out, mIncrementalRecognitionSize);
-    }
-
-    private void appendBatchPoints(final InputPointers out, final int size) {
-        final int length = size - mLastIncrementalBatchSize;
-        if (length <= 0) {
-            return;
-        }
-        out.append(mPointerId, mEventTimes, mXCoordinates, mYCoordinates,
-                mLastIncrementalBatchSize, length);
-        mLastIncrementalBatchSize = size;
-    }
-
-    private static int getDistance(final int x1, final int y1, final int x2, final int y2) {
-        final int dx = x1 - x2;
-        final int dy = y1 - y2;
-        // Note that, in recent versions of Android, FloatMath is actually slower than
-        // java.lang.Math due to the way the JIT optimizes java.lang.Math.
-        return (int)Math.sqrt(dx * dx + dy * dy);
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingParams.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingParams.java
new file mode 100644
index 0000000..478639d
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingParams.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.TypedArray;
+
+import com.android.inputmethod.latin.R;
+
+/**
+ * This class holds parameters to control how a gesture stroke is sampled and drawn on the screen.
+ *
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailMinSamplingDistance
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailMaxInterpolationAngularThreshold
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailMaxInterpolationDistanceThreshold
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailMaxInterpolationSegments
+ */
+public final class GestureStrokeDrawingParams {
+    public final double mMinSamplingDistance; // in pixel
+    public final double mMaxInterpolationAngularThreshold; // in radian
+    public final double mMaxInterpolationDistanceThreshold; // in pixel
+    public final int mMaxInterpolationSegments;
+
+    private static final float DEFAULT_MIN_SAMPLING_DISTANCE = 0.0f; // dp
+    private static final int DEFAULT_MAX_INTERPOLATION_ANGULAR_THRESHOLD = 15; // in degree
+    private static final float DEFAULT_MAX_INTERPOLATION_DISTANCE_THRESHOLD = 0.0f; // dp
+    private static final int DEFAULT_MAX_INTERPOLATION_SEGMENTS = 4;
+
+    public GestureStrokeDrawingParams(final TypedArray mainKeyboardViewAttr) {
+        mMinSamplingDistance = mainKeyboardViewAttr.getDimension(
+                R.styleable.MainKeyboardView_gestureTrailMinSamplingDistance,
+                DEFAULT_MIN_SAMPLING_DISTANCE);
+        final int interpolationAngularDegree = mainKeyboardViewAttr.getInteger(R.styleable
+                .MainKeyboardView_gestureTrailMaxInterpolationAngularThreshold, 0);
+        mMaxInterpolationAngularThreshold = (interpolationAngularDegree <= 0)
+                ? Math.toRadians(DEFAULT_MAX_INTERPOLATION_ANGULAR_THRESHOLD)
+                : Math.toRadians(interpolationAngularDegree);
+        mMaxInterpolationDistanceThreshold = mainKeyboardViewAttr.getDimension(R.styleable
+                .MainKeyboardView_gestureTrailMaxInterpolationDistanceThreshold,
+                DEFAULT_MAX_INTERPOLATION_DISTANCE_THRESHOLD);
+        mMaxInterpolationSegments = mainKeyboardViewAttr.getInteger(
+                R.styleable.MainKeyboardView_gestureTrailMaxInterpolationSegments,
+                DEFAULT_MAX_INTERPOLATION_SEGMENTS);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
new file mode 100644
index 0000000..7d09e9d
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeDrawingPoints.java
@@ -0,0 +1,197 @@
+/*
+ * 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 com.android.inputmethod.latin.utils.ResizableIntArray;
+
+/**
+ * This class holds drawing points to represent a gesture stroke on the screen.
+ */
+public final class GestureStrokeDrawingPoints {
+    public static final int PREVIEW_CAPACITY = 256;
+
+    private final ResizableIntArray mPreviewEventTimes = new ResizableIntArray(PREVIEW_CAPACITY);
+    private final ResizableIntArray mPreviewXCoordinates = new ResizableIntArray(PREVIEW_CAPACITY);
+    private final ResizableIntArray mPreviewYCoordinates = new ResizableIntArray(PREVIEW_CAPACITY);
+
+    private final GestureStrokeDrawingParams mDrawingParams;
+
+    private int mStrokeId;
+    private int mLastPreviewSize;
+    private final HermiteInterpolator mInterpolator = new HermiteInterpolator();
+    private int mLastInterpolatedPreviewIndex;
+
+    private int mLastX;
+    private int mLastY;
+    private double mDistanceFromLastSample;
+
+    public GestureStrokeDrawingPoints(final GestureStrokeDrawingParams drawingParams) {
+        mDrawingParams = drawingParams;
+    }
+
+    private void reset() {
+        mStrokeId++;
+        mLastPreviewSize = 0;
+        mLastInterpolatedPreviewIndex = 0;
+        mPreviewEventTimes.setLength(0);
+        mPreviewXCoordinates.setLength(0);
+        mPreviewYCoordinates.setLength(0);
+    }
+
+    public int getGestureStrokeId() {
+        return mStrokeId;
+    }
+
+    public void onDownEvent(final int x, final int y, final int elapsedTimeSinceFirstDown) {
+        reset();
+        onMoveEvent(x, y, elapsedTimeSinceFirstDown);
+    }
+
+    private boolean needsSampling(final int x, final int y) {
+        mDistanceFromLastSample += Math.hypot(x - mLastX, y - mLastY);
+        mLastX = x;
+        mLastY = y;
+        final boolean isDownEvent = (mPreviewEventTimes.getLength() == 0);
+        if (mDistanceFromLastSample >= mDrawingParams.mMinSamplingDistance || isDownEvent) {
+            mDistanceFromLastSample = 0.0d;
+            return true;
+        }
+        return false;
+    }
+
+    public void onMoveEvent(final int x, final int y, final int elapsedTimeSinceFirstDown) {
+        if (needsSampling(x, y)) {
+            mPreviewEventTimes.add(elapsedTimeSinceFirstDown);
+            mPreviewXCoordinates.add(x);
+            mPreviewYCoordinates.add(y);
+        }
+    }
+
+    /**
+     * Append sampled preview points.
+     *
+     * @param eventTimes the event time array of gesture trail to be drawn.
+     * @param xCoords the x-coordinates array of gesture trail to be drawn.
+     * @param yCoords the y-coordinates array of gesture trail to be drawn.
+     * @param types the point types array of gesture trail. This is valid only when
+     * {@link GestureTrailDrawingPoints#DEBUG_SHOW_POINTS} is true.
+     */
+    public void appendPreviewStroke(final ResizableIntArray eventTimes,
+            final ResizableIntArray xCoords, final ResizableIntArray yCoords,
+            final ResizableIntArray types) {
+        final int length = mPreviewEventTimes.getLength() - mLastPreviewSize;
+        if (length <= 0) {
+            return;
+        }
+        eventTimes.append(mPreviewEventTimes, mLastPreviewSize, length);
+        xCoords.append(mPreviewXCoordinates, mLastPreviewSize, length);
+        yCoords.append(mPreviewYCoordinates, mLastPreviewSize, length);
+        if (GestureTrailDrawingPoints.DEBUG_SHOW_POINTS) {
+            types.fill(GestureTrailDrawingPoints.POINT_TYPE_SAMPLED, types.getLength(), length);
+        }
+        mLastPreviewSize = mPreviewEventTimes.getLength();
+    }
+
+    /**
+     * Calculate interpolated points between the last interpolated point and the end of the trail.
+     * And return the start index of the last interpolated segment of input arrays because it
+     * may need to recalculate the interpolated points in the segment if further segments are
+     * added to this stroke.
+     *
+     * @param lastInterpolatedIndex the start index of the last interpolated segment of
+     *        <code>eventTimes</code>, <code>xCoords</code>, and <code>yCoords</code>.
+     * @param eventTimes the event time array of gesture trail to be drawn.
+     * @param xCoords the x-coordinates array of gesture trail to be drawn.
+     * @param yCoords the y-coordinates array of gesture trail to be drawn.
+     * @param types the point types array of gesture trail. This is valid only when
+     * {@link GestureTrailDrawingPoints#DEBUG_SHOW_POINTS} is true.
+     * @return the start index of the last interpolated segment of input arrays.
+     */
+    public int interpolateStrokeAndReturnStartIndexOfLastSegment(final int lastInterpolatedIndex,
+            final ResizableIntArray eventTimes, final ResizableIntArray xCoords,
+            final ResizableIntArray yCoords, final ResizableIntArray types) {
+        final int size = mPreviewEventTimes.getLength();
+        final int[] pt = mPreviewEventTimes.getPrimitiveArray();
+        final int[] px = mPreviewXCoordinates.getPrimitiveArray();
+        final int[] py = mPreviewYCoordinates.getPrimitiveArray();
+        mInterpolator.reset(px, py, 0, size);
+        // The last segment of gesture stroke needs to be interpolated again because the slope of
+        // the tangent at the last point isn't determined.
+        int lastInterpolatedDrawIndex = lastInterpolatedIndex;
+        int d1 = lastInterpolatedIndex;
+        for (int p2 = mLastInterpolatedPreviewIndex + 1; p2 < size; p2++) {
+            final int p1 = p2 - 1;
+            final int p0 = p1 - 1;
+            final int p3 = p2 + 1;
+            mLastInterpolatedPreviewIndex = p1;
+            lastInterpolatedDrawIndex = d1;
+            mInterpolator.setInterval(p0, p1, p2, p3);
+            final double m1 = Math.atan2(mInterpolator.mSlope1Y, mInterpolator.mSlope1X);
+            final double m2 = Math.atan2(mInterpolator.mSlope2Y, mInterpolator.mSlope2X);
+            final double deltaAngle = Math.abs(angularDiff(m2, m1));
+            final int segmentsByAngle = (int)Math.ceil(
+                    deltaAngle / mDrawingParams.mMaxInterpolationAngularThreshold);
+            final double deltaDistance = Math.hypot(mInterpolator.mP1X - mInterpolator.mP2X,
+                    mInterpolator.mP1Y - mInterpolator.mP2Y);
+            final int segmentsByDistance = (int)Math.ceil(deltaDistance
+                    / mDrawingParams.mMaxInterpolationDistanceThreshold);
+            final int segments = Math.min(mDrawingParams.mMaxInterpolationSegments,
+                    Math.max(segmentsByAngle, segmentsByDistance));
+            final int t1 = eventTimes.get(d1);
+            final int dt = pt[p2] - pt[p1];
+            d1++;
+            for (int i = 1; i < segments; i++) {
+                final float t = i / (float)segments;
+                mInterpolator.interpolate(t);
+                eventTimes.addAt(d1, (int)(dt * t) + t1);
+                xCoords.addAt(d1, (int)mInterpolator.mInterpolatedX);
+                yCoords.addAt(d1, (int)mInterpolator.mInterpolatedY);
+                if (GestureTrailDrawingPoints.DEBUG_SHOW_POINTS) {
+                    types.addAt(d1, GestureTrailDrawingPoints.POINT_TYPE_INTERPOLATED);
+                }
+                d1++;
+            }
+            eventTimes.addAt(d1, pt[p2]);
+            xCoords.addAt(d1, px[p2]);
+            yCoords.addAt(d1, py[p2]);
+            if (GestureTrailDrawingPoints.DEBUG_SHOW_POINTS) {
+                types.addAt(d1, GestureTrailDrawingPoints.POINT_TYPE_SAMPLED);
+            }
+        }
+        return lastInterpolatedDrawIndex;
+    }
+
+    private static final double TWO_PI = Math.PI * 2.0d;
+
+    /**
+     * Calculate the angular of rotation from <code>a0</code> to <code>a1</code>.
+     *
+     * @param a1 the angular to which the rotation ends.
+     * @param a0 the angular from which the rotation starts.
+     * @return the angular rotation value from a0 to a1, normalized to [-PI, +PI].
+     */
+    private static double angularDiff(final double a1, final double a0) {
+        double deltaAngle = a1 - a0;
+        while (deltaAngle > Math.PI) {
+            deltaAngle -= TWO_PI;
+        }
+        while (deltaAngle < -Math.PI) {
+            deltaAngle += TWO_PI;
+        }
+        return deltaAngle;
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionParams.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionParams.java
new file mode 100644
index 0000000..07b1451
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionParams.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.TypedArray;
+
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.ResourceUtils;
+
+/**
+ * This class holds parameters to control how a gesture stroke is sampled and recognized.
+ * This class also has parameters to distinguish gesture input events from fast typing events.
+ *
+ * @attr ref R.styleable#MainKeyboardView_gestureStaticTimeThresholdAfterFastTyping
+ * @attr ref R.styleable#MainKeyboardView_gestureDetectFastMoveSpeedThreshold
+ * @attr ref R.styleable#MainKeyboardView_gestureDynamicThresholdDecayDuration
+ * @attr ref R.styleable#MainKeyboardView_gestureDynamicTimeThresholdFrom
+ * @attr ref R.styleable#MainKeyboardView_gestureDynamicTimeThresholdTo
+ * @attr ref R.styleable#MainKeyboardView_gestureDynamicDistanceThresholdFrom
+ * @attr ref R.styleable#MainKeyboardView_gestureDynamicDistanceThresholdTo
+ * @attr ref R.styleable#MainKeyboardView_gestureSamplingMinimumDistance
+ * @attr ref R.styleable#MainKeyboardView_gestureRecognitionMinimumTime
+ * @attr ref R.styleable#MainKeyboardView_gestureRecognitionSpeedThreshold
+ */
+public final class GestureStrokeRecognitionParams {
+    // Static threshold for gesture after fast typing
+    public final int mStaticTimeThresholdAfterFastTyping; // msec
+    // Static threshold for starting gesture detection
+    public final float mDetectFastMoveSpeedThreshold; // keyWidth/sec
+    // Dynamic threshold for gesture after fast typing
+    public final int mDynamicThresholdDecayDuration; // msec
+    // Time based threshold values
+    public final int mDynamicTimeThresholdFrom; // msec
+    public final int mDynamicTimeThresholdTo; // msec
+    // Distance based threshold values
+    public final float mDynamicDistanceThresholdFrom; // keyWidth
+    public final float mDynamicDistanceThresholdTo; // keyWidth
+    // Parameters for gesture sampling
+    public final float mSamplingMinimumDistance; // keyWidth
+    // Parameters for gesture recognition
+    public final int mRecognitionMinimumTime; // msec
+    public final float mRecognitionSpeedThreshold; // keyWidth/sec
+
+    // Default GestureStrokeRecognitionPoints parameters.
+    public static final GestureStrokeRecognitionParams DEFAULT =
+            new GestureStrokeRecognitionParams();
+
+    private GestureStrokeRecognitionParams() {
+        // These parameter values are default and intended for testing.
+        mStaticTimeThresholdAfterFastTyping = 350; // msec
+        mDetectFastMoveSpeedThreshold = 1.5f; // keyWidth/sec
+        mDynamicThresholdDecayDuration = 450; // msec
+        mDynamicTimeThresholdFrom = 300; // msec
+        mDynamicTimeThresholdTo = 20; // msec
+        mDynamicDistanceThresholdFrom = 6.0f; // keyWidth
+        mDynamicDistanceThresholdTo = 0.35f; // keyWidth
+        // The following parameters' change will affect the result of regression test.
+        mSamplingMinimumDistance = 1.0f / 6.0f; // keyWidth
+        mRecognitionMinimumTime = 100; // msec
+        mRecognitionSpeedThreshold = 5.5f; // keyWidth/sec
+    }
+
+    public GestureStrokeRecognitionParams(final TypedArray mainKeyboardViewAttr) {
+        mStaticTimeThresholdAfterFastTyping = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureStaticTimeThresholdAfterFastTyping,
+                DEFAULT.mStaticTimeThresholdAfterFastTyping);
+        mDetectFastMoveSpeedThreshold = ResourceUtils.getFraction(mainKeyboardViewAttr,
+                R.styleable.MainKeyboardView_gestureDetectFastMoveSpeedThreshold,
+                DEFAULT.mDetectFastMoveSpeedThreshold);
+        mDynamicThresholdDecayDuration = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureDynamicThresholdDecayDuration,
+                DEFAULT.mDynamicThresholdDecayDuration);
+        mDynamicTimeThresholdFrom = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureDynamicTimeThresholdFrom,
+                DEFAULT.mDynamicTimeThresholdFrom);
+        mDynamicTimeThresholdTo = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureDynamicTimeThresholdTo,
+                DEFAULT.mDynamicTimeThresholdTo);
+        mDynamicDistanceThresholdFrom = ResourceUtils.getFraction(mainKeyboardViewAttr,
+                R.styleable.MainKeyboardView_gestureDynamicDistanceThresholdFrom,
+                DEFAULT.mDynamicDistanceThresholdFrom);
+        mDynamicDistanceThresholdTo = ResourceUtils.getFraction(mainKeyboardViewAttr,
+                R.styleable.MainKeyboardView_gestureDynamicDistanceThresholdTo,
+                DEFAULT.mDynamicDistanceThresholdTo);
+        mSamplingMinimumDistance = ResourceUtils.getFraction(mainKeyboardViewAttr,
+                R.styleable.MainKeyboardView_gestureSamplingMinimumDistance,
+                DEFAULT.mSamplingMinimumDistance);
+        mRecognitionMinimumTime = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureRecognitionMinimumTime,
+                DEFAULT.mRecognitionMinimumTime);
+        mRecognitionSpeedThreshold = ResourceUtils.getFraction(mainKeyboardViewAttr,
+                R.styleable.MainKeyboardView_gestureRecognitionSpeedThreshold,
+                DEFAULT.mRecognitionSpeedThreshold);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java
new file mode 100644
index 0000000..e49e538
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeRecognitionPoints.java
@@ -0,0 +1,334 @@
+/*
+ * 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.util.Log;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.InputPointers;
+import com.android.inputmethod.latin.utils.ResizableIntArray;
+
+/**
+ * This class holds event points to recognize a gesture stroke.
+ * TODO: Should be package private class.
+ */
+public final class GestureStrokeRecognitionPoints {
+    private static final String TAG = GestureStrokeRecognitionPoints.class.getSimpleName();
+    private static final boolean DEBUG = false;
+    private static final boolean DEBUG_SPEED = false;
+
+    // The height of extra area above the keyboard to draw gesture trails.
+    // Proportional to the keyboard height.
+    public static final float EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO = 0.25f;
+
+    private final int mPointerId;
+    private final ResizableIntArray mEventTimes = new ResizableIntArray(
+            Constants.DEFAULT_GESTURE_POINTS_CAPACITY);
+    private final ResizableIntArray mXCoordinates = new ResizableIntArray(
+            Constants.DEFAULT_GESTURE_POINTS_CAPACITY);
+    private final ResizableIntArray mYCoordinates = new ResizableIntArray(
+            Constants.DEFAULT_GESTURE_POINTS_CAPACITY);
+
+    private final GestureStrokeRecognitionParams mRecognitionParams;
+
+    private int mKeyWidth; // pixel
+    private int mMinYCoordinate; // pixel
+    private int mMaxYCoordinate; // pixel
+    // Static threshold for starting gesture detection
+    private int mDetectFastMoveSpeedThreshold; // pixel /sec
+    private int mDetectFastMoveTime;
+    private int mDetectFastMoveX;
+    private int mDetectFastMoveY;
+    // Dynamic threshold for gesture after fast typing
+    private boolean mAfterFastTyping;
+    private int mGestureDynamicDistanceThresholdFrom; // pixel
+    private int mGestureDynamicDistanceThresholdTo; // pixel
+    // Variables for gesture sampling
+    private int mGestureSamplingMinimumDistance; // pixel
+    private long mLastMajorEventTime;
+    private int mLastMajorEventX;
+    private int mLastMajorEventY;
+    // Variables for gesture recognition
+    private int mGestureRecognitionSpeedThreshold; // pixel / sec
+    private int mIncrementalRecognitionSize;
+    private int mLastIncrementalBatchSize;
+
+    private static final int MSEC_PER_SEC = 1000;
+
+    // TODO: Make this package private
+    public GestureStrokeRecognitionPoints(final int pointerId,
+            final GestureStrokeRecognitionParams recognitionParams) {
+        mPointerId = pointerId;
+        mRecognitionParams = recognitionParams;
+    }
+
+    // TODO: Make this package private
+    public void setKeyboardGeometry(final int keyWidth, final int keyboardHeight) {
+        mKeyWidth = keyWidth;
+        mMinYCoordinate = -(int)(keyboardHeight * EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
+        mMaxYCoordinate = keyboardHeight;
+        // TODO: Find an appropriate base metric for these length. Maybe diagonal length of the key?
+        mDetectFastMoveSpeedThreshold = (int)(
+                keyWidth * mRecognitionParams.mDetectFastMoveSpeedThreshold);
+        mGestureDynamicDistanceThresholdFrom = (int)(
+                keyWidth * mRecognitionParams.mDynamicDistanceThresholdFrom);
+        mGestureDynamicDistanceThresholdTo = (int)(
+                keyWidth * mRecognitionParams.mDynamicDistanceThresholdTo);
+        mGestureSamplingMinimumDistance = (int)(
+                keyWidth * mRecognitionParams.mSamplingMinimumDistance);
+        mGestureRecognitionSpeedThreshold = (int)(
+                keyWidth * mRecognitionParams.mRecognitionSpeedThreshold);
+        if (DEBUG) {
+            Log.d(TAG, String.format(
+                    "[%d] setKeyboardGeometry: keyWidth=%3d tT=%3d >> %3d tD=%3d >> %3d",
+                    mPointerId, keyWidth,
+                    mRecognitionParams.mDynamicTimeThresholdFrom,
+                    mRecognitionParams.mDynamicTimeThresholdTo,
+                    mGestureDynamicDistanceThresholdFrom,
+                    mGestureDynamicDistanceThresholdTo));
+        }
+    }
+
+    // TODO: Make this package private
+    public int getLength() {
+        return mEventTimes.getLength();
+    }
+
+    // TODO: Make this package private
+    public void addDownEventPoint(final int x, final int y, final int elapsedTimeSinceFirstDown,
+            final int elapsedTimeSinceLastTyping) {
+        reset();
+        if (elapsedTimeSinceLastTyping < mRecognitionParams.mStaticTimeThresholdAfterFastTyping) {
+            mAfterFastTyping = true;
+        }
+        if (DEBUG) {
+            Log.d(TAG, String.format("[%d] onDownEvent: dT=%3d%s", mPointerId,
+                    elapsedTimeSinceLastTyping, mAfterFastTyping ? " afterFastTyping" : ""));
+        }
+        // Call {@link #addEventPoint(int,int,int,boolean)} to record this down event point as a
+        // major event point.
+        addEventPoint(x, y, elapsedTimeSinceFirstDown, true /* isMajorEvent */);
+    }
+
+    private int getGestureDynamicDistanceThreshold(final int deltaTime) {
+        if (!mAfterFastTyping || deltaTime >= mRecognitionParams.mDynamicThresholdDecayDuration) {
+            return mGestureDynamicDistanceThresholdTo;
+        }
+        final int decayedThreshold =
+                (mGestureDynamicDistanceThresholdFrom - mGestureDynamicDistanceThresholdTo)
+                * deltaTime / mRecognitionParams.mDynamicThresholdDecayDuration;
+        return mGestureDynamicDistanceThresholdFrom - decayedThreshold;
+    }
+
+    private int getGestureDynamicTimeThreshold(final int deltaTime) {
+        if (!mAfterFastTyping || deltaTime >= mRecognitionParams.mDynamicThresholdDecayDuration) {
+            return mRecognitionParams.mDynamicTimeThresholdTo;
+        }
+        final int decayedThreshold =
+                (mRecognitionParams.mDynamicTimeThresholdFrom
+                        - mRecognitionParams.mDynamicTimeThresholdTo)
+                * deltaTime / mRecognitionParams.mDynamicThresholdDecayDuration;
+        return mRecognitionParams.mDynamicTimeThresholdFrom - decayedThreshold;
+    }
+
+    // TODO: Make this package private
+    public final boolean isStartOfAGesture() {
+        if (!hasDetectedFastMove()) {
+            return false;
+        }
+        final int size = getLength();
+        if (size <= 0) {
+            return false;
+        }
+        final int lastIndex = size - 1;
+        final int deltaTime = mEventTimes.get(lastIndex) - mDetectFastMoveTime;
+        if (deltaTime < 0) {
+            return false;
+        }
+        final int deltaDistance = getDistance(
+                mXCoordinates.get(lastIndex), mYCoordinates.get(lastIndex),
+                mDetectFastMoveX, mDetectFastMoveY);
+        final int distanceThreshold = getGestureDynamicDistanceThreshold(deltaTime);
+        final int timeThreshold = getGestureDynamicTimeThreshold(deltaTime);
+        final boolean isStartOfAGesture = deltaTime >= timeThreshold
+                && deltaDistance >= distanceThreshold;
+        if (DEBUG) {
+            Log.d(TAG, String.format("[%d] isStartOfAGesture: dT=%3d tT=%3d dD=%3d tD=%3d%s%s",
+                    mPointerId, deltaTime, timeThreshold,
+                    deltaDistance, distanceThreshold,
+                    mAfterFastTyping ? " afterFastTyping" : "",
+                    isStartOfAGesture ? " startOfAGesture" : ""));
+        }
+        return isStartOfAGesture;
+    }
+
+    // TODO: Make this package private
+    public void duplicateLastPointWith(final int time) {
+        final int lastIndex = getLength() - 1;
+        if (lastIndex >= 0) {
+            final int x = mXCoordinates.get(lastIndex);
+            final int y = mYCoordinates.get(lastIndex);
+            if (DEBUG) {
+                Log.d(TAG, String.format("[%d] duplicateLastPointWith: %d,%d|%d", mPointerId,
+                        x, y, time));
+            }
+            // TODO: Have appendMajorPoint()
+            appendPoint(x, y, time);
+            updateIncrementalRecognitionSize(x, y, time);
+        }
+    }
+
+    private void reset() {
+        mIncrementalRecognitionSize = 0;
+        mLastIncrementalBatchSize = 0;
+        mEventTimes.setLength(0);
+        mXCoordinates.setLength(0);
+        mYCoordinates.setLength(0);
+        mLastMajorEventTime = 0;
+        mDetectFastMoveTime = 0;
+        mAfterFastTyping = false;
+    }
+
+    private void appendPoint(final int x, final int y, final int time) {
+        final int lastIndex = getLength() - 1;
+        // The point that is created by {@link duplicateLastPointWith(int)} may have later event
+        // time than the next {@link MotionEvent}. To maintain the monotonicity of the event time,
+        // drop the successive point here.
+        if (lastIndex >= 0 && mEventTimes.get(lastIndex) > time) {
+            Log.w(TAG, String.format("[%d] drop stale event: %d,%d|%d last: %d,%d|%d", mPointerId,
+                    x, y, time, mXCoordinates.get(lastIndex), mYCoordinates.get(lastIndex),
+                    mEventTimes.get(lastIndex)));
+            return;
+        }
+        mEventTimes.add(time);
+        mXCoordinates.add(x);
+        mYCoordinates.add(y);
+    }
+
+    private void updateMajorEvent(final int x, final int y, final int time) {
+        mLastMajorEventTime = time;
+        mLastMajorEventX = x;
+        mLastMajorEventY = y;
+    }
+
+    private final boolean hasDetectedFastMove() {
+        return mDetectFastMoveTime > 0;
+    }
+
+    private int detectFastMove(final int x, final int y, final int time) {
+        final int size = getLength();
+        final int lastIndex = size - 1;
+        final int lastX = mXCoordinates.get(lastIndex);
+        final int lastY = mYCoordinates.get(lastIndex);
+        final int dist = getDistance(lastX, lastY, x, y);
+        final int msecs = time - mEventTimes.get(lastIndex);
+        if (msecs > 0) {
+            final int pixels = getDistance(lastX, lastY, x, y);
+            final int pixelsPerSec = pixels * MSEC_PER_SEC;
+            if (DEBUG_SPEED) {
+                final float speed = (float)pixelsPerSec / msecs / mKeyWidth;
+                Log.d(TAG, String.format("[%d] detectFastMove: speed=%5.2f", mPointerId, speed));
+            }
+            // Equivalent to (pixels / msecs < mStartSpeedThreshold / MSEC_PER_SEC)
+            if (!hasDetectedFastMove() && pixelsPerSec > mDetectFastMoveSpeedThreshold * msecs) {
+                if (DEBUG) {
+                    final float speed = (float)pixelsPerSec / msecs / mKeyWidth;
+                    Log.d(TAG, String.format(
+                            "[%d] detectFastMove: speed=%5.2f T=%3d points=%3d fastMove",
+                            mPointerId, speed, time, size));
+                }
+                mDetectFastMoveTime = time;
+                mDetectFastMoveX = x;
+                mDetectFastMoveY = y;
+            }
+        }
+        return dist;
+    }
+
+    /**
+     * Add an event point to this gesture stroke recognition points. Returns true if the event
+     * point is on the valid gesture area.
+     * @param x the x-coordinate of the event point
+     * @param y the y-coordinate of the event point
+     * @param time the elapsed time in millisecond from the first gesture down
+     * @param isMajorEvent false if this is a historical move event
+     * @return true if the event point is on the valid gesture area
+     */
+    // TODO: Make this package private
+    public boolean addEventPoint(final int x, final int y, final int time,
+            final boolean isMajorEvent) {
+        final int size = getLength();
+        if (size <= 0) {
+            // The first event of this stroke (a.k.a. down event).
+            appendPoint(x, y, time);
+            updateMajorEvent(x, y, time);
+        } else {
+            final int distance = detectFastMove(x, y, time);
+            if (distance > mGestureSamplingMinimumDistance) {
+                appendPoint(x, y, time);
+            }
+        }
+        if (isMajorEvent) {
+            updateIncrementalRecognitionSize(x, y, time);
+            updateMajorEvent(x, y, time);
+        }
+        return y >= mMinYCoordinate && y < mMaxYCoordinate;
+    }
+
+    private void updateIncrementalRecognitionSize(final int x, final int y, final int time) {
+        final int msecs = (int)(time - mLastMajorEventTime);
+        if (msecs <= 0) {
+            return;
+        }
+        final int pixels = getDistance(mLastMajorEventX, mLastMajorEventY, x, y);
+        final int pixelsPerSec = pixels * MSEC_PER_SEC;
+        // Equivalent to (pixels / msecs < mGestureRecognitionThreshold / MSEC_PER_SEC)
+        if (pixelsPerSec < mGestureRecognitionSpeedThreshold * msecs) {
+            mIncrementalRecognitionSize = getLength();
+        }
+    }
+
+    // TODO: Make this package private
+    public final boolean hasRecognitionTimePast(
+            final long currentTime, final long lastRecognitionTime) {
+        return currentTime > lastRecognitionTime + mRecognitionParams.mRecognitionMinimumTime;
+    }
+
+    // TODO: Make this package private
+    public final void appendAllBatchPoints(final InputPointers out) {
+        appendBatchPoints(out, getLength());
+    }
+
+    // TODO: Make this package private
+    public final void appendIncrementalBatchPoints(final InputPointers out) {
+        appendBatchPoints(out, mIncrementalRecognitionSize);
+    }
+
+    private void appendBatchPoints(final InputPointers out, final int size) {
+        final int length = size - mLastIncrementalBatchSize;
+        if (length <= 0) {
+            return;
+        }
+        out.append(mPointerId, mEventTimes, mXCoordinates, mYCoordinates,
+                mLastIncrementalBatchSize, length);
+        mLastIncrementalBatchSize = size;
+    }
+
+    private static int getDistance(final int x1, final int y1, final int x2, final int y2) {
+        return (int)Math.hypot(x1 - x2, y1 - y2);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java
deleted file mode 100644
index ecc67dd..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureStrokeWithPreviewPoints.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * 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.res.TypedArray;
-
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.ResizableIntArray;
-
-public final class GestureStrokeWithPreviewPoints extends GestureStroke {
-    public static final int PREVIEW_CAPACITY = 256;
-
-    private final ResizableIntArray mPreviewEventTimes = new ResizableIntArray(PREVIEW_CAPACITY);
-    private final ResizableIntArray mPreviewXCoordinates = new ResizableIntArray(PREVIEW_CAPACITY);
-    private final ResizableIntArray mPreviewYCoordinates = new ResizableIntArray(PREVIEW_CAPACITY);
-
-    private final GestureStrokePreviewParams mPreviewParams;
-
-    private int mStrokeId;
-    private int mLastPreviewSize;
-    private final HermiteInterpolator mInterpolator = new HermiteInterpolator();
-    private int mLastInterpolatedPreviewIndex;
-
-    private int mLastX;
-    private int mLastY;
-    private double mDistanceFromLastSample;
-
-    public static final class GestureStrokePreviewParams {
-        public final double mMinSamplingDistance; // in pixel
-        public final double mMaxInterpolationAngularThreshold; // in radian
-        public final double mMaxInterpolationDistanceThreshold; // in pixel
-        public final int mMaxInterpolationSegments;
-
-        public static final GestureStrokePreviewParams DEFAULT = new GestureStrokePreviewParams();
-
-        private static final int DEFAULT_MAX_INTERPOLATION_ANGULAR_THRESHOLD = 15; // in degree
-
-        private GestureStrokePreviewParams() {
-            mMinSamplingDistance = 0.0d;
-            mMaxInterpolationAngularThreshold =
-                    degreeToRadian(DEFAULT_MAX_INTERPOLATION_ANGULAR_THRESHOLD);
-            mMaxInterpolationDistanceThreshold = mMinSamplingDistance;
-            mMaxInterpolationSegments = 4;
-        }
-
-        private static double degreeToRadian(final int degree) {
-            return degree / 180.0d * Math.PI;
-        }
-
-        public GestureStrokePreviewParams(final TypedArray mainKeyboardViewAttr) {
-            mMinSamplingDistance = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gestureTrailMinSamplingDistance,
-                    (float)DEFAULT.mMinSamplingDistance);
-            final int interpolationAngularDegree = mainKeyboardViewAttr.getInteger(R.styleable
-                    .MainKeyboardView_gestureTrailMaxInterpolationAngularThreshold, 0);
-            mMaxInterpolationAngularThreshold = (interpolationAngularDegree <= 0)
-                    ? DEFAULT.mMaxInterpolationAngularThreshold
-                    : degreeToRadian(interpolationAngularDegree);
-            mMaxInterpolationDistanceThreshold = mainKeyboardViewAttr.getDimension(R.styleable
-                    .MainKeyboardView_gestureTrailMaxInterpolationDistanceThreshold,
-                    (float)DEFAULT.mMaxInterpolationDistanceThreshold);
-            mMaxInterpolationSegments = mainKeyboardViewAttr.getInteger(
-                    R.styleable.MainKeyboardView_gestureTrailMaxInterpolationSegments,
-                    DEFAULT.mMaxInterpolationSegments);
-        }
-    }
-
-    public GestureStrokeWithPreviewPoints(final int pointerId,
-            final GestureStrokeParams strokeParams,
-            final GestureStrokePreviewParams previewParams) {
-        super(pointerId, strokeParams);
-        mPreviewParams = previewParams;
-    }
-
-    @Override
-    protected void reset() {
-        super.reset();
-        mStrokeId++;
-        mLastPreviewSize = 0;
-        mLastInterpolatedPreviewIndex = 0;
-        mPreviewEventTimes.setLength(0);
-        mPreviewXCoordinates.setLength(0);
-        mPreviewYCoordinates.setLength(0);
-    }
-
-    public int getGestureStrokeId() {
-        return mStrokeId;
-    }
-
-    private boolean needsSampling(final int x, final int y) {
-        mDistanceFromLastSample += Math.hypot(x - mLastX, y - mLastY);
-        mLastX = x;
-        mLastY = y;
-        final boolean isDownEvent = (mPreviewEventTimes.getLength() == 0);
-        if (mDistanceFromLastSample >= mPreviewParams.mMinSamplingDistance || isDownEvent) {
-            mDistanceFromLastSample = 0.0d;
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean addPointOnKeyboard(final int x, final int y, final int time,
-            final boolean isMajorEvent) {
-        if (needsSampling(x, y)) {
-            mPreviewEventTimes.add(time);
-            mPreviewXCoordinates.add(x);
-            mPreviewYCoordinates.add(y);
-        }
-        return super.addPointOnKeyboard(x, y, time, isMajorEvent);
-
-    }
-
-    /**
-     * Append sampled preview points.
-     *
-     * @param eventTimes the event time array of gesture trail to be drawn.
-     * @param xCoords the x-coordinates array of gesture trail to be drawn.
-     * @param yCoords the y-coordinates array of gesture trail to be drawn.
-     * @param types the point types array of gesture trail. This is valid only when
-     * {@link GestureTrail#DEBUG_SHOW_POINTS} is true.
-     */
-    public void appendPreviewStroke(final ResizableIntArray eventTimes,
-            final ResizableIntArray xCoords, final ResizableIntArray yCoords,
-            final ResizableIntArray types) {
-        final int length = mPreviewEventTimes.getLength() - mLastPreviewSize;
-        if (length <= 0) {
-            return;
-        }
-        eventTimes.append(mPreviewEventTimes, mLastPreviewSize, length);
-        xCoords.append(mPreviewXCoordinates, mLastPreviewSize, length);
-        yCoords.append(mPreviewYCoordinates, mLastPreviewSize, length);
-        if (GestureTrail.DEBUG_SHOW_POINTS) {
-            types.fill(GestureTrail.POINT_TYPE_SAMPLED, types.getLength(), length);
-        }
-        mLastPreviewSize = mPreviewEventTimes.getLength();
-    }
-
-    /**
-     * Calculate interpolated points between the last interpolated point and the end of the trail.
-     * And return the start index of the last interpolated segment of input arrays because it
-     * may need to recalculate the interpolated points in the segment if further segments are
-     * added to this stroke.
-     *
-     * @param lastInterpolatedIndex the start index of the last interpolated segment of
-     *        <code>eventTimes</code>, <code>xCoords</code>, and <code>yCoords</code>.
-     * @param eventTimes the event time array of gesture trail to be drawn.
-     * @param xCoords the x-coordinates array of gesture trail to be drawn.
-     * @param yCoords the y-coordinates array of gesture trail to be drawn.
-     * @param types the point types array of gesture trail. This is valid only when
-     * {@link GestureTrail#DEBUG_SHOW_POINTS} is true.
-     * @return the start index of the last interpolated segment of input arrays.
-     */
-    public int interpolateStrokeAndReturnStartIndexOfLastSegment(final int lastInterpolatedIndex,
-            final ResizableIntArray eventTimes, final ResizableIntArray xCoords,
-            final ResizableIntArray yCoords, final ResizableIntArray types) {
-        final int size = mPreviewEventTimes.getLength();
-        final int[] pt = mPreviewEventTimes.getPrimitiveArray();
-        final int[] px = mPreviewXCoordinates.getPrimitiveArray();
-        final int[] py = mPreviewYCoordinates.getPrimitiveArray();
-        mInterpolator.reset(px, py, 0, size);
-        // The last segment of gesture stroke needs to be interpolated again because the slope of
-        // the tangent at the last point isn't determined.
-        int lastInterpolatedDrawIndex = lastInterpolatedIndex;
-        int d1 = lastInterpolatedIndex;
-        for (int p2 = mLastInterpolatedPreviewIndex + 1; p2 < size; p2++) {
-            final int p1 = p2 - 1;
-            final int p0 = p1 - 1;
-            final int p3 = p2 + 1;
-            mLastInterpolatedPreviewIndex = p1;
-            lastInterpolatedDrawIndex = d1;
-            mInterpolator.setInterval(p0, p1, p2, p3);
-            final double m1 = Math.atan2(mInterpolator.mSlope1Y, mInterpolator.mSlope1X);
-            final double m2 = Math.atan2(mInterpolator.mSlope2Y, mInterpolator.mSlope2X);
-            final double deltaAngle = Math.abs(angularDiff(m2, m1));
-            final int segmentsByAngle = (int)Math.ceil(
-                    deltaAngle / mPreviewParams.mMaxInterpolationAngularThreshold);
-            final double deltaDistance = Math.hypot(mInterpolator.mP1X - mInterpolator.mP2X,
-                    mInterpolator.mP1Y - mInterpolator.mP2Y);
-            final int segmentsByDistance = (int)Math.ceil(deltaDistance
-                    / mPreviewParams.mMaxInterpolationDistanceThreshold);
-            final int segments = Math.min(mPreviewParams.mMaxInterpolationSegments,
-                    Math.max(segmentsByAngle, segmentsByDistance));
-            final int t1 = eventTimes.get(d1);
-            final int dt = pt[p2] - pt[p1];
-            d1++;
-            for (int i = 1; i < segments; i++) {
-                final float t = i / (float)segments;
-                mInterpolator.interpolate(t);
-                eventTimes.add(d1, (int)(dt * t) + t1);
-                xCoords.add(d1, (int)mInterpolator.mInterpolatedX);
-                yCoords.add(d1, (int)mInterpolator.mInterpolatedY);
-                if (GestureTrail.DEBUG_SHOW_POINTS) {
-                    types.add(d1, GestureTrail.POINT_TYPE_INTERPOLATED);
-                }
-                d1++;
-            }
-            eventTimes.add(d1, pt[p2]);
-            xCoords.add(d1, px[p2]);
-            yCoords.add(d1, py[p2]);
-            if (GestureTrail.DEBUG_SHOW_POINTS) {
-                types.add(d1, GestureTrail.POINT_TYPE_SAMPLED);
-            }
-        }
-        return lastInterpolatedDrawIndex;
-    }
-
-    private static final double TWO_PI = Math.PI * 2.0d;
-
-    /**
-     * Calculate the angular of rotation from <code>a0</code> to <code>a1</code>.
-     *
-     * @param a1 the angular to which the rotation ends.
-     * @param a0 the angular from which the rotation starts.
-     * @return the angular rotation value from a0 to a1, normalized to [-PI, +PI].
-     */
-    private static double angularDiff(final double a1, final double a0) {
-        double deltaAngle = a1 - a0;
-        while (deltaAngle > Math.PI) {
-            deltaAngle -= TWO_PI;
-        }
-        while (deltaAngle < -Math.PI) {
-            deltaAngle += TWO_PI;
-        }
-        return deltaAngle;
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTrail.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrail.java
deleted file mode 100644
index aca6679..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureTrail.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * 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.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.Rect;
-import android.os.SystemClock;
-
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.ResizableIntArray;
-
-/*
- * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutStartDelay
- * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutDuration
- * @attr ref R.styleable#MainKeyboardView_gestureTrailUpdateInterval
- * @attr ref R.styleable#MainKeyboardView_gestureTrailColor
- * @attr ref R.styleable#MainKeyboardView_gestureTrailWidth
- */
-final class GestureTrail {
-    public static final boolean DEBUG_SHOW_POINTS = false;
-    public static final int POINT_TYPE_SAMPLED = 1;
-    public static final int POINT_TYPE_INTERPOLATED = 2;
-    private static final int FADEOUT_START_DELAY_FOR_DEBUG = 2000; // millisecond
-    private static final int FADEOUT_DURATION_FOR_DEBUG = 200; // millisecond
-
-    private static final int DEFAULT_CAPACITY = GestureStrokeWithPreviewPoints.PREVIEW_CAPACITY;
-
-    // These three {@link ResizableIntArray}s should be synchronized by {@link #mEventTimes}.
-    private final ResizableIntArray mXCoordinates = new ResizableIntArray(DEFAULT_CAPACITY);
-    private final ResizableIntArray mYCoordinates = new ResizableIntArray(DEFAULT_CAPACITY);
-    private final ResizableIntArray mEventTimes = new ResizableIntArray(DEFAULT_CAPACITY);
-    private final ResizableIntArray mPointTypes = new ResizableIntArray(
-            DEBUG_SHOW_POINTS ? DEFAULT_CAPACITY : 0);
-    private int mCurrentStrokeId = -1;
-    // The wall time of the zero value in {@link #mEventTimes}
-    private long mCurrentTimeBase;
-    private int mTrailStartIndex;
-    private int mLastInterpolatedDrawIndex;
-
-    static final class Params {
-        public final int mTrailColor;
-        public final float mTrailStartWidth;
-        public final float mTrailEndWidth;
-        public final float mTrailBodyRatio;
-        public boolean mTrailShadowEnabled;
-        public final float mTrailShadowRatio;
-        public final int mFadeoutStartDelay;
-        public final int mFadeoutDuration;
-        public final int mUpdateInterval;
-
-        public final int mTrailLingerDuration;
-
-        public Params(final TypedArray mainKeyboardViewAttr) {
-            mTrailColor = mainKeyboardViewAttr.getColor(
-                    R.styleable.MainKeyboardView_gestureTrailColor, 0);
-            mTrailStartWidth = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gestureTrailStartWidth, 0.0f);
-            mTrailEndWidth = mainKeyboardViewAttr.getDimension(
-                    R.styleable.MainKeyboardView_gestureTrailEndWidth, 0.0f);
-            final int PERCENTAGE_INT = 100;
-            mTrailBodyRatio = (float)mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureTrailBodyRatio, PERCENTAGE_INT)
-                    / (float)PERCENTAGE_INT;
-            final int trailShadowRatioInt = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureTrailShadowRatio, 0);
-            mTrailShadowEnabled = (trailShadowRatioInt > 0);
-            mTrailShadowRatio = (float)trailShadowRatioInt / (float)PERCENTAGE_INT;
-            mFadeoutStartDelay = DEBUG_SHOW_POINTS ? FADEOUT_START_DELAY_FOR_DEBUG
-                    : mainKeyboardViewAttr.getInt(
-                            R.styleable.MainKeyboardView_gestureTrailFadeoutStartDelay, 0);
-            mFadeoutDuration = DEBUG_SHOW_POINTS ? FADEOUT_DURATION_FOR_DEBUG
-                    : mainKeyboardViewAttr.getInt(
-                            R.styleable.MainKeyboardView_gestureTrailFadeoutDuration, 0);
-            mTrailLingerDuration = mFadeoutStartDelay + mFadeoutDuration;
-            mUpdateInterval = mainKeyboardViewAttr.getInt(
-                    R.styleable.MainKeyboardView_gestureTrailUpdateInterval, 0);
-        }
-    }
-
-    // Use this value as imaginary zero because x-coordinates may be zero.
-    private static final int DOWN_EVENT_MARKER = -128;
-
-    private static int markAsDownEvent(final int xCoord) {
-        return DOWN_EVENT_MARKER - xCoord;
-    }
-
-    private static boolean isDownEventXCoord(final int xCoordOrMark) {
-        return xCoordOrMark <= DOWN_EVENT_MARKER;
-    }
-
-    private static int getXCoordValue(final int xCoordOrMark) {
-        return isDownEventXCoord(xCoordOrMark)
-                ? DOWN_EVENT_MARKER - xCoordOrMark : xCoordOrMark;
-    }
-
-    public void addStroke(final GestureStrokeWithPreviewPoints stroke, final long downTime) {
-        synchronized (mEventTimes) {
-            addStrokeLocked(stroke, downTime);
-        }
-    }
-
-    private void addStrokeLocked(final GestureStrokeWithPreviewPoints stroke, final long downTime) {
-        final int trailSize = mEventTimes.getLength();
-        stroke.appendPreviewStroke(mEventTimes, mXCoordinates, mYCoordinates, mPointTypes);
-        if (mEventTimes.getLength() == trailSize) {
-            return;
-        }
-        final int[] eventTimes = mEventTimes.getPrimitiveArray();
-        final int strokeId = stroke.getGestureStrokeId();
-        // Because interpolation algorithm in {@link GestureStrokeWithPreviewPoints} can't determine
-        // the interpolated points in the last segment of gesture stroke, it may need recalculation
-        // of interpolation when new segments are added to the stroke.
-        // {@link #mLastInterpolatedDrawIndex} holds the start index of the last segment. It may
-        // be updated by the interpolation
-        // {@link GestureStrokeWithPreviewPoints#interpolatePreviewStroke}
-        // or by animation {@link #drawGestureTrail(Canvas,Paint,Rect,Params)} below.
-        final int lastInterpolatedIndex = (strokeId == mCurrentStrokeId)
-                ? mLastInterpolatedDrawIndex : trailSize;
-        mLastInterpolatedDrawIndex = stroke.interpolateStrokeAndReturnStartIndexOfLastSegment(
-                lastInterpolatedIndex, mEventTimes, mXCoordinates, mYCoordinates, mPointTypes);
-        if (strokeId != mCurrentStrokeId) {
-            final int elapsedTime = (int)(downTime - mCurrentTimeBase);
-            for (int i = mTrailStartIndex; i < trailSize; i++) {
-                // Decay the previous strokes' event times.
-                eventTimes[i] -= elapsedTime;
-            }
-            final int[] xCoords = mXCoordinates.getPrimitiveArray();
-            final int downIndex = trailSize;
-            xCoords[downIndex] = markAsDownEvent(xCoords[downIndex]);
-            mCurrentTimeBase = downTime - eventTimes[downIndex];
-            mCurrentStrokeId = strokeId;
-        }
-    }
-
-    /**
-     * Calculate the alpha of a gesture trail.
-     * A gesture trail starts from fully opaque. After mFadeStartDelay has been passed, the alpha
-     * of a trail reduces in proportion to the elapsed time. Then after mFadeDuration has been
-     * passed, a trail becomes fully transparent.
-     *
-     * @param elapsedTime the elapsed time since a trail has been made.
-     * @param params gesture trail display parameters
-     * @return the width of a gesture trail
-     */
-    private static int getAlpha(final int elapsedTime, final Params params) {
-        if (elapsedTime < params.mFadeoutStartDelay) {
-            return Constants.Color.ALPHA_OPAQUE;
-        }
-        final int decreasingAlpha = Constants.Color.ALPHA_OPAQUE
-                * (elapsedTime - params.mFadeoutStartDelay)
-                / params.mFadeoutDuration;
-        return Constants.Color.ALPHA_OPAQUE - decreasingAlpha;
-    }
-
-    /**
-     * Calculate the width of a gesture trail.
-     * A gesture trail starts from the width of mTrailStartWidth and reduces its width in proportion
-     * to the elapsed time. After mTrailEndWidth has been passed, the width becomes mTraiLEndWidth.
-     *
-     * @param elapsedTime the elapsed time since a trail has been made.
-     * @param params gesture trail display parameters
-     * @return the width of a gesture trail
-     */
-    private static float getWidth(final int elapsedTime, final Params params) {
-        final float deltaWidth = params.mTrailStartWidth - params.mTrailEndWidth;
-        return params.mTrailStartWidth - (deltaWidth * elapsedTime) / params.mTrailLingerDuration;
-    }
-
-    private final RoundedLine mRoundedLine = new RoundedLine();
-    private final Rect mRoundedLineBounds = new Rect();
-
-    /**
-     * Draw gesture trail
-     * @param canvas The canvas to draw the gesture trail
-     * @param paint The paint object to be used to draw the gesture trail
-     * @param outBoundsRect the bounding box of this gesture trail drawing
-     * @param params The drawing parameters of gesture trail
-     * @return true if some gesture trails remain to be drawn
-     */
-    public boolean drawGestureTrail(final Canvas canvas, final Paint paint,
-            final Rect outBoundsRect, final Params params) {
-        synchronized (mEventTimes) {
-            return drawGestureTrailLocked(canvas, paint, outBoundsRect, params);
-        }
-    }
-
-    private boolean drawGestureTrailLocked(final Canvas canvas, final Paint paint,
-            final Rect outBoundsRect, final Params params) {
-        // Initialize bounds rectangle.
-        outBoundsRect.setEmpty();
-        final int trailSize = mEventTimes.getLength();
-        if (trailSize == 0) {
-            return false;
-        }
-
-        final int[] eventTimes = mEventTimes.getPrimitiveArray();
-        final int[] xCoords = mXCoordinates.getPrimitiveArray();
-        final int[] yCoords = mYCoordinates.getPrimitiveArray();
-        final int[] pointTypes = mPointTypes.getPrimitiveArray();
-        final int sinceDown = (int)(SystemClock.uptimeMillis() - mCurrentTimeBase);
-        int startIndex;
-        for (startIndex = mTrailStartIndex; startIndex < trailSize; startIndex++) {
-            final int elapsedTime = sinceDown - eventTimes[startIndex];
-            // Skip too old trail points.
-            if (elapsedTime < params.mTrailLingerDuration) {
-                break;
-            }
-        }
-        mTrailStartIndex = startIndex;
-
-        if (startIndex < trailSize) {
-            paint.setColor(params.mTrailColor);
-            paint.setStyle(Paint.Style.FILL);
-            final RoundedLine roundedLine = mRoundedLine;
-            int p1x = getXCoordValue(xCoords[startIndex]);
-            int p1y = yCoords[startIndex];
-            final int lastTime = sinceDown - eventTimes[startIndex];
-            float r1 = getWidth(lastTime, params) / 2.0f;
-            for (int i = startIndex + 1; i < trailSize; i++) {
-                final int elapsedTime = sinceDown - eventTimes[i];
-                final int p2x = getXCoordValue(xCoords[i]);
-                final int p2y = yCoords[i];
-                final float r2 = getWidth(elapsedTime, params) / 2.0f;
-                // Draw trail line only when the current point isn't a down point.
-                if (!isDownEventXCoord(xCoords[i])) {
-                    final float body1 = r1 * params.mTrailBodyRatio;
-                    final float body2 = r2 * params.mTrailBodyRatio;
-                    final Path path = roundedLine.makePath(p1x, p1y, body1, p2x, p2y, body2);
-                    if (!path.isEmpty()) {
-                        roundedLine.getBounds(mRoundedLineBounds);
-                        if (params.mTrailShadowEnabled) {
-                            final float shadow2 = r2 * params.mTrailShadowRatio;
-                            paint.setShadowLayer(shadow2, 0.0f, 0.0f, params.mTrailColor);
-                            final int shadowInset = -(int)Math.ceil(shadow2);
-                            mRoundedLineBounds.inset(shadowInset, shadowInset);
-                        }
-                        // Take union for the bounds.
-                        outBoundsRect.union(mRoundedLineBounds);
-                        final int alpha = getAlpha(elapsedTime, params);
-                        paint.setAlpha(alpha);
-                        canvas.drawPath(path, paint);
-                    }
-                }
-                p1x = p2x;
-                p1y = p2y;
-                r1 = r2;
-            }
-            if (DEBUG_SHOW_POINTS) {
-                debugDrawPoints(canvas, startIndex, trailSize, paint);
-            }
-        }
-
-        final int newSize = trailSize - startIndex;
-        if (newSize < startIndex) {
-            mTrailStartIndex = 0;
-            if (newSize > 0) {
-                System.arraycopy(eventTimes, startIndex, eventTimes, 0, newSize);
-                System.arraycopy(xCoords, startIndex, xCoords, 0, newSize);
-                System.arraycopy(yCoords, startIndex, yCoords, 0, newSize);
-                if (DEBUG_SHOW_POINTS) {
-                    System.arraycopy(pointTypes, startIndex, pointTypes, 0, newSize);
-                }
-            }
-            mEventTimes.setLength(newSize);
-            mXCoordinates.setLength(newSize);
-            mYCoordinates.setLength(newSize);
-            if (DEBUG_SHOW_POINTS) {
-                mPointTypes.setLength(newSize);
-            }
-            // The start index of the last segment of the stroke
-            // {@link mLastInterpolatedDrawIndex} should also be updated because all array
-            // elements have just been shifted for compaction or been zeroed.
-            mLastInterpolatedDrawIndex = Math.max(mLastInterpolatedDrawIndex - startIndex, 0);
-        }
-        return newSize > 0;
-    }
-
-    private void debugDrawPoints(final Canvas canvas, final int startIndex, final int endIndex,
-            final Paint paint) {
-        final int[] xCoords = mXCoordinates.getPrimitiveArray();
-        final int[] yCoords = mYCoordinates.getPrimitiveArray();
-        final int[] pointTypes = mPointTypes.getPrimitiveArray();
-        // {@link Paint} that is zero width stroke and anti alias off draws exactly 1 pixel.
-        paint.setAntiAlias(false);
-        paint.setStrokeWidth(0);
-        for (int i = startIndex; i < endIndex; i++) {
-            final int pointType = pointTypes[i];
-            if (pointType == POINT_TYPE_INTERPOLATED) {
-                paint.setColor(Color.RED);
-            } else if (pointType == POINT_TYPE_SAMPLED) {
-                paint.setColor(0xFFA000FF);
-            } else {
-                paint.setColor(Color.GREEN);
-            }
-            canvas.drawPoint(getXCoordValue(xCoords[i]), yCoords[i], paint);
-        }
-        paint.setAntiAlias(true);
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailDrawingParams.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailDrawingParams.java
new file mode 100644
index 0000000..088f03a
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailDrawingParams.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.TypedArray;
+
+import com.android.inputmethod.latin.R;
+
+/**
+ * This class holds parameters to control how a gesture trail is drawn and animated on the screen.
+ *
+ * On the other hand, {@link GestureStrokeDrawingParams} class controls how each gesture stroke is
+ * sampled and interpolated. This class controls how those gesture strokes are displayed as a
+ * gesture trail and animated on the screen.
+ *
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutStartDelay
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailFadeoutDuration
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailUpdateInterval
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailColor
+ * @attr ref R.styleable#MainKeyboardView_gestureTrailWidth
+ */
+final class GestureTrailDrawingParams {
+    private static final int FADEOUT_START_DELAY_FOR_DEBUG = 2000; // millisecond
+    private static final int FADEOUT_DURATION_FOR_DEBUG = 200; // millisecond
+
+    public final int mTrailColor;
+    public final float mTrailStartWidth;
+    public final float mTrailEndWidth;
+    public final float mTrailBodyRatio;
+    public boolean mTrailShadowEnabled;
+    public final float mTrailShadowRatio;
+    public final int mFadeoutStartDelay;
+    public final int mFadeoutDuration;
+    public final int mUpdateInterval;
+
+    public final int mTrailLingerDuration;
+
+    public GestureTrailDrawingParams(final TypedArray mainKeyboardViewAttr) {
+        mTrailColor = mainKeyboardViewAttr.getColor(
+                R.styleable.MainKeyboardView_gestureTrailColor, 0);
+        mTrailStartWidth = mainKeyboardViewAttr.getDimension(
+                R.styleable.MainKeyboardView_gestureTrailStartWidth, 0.0f);
+        mTrailEndWidth = mainKeyboardViewAttr.getDimension(
+                R.styleable.MainKeyboardView_gestureTrailEndWidth, 0.0f);
+        final int PERCENTAGE_INT = 100;
+        mTrailBodyRatio = (float)mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureTrailBodyRatio, PERCENTAGE_INT)
+                / (float)PERCENTAGE_INT;
+        final int trailShadowRatioInt = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureTrailShadowRatio, 0);
+        mTrailShadowEnabled = (trailShadowRatioInt > 0);
+        mTrailShadowRatio = (float)trailShadowRatioInt / (float)PERCENTAGE_INT;
+        mFadeoutStartDelay = GestureTrailDrawingPoints.DEBUG_SHOW_POINTS
+                ? FADEOUT_START_DELAY_FOR_DEBUG
+                : mainKeyboardViewAttr.getInt(
+                        R.styleable.MainKeyboardView_gestureTrailFadeoutStartDelay, 0);
+        mFadeoutDuration = GestureTrailDrawingPoints.DEBUG_SHOW_POINTS
+                ? FADEOUT_DURATION_FOR_DEBUG
+                : mainKeyboardViewAttr.getInt(
+                        R.styleable.MainKeyboardView_gestureTrailFadeoutDuration, 0);
+        mTrailLingerDuration = mFadeoutStartDelay + mFadeoutDuration;
+        mUpdateInterval = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_gestureTrailUpdateInterval, 0);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailDrawingPoints.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailDrawingPoints.java
new file mode 100644
index 0000000..bf4c4da
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailDrawingPoints.java
@@ -0,0 +1,276 @@
+/*
+ * 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.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.os.SystemClock;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.ResizableIntArray;
+
+/**
+ * This class holds drawing points to represent a gesture trail. The gesture trail may contain
+ * multiple non-contiguous gesture strokes and will be animated asynchronously from gesture input.
+ *
+ * On the other hand, {@link GestureStrokeDrawingPoints} class holds drawing points of each gesture
+ * stroke. This class holds drawing points of those gesture strokes to draw as a gesture trail.
+ * Drawing points in this class will be asynchronously removed when fading out animation goes.
+ */
+final class GestureTrailDrawingPoints {
+    public static final boolean DEBUG_SHOW_POINTS = false;
+    public static final int POINT_TYPE_SAMPLED = 1;
+    public static final int POINT_TYPE_INTERPOLATED = 2;
+
+    private static final int DEFAULT_CAPACITY = GestureStrokeDrawingPoints.PREVIEW_CAPACITY;
+
+    // These three {@link ResizableIntArray}s should be synchronized by {@link #mEventTimes}.
+    private final ResizableIntArray mXCoordinates = new ResizableIntArray(DEFAULT_CAPACITY);
+    private final ResizableIntArray mYCoordinates = new ResizableIntArray(DEFAULT_CAPACITY);
+    private final ResizableIntArray mEventTimes = new ResizableIntArray(DEFAULT_CAPACITY);
+    private final ResizableIntArray mPointTypes = new ResizableIntArray(
+            DEBUG_SHOW_POINTS ? DEFAULT_CAPACITY : 0);
+    private int mCurrentStrokeId = -1;
+    // The wall time of the zero value in {@link #mEventTimes}
+    private long mCurrentTimeBase;
+    private int mTrailStartIndex;
+    private int mLastInterpolatedDrawIndex;
+
+    // Use this value as imaginary zero because x-coordinates may be zero.
+    private static final int DOWN_EVENT_MARKER = -128;
+
+    private static int markAsDownEvent(final int xCoord) {
+        return DOWN_EVENT_MARKER - xCoord;
+    }
+
+    private static boolean isDownEventXCoord(final int xCoordOrMark) {
+        return xCoordOrMark <= DOWN_EVENT_MARKER;
+    }
+
+    private static int getXCoordValue(final int xCoordOrMark) {
+        return isDownEventXCoord(xCoordOrMark)
+                ? DOWN_EVENT_MARKER - xCoordOrMark : xCoordOrMark;
+    }
+
+    public void addStroke(final GestureStrokeDrawingPoints stroke, final long downTime) {
+        synchronized (mEventTimes) {
+            addStrokeLocked(stroke, downTime);
+        }
+    }
+
+    private void addStrokeLocked(final GestureStrokeDrawingPoints stroke, final long downTime) {
+        final int trailSize = mEventTimes.getLength();
+        stroke.appendPreviewStroke(mEventTimes, mXCoordinates, mYCoordinates, mPointTypes);
+        if (mEventTimes.getLength() == trailSize) {
+            return;
+        }
+        final int[] eventTimes = mEventTimes.getPrimitiveArray();
+        final int strokeId = stroke.getGestureStrokeId();
+        // Because interpolation algorithm in {@link GestureStrokeDrawingPoints} can't determine
+        // the interpolated points in the last segment of gesture stroke, it may need recalculation
+        // of interpolation when new segments are added to the stroke.
+        // {@link #mLastInterpolatedDrawIndex} holds the start index of the last segment. It may
+        // be updated by the interpolation
+        // {@link GestureStrokeDrawingPoints#interpolatePreviewStroke}
+        // or by animation {@link #drawGestureTrail(Canvas,Paint,Rect,GestureTrailDrawingParams)}
+        // below.
+        final int lastInterpolatedIndex = (strokeId == mCurrentStrokeId)
+                ? mLastInterpolatedDrawIndex : trailSize;
+        mLastInterpolatedDrawIndex = stroke.interpolateStrokeAndReturnStartIndexOfLastSegment(
+                lastInterpolatedIndex, mEventTimes, mXCoordinates, mYCoordinates, mPointTypes);
+        if (strokeId != mCurrentStrokeId) {
+            final int elapsedTime = (int)(downTime - mCurrentTimeBase);
+            for (int i = mTrailStartIndex; i < trailSize; i++) {
+                // Decay the previous strokes' event times.
+                eventTimes[i] -= elapsedTime;
+            }
+            final int[] xCoords = mXCoordinates.getPrimitiveArray();
+            final int downIndex = trailSize;
+            xCoords[downIndex] = markAsDownEvent(xCoords[downIndex]);
+            mCurrentTimeBase = downTime - eventTimes[downIndex];
+            mCurrentStrokeId = strokeId;
+        }
+    }
+
+    /**
+     * Calculate the alpha of a gesture trail.
+     * A gesture trail starts from fully opaque. After mFadeStartDelay has been passed, the alpha
+     * of a trail reduces in proportion to the elapsed time. Then after mFadeDuration has been
+     * passed, a trail becomes fully transparent.
+     *
+     * @param elapsedTime the elapsed time since a trail has been made.
+     * @param params gesture trail display parameters
+     * @return the width of a gesture trail
+     */
+    private static int getAlpha(final int elapsedTime, final GestureTrailDrawingParams params) {
+        if (elapsedTime < params.mFadeoutStartDelay) {
+            return Constants.Color.ALPHA_OPAQUE;
+        }
+        final int decreasingAlpha = Constants.Color.ALPHA_OPAQUE
+                * (elapsedTime - params.mFadeoutStartDelay)
+                / params.mFadeoutDuration;
+        return Constants.Color.ALPHA_OPAQUE - decreasingAlpha;
+    }
+
+    /**
+     * Calculate the width of a gesture trail.
+     * A gesture trail starts from the width of mTrailStartWidth and reduces its width in proportion
+     * to the elapsed time. After mTrailEndWidth has been passed, the width becomes mTraiLEndWidth.
+     *
+     * @param elapsedTime the elapsed time since a trail has been made.
+     * @param params gesture trail display parameters
+     * @return the width of a gesture trail
+     */
+    private static float getWidth(final int elapsedTime, final GestureTrailDrawingParams params) {
+        final float deltaWidth = params.mTrailStartWidth - params.mTrailEndWidth;
+        return params.mTrailStartWidth - (deltaWidth * elapsedTime) / params.mTrailLingerDuration;
+    }
+
+    private final RoundedLine mRoundedLine = new RoundedLine();
+    private final Rect mRoundedLineBounds = new Rect();
+
+    /**
+     * Draw gesture trail
+     * @param canvas The canvas to draw the gesture trail
+     * @param paint The paint object to be used to draw the gesture trail
+     * @param outBoundsRect the bounding box of this gesture trail drawing
+     * @param params The drawing parameters of gesture trail
+     * @return true if some gesture trails remain to be drawn
+     */
+    public boolean drawGestureTrail(final Canvas canvas, final Paint paint,
+            final Rect outBoundsRect, final GestureTrailDrawingParams params) {
+        synchronized (mEventTimes) {
+            return drawGestureTrailLocked(canvas, paint, outBoundsRect, params);
+        }
+    }
+
+    private boolean drawGestureTrailLocked(final Canvas canvas, final Paint paint,
+            final Rect outBoundsRect, final GestureTrailDrawingParams params) {
+        // Initialize bounds rectangle.
+        outBoundsRect.setEmpty();
+        final int trailSize = mEventTimes.getLength();
+        if (trailSize == 0) {
+            return false;
+        }
+
+        final int[] eventTimes = mEventTimes.getPrimitiveArray();
+        final int[] xCoords = mXCoordinates.getPrimitiveArray();
+        final int[] yCoords = mYCoordinates.getPrimitiveArray();
+        final int[] pointTypes = mPointTypes.getPrimitiveArray();
+        final int sinceDown = (int)(SystemClock.uptimeMillis() - mCurrentTimeBase);
+        int startIndex;
+        for (startIndex = mTrailStartIndex; startIndex < trailSize; startIndex++) {
+            final int elapsedTime = sinceDown - eventTimes[startIndex];
+            // Skip too old trail points.
+            if (elapsedTime < params.mTrailLingerDuration) {
+                break;
+            }
+        }
+        mTrailStartIndex = startIndex;
+
+        if (startIndex < trailSize) {
+            paint.setColor(params.mTrailColor);
+            paint.setStyle(Paint.Style.FILL);
+            final RoundedLine roundedLine = mRoundedLine;
+            int p1x = getXCoordValue(xCoords[startIndex]);
+            int p1y = yCoords[startIndex];
+            final int lastTime = sinceDown - eventTimes[startIndex];
+            float r1 = getWidth(lastTime, params) / 2.0f;
+            for (int i = startIndex + 1; i < trailSize; i++) {
+                final int elapsedTime = sinceDown - eventTimes[i];
+                final int p2x = getXCoordValue(xCoords[i]);
+                final int p2y = yCoords[i];
+                final float r2 = getWidth(elapsedTime, params) / 2.0f;
+                // Draw trail line only when the current point isn't a down point.
+                if (!isDownEventXCoord(xCoords[i])) {
+                    final float body1 = r1 * params.mTrailBodyRatio;
+                    final float body2 = r2 * params.mTrailBodyRatio;
+                    final Path path = roundedLine.makePath(p1x, p1y, body1, p2x, p2y, body2);
+                    if (!path.isEmpty()) {
+                        roundedLine.getBounds(mRoundedLineBounds);
+                        if (params.mTrailShadowEnabled) {
+                            final float shadow2 = r2 * params.mTrailShadowRatio;
+                            paint.setShadowLayer(shadow2, 0.0f, 0.0f, params.mTrailColor);
+                            final int shadowInset = -(int)Math.ceil(shadow2);
+                            mRoundedLineBounds.inset(shadowInset, shadowInset);
+                        }
+                        // Take union for the bounds.
+                        outBoundsRect.union(mRoundedLineBounds);
+                        final int alpha = getAlpha(elapsedTime, params);
+                        paint.setAlpha(alpha);
+                        canvas.drawPath(path, paint);
+                    }
+                }
+                p1x = p2x;
+                p1y = p2y;
+                r1 = r2;
+            }
+            if (DEBUG_SHOW_POINTS) {
+                debugDrawPoints(canvas, startIndex, trailSize, paint);
+            }
+        }
+
+        final int newSize = trailSize - startIndex;
+        if (newSize < startIndex) {
+            mTrailStartIndex = 0;
+            if (newSize > 0) {
+                System.arraycopy(eventTimes, startIndex, eventTimes, 0, newSize);
+                System.arraycopy(xCoords, startIndex, xCoords, 0, newSize);
+                System.arraycopy(yCoords, startIndex, yCoords, 0, newSize);
+                if (DEBUG_SHOW_POINTS) {
+                    System.arraycopy(pointTypes, startIndex, pointTypes, 0, newSize);
+                }
+            }
+            mEventTimes.setLength(newSize);
+            mXCoordinates.setLength(newSize);
+            mYCoordinates.setLength(newSize);
+            if (DEBUG_SHOW_POINTS) {
+                mPointTypes.setLength(newSize);
+            }
+            // The start index of the last segment of the stroke
+            // {@link mLastInterpolatedDrawIndex} should also be updated because all array
+            // elements have just been shifted for compaction or been zeroed.
+            mLastInterpolatedDrawIndex = Math.max(mLastInterpolatedDrawIndex - startIndex, 0);
+        }
+        return newSize > 0;
+    }
+
+    private void debugDrawPoints(final Canvas canvas, final int startIndex, final int endIndex,
+            final Paint paint) {
+        final int[] xCoords = mXCoordinates.getPrimitiveArray();
+        final int[] yCoords = mYCoordinates.getPrimitiveArray();
+        final int[] pointTypes = mPointTypes.getPrimitiveArray();
+        // {@link Paint} that is zero width stroke and anti alias off draws exactly 1 pixel.
+        paint.setAntiAlias(false);
+        paint.setStrokeWidth(0);
+        for (int i = startIndex; i < endIndex; i++) {
+            final int pointType = pointTypes[i];
+            if (pointType == POINT_TYPE_INTERPOLATED) {
+                paint.setColor(Color.RED);
+            } else if (pointType == POINT_TYPE_SAMPLED) {
+                paint.setColor(0xFFA000FF);
+            } else {
+                paint.setColor(Color.GREEN);
+            }
+            canvas.drawPoint(getXCoordValue(xCoords[i]), yCoords[i], paint);
+        }
+        paint.setAntiAlias(true);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsDrawingPreview.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsDrawingPreview.java
new file mode 100644
index 0000000..f7bd7ef
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsDrawingPreview.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.os.Handler;
+import android.util.SparseArray;
+
+import com.android.inputmethod.keyboard.PointerTracker;
+
+/**
+ * Draw preview graphics of multiple gesture trails during gesture input.
+ */
+public final class GestureTrailsDrawingPreview extends AbstractDrawingPreview implements Runnable {
+    private final SparseArray<GestureTrailDrawingPoints> mGestureTrails = new SparseArray<>();
+    private final GestureTrailDrawingParams mDrawingParams;
+    private final Paint mGesturePaint;
+    private int mOffscreenWidth;
+    private int mOffscreenHeight;
+    private int mOffscreenOffsetY;
+    private Bitmap mOffscreenBuffer;
+    private final Canvas mOffscreenCanvas = new Canvas();
+    private final Rect mOffscreenSrcRect = new Rect();
+    private final Rect mDirtyRect = new Rect();
+    private final Rect mGestureTrailBoundsRect = new Rect(); // per trail
+
+    private final Handler mDrawingHandler = new Handler();
+
+    public GestureTrailsDrawingPreview(final TypedArray mainKeyboardViewAttr) {
+        mDrawingParams = new GestureTrailDrawingParams(mainKeyboardViewAttr);
+        final Paint gesturePaint = new Paint();
+        gesturePaint.setAntiAlias(true);
+        gesturePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
+        mGesturePaint = gesturePaint;
+    }
+
+    @Override
+    public void setKeyboardViewGeometry(final int[] originCoords, final int width,
+            final int height) {
+        super.setKeyboardViewGeometry(originCoords, width, height);
+        mOffscreenOffsetY = (int)(height
+                * GestureStrokeRecognitionPoints.EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
+        mOffscreenWidth = width;
+        mOffscreenHeight = mOffscreenOffsetY + height;
+    }
+
+    @Override
+    public void onDeallocateMemory() {
+        freeOffscreenBuffer();
+    }
+
+    private void freeOffscreenBuffer() {
+        mOffscreenCanvas.setBitmap(null);
+        mOffscreenCanvas.setMatrix(null);
+        if (mOffscreenBuffer != null) {
+            mOffscreenBuffer.recycle();
+            mOffscreenBuffer = null;
+        }
+    }
+
+    private void mayAllocateOffscreenBuffer() {
+        if (mOffscreenBuffer != null && mOffscreenBuffer.getWidth() == mOffscreenWidth
+                && mOffscreenBuffer.getHeight() == mOffscreenHeight) {
+            return;
+        }
+        freeOffscreenBuffer();
+        mOffscreenBuffer = Bitmap.createBitmap(
+                mOffscreenWidth, mOffscreenHeight, Bitmap.Config.ARGB_8888);
+        mOffscreenCanvas.setBitmap(mOffscreenBuffer);
+        mOffscreenCanvas.translate(0, mOffscreenOffsetY);
+    }
+
+    private boolean drawGestureTrails(final Canvas offscreenCanvas, final Paint paint,
+            final Rect dirtyRect) {
+        // Clear previous dirty rectangle.
+        if (!dirtyRect.isEmpty()) {
+            paint.setColor(Color.TRANSPARENT);
+            paint.setStyle(Paint.Style.FILL);
+            offscreenCanvas.drawRect(dirtyRect, paint);
+        }
+        dirtyRect.setEmpty();
+        boolean needsUpdatingGestureTrail = false;
+        // Draw gesture trails to offscreen buffer.
+        synchronized (mGestureTrails) {
+            // Trails count == fingers count that have ever been active.
+            final int trailsCount = mGestureTrails.size();
+            for (int index = 0; index < trailsCount; index++) {
+                final GestureTrailDrawingPoints trail = mGestureTrails.valueAt(index);
+                needsUpdatingGestureTrail |= trail.drawGestureTrail(offscreenCanvas, paint,
+                        mGestureTrailBoundsRect, mDrawingParams);
+                // {@link #mGestureTrailBoundsRect} has bounding box of the trail.
+                dirtyRect.union(mGestureTrailBoundsRect);
+            }
+        }
+        return needsUpdatingGestureTrail;
+    }
+
+    @Override
+    public void run() {
+        // Update preview.
+        invalidateDrawingView();
+    }
+
+    /**
+     * Draws the preview
+     * @param canvas The canvas where the preview is drawn.
+     */
+    @Override
+    public void drawPreview(final Canvas canvas) {
+        if (!isPreviewEnabled()) {
+            return;
+        }
+        mayAllocateOffscreenBuffer();
+        // Draw gesture trails to offscreen buffer.
+        final boolean needsUpdatingGestureTrail = drawGestureTrails(
+                mOffscreenCanvas, mGesturePaint, mDirtyRect);
+        if (needsUpdatingGestureTrail) {
+            mDrawingHandler.removeCallbacks(this);
+            mDrawingHandler.postDelayed(this, mDrawingParams.mUpdateInterval);
+        }
+        // Transfer offscreen buffer to screen.
+        if (!mDirtyRect.isEmpty()) {
+            mOffscreenSrcRect.set(mDirtyRect);
+            mOffscreenSrcRect.offset(0, mOffscreenOffsetY);
+            canvas.drawBitmap(mOffscreenBuffer, mOffscreenSrcRect, mDirtyRect, null);
+            // Note: Defer clearing the dirty rectangle here because we will get cleared
+            // rectangle on the canvas.
+        }
+    }
+
+    /**
+     * Set the position of the preview.
+     * @param tracker The new location of the preview is based on the points in PointerTracker.
+     */
+    @Override
+    public void setPreviewPosition(final PointerTracker tracker) {
+        if (!isPreviewEnabled()) {
+            return;
+        }
+        GestureTrailDrawingPoints trail;
+        synchronized (mGestureTrails) {
+            trail = mGestureTrails.get(tracker.mPointerId);
+            if (trail == null) {
+                trail = new GestureTrailDrawingPoints();
+                mGestureTrails.put(tracker.mPointerId, trail);
+            }
+        }
+        trail.addStroke(tracker.getGestureStrokeDrawingPoints(), tracker.getDownTime());
+
+        // TODO: Should narrow the invalidate region.
+        invalidateDrawingView();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java b/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java
deleted file mode 100644
index 19e9955..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/GestureTrailsPreview.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
-import android.graphics.Rect;
-import android.os.Message;
-import android.util.SparseArray;
-import android.view.View;
-
-import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.keyboard.internal.GestureTrail.Params;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper;
-
-/**
- * Draw gesture trail preview graphics during gesture.
- */
-public final class GestureTrailsPreview extends AbstractDrawingPreview {
-    private final SparseArray<GestureTrail> mGestureTrails = CollectionUtils.newSparseArray();
-    private final Params mGestureTrailParams;
-    private final Paint mGesturePaint;
-    private int mOffscreenWidth;
-    private int mOffscreenHeight;
-    private int mOffscreenOffsetY;
-    private Bitmap mOffscreenBuffer;
-    private final Canvas mOffscreenCanvas = new Canvas();
-    private final Rect mOffscreenSrcRect = new Rect();
-    private final Rect mDirtyRect = new Rect();
-    private final Rect mGestureTrailBoundsRect = new Rect(); // per trail
-
-    private final DrawingHandler mDrawingHandler;
-
-    private static final class DrawingHandler
-            extends StaticInnerHandlerWrapper<GestureTrailsPreview> {
-        private static final int MSG_UPDATE_GESTURE_TRAIL = 0;
-
-        private final Params mGestureTrailParams;
-
-        public DrawingHandler(final GestureTrailsPreview outerInstance,
-                final Params gestureTrailParams) {
-            super(outerInstance);
-            mGestureTrailParams = gestureTrailParams;
-        }
-
-        @Override
-        public void handleMessage(final Message msg) {
-            final GestureTrailsPreview preview = getOuterInstance();
-            if (preview == null) return;
-            switch (msg.what) {
-            case MSG_UPDATE_GESTURE_TRAIL:
-                preview.getDrawingView().invalidate();
-                break;
-            }
-        }
-
-        public void postUpdateGestureTrailPreview() {
-            removeMessages(MSG_UPDATE_GESTURE_TRAIL);
-            sendMessageDelayed(obtainMessage(MSG_UPDATE_GESTURE_TRAIL),
-                    mGestureTrailParams.mUpdateInterval);
-        }
-    }
-
-    public GestureTrailsPreview(final View drawingView, final TypedArray mainKeyboardViewAttr) {
-        super(drawingView);
-        mGestureTrailParams = new Params(mainKeyboardViewAttr);
-        mDrawingHandler = new DrawingHandler(this, mGestureTrailParams);
-        final Paint gesturePaint = new Paint();
-        gesturePaint.setAntiAlias(true);
-        gesturePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
-        mGesturePaint = gesturePaint;
-    }
-
-    @Override
-    public void setKeyboardGeometry(final int[] originCoords, final int width, final int height) {
-        mOffscreenOffsetY = (int)(
-                height * GestureStroke.EXTRA_GESTURE_TRAIL_AREA_ABOVE_KEYBOARD_RATIO);
-        mOffscreenWidth = width;
-        mOffscreenHeight = mOffscreenOffsetY + height;
-    }
-
-    @Override
-    public void onDetachFromWindow() {
-        freeOffscreenBuffer();
-    }
-
-    public void deallocateMemory() {
-        freeOffscreenBuffer();
-    }
-
-    private void freeOffscreenBuffer() {
-        mOffscreenCanvas.setBitmap(null);
-        mOffscreenCanvas.setMatrix(null);
-        if (mOffscreenBuffer != null) {
-            mOffscreenBuffer.recycle();
-            mOffscreenBuffer = null;
-        }
-    }
-
-    private void mayAllocateOffscreenBuffer() {
-        if (mOffscreenBuffer != null && mOffscreenBuffer.getWidth() == mOffscreenWidth
-                && mOffscreenBuffer.getHeight() == mOffscreenHeight) {
-            return;
-        }
-        freeOffscreenBuffer();
-        mOffscreenBuffer = Bitmap.createBitmap(
-                mOffscreenWidth, mOffscreenHeight, Bitmap.Config.ARGB_8888);
-        mOffscreenCanvas.setBitmap(mOffscreenBuffer);
-        mOffscreenCanvas.translate(0, mOffscreenOffsetY);
-    }
-
-    private boolean drawGestureTrails(final Canvas offscreenCanvas, final Paint paint,
-            final Rect dirtyRect) {
-        // Clear previous dirty rectangle.
-        if (!dirtyRect.isEmpty()) {
-            paint.setColor(Color.TRANSPARENT);
-            paint.setStyle(Paint.Style.FILL);
-            offscreenCanvas.drawRect(dirtyRect, paint);
-        }
-        dirtyRect.setEmpty();
-        boolean needsUpdatingGestureTrail = false;
-        // Draw gesture trails to offscreen buffer.
-        synchronized (mGestureTrails) {
-            // Trails count == fingers count that have ever been active.
-            final int trailsCount = mGestureTrails.size();
-            for (int index = 0; index < trailsCount; index++) {
-                final GestureTrail trail = mGestureTrails.valueAt(index);
-                needsUpdatingGestureTrail |= trail.drawGestureTrail(offscreenCanvas, paint,
-                        mGestureTrailBoundsRect, mGestureTrailParams);
-                // {@link #mGestureTrailBoundsRect} has bounding box of the trail.
-                dirtyRect.union(mGestureTrailBoundsRect);
-            }
-        }
-        return needsUpdatingGestureTrail;
-    }
-
-    /**
-     * Draws the preview
-     * @param canvas The canvas where the preview is drawn.
-     */
-    @Override
-    public void drawPreview(final Canvas canvas) {
-        if (!isPreviewEnabled()) {
-            return;
-        }
-        mayAllocateOffscreenBuffer();
-        // Draw gesture trails to offscreen buffer.
-        final boolean needsUpdatingGestureTrail = drawGestureTrails(
-                mOffscreenCanvas, mGesturePaint, mDirtyRect);
-        if (needsUpdatingGestureTrail) {
-            mDrawingHandler.postUpdateGestureTrailPreview();
-        }
-        // Transfer offscreen buffer to screen.
-        if (!mDirtyRect.isEmpty()) {
-            mOffscreenSrcRect.set(mDirtyRect);
-            mOffscreenSrcRect.offset(0, mOffscreenOffsetY);
-            canvas.drawBitmap(mOffscreenBuffer, mOffscreenSrcRect, mDirtyRect, null);
-            // Note: Defer clearing the dirty rectangle here because we will get cleared
-            // rectangle on the canvas.
-        }
-    }
-
-    /**
-     * Set the position of the preview.
-     * @param tracker The new location of the preview is based on the points in PointerTracker.
-     */
-    @Override
-    public void setPreviewPosition(final PointerTracker tracker) {
-        if (!isPreviewEnabled()) {
-            return;
-        }
-        GestureTrail trail;
-        synchronized (mGestureTrails) {
-            trail = mGestureTrails.get(tracker.mPointerId);
-            if (trail == null) {
-                trail = new GestureTrail();
-                mGestureTrails.put(tracker.mPointerId, trail);
-            }
-        }
-        trail.addStroke(tracker.getGestureStrokeWithPreviewPoints(), tracker.getDownTime());
-
-        // TODO: Should narrow the invalidate region.
-        getDrawingView().invalidate();
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
index b528b69..07ac06b 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
@@ -16,7 +16,6 @@
 
 package com.android.inputmethod.keyboard.internal;
 
-import android.content.res.ColorStateList;
 import android.graphics.Typeface;
 
 import com.android.inputmethod.latin.utils.ResourceUtils;
@@ -33,9 +32,10 @@
     public int mHintLabelSize;
     public int mPreviewTextSize;
 
-    public ColorStateList mTextColorStateList;
+    public int mTextColor;
     public int mTextInactivatedColor;
     public int mTextShadowColor;
+    public int mFunctionalTextColor;
     public int mHintLetterColor;
     public int mHintLabelColor;
     public int mShiftedLetterHintInactivatedColor;
@@ -58,9 +58,10 @@
         mHintLabelSize = copyFrom.mHintLabelSize;
         mPreviewTextSize = copyFrom.mPreviewTextSize;
 
-        mTextColorStateList = copyFrom.mTextColorStateList;
+        mTextColor = copyFrom.mTextColor;
         mTextInactivatedColor = copyFrom.mTextInactivatedColor;
         mTextShadowColor = copyFrom.mTextShadowColor;
+        mFunctionalTextColor = copyFrom.mFunctionalTextColor;
         mHintLetterColor = copyFrom.mHintLetterColor;
         mHintLabelColor = copyFrom.mHintLabelColor;
         mShiftedLetterHintInactivatedColor = copyFrom.mShiftedLetterHintInactivatedColor;
@@ -90,10 +91,11 @@
                 attr.mShiftedLetterHintRatio, mShiftedLetterHintSize);
         mHintLabelSize = selectTextSize(keyHeight, attr.mHintLabelRatio, mHintLabelSize);
         mPreviewTextSize = selectTextSize(keyHeight, attr.mPreviewTextRatio, mPreviewTextSize);
-        mTextColorStateList =
-                attr.mTextColorStateList != null ? attr.mTextColorStateList : mTextColorStateList;
+
+        mTextColor = selectColor(attr.mTextColor, mTextColor);
         mTextInactivatedColor = selectColor(attr.mTextInactivatedColor, mTextInactivatedColor);
         mTextShadowColor = selectColor(attr.mTextShadowColor, mTextShadowColor);
+        mFunctionalTextColor = selectColor(attr.mFunctionalTextColor, mFunctionalTextColor);
         mHintLetterColor = selectColor(attr.mHintLetterColor, mHintLetterColor);
         mHintLabelColor = selectColor(attr.mHintLabelColor, mHintLabelColor);
         mShiftedLetterHintInactivatedColor = selectColor(
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java
new file mode 100644
index 0000000..cd29c8d
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewChoreographer.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.AccelerateInterpolator;
+import android.view.animation.DecelerateInterpolator;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+import com.android.inputmethod.latin.utils.ViewLayoutUtils;
+
+import java.util.ArrayDeque;
+import java.util.HashMap;
+import java.util.HashSet;
+
+/**
+ * This class controls pop up key previews. This class decides:
+ * - what kind of key previews should be shown.
+ * - where key previews should be placed.
+ * - how key previews should be shown and dismissed.
+ */
+public final class KeyPreviewChoreographer {
+    // Free {@link KeyPreviewView} pool that can be used for key preview.
+    private final ArrayDeque<KeyPreviewView> mFreeKeyPreviewViews = new ArrayDeque<>();
+    // Map from {@link Key} to {@link KeyPreviewView} that is currently being displayed as key
+    // preview.
+    private final HashMap<Key,KeyPreviewView> mShowingKeyPreviewViews = new HashMap<>();
+
+    private final KeyPreviewDrawParams mParams;
+
+    public KeyPreviewChoreographer(final KeyPreviewDrawParams params) {
+        mParams = params;
+    }
+
+    public KeyPreviewView getKeyPreviewView(final Key key, final ViewGroup placerView) {
+        KeyPreviewView keyPreviewView = mShowingKeyPreviewViews.remove(key);
+        if (keyPreviewView != null) {
+            return keyPreviewView;
+        }
+        keyPreviewView = mFreeKeyPreviewViews.poll();
+        if (keyPreviewView != null) {
+            return keyPreviewView;
+        }
+        final Context context = placerView.getContext();
+        keyPreviewView = new KeyPreviewView(context, null /* attrs */);
+        keyPreviewView.setBackgroundResource(mParams.mPreviewBackgroundResId);
+        placerView.addView(keyPreviewView, ViewLayoutUtils.newLayoutParam(placerView, 0, 0));
+        return keyPreviewView;
+    }
+
+    public boolean isShowingKeyPreview(final Key key) {
+        return mShowingKeyPreviewViews.containsKey(key);
+    }
+
+    public void dismissAllKeyPreviews() {
+        for (final Key key : new HashSet<>(mShowingKeyPreviewViews.keySet())) {
+            dismissKeyPreview(key, false /* withAnimation */);
+        }
+    }
+
+    public void dismissKeyPreview(final Key key, final boolean withAnimation) {
+        if (key == null) {
+            return;
+        }
+        final KeyPreviewView keyPreviewView = mShowingKeyPreviewViews.get(key);
+        if (keyPreviewView == null) {
+            return;
+        }
+        final Object tag = keyPreviewView.getTag();
+        if (withAnimation) {
+            if (tag instanceof KeyPreviewAnimations) {
+                final KeyPreviewAnimations animation = (KeyPreviewAnimations)tag;
+                animation.startDismiss();
+                return;
+            }
+        }
+        // Dismiss preview without animation.
+        mShowingKeyPreviewViews.remove(key);
+        if (tag instanceof Animator) {
+            ((Animator)tag).cancel();
+        }
+        keyPreviewView.setTag(null);
+        keyPreviewView.setVisibility(View.INVISIBLE);
+        mFreeKeyPreviewViews.add(keyPreviewView);
+    }
+
+    public void placeAndShowKeyPreview(final Key key, final KeyboardIconsSet iconsSet,
+            final KeyDrawParams drawParams, final int keyboardViewWidth, final int[] keyboardOrigin,
+            final ViewGroup placerView, final boolean withAnimation) {
+        final KeyPreviewView keyPreviewView = getKeyPreviewView(key, placerView);
+        placeKeyPreview(
+                key, keyPreviewView, iconsSet, drawParams, keyboardViewWidth, keyboardOrigin);
+        showKeyPreview(key, keyPreviewView, withAnimation);
+    }
+
+    private void placeKeyPreview(final Key key, final KeyPreviewView keyPreviewView,
+            final KeyboardIconsSet iconsSet, final KeyDrawParams drawParams,
+            final int keyboardViewWidth, final int[] originCoords) {
+        keyPreviewView.setPreviewVisual(key, iconsSet, drawParams);
+        keyPreviewView.measure(
+                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        mParams.setGeometry(keyPreviewView);
+        final int previewWidth = keyPreviewView.getMeasuredWidth();
+        final int previewHeight = mParams.mPreviewHeight;
+        final int keyDrawWidth = key.getDrawWidth();
+        // The key preview is horizontally aligned with the center of the visible part of the
+        // parent key. If it doesn't fit in this {@link KeyboardView}, it is moved inward to fit and
+        // the left/right background is used if such background is specified.
+        final int keyPreviewPosition;
+        int previewX = key.getDrawX() - (previewWidth - keyDrawWidth) / 2
+                + CoordinateUtils.x(originCoords);
+        if (previewX < 0) {
+            previewX = 0;
+            keyPreviewPosition = KeyPreviewView.POSITION_LEFT;
+        } else if (previewX > keyboardViewWidth - previewWidth) {
+            previewX = keyboardViewWidth - previewWidth;
+            keyPreviewPosition = KeyPreviewView.POSITION_RIGHT;
+        } else {
+            keyPreviewPosition = KeyPreviewView.POSITION_MIDDLE;
+        }
+        final boolean hasMoreKeys = (key.getMoreKeys() != null);
+        keyPreviewView.setPreviewBackground(hasMoreKeys, keyPreviewPosition);
+        // The key preview is placed vertically above the top edge of the parent key with an
+        // arbitrary offset.
+        final int previewY = key.getY() - previewHeight + mParams.mPreviewOffset
+                + CoordinateUtils.y(originCoords);
+
+        ViewLayoutUtils.placeViewAt(
+                keyPreviewView, previewX, previewY, previewWidth, previewHeight);
+        keyPreviewView.setPivotX(previewWidth / 2.0f);
+        keyPreviewView.setPivotY(previewHeight);
+    }
+
+    private void showKeyPreview(final Key key, final KeyPreviewView keyPreviewView,
+            final boolean withAnimation) {
+        if (!withAnimation) {
+            keyPreviewView.setVisibility(View.VISIBLE);
+            mShowingKeyPreviewViews.put(key, keyPreviewView);
+            return;
+        }
+
+        // Show preview with animation.
+        final Animator showUpAnimation = createShowUpAniation(key, keyPreviewView);
+        final Animator dismissAnimation = createDismissAnimation(key, keyPreviewView);
+        final KeyPreviewAnimations animation = new KeyPreviewAnimations(
+                showUpAnimation, dismissAnimation);
+        keyPreviewView.setTag(animation);
+        animation.startShowUp();
+    }
+
+    private static final float KEY_PREVIEW_SHOW_UP_END_SCALE = 1.0f;
+    private static final AccelerateInterpolator ACCELERATE_INTERPOLATOR =
+            new AccelerateInterpolator();
+    private static final DecelerateInterpolator DECELERATE_INTERPOLATOR =
+            new DecelerateInterpolator();
+
+    private Animator createShowUpAniation(final Key key, final KeyPreviewView keyPreviewView) {
+        // TODO: Optimization for no scale animation and no duration.
+        final ObjectAnimator scaleXAnimation = ObjectAnimator.ofFloat(
+                keyPreviewView, View.SCALE_X, mParams.getShowUpStartScale(),
+                KEY_PREVIEW_SHOW_UP_END_SCALE);
+        final ObjectAnimator scaleYAnimation = ObjectAnimator.ofFloat(
+                keyPreviewView, View.SCALE_Y, mParams.getShowUpStartScale(),
+                KEY_PREVIEW_SHOW_UP_END_SCALE);
+        final AnimatorSet showUpAnimation = new AnimatorSet();
+        showUpAnimation.play(scaleXAnimation).with(scaleYAnimation);
+        showUpAnimation.setDuration(mParams.getShowUpDuration());
+        showUpAnimation.setInterpolator(DECELERATE_INTERPOLATOR);
+        showUpAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(final Animator animation) {
+                showKeyPreview(key, keyPreviewView, false /* withAnimation */);
+            }
+        });
+        return showUpAnimation;
+    }
+
+    private Animator createDismissAnimation(final Key key, final KeyPreviewView keyPreviewView) {
+        // TODO: Optimization for no scale animation and no duration.
+        final ObjectAnimator scaleXAnimation = ObjectAnimator.ofFloat(
+                keyPreviewView, View.SCALE_X, mParams.getDismissEndScale());
+        final ObjectAnimator scaleYAnimation = ObjectAnimator.ofFloat(
+                keyPreviewView, View.SCALE_Y, mParams.getDismissEndScale());
+        final AnimatorSet dismissAnimation = new AnimatorSet();
+        dismissAnimation.play(scaleXAnimation).with(scaleYAnimation);
+        final int dismissDuration = Math.min(
+                mParams.getDismissDuration(), mParams.getLingerTimeout());
+        dismissAnimation.setDuration(dismissDuration);
+        dismissAnimation.setInterpolator(ACCELERATE_INTERPOLATOR);
+        dismissAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(final Animator animation) {
+                dismissKeyPreview(key, false /* withAnimation */);
+            }
+        });
+        return dismissAnimation;
+    }
+
+    private static class KeyPreviewAnimations extends AnimatorListenerAdapter {
+        private final Animator mShowUpAnimation;
+        private final Animator mDismissAnimation;
+
+        public KeyPreviewAnimations(final Animator showUpAnimation,
+                final Animator dismissAnimation) {
+            mShowUpAnimation = showUpAnimation;
+            mDismissAnimation = dismissAnimation;
+        }
+
+        public void startShowUp() {
+            mShowUpAnimation.start();
+        }
+
+        public void startDismiss() {
+            if (mShowUpAnimation.isRunning()) {
+                mShowUpAnimation.addListener(this);
+                return;
+            }
+            mDismissAnimation.start();
+        }
+
+        @Override
+        public void onAnimationEnd(final Animator animation) {
+            mDismissAnimation.start();
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java
index 609d1a5..68c9831 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewDrawParams.java
@@ -16,7 +16,23 @@
 
 package com.android.inputmethod.keyboard.internal;
 
+import android.content.res.TypedArray;
+import android.view.View;
+
+import com.android.inputmethod.latin.R;
+
 public final class KeyPreviewDrawParams {
+    // XML attributes of {@link MainKeyboardView}.
+    public final int mPreviewOffset;
+    public final int mPreviewHeight;
+    public final int mPreviewBackgroundResId;
+    private int mShowUpDuration;
+    private int mDismissDuration;
+    private float mShowUpStartScale;
+    private float mDismissEndScale;
+    private int mLingerTimeout;
+    private boolean mShowPopup = true;
+
     // The graphical geometry of the key preview.
     // <-width->
     // +-------+   ^
@@ -34,11 +50,89 @@
     // paddings. To align the more keys keyboard panel's visible part with the visible part of
     // the background, we need to record the width and height of key preview that don't include
     // invisible paddings.
-    public int mPreviewVisibleWidth;
-    public int mPreviewVisibleHeight;
+    private int mVisibleWidth;
+    private int mVisibleHeight;
     // The key preview may have an arbitrary offset and its background that may have a bottom
     // padding. To align the more keys keyboard and the key preview we also need to record the
     // offset between the top edge of parent key and the bottom of the visible part of key
     // preview background.
-    public int mPreviewVisibleOffset;
+    private int mVisibleOffset;
+
+    public KeyPreviewDrawParams(final TypedArray mainKeyboardViewAttr) {
+        mPreviewOffset = mainKeyboardViewAttr.getDimensionPixelOffset(
+                R.styleable.MainKeyboardView_keyPreviewOffset, 0);
+        mPreviewHeight = mainKeyboardViewAttr.getDimensionPixelSize(
+                R.styleable.MainKeyboardView_keyPreviewHeight, 0);
+        mPreviewBackgroundResId = mainKeyboardViewAttr.getResourceId(
+                R.styleable.MainKeyboardView_keyPreviewBackground, 0);
+        mLingerTimeout = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_keyPreviewLingerTimeout, 0);
+    }
+
+    public void setVisibleOffset(final int previewVisibleOffset) {
+        mVisibleOffset = previewVisibleOffset;
+    }
+
+    public int getVisibleOffset() {
+        return mVisibleOffset;
+    }
+
+    public void setGeometry(final View previewTextView) {
+        final int previewWidth = previewTextView.getMeasuredWidth();
+        final int previewHeight = mPreviewHeight;
+        // The width and height of visible part of the key preview background. The content marker
+        // of the background 9-patch have to cover the visible part of the background.
+        mVisibleWidth = previewWidth - previewTextView.getPaddingLeft()
+                - previewTextView.getPaddingRight();
+        mVisibleHeight = previewHeight - previewTextView.getPaddingTop()
+                - previewTextView.getPaddingBottom();
+        // The distance between the top edge of the parent key and the bottom of the visible part
+        // of the key preview background.
+        setVisibleOffset(mPreviewOffset - previewTextView.getPaddingBottom());
+    }
+
+    public int getVisibleWidth() {
+        return mVisibleWidth;
+    }
+
+    public int getVisibleHeight() {
+        return mVisibleHeight;
+    }
+
+    public void setPopupEnabled(final boolean enabled, final int lingerTimeout) {
+        mShowPopup = enabled;
+        mLingerTimeout = lingerTimeout;
+    }
+
+    public boolean isPopupEnabled() {
+        return mShowPopup;
+    }
+
+    public int getLingerTimeout() {
+        return mLingerTimeout;
+    }
+
+    public void setAnimationParams(final float showUpStartScale, final int showUpDuration,
+            final float dismissEndScale, final int dismissDuration) {
+        mShowUpStartScale = showUpStartScale;
+        mShowUpDuration = showUpDuration;
+        mDismissEndScale = dismissEndScale;
+        mDismissDuration = dismissDuration;
+    }
+
+    public float getShowUpStartScale() {
+        return mShowUpStartScale;
+    }
+
+    public int getShowUpDuration() {
+        return mShowUpDuration;
+    }
+
+    public float getDismissEndScale() {
+        return mDismissEndScale;
+    }
+
+    public int getDismissDuration() {
+        return mDismissDuration;
+    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewView.java b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewView.java
new file mode 100644
index 0000000..360faf8
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyPreviewView.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.widget.TextView;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.latin.R;
+
+/**
+ * The pop up key preview view.
+ */
+public class KeyPreviewView extends TextView {
+    public static final int POSITION_MIDDLE = 0;
+    public static final int POSITION_LEFT = 1;
+    public static final int POSITION_RIGHT = 2;
+
+    public KeyPreviewView(final Context context, final AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public KeyPreviewView(final Context context, final AttributeSet attrs, final int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        setGravity(Gravity.CENTER);
+    }
+
+    public void setPreviewVisual(final Key key, final KeyboardIconsSet iconsSet,
+            final KeyDrawParams drawParams) {
+        // What we show as preview should match what we show on a key top in onDraw().
+        final int iconId = key.getIconId();
+        if (iconId != KeyboardIconsSet.ICON_UNDEFINED) {
+            setCompoundDrawables(null, null, null, key.getPreviewIcon(iconsSet));
+            setText(null);
+            return;
+        }
+
+        setCompoundDrawables(null, null, null, null);
+        setTextColor(drawParams.mPreviewTextColor);
+        setTextSize(TypedValue.COMPLEX_UNIT_PX, key.selectPreviewTextSize(drawParams));
+        setTypeface(key.selectPreviewTypeface(drawParams));
+        // TODO Should take care of temporaryShiftLabel here.
+        setText(key.getPreviewLabel());
+    }
+
+    // Background state set
+    private static final int[][][] KEY_PREVIEW_BACKGROUND_STATE_TABLE = {
+        { // POSITION_MIDDLE
+            {},
+            { R.attr.state_has_morekeys }
+        },
+        { // POSITION_LEFT
+            { R.attr.state_left_edge },
+            { R.attr.state_left_edge, R.attr.state_has_morekeys }
+        },
+        { // POSITION_RIGHT
+            { R.attr.state_right_edge },
+            { R.attr.state_right_edge, R.attr.state_has_morekeys }
+        }
+    };
+    private static final int STATE_NORMAL = 0;
+    private static final int STATE_HAS_MOREKEYS = 1;
+
+    public void setPreviewBackground(final boolean hasMoreKeys, final int position) {
+        final Drawable background = getBackground();
+        if (background == null) {
+            return;
+        }
+        final int hasMoreKeysState = hasMoreKeys ? STATE_HAS_MOREKEYS : STATE_NORMAL;
+        background.setState(KEY_PREVIEW_BACKGROUND_STATE_TABLE[position][hasMoreKeysState]);
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
index 22f5b3d..48ba8e0 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
@@ -19,114 +19,54 @@
 import static com.android.inputmethod.latin.Constants.CODE_OUTPUT_TEXT;
 import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
 
-import android.text.TextUtils;
-
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Locale;
-
 /**
- * The string parser of more keys specification.
- * The specification is comma separated texts each of which represents one "more key".
- * The specification might have label or string resource reference in it. These references are
- * expanded before parsing comma.
- * - Label reference should be a string representation of label (!text/label_name)
- * - String resource reference should be a string representation of resource (!text/resource_name)
- * Each "more key" specification is one of the following:
- * - Label optionally followed by keyOutputText or code (keyLabel|keyOutputText).
- * - Icon followed by keyOutputText or code (!icon/icon_name|!code/code_name)
- *   - Icon should be a string representation of icon (!icon/icon_name).
- *   - Code should be a code point presented by hexadecimal string prefixed with "0x", or a string
- *     representation of code (!code/code_name).
+ * The string parser of the key specification.
+ *
+ * Each key specification is one of the following:
+ * - Label optionally followed by keyOutputText (keyLabel|keyOutputText).
+ * - Label optionally followed by code point (keyLabel|!code/code_name).
+ * - Icon followed by keyOutputText (!icon/icon_name|keyOutputText).
+ * - Icon followed by code point (!icon/icon_name|!code/code_name).
+ * Label and keyOutputText are one of the following:
+ * - Literal string.
+ * - Label reference represented by (!text/label_name), see {@link KeyboardTextsSet}.
+ * - String resource reference represented by (!text/resource_name), see {@link KeyboardTextsSet}.
+ * Icon is represented by (!icon/icon_name), see {@link KeyboardIconsSet}.
+ * Code is one of the following:
+ * - Code point presented by hexadecimal string prefixed with "0x"
+ * - Code reference represented by (!code/code_name), see {@link KeyboardCodesSet}.
  * Special character, comma ',' backslash '\', and bar '|' can be escaped by '\' character.
- * Note that the '\' is also parsed by XML parser and CSV parser as well.
- * See {@link KeyboardIconsSet} about icon_name.
+ * Note that the '\' is also parsed by XML parser and {@link MoreKeySpec#splitKeySpecs(String)}
+ * as well.
  */
+// TODO: Rename to KeySpec and make this class to the key specification object.
 public final class KeySpecParser {
-    private static final boolean DEBUG = LatinImeLogger.sDBG;
-
-    private static final int MAX_STRING_REFERENCE_INDIRECTION = 10;
-
     // Constants for parsing.
-    private static final char COMMA = ',';
-    private static final char BACKSLASH = '\\';
-    private static final char VERTICAL_BAR = '|';
-    private static final String PREFIX_TEXT = "!text/";
-    static final String PREFIX_ICON = "!icon/";
-    private static final String PREFIX_CODE = "!code/";
+    private static final char BACKSLASH = Constants.CODE_BACKSLASH;
+    private static final char VERTICAL_BAR = Constants.CODE_VERTICAL_BAR;
     private static final String PREFIX_HEX = "0x";
-    private static final String ADDITIONAL_MORE_KEY_MARKER = "%";
 
     private KeySpecParser() {
         // Intentional empty constructor for utility class.
     }
 
-    /**
-     * Split the text containing multiple key specifications separated by commas into an array of
-     * key specifications.
-     * A key specification can contain a character escaped by the backslash character, including a
-     * comma character.
-     * Note that an empty key specification will be eliminated from the result array.
-     *
-     * @param text the text containing multiple key specifications.
-     * @return an array of key specification text. Null if the specified <code>text</code> is empty
-     * or has no key specifications.
-     */
-    public static String[] splitKeySpecs(final String text) {
-        final int size = text.length();
-        if (size == 0) {
-            return null;
-        }
-        // Optimization for one-letter key specification.
-        if (size == 1) {
-            return text.charAt(0) == COMMA ? null : new String[] { text };
-        }
-
-        ArrayList<String> list = null;
-        int start = 0;
-        // The characters in question in this loop are COMMA and BACKSLASH. These characters never
-        // match any high or low surrogate character. So it is OK to iterate through with char
-        // index.
-        for (int pos = 0; pos < size; pos++) {
-            final char c = text.charAt(pos);
-            if (c == COMMA) {
-                // Skip empty entry.
-                if (pos - start > 0) {
-                    if (list == null) {
-                        list = CollectionUtils.newArrayList();
-                    }
-                    list.add(text.substring(start, pos));
-                }
-                // Skip comma
-                start = pos + 1;
-            } else if (c == BACKSLASH) {
-                // Skip escape character and escaped character.
-                pos++;
-            }
-        }
-        final String remain = (size - start > 0) ? text.substring(start) : null;
-        if (list == null) {
-            return remain != null ? new String[] { remain } : null;
-        }
-        if (remain != null) {
-            list.add(remain);
-        }
-        return list.toArray(new String[list.size()]);
+    private static boolean hasIcon(final String keySpec) {
+        return keySpec.startsWith(KeyboardIconsSet.PREFIX_ICON);
     }
 
-    private static boolean hasIcon(final String moreKeySpec) {
-        return moreKeySpec.startsWith(PREFIX_ICON);
-    }
-
-    private static boolean hasCode(final String moreKeySpec) {
-        final int end = indexOfLabelEnd(moreKeySpec, 0);
-        if (end > 0 && end + 1 < moreKeySpec.length() && moreKeySpec.startsWith(
-                PREFIX_CODE, end + 1)) {
+    private static boolean hasCode(final String keySpec, final int labelEnd) {
+        if (labelEnd <= 0 || labelEnd + 1 >= keySpec.length()) {
+            return false;
+        }
+        if (keySpec.startsWith(KeyboardCodesSet.PREFIX_CODE, labelEnd + 1)) {
+            return true;
+        }
+        // This is a workaround to have a key that has a supplementary code point. We can't put a
+        // string in resource as a XML entity of a supplementary code point or a surrogate pair.
+        if (keySpec.startsWith(PREFIX_HEX, labelEnd + 1)) {
             return true;
         }
         return false;
@@ -151,17 +91,21 @@
         return sb.toString();
     }
 
-    private static int indexOfLabelEnd(final String moreKeySpec, final int start) {
-        if (moreKeySpec.indexOf(BACKSLASH, start) < 0) {
-            final int end = moreKeySpec.indexOf(VERTICAL_BAR, start);
-            if (end == 0) {
-                throw new KeySpecParserError(VERTICAL_BAR + " at " + start + ": " + moreKeySpec);
+    private static int indexOfLabelEnd(final String keySpec) {
+        final int length = keySpec.length();
+        if (keySpec.indexOf(BACKSLASH) < 0) {
+            final int labelEnd = keySpec.indexOf(VERTICAL_BAR);
+            if (labelEnd == 0) {
+                if (length == 1) {
+                    // Treat a sole vertical bar as a special case of key label.
+                    return -1;
+                }
+                throw new KeySpecParserError("Empty label");
             }
-            return end;
+            return labelEnd;
         }
-        final int length = moreKeySpec.length();
-        for (int pos = start; pos < length; pos++) {
-            final char c = moreKeySpec.charAt(pos);
+        for (int pos = 0; pos < length; pos++) {
+            final char c = keySpec.charAt(pos);
             if (c == BACKSLASH && pos + 1 < length) {
                 // Skip escape char
                 pos++;
@@ -172,63 +116,85 @@
         return -1;
     }
 
-    public static String getLabel(final String moreKeySpec) {
-        if (hasIcon(moreKeySpec)) {
+    private static String getBeforeLabelEnd(final String keySpec, final int labelEnd) {
+        return (labelEnd < 0) ? keySpec : keySpec.substring(0, labelEnd);
+    }
+
+    private static String getAfterLabelEnd(final String keySpec, final int labelEnd) {
+        return keySpec.substring(labelEnd + /* VERTICAL_BAR */1);
+    }
+
+    private static void checkDoubleLabelEnd(final String keySpec, final int labelEnd) {
+        if (indexOfLabelEnd(getAfterLabelEnd(keySpec, labelEnd)) < 0) {
+            return;
+        }
+        throw new KeySpecParserError("Multiple " + VERTICAL_BAR + ": " + keySpec);
+    }
+
+    public static String getLabel(final String keySpec) {
+        if (keySpec == null) {
+            // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory.
             return null;
         }
-        final int end = indexOfLabelEnd(moreKeySpec, 0);
-        final String label = (end > 0) ? parseEscape(moreKeySpec.substring(0, end))
-                : parseEscape(moreKeySpec);
-        if (TextUtils.isEmpty(label)) {
-            throw new KeySpecParserError("Empty label: " + moreKeySpec);
+        if (hasIcon(keySpec)) {
+            return null;
+        }
+        final int labelEnd = indexOfLabelEnd(keySpec);
+        final String label = parseEscape(getBeforeLabelEnd(keySpec, labelEnd));
+        if (label.isEmpty()) {
+            throw new KeySpecParserError("Empty label: " + keySpec);
         }
         return label;
     }
 
-    private static String getOutputTextInternal(final String moreKeySpec) {
-        final int end = indexOfLabelEnd(moreKeySpec, 0);
-        if (end <= 0) {
+    private static String getOutputTextInternal(final String keySpec, final int labelEnd) {
+        if (labelEnd <= 0) {
             return null;
         }
-        if (indexOfLabelEnd(moreKeySpec, end + 1) >= 0) {
-            throw new KeySpecParserError("Multiple " + VERTICAL_BAR + ": " + moreKeySpec);
-        }
-        return parseEscape(moreKeySpec.substring(end + /* VERTICAL_BAR */1));
+        checkDoubleLabelEnd(keySpec, labelEnd);
+        return parseEscape(getAfterLabelEnd(keySpec, labelEnd));
     }
 
-    static String getOutputText(final String moreKeySpec) {
-        if (hasCode(moreKeySpec)) {
+    public static String getOutputText(final String keySpec) {
+        if (keySpec == null) {
+            // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory.
             return null;
         }
-        final String outputText = getOutputTextInternal(moreKeySpec);
+        final int labelEnd = indexOfLabelEnd(keySpec);
+        if (hasCode(keySpec, labelEnd)) {
+            return null;
+        }
+        final String outputText = getOutputTextInternal(keySpec, labelEnd);
         if (outputText != null) {
             if (StringUtils.codePointCount(outputText) == 1) {
                 // If output text is one code point, it should be treated as a code.
                 // See {@link #getCode(Resources, String)}.
                 return null;
             }
-            if (!TextUtils.isEmpty(outputText)) {
-                return outputText;
+            if (outputText.isEmpty()) {
+                throw new KeySpecParserError("Empty outputText: " + keySpec);
             }
-            throw new KeySpecParserError("Empty outputText: " + moreKeySpec);
+            return outputText;
         }
-        final String label = getLabel(moreKeySpec);
+        final String label = getLabel(keySpec);
         if (label == null) {
-            throw new KeySpecParserError("Empty label: " + moreKeySpec);
+            throw new KeySpecParserError("Empty label: " + keySpec);
         }
         // Code is automatically generated for one letter label. See {@link getCode()}.
         return (StringUtils.codePointCount(label) == 1) ? null : label;
     }
 
-    static int getCode(final String moreKeySpec, final KeyboardCodesSet codesSet) {
-        if (hasCode(moreKeySpec)) {
-            final int end = indexOfLabelEnd(moreKeySpec, 0);
-            if (indexOfLabelEnd(moreKeySpec, end + 1) >= 0) {
-                throw new KeySpecParserError("Multiple " + VERTICAL_BAR + ": " + moreKeySpec);
-            }
-            return parseCode(moreKeySpec.substring(end + 1), codesSet, CODE_UNSPECIFIED);
+    public static int getCode(final String keySpec) {
+        if (keySpec == null) {
+            // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory.
+            return CODE_UNSPECIFIED;
         }
-        final String outputText = getOutputTextInternal(moreKeySpec);
+        final int labelEnd = indexOfLabelEnd(keySpec);
+        if (hasCode(keySpec, labelEnd)) {
+            checkDoubleLabelEnd(keySpec, labelEnd);
+            return parseCode(getAfterLabelEnd(keySpec, labelEnd), CODE_UNSPECIFIED);
+        }
+        final String outputText = getOutputTextInternal(keySpec, labelEnd);
         if (outputText != null) {
             // If output text is one code point, it should be treated as a code.
             // See {@link #getOutputText(String)}.
@@ -237,138 +203,41 @@
             }
             return CODE_OUTPUT_TEXT;
         }
-        final String label = getLabel(moreKeySpec);
+        final String label = getLabel(keySpec);
+        if (label == null) {
+            throw new KeySpecParserError("Empty label: " + keySpec);
+        }
         // Code is automatically generated for one letter label.
-        if (StringUtils.codePointCount(label) == 1) {
-            return label.codePointAt(0);
-        }
-        return CODE_OUTPUT_TEXT;
+        return (StringUtils.codePointCount(label) == 1) ? label.codePointAt(0) : CODE_OUTPUT_TEXT;
     }
 
-    public static int parseCode(final String text, final KeyboardCodesSet codesSet,
-            final int defCode) {
-        if (text == null) return defCode;
-        if (text.startsWith(PREFIX_CODE)) {
-            return codesSet.getCode(text.substring(PREFIX_CODE.length()));
-        } else if (text.startsWith(PREFIX_HEX)) {
+    public static int parseCode(final String text, final int defaultCode) {
+        if (text == null) {
+            return defaultCode;
+        }
+        if (text.startsWith(KeyboardCodesSet.PREFIX_CODE)) {
+            return KeyboardCodesSet.getCode(text.substring(KeyboardCodesSet.PREFIX_CODE.length()));
+        }
+        // This is a workaround to have a key that has a supplementary code point. We can't put a
+        // string in resource as a XML entity of a supplementary code point or a surrogate pair.
+        if (text.startsWith(PREFIX_HEX)) {
             return Integer.parseInt(text.substring(PREFIX_HEX.length()), 16);
-        } else {
-            return Integer.parseInt(text);
         }
+        return defaultCode;
     }
 
-    public static int getIconId(final String moreKeySpec) {
-        if (moreKeySpec != null && hasIcon(moreKeySpec)) {
-            final int end = moreKeySpec.indexOf(VERTICAL_BAR, PREFIX_ICON.length());
-            final String name = (end < 0) ? moreKeySpec.substring(PREFIX_ICON.length())
-                    : moreKeySpec.substring(PREFIX_ICON.length(), end);
-            return KeyboardIconsSet.getIconId(name);
+    public static int getIconId(final String keySpec) {
+        if (keySpec == null) {
+            // TODO: Throw {@link KeySpecParserError} once Key.keyLabel attribute becomes mandatory.
+            return KeyboardIconsSet.ICON_UNDEFINED;
         }
-        return KeyboardIconsSet.ICON_UNDEFINED;
-    }
-
-    private static <T> ArrayList<T> arrayAsList(final T[] array, final int start, final int end) {
-        if (array == null) {
-            throw new NullPointerException();
+        if (!hasIcon(keySpec)) {
+            return KeyboardIconsSet.ICON_UNDEFINED;
         }
-        if (start < 0 || start > end || end > array.length) {
-            throw new IllegalArgumentException();
-        }
-
-        final ArrayList<T> list = CollectionUtils.newArrayList(end - start);
-        for (int i = start; i < end; i++) {
-            list.add(array[i]);
-        }
-        return list;
-    }
-
-    private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    private static String[] filterOutEmptyString(final String[] array) {
-        if (array == null) {
-            return EMPTY_STRING_ARRAY;
-        }
-        ArrayList<String> out = null;
-        for (int i = 0; i < array.length; i++) {
-            final String entry = array[i];
-            if (TextUtils.isEmpty(entry)) {
-                if (out == null) {
-                    out = arrayAsList(array, 0, i);
-                }
-            } else if (out != null) {
-                out.add(entry);
-            }
-        }
-        if (out == null) {
-            return array;
-        }
-        return out.toArray(new String[out.size()]);
-    }
-
-    public static String[] insertAdditionalMoreKeys(final String[] moreKeySpecs,
-            final String[] additionalMoreKeySpecs) {
-        final String[] moreKeys = filterOutEmptyString(moreKeySpecs);
-        final String[] additionalMoreKeys = filterOutEmptyString(additionalMoreKeySpecs);
-        final int moreKeysCount = moreKeys.length;
-        final int additionalCount = additionalMoreKeys.length;
-        ArrayList<String> out = null;
-        int additionalIndex = 0;
-        for (int moreKeyIndex = 0; moreKeyIndex < moreKeysCount; moreKeyIndex++) {
-            final String moreKeySpec = moreKeys[moreKeyIndex];
-            if (moreKeySpec.equals(ADDITIONAL_MORE_KEY_MARKER)) {
-                if (additionalIndex < additionalCount) {
-                    // Replace '%' marker with additional more key specification.
-                    final String additionalMoreKey = additionalMoreKeys[additionalIndex];
-                    if (out != null) {
-                        out.add(additionalMoreKey);
-                    } else {
-                        moreKeys[moreKeyIndex] = additionalMoreKey;
-                    }
-                    additionalIndex++;
-                } else {
-                    // Filter out excessive '%' marker.
-                    if (out == null) {
-                        out = arrayAsList(moreKeys, 0, moreKeyIndex);
-                    }
-                }
-            } else {
-                if (out != null) {
-                    out.add(moreKeySpec);
-                }
-            }
-        }
-        if (additionalCount > 0 && additionalIndex == 0) {
-            // No '%' marker is found in more keys.
-            // Insert all additional more keys to the head of more keys.
-            if (DEBUG && out != null) {
-                throw new RuntimeException("Internal logic error:"
-                        + " moreKeys=" + Arrays.toString(moreKeys)
-                        + " additionalMoreKeys=" + Arrays.toString(additionalMoreKeys));
-            }
-            out = arrayAsList(additionalMoreKeys, additionalIndex, additionalCount);
-            for (int i = 0; i < moreKeysCount; i++) {
-                out.add(moreKeys[i]);
-            }
-        } else if (additionalIndex < additionalCount) {
-            // The number of '%' markers are less than additional more keys.
-            // Append remained additional more keys to the tail of more keys.
-            if (DEBUG && out != null) {
-                throw new RuntimeException("Internal logic error:"
-                        + " moreKeys=" + Arrays.toString(moreKeys)
-                        + " additionalMoreKeys=" + Arrays.toString(additionalMoreKeys));
-            }
-            out = arrayAsList(moreKeys, 0, moreKeysCount);
-            for (int i = additionalIndex; i < additionalCount; i++) {
-                out.add(additionalMoreKeys[additionalIndex]);
-            }
-        }
-        if (out == null && moreKeysCount > 0) {
-            return moreKeys;
-        } else if (out != null && out.size() > 0) {
-            return out.toArray(new String[out.size()]);
-        } else {
-            return null;
-        }
+        final int labelEnd = indexOfLabelEnd(keySpec);
+        final String iconName = getBeforeLabelEnd(keySpec, labelEnd)
+                .substring(KeyboardIconsSet.PREFIX_ICON.length());
+        return KeyboardIconsSet.getIconId(iconName);
     }
 
     @SuppressWarnings("serial")
@@ -377,122 +246,4 @@
             super(message);
         }
     }
-
-    public static String resolveTextReference(final String rawText,
-            final KeyboardTextsSet textsSet) {
-        int level = 0;
-        String text = rawText;
-        StringBuilder sb;
-        do {
-            level++;
-            if (level >= MAX_STRING_REFERENCE_INDIRECTION) {
-                throw new RuntimeException("too many @string/resource indirection: " + text);
-            }
-
-            final int prefixLen = PREFIX_TEXT.length();
-            final int size = text.length();
-            if (size < prefixLen) {
-                return text;
-            }
-
-            sb = null;
-            for (int pos = 0; pos < size; pos++) {
-                final char c = text.charAt(pos);
-                if (text.startsWith(PREFIX_TEXT, pos) && textsSet != null) {
-                    if (sb == null) {
-                        sb = new StringBuilder(text.substring(0, pos));
-                    }
-                    final int end = searchTextNameEnd(text, pos + prefixLen);
-                    final String name = text.substring(pos + prefixLen, end);
-                    sb.append(textsSet.getText(name));
-                    pos = end - 1;
-                } else if (c == BACKSLASH) {
-                    if (sb != null) {
-                        // Append both escape character and escaped character.
-                        sb.append(text.substring(pos, Math.min(pos + 2, size)));
-                    }
-                    pos++;
-                } else if (sb != null) {
-                    sb.append(c);
-                }
-            }
-
-            if (sb != null) {
-                text = sb.toString();
-            }
-        } while (sb != null);
-        return text;
-    }
-
-    private static int searchTextNameEnd(final String text, final int start) {
-        final int size = text.length();
-        for (int pos = start; pos < size; pos++) {
-            final char c = text.charAt(pos);
-            // Label name should be consisted of [a-zA-Z_0-9].
-            if ((c >= 'a' && c <= 'z') || c == '_' || (c >= '0' && c <= '9')) {
-                continue;
-            }
-            return pos;
-        }
-        return size;
-    }
-
-    public static int getIntValue(final String[] moreKeys, final String key,
-            final int defaultValue) {
-        if (moreKeys == null) {
-            return defaultValue;
-        }
-        final int keyLen = key.length();
-        boolean foundValue = false;
-        int value = defaultValue;
-        for (int i = 0; i < moreKeys.length; i++) {
-            final String moreKeySpec = moreKeys[i];
-            if (moreKeySpec == null || !moreKeySpec.startsWith(key)) {
-                continue;
-            }
-            moreKeys[i] = null;
-            try {
-                if (!foundValue) {
-                    value = Integer.parseInt(moreKeySpec.substring(keyLen));
-                    foundValue = true;
-                }
-            } catch (NumberFormatException e) {
-                throw new RuntimeException(
-                        "integer should follow after " + key + ": " + moreKeySpec);
-            }
-        }
-        return value;
-    }
-
-    public static boolean getBooleanValue(final String[] moreKeys, final String key) {
-        if (moreKeys == null) {
-            return false;
-        }
-        boolean value = false;
-        for (int i = 0; i < moreKeys.length; i++) {
-            final String moreKeySpec = moreKeys[i];
-            if (moreKeySpec == null || !moreKeySpec.equals(key)) {
-                continue;
-            }
-            moreKeys[i] = null;
-            value = true;
-        }
-        return value;
-    }
-
-    public static int toUpperCaseOfCodeForLocale(final int code, final boolean needsToUpperCase,
-            final Locale locale) {
-        if (!Constants.isLetterCode(code) || !needsToUpperCase) return code;
-        final String text = new String(new int[] { code } , 0, 1);
-        final String casedText = KeySpecParser.toUpperCaseOfStringForLocale(
-                text, needsToUpperCase, locale);
-        return StringUtils.codePointCount(casedText) == 1
-                ? casedText.codePointAt(0) : CODE_UNSPECIFIED;
-    }
-
-    public static String toUpperCaseOfStringForLocale(final String text,
-            final boolean needsToUpperCase, final Locale locale) {
-        if (text == null || !needsToUpperCase) return text;
-        return text.toUpperCase(locale);
-    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStyle.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStyle.java
index e6a6743..7941ddd 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStyle.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStyle.java
@@ -32,15 +32,15 @@
 
     protected String parseString(final TypedArray a, final int index) {
         if (a.hasValue(index)) {
-            return KeySpecParser.resolveTextReference(a.getString(index), mTextsSet);
+            return mTextsSet.resolveTextReference(a.getString(index));
         }
         return null;
     }
 
     protected String[] parseStringArray(final TypedArray a, final int index) {
         if (a.hasValue(index)) {
-            final String text = KeySpecParser.resolveTextReference(a.getString(index), mTextsSet);
-            return KeySpecParser.splitKeySpecs(text);
+            final String text = mTextsSet.resolveTextReference(a.getString(index));
+            return MoreKeySpec.splitKeySpecs(text);
         }
         return null;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
index 05d855e..5cbb341 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyStylesSet.java
@@ -21,19 +21,19 @@
 import android.util.SparseArray;
 
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.XmlParseUtils;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.util.Arrays;
 import java.util.HashMap;
 
 public final class KeyStylesSet {
     private static final String TAG = KeyStylesSet.class.getSimpleName();
     private static final boolean DEBUG = false;
 
-    private final HashMap<String, KeyStyle> mStyles = CollectionUtils.newHashMap();
+    private final HashMap<String, KeyStyle> mStyles = new HashMap<>();
 
     private final KeyboardTextsSet mTextsSet;
     private final KeyStyle mEmptyKeyStyle;
@@ -74,7 +74,7 @@
     private static final class DeclaredKeyStyle extends KeyStyle {
         private final HashMap<String, KeyStyle> mStyles;
         private final String mParentStyleName;
-        private final SparseArray<Object> mStyleAttributes = CollectionUtils.newSparseArray();
+        private final SparseArray<Object> mStyleAttributes = new SparseArray<>();
 
         public DeclaredKeyStyle(final String parentStyleName, final KeyboardTextsSet textsSet,
                 final HashMap<String, KeyStyle> styles) {
@@ -90,7 +90,8 @@
             }
             final Object value = mStyleAttributes.get(index);
             if (value != null) {
-                return (String[])value;
+                final String[] array = (String[])value;
+                return Arrays.copyOf(array, array.length);
             }
             final KeyStyle parentStyle = mStyles.get(mParentStyleName);
             return parentStyle.getStringArray(a, index);
@@ -133,17 +134,13 @@
 
         public void readKeyAttributes(final TypedArray keyAttr) {
             // TODO: Currently not all Key attributes can be declared as style.
-            readString(keyAttr, R.styleable.Keyboard_Key_code);
             readString(keyAttr, R.styleable.Keyboard_Key_altCode);
-            readString(keyAttr, R.styleable.Keyboard_Key_keyLabel);
-            readString(keyAttr, R.styleable.Keyboard_Key_keyOutputText);
+            readString(keyAttr, R.styleable.Keyboard_Key_keySpec);
             readString(keyAttr, R.styleable.Keyboard_Key_keyHintLabel);
             readStringArray(keyAttr, R.styleable.Keyboard_Key_moreKeys);
             readStringArray(keyAttr, R.styleable.Keyboard_Key_additionalMoreKeys);
             readFlags(keyAttr, R.styleable.Keyboard_Key_keyLabelFlags);
-            readString(keyAttr, R.styleable.Keyboard_Key_keyIcon);
             readString(keyAttr, R.styleable.Keyboard_Key_keyIconDisabled);
-            readString(keyAttr, R.styleable.Keyboard_Key_keyIconPreview);
             readInt(keyAttr, R.styleable.Keyboard_Key_maxMoreKeysColumn);
             readInt(keyAttr, R.styleable.Keyboard_Key_backgroundType);
             readFlags(keyAttr, R.styleable.Keyboard_Key_keyActionFlags);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java b/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
index 8bdad36..133462a 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
@@ -16,7 +16,6 @@
 
 package com.android.inputmethod.keyboard.internal;
 
-import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
 import android.graphics.Typeface;
 import android.util.SparseIntArray;
@@ -38,15 +37,18 @@
     public final float mHintLabelRatio;
     public final float mPreviewTextRatio;
 
-    public final ColorStateList mTextColorStateList;
+    public final int mTextColor;
     public final int mTextInactivatedColor;
     public final int mTextShadowColor;
+    public final int mFunctionalTextColor;
     public final int mHintLetterColor;
     public final int mHintLabelColor;
     public final int mShiftedLetterHintInactivatedColor;
     public final int mShiftedLetterHintActivatedColor;
     public final int mPreviewTextColor;
 
+    public final float mHintLabelVerticalAdjustment;
+
     private static final int[] VISUAL_ATTRIBUTE_IDS = {
         R.styleable.Keyboard_Key_keyTypeface,
         R.styleable.Keyboard_Key_keyLetterSize,
@@ -60,11 +62,13 @@
         R.styleable.Keyboard_Key_keyTextColor,
         R.styleable.Keyboard_Key_keyTextInactivatedColor,
         R.styleable.Keyboard_Key_keyTextShadowColor,
+        R.styleable.Keyboard_Key_functionalTextColor,
         R.styleable.Keyboard_Key_keyHintLetterColor,
         R.styleable.Keyboard_Key_keyHintLabelColor,
         R.styleable.Keyboard_Key_keyShiftedLetterHintInactivatedColor,
         R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor,
         R.styleable.Keyboard_Key_keyPreviewTextColor,
+        R.styleable.Keyboard_Key_keyHintLabelVerticalAdjustment,
     };
     private static final SparseIntArray sVisualAttributeIds = new SparseIntArray();
     private static final int ATTR_DEFINED = 1;
@@ -116,10 +120,11 @@
         mPreviewTextRatio = ResourceUtils.getFraction(keyAttr,
                 R.styleable.Keyboard_Key_keyPreviewTextRatio);
 
-        mTextColorStateList = keyAttr.getColorStateList(R.styleable.Keyboard_Key_keyTextColor);
+        mTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyTextColor, 0);
         mTextInactivatedColor = keyAttr.getColor(
                 R.styleable.Keyboard_Key_keyTextInactivatedColor, 0);
         mTextShadowColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyTextShadowColor, 0);
+        mFunctionalTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_functionalTextColor, 0);
         mHintLetterColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyHintLetterColor, 0);
         mHintLabelColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyHintLabelColor, 0);
         mShiftedLetterHintInactivatedColor = keyAttr.getColor(
@@ -127,5 +132,8 @@
         mShiftedLetterHintActivatedColor = keyAttr.getColor(
                 R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor, 0);
         mPreviewTextColor = keyAttr.getColor(R.styleable.Keyboard_Key_keyPreviewTextColor, 0);
+
+        mHintLabelVerticalAdjustment = ResourceUtils.getFraction(keyAttr,
+                R.styleable.Keyboard_Key_keyHintLabelVerticalAdjustment, 0.0f);
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index c1ae656..8bff275 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -21,6 +21,7 @@
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
 import android.os.Build;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.TypedValue;
@@ -33,17 +34,16 @@
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.utils.ResourceUtils;
-import com.android.inputmethod.latin.utils.RunInLocale;
 import com.android.inputmethod.latin.utils.StringUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 import com.android.inputmethod.latin.utils.XmlParseUtils;
+import com.android.inputmethod.latin.utils.XmlParseUtils.ParseException;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
 import java.util.Arrays;
-import java.util.Locale;
 
 /**
  * Keyboard Building helper.
@@ -276,20 +276,7 @@
 
             params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
             params.mIconsSet.loadIcons(keyboardAttr);
-            final String language = params.mId.mLocale.getLanguage();
-            params.mCodesSet.setLanguage(language);
-            params.mTextsSet.setLanguage(language);
-            final RunInLocale<Void> job = new RunInLocale<Void>() {
-                @Override
-                protected Void job(final Resources res) {
-                    params.mTextsSet.loadStringResources(mContext);
-                    return null;
-                }
-            };
-            // Null means the current system locale.
-            final Locale locale = SubtypeLocaleUtils.isNoLanguage(params.mId.mSubtype)
-                    ? null : params.mId.mLocale;
-            job.runInLocale(mResources, locale);
+            params.mTextsSet.setLocale(params.mId.mLocale, mContext);
 
             final int resourceId = keyboardAttr.getResourceId(
                     R.styleable.Keyboard_touchPositionCorrectionData, 0);
@@ -456,11 +443,16 @@
                 if (Build.VERSION.SDK_INT < supportedMinSdkVersion) {
                     continue;
                 }
+                final int labelFlags = row.getDefaultKeyLabelFlags();
+                // TODO: Should be able to assign default keyActionFlags as well.
+                final int backgroundType = row.getDefaultBackgroundType();
                 final int x = (int)row.getKeyX(null);
                 final int y = row.getKeyY();
-                final Key key = new Key(mParams, label, null /* hintLabel */, 0 /* iconId */,
-                        code, outputText, x, y, (int)keyWidth, (int)row.getRowHeight(),
-                        row.getDefaultKeyLabelFlags(), row.getDefaultBackgroundType());
+                final int width = (int)keyWidth;
+                final int height = row.getRowHeight();
+                final Key key = new Key(label, KeyboardIconsSet.ICON_UNDEFINED, code, outputText,
+                        null /* hintLabel */, labelFlags, backgroundType, x, y, width, height,
+                        mParams.mHorizontalGap, mParams.mVerticalGap);
                 endKey(key);
                 row.advanceXPos(keyWidth);
             }
@@ -477,7 +469,15 @@
             if (DEBUG) startEndTag("<%s /> skipped", TAG_KEY);
             return;
         }
-        final Key key = new Key(mResources, mParams, row, parser);
+        final TypedArray keyAttr = mResources.obtainAttributes(
+                Xml.asAttributeSet(parser), R.styleable.Keyboard_Key);
+        final KeyStyle keyStyle = mParams.mKeyStyles.getKeyStyle(keyAttr, parser);
+        final String keySpec = keyStyle.getString(keyAttr, R.styleable.Keyboard_Key_keySpec);
+        if (TextUtils.isEmpty(keySpec)) {
+            throw new ParseException("Empty keySpec", parser);
+        }
+        final Key key = new Key(keySpec, keyAttr, keyStyle, mParams, row);
+        keyAttr.recycle();
         if (DEBUG) {
             startEndTag("<%s%s %s moreKeys=%s />", TAG_KEY, (key.isEnabled() ? "" : " disabled"),
                     key, Arrays.toString(key.getMoreKeys()));
@@ -493,7 +493,11 @@
             if (DEBUG) startEndTag("<%s /> skipped", TAG_SPACER);
             return;
         }
-        final Key.Spacer spacer = new Key.Spacer(mResources, mParams, row, parser);
+        final TypedArray keyAttr = mResources.obtainAttributes(
+                Xml.asAttributeSet(parser), R.styleable.Keyboard_Key);
+        final KeyStyle keyStyle = mParams.mKeyStyles.getKeyStyle(keyAttr, parser);
+        final Key spacer = new Key.Spacer(keyAttr, keyStyle, mParams, row);
+        keyAttr.recycle();
         if (DEBUG) startEndTag("<%s />", TAG_SPACER);
         XmlParseUtils.checkEndTag(TAG_SPACER, parser);
         endKey(spacer);
@@ -649,10 +653,6 @@
                     R.styleable.Keyboard_Case_passwordInput, id.passwordInput());
             final boolean clobberSettingsKeyMatched = matchBoolean(caseAttr,
                     R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey);
-            final boolean shortcutKeyEnabledMatched = matchBoolean(caseAttr,
-                    R.styleable.Keyboard_Case_shortcutKeyEnabled, id.mShortcutKeyEnabled);
-            final boolean shortcutKeyOnSymbolsMatched = matchBoolean(caseAttr,
-                    R.styleable.Keyboard_Case_shortcutKeyOnSymbols, id.mShortcutKeyOnSymbols);
             final boolean hasShortcutKeyMatched = matchBoolean(caseAttr,
                     R.styleable.Keyboard_Case_hasShortcutKey, id.mHasShortcutKey);
             final boolean languageSwitchKeyEnabledMatched = matchBoolean(caseAttr,
@@ -662,6 +662,8 @@
                     R.styleable.Keyboard_Case_isMultiLine, id.isMultiLine());
             final boolean imeActionMatched = matchInteger(caseAttr,
                     R.styleable.Keyboard_Case_imeAction, id.imeAction());
+            final boolean isIconDefinedMatched = isIconDefined(caseAttr,
+                    R.styleable.Keyboard_Case_isIconDefined, mParams.mIconsSet);
             final boolean localeCodeMatched = matchString(caseAttr,
                     R.styleable.Keyboard_Case_localeCode, id.mLocale.toString());
             final boolean languageCodeMatched = matchString(caseAttr,
@@ -670,14 +672,13 @@
                     R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
             final boolean selected = keyboardLayoutSetMatched && keyboardLayoutSetElementMatched
                     && modeMatched && navigateNextMatched && navigatePreviousMatched
-                    && passwordInputMatched && clobberSettingsKeyMatched
-                    && shortcutKeyEnabledMatched && shortcutKeyOnSymbolsMatched
-                    && hasShortcutKeyMatched && languageSwitchKeyEnabledMatched
-                    && isMultiLineMatched && imeActionMatched && localeCodeMatched
-                    && languageCodeMatched && countryCodeMatched;
+                    && passwordInputMatched && clobberSettingsKeyMatched && hasShortcutKeyMatched
+                    && languageSwitchKeyEnabledMatched && isMultiLineMatched && imeActionMatched
+                    && isIconDefinedMatched && localeCodeMatched && languageCodeMatched
+                    && countryCodeMatched;
 
             if (DEBUG) {
-                startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE,
+                startTag("<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s", TAG_CASE,
                         textAttr(caseAttr.getString(
                                 R.styleable.Keyboard_Case_keyboardLayoutSet), "keyboardLayoutSet"),
                         textAttr(caseAttr.getString(
@@ -694,16 +695,14 @@
                                 "clobberSettingsKey"),
                         booleanAttr(caseAttr, R.styleable.Keyboard_Case_passwordInput,
                                 "passwordInput"),
-                        booleanAttr(caseAttr, R.styleable.Keyboard_Case_shortcutKeyEnabled,
-                                "shortcutKeyEnabled"),
-                        booleanAttr(caseAttr, R.styleable.Keyboard_Case_shortcutKeyOnSymbols,
-                                "shortcutKeyOnSymbols"),
                         booleanAttr(caseAttr, R.styleable.Keyboard_Case_hasShortcutKey,
                                 "hasShortcutKey"),
                         booleanAttr(caseAttr, R.styleable.Keyboard_Case_languageSwitchKeyEnabled,
                                 "languageSwitchKeyEnabled"),
                         booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine,
                                 "isMultiLine"),
+                        textAttr(caseAttr.getString(R.styleable.Keyboard_Case_isIconDefined),
+                                "isIconDefined"),
                         textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode),
                                 "localeCode"),
                         textAttr(caseAttr.getString(R.styleable.Keyboard_Case_languageCode),
@@ -755,6 +754,16 @@
         return false;
     }
 
+    private static boolean isIconDefined(final TypedArray a, final int index,
+            final KeyboardIconsSet iconsSet) {
+        if (!a.hasValue(index)) {
+            return true;
+        }
+        final String iconName = a.getString(index);
+        final int iconId = KeyboardIconsSet.getIconId(iconName);
+        return iconsSet.getIconDrawable(iconId) != null;
+    }
+
     private boolean parseDefault(final XmlPullParser parser, final KeyboardRow row,
             final boolean skip) throws XmlPullParserException, IOException {
         if (DEBUG) startTag("<%s>", TAG_DEFAULT);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
index dc815e5..62b69dc 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
@@ -17,25 +17,22 @@
 package com.android.inputmethod.keyboard.internal;
 
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.util.HashMap;
 
 public final class KeyboardCodesSet {
-    private static final HashMap<String, int[]> sLanguageToCodesMap = CollectionUtils.newHashMap();
-    private static final HashMap<String, Integer> sNameToIdMap = CollectionUtils.newHashMap();
+    public static final String PREFIX_CODE = "!code/";
 
-    private int[] mCodes = DEFAULT;
+    private static final HashMap<String, Integer> sNameToIdMap = new HashMap<>();
 
-    public void setLanguage(final String language) {
-        final int[] codes = sLanguageToCodesMap.get(language);
-        mCodes = (codes != null) ? codes : DEFAULT;
+    private KeyboardCodesSet() {
+        // This utility class is not publicly instantiable.
     }
 
-    public int getCode(final String name) {
+    public static int getCode(final String name) {
         Integer id = sNameToIdMap.get(name);
         if (id == null) throw new RuntimeException("Unknown key code: " + name);
-        return mCodes[id];
+        return DEFAULT[id];
     }
 
     private static final String[] ID_TO_NAME = {
@@ -54,27 +51,10 @@
         "key_shift_enter",
         "key_language_switch",
         "key_emoji",
+        "key_alpha_from_emoji",
         "key_unspecified",
-        "key_left_parenthesis",
-        "key_right_parenthesis",
-        "key_less_than",
-        "key_greater_than",
-        "key_left_square_bracket",
-        "key_right_square_bracket",
-        "key_left_curly_bracket",
-        "key_right_curly_bracket",
     };
 
-    private static final int CODE_LEFT_PARENTHESIS = '(';
-    private static final int CODE_RIGHT_PARENTHESIS = ')';
-    private static final int CODE_LESS_THAN_SIGN = '<';
-    private static final int CODE_GREATER_THAN_SIGN = '>';
-    private static final int CODE_LEFT_SQUARE_BRACKET = '[';
-    private static final int CODE_RIGHT_SQUARE_BRACKET = ']';
-    private static final int CODE_LEFT_CURLY_BRACKET = '{';
-    private static final int CODE_RIGHT_CURLY_BRACKET = '}';
-
-    // This array should be aligned with the array RTL below.
     private static final int[] DEFAULT = {
         Constants.CODE_TAB,
         Constants.CODE_ENTER,
@@ -91,68 +71,13 @@
         Constants.CODE_SHIFT_ENTER,
         Constants.CODE_LANGUAGE_SWITCH,
         Constants.CODE_EMOJI,
+        Constants.CODE_ALPHA_FROM_EMOJI,
         Constants.CODE_UNSPECIFIED,
-        CODE_LEFT_PARENTHESIS,
-        CODE_RIGHT_PARENTHESIS,
-        CODE_LESS_THAN_SIGN,
-        CODE_GREATER_THAN_SIGN,
-        CODE_LEFT_SQUARE_BRACKET,
-        CODE_RIGHT_SQUARE_BRACKET,
-        CODE_LEFT_CURLY_BRACKET,
-        CODE_RIGHT_CURLY_BRACKET,
-    };
-
-    private static final int[] RTL = {
-        DEFAULT[0],
-        DEFAULT[1],
-        DEFAULT[2],
-        DEFAULT[3],
-        DEFAULT[4],
-        DEFAULT[5],
-        DEFAULT[6],
-        DEFAULT[7],
-        DEFAULT[8],
-        DEFAULT[9],
-        DEFAULT[10],
-        DEFAULT[11],
-        DEFAULT[12],
-        DEFAULT[13],
-        DEFAULT[14],
-        DEFAULT[15],
-        CODE_RIGHT_PARENTHESIS,
-        CODE_LEFT_PARENTHESIS,
-        CODE_GREATER_THAN_SIGN,
-        CODE_LESS_THAN_SIGN,
-        CODE_RIGHT_SQUARE_BRACKET,
-        CODE_LEFT_SQUARE_BRACKET,
-        CODE_RIGHT_CURLY_BRACKET,
-        CODE_LEFT_CURLY_BRACKET,
-    };
-
-    private static final String LANGUAGE_DEFAULT = "DEFAULT";
-    private static final String LANGUAGE_ARABIC = "ar";
-    private static final String LANGUAGE_PERSIAN = "fa";
-    private static final String LANGUAGE_HEBREW = "iw";
-
-    private static final Object[] LANGUAGE_AND_CODES = {
-        LANGUAGE_DEFAULT, DEFAULT,
-        LANGUAGE_ARABIC, RTL,
-        LANGUAGE_PERSIAN, RTL,
-        LANGUAGE_HEBREW, RTL,
     };
 
     static {
-        if (DEFAULT.length != RTL.length || DEFAULT.length != ID_TO_NAME.length) {
-            throw new RuntimeException("Internal inconsistency");
-        }
         for (int i = 0; i < ID_TO_NAME.length; i++) {
             sNameToIdMap.put(ID_TO_NAME[i], i);
         }
-
-        for (int i = 0; i < LANGUAGE_AND_CODES.length; i += 2) {
-            final String language = (String)LANGUAGE_AND_CODES[i];
-            final int[] codes = (int[])LANGUAGE_AND_CODES[i + 1];
-            sLanguageToCodesMap.put(language, codes);
-        }
     }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
index 336db18..09550c4 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -23,45 +23,71 @@
 import android.util.SparseIntArray;
 
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.util.HashMap;
 
 public final class KeyboardIconsSet {
     private static final String TAG = KeyboardIconsSet.class.getSimpleName();
 
+    public static final String PREFIX_ICON = "!icon/";
     public static final int ICON_UNDEFINED = 0;
     private static final int ATTR_UNDEFINED = 0;
 
+    private static final String NAME_UNDEFINED = "undefined";
+    public static final String NAME_SHIFT_KEY = "shift_key";
+    public static final String NAME_SHIFT_KEY_SHIFTED = "shift_key_shifted";
+    public static final String NAME_DELETE_KEY = "delete_key";
+    public static final String NAME_SETTINGS_KEY = "settings_key";
+    public static final String NAME_SPACE_KEY = "space_key";
+    public static final String NAME_SPACE_KEY_FOR_NUMBER_LAYOUT = "space_key_for_number_layout";
+    public static final String NAME_ENTER_KEY = "enter_key";
+    public static final String NAME_GO_KEY = "go_key";
+    public static final String NAME_SEARCH_KEY = "search_key";
+    public static final String NAME_SEND_KEY = "send_key";
+    public static final String NAME_NEXT_KEY = "next_key";
+    public static final String NAME_DONE_KEY = "done_key";
+    public static final String NAME_PREVIOUS_KEY = "previous_key";
+    public static final String NAME_TAB_KEY = "tab_key";
+    public static final String NAME_SHORTCUT_KEY = "shortcut_key";
+    public static final String NAME_SHORTCUT_KEY_DISABLED = "shortcut_key_disabled";
+    public static final String NAME_LANGUAGE_SWITCH_KEY = "language_switch_key";
+    public static final String NAME_ZWNJ_KEY = "zwnj_key";
+    public static final String NAME_ZWJ_KEY = "zwj_key";
+    public static final String NAME_EMOJI_KEY = "emoji_key";
+
     private static final SparseIntArray ATTR_ID_TO_ICON_ID = new SparseIntArray();
 
     // Icon name to icon id map.
-    private static final HashMap<String, Integer> sNameToIdsMap = CollectionUtils.newHashMap();
+    private static final HashMap<String, Integer> sNameToIdsMap = new HashMap<>();
 
     private static final Object[] NAMES_AND_ATTR_IDS = {
-        "undefined",                    ATTR_UNDEFINED,
-        "shift_key",                    R.styleable.Keyboard_iconShiftKey,
-        "delete_key",                   R.styleable.Keyboard_iconDeleteKey,
-        "settings_key",                 R.styleable.Keyboard_iconSettingsKey,
-        "space_key",                    R.styleable.Keyboard_iconSpaceKey,
-        "enter_key",                    R.styleable.Keyboard_iconEnterKey,
-        "search_key",                   R.styleable.Keyboard_iconSearchKey,
-        "tab_key",                      R.styleable.Keyboard_iconTabKey,
-        "shortcut_key",                 R.styleable.Keyboard_iconShortcutKey,
-        "shortcut_for_label",           R.styleable.Keyboard_iconShortcutForLabel,
-        "space_key_for_number_layout",  R.styleable.Keyboard_iconSpaceKeyForNumberLayout,
-        "shift_key_shifted",            R.styleable.Keyboard_iconShiftKeyShifted,
-        "shortcut_key_disabled",        R.styleable.Keyboard_iconShortcutKeyDisabled,
-        "tab_key_preview",              R.styleable.Keyboard_iconTabKeyPreview,
-        "language_switch_key",          R.styleable.Keyboard_iconLanguageSwitchKey,
-        "zwnj_key",                     R.styleable.Keyboard_iconZwnjKey,
-        "zwj_key",                      R.styleable.Keyboard_iconZwjKey,
-        "emoji_key",                    R.styleable.Keyboard_iconEmojiKey,
+        NAME_UNDEFINED,                   ATTR_UNDEFINED,
+        NAME_SHIFT_KEY,                   R.styleable.Keyboard_iconShiftKey,
+        NAME_DELETE_KEY,                  R.styleable.Keyboard_iconDeleteKey,
+        NAME_SETTINGS_KEY,                R.styleable.Keyboard_iconSettingsKey,
+        NAME_SPACE_KEY,                   R.styleable.Keyboard_iconSpaceKey,
+        NAME_ENTER_KEY,                   R.styleable.Keyboard_iconEnterKey,
+        NAME_GO_KEY,                      R.styleable.Keyboard_iconGoKey,
+        NAME_SEARCH_KEY,                  R.styleable.Keyboard_iconSearchKey,
+        NAME_SEND_KEY,                    R.styleable.Keyboard_iconSendKey,
+        NAME_NEXT_KEY,                    R.styleable.Keyboard_iconNextKey,
+        NAME_DONE_KEY,                    R.styleable.Keyboard_iconDoneKey,
+        NAME_PREVIOUS_KEY,                R.styleable.Keyboard_iconPreviousKey,
+        NAME_TAB_KEY,                     R.styleable.Keyboard_iconTabKey,
+        NAME_SHORTCUT_KEY,                R.styleable.Keyboard_iconShortcutKey,
+        NAME_SPACE_KEY_FOR_NUMBER_LAYOUT, R.styleable.Keyboard_iconSpaceKeyForNumberLayout,
+        NAME_SHIFT_KEY_SHIFTED,           R.styleable.Keyboard_iconShiftKeyShifted,
+        NAME_SHORTCUT_KEY_DISABLED,       R.styleable.Keyboard_iconShortcutKeyDisabled,
+        NAME_LANGUAGE_SWITCH_KEY,         R.styleable.Keyboard_iconLanguageSwitchKey,
+        NAME_ZWNJ_KEY,                    R.styleable.Keyboard_iconZwnjKey,
+        NAME_ZWJ_KEY,                     R.styleable.Keyboard_iconZwjKey,
+        NAME_EMOJI_KEY,                   R.styleable.Keyboard_iconEmojiKey,
     };
 
     private static int NUM_ICONS = NAMES_AND_ATTR_IDS.length / 2;
     private static final String[] ICON_NAMES = new String[NUM_ICONS];
     private final Drawable[] mIcons = new Drawable[NUM_ICONS];
+    private final int[] mIconResourceIds = new int[NUM_ICONS];
 
     static {
         int iconId = ICON_UNDEFINED;
@@ -69,7 +95,7 @@
             final String name = (String)NAMES_AND_ATTR_IDS[i];
             final Integer attrId = (Integer)NAMES_AND_ATTR_IDS[i + 1];
             if (attrId != ATTR_UNDEFINED) {
-                ATTR_ID_TO_ICON_ID.put(attrId,  iconId);
+                ATTR_ID_TO_ICON_ID.put(attrId, iconId);
             }
             sNameToIdsMap.put(name, iconId);
             ICON_NAMES[iconId] = name;
@@ -86,6 +112,7 @@
                 setDefaultBounds(icon);
                 final Integer iconId = ATTR_ID_TO_ICON_ID.get(attrId);
                 mIcons[iconId] = icon;
+                mIconResourceIds[iconId] = keyboardAttrs.getResourceId(attrId, 0);
             } catch (Resources.NotFoundException e) {
                 Log.w(TAG, "Drawable resource for icon #"
                         + keyboardAttrs.getResources().getResourceEntryName(attrId)
@@ -102,7 +129,7 @@
         return isValidIconId(iconId) ? ICON_NAMES[iconId] : "unknown<" + iconId + ">";
     }
 
-    static int getIconId(final String name) {
+    public static int getIconId(final String name) {
         Integer iconId = sNameToIdsMap.get(name);
         if (iconId != null) {
             return iconId;
@@ -110,6 +137,14 @@
         throw new RuntimeException("unknown icon name: " + name);
     }
 
+    public int getIconResourceId(final String name) {
+        final int iconId = getIconId(name);
+        if (isValidIconId(iconId)) {
+            return mIconResourceIds[iconId];
+        }
+        throw new RuntimeException("unknown icon name: " + name);
+    }
+
     public Drawable getIconDrawable(final int iconId) {
         if (isValidIconId(iconId)) {
             return mIcons[iconId];
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java
index d32bb75..5df9d3e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParams.java
@@ -21,9 +21,10 @@
 import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.KeyboardId;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.SortedSet;
 import java.util.TreeSet;
 
 public class KeyboardParams {
@@ -58,11 +59,11 @@
     public int GRID_WIDTH;
     public int GRID_HEIGHT;
 
-    public final TreeSet<Key> mKeys = CollectionUtils.newTreeSet(); // ordered set
-    public final ArrayList<Key> mShiftKeys = CollectionUtils.newArrayList();
-    public final ArrayList<Key> mAltCodeKeysWhileTyping = CollectionUtils.newArrayList();
+    // Keys are sorted from top-left to bottom-right order.
+    public final SortedSet<Key> mSortedKeys = new TreeSet<>(ROW_COLUMN_COMPARATOR);
+    public final ArrayList<Key> mShiftKeys = new ArrayList<>();
+    public final ArrayList<Key> mAltCodeKeysWhileTyping = new ArrayList<>();
     public final KeyboardIconsSet mIconsSet = new KeyboardIconsSet();
-    public final KeyboardCodesSet mCodesSet = new KeyboardCodesSet();
     public final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
     public final KeyStylesSet mKeyStyles = new KeyStylesSet(mTextsSet);
 
@@ -76,8 +77,20 @@
     public final TouchPositionCorrection mTouchPositionCorrection =
             new TouchPositionCorrection();
 
+    // Comparator to sort {@link Key}s from top-left to bottom-right order.
+    private static final Comparator<Key> ROW_COLUMN_COMPARATOR = new Comparator<Key>() {
+        @Override
+        public int compare(final Key lhs, final Key rhs) {
+            if (lhs.getY() < rhs.getY()) return -1;
+            if (lhs.getY() > rhs.getY()) return 1;
+            if (lhs.getX() < rhs.getX()) return -1;
+            if (lhs.getX() > rhs.getX()) return 1;
+            return 0;
+        }
+    };
+
     protected void clearKeys() {
-        mKeys.clear();
+        mSortedKeys.clear();
         mShiftKeys.clear();
         clearHistogram();
     }
@@ -89,7 +102,7 @@
             // Ignore zero width {@link Spacer}.
             return;
         }
-        mKeys.add(key);
+        mSortedKeys.add(key);
         if (isSpacer) {
             return;
         }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardRow.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardRow.java
index 0f9497c..92daf07 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardRow.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardRow.java
@@ -23,7 +23,6 @@
 import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.ResourceUtils;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -44,8 +43,9 @@
     /** The height of this row. */
     private final int mRowHeight;
 
-    private final ArrayDeque<RowAttributes> mRowAttributesStack = CollectionUtils.newArrayDeque();
+    private final ArrayDeque<RowAttributes> mRowAttributesStack = new ArrayDeque<>();
 
+    // TODO: Add keyActionFlags.
     private static class RowAttributes {
         /** Default width of a key in this row. */
         public final float mDefaultKeyWidth;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
index dd98c17..b98ced9 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java
@@ -27,10 +27,10 @@
  *
  * This class contains all keyboard state transition logic.
  *
- * The input events are {@link #onLoadKeyboard()}, {@link #onSaveKeyboardState()},
- * {@link #onPressKey(int,boolean,int)}, {@link #onReleaseKey(int,boolean)},
- * {@link #onCodeInput(int,int)}, {@link #onFinishSlidingInput()},
- * {@link #onUpdateShiftState(int,int)}, {@link #onResetKeyboardStateToAlphabet()}.
+ * The input events are {@link #onLoadKeyboard(int, int)}, {@link #onSaveKeyboardState()},
+ * {@link #onPressKey(int,boolean,int,int)}, {@link #onReleaseKey(int,boolean,int,int)},
+ * {@link #onCodeInput(int,int,int)}, {@link #onFinishSlidingInput(int,int)},
+ * {@link #onUpdateShiftState(int,int)}, {@link #onResetKeyboardStateToAlphabet(int,int)}.
  *
  * The actions are {@link SwitchActions}'s methods.
  */
@@ -52,7 +52,8 @@
         /**
          * Request to call back {@link KeyboardState#onUpdateShiftState(int, int)}.
          */
-        public void requestUpdatingShiftState();
+        public void requestUpdatingShiftState(final int currentAutoCapsState,
+                final int currentRecapitalizeState);
 
         public void startDoubleTapShiftKeyTimer();
         public boolean isInDoubleTapShiftKeyTimeout();
@@ -117,7 +118,8 @@
         mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
     }
 
-    public void onLoadKeyboard() {
+    public void onLoadKeyboard(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_EVENT) {
             Log.d(TAG, "onLoadKeyboard: " + this);
         }
@@ -127,7 +129,7 @@
         mPrevSymbolsKeyboardWasShifted = false;
         mShiftKeyState.onRelease();
         mSymbolKeyState.onRelease();
-        onRestoreKeyboardState();
+        onRestoreKeyboardState(currentAutoCapsState, currentRecapitalizeState);
     }
 
     private static final int UNSHIFT = 0;
@@ -153,13 +155,14 @@
         }
     }
 
-    private void onRestoreKeyboardState() {
+    private void onRestoreKeyboardState(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         final SavedKeyboardState state = mSavedKeyboardState;
         if (DEBUG_EVENT) {
             Log.d(TAG, "onRestoreKeyboardState: saved=" + state + " " + this);
         }
         if (!state.mIsValid || state.mIsAlphabetMode) {
-            setAlphabetKeyboard();
+            setAlphabetKeyboard(currentAutoCapsState, currentRecapitalizeState);
         } else if (state.mIsEmojiMode) {
             setEmojiKeyboard();
         } else {
@@ -237,7 +240,8 @@
         mAlphabetShiftState.setShiftLocked(shiftLocked);
     }
 
-    private void toggleAlphabetAndSymbols() {
+    private void toggleAlphabetAndSymbols(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_ACTION) {
             Log.d(TAG, "toggleAlphabetAndSymbols: " + this);
         }
@@ -251,7 +255,7 @@
             mPrevSymbolsKeyboardWasShifted = false;
         } else {
             mPrevSymbolsKeyboardWasShifted = mIsSymbolShifted;
-            setAlphabetKeyboard();
+            setAlphabetKeyboard(currentAutoCapsState, currentRecapitalizeState);
             if (mPrevMainKeyboardWasShiftLocked) {
                 setShiftLocked(true);
             }
@@ -261,14 +265,15 @@
 
     // TODO: Remove this method. Come up with a more comprehensive way to reset the keyboard layout
     // when a keyboard layout set doesn't get reloaded in LatinIME.onStartInputViewInternal().
-    private void resetKeyboardStateToAlphabet() {
+    private void resetKeyboardStateToAlphabet(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_ACTION) {
             Log.d(TAG, "resetKeyboardStateToAlphabet: " + this);
         }
         if (mIsAlphabetMode) return;
 
         mPrevSymbolsKeyboardWasShifted = mIsSymbolShifted;
-        setAlphabetKeyboard();
+        setAlphabetKeyboard(currentAutoCapsState, currentRecapitalizeState);
         if (mPrevMainKeyboardWasShiftLocked) {
             setShiftLocked(true);
         }
@@ -283,7 +288,8 @@
         }
     }
 
-    private void setAlphabetKeyboard() {
+    private void setAlphabetKeyboard(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_ACTION) {
             Log.d(TAG, "setAlphabetKeyboard");
         }
@@ -294,7 +300,7 @@
         mIsSymbolShifted = false;
         mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
         mSwitchState = SWITCH_STATE_ALPHA;
-        mSwitchActions.requestUpdatingShiftState();
+        mSwitchActions.requestUpdatingShiftState(currentAutoCapsState, currentRecapitalizeState);
     }
 
     private void setSymbolsKeyboard() {
@@ -304,6 +310,7 @@
         mSwitchActions.setSymbolsKeyboard();
         mIsAlphabetMode = false;
         mIsSymbolShifted = false;
+        mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
         // Reset alphabet shift state.
         mAlphabetShiftState.setShiftLocked(false);
         mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
@@ -316,6 +323,7 @@
         mSwitchActions.setSymbolsShiftedKeyboard();
         mIsAlphabetMode = false;
         mIsSymbolShifted = true;
+        mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
         // Reset alphabet shift state.
         mAlphabetShiftState.setShiftLocked(false);
         mSwitchState = SWITCH_STATE_SYMBOL_BEGIN;
@@ -327,16 +335,18 @@
         }
         mIsAlphabetMode = false;
         mIsEmojiMode = true;
+        mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
         // Remember caps lock mode and reset alphabet shift state.
         mPrevMainKeyboardWasShiftLocked = mAlphabetShiftState.isShiftLocked();
         mAlphabetShiftState.setShiftLocked(false);
         mSwitchActions.setEmojiKeyboard();
     }
 
-    public void onPressKey(final int code, final boolean isSinglePointer, final int autoCaps) {
+    public void onPressKey(final int code, final boolean isSinglePointer,
+            final int currentAutoCapsState, final int currentRecapitalizeState) {
         if (DEBUG_EVENT) {
-            Log.d(TAG, "onPressKey: code=" + Constants.printableCode(code)
-                   + " single=" + isSinglePointer + " autoCaps=" + autoCaps + " " + this);
+            Log.d(TAG, "onPressKey: code=" + Constants.printableCode(code) + " single="
+                    + isSinglePointer + " autoCaps=" + currentAutoCapsState + " " + this);
         }
         if (code != Constants.CODE_SHIFT) {
             // Because the double tap shift key timer is to detect two consecutive shift key press,
@@ -348,7 +358,7 @@
         } else if (code == Constants.CODE_CAPSLOCK) {
             // Nothing to do here. See {@link #onReleaseKey(int,boolean)}.
         } else if (code == Constants.CODE_SWITCH_ALPHA_SYMBOL) {
-            onPressSymbol();
+            onPressSymbol(currentAutoCapsState, currentRecapitalizeState);
         } else {
             mShiftKeyState.onOtherKeyPressed();
             mSymbolKeyState.onOtherKeyPressed();
@@ -360,7 +370,8 @@
             // As for #3, please note that it's required to check even when the auto caps mode is
             // off because, for example, we may be in the #1 state within the manual temporary
             // shifted mode.
-            if (!isSinglePointer && mIsAlphabetMode && autoCaps != TextUtils.CAP_MODE_CHARACTERS) {
+            if (!isSinglePointer && mIsAlphabetMode
+                    && currentAutoCapsState != TextUtils.CAP_MODE_CHARACTERS) {
                 final boolean needsToResetAutoCaps = mAlphabetShiftState.isAutomaticShifted()
                         || (mAlphabetShiftState.isManualShifted() && mShiftKeyState.isReleasing());
                 if (needsToResetAutoCaps) {
@@ -370,31 +381,34 @@
         }
     }
 
-    public void onReleaseKey(final int code, final boolean withSliding) {
+    public void onReleaseKey(final int code, final boolean withSliding,
+            final int currentAutoCapsState, final int currentRecapitalizeState) {
         if (DEBUG_EVENT) {
             Log.d(TAG, "onReleaseKey: code=" + Constants.printableCode(code)
                     + " sliding=" + withSliding + " " + this);
         }
         if (code == Constants.CODE_SHIFT) {
-            onReleaseShift(withSliding);
+            onReleaseShift(withSliding, currentAutoCapsState, currentRecapitalizeState);
         } else if (code == Constants.CODE_CAPSLOCK) {
             setShiftLocked(!mAlphabetShiftState.isShiftLocked());
         } else if (code == Constants.CODE_SWITCH_ALPHA_SYMBOL) {
-            onReleaseSymbol(withSliding);
+            onReleaseSymbol(withSliding, currentAutoCapsState, currentRecapitalizeState);
         }
     }
 
-    private void onPressSymbol() {
-        toggleAlphabetAndSymbols();
+    private void onPressSymbol(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
+        toggleAlphabetAndSymbols(currentAutoCapsState, currentRecapitalizeState);
         mSymbolKeyState.onPress();
         mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL;
     }
 
-    private void onReleaseSymbol(final boolean withSliding) {
+    private void onReleaseSymbol(final boolean withSliding, final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (mSymbolKeyState.isChording()) {
             // Switch back to the previous keyboard mode if the user chords the mode change key and
             // another key, then releases the mode change key.
-            toggleAlphabetAndSymbols();
+            toggleAlphabetAndSymbols(currentAutoCapsState, currentRecapitalizeState);
         } else if (!withSliding) {
             // If the mode change key is being released without sliding, we should forget the
             // previous symbols keyboard shift state and simply switch back to symbols layout
@@ -415,11 +429,12 @@
 
     // TODO: Remove this method. Come up with a more comprehensive way to reset the keyboard layout
     // when a keyboard layout set doesn't get reloaded in LatinIME.onStartInputViewInternal().
-    public void onResetKeyboardStateToAlphabet() {
+    public void onResetKeyboardStateToAlphabet(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_EVENT) {
             Log.d(TAG, "onResetKeyboardStateToAlphabet: " + this);
         }
-        resetKeyboardStateToAlphabet();
+        resetKeyboardStateToAlphabet(currentAutoCapsState, currentRecapitalizeState);
     }
 
     private void updateShiftStateForRecapitalize(final int recapitalizeMode) {
@@ -510,7 +525,8 @@
         }
     }
 
-    private void onReleaseShift(final boolean withSliding) {
+    private void onReleaseShift(final boolean withSliding, final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE != mRecapitalizeMode) {
             // We are recapitalizing. We should match the keyboard state to the recapitalize
             // state in priority.
@@ -533,7 +549,8 @@
                 // After chording input, automatic shift state may have been changed depending on
                 // what characters were input.
                 mShiftKeyState.onRelease();
-                mSwitchActions.requestUpdatingShiftState();
+                mSwitchActions.requestUpdatingShiftState(currentAutoCapsState,
+                        currentRecapitalizeState);
                 return;
             } else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) {
                 // In shift locked state, shift has been pressed and slid out to other key.
@@ -570,20 +587,21 @@
         mShiftKeyState.onRelease();
     }
 
-    public void onFinishSlidingInput() {
+    public void onFinishSlidingInput(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_EVENT) {
             Log.d(TAG, "onFinishSlidingInput: " + this);
         }
         // Switch back to the previous keyboard mode if the user cancels sliding input.
         switch (mSwitchState) {
         case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL:
-            toggleAlphabetAndSymbols();
+            toggleAlphabetAndSymbols(currentAutoCapsState, currentRecapitalizeState);
             break;
         case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE:
             toggleShiftInSymbols();
             break;
         case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT:
-            setAlphabetKeyboard();
+            setAlphabetKeyboard(currentAutoCapsState, currentRecapitalizeState);
             break;
         }
     }
@@ -592,10 +610,11 @@
         return c == Constants.CODE_SPACE || c == Constants.CODE_ENTER;
     }
 
-    public void onCodeInput(final int code, final int autoCaps) {
+    public void onCodeInput(final int code, final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
         if (DEBUG_EVENT) {
             Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code)
-                    + " autoCaps=" + autoCaps + " " + this);
+                    + " autoCaps=" + currentAutoCapsState + " " + this);
         }
 
         switch (mSwitchState) {
@@ -631,7 +650,7 @@
             // Switch back to alpha keyboard mode if user types one or more non-space/enter
             // characters followed by a space/enter.
             if (isSpaceOrEnter(code)) {
-                toggleAlphabetAndSymbols();
+                toggleAlphabetAndSymbols(currentAutoCapsState, currentRecapitalizeState);
                 mPrevSymbolsKeyboardWasShifted = false;
             }
             break;
@@ -639,9 +658,11 @@
 
         // If the code is a letter, update keyboard shift state.
         if (Constants.isLetterCode(code)) {
-            updateAlphabetShiftState(autoCaps, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
+            updateAlphabetShiftState(currentAutoCapsState, currentRecapitalizeState);
         } else if (code == Constants.CODE_EMOJI) {
             setEmojiKeyboard();
+        } else if (code == Constants.CODE_ALPHA_FROM_EMOJI) {
+            setAlphabetKeyboard(currentAutoCapsState, currentRecapitalizeState);
         }
     }
 
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index c2a01b5..cd6abee 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -18,3504 +18,132 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.text.TextUtils;
 
 import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.RunInLocale;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
 import java.util.HashMap;
+import java.util.Locale;
 
-/**
- * !!!!! DO NOT EDIT THIS FILE !!!!!
- *
- * This file is generated by tools/make-keyboard-text. The base template file is
- *   tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
- *
- * This file must be updated when any text resources in keyboard layout files have been changed.
- * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
- * and should be defined in
- *   tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml
- *
- * To update this file, please run the following commands.
- *   $ cd $ANDROID_BUILD_TOP
- *   $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
- *   $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src
- *
- * The updated source file will be generated to the following path (this file).
- *   packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/
- *   KeyboardTextsSet.java
- */
 public final class KeyboardTextsSet {
-    // Language to texts map.
-    private static final HashMap<String, String[]> sLocaleToTextsMap = CollectionUtils.newHashMap();
-    private static final HashMap<String, Integer> sNameToIdsMap = CollectionUtils.newHashMap();
+    public static final String PREFIX_TEXT = "!text/";
+    public static final String SWITCH_TO_ALPHA_KEY_LABEL = "keylabel_to_alpha";
 
-    private String[] mTexts;
+    private static final char BACKSLASH = Constants.CODE_BACKSLASH;
+    private static final int MAX_STRING_REFERENCE_INDIRECTION = 10;
+
+    private String[] mTextsTable;
     // Resource name to text map.
-    private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap();
+    private HashMap<String, String> mResourceNameToTextsMap = new HashMap<>();
 
-    public void setLanguage(final String language) {
-        mTexts = sLocaleToTextsMap.get(language);
-        if (mTexts == null) {
-            mTexts = LANGUAGE_DEFAULT;
-        }
-    }
-
-    public void loadStringResources(final Context context) {
+    public void setLocale(final Locale locale, final Context context) {
+        mTextsTable = KeyboardTextsTable.getTextsTable(locale);
+        final Resources res = context.getResources();
         final int referenceId = context.getApplicationInfo().labelRes;
-        loadStringResourcesInternal(context, RESOURCE_NAMES, referenceId);
+        final String resourcePackageName = res.getResourcePackageName(referenceId);
+        final RunInLocale<Void> job = new RunInLocale<Void>() {
+            @Override
+            protected Void job(final Resources resource) {
+                loadStringResourcesInternal(res, RESOURCE_NAMES, resourcePackageName);
+                return null;
+            }
+        };
+        // Null means the current system locale.
+        job.runInLocale(res,
+                SubtypeLocaleUtils.NO_LANGUAGE.equals(locale.toString()) ? null : locale);
     }
 
     @UsedForTesting
-    void loadStringResourcesInternal(final Context context, final String[] resourceNames,
-            final int referenceId) {
-        final Resources res = context.getResources();
-        final String packageName = res.getResourcePackageName(referenceId);
+    void loadStringResourcesInternal(final Resources res, final String[] resourceNames,
+            final String resourcePackageName) {
         for (final String resName : resourceNames) {
-            final int resId = res.getIdentifier(resName, "string", packageName);
+            final int resId = res.getIdentifier(resName, "string", resourcePackageName);
             mResourceNameToTextsMap.put(resName, res.getString(resId));
         }
     }
 
     public String getText(final String name) {
-        String text = mResourceNameToTextsMap.get(name);
-        if (text != null) {
-            return text;
-        }
-        final Integer id = sNameToIdsMap.get(name);
-        if (id == null) throw new RuntimeException("Unknown label: " + name);
-        text = (id < mTexts.length) ? mTexts[id] : null;
-        return (text == null) ? LANGUAGE_DEFAULT[id] : text;
+        final String text = mResourceNameToTextsMap.get(name);
+        return (text != null) ? text : KeyboardTextsTable.getText(name, mTextsTable);
     }
 
-    private static final String[] RESOURCE_NAMES = {
-        // These texts' name should be aligned with the @string/<name> in values/strings.xml.
+    private static int searchTextNameEnd(final String text, final int start) {
+        final int size = text.length();
+        for (int pos = start; pos < size; pos++) {
+            final char c = text.charAt(pos);
+            // Label name should be consisted of [a-zA-Z_0-9].
+            if ((c >= 'a' && c <= 'z') || c == '_' || (c >= '0' && c <= '9')) {
+                continue;
+            }
+            return pos;
+        }
+        return size;
+    }
+
+    // TODO: Resolve text reference when creating {@link KeyboardTextsTable} class.
+    public String resolveTextReference(final String rawText) {
+        if (TextUtils.isEmpty(rawText)) {
+            return null;
+        }
+        int level = 0;
+        String text = rawText;
+        StringBuilder sb;
+        do {
+            level++;
+            if (level >= MAX_STRING_REFERENCE_INDIRECTION) {
+                throw new RuntimeException("Too many " + PREFIX_TEXT + "name indirection: " + text);
+            }
+
+            final int prefixLen = PREFIX_TEXT.length();
+            final int size = text.length();
+            if (size < prefixLen) {
+                break;
+            }
+
+            sb = null;
+            for (int pos = 0; pos < size; pos++) {
+                final char c = text.charAt(pos);
+                if (text.startsWith(PREFIX_TEXT, pos)) {
+                    if (sb == null) {
+                        sb = new StringBuilder(text.substring(0, pos));
+                    }
+                    final int end = searchTextNameEnd(text, pos + prefixLen);
+                    final String name = text.substring(pos + prefixLen, end);
+                    sb.append(getText(name));
+                    pos = end - 1;
+                } else if (c == BACKSLASH) {
+                    if (sb != null) {
+                        // Append both escape character and escaped character.
+                        sb.append(text.substring(pos, Math.min(pos + 2, size)));
+                    }
+                    pos++;
+                } else if (sb != null) {
+                    sb.append(c);
+                }
+            }
+
+            if (sb != null) {
+                text = sb.toString();
+            }
+        } while (sb != null);
+        return TextUtils.isEmpty(text) ? null : text;
+    }
+
+    // These texts' name should be aligned with the @string/<name> in
+    // values*/strings-action-keys.xml.
+    static final String[] RESOURCE_NAMES = {
         // Labels for action.
         "label_go_key",
-        // "label_search_key",
         "label_send_key",
         "label_next_key",
         "label_done_key",
+        "label_search_key",
         "label_previous_key",
         // Other labels.
         "label_pause_key",
         "label_wait_key",
     };
-
-    private static final String[] NAMES = {
-        /*  0 */ "more_keys_for_a",
-        /*  1 */ "more_keys_for_e",
-        /*  2 */ "more_keys_for_i",
-        /*  3 */ "more_keys_for_o",
-        /*  4 */ "more_keys_for_u",
-        /*  5 */ "more_keys_for_s",
-        /*  6 */ "more_keys_for_n",
-        /*  7 */ "more_keys_for_c",
-        /*  8 */ "more_keys_for_y",
-        /*  9 */ "more_keys_for_d",
-        /* 10 */ "more_keys_for_r",
-        /* 11 */ "more_keys_for_t",
-        /* 12 */ "more_keys_for_z",
-        /* 13 */ "more_keys_for_k",
-        /* 14 */ "more_keys_for_l",
-        /* 15 */ "more_keys_for_g",
-        /* 16 */ "more_keys_for_v",
-        /* 17 */ "more_keys_for_h",
-        /* 18 */ "more_keys_for_j",
-        /* 19 */ "more_keys_for_w",
-        /* 20 */ "keylabel_for_nordic_row1_11",
-        /* 21 */ "keylabel_for_nordic_row2_10",
-        /* 22 */ "keylabel_for_nordic_row2_11",
-        /* 23 */ "more_keys_for_nordic_row2_10",
-        /* 24 */ "more_keys_for_nordic_row2_11",
-        /* 25 */ "keylabel_for_east_slavic_row1_9",
-        /* 26 */ "keylabel_for_east_slavic_row1_12",
-        /* 27 */ "keylabel_for_east_slavic_row2_1",
-        /* 28 */ "keylabel_for_east_slavic_row2_11",
-        /* 29 */ "keylabel_for_east_slavic_row3_5",
-        /* 30 */ "more_keys_for_cyrillic_u",
-        /* 31 */ "more_keys_for_cyrillic_ka",
-        /* 32 */ "more_keys_for_cyrillic_en",
-        /* 33 */ "more_keys_for_cyrillic_ghe",
-        /* 34 */ "more_keys_for_east_slavic_row2_1",
-        /* 35 */ "more_keys_for_cyrillic_a",
-        /* 36 */ "more_keys_for_cyrillic_o",
-        /* 37 */ "more_keys_for_cyrillic_soft_sign",
-        /* 38 */ "more_keys_for_east_slavic_row2_11",
-        /* 39 */ "keylabel_for_south_slavic_row1_6",
-        /* 40 */ "keylabel_for_south_slavic_row2_11",
-        /* 41 */ "keylabel_for_south_slavic_row3_1",
-        /* 42 */ "keylabel_for_south_slavic_row3_8",
-        /* 43 */ "more_keys_for_cyrillic_ie",
-        /* 44 */ "more_keys_for_cyrillic_i",
-        /* 45 */ "label_to_alpha_key",
-        /* 46 */ "single_quotes",
-        /* 47 */ "double_quotes",
-        /* 48 */ "single_angle_quotes",
-        /* 49 */ "double_angle_quotes",
-        /* 50 */ "more_keys_for_currency_dollar",
-        /* 51 */ "keylabel_for_currency",
-        /* 52 */ "more_keys_for_currency",
-        /* 53 */ "more_keys_for_punctuation",
-        /* 54 */ "more_keys_for_star",
-        /* 55 */ "more_keys_for_bullet",
-        /* 56 */ "more_keys_for_plus",
-        /* 57 */ "more_keys_for_left_parenthesis",
-        /* 58 */ "more_keys_for_right_parenthesis",
-        /* 59 */ "more_keys_for_less_than",
-        /* 60 */ "more_keys_for_greater_than",
-        /* 61 */ "more_keys_for_arabic_diacritics",
-        /* 62 */ "keyhintlabel_for_arabic_diacritics",
-        /* 63 */ "keylabel_for_symbols_1",
-        /* 64 */ "keylabel_for_symbols_2",
-        /* 65 */ "keylabel_for_symbols_3",
-        /* 66 */ "keylabel_for_symbols_4",
-        /* 67 */ "keylabel_for_symbols_5",
-        /* 68 */ "keylabel_for_symbols_6",
-        /* 69 */ "keylabel_for_symbols_7",
-        /* 70 */ "keylabel_for_symbols_8",
-        /* 71 */ "keylabel_for_symbols_9",
-        /* 72 */ "keylabel_for_symbols_0",
-        /* 73 */ "label_to_symbol_key",
-        /* 74 */ "label_to_symbol_with_microphone_key",
-        /* 75 */ "additional_more_keys_for_symbols_1",
-        /* 76 */ "additional_more_keys_for_symbols_2",
-        /* 77 */ "additional_more_keys_for_symbols_3",
-        /* 78 */ "additional_more_keys_for_symbols_4",
-        /* 79 */ "additional_more_keys_for_symbols_5",
-        /* 80 */ "additional_more_keys_for_symbols_6",
-        /* 81 */ "additional_more_keys_for_symbols_7",
-        /* 82 */ "additional_more_keys_for_symbols_8",
-        /* 83 */ "additional_more_keys_for_symbols_9",
-        /* 84 */ "additional_more_keys_for_symbols_0",
-        /* 85 */ "more_keys_for_symbols_1",
-        /* 86 */ "more_keys_for_symbols_2",
-        /* 87 */ "more_keys_for_symbols_3",
-        /* 88 */ "more_keys_for_symbols_4",
-        /* 89 */ "more_keys_for_symbols_5",
-        /* 90 */ "more_keys_for_symbols_6",
-        /* 91 */ "more_keys_for_symbols_7",
-        /* 92 */ "more_keys_for_symbols_8",
-        /* 93 */ "more_keys_for_symbols_9",
-        /* 94 */ "more_keys_for_symbols_0",
-        /* 95 */ "keylabel_for_comma",
-        /* 96 */ "more_keys_for_comma",
-        /* 97 */ "keylabel_for_symbols_question",
-        /* 98 */ "keylabel_for_symbols_semicolon",
-        /* 99 */ "keylabel_for_symbols_percent",
-        /* 100 */ "more_keys_for_symbols_exclamation",
-        /* 101 */ "more_keys_for_symbols_question",
-        /* 102 */ "more_keys_for_symbols_semicolon",
-        /* 103 */ "more_keys_for_symbols_percent",
-        /* 104 */ "keylabel_for_tablet_comma",
-        /* 105 */ "keyhintlabel_for_tablet_comma",
-        /* 106 */ "more_keys_for_tablet_comma",
-        /* 107 */ "keyhintlabel_for_period",
-        /* 108 */ "more_keys_for_period",
-        /* 109 */ "keylabel_for_apostrophe",
-        /* 110 */ "keyhintlabel_for_apostrophe",
-        /* 111 */ "more_keys_for_apostrophe",
-        /* 112 */ "more_keys_for_q",
-        /* 113 */ "more_keys_for_x",
-        /* 114 */ "keylabel_for_q",
-        /* 115 */ "keylabel_for_w",
-        /* 116 */ "keylabel_for_y",
-        /* 117 */ "keylabel_for_x",
-        /* 118 */ "keylabel_for_spanish_row2_10",
-        /* 119 */ "more_keys_for_am_pm",
-        /* 120 */ "settings_as_more_key",
-        /* 121 */ "shortcut_as_more_key",
-        /* 122 */ "action_next_as_more_key",
-        /* 123 */ "action_previous_as_more_key",
-        /* 124 */ "label_to_more_symbol_key",
-        /* 125 */ "label_to_more_symbol_for_tablet_key",
-        /* 126 */ "label_tab_key",
-        /* 127 */ "label_to_phone_numeric_key",
-        /* 128 */ "label_to_phone_symbols_key",
-        /* 129 */ "label_time_am",
-        /* 130 */ "label_time_pm",
-        /* 131 */ "keylabel_for_popular_domain",
-        /* 132 */ "more_keys_for_popular_domain",
-        /* 133 */ "more_keys_for_smiley",
-        /* 134 */ "single_laqm_raqm",
-        /* 135 */ "single_laqm_raqm_rtl",
-        /* 136 */ "single_raqm_laqm",
-        /* 137 */ "double_laqm_raqm",
-        /* 138 */ "double_laqm_raqm_rtl",
-        /* 139 */ "double_raqm_laqm",
-        /* 140 */ "single_lqm_rqm",
-        /* 141 */ "single_9qm_lqm",
-        /* 142 */ "single_9qm_rqm",
-        /* 143 */ "double_lqm_rqm",
-        /* 144 */ "double_9qm_lqm",
-        /* 145 */ "double_9qm_rqm",
-        /* 146 */ "more_keys_for_single_quote",
-        /* 147 */ "more_keys_for_double_quote",
-        /* 148 */ "more_keys_for_tablet_double_quote",
-        /* 149 */ "emoji_key_as_more_key",
-    };
-
-    private static final String EMPTY = "";
-
-    /* Default texts */
-    private static final String[] LANGUAGE_DEFAULT = {
-        /* 0~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        /* 45 */ "ABC",
-        /* 46 */ "!text/single_lqm_rqm",
-        /* 47 */ "!text/double_lqm_rqm",
-        /* 48 */ "!text/single_laqm_raqm",
-        /* 49 */ "!text/double_laqm_raqm",
-        // U+00A2: "¢" CENT SIGN
-        // U+00A3: "£" POUND SIGN
-        // U+20AC: "€" EURO SIGN
-        // U+00A5: "¥" YEN SIGN
-        // U+20B1: "₱" PESO SIGN
-        /* 50 */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
-        /* 51 */ "$",
-        /* 52 */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1",
-        /* 53 */ "!fixedColumnOrder!8,;,/,(,),#,!,\\,,?,&,\\%,+,\",-,:,',@",
-        // U+2020: "†" DAGGER
-        // U+2021: "‡" DOUBLE DAGGER
-        // U+2605: "★" BLACK STAR
-        /* 54 */ "\u2020,\u2021,\u2605",
-        // U+266A: "♪" EIGHTH NOTE
-        // U+2665: "♥" BLACK HEART SUIT
-        // U+2660: "♠" BLACK SPADE SUIT
-        // U+2666: "♦" BLACK DIAMOND SUIT
-        // U+2663: "♣" BLACK CLUB SUIT
-        /* 55 */ "\u266A,\u2665,\u2660,\u2666,\u2663",
-        // U+00B1: "±" PLUS-MINUS SIGN
-        /* 56 */ "\u00B1",
-        // The all letters need to be mirrored are found at
-        // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
-        /* 57 */ "!fixedColumnOrder!3,<,{,[",
-        /* 58 */ "!fixedColumnOrder!3,>,},]",
-        // 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
-        /* 59 */ "!fixedColumnOrder!3,\u2039,\u2264,\u00AB",
-        /* 60 */ "!fixedColumnOrder!3,\u203A,\u2265,\u00BB",
-        /* 61 */ EMPTY,
-        /* 62 */ EMPTY,
-        /* 63 */ "1",
-        /* 64 */ "2",
-        /* 65 */ "3",
-        /* 66 */ "4",
-        /* 67 */ "5",
-        /* 68 */ "6",
-        /* 69 */ "7",
-        /* 70 */ "8",
-        /* 71 */ "9",
-        /* 72 */ "0",
-        // Label for "switch to symbols" key.
-        /* 73 */ "?123",
-        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-        // part because it'll be appended by the code.
-        /* 74 */ "123",
-        /* 75~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~84 */
-        // 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
-        /* 85 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
-        // U+00B2: "²" SUPERSCRIPT TWO
-        // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
-        /* 86 */ "\u00B2,\u2154",
-        // U+00B3: "³" SUPERSCRIPT THREE
-        // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
-        // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
-        /* 87 */ "\u00B3,\u00BE,\u215C",
-        // U+2074: "⁴" SUPERSCRIPT FOUR
-        /* 88 */ "\u2074",
-        // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
-        /* 89 */ "\u215D",
-        /* 90 */ EMPTY,
-        // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
-        /* 91 */ "\u215E",
-        /* 92 */ EMPTY,
-        /* 93 */ EMPTY,
-        // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
-        // U+2205: "∅" EMPTY SET
-        /* 94 */ "\u207F,\u2205",
-        /* 95 */ ",",
-        /* 96 */ EMPTY,
-        /* 97 */ "?",
-        /* 98 */ ";",
-        /* 99 */ "%",
-        // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 100 */ "\u00A1",
-        // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 101 */ "\u00BF",
-        /* 102 */ EMPTY,
-        // U+2030: "‰" PER MILLE SIGN
-        /* 103 */ "\u2030",
-        /* 104 */ ",",
-        /* 105~ */
-        EMPTY, EMPTY, EMPTY,
-        /* ~107 */
-        // U+2026: "…" HORIZONTAL ELLIPSIS
-        /* 108 */ "\u2026",
-        /* 109 */ "\'",
-        /* 110 */ "\"",
-        /* 111 */ "\"",
-        /* 112 */ EMPTY,
-        /* 113 */ EMPTY,
-        /* 114 */ "q",
-        /* 115 */ "w",
-        /* 116 */ "y",
-        /* 117 */ "x",
-        /* 118 */ EMPTY,
-        /* 119 */ "!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm",
-        /* 120 */ "!icon/settings_key|!code/key_settings",
-        /* 121 */ "!icon/shortcut_key|!code/key_shortcut",
-        /* 122 */ "!hasLabels!,!text/label_next_key|!code/key_action_next",
-        /* 123 */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
-        // Label for "switch to more symbol" modifier key.  Must be short to fit on key!
-        /* 124 */ "= \\ <",
-        // Label for "switch to more symbol" modifier key on tablets.  Must be short to fit on key!
-        /* 125 */ "~ [ <",
-        // Label for "Tab" key.  Must be short to fit on key!
-        /* 126 */ "Tab",
-        // Label for "switch to phone numeric" key.  Must be short to fit on key!
-        /* 127 */ "123",
-        // Label for "switch to phone symbols" key.  Must be short to fit on key!
-        // U+FF0A: "＊" FULLWIDTH ASTERISK
-        // U+FF03: "＃" FULLWIDTH NUMBER SIGN
-        /* 128 */ "\uFF0A\uFF03",
-        // Key label for "ante meridiem"
-        /* 129 */ "AM",
-        // Key label for "post meridiem"
-        /* 130 */ "PM",
-        /* 131 */ ".com",
-        // popular web domains for the locale - most popular, displayed on the keyboard
-        /* 132 */ "!hasLabels!,.net,.org,.gov,.edu",
-        /* 133 */ "!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ ",
-        // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-        // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-        // The following characters don't need BIDI mirroring.
-        // U+2018: "‘" LEFT SINGLE QUOTATION MARK
-        // U+2019: "’" RIGHT SINGLE QUOTATION MARK
-        // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
-        // U+201C: "“" LEFT DOUBLE QUOTATION MARK
-        // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
-        // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
-        // Abbreviations are:
-        // laqm: LEFT-POINTING ANGLE QUOTATION MARK
-        // raqm: RIGHT-POINTING ANGLE QUOTATION MARK
-        // rtl: Right-To-Left script order
-        // lqm: LEFT QUOTATION MARK
-        // rqm: RIGHT QUOTATION MARK
-        // 9qm: LOW-9 QUOTATION MARK
-        // The following each quotation mark pair consist of
-        // <opening quotation mark>, <closing quotation mark>
-        // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>.
-        /* 134 */ "\u2039,\u203A",
-        /* 135 */ "\u2039|\u203A,\u203A|\u2039",
-        /* 136 */ "\u203A,\u2039",
-        /* 137 */ "\u00AB,\u00BB",
-        /* 138 */ "\u00AB|\u00BB,\u00BB|\u00AB",
-        /* 139 */ "\u00BB,\u00AB",
-        // The following each quotation mark triplet consists of
-        // <another quotation mark>, <opening quotation mark>, <closing quotation mark>
-        // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>.
-        /* 140 */ "\u201A,\u2018,\u2019",
-        /* 141 */ "\u2019,\u201A,\u2018",
-        /* 142 */ "\u2018,\u201A,\u2019",
-        /* 143 */ "\u201E,\u201C,\u201D",
-        /* 144 */ "\u201D,\u201E,\u201C",
-        /* 145 */ "\u201C,\u201E,\u201D",
-        /* 146 */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
-        /* 147 */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
-        /* 148 */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
-        /* 149 */ "!icon/emoji_key|!code/key_emoji",
-    };
-
-    /* Language af: Afrikaans */
-    private static final String[] LANGUAGE_af = {
-        // This is the same as Dutch except more keys of y and demoting vowels with diaeresis.
-        // 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+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
-        /* 0 */ "\u00E1,\u00E2,\u00E4,\u00E0,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // 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: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 2 */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
-        // 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+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
-        /* 3 */ "\u00F3,\u00F4,\u00F6,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* 4 */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
-        /* 5 */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        /* 7 */ null,
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 8 */ "\u00FD,\u0133",
-    };
-
-    /* Language ar: Arabic */
-    private static final String[] LANGUAGE_ar = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0623: "ا" ARABIC LETTER ALEF
-        // U+200C: ZERO WIDTH NON-JOINER
-        // U+0628: "ب" ARABIC LETTER BEH
-        // U+062C: "پ" ARABIC LETTER PEH
-        /* 45 */ "\u0623\u200C\u0628\u200C\u062C",
-        /* 46 */ null,
-        /* 47 */ null,
-        /* 48 */ "!text/single_laqm_raqm_rtl",
-        /* 49 */ "!text/double_laqm_raqm_rtl",
-        /* 50~ */
-        null, null, null,
-        /* ~52 */
-        // U+061F: "؟" ARABIC QUESTION MARK
-        // U+060C: "،" ARABIC COMMA
-        // U+061B: "؛" ARABIC SEMICOLON
-        /* 53 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(",
-        // U+2605: "★" BLACK STAR
-        // U+066D: "٭" ARABIC FIVE POINTED STAR
-        /* 54 */ "\u2605,\u066D",
-        // U+266A: "♪" EIGHTH NOTE
-        /* 55 */ "\u266A",
-        /* 56 */ null,
-        // 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
-        /* 57 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
-        /* 58 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
-        // 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
-        /* 59 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
-        /* 60 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
-        // U+0655: "ٕ" ARABIC HAMZA BELOW
-        // U+0654: "ٔ" ARABIC HAMZA ABOVE
-        // U+0652: "ْ" ARABIC SUKUN
-        // U+064D: "ٍ" ARABIC KASRATAN
-        // U+064C: "ٌ" ARABIC DAMMATAN
-        // U+064B: "ً" ARABIC FATHATAN
-        // U+0651: "ّ" ARABIC SHADDA
-        // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
-        // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
-        // U+0653: "ٓ" ARABIC MADDAH ABOVE
-        // U+0650: "ِ" ARABIC KASRA
-        // U+064F: "ُ" ARABIC DAMMA
-        // U+064E: "َ" ARABIC FATHA
-        // U+0640: "ـ" ARABIC TATWEEL
-        // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
-        // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly.
-        /* 61 */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
-        /* 62 */ "\u0651",
-        // U+0661: "١" ARABIC-INDIC DIGIT ONE
-        /* 63 */ "\u0661",
-        // U+0662: "٢" ARABIC-INDIC DIGIT TWO
-        /* 64 */ "\u0662",
-        // U+0663: "٣" ARABIC-INDIC DIGIT THREE
-        /* 65 */ "\u0663",
-        // U+0664: "٤" ARABIC-INDIC DIGIT FOUR
-        /* 66 */ "\u0664",
-        // U+0665: "٥" ARABIC-INDIC DIGIT FIVE
-        /* 67 */ "\u0665",
-        // U+0666: "٦" ARABIC-INDIC DIGIT SIX
-        /* 68 */ "\u0666",
-        // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN
-        /* 69 */ "\u0667",
-        // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
-        /* 70 */ "\u0668",
-        // U+0669: "٩" ARABIC-INDIC DIGIT NINE
-        /* 71 */ "\u0669",
-        // U+0660: "٠" ARABIC-INDIC DIGIT ZERO
-        /* 72 */ "\u0660",
-        // Label for "switch to symbols" key.
-        // U+061F: "؟" ARABIC QUESTION MARK
-        /* 73 */ "\u0663\u0662\u0661\u061F",
-        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-        // part because it'll be appended by the code.
-        /* 74 */ "\u0663\u0662\u0661",
-        /* 75 */ "1",
-        /* 76 */ "2",
-        /* 77 */ "3",
-        /* 78 */ "4",
-        /* 79 */ "5",
-        /* 80 */ "6",
-        /* 81 */ "7",
-        /* 82 */ "8",
-        /* 83 */ "9",
-        // U+066B: "٫" ARABIC DECIMAL SEPARATOR
-        // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
-        /* 84 */ "0,\u066B,\u066C",
-        /* 85~ */
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~94 */
-        // U+060C: "،" ARABIC COMMA
-        /* 95 */ "\u060C",
-        /* 96 */ "\\,",
-        /* 97 */ "\u061F",
-        /* 98 */ "\u061B",
-        // U+066A: "٪" ARABIC PERCENT SIGN
-        /* 99 */ "\u066A",
-        /* 100 */ null,
-        /* 101 */ "?",
-        /* 102 */ ";",
-        // U+2030: "‰" PER MILLE SIGN
-        /* 103 */ "\\%,\u2030",
-        /* 104~ */
-        null, null, null, null, null,
-        /* ~108 */
-        // U+060C: "،" ARABIC COMMA
-        // U+061B: "؛" ARABIC SEMICOLON
-        // U+061F: "؟" ARABIC QUESTION MARK
-        /* 109 */ "\u060C",
-        /* 110 */ "\u061F",
-        /* 111 */ "\u061F,\u061B,!,:,-,/,\',\"",
-    };
-
-    /* Language az: Azerbaijani */
-    private static final String[] LANGUAGE_az = {
-        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-        /* 0 */ "\u00E2",
-        // U+0259: "ə" LATIN SMALL LETTER SCHWA
-        /* 1 */ "\u0259",
-        // 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
-        /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
-        // 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
-        /* 5 */ "\u015F,\u00DF,\u015B,\u0161",
-        /* 6 */ null,
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-        /* 8~ */
-        null, null, null, null, null, null, null,
-        /* ~14 */
-        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
-        /* 15 */ "\u011F",
-    };
-
-    /* Language be: Belarusian */
-    private static final String[] LANGUAGE_be = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~24 */
-        // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U
-        /* 25 */ "\u045E",
-        // U+0451: "ё" CYRILLIC SMALL LETTER IO
-        /* 26 */ "\u0451",
-        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
-        /* 27 */ "\u044B",
-        // U+044D: "э" CYRILLIC SMALL LETTER E
-        /* 28 */ "\u044D",
-        // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-        /* 29 */ "\u0456",
-        /* 30~ */
-        null, null, null, null, null, null, null,
-        /* ~36 */
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 37 */ "\u044A",
-        /* 38~ */
-        null, null, null, null, null,
-        /* ~42 */
-        // U+0451: "ё" CYRILLIC SMALL LETTER IO
-        /* 43 */ "\u0451",
-        /* 44 */ null,
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language bg: Bulgarian */
-    private static final String[] LANGUAGE_bg = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46 */ null,
-        // single_quotes of Bulgarian is default single_quotes_right_left.
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language ca: Catalan */
-    private static final String[] LANGUAGE_ca = {
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u00EB,\u00EA,\u0119,\u0117,\u0113",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
-        /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* 5 */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-        /* 8~ */
-        null, null, null, null, null, null,
-        /* ~13 */
-        // U+00B7: "·" MIDDLE DOT
-        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
-        /* 14 */ "l\u00B7l,\u0142",
-        /* 15~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
-        /* ~52 */
-        // U+00B7: "·" MIDDLE DOT
-        /* 53 */ "!fixedColumnOrder!9,;,/,(,),#,\u00B7,!,\\,,?,&,\\%,+,\",-,:,',@",
-        /* 54~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null,
-        /* ~107 */
-        /* 108 */ "?,\u00B7",
-        /* 109~ */
-        null, null, null, null, null, null, null, null, null,
-        /* ~117 */
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        /* 118 */ "\u00E7",
-    };
-
-    /* Language cs: Czech */
-    private static final String[] LANGUAGE_cs = {
-        // 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
-        /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        // 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
-        /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B",
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        /* 5 */ "\u0161,\u00DF,\u015B",
-        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u0148,\u00F1,\u0144",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u010D,\u00E7,\u0107",
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* 9 */ "\u010F",
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        /* 10 */ "\u0159",
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        /* 11 */ "\u0165",
-        // 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
-        /* 12 */ "\u017E,\u017A,\u017C",
-        /* 13~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language da: Danish */
-    private static final String[] LANGUAGE_da = {
-        // 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
-        /* 0 */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101",
-        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-        /* 1 */ "\u00E9,\u00EB",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        /* 2 */ "\u00ED,\u00EF",
-        // 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
-        /* 3 */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D",
-        // 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
-        /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        /* 5 */ "\u00DF,\u015B,\u0161",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        /* 7 */ null,
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        /* 9 */ "\u00F0",
-        /* 10~ */
-        null, null, null, null,
-        /* ~13 */
-        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
-        /* 14 */ "\u0142",
-        /* 15~ */
-        null, null, null, null, null,
-        /* ~19 */
-        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
-        /* 20 */ "\u00E5",
-        // U+00E6: "æ" LATIN SMALL LETTER AE
-        /* 21 */ "\u00E6",
-        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-        /* 22 */ "\u00F8",
-        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-        /* 23 */ "\u00E4",
-        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-        /* 24 */ "\u00F6",
-        /* 25~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language de: German */
-    private static final String[] LANGUAGE_de = {
-        // 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
-        /* 0 */ "\u00E4,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
-        /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
-        /* 2 */ null,
-        // 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
-        /* 3 */ "\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        /* 5 */ "\u00DF,\u015B,\u0161",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        /* 7~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language el: Greek */
-    private static final String[] LANGUAGE_el = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
-        // U+0392: "Β" GREEK CAPITAL LETTER BETA
-        // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA
-        /* 45 */ "\u0391\u0392\u0393",
-    };
-
-    /* Language en: English */
-    private static final String[] LANGUAGE_en = {
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
-        // 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
-        /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
-        // 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
-        /* 3 */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
-        // 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
-        /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        /* 5 */ "\u00DF",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 6 */ "\u00F1",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        /* 7 */ "\u00E7",
-    };
-
-    /* Language eo: Esperanto */
-    private static final String[] LANGUAGE_eo = {
-        // 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
-        // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
-        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
-        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
-        /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA",
-        // 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
-        /* 1 */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        // 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+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
-        // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
-        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 2 */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133",
-        // 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
-        // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
-        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
-        /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D,\u0151,\u00BA",
-        // 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
-        // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
-        // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
-        // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
-        // U+00B5: "µ" MICRO SIGN
-        /* 4 */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5",
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
-        // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
-        /* 5 */ "\u00DF,\u0161,\u015B,\u0219,\u015F",
-        // 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: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-        // U+014B: "ŋ" LATIN SMALL LETTER ENG
-        /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
-        /* 7 */ "\u0107,\u010D,\u00E7,\u010B",
-        // 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+00FE: "þ" LATIN SMALL LETTER THORN
-        /* 8 */ "y,\u00FD,\u0177,\u00FF,\u00FE",
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
-        /* 9 */ "\u00F0,\u010F,\u0111",
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
-        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
-        /* 10 */ "\u0159,\u0155,\u0157",
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
-        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
-        // U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE
-        /* 11 */ "\u0165,\u021B,\u0163,\u0167",
-        // 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
-        /* 12 */ "\u017A,\u017C,\u017E",
-        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
-        // U+0138: "ĸ" LATIN SMALL LETTER KRA
-        /* 13 */ "\u0137,\u0138",
-        // 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
-        /* 14 */ "\u013A,\u013C,\u013E,\u0140,\u0142",
-        // 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
-        /* 15 */ "\u011F,\u0121,\u0123",
-        // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
-        /* 16 */ "w,\u0175",
-        // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
-        // U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE
-        /* 17 */ "\u0125,\u0127",
-        /* 18 */ null,
-        // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
-        /* 19 */ "w,\u0175",
-        /* 20~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null,
-        /* ~111 */
-        /* 112 */ "q",
-        /* 113 */ "x",
-        // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
-        /* 114 */ "\u015D",
-        // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
-        /* 115 */ "\u011D",
-        // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
-        /* 116 */ "\u016D",
-        // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
-        /* 117 */ "\u0109",
-        // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
-        /* 118 */ "\u0135",
-    };
-
-    /* Language es: Spanish */
-    private static final String[] LANGUAGE_es = {
-        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
-        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
-        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
-        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
-        // U+00E6: "æ" LATIN SMALL LETTER AE
-        // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
-        /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
-        /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* 5 */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-        /* 8~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~52 */
-        // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 53 */ "!fixedColumnOrder!4,;,!,\\,,?,:,\u00A1,@,\u00BF",
-        /* 54~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
-        /* ~105 */
-        // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 106 */ "!,\u00A1",
-        /* 107 */ null,
-        // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 108 */ "?,\u00BF",
-        /* 109 */ "\"",
-        /* 110 */ "\'",
-        /* 111 */ "\'",
-        /* 112~ */
-        null, null, null, null, null, null,
-        /* ~117 */
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 118 */ "\u00F1",
-    };
-
-    /* Language et: Estonian */
-    private static final String[] LANGUAGE_et = {
-        // 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
-        /* 0 */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105",
-        // 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
-        /* 1 */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
-        // 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
-        /* 2 */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
-        // 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
-        /* 3 */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
-        // 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
-        /* 4 */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
-        // 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
-        /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
-        // 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
-        /* 6 */ "\u0146,\u00F1,\u0144,\u0144",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u010D,\u00E7,\u0107",
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* 9 */ "\u010F",
-        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
-        /* 10 */ "\u0157,\u0159,\u0155",
-        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        /* 11 */ "\u0163,\u0165",
-        // 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
-        /* 12 */ "\u017E,\u017C,\u017A",
-        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
-        /* 13 */ "\u0137",
-        // 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
-        /* 14 */ "\u013C,\u0142,\u013A,\u013E",
-        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
-        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
-        /* 15 */ "\u0123,\u011F",
-        /* 16~ */
-        null, null, null, null,
-        /* ~19 */
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        /* 20 */ "\u00FC",
-        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-        /* 21 */ "\u00F6",
-        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-        /* 22 */ "\u00E4",
-        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-        /* 23 */ "\u00F5",
-        /* 24~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language fa: Persian */
-    private static final String[] LANGUAGE_fa = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0627: "ا" ARABIC LETTER ALEF
-        // U+200C: ZERO WIDTH NON-JOINER
-        // U+0628: "ب" ARABIC LETTER BEH
-        // U+067E: "پ" ARABIC LETTER PEH
-        /* 45 */ "\u0627\u200C\u0628\u200C\u067E",
-        /* 46 */ null,
-        /* 47 */ null,
-        /* 48 */ "!text/single_laqm_raqm_rtl",
-        /* 49 */ "!text/double_laqm_raqm_rtl",
-        /* 50 */ null,
-        // U+FDFC: "﷼" RIAL SIGN
-        /* 51 */ "\uFDFC",
-        /* 52 */ null,
-        // U+061F: "؟" ARABIC QUESTION MARK
-        // U+060C: "،" ARABIC COMMA
-        // U+061B: "؛" ARABIC SEMICOLON
-        /* 53 */ "!fixedColumnOrder!8,\",\',#,-,:,!,\u060C,\u061F,@,&,\\%,+,\u061B,/,(|),)|(",
-        // U+2605: "★" BLACK STAR
-        // U+066D: "٭" ARABIC FIVE POINTED STAR
-        /* 54 */ "\u2605,\u066D",
-        // U+266A: "♪" EIGHTH NOTE
-        /* 55 */ "\u266A",
-        /* 56 */ null,
-        // 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
-        /* 57 */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,<|>,{|},[|]",
-        /* 58 */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,>|<,}|{,]|[",
-        // 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
-        /* 59 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,<|>",
-        /* 60 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,>|<",
-        // U+0655: "ٕ" ARABIC HAMZA BELOW
-        // U+0652: "ْ" ARABIC SUKUN
-        // U+0651: "ّ" ARABIC SHADDA
-        // U+064C: "ٌ" ARABIC DAMMATAN
-        // U+064D: "ٍ" ARABIC KASRATAN
-        // U+064B: "ً" ARABIC FATHATAN
-        // U+0654: "ٔ" ARABIC HAMZA ABOVE
-        // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
-        // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
-        // U+0653: "ٓ" ARABIC MADDAH ABOVE
-        // U+064F: "ُ" ARABIC DAMMA
-        // U+0650: "ِ" ARABIC KASRA
-        // U+064E: "َ" ARABIC FATHA
-        // U+0640: "ـ" ARABIC TATWEEL
-        // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
-        // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly.
-        /* 61 */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
-        /* 62 */ "\u064B",
-        // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
-        /* 63 */ "\u06F1",
-        // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
-        /* 64 */ "\u06F2",
-        // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
-        /* 65 */ "\u06F3",
-        // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR
-        /* 66 */ "\u06F4",
-        // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE
-        /* 67 */ "\u06F5",
-        // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX
-        /* 68 */ "\u06F6",
-        // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN
-        /* 69 */ "\u06F7",
-        // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT
-        /* 70 */ "\u06F8",
-        // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE
-        /* 71 */ "\u06F9",
-        // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
-        /* 72 */ "\u06F0",
-        // Label for "switch to symbols" key.
-        // U+061F: "؟" ARABIC QUESTION MARK
-        /* 73 */ "\u06F3\u06F2\u06F1\u061F",
-        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-        // part because it'll be appended by the code.
-        /* 74 */ "\u06F3\u06F2\u06F1",
-        /* 75 */ "1",
-        /* 76 */ "2",
-        /* 77 */ "3",
-        /* 78 */ "4",
-        /* 79 */ "5",
-        /* 80 */ "6",
-        /* 81 */ "7",
-        /* 82 */ "8",
-        /* 83 */ "9",
-        // U+066B: "٫" ARABIC DECIMAL SEPARATOR
-        // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
-        /* 84 */ "0,\u066B,\u066C",
-        /* 85~ */
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~94 */
-        // U+060C: "،" ARABIC COMMA
-        /* 95 */ "\u060C",
-        /* 96 */ "\\,",
-        /* 97 */ "\u061F",
-        /* 98 */ "\u061B",
-        // U+066A: "٪" ARABIC PERCENT SIGN
-        /* 99 */ "\u066A",
-        /* 100 */ null,
-        /* 101 */ "?",
-        /* 102 */ ";",
-        // U+2030: "‰" PER MILLE SIGN
-        /* 103 */ "\\%,\u2030",
-        // U+060C: "،" ARABIC COMMA
-        // U+061B: "؛" ARABIC SEMICOLON
-        // U+061F: "؟" ARABIC QUESTION MARK
-        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-        /* 104 */ "\u060C",
-        /* 105 */ "!",
-        /* 106 */ "!,\\,",
-        /* 107 */ "\u061F",
-        /* 108 */ "\u061F,?",
-        /* 109 */ "\u060C",
-        /* 110 */ "\u061F",
-        /* 111 */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,/,\u00AB|\u00BB,\u00BB|\u00AB",
-    };
-
-    /* Language fi: Finnish */
-    private static final String[] LANGUAGE_fi = {
-        // 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
-        /* 0 */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101",
-        /* 1 */ null,
-        /* 2 */ null,
-        // 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
-        /* 3 */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        /* 4 */ "\u00FC",
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        /* 5 */ "\u0161,\u00DF,\u015B",
-        /* 6~ */
-        null, null, null, null, null, null,
-        /* ~11 */
-        // 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
-        /* 12 */ "\u017E,\u017A,\u017C",
-        /* 13~ */
-        null, null, null, null, null, null, null,
-        /* ~19 */
-        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
-        /* 20 */ "\u00E5",
-        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-        /* 21 */ "\u00F6",
-        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-        /* 22 */ "\u00E4",
-        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-        /* 23 */ "\u00F8",
-        // U+00E6: "æ" LATIN SMALL LETTER AE
-        /* 24 */ "\u00E6",
-    };
-
-    /* Language fr: French */
-    private static final String[] LANGUAGE_fr = {
-        // 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
-        /* 0 */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,%,\u0119,\u0117,\u0113",
-        // 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
-        /* 2 */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F4,\u0153,%,\u00F6,\u00F2,\u00F3,\u00F5,\u00F8,\u014D,\u00BA",
-        // 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
-        /* 4 */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B",
-        /* 5 */ null,
-        /* 6 */ null,
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "%,\u00FF",
-    };
-
-    /* Language hi: Hindi */
-    private static final String[] LANGUAGE_hi = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0915: "क" DEVANAGARI LETTER KA
-        // U+0916: "ख" DEVANAGARI LETTER KHA
-        // U+0917: "ग" DEVANAGARI LETTER GA
-        /* 45 */ "\u0915\u0916\u0917",
-        /* 46~ */
-        null, null, null, null, null,
-        /* ~50 */
-        // U+20B9: "₹" INDIAN RUPEE SIGN
-        /* 51 */ "\u20B9",
-        /* 52~ */
-        null, null, null, null, null, null, null, null, null, null, null,
-        /* ~62 */
-        // U+0967: "१" DEVANAGARI DIGIT ONE
-        /* 63 */ "\u0967",
-        // U+0968: "२" DEVANAGARI DIGIT TWO
-        /* 64 */ "\u0968",
-        // U+0969: "३" DEVANAGARI DIGIT THREE
-        /* 65 */ "\u0969",
-        // U+096A: "४" DEVANAGARI DIGIT FOUR
-        /* 66 */ "\u096A",
-        // U+096B: "५" DEVANAGARI DIGIT FIVE
-        /* 67 */ "\u096B",
-        // U+096C: "६" DEVANAGARI DIGIT SIX
-        /* 68 */ "\u096C",
-        // U+096D: "७" DEVANAGARI DIGIT SEVEN
-        /* 69 */ "\u096D",
-        // U+096E: "८" DEVANAGARI DIGIT EIGHT
-        /* 70 */ "\u096E",
-        // U+096F: "९" DEVANAGARI DIGIT NINE
-        /* 71 */ "\u096F",
-        // U+0966: "०" DEVANAGARI DIGIT ZERO
-        /* 72 */ "\u0966",
-        // Label for "switch to symbols" key.
-        /* 73 */ "?\u0967\u0968\u0969",
-        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-        // part because it'll be appended by the code.
-        /* 74 */ "\u0967\u0968\u0969",
-        /* 75 */ "1",
-        /* 76 */ "2",
-        /* 77 */ "3",
-        /* 78 */ "4",
-        /* 79 */ "5",
-        /* 80 */ "6",
-        /* 81 */ "7",
-        /* 82 */ "8",
-        /* 83 */ "9",
-        /* 84 */ "0",
-    };
-
-    /* Language hr: Croatian */
-    private static final String[] LANGUAGE_hr = {
-        /* 0~ */
-        null, null, null, null, null,
-        /* ~4 */
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        /* 5 */ "\u0161,\u015B,\u00DF",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        /* 7 */ "\u010D,\u0107,\u00E7",
-        /* 8 */ null,
-        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
-        /* 9 */ "\u0111",
-        /* 10 */ null,
-        /* 11 */ null,
-        // 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
-        /* 12 */ "\u017E,\u017A,\u017C",
-        /* 13~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_rqm",
-        /* 47 */ "!text/double_9qm_rqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language hu: Hungarian */
-    private static final String[] LANGUAGE_hu = {
-        // 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
-        /* 0 */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        // 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
-        /* 2 */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B",
-        /* 5~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_rqm",
-        /* 47 */ "!text/double_9qm_rqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language hy: Armenian */
-    private static final String[] LANGUAGE_hy = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
-        /* ~52 */
-        // U+058A: "֊" ARMENIAN HYPHEN
-        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
-        // U+055D: "՝" ARMENIAN COMMA
-        // U+055E: "՞" ARMENIAN QUESTION MARK
-        // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
-        // U+055A: "՚" ARMENIAN APOSTROPHE
-        // U+055B: "՛" ARMENIAN EMPHASIS MARK
-        // U+055F: "՟" ARMENIAN ABBREVIATION MARK
-        /* 53 */ "!fixedColumnOrder!8,!,?,\\,,.,\u058A,\u055C,\u055D,\u055E,:,;,@,\u0559,\u055A,\u055B,\u055F",
-        /* 54~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null,
-        /* ~99 */
-        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
-        // U+00A1: "¡" INVERTED EXCLAMATION MARK
-        /* 100 */ "\u055C,\u00A1",
-        // U+055E: "՞" ARMENIAN QUESTION MARK
-        // U+00BF: "¿" INVERTED QUESTION MARK
-        /* 101 */ "\u055E,\u00BF",
-    };
-
-    /* Language is: Icelandic */
-    private static final String[] LANGUAGE_is = {
-        // 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
-        /* 0 */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101",
-        // 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
-        /* 1 */ "\u00E9,\u00EB,\u00E8,\u00EA,\u0119,\u0117,\u0113",
-        // 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
-        /* 2 */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
-        /* 5~ */
-        null, null, null,
-        /* ~7 */
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        /* 9 */ "\u00F0",
-        /* 10 */ null,
-        // U+00FE: "þ" LATIN SMALL LETTER THORN
-        /* 11 */ "\u00FE",
-        /* 12~ */
-        null, null, null, null, null, null, null, null,
-        /* ~19 */
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        /* 20 */ "\u00F0",
-        // U+00E6: "æ" LATIN SMALL LETTER AE
-        /* 21 */ "\u00E6",
-        // U+00FE: "þ" LATIN SMALL LETTER THORN
-        /* 22 */ "\u00FE",
-        /* 23~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language it: Italian */
-    private static final String[] LANGUAGE_it = {
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        // 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
-        /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F2,\u00F3,\u00F4,\u00F6,\u00F5,\u0153,\u00F8,\u014D,\u00BA",
-        // 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
-        /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B",
-    };
-
-    /* Language iw: Hebrew */
-    private static final String[] LANGUAGE_iw = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+05D0: "א" HEBREW LETTER ALEF
-        // U+05D1: "ב" HEBREW LETTER BET
-        // U+05D2: "ג" HEBREW LETTER GIMEL
-        /* 45 */ "\u05D0\u05D1\u05D2",
-        // The following characters don't need BIDI mirroring.
-        // U+2018: "‘" LEFT SINGLE QUOTATION MARK
-        // U+2019: "’" RIGHT SINGLE QUOTATION MARK
-        // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
-        // U+201C: "“" LEFT DOUBLE QUOTATION MARK
-        // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
-        // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
-        /* 46 */ "\u2018,\u2019,\u201A",
-        /* 47 */ "\u201C,\u201D,\u201E",
-        /* 48 */ "!text/single_laqm_raqm_rtl",
-        /* 49 */ "!text/double_laqm_raqm_rtl",
-        /* 50 */ null,
-        // U+20AA: "₪" NEW SHEQEL SIGN
-        /* 51 */ "\u20AA",
-        /* 52 */ null,
-        /* 53 */ "!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,?,&,\\%,+,\",-,:,',@",
-        // U+2605: "★" BLACK STAR
-        /* 54 */ "\u2605",
-        /* 55 */ null,
-        // U+00B1: "±" PLUS-MINUS SIGN
-        // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
-        /* 56 */ "\u00B1,\uFB29",
-        // The all letters need to be mirrored are found at
-        // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
-        /* 57 */ "!fixedColumnOrder!3,<|>,{|},[|]",
-        /* 58 */ "!fixedColumnOrder!3,>|<,}|{,]|[",
-        // 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
-        /* 59 */ "!fixedColumnOrder!3,\u2039|\u203A,\u2264|\u2265,\u00AB|\u00BB",
-        /* 60 */ "!fixedColumnOrder!3,\u203A|\u2039,\u2265|\u2264,\u00BB|\u00AB",
-        /* 61~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~104 */
-        /* 105 */ "!",
-        /* 106 */ "!",
-        /* 107 */ "?",
-        /* 108 */ "?",
-    };
-
-    /* Language ka: Georgian */
-    private static final String[] LANGUAGE_ka = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+10D0: "ა" GEORGIAN LETTER AN
-        // U+10D1: "ბ" GEORGIAN LETTER BAN
-        // U+10D2: "გ" GEORGIAN LETTER GAN
-        /* 45 */ "\u10D0\u10D1\u10D2",
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language kk: Kazakh */
-    private static final String[] LANGUAGE_kk = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~24 */
-        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
-        /* 25 */ "\u0449",
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 26 */ "\u044A",
-        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
-        /* 27 */ "\u044B",
-        // U+044D: "э" CYRILLIC SMALL LETTER E
-        /* 28 */ "\u044D",
-        // U+0438: "и" CYRILLIC SMALL LETTER I
-        /* 29 */ "\u0438",
-        // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
-        // U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-        /* 30 */ "\u04AF,\u04B1",
-        // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER
-        /* 31 */ "\u049B",
-        // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
-        /* 32 */ "\u04A3",
-        // U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE
-        /* 33 */ "\u0493",
-        // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-        /* 34 */ "\u0456",
-        // U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA
-        /* 35 */ "\u04D9",
-        // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
-        /* 36 */ "\u04E9",
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 37 */ "\u044A",
-        // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA
-        /* 38 */ "\u04BB",
-        /* 39~ */
-        null, null, null, null,
-        /* ~42 */
-        // U+0451: "ё" CYRILLIC SMALL LETTER IO
-        /* 43 */ "\u0451",
-        /* 44 */ null,
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-    };
-
-    /* Language km: Khmer */
-    private static final String[] LANGUAGE_km = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+1780: "ក" KHMER LETTER KA
-        // U+1781: "ខ" KHMER LETTER KHA
-        // U+1782: "គ" KHMER LETTER KO
-        /* 45 */ "\u1780\u1781\u1782",
-        /* 46~ */
-        null, null, null, null,
-        /* ~49 */
-        // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
-        /* 50 */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
-    };
-
-    /* Language ky: Kirghiz */
-    private static final String[] LANGUAGE_ky = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~24 */
-        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
-        /* 25 */ "\u0449",
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 26 */ "\u044A",
-        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
-        /* 27 */ "\u044B",
-        // U+044D: "э" CYRILLIC SMALL LETTER E
-        /* 28 */ "\u044D",
-        // U+0438: "и" CYRILLIC SMALL LETTER I
-        /* 29 */ "\u0438",
-        // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
-        /* 30 */ "\u04AF",
-        /* 31 */ null,
-        // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
-        /* 32 */ "\u04A3",
-        /* 33~ */
-        null, null, null,
-        /* ~35 */
-        // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
-        /* 36 */ "\u04E9",
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 37 */ "\u044A",
-        /* 38~ */
-        null, null, null, null, null,
-        /* ~42 */
-        // U+0451: "ё" CYRILLIC SMALL LETTER IO
-        /* 43 */ "\u0451",
-        /* 44 */ null,
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-    };
-
-    /* Language lo: Lao */
-    private static final String[] LANGUAGE_lo = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0E81: "ກ" LAO LETTER KO
-        // U+0E82: "ຂ" LAO LETTER KHO SUNG
-        // U+0E84: "ຄ" LAO LETTER KHO TAM
-        /* 45 */ "\u0E81\u0E82\u0E84",
-        /* 46~ */
-        null, null, null, null, null,
-        /* ~50 */
-        // U+20AD: "₭" KIP SIGN
-        /* 51 */ "\u20AD",
-    };
-
-    /* Language lt: Lithuanian */
-    private static final String[] LANGUAGE_lt = {
-        // 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
-        /* 0 */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6",
-        // 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
-        /* 1 */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B",
-        // 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
-        /* 2 */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
-        // 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
-        /* 3 */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
-        // 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
-        /* 4 */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
-        // 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
-        /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
-        // 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
-        /* 6 */ "\u0146,\u00F1,\u0144,\u0144",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u010D,\u00E7,\u0107",
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* 9 */ "\u010F",
-        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
-        /* 10 */ "\u0157,\u0159,\u0155",
-        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        /* 11 */ "\u0163,\u0165",
-        // 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
-        /* 12 */ "\u017E,\u017C,\u017A",
-        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
-        /* 13 */ "\u0137",
-        // 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
-        /* 14 */ "\u013C,\u0142,\u013A,\u013E",
-        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
-        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
-        /* 15 */ "\u0123,\u011F",
-        /* 16~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language lv: Latvian */
-    private static final String[] LANGUAGE_lv = {
-        // 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
-        /* 0 */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105",
-        // 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
-        /* 1 */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
-        // 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
-        /* 2 */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
-        // 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
-        /* 3 */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u0153,\u0151,\u00F8",
-        // 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
-        /* 4 */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171",
-        // 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
-        /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
-        // 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
-        /* 6 */ "\u0146,\u00F1,\u0144,\u0144",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u010D,\u00E7,\u0107",
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* 9 */ "\u010F",
-        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
-        /* 10 */ "\u0157,\u0159,\u0155",
-        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        /* 11 */ "\u0163,\u0165",
-        // 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
-        /* 12 */ "\u017E,\u017C,\u017A",
-        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
-        /* 13 */ "\u0137",
-        // 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
-        /* 14 */ "\u013C,\u0142,\u013A,\u013E",
-        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
-        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
-        /* 15 */ "\u0123,\u011F",
-        /* 16~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language mk: Macedonian */
-    private static final String[] LANGUAGE_mk = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null,
-        /* ~38 */
-        // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
-        /* 39 */ "\u0455",
-        // U+045C: "ќ" CYRILLIC SMALL LETTER KJE
-        /* 40 */ "\u045C",
-        // U+0437: "з" CYRILLIC SMALL LETTER ZE
-        /* 41 */ "\u0437",
-        // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE
-        /* 42 */ "\u0453",
-        // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
-        /* 43 */ "\u0450",
-        // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
-        /* 44 */ "\u045D",
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language mn: Mongolian */
-    private static final String[] LANGUAGE_mn = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46~ */
-        null, null, null, null, null,
-        /* ~50 */
-        // U+20AE: "₮" TUGRIK SIGN
-        /* 51 */ "\u20AE",
-    };
-
-    /* Language nb: Norwegian Bokmål */
-    private static final String[] LANGUAGE_nb = {
-        // 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
-        /* 0 */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
-        /* 2 */ null,
-        // 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
-        /* 3 */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D",
-        // 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
-        /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
-        /* 5~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~19 */
-        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
-        /* 20 */ "\u00E5",
-        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-        /* 21 */ "\u00F8",
-        // U+00E6: "æ" LATIN SMALL LETTER AE
-        /* 22 */ "\u00E6",
-        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-        /* 23 */ "\u00F6",
-        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-        /* 24 */ "\u00E4",
-        /* 25~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_rqm",
-        /* 47 */ "!text/double_9qm_rqm",
-    };
-
-    /* Language ne: Nepali */
-    private static final String[] LANGUAGE_ne = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0915: "क" DEVANAGARI LETTER KA
-        // U+0916: "ख" DEVANAGARI LETTER KHA
-        // U+0917: "ग" DEVANAGARI LETTER GA
-        /* 45 */ "\u0915\u0916\u0917",
-        /* 46~ */
-        null, null, null, null, null,
-        /* ~50 */
-        // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
-        /* 51 */ "\u0930\u0941.",
-        /* 52~ */
-        null, null, null, null, null, null, null, null, null, null, null,
-        /* ~62 */
-        // U+0967: "१" DEVANAGARI DIGIT ONE
-        /* 63 */ "\u0967",
-        // U+0968: "२" DEVANAGARI DIGIT TWO
-        /* 64 */ "\u0968",
-        // U+0969: "३" DEVANAGARI DIGIT THREE
-        /* 65 */ "\u0969",
-        // U+096A: "४" DEVANAGARI DIGIT FOUR
-        /* 66 */ "\u096A",
-        // U+096B: "५" DEVANAGARI DIGIT FIVE
-        /* 67 */ "\u096B",
-        // U+096C: "६" DEVANAGARI DIGIT SIX
-        /* 68 */ "\u096C",
-        // U+096D: "७" DEVANAGARI DIGIT SEVEN
-        /* 69 */ "\u096D",
-        // U+096E: "८" DEVANAGARI DIGIT EIGHT
-        /* 70 */ "\u096E",
-        // U+096F: "९" DEVANAGARI DIGIT NINE
-        /* 71 */ "\u096F",
-        // U+0966: "०" DEVANAGARI DIGIT ZERO
-        /* 72 */ "\u0966",
-        // Label for "switch to symbols" key.
-        /* 73 */ "?\u0967\u0968\u0969",
-        // Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-        // part because it'll be appended by the code.
-        /* 74 */ "\u0967\u0968\u0969",
-        /* 75 */ "1",
-        /* 76 */ "2",
-        /* 77 */ "3",
-        /* 78 */ "4",
-        /* 79 */ "5",
-        /* 80 */ "6",
-        /* 81 */ "7",
-        /* 82 */ "8",
-        /* 83 */ "9",
-        /* 84 */ "0",
-    };
-
-    /* Language nl: Dutch */
-    private static final String[] LANGUAGE_nl = {
-        // 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
-        /* 0 */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E9,\u00EB,\u00EA,\u00E8,\u0119,\u0117,\u0113",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
-        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
-        // 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
-        /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
-        /* 5 */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        /* 7 */ null,
-        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 8 */ "\u0133",
-        /* 9~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_rqm",
-        /* 47 */ "!text/double_9qm_rqm",
-    };
-
-    /* Language pl: Polish */
-    private static final String[] LANGUAGE_pl = {
-        // 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
-        /* 0 */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
-        /* 2 */ null,
-        // 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
-        /* 3 */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
-        /* 4 */ null,
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        /* 5 */ "\u015B,\u00DF,\u0161",
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 6 */ "\u0144,\u00F1",
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u0107,\u00E7,\u010D",
-        /* 8~ */
-        null, null, null, null,
-        /* ~11 */
-        // 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
-        /* 12 */ "\u017C,\u017A,\u017E",
-        /* 13 */ null,
-        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
-        /* 14 */ "\u0142",
-        /* 15~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_rqm",
-        /* 47 */ "!text/double_9qm_rqm",
-    };
-
-    /* Language pt: Portuguese */
-    private static final String[] LANGUAGE_pt = {
-        // 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
-        /* 0 */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA",
-        // 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
-        /* 1 */ "\u00E9,\u00EA,\u00E8,\u0119,\u0117,\u0113,\u00EB",
-        // 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
-        /* 2 */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F3,\u00F5,\u00F4,\u00F2,\u00F6,\u0153,\u00F8,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* 5 */ null,
-        /* 6 */ null,
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u00E7,\u010D,\u0107",
-    };
-
-    /* Language rm: Raeto-Romance */
-    private static final String[] LANGUAGE_rm = {
-        /* 0~ */
-        null, null, null,
-        /* ~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
-        /* 3 */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8",
-    };
-
-    /* Language ro: Romanian */
-    private static final String[] LANGUAGE_ro = {
-        // 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
-        /* 0 */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101",
-        /* 1 */ null,
-        // 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
-        /* 2 */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        /* 3 */ null,
-        /* 4 */ null,
-        // 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
-        /* 5 */ "\u0219,\u00DF,\u015B,\u0161",
-        /* 6~ */
-        null, null, null, null, null,
-        /* ~10 */
-        // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
-        /* 11 */ "\u021B",
-        /* 12~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_rqm",
-        /* 47 */ "!text/double_9qm_rqm",
-    };
-
-    /* Language ru: Russian */
-    private static final String[] LANGUAGE_ru = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~24 */
-        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
-        /* 25 */ "\u0449",
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 26 */ "\u044A",
-        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
-        /* 27 */ "\u044B",
-        // U+044D: "э" CYRILLIC SMALL LETTER E
-        /* 28 */ "\u044D",
-        // U+0438: "и" CYRILLIC SMALL LETTER I
-        /* 29 */ "\u0438",
-        /* 30~ */
-        null, null, null, null, null, null, null,
-        /* ~36 */
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 37 */ "\u044A",
-        /* 38~ */
-        null, null, null, null, null,
-        /* ~42 */
-        // U+0451: "ё" CYRILLIC SMALL LETTER IO
-        /* 43 */ "\u0451",
-        /* 44 */ null,
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-    };
-
-    /* Language sk: Slovak */
-    private static final String[] LANGUAGE_sk = {
-        // 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
-        /* 0 */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105",
-        // 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
-        /* 1 */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119",
-        // 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
-        /* 2 */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
-        // 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
-        /* 3 */ "\u00F4,\u00F3,\u00F6,\u00F2,\u00F5,\u0153,\u0151,\u00F8",
-        // 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
-        /* 4 */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171",
-        // 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
-        /* 5 */ "\u0161,\u00DF,\u015B,\u015F",
-        // 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
-        /* 6 */ "\u0148,\u0146,\u00F1,\u0144,\u0144",
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u010D,\u00E7,\u0107",
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* 9 */ "\u010F",
-        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
-        /* 10 */ "\u0155,\u0159,\u0157",
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
-        /* 11 */ "\u0165,\u0163",
-        // 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
-        /* 12 */ "\u017E,\u017C,\u017A",
-        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
-        /* 13 */ "\u0137",
-        // 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
-        /* 14 */ "\u013E,\u013A,\u013C,\u0142",
-        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
-        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
-        /* 15 */ "\u0123,\u011F",
-        /* 16~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language sl: Slovenian */
-    private static final String[] LANGUAGE_sl = {
-        /* 0~ */
-        null, null, null, null, null,
-        /* ~4 */
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        /* 5 */ "\u0161",
-        /* 6 */ null,
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        /* 7 */ "\u010D,\u0107",
-        /* 8 */ null,
-        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
-        /* 9 */ "\u0111",
-        /* 10 */ null,
-        /* 11 */ null,
-        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
-        /* 12 */ "\u017E",
-        /* 13~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
-        /* ~45 */
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language sr: Serbian */
-    private static final String[] LANGUAGE_sr = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null,
-        /* ~38 */
-        // TODO: Move these to sr-Latn once we can handle IETF language tag with script name specified.
-        // BEGIN: More keys definitions for Serbian (Latin)
-        // 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+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+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        // <string name="more_keys_for_d">&#x010F;</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>
-        // END: More keys definitions for Serbian (Latin)
-        // BEGIN: More keys definitions for Serbian (Cyrillic)
-        // U+0437: "з" CYRILLIC SMALL LETTER ZE
-        /* 39 */ "\u0437",
-        // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE
-        /* 40 */ "\u045B",
-        // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
-        /* 41 */ "\u0455",
-        // U+0452: "ђ" CYRILLIC SMALL LETTER DJE
-        /* 42 */ "\u0452",
-        // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
-        /* 43 */ "\u0450",
-        // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
-        /* 44 */ "\u045D",
-        // END: More keys definitions for Serbian (Cyrillic)
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language sv: Swedish */
-    private static final String[] LANGUAGE_sv = {
-        // 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+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
-        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-        /* 0 */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        /* 2 */ "\u00ED,\u00EC,\u00EE,\u00EF",
-        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-        /* 3 */ "\u00F3,\u00F2,\u00F4,\u00F5,\u014D",
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* 4 */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B",
-        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
-        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
-        // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        /* 5 */ "\u015B,\u0161,\u015F,\u00DF",
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
-        /* 6 */ "\u0144,\u00F1,\u0148",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        /* 8 */ "\u00FD,\u00FF,\u00FC",
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        /* 9 */ "\u00F0,\u010F",
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        /* 10 */ "\u0159",
-        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
-        // U+00FE: "þ" LATIN SMALL LETTER THORN
-        /* 11 */ "\u0165,\u00FE",
-        // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
-        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
-        // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
-        /* 12 */ "\u017A,\u017E,\u017C",
-        /* 13 */ null,
-        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
-        /* 14 */ "\u0142",
-        /* 15~ */
-        null, null, null, null, null,
-        /* ~19 */
-        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
-        /* 20 */ "\u00E5",
-        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-        /* 21 */ "\u00F6",
-        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-        /* 22 */ "\u00E4",
-        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-        // U+0153: "œ" LATIN SMALL LIGATURE OE
-        /* 23 */ "\u00F8,\u0153",
-        // U+00E6: "æ" LATIN SMALL LETTER AE
-        /* 24 */ "\u00E6",
-        /* 25~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
-        /* ~47 */
-        /* 48 */ "!text/single_raqm_laqm",
-        /* 49 */ "!text/double_raqm_laqm",
-    };
-
-    /* Language sw: Swahili */
-    private static final String[] LANGUAGE_sw = {
-        // This is the same as English except more_keys_for_g.
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
-        // 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
-        /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
-        // 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
-        /* 3 */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
-        // 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
-        /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        /* 5 */ "\u00DF",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 6 */ "\u00F1",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        /* 7 */ "\u00E7",
-        /* 8~ */
-        null, null, null, null, null, null, null,
-        /* ~14 */
-        /* 15 */ "g\'",
-    };
-
-    /* Language th: Thai */
-    private static final String[] LANGUAGE_th = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0E01: "ก" THAI CHARACTER KO KAI
-        // U+0E02: "ข" THAI CHARACTER KHO KHAI
-        // U+0E04: "ค" THAI CHARACTER KHO KHWAI
-        /* 45 */ "\u0E01\u0E02\u0E04",
-        /* 46~ */
-        null, null, null, null, null,
-        /* ~50 */
-        // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
-        /* 51 */ "\u0E3F",
-    };
-
-    /* Language tl: Tagalog */
-    private static final String[] LANGUAGE_tl = {
-        // 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
-        /* 0 */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
-        // 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
-        /* 1 */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
-        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
-        /* 2 */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
-        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
-        /* 4 */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
-        /* 5 */ null,
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
-        /* 6 */ "\u00F1,\u0144",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-    };
-
-    /* Language tr: Turkish */
-    private static final String[] LANGUAGE_tr = {
-        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-        /* 0 */ "\u00E2",
-        /* 1 */ null,
-        // 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
-        /* 2 */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        // 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
-        /* 3 */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
-        // 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
-        /* 4 */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
-        // 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
-        /* 5 */ "\u015F,\u00DF,\u015B,\u0161",
-        /* 6 */ null,
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-        /* 7 */ "\u00E7,\u0107,\u010D",
-        /* 8~ */
-        null, null, null, null, null, null, null,
-        /* ~14 */
-        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
-        /* 15 */ "\u011F",
-    };
-
-    /* Language uk: Ukrainian */
-    private static final String[] LANGUAGE_uk = {
-        /* 0~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null,
-        /* ~24 */
-        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
-        /* 25 */ "\u0449",
-        // U+0457: "ї" CYRILLIC SMALL LETTER YI
-        /* 26 */ "\u0457",
-        // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-        /* 27 */ "\u0456",
-        // U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE
-        /* 28 */ "\u0454",
-        // U+0438: "и" CYRILLIC SMALL LETTER I
-        /* 29 */ "\u0438",
-        /* 30~ */
-        null, null, null,
-        /* ~32 */
-        // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN
-        /* 33 */ "\u0491",
-        // U+0457: "ї" CYRILLIC SMALL LETTER YI
-        /* 34 */ "\u0457",
-        /* 35 */ null,
-        /* 36 */ null,
-        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
-        /* 37 */ "\u044A",
-        /* 38~ */
-        null, null, null, null, null, null, null,
-        /* ~44 */
-        // Label for "switch to alphabetic" key.
-        // U+0410: "А" CYRILLIC CAPITAL LETTER A
-        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
-        /* 45 */ "\u0410\u0411\u0412",
-        /* 46 */ "!text/single_9qm_lqm",
-        /* 47 */ "!text/double_9qm_lqm",
-        /* 48~ */
-        null, null, null,
-        /* ~50 */
-        // U+20B4: "₴" HRYVNIA SIGN
-        /* 51 */ "\u20B4",
-    };
-
-    /* Language vi: Vietnamese */
-    private static final String[] LANGUAGE_vi = {
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7",
-        // 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
-        /* 2 */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
-        // 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
-        /* 3 */ "\u00F2,\u00F3,\u1ECF,\u00F5,\u1ECD,\u00F4,\u1ED3,\u1ED1,\u1ED5,\u1ED7,\u1ED9,\u01A1,\u1EDD,\u1EDB,\u1EDF,\u1EE1,\u1EE3",
-        // 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
-        /* 4 */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1",
-        /* 5~ */
-        null, null, null,
-        /* ~7 */
-        // 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
-        /* 8 */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5",
-        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
-        /* 9 */ "\u0111",
-        /* 10~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null,
-        /* ~50 */
-        // U+20AB: "₫" DONG SIGN
-        /* 51 */ "\u20AB",
-    };
-
-    /* Language zu: Zulu */
-    private static final String[] LANGUAGE_zu = {
-        // This is the same as English
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
-        // 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
-        /* 2 */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
-        // 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
-        /* 3 */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
-        // 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
-        /* 4 */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
-        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-        /* 5 */ "\u00DF",
-        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-        /* 6 */ "\u00F1",
-        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-        /* 7 */ "\u00E7",
-    };
-
-    /* Language zz: Alphabet */
-    private static final String[] LANGUAGE_zz = {
-        // 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
-        /* 0 */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA",
-        // 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
-        /* 1 */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B",
-        // 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: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 2 */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
-        // 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
-        /* 3 */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u00F8,\u014D,\u014F,\u0151,\u0153,\u00BA",
-        // 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
-        /* 4 */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173",
-        // 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
-        /* 5 */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F",
-        // 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: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-        // U+014B: "ŋ" LATIN SMALL LETTER ENG
-        /* 6 */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
-        // 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
-        /* 7 */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
-        // 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: "ĳ" LATIN SMALL LIGATURE IJ
-        /* 8 */ "\u00FD,\u0177,\u00FF,\u0133",
-        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
-        // U+00F0: "ð" LATIN SMALL LETTER ETH
-        /* 9 */ "\u010F,\u0111,\u00F0",
-        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
-        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
-        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
-        /* 10 */ "\u0155,\u0157,\u0159",
-        // 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
-        /* 11 */ "\u00FE,\u0163,\u0165,\u0167",
-        // 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
-        /* 12 */ "\u017A,\u017C,\u017E",
-        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
-        // U+0138: "ĸ" LATIN SMALL LETTER KRA
-        /* 13 */ "\u0137,\u0138",
-        // 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
-        /* 14 */ "\u013A,\u013C,\u013E,\u0140,\u0142",
-        // 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
-        /* 15 */ "\u011D,\u011F,\u0121,\u0123",
-        /* 16 */ null,
-        // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
-        /* 17 */ "\u0125",
-        // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
-        /* 18 */ "\u0135",
-        // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
-        /* 19 */ "\u0175",
-    };
-
-    private static final Object[] LANGUAGES_AND_TEXTS = {
-        "DEFAULT", LANGUAGE_DEFAULT, /* default */
-        "af", LANGUAGE_af, /* Afrikaans */
-        "ar", LANGUAGE_ar, /* Arabic */
-        "az", LANGUAGE_az, /* Azerbaijani */
-        "be", LANGUAGE_be, /* Belarusian */
-        "bg", LANGUAGE_bg, /* Bulgarian */
-        "ca", LANGUAGE_ca, /* Catalan */
-        "cs", LANGUAGE_cs, /* Czech */
-        "da", LANGUAGE_da, /* Danish */
-        "de", LANGUAGE_de, /* German */
-        "el", LANGUAGE_el, /* Greek */
-        "en", LANGUAGE_en, /* English */
-        "eo", LANGUAGE_eo, /* Esperanto */
-        "es", LANGUAGE_es, /* Spanish */
-        "et", LANGUAGE_et, /* Estonian */
-        "fa", LANGUAGE_fa, /* Persian */
-        "fi", LANGUAGE_fi, /* Finnish */
-        "fr", LANGUAGE_fr, /* French */
-        "hi", LANGUAGE_hi, /* Hindi */
-        "hr", LANGUAGE_hr, /* Croatian */
-        "hu", LANGUAGE_hu, /* Hungarian */
-        "hy", LANGUAGE_hy, /* Armenian */
-        "is", LANGUAGE_is, /* Icelandic */
-        "it", LANGUAGE_it, /* Italian */
-        "iw", LANGUAGE_iw, /* Hebrew */
-        "ka", LANGUAGE_ka, /* Georgian */
-        "kk", LANGUAGE_kk, /* Kazakh */
-        "km", LANGUAGE_km, /* Khmer */
-        "ky", LANGUAGE_ky, /* Kirghiz */
-        "lo", LANGUAGE_lo, /* Lao */
-        "lt", LANGUAGE_lt, /* Lithuanian */
-        "lv", LANGUAGE_lv, /* Latvian */
-        "mk", LANGUAGE_mk, /* Macedonian */
-        "mn", LANGUAGE_mn, /* Mongolian */
-        "nb", LANGUAGE_nb, /* Norwegian Bokmål */
-        "ne", LANGUAGE_ne, /* Nepali */
-        "nl", LANGUAGE_nl, /* Dutch */
-        "pl", LANGUAGE_pl, /* Polish */
-        "pt", LANGUAGE_pt, /* Portuguese */
-        "rm", LANGUAGE_rm, /* Raeto-Romance */
-        "ro", LANGUAGE_ro, /* Romanian */
-        "ru", LANGUAGE_ru, /* Russian */
-        "sk", LANGUAGE_sk, /* Slovak */
-        "sl", LANGUAGE_sl, /* Slovenian */
-        "sr", LANGUAGE_sr, /* Serbian */
-        "sv", LANGUAGE_sv, /* Swedish */
-        "sw", LANGUAGE_sw, /* Swahili */
-        "th", LANGUAGE_th, /* Thai */
-        "tl", LANGUAGE_tl, /* Tagalog */
-        "tr", LANGUAGE_tr, /* Turkish */
-        "uk", LANGUAGE_uk, /* Ukrainian */
-        "vi", LANGUAGE_vi, /* Vietnamese */
-        "zu", LANGUAGE_zu, /* Zulu */
-        "zz", LANGUAGE_zz, /* Alphabet */
-    };
-
-    static {
-        int id = 0;
-        for (final String name : NAMES) {
-            sNameToIdsMap.put(name, id++);
-        }
-
-        for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) {
-            final String language = (String)LANGUAGES_AND_TEXTS[i];
-            final String[] texts = (String[])LANGUAGES_AND_TEXTS[i + 1];
-            sLocaleToTextsMap.put(language, texts);
-        }
-    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
new file mode 100644
index 0000000..f18ebd1
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -0,0 +1,3963 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import java.util.HashMap;
+import java.util.Locale;
+
+/**
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file is generated by tools/make-keyboard-text. The base template file is
+ *   tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/
+ *   KeyboardTextsTable.tmpl
+ *
+ * This file must be updated when any text resources in keyboard layout files have been changed.
+ * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
+ * and should be defined in
+ *   tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml
+ *
+ * To update this file, please run the following commands.
+ *   $ cd $ANDROID_BUILD_TOP
+ *   $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
+ *   $ make-keyboard-text -java packages/inputmethods/LatinIME/java
+ *
+ * The updated source file will be generated to the following path (this file).
+ *   packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/
+ *   KeyboardTextsTable.java
+ */
+public final class KeyboardTextsTable {
+    // Name to index map.
+    private static final HashMap<String, Integer> sNameToIndexesMap = new HashMap<>();
+    // Locale to texts table map.
+    private static final HashMap<String, String[]> sLocaleToTextsTableMap = new HashMap<>();
+    // TODO: Remove this variable after debugging.
+    // Texts table to locale maps.
+    private static final HashMap<String[], String> sTextsTableToLocaleMap = new HashMap<>();
+
+    public static String getText(final String name, final String[] textsTable) {
+        final Integer indexObj = sNameToIndexesMap.get(name);
+        if (indexObj == null) {
+            throw new RuntimeException("Unknown text name=" + name + " locale="
+                    + sTextsTableToLocaleMap.get(textsTable));
+        }
+        final int index = indexObj;
+        final String text = (index < textsTable.length) ? textsTable[index] : null;
+        if (text != null) {
+            return text;
+        }
+        // Sanity check.
+        if (index >= 0 && index < TEXTS_DEFAULT.length) {
+            return TEXTS_DEFAULT[index];
+        }
+        // Throw exception for debugging purpose.
+        throw new RuntimeException("Illegal index=" + index + " for name=" + name
+                + " locale=" + sTextsTableToLocaleMap.get(textsTable));
+    }
+
+    public static String[] getTextsTable(final Locale locale) {
+        final String localeKey = locale.toString();
+        if (sLocaleToTextsTableMap.containsKey(localeKey)) {
+            return sLocaleToTextsTableMap.get(localeKey);
+        }
+        final String languageKey = locale.getLanguage();
+        if (sLocaleToTextsTableMap.containsKey(languageKey)) {
+            return sLocaleToTextsTableMap.get(languageKey);
+        }
+        return TEXTS_DEFAULT;
+    }
+
+    private static final String[] NAMES = {
+    //  /* index:histogram */ "name",
+        /*   0:32 */ "morekeys_a",
+        /*   1:32 */ "morekeys_o",
+        /*   2:30 */ "morekeys_u",
+        /*   3:29 */ "morekeys_e",
+        /*   4:28 */ "morekeys_i",
+        /*   5:28 */ "keylabel_to_alpha",
+        /*   6:23 */ "morekeys_c",
+        /*   7:23 */ "double_quotes",
+        /*   8:22 */ "morekeys_n",
+        /*   9:22 */ "single_quotes",
+        /*  10:20 */ "morekeys_s",
+        /*  11:15 */ "keyspec_currency",
+        /*  12:14 */ "morekeys_y",
+        /*  13:13 */ "morekeys_d",
+        /*  14:12 */ "morekeys_z",
+        /*  15:10 */ "morekeys_t",
+        /*  16:10 */ "morekeys_l",
+        /*  17: 9 */ "morekeys_g",
+        /*  18: 9 */ "single_angle_quotes",
+        /*  19: 9 */ "double_angle_quotes",
+        /*  20: 8 */ "morekeys_r",
+        /*  21: 6 */ "morekeys_k",
+        /*  22: 6 */ "morekeys_cyrillic_ie",
+        /*  23: 5 */ "keyspec_nordic_row1_11",
+        /*  24: 5 */ "keyspec_nordic_row2_10",
+        /*  25: 5 */ "keyspec_nordic_row2_11",
+        /*  26: 5 */ "morekeys_nordic_row2_10",
+        /*  27: 5 */ "keyspec_east_slavic_row1_9",
+        /*  28: 5 */ "keyspec_east_slavic_row2_2",
+        /*  29: 5 */ "keyspec_east_slavic_row2_11",
+        /*  30: 5 */ "keyspec_east_slavic_row3_5",
+        /*  31: 5 */ "morekeys_cyrillic_soft_sign",
+        /*  32: 5 */ "keyspec_symbols_1",
+        /*  33: 5 */ "keyspec_symbols_2",
+        /*  34: 5 */ "keyspec_symbols_3",
+        /*  35: 5 */ "keyspec_symbols_4",
+        /*  36: 5 */ "keyspec_symbols_5",
+        /*  37: 5 */ "keyspec_symbols_6",
+        /*  38: 5 */ "keyspec_symbols_7",
+        /*  39: 5 */ "keyspec_symbols_8",
+        /*  40: 5 */ "keyspec_symbols_9",
+        /*  41: 5 */ "keyspec_symbols_0",
+        /*  42: 5 */ "keylabel_to_symbol",
+        /*  43: 5 */ "additional_morekeys_symbols_1",
+        /*  44: 5 */ "additional_morekeys_symbols_2",
+        /*  45: 5 */ "additional_morekeys_symbols_3",
+        /*  46: 5 */ "additional_morekeys_symbols_4",
+        /*  47: 5 */ "additional_morekeys_symbols_5",
+        /*  48: 5 */ "additional_morekeys_symbols_6",
+        /*  49: 5 */ "additional_morekeys_symbols_7",
+        /*  50: 5 */ "additional_morekeys_symbols_8",
+        /*  51: 5 */ "additional_morekeys_symbols_9",
+        /*  52: 5 */ "additional_morekeys_symbols_0",
+        /*  53: 4 */ "morekeys_nordic_row2_11",
+        /*  54: 4 */ "morekeys_punctuation",
+        /*  55: 4 */ "keyspec_tablet_comma",
+        /*  56: 3 */ "keyspec_swiss_row1_11",
+        /*  57: 3 */ "keyspec_swiss_row2_10",
+        /*  58: 3 */ "keyspec_swiss_row2_11",
+        /*  59: 3 */ "morekeys_swiss_row1_11",
+        /*  60: 3 */ "morekeys_swiss_row2_10",
+        /*  61: 3 */ "morekeys_swiss_row2_11",
+        /*  62: 3 */ "morekeys_star",
+        /*  63: 3 */ "keyspec_left_parenthesis",
+        /*  64: 3 */ "keyspec_right_parenthesis",
+        /*  65: 3 */ "keyspec_left_square_bracket",
+        /*  66: 3 */ "keyspec_right_square_bracket",
+        /*  67: 3 */ "keyspec_left_curly_bracket",
+        /*  68: 3 */ "keyspec_right_curly_bracket",
+        /*  69: 3 */ "keyspec_less_than",
+        /*  70: 3 */ "keyspec_greater_than",
+        /*  71: 3 */ "keyspec_less_than_equal",
+        /*  72: 3 */ "keyspec_greater_than_equal",
+        /*  73: 3 */ "keyspec_left_double_angle_quote",
+        /*  74: 3 */ "keyspec_right_double_angle_quote",
+        /*  75: 3 */ "keyspec_left_single_angle_quote",
+        /*  76: 3 */ "keyspec_right_single_angle_quote",
+        /*  77: 3 */ "keyspec_comma",
+        /*  78: 3 */ "morekeys_tablet_comma",
+        /*  79: 3 */ "keyhintlabel_period",
+        /*  80: 3 */ "morekeys_tablet_period",
+        /*  81: 3 */ "morekeys_question",
+        /*  82: 2 */ "morekeys_h",
+        /*  83: 2 */ "morekeys_w",
+        /*  84: 2 */ "morekeys_east_slavic_row2_2",
+        /*  85: 2 */ "morekeys_cyrillic_u",
+        /*  86: 2 */ "morekeys_cyrillic_en",
+        /*  87: 2 */ "morekeys_cyrillic_ghe",
+        /*  88: 2 */ "morekeys_cyrillic_o",
+        /*  89: 2 */ "morekeys_cyrillic_i",
+        /*  90: 2 */ "keyspec_south_slavic_row1_6",
+        /*  91: 2 */ "keyspec_south_slavic_row2_11",
+        /*  92: 2 */ "keyspec_south_slavic_row3_1",
+        /*  93: 2 */ "keyspec_south_slavic_row3_8",
+        /*  94: 2 */ "morekeys_tablet_punctuation",
+        /*  95: 2 */ "keyspec_spanish_row2_10",
+        /*  96: 2 */ "morekeys_bullet",
+        /*  97: 2 */ "morekeys_left_parenthesis",
+        /*  98: 2 */ "morekeys_right_parenthesis",
+        /*  99: 2 */ "morekeys_arabic_diacritics",
+        /* 100: 2 */ "keyhintlabel_tablet_comma",
+        /* 101: 2 */ "keyspec_period",
+        /* 102: 2 */ "morekeys_period",
+        /* 103: 2 */ "keyspec_tablet_period",
+        /* 104: 2 */ "keyhintlabel_tablet_period",
+        /* 105: 2 */ "keyspec_symbols_question",
+        /* 106: 2 */ "keyspec_symbols_semicolon",
+        /* 107: 2 */ "keyspec_symbols_percent",
+        /* 108: 2 */ "morekeys_symbols_semicolon",
+        /* 109: 2 */ "morekeys_symbols_percent",
+        /* 110: 1 */ "morekeys_v",
+        /* 111: 1 */ "morekeys_j",
+        /* 112: 1 */ "morekeys_q",
+        /* 113: 1 */ "morekeys_x",
+        /* 114: 1 */ "keyspec_q",
+        /* 115: 1 */ "keyspec_w",
+        /* 116: 1 */ "keyspec_y",
+        /* 117: 1 */ "keyspec_x",
+        /* 118: 1 */ "morekeys_east_slavic_row2_11",
+        /* 119: 1 */ "morekeys_cyrillic_ka",
+        /* 120: 1 */ "morekeys_cyrillic_a",
+        /* 121: 1 */ "morekeys_currency_dollar",
+        /* 122: 1 */ "morekeys_plus",
+        /* 123: 1 */ "morekeys_less_than",
+        /* 124: 1 */ "morekeys_greater_than",
+        /* 125: 1 */ "morekeys_exclamation",
+        /* 126: 0 */ "morekeys_currency",
+        /* 127: 0 */ "morekeys_symbols_1",
+        /* 128: 0 */ "morekeys_symbols_2",
+        /* 129: 0 */ "morekeys_symbols_3",
+        /* 130: 0 */ "morekeys_symbols_4",
+        /* 131: 0 */ "morekeys_symbols_5",
+        /* 132: 0 */ "morekeys_symbols_6",
+        /* 133: 0 */ "morekeys_symbols_7",
+        /* 134: 0 */ "morekeys_symbols_8",
+        /* 135: 0 */ "morekeys_symbols_9",
+        /* 136: 0 */ "morekeys_symbols_0",
+        /* 137: 0 */ "morekeys_am_pm",
+        /* 138: 0 */ "keyspec_settings",
+        /* 139: 0 */ "keyspec_shortcut",
+        /* 140: 0 */ "keyspec_action_next",
+        /* 141: 0 */ "keyspec_action_previous",
+        /* 142: 0 */ "keylabel_to_more_symbol",
+        /* 143: 0 */ "keylabel_tablet_to_more_symbol",
+        /* 144: 0 */ "keylabel_to_phone_numeric",
+        /* 145: 0 */ "keylabel_to_phone_symbols",
+        /* 146: 0 */ "keylabel_time_am",
+        /* 147: 0 */ "keylabel_time_pm",
+        /* 148: 0 */ "keyspec_popular_domain",
+        /* 149: 0 */ "morekeys_popular_domain",
+        /* 150: 0 */ "keyspecs_left_parenthesis_more_keys",
+        /* 151: 0 */ "keyspecs_right_parenthesis_more_keys",
+        /* 152: 0 */ "single_laqm_raqm",
+        /* 153: 0 */ "single_raqm_laqm",
+        /* 154: 0 */ "double_laqm_raqm",
+        /* 155: 0 */ "double_raqm_laqm",
+        /* 156: 0 */ "single_lqm_rqm",
+        /* 157: 0 */ "single_9qm_lqm",
+        /* 158: 0 */ "single_9qm_rqm",
+        /* 159: 0 */ "single_rqm_9qm",
+        /* 160: 0 */ "double_lqm_rqm",
+        /* 161: 0 */ "double_9qm_lqm",
+        /* 162: 0 */ "double_9qm_rqm",
+        /* 163: 0 */ "double_rqm_9qm",
+        /* 164: 0 */ "morekeys_single_quote",
+        /* 165: 0 */ "morekeys_double_quote",
+        /* 166: 0 */ "morekeys_tablet_double_quote",
+        /* 167: 0 */ "keyspec_emoji_key",
+    };
+
+    private static final String EMPTY = "";
+
+    /* Default texts */
+    private static final String[] TEXTS_DEFAULT = {
+        /* morekeys_a ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        /* keylabel_to_alpha */ "ABC",
+        /* morekeys_c */ EMPTY,
+        /* double_quotes */ "!text/double_lqm_rqm",
+        /* morekeys_n */ EMPTY,
+        /* single_quotes */ "!text/single_lqm_rqm",
+        /* morekeys_s */ EMPTY,
+        /* keyspec_currency */ "$",
+        /* morekeys_y ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_g */
+        /* single_angle_quotes */ "!text/single_laqm_raqm",
+        /* double_angle_quotes */ "!text/double_laqm_raqm",
+        /* morekeys_r ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_cyrillic_soft_sign */
+        /* keyspec_symbols_1 */ "1",
+        /* keyspec_symbols_2 */ "2",
+        /* keyspec_symbols_3 */ "3",
+        /* keyspec_symbols_4 */ "4",
+        /* keyspec_symbols_5 */ "5",
+        /* keyspec_symbols_6 */ "6",
+        /* keyspec_symbols_7 */ "7",
+        /* keyspec_symbols_8 */ "8",
+        /* keyspec_symbols_9 */ "9",
+        /* keyspec_symbols_0 */ "0",
+        // Label for "switch to symbols" key.
+        /* keylabel_to_symbol */ "?123",
+        /* additional_morekeys_symbols_1 ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_nordic_row2_11 */
+        /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
+        /* keyspec_tablet_comma */ ",",
+        /* keyspec_swiss_row1_11 ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_swiss_row2_11 */
+        // U+2020: "†" DAGGER
+        // U+2021: "‡" DOUBLE DAGGER
+        // U+2605: "★" BLACK STAR
+        /* morekeys_star */ "\u2020,\u2021,\u2605",
+        // The all letters need to be mirrored are found at
+        // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
+        // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+        // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+        // U+2264: "≤" LESS-THAN OR EQUAL TO
+        // U+2265: "≥" GREATER-THAN EQUAL TO
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        /* keyspec_left_parenthesis */ "(",
+        /* keyspec_right_parenthesis */ ")",
+        /* keyspec_left_square_bracket */ "[",
+        /* keyspec_right_square_bracket */ "]",
+        /* keyspec_left_curly_bracket */ "{",
+        /* keyspec_right_curly_bracket */ "}",
+        /* keyspec_less_than */ "<",
+        /* keyspec_greater_than */ ">",
+        /* keyspec_less_than_equal */ "\u2264",
+        /* keyspec_greater_than_equal */ "\u2265",
+        /* keyspec_left_double_angle_quote */ "\u00AB",
+        /* keyspec_right_double_angle_quote */ "\u00BB",
+        /* keyspec_left_single_angle_quote */ "\u2039",
+        /* keyspec_right_single_angle_quote */ "\u203A",
+        // Comma key
+        /* keyspec_comma */ ",",
+        /* morekeys_tablet_comma */ EMPTY,
+        /* keyhintlabel_period */ EMPTY,
+        /* morekeys_tablet_period */ "!text/morekeys_tablet_punctuation",
+        // U+00BF: "¿" INVERTED QUESTION MARK
+        /* morekeys_question */ "\u00BF",
+        /* morekeys_h ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ keyspec_south_slavic_row3_8 */
+        /* morekeys_tablet_punctuation */ "!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* keyspec_spanish_row2_10 */ "\u00F1",
+        // U+266A: "♪" EIGHTH NOTE
+        // U+2665: "♥" BLACK HEART SUIT
+        // U+2660: "♠" BLACK SPADE SUIT
+        // U+2666: "♦" BLACK DIAMOND SUIT
+        // U+2663: "♣" BLACK CLUB SUIT
+        /* morekeys_bullet */ "\u266A,\u2665,\u2660,\u2666,\u2663",
+        /* morekeys_left_parenthesis */ "!fixedColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys",
+        /* morekeys_right_parenthesis */ "!fixedColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys",
+        /* morekeys_arabic_diacritics */ EMPTY,
+        /* keyhintlabel_tablet_comma */ EMPTY,
+        // Period key
+        /* keyspec_period */ ".",
+        /* morekeys_period */ "!text/morekeys_punctuation",
+        /* keyspec_tablet_period */ ".",
+        /* keyhintlabel_tablet_period */ EMPTY,
+        /* keyspec_symbols_question */ "?",
+        /* keyspec_symbols_semicolon */ ";",
+        /* keyspec_symbols_percent */ "%",
+        /* morekeys_symbols_semicolon */ EMPTY,
+        // U+2030: "‰" PER MILLE SIGN
+        /* morekeys_symbols_percent */ "\u2030",
+        /* morekeys_v ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_x */
+        /* keyspec_q */ "q",
+        /* keyspec_w */ "w",
+        /* keyspec_y */ "y",
+        /* keyspec_x */ "x",
+        /* morekeys_east_slavic_row2_11 ~ */
+        EMPTY, EMPTY, EMPTY,
+        /* ~ morekeys_cyrillic_a */
+        // U+00A2: "¢" CENT SIGN
+        // U+00A3: "£" POUND SIGN
+        // U+20AC: "€" EURO SIGN
+        // U+00A5: "¥" YEN SIGN
+        // U+20B1: "₱" PESO SIGN
+        /* morekeys_currency_dollar */ "\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
+        // U+00B1: "±" PLUS-MINUS SIGN
+        /* morekeys_plus */ "\u00B1",
+        /* morekeys_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote",
+        /* morekeys_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote",
+        // U+00A1: "¡" INVERTED EXCLAMATION MARK
+        /* morekeys_exclamation */ "\u00A1",
+        /* morekeys_currency */ "$,\u00A2,\u20AC,\u00A3,\u00A5,\u20B1",
+        // 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
+        /* morekeys_symbols_1 */ "\u00B9,\u00BD,\u2153,\u00BC,\u215B",
+        // U+00B2: "²" SUPERSCRIPT TWO
+        // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+        /* morekeys_symbols_2 */ "\u00B2,\u2154",
+        // U+00B3: "³" SUPERSCRIPT THREE
+        // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+        // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+        /* morekeys_symbols_3 */ "\u00B3,\u00BE,\u215C",
+        // U+2074: "⁴" SUPERSCRIPT FOUR
+        /* morekeys_symbols_4 */ "\u2074",
+        // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+        /* morekeys_symbols_5 */ "\u215D",
+        /* morekeys_symbols_6 */ EMPTY,
+        // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+        /* morekeys_symbols_7 */ "\u215E",
+        /* morekeys_symbols_8 */ EMPTY,
+        /* morekeys_symbols_9 */ EMPTY,
+        // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+        // U+2205: "∅" EMPTY SET
+        /* morekeys_symbols_0 */ "\u207F,\u2205",
+        /* morekeys_am_pm */ "!fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm",
+        /* keyspec_settings */ "!icon/settings_key|!code/key_settings",
+        /* keyspec_shortcut */ "!icon/shortcut_key|!code/key_shortcut",
+        /* keyspec_action_next */ "!hasLabels!,!text/label_next_key|!code/key_action_next",
+        /* keyspec_action_previous */ "!hasLabels!,!text/label_previous_key|!code/key_action_previous",
+        // Label for "switch to more symbol" modifier key ("= \ <"). Must be short to fit on key!
+        /* keylabel_to_more_symbol */ "= \\\\ <",
+        // Label for "switch to more symbol" modifier key on tablets.  Must be short to fit on key!
+        /* keylabel_tablet_to_more_symbol */ "~ [ <",
+        // Label for "switch to phone numeric" key.  Must be short to fit on key!
+        /* keylabel_to_phone_numeric */ "123",
+        // Label for "switch to phone symbols" key.  Must be short to fit on key!
+        // U+FF0A: "＊" FULLWIDTH ASTERISK
+        // U+FF03: "＃" FULLWIDTH NUMBER SIGN
+        /* keylabel_to_phone_symbols */ "\uFF0A\uFF03",
+        // Key label for "ante meridiem"
+        /* keylabel_time_am */ "AM",
+        // Key label for "post meridiem"
+        /* keylabel_time_pm */ "PM",
+        /* keyspec_popular_domain */ ".com",
+        // popular web domains for the locale - most popular, displayed on the keyboard
+        /* morekeys_popular_domain */ "!hasLabels!,.net,.org,.gov,.edu",
+        /* keyspecs_left_parenthesis_more_keys */ "!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket",
+        /* keyspecs_right_parenthesis_more_keys */ "!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket",
+        // The following characters don't need BIDI mirroring.
+        // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+        // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+        // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+        // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+        // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+        // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+        // Abbreviations are:
+        // laqm: LEFT-POINTING ANGLE QUOTATION MARK
+        // raqm: RIGHT-POINTING ANGLE QUOTATION MARK
+        // lqm: LEFT QUOTATION MARK
+        // rqm: RIGHT QUOTATION MARK
+        // 9qm: LOW-9 QUOTATION MARK
+        // The following each quotation mark pair consist of
+        // <opening quotation mark>, <closing quotation mark>
+        // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>.
+        /* single_laqm_raqm */ "!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote",
+        /* single_raqm_laqm */ "!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote",
+        /* double_laqm_raqm */ "!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
+        /* double_raqm_laqm */ "!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote",
+        // The following each quotation mark triplet consists of
+        // <another quotation mark>, <opening quotation mark>, <closing quotation mark>
+        // and is named after (single|double)_<opening quotation mark>_<closing quotation mark>.
+        /* single_lqm_rqm */ "\u201A,\u2018,\u2019",
+        /* single_9qm_lqm */ "\u2019,\u201A,\u2018",
+        /* single_9qm_rqm */ "\u2018,\u201A,\u2019",
+        /* single_rqm_9qm */ "\u2018,\u2019,\u201A",
+        /* double_lqm_rqm */ "\u201E,\u201C,\u201D",
+        /* double_9qm_lqm */ "\u201D,\u201E,\u201C",
+        /* double_9qm_rqm */ "\u201C,\u201E,\u201D",
+        /* double_rqm_9qm */ "\u201C,\u201D,\u201E",
+        /* morekeys_single_quote */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
+        /* morekeys_double_quote */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
+        /* morekeys_tablet_double_quote */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
+        /* keyspec_emoji_key */ "!icon/emoji_key|!code/key_emoji",
+    };
+
+    /* Locale af: Afrikaans */
+    private static final String[] TEXTS_af = {
+        // This is the same as Dutch except more keys of y and demoting vowels with diaeresis.
+        // 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+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
+        /* morekeys_a */ "\u00E1,\u00E2,\u00E4,\u00E0,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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+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
+        /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+        // 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // 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: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
+        /* keylabel_to_alpha ~ */
+        null, null, null,
+        /* ~ double_quotes */
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes ~ */
+        null, null, null,
+        /* ~ keyspec_currency */
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_y */ "\u00FD,\u0133",
+    };
+
+    /* Locale ar: Arabic */
+    private static final String[] TEXTS_ar = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
+        // U+200C: ZERO WIDTH NON-JOINER
+        // U+0628: "ب" ARABIC LETTER BEH
+        // U+062C: "ج" ARABIC LETTER JEEM
+        /* keylabel_to_alpha */ "\u0623\u200C\u0628\u200C\u062C",
+        /* morekeys_c ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
+        // U+0661: "١" ARABIC-INDIC DIGIT ONE
+        /* keyspec_symbols_1 */ "\u0661",
+        // U+0662: "٢" ARABIC-INDIC DIGIT TWO
+        /* keyspec_symbols_2 */ "\u0662",
+        // U+0663: "٣" ARABIC-INDIC DIGIT THREE
+        /* keyspec_symbols_3 */ "\u0663",
+        // U+0664: "٤" ARABIC-INDIC DIGIT FOUR
+        /* keyspec_symbols_4 */ "\u0664",
+        // U+0665: "٥" ARABIC-INDIC DIGIT FIVE
+        /* keyspec_symbols_5 */ "\u0665",
+        // U+0666: "٦" ARABIC-INDIC DIGIT SIX
+        /* keyspec_symbols_6 */ "\u0666",
+        // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN
+        /* keyspec_symbols_7 */ "\u0667",
+        // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
+        /* keyspec_symbols_8 */ "\u0668",
+        // U+0669: "٩" ARABIC-INDIC DIGIT NINE
+        /* keyspec_symbols_9 */ "\u0669",
+        // U+0660: "٠" ARABIC-INDIC DIGIT ZERO
+        /* keyspec_symbols_0 */ "\u0660",
+        // Label for "switch to symbols" key.
+        // U+061F: "؟" ARABIC QUESTION MARK
+        /* keylabel_to_symbol */ "\u0663\u0662\u0661\u061F",
+        /* additional_morekeys_symbols_1 */ "1",
+        /* additional_morekeys_symbols_2 */ "2",
+        /* additional_morekeys_symbols_3 */ "3",
+        /* additional_morekeys_symbols_4 */ "4",
+        /* additional_morekeys_symbols_5 */ "5",
+        /* additional_morekeys_symbols_6 */ "6",
+        /* additional_morekeys_symbols_7 */ "7",
+        /* additional_morekeys_symbols_8 */ "8",
+        /* additional_morekeys_symbols_9 */ "9",
+        // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+        // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+        /* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+        /* morekeys_nordic_row2_11 */ null,
+        /* morekeys_punctuation */ null,
+        // U+061F: "؟" ARABIC QUESTION MARK
+        // U+060C: "،" ARABIC COMMA
+        // U+061B: "؛" ARABIC SEMICOLON
+        /* keyspec_tablet_comma */ "\u060C",
+        /* keyspec_swiss_row1_11 ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_swiss_row2_11 */
+        // U+2605: "★" BLACK STAR
+        // U+066D: "٭" ARABIC FIVE POINTED STAR
+        /* morekeys_star */ "\u2605,\u066D",
+        // 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
+        /* keyspec_left_parenthesis */ "(|)",
+        /* keyspec_right_parenthesis */ ")|(",
+        /* keyspec_left_square_bracket */ "[|]",
+        /* keyspec_right_square_bracket */ "]|[",
+        /* keyspec_left_curly_bracket */ "{|}",
+        /* keyspec_right_curly_bracket */ "}|{",
+        /* keyspec_less_than */ "<|>",
+        /* keyspec_greater_than */ ">|<",
+        /* keyspec_less_than_equal */ "\u2264|\u2265",
+        /* keyspec_greater_than_equal */ "\u2265|\u2264",
+        /* keyspec_left_double_angle_quote */ "\u00AB|\u00BB",
+        /* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
+        /* keyspec_left_single_angle_quote */ "\u2039|\u203A",
+        /* keyspec_right_single_angle_quote */ "\u203A|\u2039",
+        // U+060C: "،" ARABIC COMMA
+        /* keyspec_comma */ "\u060C",
+        /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,\",\'",
+        // U+0651: "ّ" ARABIC SHADDA
+        /* keyhintlabel_period */ "\u0651",
+        /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
+        // U+00BF: "¿" INVERTED QUESTION MARK
+        /* morekeys_question */ "?,\u00BF",
+        /* morekeys_h ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_spanish_row2_10 */
+        // U+266A: "♪" EIGHTH NOTE
+        /* morekeys_bullet */ "\u266A",
+        // 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
+        /* morekeys_left_parenthesis */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,!text/keyspecs_left_parenthesis_more_keys",
+        /* morekeys_right_parenthesis */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,!text/keyspecs_right_parenthesis_more_keys",
+        // U+0655: "ٕ" ARABIC HAMZA BELOW
+        // U+0654: "ٔ" ARABIC HAMZA ABOVE
+        // U+0652: "ْ" ARABIC SUKUN
+        // U+064D: "ٍ" ARABIC KASRATAN
+        // U+064C: "ٌ" ARABIC DAMMATAN
+        // U+064B: "ً" ARABIC FATHATAN
+        // U+0651: "ّ" ARABIC SHADDA
+        // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+        // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+        // U+0653: "ٓ" ARABIC MADDAH ABOVE
+        // U+0650: "ِ" ARABIC KASRA
+        // U+064F: "ُ" ARABIC DAMMA
+        // U+064E: "َ" ARABIC FATHA
+        // U+0640: "ـ" ARABIC TATWEEL
+        // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
+        // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly.
+        /* morekeys_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0654|\u0654, \u0652|\u0652, \u064D|\u064D, \u064C|\u064C, \u064B|\u064B, \u0651|\u0651, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u0650|\u0650, \u064F|\u064F, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
+        /* keyhintlabel_tablet_comma */ "\u061F",
+        /* keyspec_period */ null,
+        /* morekeys_period */ "!text/morekeys_arabic_diacritics",
+        /* keyspec_tablet_period */ null,
+        /* keyhintlabel_tablet_period */ "\u0651",
+        /* keyspec_symbols_question */ "\u061F",
+        /* keyspec_symbols_semicolon */ "\u061B",
+        // U+066A: "٪" ARABIC PERCENT SIGN
+        /* keyspec_symbols_percent */ "\u066A",
+        /* morekeys_symbols_semicolon */ ";",
+        // U+2030: "‰" PER MILLE SIGN
+        /* morekeys_symbols_percent */ "\\%,\u2030",
+    };
+
+    /* Locale az_AZ: Azerbaijani (Azerbaijan) */
+    private static final String[] TEXTS_az_AZ = {
+        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+        /* morekeys_a */ "\u00E2",
+        // 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
+        /* morekeys_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+        // U+0259: "ə" LATIN SMALL LETTER SCHWA
+        /* morekeys_e */ "\u0259",
+        // 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
+        /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes ~ */
+        null, null, null,
+        /* ~ single_quotes */
+        // 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
+        /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
+        /* keyspec_currency ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_l */
+        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+        /* morekeys_g */ "\u011F",
+    };
+
+    /* Locale be_BY: Belarusian (Belarus) */
+    private static final String[] TEXTS_be_BY = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_k */
+        // U+0451: "ё" CYRILLIC SMALL LETTER IO
+        /* morekeys_cyrillic_ie */ "\u0451",
+        /* keyspec_nordic_row1_11 ~ */
+        null, null, null, null,
+        /* ~ morekeys_nordic_row2_10 */
+        // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U
+        /* keyspec_east_slavic_row1_9 */ "\u045E",
+        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+        /* keyspec_east_slavic_row2_2 */ "\u044B",
+        // U+044D: "э" CYRILLIC SMALL LETTER E
+        /* keyspec_east_slavic_row2_11 */ "\u044D",
+        // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+        /* keyspec_east_slavic_row3_5 */ "\u0456",
+        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+        /* morekeys_cyrillic_soft_sign */ "\u044A",
+    };
+
+    /* Locale bg: Bulgarian */
+    private static final String[] TEXTS_bg = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c */ null,
+        // single_quotes of Bulgarian is default single_quotes_right_left.
+        /* double_quotes */ "!text/double_9qm_lqm",
+    };
+
+    /* Locale bn_IN: Bengali (India) */
+    private static final String[] TEXTS_bn_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0995: "क" BENGALI LETTER KA
+        // U+0996: "ख" BENGALI LETTER KHA
+        // U+0997: "ग" BENGALI LETTER GA
+        /* keylabel_to_alpha */ "\u0995\u0996\u0997",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+09F3: "৳" BENGALI RUPEE SIGN
+        /* keyspec_currency */ "\u09F3",
+    };
+
+    /* Locale ca: Catalan */
+    private static final String[] TEXTS_ca = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+        // 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
+        /* morekeys_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E8,\u00E9,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_t */
+        // U+00B7: "·" MIDDLE DOT
+        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+        /* morekeys_l */ "l\u00B7l,\u0142",
+        /* morekeys_g ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_nordic_row2_11 */
+        // U+00B7: "·" MIDDLE DOT
+        /* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&",
+        /* keyspec_tablet_comma ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_south_slavic_row3_8 */
+        /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        /* keyspec_spanish_row2_10 */ "\u00E7",
+    };
+
+    /* Locale cs: Czech */
+    private static final String[] TEXTS_cs = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // 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
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u00E7,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0148,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        /* morekeys_s */ "\u0161,\u00DF,\u015B",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
+        // 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
+        /* morekeys_z */ "\u017E,\u017A,\u017C",
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        /* morekeys_t */ "\u0165",
+        /* morekeys_l */ null,
+        /* morekeys_g */ null,
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        /* morekeys_r */ "\u0159",
+    };
+
+    /* Locale da: Danish */
+    private static final String[] TEXTS_da = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        /* morekeys_e */ "\u00E9,\u00EB",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        /* morekeys_i */ "\u00ED,\u00EF",
+        /* keylabel_to_alpha */ null,
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        /* morekeys_s */ "\u00DF,\u015B,\u0161",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        /* morekeys_d */ "\u00F0",
+        /* morekeys_z */ null,
+        /* morekeys_t */ null,
+        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+        /* morekeys_l */ "\u0142",
+        /* morekeys_g */ null,
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+        /* morekeys_r ~ */
+        null, null, null,
+        /* ~ morekeys_cyrillic_ie */
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        /* keyspec_nordic_row1_11 */ "\u00E5",
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        /* keyspec_nordic_row2_10 */ "\u00E6",
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        /* keyspec_nordic_row2_11 */ "\u00F8",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* morekeys_nordic_row2_10 */ "\u00E4",
+        /* keyspec_east_slavic_row1_9 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* morekeys_nordic_row2_11 */ "\u00F6",
+    };
+
+    /* Locale de: German */
+    private static final String[] TEXTS_de = {
+        // 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
+        /* morekeys_a */ "\u00E4,%,\u00E2,\u00E0,\u00E1,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F6,%,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FC,%,\u00FB,\u00F9,\u00FA,\u016B",
+        // 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+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
+        /* morekeys_i ~ */
+        null, null, null,
+        /* ~ morekeys_c */
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        /* morekeys_s */ "\u00DF,\u015B,\u0161",
+        /* keyspec_currency ~ */
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_g */
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+        /* morekeys_r ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
+        /* ~ keyspec_tablet_comma */
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        /* keyspec_swiss_row1_11 */ "\u00FC",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* keyspec_swiss_row2_10 */ "\u00F6",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* keyspec_swiss_row2_11 */ "\u00E4",
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        /* morekeys_swiss_row1_11 */ "\u00E8",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        /* morekeys_swiss_row2_10 */ "\u00E9",
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        /* morekeys_swiss_row2_11 */ "\u00E0",
+    };
+
+    /* Locale el: Greek */
+    private static final String[] TEXTS_el = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
+        // U+0392: "Β" GREEK CAPITAL LETTER BETA
+        // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA
+        /* keylabel_to_alpha */ "\u0391\u0392\u0393",
+    };
+
+    /* Locale en: English */
+    private static final String[] TEXTS_en = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u0153,\u00F8,\u014D,\u00F5",
+        // 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
+        // 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+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
+        // 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+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        /* morekeys_c */ "\u00E7",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u00F1",
+        /* single_quotes */ null,
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        /* morekeys_s */ "\u00DF",
+    };
+
+    /* Locale eo: Esperanto */
+    private static final String[] TEXTS_eo = {
+        // 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
+        // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA",
+        // 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
+        // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+        /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D,\u0151,\u00BA",
+        // 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
+        // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
+        // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+        // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+        // U+00B5: "µ" MICRO SIGN
+        /* morekeys_u */ "\u00FA,\u016F,\u00FB,\u00FC,\u00F9,\u016B,\u0169,\u0171,\u0173,\u00B5",
+        // 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
+        /* morekeys_e */ "\u00E9,\u011B,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // 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+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133",
+        /* keylabel_to_alpha */ null,
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
+        /* morekeys_c */ "\u0107,\u010D,\u00E7,\u010B",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+0149: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+        // U+014B: "ŋ" LATIN SMALL LETTER ENG
+        /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+        /* single_quotes */ null,
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
+        // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+        /* morekeys_s */ "\u00DF,\u0161,\u015B,\u0219,\u015F",
+        /* keyspec_currency */ null,
+        // 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+00FE: "þ" LATIN SMALL LETTER THORN
+        /* morekeys_y */ "y,\u00FD,\u0177,\u00FF,\u00FE",
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u00F0,\u010F,\u0111",
+        // 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
+        /* morekeys_z */ "\u017A,\u017C,\u017E",
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
+        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+        // U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE
+        /* morekeys_t */ "\u0165,\u021B,\u0163,\u0167",
+        // 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
+        /* morekeys_l */ "\u013A,\u013C,\u013E,\u0140,\u0142",
+        // 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
+        /* morekeys_g */ "\u011F,\u0121,\u0123",
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+        /* morekeys_r */ "\u0159,\u0155,\u0157",
+        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+        // U+0138: "ĸ" LATIN SMALL LETTER KRA
+        /* morekeys_k */ "\u0137,\u0138",
+        /* morekeys_cyrillic_ie ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_question */
+        // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
+        // U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE
+        /* morekeys_h */ "\u0125,\u0127",
+        // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+        /* morekeys_w */ "w,\u0175",
+        /* morekeys_east_slavic_row2_2 ~ */
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_tablet_punctuation */
+        // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
+        /* keyspec_spanish_row2_10 */ "\u0135",
+        /* morekeys_bullet ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_symbols_percent */
+        // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+        /* morekeys_v */ "w,\u0175",
+        /* morekeys_j */ null,
+        /* morekeys_q */ "q",
+        /* morekeys_x */ "x",
+        // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
+        /* keyspec_q */ "\u015D",
+        // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
+        /* keyspec_w */ "\u011D",
+        // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
+        /* keyspec_y */ "\u016D",
+        // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
+        /* keyspec_x */ "\u0109",
+    };
+
+    /* Locale es: Spanish */
+    private static final String[] TEXTS_es = {
+        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "œ" LATIN SMALL LIGATURE OE
+        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+        /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+        // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_nordic_row2_11 */
+        // U+00A1: "¡" INVERTED EXCLAMATION MARK
+        // U+00BF: "¿" INVERTED QUESTION MARK
+        /* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,#,),(,/,;,\u00A1,',@,:,-,\",+,\\%,&,\u00BF",
+    };
+
+    /* Locale et_EE: Estonian (Estonia) */
+    private static final String[] TEXTS_et_EE = {
+        // 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
+        /* morekeys_a */ "\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6,\u0105",
+        // 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
+        /* morekeys_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
+        // 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
+        /* morekeys_u */ "\u00FC,\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
+        // 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
+        /* morekeys_e */ "\u0113,\u00E8,\u0117,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
+        // 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
+        /* morekeys_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
+        /* keylabel_to_alpha */ null,
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u00E7,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // 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
+        /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
+        // 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
+        /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        /* morekeys_t */ "\u0163,\u0165",
+        // 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
+        /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E",
+        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+        /* morekeys_g */ "\u0123,\u011F",
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
+        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+        /* morekeys_r */ "\u0157,\u0159,\u0155",
+        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+        /* morekeys_k */ "\u0137",
+        /* morekeys_cyrillic_ie */ null,
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        /* keyspec_nordic_row1_11 */ "\u00FC",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* keyspec_nordic_row2_10 */ "\u00F6",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* keyspec_nordic_row2_11 */ "\u00E4",
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        /* morekeys_nordic_row2_10 */ "\u00F5",
+    };
+
+    /* Locale eu_ES: Basque (Spain) */
+    private static final String[] TEXTS_eu_ES = {
+        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "œ" LATIN SMALL LIGATURE OE
+        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+        /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+        // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+    };
+
+    /* Locale fa: Persian */
+    private static final String[] TEXTS_fa = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0627: "ا" ARABIC LETTER ALEF
+        // U+200C: ZERO WIDTH NON-JOINER
+        // U+0628: "ب" ARABIC LETTER BEH
+        // U+067E: "پ" ARABIC LETTER PEH
+        /* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+FDFC: "﷼" RIAL SIGN
+        /* keyspec_currency */ "\uFDFC",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
+        // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
+        /* keyspec_symbols_1 */ "\u06F1",
+        // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
+        /* keyspec_symbols_2 */ "\u06F2",
+        // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
+        /* keyspec_symbols_3 */ "\u06F3",
+        // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR
+        /* keyspec_symbols_4 */ "\u06F4",
+        // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE
+        /* keyspec_symbols_5 */ "\u06F5",
+        // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX
+        /* keyspec_symbols_6 */ "\u06F6",
+        // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN
+        /* keyspec_symbols_7 */ "\u06F7",
+        // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT
+        /* keyspec_symbols_8 */ "\u06F8",
+        // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE
+        /* keyspec_symbols_9 */ "\u06F9",
+        // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
+        /* keyspec_symbols_0 */ "\u06F0",
+        // Label for "switch to symbols" key.
+        // U+061F: "؟" ARABIC QUESTION MARK
+        /* keylabel_to_symbol */ "\u06F3\u06F2\u06F1\u061F",
+        /* additional_morekeys_symbols_1 */ "1",
+        /* additional_morekeys_symbols_2 */ "2",
+        /* additional_morekeys_symbols_3 */ "3",
+        /* additional_morekeys_symbols_4 */ "4",
+        /* additional_morekeys_symbols_5 */ "5",
+        /* additional_morekeys_symbols_6 */ "6",
+        /* additional_morekeys_symbols_7 */ "7",
+        /* additional_morekeys_symbols_8 */ "8",
+        /* additional_morekeys_symbols_9 */ "9",
+        // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+        // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+        /* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+        /* morekeys_nordic_row2_11 */ null,
+        /* morekeys_punctuation */ null,
+        // U+060C: "،" ARABIC COMMA
+        // U+061B: "؛" ARABIC SEMICOLON
+        // U+061F: "؟" ARABIC QUESTION MARK
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        /* keyspec_tablet_comma */ "\u060C",
+        /* keyspec_swiss_row1_11 ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_swiss_row2_11 */
+        // U+2605: "★" BLACK STAR
+        // U+066D: "٭" ARABIC FIVE POINTED STAR
+        /* morekeys_star */ "\u2605,\u066D",
+        /* keyspec_left_parenthesis */ "(|)",
+        /* keyspec_right_parenthesis */ ")|(",
+        /* keyspec_left_square_bracket */ "[|]",
+        /* keyspec_right_square_bracket */ "]|[",
+        /* keyspec_left_curly_bracket */ "{|}",
+        /* keyspec_right_curly_bracket */ "}|{",
+        /* keyspec_less_than */ "<|>",
+        /* keyspec_greater_than */ ">|<",
+        /* keyspec_less_than_equal */ "\u2264|\u2265",
+        /* keyspec_greater_than_equal */ "\u2265|\u2264",
+        /* keyspec_left_double_angle_quote */ "\u00AB|\u00BB",
+        /* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
+        /* keyspec_left_single_angle_quote */ "\u2039|\u203A",
+        /* keyspec_right_single_angle_quote */ "\u203A|\u2039",
+        // U+060C: "،" ARABIC COMMA
+        /* keyspec_comma */ "\u060C",
+        /* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
+        // U+064B: "ً" ARABIC FATHATAN
+        /* keyhintlabel_period */ "\u064B",
+        /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
+        // U+00BF: "¿" INVERTED QUESTION MARK
+        /* morekeys_question */ "?,\u00BF",
+        /* morekeys_h ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_spanish_row2_10 */
+        // U+266A: "♪" EIGHTH NOTE
+        /* morekeys_bullet */ "\u266A",
+        // 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
+        /* morekeys_left_parenthesis */ "!fixedColumnOrder!4,\uFD3E|\uFD3F,!text/keyspecs_left_parenthesis_more_keys",
+        /* morekeys_right_parenthesis */ "!fixedColumnOrder!4,\uFD3F|\uFD3E,!text/keyspecs_right_parenthesis_more_keys",
+        // U+0655: "ٕ" ARABIC HAMZA BELOW
+        // U+0652: "ْ" ARABIC SUKUN
+        // U+0651: "ّ" ARABIC SHADDA
+        // U+064C: "ٌ" ARABIC DAMMATAN
+        // U+064D: "ٍ" ARABIC KASRATAN
+        // U+064B: "ً" ARABIC FATHATAN
+        // U+0654: "ٔ" ARABIC HAMZA ABOVE
+        // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+        // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+        // U+0653: "ٓ" ARABIC MADDAH ABOVE
+        // U+064F: "ُ" ARABIC DAMMA
+        // U+0650: "ِ" ARABIC KASRA
+        // U+064E: "َ" ARABIC FATHA
+        // U+0640: "ـ" ARABIC TATWEEL
+        // In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label.
+        // Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly.
+        /* morekeys_arabic_diacritics */ "!fixedColumnOrder!7, \u0655|\u0655, \u0652|\u0652, \u0651|\u0651, \u064C|\u064C, \u064D|\u064D, \u064B|\u064B, \u0654|\u0654, \u0656|\u0656, \u0670|\u0670, \u0653|\u0653, \u064F|\u064F, \u0650|\u0650, \u064E|\u064E,\u0640\u0640\u0640|\u0640",
+        /* keyhintlabel_tablet_comma */ "\u061F",
+        /* keyspec_period */ null,
+        /* morekeys_period */ "!text/morekeys_arabic_diacritics",
+        /* keyspec_tablet_period */ null,
+        /* keyhintlabel_tablet_period */ "\u064B",
+        /* keyspec_symbols_question */ "\u061F",
+        /* keyspec_symbols_semicolon */ "\u061B",
+        // U+066A: "٪" ARABIC PERCENT SIGN
+        /* keyspec_symbols_percent */ "\u066A",
+        /* morekeys_symbols_semicolon */ ";",
+        // U+2030: "‰" PER MILLE SIGN
+        /* morekeys_symbols_percent */ "\\%,\u2030",
+        /* morekeys_v ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_plus */
+        // 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
+        /* morekeys_less_than */ "!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than",
+        /* morekeys_greater_than */ "!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than",
+    };
+
+    /* Locale fi: Finnish */
+    private static final String[] TEXTS_fi = {
+        // 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
+        /* morekeys_a */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        /* morekeys_u */ "\u00FC",
+        /* morekeys_e ~ */
+        null, null, null, null, null, null, null,
+        /* ~ single_quotes */
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        /* morekeys_s */ "\u0161,\u00DF,\u015B",
+        /* keyspec_currency ~ */
+        null, null, null,
+        /* ~ morekeys_d */
+        // 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
+        /* morekeys_z */ "\u017E,\u017A,\u017C",
+        /* morekeys_t ~ */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_ie */
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        /* keyspec_nordic_row1_11 */ "\u00E5",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* keyspec_nordic_row2_10 */ "\u00F6",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* keyspec_nordic_row2_11 */ "\u00E4",
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        /* morekeys_nordic_row2_10 */ "\u00F8",
+        /* keyspec_east_slavic_row1_9 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        /* morekeys_nordic_row2_11 */ "\u00E6",
+    };
+
+    /* Locale fr: French */
+    private static final String[] TEXTS_fr = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E2,%,\u00E6,\u00E1,\u00E4,\u00E3,\u00E5,\u0101,\u00AA",
+        // 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
+        /* morekeys_o */ "\u00F4,\u0153,%,\u00F6,\u00F2,\u00F3,\u00F5,\u00F8,\u014D,\u00BA",
+        // 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
+        /* morekeys_u */ "\u00F9,\u00FB,%,\u00FC,\u00FA,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,%,\u0119,\u0117,\u0113",
+        // 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
+        /* morekeys_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,%,\u0107,\u010D",
+        /* double_quotes ~ */
+        null, null, null, null, null,
+        /* ~ keyspec_currency */
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "%,\u00FF",
+        /* morekeys_d ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_tablet_comma */
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        /* keyspec_swiss_row1_11 */ "\u00E8",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        /* keyspec_swiss_row2_10 */ "\u00E9",
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        /* keyspec_swiss_row2_11 */ "\u00E0",
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        /* morekeys_swiss_row1_11 */ "\u00FC",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* morekeys_swiss_row2_10 */ "\u00F6",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* morekeys_swiss_row2_11 */ "\u00E4",
+    };
+
+    /* Locale gl_ES: Gallegan (Spain) */
+    private static final String[] TEXTS_gl_ES = {
+        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "œ" LATIN SMALL LIGATURE OE
+        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+        /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+        // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+    };
+
+    /* Locale hi: Hindi */
+    private static final String[] TEXTS_hi = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0915: "क" DEVANAGARI LETTER KA
+        // U+0916: "ख" DEVANAGARI LETTER KHA
+        // U+0917: "ग" DEVANAGARI LETTER GA
+        /* keylabel_to_alpha */ "\u0915\u0916\u0917",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
+        // U+0967: "१" DEVANAGARI DIGIT ONE
+        /* keyspec_symbols_1 */ "\u0967",
+        // U+0968: "२" DEVANAGARI DIGIT TWO
+        /* keyspec_symbols_2 */ "\u0968",
+        // U+0969: "३" DEVANAGARI DIGIT THREE
+        /* keyspec_symbols_3 */ "\u0969",
+        // U+096A: "४" DEVANAGARI DIGIT FOUR
+        /* keyspec_symbols_4 */ "\u096A",
+        // U+096B: "५" DEVANAGARI DIGIT FIVE
+        /* keyspec_symbols_5 */ "\u096B",
+        // U+096C: "६" DEVANAGARI DIGIT SIX
+        /* keyspec_symbols_6 */ "\u096C",
+        // U+096D: "७" DEVANAGARI DIGIT SEVEN
+        /* keyspec_symbols_7 */ "\u096D",
+        // U+096E: "८" DEVANAGARI DIGIT EIGHT
+        /* keyspec_symbols_8 */ "\u096E",
+        // U+096F: "९" DEVANAGARI DIGIT NINE
+        /* keyspec_symbols_9 */ "\u096F",
+        // U+0966: "०" DEVANAGARI DIGIT ZERO
+        /* keyspec_symbols_0 */ "\u0966",
+        // Label for "switch to symbols" key.
+        /* keylabel_to_symbol */ "?\u0967\u0968\u0969",
+        /* additional_morekeys_symbols_1 */ "1",
+        /* additional_morekeys_symbols_2 */ "2",
+        /* additional_morekeys_symbols_3 */ "3",
+        /* additional_morekeys_symbols_4 */ "4",
+        /* additional_morekeys_symbols_5 */ "5",
+        /* additional_morekeys_symbols_6 */ "6",
+        /* additional_morekeys_symbols_7 */ "7",
+        /* additional_morekeys_symbols_8 */ "8",
+        /* additional_morekeys_symbols_9 */ "9",
+        /* additional_morekeys_symbols_0 */ "0",
+    };
+
+    /* Locale hr: Croatian */
+    private static final String[] TEXTS_hr = {
+        /* morekeys_a ~ */
+        null, null, null, null, null, null,
+        /* ~ keylabel_to_alpha */
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        /* morekeys_c */ "\u010D,\u0107,\u00E7",
+        /* double_quotes */ "!text/double_9qm_rqm",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_rqm",
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        /* morekeys_s */ "\u0161,\u015B,\u00DF",
+        /* keyspec_currency */ null,
+        /* morekeys_y */ null,
+        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u0111",
+        // 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
+        /* morekeys_z */ "\u017E,\u017A,\u017C",
+        /* morekeys_t ~ */
+        null, null, null,
+        /* ~ morekeys_g */
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+    };
+
+    /* Locale hu: Hungarian */
+    private static final String[] TEXTS_hu = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F6,\u0151,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FA,\u00FC,\u0171,\u00FB,\u00F9,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // 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
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_rqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_g */
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+    };
+
+    /* Locale hy_AM: Armenian (Armenia) */
+    private static final String[] TEXTS_hy_AM = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
+        // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
+        // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
+        /* keylabel_to_alpha */ "\u0531\u0532\u0533",
+        /* morekeys_c ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null,
+        /* ~ morekeys_nordic_row2_11 */
+        // U+055E: "՞" ARMENIAN QUESTION MARK
+        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+        // U+055A: "՚" ARMENIAN APOSTROPHE
+        // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+        // U+055D: "՝" ARMENIAN COMMA
+        // U+055B: "՛" ARMENIAN EMPHASIS MARK
+        // U+058A: "֊" ARMENIAN HYPHEN
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+055F: "՟" ARMENIAN ABBREVIATION MARK
+        /* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:",
+        /* keyspec_tablet_comma */ "\u055D",
+        /* keyspec_swiss_row1_11 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
+        /* ~ keyspec_right_single_angle_quote */
+        // U+058F: "֏" ARMENIAN DRAM SIGN
+        // TODO: Enable this when we have glyph for the following letter
+        // <string name="keyspec_currency">&#x058F;</string>
+        // 
+        // U+055D: "՝" ARMENIAN COMMA
+        /* keyspec_comma */ "\u055D",
+        /* morekeys_tablet_comma */ null,
+        /* keyhintlabel_period */ null,
+        /* morekeys_tablet_period */ "!text/morekeys_punctuation",
+        // U+055E: "՞" ARMENIAN QUESTION MARK
+        // U+00BF: "¿" INVERTED QUESTION MARK
+        /* morekeys_question */ "\u055E,\u00BF",
+        /* morekeys_h ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null,
+        /* ~ keyhintlabel_tablet_comma */
+        // U+0589: "։" ARMENIAN FULL STOP
+        /* keyspec_period */ "\u0589",
+        /* morekeys_period */ null,
+        /* keyspec_tablet_period */ "\u0589",
+        /* keyhintlabel_tablet_period ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
+        /* ~ morekeys_greater_than */
+        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+        // U+00A1: "¡" INVERTED EXCLAMATION MARK
+        /* morekeys_exclamation */ "\u055C,\u00A1",
+    };
+
+    /* Locale is: Icelandic */
+    private static final String[] TEXTS_is = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E4,\u00E6,\u00E5,\u00E0,\u00E2,\u00E3,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00EB,\u00E8,\u00EA,\u0119,\u0117,\u0113",
+        // 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
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        /* morekeys_s */ null,
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        /* morekeys_d */ "\u00F0",
+        /* morekeys_z */ null,
+        // U+00FE: "þ" LATIN SMALL LETTER THORN
+        /* morekeys_t */ "\u00FE",
+    };
+
+    /* Locale it: Italian */
+    private static final String[] TEXTS_it = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101,\u00AA",
+        // 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
+        /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F6,\u00F5,\u0153,\u00F8,\u014D,\u00BA",
+        // 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
+        /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        // 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
+        /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u012F,\u012B",
+        /* keylabel_to_alpha ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
+        /* ~ keyspec_tablet_comma */
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        /* keyspec_swiss_row1_11 */ "\u00FC",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* keyspec_swiss_row2_10 */ "\u00F6",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* keyspec_swiss_row2_11 */ "\u00E4",
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        /* morekeys_swiss_row1_11 */ "\u00E8",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        /* morekeys_swiss_row2_10 */ "\u00E9",
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        /* morekeys_swiss_row2_11 */ "\u00E0",
+    };
+
+    /* Locale iw: Hebrew */
+    private static final String[] TEXTS_iw = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+05D0: "א" HEBREW LETTER ALEF
+        // U+05D1: "ב" HEBREW LETTER BET
+        // U+05D2: "ג" HEBREW LETTER GIMEL
+        /* keylabel_to_alpha */ "\u05D0\u05D1\u05D2",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_rqm_9qm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_rqm_9qm",
+        /* morekeys_s */ null,
+        // U+20AA: "₪" NEW SHEQEL SIGN
+        /* keyspec_currency */ "\u20AA",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null,
+        /* ~ morekeys_swiss_row2_11 */
+        // U+2605: "★" BLACK STAR
+        /* morekeys_star */ "\u2605",
+        // The all letters need to be mirrored are found at
+        // http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
+        // 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
+        /* keyspec_left_parenthesis */ "(|)",
+        /* keyspec_right_parenthesis */ ")|(",
+        /* keyspec_left_square_bracket */ "[|]",
+        /* keyspec_right_square_bracket */ "]|[",
+        /* keyspec_left_curly_bracket */ "{|}",
+        /* keyspec_right_curly_bracket */ "}|{",
+        /* keyspec_less_than */ "<|>",
+        /* keyspec_greater_than */ ">|<",
+        /* keyspec_less_than_equal */ "\u2264|\u2265",
+        /* keyspec_greater_than_equal */ "\u2265|\u2264",
+        /* keyspec_left_double_angle_quote */ "\u00AB|\u00BB",
+        /* keyspec_right_double_angle_quote */ "\u00BB|\u00AB",
+        /* keyspec_left_single_angle_quote */ "\u2039|\u203A",
+        /* keyspec_right_single_angle_quote */ "\u203A|\u2039",
+        /* keyspec_comma ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_currency_dollar */
+        // U+00B1: "±" PLUS-MINUS SIGN
+        // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
+        /* morekeys_plus */ "\u00B1,\uFB29",
+    };
+
+    /* Locale ka_GE: Georgian (Georgia) */
+    private static final String[] TEXTS_ka_GE = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+10D0: "ა" GEORGIAN LETTER AN
+        // U+10D1: "ბ" GEORGIAN LETTER BAN
+        // U+10D2: "გ" GEORGIAN LETTER GAN
+        /* keylabel_to_alpha */ "\u10D0\u10D1\u10D2",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+    };
+
+    /* Locale kk: Kazakh */
+    private static final String[] TEXTS_kk = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null,
+        /* ~ morekeys_k */
+        // U+0451: "ё" CYRILLIC SMALL LETTER IO
+        /* morekeys_cyrillic_ie */ "\u0451",
+        /* keyspec_nordic_row1_11 ~ */
+        null, null, null, null,
+        /* ~ morekeys_nordic_row2_10 */
+        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+        /* keyspec_east_slavic_row1_9 */ "\u0449",
+        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+        /* keyspec_east_slavic_row2_2 */ "\u044B",
+        // U+044D: "э" CYRILLIC SMALL LETTER E
+        /* keyspec_east_slavic_row2_11 */ "\u044D",
+        // U+0438: "и" CYRILLIC SMALL LETTER I
+        /* keyspec_east_slavic_row3_5 */ "\u0438",
+        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+        /* morekeys_cyrillic_soft_sign */ "\u044A",
+        /* keyspec_symbols_1 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_w */
+        // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+        /* morekeys_east_slavic_row2_2 */ "\u0456",
+        // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
+        // U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+        /* morekeys_cyrillic_u */ "\u04AF,\u04B1",
+        // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
+        /* morekeys_cyrillic_en */ "\u04A3",
+        // U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE
+        /* morekeys_cyrillic_ghe */ "\u0493",
+        // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+        /* morekeys_cyrillic_o */ "\u04E9",
+        /* morekeys_cyrillic_i ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_x */
+        // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA
+        /* morekeys_east_slavic_row2_11 */ "\u04BB",
+        // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER
+        /* morekeys_cyrillic_ka */ "\u049B",
+        // U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA
+        /* morekeys_cyrillic_a */ "\u04D9",
+    };
+
+    /* Locale km_KH: Khmer (Cambodia) */
+    private static final String[] TEXTS_km_KH = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+1780: "ក" KHMER LETTER KA
+        // U+1781: "ខ" KHMER LETTER KHA
+        // U+1782: "គ" KHMER LETTER KO
+        /* keylabel_to_alpha */ "\u1780\u1781\u1782",
+        /* morekeys_c ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_a */
+        // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
+        /* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
+    };
+
+    /* Locale kn_IN: Kannada (India) */
+    private static final String[] TEXTS_kn_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0C85: "ಅ" KANNADA LETTER A
+        // U+0C86: "ಆ" KANNADA LETTER AA
+        // U+0C87: "ಇ" KANNADA LETTER I
+        /* keylabel_to_alpha */ "\u0C85\u0C86\u0C87",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+    };
+
+    /* Locale ky: Kirghiz */
+    private static final String[] TEXTS_ky = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null,
+        /* ~ morekeys_k */
+        // U+0451: "ё" CYRILLIC SMALL LETTER IO
+        /* morekeys_cyrillic_ie */ "\u0451",
+        /* keyspec_nordic_row1_11 ~ */
+        null, null, null, null,
+        /* ~ morekeys_nordic_row2_10 */
+        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+        /* keyspec_east_slavic_row1_9 */ "\u0449",
+        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+        /* keyspec_east_slavic_row2_2 */ "\u044B",
+        // U+044D: "э" CYRILLIC SMALL LETTER E
+        /* keyspec_east_slavic_row2_11 */ "\u044D",
+        // U+0438: "и" CYRILLIC SMALL LETTER I
+        /* keyspec_east_slavic_row3_5 */ "\u0438",
+        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+        /* morekeys_cyrillic_soft_sign */ "\u044A",
+        /* keyspec_symbols_1 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_east_slavic_row2_2 */
+        // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
+        /* morekeys_cyrillic_u */ "\u04AF",
+        // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
+        /* morekeys_cyrillic_en */ "\u04A3",
+        /* morekeys_cyrillic_ghe */ null,
+        // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+        /* morekeys_cyrillic_o */ "\u04E9",
+    };
+
+    /* Locale lo_LA: Lao (Laos) */
+    private static final String[] TEXTS_lo_LA = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0E81: "ກ" LAO LETTER KO
+        // U+0E82: "ຂ" LAO LETTER KHO SUNG
+        // U+0E84: "ຄ" LAO LETTER KHO TAM
+        /* keylabel_to_alpha */ "\u0E81\u0E82\u0E84",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20AD: "₭" KIP SIGN
+        /* keyspec_currency */ "\u20AD",
+    };
+
+    /* Locale lt: Lithuanian */
+    private static final String[] TEXTS_lt = {
+        // 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
+        /* morekeys_a */ "\u0105,\u00E4,\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E5,\u00E6",
+        // 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
+        /* morekeys_o */ "\u00F6,\u00F5,\u00F2,\u00F3,\u00F4,\u0153,\u0151,\u00F8",
+        // 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
+        /* morekeys_u */ "\u016B,\u0173,\u00FC,\u016B,\u00F9,\u00FA,\u00FB,\u016F,\u0171",
+        // 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
+        /* morekeys_e */ "\u0117,\u0119,\u0113,\u00E8,\u00E9,\u00EA,\u00EB,\u011B",
+        // 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
+        /* morekeys_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+        /* keylabel_to_alpha */ null,
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u00E7,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // 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
+        /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
+        // 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
+        /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        /* morekeys_t */ "\u0163,\u0165",
+        // 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
+        /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E",
+        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+        /* morekeys_g */ "\u0123,\u011F",
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
+        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+        /* morekeys_r */ "\u0157,\u0159,\u0155",
+        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+        /* morekeys_k */ "\u0137",
+    };
+
+    /* Locale lv: Latvian */
+    private static final String[] TEXTS_lv = {
+        // 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
+        /* morekeys_a */ "\u0101,\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0105",
+        // 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
+        /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u0153,\u0151,\u00F8",
+        // 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
+        /* morekeys_u */ "\u016B,\u0173,\u00F9,\u00FA,\u00FB,\u00FC,\u016F,\u0171",
+        // 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
+        /* morekeys_e */ "\u0113,\u0117,\u00E8,\u00E9,\u00EA,\u00EB,\u0119,\u011B",
+        // 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
+        /* morekeys_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
+        /* keylabel_to_alpha */ null,
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u00E7,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // 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
+        /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
+        // 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
+        /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        /* morekeys_t */ "\u0163,\u0165",
+        // 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
+        /* morekeys_l */ "\u013C,\u0142,\u013A,\u013E",
+        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+        /* morekeys_g */ "\u0123,\u011F",
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
+        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+        /* morekeys_r */ "\u0157,\u0159,\u0155",
+        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+        /* morekeys_k */ "\u0137",
+    };
+
+    /* Locale mk: Macedonian */
+    private static final String[] TEXTS_mk = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_k */
+        // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
+        /* morekeys_cyrillic_ie */ "\u0450",
+        /* keyspec_nordic_row1_11 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_o */
+        // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+        /* morekeys_cyrillic_i */ "\u045D",
+        // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
+        /* keyspec_south_slavic_row1_6 */ "\u0455",
+        // U+045C: "ќ" CYRILLIC SMALL LETTER KJE
+        /* keyspec_south_slavic_row2_11 */ "\u045C",
+        // U+0437: "з" CYRILLIC SMALL LETTER ZE
+        /* keyspec_south_slavic_row3_1 */ "\u0437",
+        // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE
+        /* keyspec_south_slavic_row3_8 */ "\u0453",
+    };
+
+    /* Locale ml_IN: Malayalam (India) */
+    private static final String[] TEXTS_ml_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0D05: "അ" MALAYALAM LETTER A
+        /* keylabel_to_alpha */ "\u0D05",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+    };
+
+    /* Locale mn_MN: Mongolian (Mongolia) */
+    private static final String[] TEXTS_mn_MN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20AE: "₮" TUGRIK SIGN
+        /* keyspec_currency */ "\u20AE",
+    };
+
+    /* Locale mr_IN: Marathi (India) */
+    private static final String[] TEXTS_mr_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0915: "क" DEVANAGARI LETTER KA
+        // U+0916: "ख" DEVANAGARI LETTER KHA
+        // U+0917: "ग" DEVANAGARI LETTER GA
+        /* keylabel_to_alpha */ "\u0915\u0916\u0917",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
+        // U+0967: "१" DEVANAGARI DIGIT ONE
+        /* keyspec_symbols_1 */ "\u0967",
+        // U+0968: "२" DEVANAGARI DIGIT TWO
+        /* keyspec_symbols_2 */ "\u0968",
+        // U+0969: "३" DEVANAGARI DIGIT THREE
+        /* keyspec_symbols_3 */ "\u0969",
+        // U+096A: "४" DEVANAGARI DIGIT FOUR
+        /* keyspec_symbols_4 */ "\u096A",
+        // U+096B: "५" DEVANAGARI DIGIT FIVE
+        /* keyspec_symbols_5 */ "\u096B",
+        // U+096C: "६" DEVANAGARI DIGIT SIX
+        /* keyspec_symbols_6 */ "\u096C",
+        // U+096D: "७" DEVANAGARI DIGIT SEVEN
+        /* keyspec_symbols_7 */ "\u096D",
+        // U+096E: "८" DEVANAGARI DIGIT EIGHT
+        /* keyspec_symbols_8 */ "\u096E",
+        // U+096F: "९" DEVANAGARI DIGIT NINE
+        /* keyspec_symbols_9 */ "\u096F",
+        // U+0966: "०" DEVANAGARI DIGIT ZERO
+        /* keyspec_symbols_0 */ "\u0966",
+        // Label for "switch to symbols" key.
+        /* keylabel_to_symbol */ "?\u0967\u0968\u0969",
+        /* additional_morekeys_symbols_1 */ "1",
+        /* additional_morekeys_symbols_2 */ "2",
+        /* additional_morekeys_symbols_3 */ "3",
+        /* additional_morekeys_symbols_4 */ "4",
+        /* additional_morekeys_symbols_5 */ "5",
+        /* additional_morekeys_symbols_6 */ "6",
+        /* additional_morekeys_symbols_7 */ "7",
+        /* additional_morekeys_symbols_8 */ "8",
+        /* additional_morekeys_symbols_9 */ "9",
+        /* additional_morekeys_symbols_0 */ "0",
+    };
+
+    /* Locale my_MM: Burmese (Myanmar) */
+    private static final String[] TEXTS_my_MM = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+1000: "က" MYANMAR LETTER KA
+        // U+1001: "ခ" MYANMAR LETTER KHA
+        // U+1002: "ဂ" MYANMAR LETTER GA
+        /* keylabel_to_alpha */ "\u1000\u1001\u1002",
+        /* morekeys_c ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null,
+        /* ~ morekeys_nordic_row2_11 */
+        /* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
+        // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+        // U+104B: "။" MYANMAR SIGN SECTION
+        /* keyspec_tablet_comma */ "\u104A",
+        /* keyspec_swiss_row1_11 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
+        /* ~ keyspec_comma */
+        /* morekeys_tablet_comma */ "\\,",
+        /* keyhintlabel_period */ "\u104A",
+        /* morekeys_tablet_period ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ keyspec_south_slavic_row3_8 */
+        /* morekeys_tablet_punctuation */ "!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&",
+        /* keyspec_spanish_row2_10 ~ */
+        null, null, null, null, null, null,
+        /* ~ keyhintlabel_tablet_comma */
+        /* keyspec_period */ "\u104B",
+        /* morekeys_period */ null,
+        /* keyspec_tablet_period */ "\u104B",
+    };
+
+    /* Locale nb: Norwegian Bokmål */
+    private static final String[] TEXTS_nb = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
+        /* morekeys_i ~ */
+        null, null, null,
+        /* ~ morekeys_c */
+        /* double_quotes */ "!text/double_9qm_rqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_ie */
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        /* keyspec_nordic_row1_11 */ "\u00E5",
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        /* keyspec_nordic_row2_10 */ "\u00F8",
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        /* keyspec_nordic_row2_11 */ "\u00E6",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* morekeys_nordic_row2_10 */ "\u00F6",
+        /* keyspec_east_slavic_row1_9 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* morekeys_nordic_row2_11 */ "\u00E4",
+    };
+
+    /* Locale ne_NP: Nepali (Nepal) */
+    private static final String[] TEXTS_ne_NP = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0915: "क" DEVANAGARI LETTER KA
+        // U+0916: "ख" DEVANAGARI LETTER KHA
+        // U+0917: "ग" DEVANAGARI LETTER GA
+        /* keylabel_to_alpha */ "\u0915\u0916\u0917",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
+        /* keyspec_currency */ "\u0930\u0941.",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null,
+        /* ~ morekeys_cyrillic_soft_sign */
+        // U+0967: "१" DEVANAGARI DIGIT ONE
+        /* keyspec_symbols_1 */ "\u0967",
+        // U+0968: "२" DEVANAGARI DIGIT TWO
+        /* keyspec_symbols_2 */ "\u0968",
+        // U+0969: "३" DEVANAGARI DIGIT THREE
+        /* keyspec_symbols_3 */ "\u0969",
+        // U+096A: "४" DEVANAGARI DIGIT FOUR
+        /* keyspec_symbols_4 */ "\u096A",
+        // U+096B: "५" DEVANAGARI DIGIT FIVE
+        /* keyspec_symbols_5 */ "\u096B",
+        // U+096C: "६" DEVANAGARI DIGIT SIX
+        /* keyspec_symbols_6 */ "\u096C",
+        // U+096D: "७" DEVANAGARI DIGIT SEVEN
+        /* keyspec_symbols_7 */ "\u096D",
+        // U+096E: "८" DEVANAGARI DIGIT EIGHT
+        /* keyspec_symbols_8 */ "\u096E",
+        // U+096F: "९" DEVANAGARI DIGIT NINE
+        /* keyspec_symbols_9 */ "\u096F",
+        // U+0966: "०" DEVANAGARI DIGIT ZERO
+        /* keyspec_symbols_0 */ "\u0966",
+        // Label for "switch to symbols" key.
+        /* keylabel_to_symbol */ "?\u0967\u0968\u0969",
+        /* additional_morekeys_symbols_1 */ "1",
+        /* additional_morekeys_symbols_2 */ "2",
+        /* additional_morekeys_symbols_3 */ "3",
+        /* additional_morekeys_symbols_4 */ "4",
+        /* additional_morekeys_symbols_5 */ "5",
+        /* additional_morekeys_symbols_6 */ "6",
+        /* additional_morekeys_symbols_7 */ "7",
+        /* additional_morekeys_symbols_8 */ "8",
+        /* additional_morekeys_symbols_9 */ "9",
+        /* additional_morekeys_symbols_0 */ "0",
+    };
+
+    /* Locale nl: Dutch */
+    private static final String[] TEXTS_nl = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E4,\u00E2,\u00E0,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FA,\u00FC,\u00FB,\u00F9,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00EB,\u00EA,\u00E8,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
+        /* keylabel_to_alpha */ null,
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_rqm",
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_rqm",
+        /* morekeys_s */ null,
+        /* keyspec_currency */ null,
+        // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_y */ "\u0133",
+    };
+
+    /* Locale pl: Polish */
+    private static final String[] TEXTS_pl = {
+        // 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
+        /* morekeys_a */ "\u0105,\u00E1,\u00E0,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F6,\u00F4,\u00F2,\u00F5,\u0153,\u00F8,\u014D",
+        /* morekeys_u */ null,
+        // 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
+        /* morekeys_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
+        /* morekeys_i */ null,
+        /* keylabel_to_alpha */ null,
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u0107,\u00E7,\u010D",
+        /* double_quotes */ "!text/double_9qm_rqm",
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u0144,\u00F1",
+        /* single_quotes */ "!text/single_9qm_rqm",
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        /* morekeys_s */ "\u015B,\u00DF,\u0161",
+        /* keyspec_currency ~ */
+        null, null, null,
+        /* ~ morekeys_d */
+        // 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
+        /* morekeys_z */ "\u017C,\u017A,\u017E",
+        /* morekeys_t */ null,
+        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+        /* morekeys_l */ "\u0142",
+    };
+
+    /* Locale pt: Portuguese */
+    private static final String[] TEXTS_pt = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E3,\u00E0,\u00E2,\u00E4,\u00E5,\u00E6,\u00AA",
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F5,\u00F4,\u00F2,\u00F6,\u0153,\u00F8,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00EA,\u00E8,\u0119,\u0117,\u0113,\u00EB",
+        // 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
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u00E7,\u010D,\u0107",
+    };
+
+    /* Locale rm: Raeto-Romance */
+    private static final String[] TEXTS_rm = {
+        /* morekeys_a */ null,
+        // 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
+        /* morekeys_o */ "\u00F2,\u00F3,\u00F6,\u00F4,\u00F5,\u0153,\u00F8",
+    };
+
+    /* Locale ro: Romanian */
+    private static final String[] TEXTS_ro = {
+        // 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
+        /* morekeys_a */ "\u00E2,\u00E3,\u0103,\u00E0,\u00E1,\u00E4,\u00E6,\u00E5,\u0101",
+        /* morekeys_o ~ */
+        null, null, null,
+        /* ~ morekeys_e */
+        // 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
+        /* morekeys_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_rqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
+        // 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
+        /* morekeys_s */ "\u0219,\u00DF,\u015B,\u0161",
+        /* keyspec_currency ~ */
+        null, null, null, null,
+        /* ~ morekeys_z */
+        // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
+        /* morekeys_t */ "\u021B",
+    };
+
+    /* Locale ru: Russian */
+    private static final String[] TEXTS_ru = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_k */
+        // U+0451: "ё" CYRILLIC SMALL LETTER IO
+        /* morekeys_cyrillic_ie */ "\u0451",
+        /* keyspec_nordic_row1_11 ~ */
+        null, null, null, null,
+        /* ~ morekeys_nordic_row2_10 */
+        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+        /* keyspec_east_slavic_row1_9 */ "\u0449",
+        // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+        /* keyspec_east_slavic_row2_2 */ "\u044B",
+        // U+044D: "э" CYRILLIC SMALL LETTER E
+        /* keyspec_east_slavic_row2_11 */ "\u044D",
+        // U+0438: "и" CYRILLIC SMALL LETTER I
+        /* keyspec_east_slavic_row3_5 */ "\u0438",
+        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+        /* morekeys_cyrillic_soft_sign */ "\u044A",
+    };
+
+    /* Locale si_LK: Sinhalese (Sri Lanka) */
+    private static final String[] TEXTS_si_LK = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0D85: "අ" SINHALA LETTER AYANNA
+        // U+0D86: "ආ" SINHALA LETTER AAYANNA
+        /* keylabel_to_alpha */ "\u0D85,\u0D86",
+    };
+
+    /* Locale sk: Slovak */
+    private static final String[] TEXTS_sk = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E4,\u0101,\u00E0,\u00E2,\u00E3,\u00E5,\u00E6,\u0105",
+        // 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
+        /* morekeys_o */ "\u00F4,\u00F3,\u00F6,\u00F2,\u00F5,\u0153,\u0151,\u00F8",
+        // 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
+        /* morekeys_u */ "\u00FA,\u016F,\u00FC,\u016B,\u0173,\u00F9,\u00FB,\u0171",
+        // 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
+        /* morekeys_e */ "\u00E9,\u011B,\u0113,\u0117,\u00E8,\u00EA,\u00EB,\u0119",
+        // 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
+        /* morekeys_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
+        /* keylabel_to_alpha */ null,
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u00E7,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u0148,\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // 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
+        /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u010F",
+        // 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
+        /* morekeys_z */ "\u017E,\u017C,\u017A",
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+        /* morekeys_t */ "\u0165,\u0163",
+        // 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
+        /* morekeys_l */ "\u013E,\u013A,\u013C,\u0142",
+        // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+        /* morekeys_g */ "\u0123,\u011F",
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+        /* morekeys_r */ "\u0155,\u0159,\u0157",
+        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+        /* morekeys_k */ "\u0137",
+    };
+
+    /* Locale sl: Slovenian */
+    private static final String[] TEXTS_sl = {
+        /* morekeys_a ~ */
+        null, null, null, null, null, null,
+        /* ~ keylabel_to_alpha */
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        /* morekeys_c */ "\u010D,\u0107",
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        /* morekeys_s */ "\u0161",
+        /* keyspec_currency */ null,
+        /* morekeys_y */ null,
+        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u0111",
+        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+        /* morekeys_z */ "\u017E",
+        /* morekeys_t ~ */
+        null, null, null,
+        /* ~ morekeys_g */
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+    };
+
+    /* Locale sr: Serbian */
+    private static final String[] TEXTS_sr = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // END: More keys definitions for Serbian (Cyrillic)
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        /* morekeys_s ~ */
+        null, null, null, null, null, null, null, null,
+        /* ~ morekeys_g */
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+        /* morekeys_r */ null,
+        /* morekeys_k */ null,
+        // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
+        /* morekeys_cyrillic_ie */ "\u0450",
+        /* keyspec_nordic_row1_11 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null,
+        /* ~ morekeys_cyrillic_o */
+        // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+        /* morekeys_cyrillic_i */ "\u045D",
+        // TODO: Move these to sr-Latn once we can handle IETF language tag with script name specified.
+        // BEGIN: More keys definitions for Serbian (Latin)
+        // 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="morekeys_s">&#x0161;,&#x00DF;,&#x015B;</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="morekeys_c">&#x010D;,&#x00E7;,&#x0107;</string>
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        // <string name="morekeys_d">&#x010F;</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="morekeys_z">&#x017E;,&#x017A;,&#x017C;</string>
+        // END: More keys definitions for Serbian (Latin)
+        // BEGIN: More keys definitions for Serbian (Cyrillic)
+        // U+0437: "з" CYRILLIC SMALL LETTER ZE
+        /* keyspec_south_slavic_row1_6 */ "\u0437",
+        // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE
+        /* keyspec_south_slavic_row2_11 */ "\u045B",
+        // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
+        /* keyspec_south_slavic_row3_1 */ "\u0455",
+        // U+0452: "ђ" CYRILLIC SMALL LETTER DJE
+        /* keyspec_south_slavic_row3_8 */ "\u0452",
+    };
+
+    /* Locale sv: Swedish */
+    private static final String[] TEXTS_sv = {
+        // 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+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+        /* morekeys_o */ "\u00F3,\u00F2,\u00F4,\u00F5,\u014D",
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FC,\u00FA,\u00F9,\u00FB,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        /* morekeys_i */ "\u00ED,\u00EC,\u00EE,\u00EF",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        /* morekeys_n */ "\u0144,\u00F1,\u0148",
+        /* single_quotes */ null,
+        // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+        // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+        // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        /* morekeys_s */ "\u015B,\u0161,\u015F,\u00DF",
+        /* keyspec_currency */ null,
+        // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+        // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+        /* morekeys_y */ "\u00FD,\u00FF",
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        /* morekeys_d */ "\u00F0,\u010F",
+        // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+        // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+        /* morekeys_z */ "\u017A,\u017E,\u017C",
+        // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+        // U+00FE: "þ" LATIN SMALL LETTER THORN
+        /* morekeys_t */ "\u0165,\u00FE",
+        // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+        /* morekeys_l */ "\u0142",
+        /* morekeys_g */ null,
+        /* single_angle_quotes */ "!text/single_raqm_laqm",
+        /* double_angle_quotes */ "!text/double_raqm_laqm",
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        /* morekeys_r */ "\u0159",
+        /* morekeys_k */ null,
+        /* morekeys_cyrillic_ie */ null,
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        /* keyspec_nordic_row1_11 */ "\u00E5",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        /* keyspec_nordic_row2_10 */ "\u00F6",
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        /* keyspec_nordic_row2_11 */ "\u00E4",
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "œ" LATIN SMALL LIGATURE OE
+        /* morekeys_nordic_row2_10 */ "\u00F8,\u0153",
+        /* keyspec_east_slavic_row1_9 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ additional_morekeys_symbols_0 */
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        /* morekeys_nordic_row2_11 */ "\u00E6",
+    };
+
+    /* Locale sw: Swahili */
+    private static final String[] TEXTS_sw = {
+        // This is the same as English except morekeys_g.
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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
+        /* morekeys_o */ "\u00F4,\u00F6,\u00F2,\u00F3,\u0153,\u00F8,\u014D,\u00F5",
+        // 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
+        /* morekeys_u */ "\u00FB,\u00FC,\u00F9,\u00FA,\u016B",
+        // 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
+        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113",
+        // 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
+        /* morekeys_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        /* morekeys_c */ "\u00E7",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u00F1",
+        /* single_quotes */ null,
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        /* morekeys_s */ "\u00DF",
+        /* keyspec_currency ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_l */
+        /* morekeys_g */ "g\'",
+    };
+
+    /* Locale ta_IN: Tamil (India) */
+    private static final String[] TEXTS_ta_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0BA4: "த" TAMIL LETTER TA
+        // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
+        // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
+        /* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+0BF9: "௹" TAMIL RUPEE SIGN
+        /* keyspec_currency */ "\u0BF9",
+    };
+
+    /* Locale te_IN: Telugu (India) */
+    private static final String[] TEXTS_te_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0C05: "అ" TELUGU LETTER A
+        // U+0C06: "ఆ" TELUGU LETTER AA
+        // U+0C07: "ఇ" TELUGU LETTER I
+        /* keylabel_to_alpha */ "\u0C05\u0C06\u0C07",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+    };
+
+    /* Locale th: Thai */
+    private static final String[] TEXTS_th = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0E01: "ก" THAI CHARACTER KO KAI
+        // U+0E02: "ข" THAI CHARACTER KHO KHAI
+        // U+0E04: "ค" THAI CHARACTER KHO KHWAI
+        /* keylabel_to_alpha */ "\u0E01\u0E02\u0E04",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
+        /* keyspec_currency */ "\u0E3F",
+    };
+
+    /* Locale tl: Tagalog */
+    private static final String[] TEXTS_tl = {
+        // 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
+        /* morekeys_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "œ" LATIN SMALL LIGATURE OE
+        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+        /* morekeys_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+        // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        /* morekeys_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* morekeys_n */ "\u00F1,\u0144",
+    };
+
+    /* Locale tr: Turkish */
+    private static final String[] TEXTS_tr = {
+        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+        /* morekeys_a */ "\u00E2",
+        // 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
+        /* morekeys_o */ "\u00F6,\u00F4,\u0153,\u00F2,\u00F3,\u00F5,\u00F8,\u014D",
+        // 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
+        /* morekeys_u */ "\u00FC,\u00FB,\u00F9,\u00FA,\u016B",
+        /* morekeys_e */ null,
+        // 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
+        /* morekeys_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes ~ */
+        null, null, null,
+        /* ~ single_quotes */
+        // 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
+        /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
+        /* keyspec_currency ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_l */
+        // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+        /* morekeys_g */ "\u011F",
+    };
+
+    /* Locale uk: Ukrainian */
+    private static final String[] TEXTS_uk = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        /* keylabel_to_alpha */ "\u0410\u0411\u0412",
+        /* morekeys_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* morekeys_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
+        /* morekeys_s */ null,
+        // U+20B4: "₴" HRYVNIA SIGN
+        /* keyspec_currency */ "\u20B4",
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_nordic_row2_10 */
+        // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+        /* keyspec_east_slavic_row1_9 */ "\u0449",
+        // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+        /* keyspec_east_slavic_row2_2 */ "\u0456",
+        // U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE
+        /* keyspec_east_slavic_row2_11 */ "\u0454",
+        // U+0438: "и" CYRILLIC SMALL LETTER I
+        /* keyspec_east_slavic_row3_5 */ "\u0438",
+        // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+        /* morekeys_cyrillic_soft_sign */ "\u044A",
+        /* keyspec_symbols_1 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null,
+        /* ~ morekeys_w */
+        // U+0457: "ї" CYRILLIC SMALL LETTER YI
+        /* morekeys_east_slavic_row2_2 */ "\u0457",
+        /* morekeys_cyrillic_u */ null,
+        /* morekeys_cyrillic_en */ null,
+        // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN
+        /* morekeys_cyrillic_ghe */ "\u0491",
+    };
+
+    /* Locale vi: Vietnamese */
+    private static final String[] TEXTS_vi = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u1EA3,\u00E3,\u1EA1,\u0103,\u1EB1,\u1EAF,\u1EB3,\u1EB5,\u1EB7,\u00E2,\u1EA7,\u1EA5,\u1EA9,\u1EAB,\u1EAD",
+        // 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
+        /* morekeys_o */ "\u00F2,\u00F3,\u1ECF,\u00F5,\u1ECD,\u00F4,\u1ED3,\u1ED1,\u1ED5,\u1ED7,\u1ED9,\u01A1,\u1EDD,\u1EDB,\u1EDF,\u1EE1,\u1EE3",
+        // 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
+        /* morekeys_u */ "\u00F9,\u00FA,\u1EE7,\u0169,\u1EE5,\u01B0,\u1EEB,\u1EE9,\u1EED,\u1EEF,\u1EF1",
+        // 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
+        /* morekeys_e */ "\u00E8,\u00E9,\u1EBB,\u1EBD,\u1EB9,\u00EA,\u1EC1,\u1EBF,\u1EC3,\u1EC5,\u1EC7",
+        // 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
+        /* morekeys_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
+        /* keylabel_to_alpha ~ */
+        null, null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20AB: "₫" DONG SIGN
+        /* keyspec_currency */ "\u20AB",
+        // 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
+        /* morekeys_y */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5",
+        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+        /* morekeys_d */ "\u0111",
+    };
+
+    /* Locale zu: Zulu */
+    private static final String[] TEXTS_zu = {
+        // This is the same as English
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E4,\u00E6,\u00E3,\u00E5,\u0101",
+        // 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+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // 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
+        /* morekeys_o */ "\u00F3,\u00F4,\u00F6,\u00F2,\u0153,\u00F8,\u014D,\u00F5",
+        // 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* morekeys_u */ "\u00FA,\u00FB,\u00FC,\u00F9,\u016B",
+        // 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+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* morekeys_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0113",
+        // 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+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        /* morekeys_i */ "\u00ED,\u00EE,\u00EF,\u012B,\u00EC",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        /* morekeys_c */ "\u00E7",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        /* morekeys_n */ "\u00F1",
+        /* single_quotes */ null,
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        /* morekeys_s */ "\u00DF",
+    };
+
+    /* Locale zz: Alphabet */
+    private static final String[] TEXTS_zz = {
+        // 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
+        /* morekeys_a */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0101,\u0103,\u0105,\u00AA",
+        // 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
+        /* morekeys_o */ "\u00F2,\u00F3,\u00F4,\u00F5,\u00F6,\u00F8,\u014D,\u014F,\u0151,\u0153,\u00BA",
+        // 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
+        /* morekeys_u */ "\u00F9,\u00FA,\u00FB,\u00FC,\u0169,\u016B,\u016D,\u016F,\u0171,\u0173",
+        // 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
+        /* morekeys_e */ "\u00E8,\u00E9,\u00EA,\u00EB,\u0113,\u0115,\u0117,\u0119,\u011B",
+        // 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: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
+        /* keylabel_to_alpha */ null,
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
+        // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* morekeys_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+        // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+        // U+0149: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+        // U+014B: "ŋ" LATIN SMALL LETTER ENG
+        /* morekeys_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+        /* single_quotes */ null,
+        // 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
+        /* morekeys_s */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F",
+        /* keyspec_currency */ null,
+        // 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: "ĳ" LATIN SMALL LIGATURE IJ
+        /* morekeys_y */ "\u00FD,\u0177,\u00FF,\u0133",
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+        // U+00F0: "ð" LATIN SMALL LETTER ETH
+        /* morekeys_d */ "\u010F,\u0111,\u00F0",
+        // 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
+        /* morekeys_z */ "\u017A,\u017C,\u017E",
+        // 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
+        /* morekeys_t */ "\u00FE,\u0163,\u0165,\u0167",
+        // 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
+        /* morekeys_l */ "\u013A,\u013C,\u013E,\u0140,\u0142",
+        // 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
+        /* morekeys_g */ "\u011D,\u011F,\u0121,\u0123",
+        /* single_angle_quotes */ null,
+        /* double_angle_quotes */ null,
+        // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+        // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+        // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+        /* morekeys_r */ "\u0155,\u0157,\u0159",
+        // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+        // U+0138: "ĸ" LATIN SMALL LETTER KRA
+        /* morekeys_k */ "\u0137,\u0138",
+        /* morekeys_cyrillic_ie ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_question */
+        // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
+        /* morekeys_h */ "\u0125",
+        // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+        /* morekeys_w */ "\u0175",
+        /* morekeys_east_slavic_row2_2 ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null,
+        /* ~ morekeys_v */
+        // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
+        /* morekeys_j */ "\u0135",
+    };
+
+    private static final Object[] LOCALES_AND_TEXTS = {
+    // "locale", TEXT_ARRAY,  /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
+        "DEFAULT", TEXTS_DEFAULT, /* 168/168 DEFAULT */
+        "af"     , TEXTS_af,    /*   7/ 13 Afrikaans */
+        "ar"     , TEXTS_ar,    /*  55/110 Arabic */
+        "az_AZ"  , TEXTS_az_AZ, /*   8/ 18 Azerbaijani (Azerbaijan) */
+        "be_BY"  , TEXTS_be_BY, /*   9/ 32 Belarusian (Belarus) */
+        "bg"     , TEXTS_bg,    /*   2/  8 Bulgarian */
+        "bn_IN"  , TEXTS_bn_IN, /*   2/ 12 Bengali (India) */
+        "ca"     , TEXTS_ca,    /*  11/ 96 Catalan */
+        "cs"     , TEXTS_cs,    /*  17/ 21 Czech */
+        "da"     , TEXTS_da,    /*  19/ 54 Danish */
+        "de"     , TEXTS_de,    /*  16/ 62 German */
+        "el"     , TEXTS_el,    /*   1/  6 Greek */
+        "en"     , TEXTS_en,    /*   8/ 11 English */
+        "eo"     , TEXTS_eo,    /*  26/118 Esperanto */
+        "es"     , TEXTS_es,    /*   8/ 55 Spanish */
+        "et_EE"  , TEXTS_et_EE, /*  22/ 27 Estonian (Estonia) */
+        "eu_ES"  , TEXTS_eu_ES, /*   7/  9 Basque (Spain) */
+        "fa"     , TEXTS_fa,    /*  58/125 Persian */
+        "fi"     , TEXTS_fi,    /*  10/ 54 Finnish */
+        "fr"     , TEXTS_fr,    /*  13/ 62 French */
+        "gl_ES"  , TEXTS_gl_ES, /*   7/  9 Gallegan (Spain) */
+        "hi"     , TEXTS_hi,    /*  23/ 53 Hindi */
+        "hr"     , TEXTS_hr,    /*   9/ 20 Croatian */
+        "hu"     , TEXTS_hu,    /*   9/ 20 Hungarian */
+        "hy_AM"  , TEXTS_hy_AM, /*   9/126 Armenian (Armenia) */
+        "is"     , TEXTS_is,    /*  10/ 16 Icelandic */
+        "it"     , TEXTS_it,    /*  11/ 62 Italian */
+        "iw"     , TEXTS_iw,    /*  20/123 Hebrew */
+        "ka_GE"  , TEXTS_ka_GE, /*   3/ 10 Georgian (Georgia) */
+        "kk"     , TEXTS_kk,    /*  15/121 Kazakh */
+        "km_KH"  , TEXTS_km_KH, /*   2/122 Khmer (Cambodia) */
+        "kn_IN"  , TEXTS_kn_IN, /*   2/ 12 Kannada (India) */
+        "ky"     , TEXTS_ky,    /*  10/ 89 Kirghiz */
+        "lo_LA"  , TEXTS_lo_LA, /*   2/ 12 Lao (Laos) */
+        "lt"     , TEXTS_lt,    /*  18/ 22 Lithuanian */
+        "lv"     , TEXTS_lv,    /*  18/ 22 Latvian */
+        "mk"     , TEXTS_mk,    /*   9/ 94 Macedonian */
+        "ml_IN"  , TEXTS_ml_IN, /*   2/ 12 Malayalam (India) */
+        "mn_MN"  , TEXTS_mn_MN, /*   2/ 12 Mongolian (Mongolia) */
+        "mr_IN"  , TEXTS_mr_IN, /*  23/ 53 Marathi (India) */
+        "my_MM"  , TEXTS_my_MM, /*   8/104 Burmese (Myanmar) */
+        "nb"     , TEXTS_nb,    /*  11/ 54 Norwegian Bokmål */
+        "ne_NP"  , TEXTS_ne_NP, /*  23/ 53 Nepali (Nepal) */
+        "nl"     , TEXTS_nl,    /*   9/ 13 Dutch */
+        "pl"     , TEXTS_pl,    /*  10/ 17 Polish */
+        "pt"     , TEXTS_pt,    /*   6/  7 Portuguese */
+        "rm"     , TEXTS_rm,    /*   1/  2 Raeto-Romance */
+        "ro"     , TEXTS_ro,    /*   6/ 16 Romanian */
+        "ru"     , TEXTS_ru,    /*   9/ 32 Russian */
+        "si_LK"  , TEXTS_si_LK, /*   1/  6 Sinhalese (Sri Lanka) */
+        "sk"     , TEXTS_sk,    /*  20/ 22 Slovak */
+        "sl"     , TEXTS_sl,    /*   8/ 20 Slovenian */
+        "sr"     , TEXTS_sr,    /*  11/ 94 Serbian */
+        "sv"     , TEXTS_sv,    /*  21/ 54 Swedish */
+        "sw"     , TEXTS_sw,    /*   9/ 18 Swahili */
+        "ta_IN"  , TEXTS_ta_IN, /*   2/ 12 Tamil (India) */
+        "te_IN"  , TEXTS_te_IN, /*   2/ 12 Telugu (India) */
+        "th"     , TEXTS_th,    /*   2/ 12 Thai */
+        "tl"     , TEXTS_tl,    /*   7/  9 Tagalog */
+        "tr"     , TEXTS_tr,    /*   7/ 18 Turkish */
+        "uk"     , TEXTS_uk,    /*  11/ 88 Ukrainian */
+        "vi"     , TEXTS_vi,    /*   8/ 14 Vietnamese */
+        "zu"     , TEXTS_zu,    /*   8/ 11 Zulu */
+        "zz"     , TEXTS_zz,    /*  19/112 Alphabet */
+    };
+
+    static {
+        for (int index = 0; index < NAMES.length; index++) {
+            sNameToIndexesMap.put(NAMES[index], index);
+        }
+
+        for (int i = 0; i < LOCALES_AND_TEXTS.length; i += 2) {
+            final String locale = (String)LOCALES_AND_TEXTS[i];
+            final String[] textsTable = (String[])LOCALES_AND_TEXTS[i + 1];
+            sLocaleToTextsTableMap.put(locale, textsTable);
+            sTextsTableToLocaleMap.put(textsTable, locale);
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeysCache.java b/java/src/com/android/inputmethod/keyboard/internal/KeysCache.java
index 7c2e3e1..7743d47 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeysCache.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeysCache.java
@@ -17,12 +17,11 @@
 package com.android.inputmethod.keyboard.internal;
 
 import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.util.HashMap;
 
 public final class KeysCache {
-    private final HashMap<Key, Key> mMap = CollectionUtils.newHashMap();
+    private final HashMap<Key, Key> mMap = new HashMap<>();
 
     public void clear() {
         mMap.clear();
diff --git a/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java b/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
new file mode 100644
index 0000000..6400a24
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelper.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * This class determines that the language name on the spacebar should be displayed in what format.
+ */
+public final class LanguageOnSpacebarHelper {
+    public static final int FORMAT_TYPE_NONE = 0;
+    public static final int FORMAT_TYPE_LANGUAGE_ONLY = 1;
+    public static final int FORMAT_TYPE_FULL_LOCALE = 2;
+
+    private List<InputMethodSubtype> mEnabledSubtypes = Collections.emptyList();
+    private boolean mIsSystemLanguageSameAsInputLanguage;
+
+    public int getLanguageOnSpacebarFormatType(final InputMethodSubtype subtype) {
+        if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
+            return FORMAT_TYPE_FULL_LOCALE;
+        }
+        // Only this subtype is enabled and equals to the system locale.
+        if (mEnabledSubtypes.size() < 2 && mIsSystemLanguageSameAsInputLanguage) {
+            return FORMAT_TYPE_NONE;
+        }
+        final String keyboardLanguage = SubtypeLocaleUtils.getSubtypeLocale(subtype).getLanguage();
+        final String keyboardLayout = SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype);
+        int sameLanguageAndLayoutCount = 0;
+        for (final InputMethodSubtype ims : mEnabledSubtypes) {
+            final String language = SubtypeLocaleUtils.getSubtypeLocale(ims).getLanguage();
+            if (keyboardLanguage.equals(language) && keyboardLayout.equals(
+                    SubtypeLocaleUtils.getKeyboardLayoutSetName(ims))) {
+                sameLanguageAndLayoutCount++;
+            }
+        }
+        // Display full locale name only when there are multiple subtypes that have the same
+        // locale and keyboard layout. Otherwise displaying language name is enough.
+        return sameLanguageAndLayoutCount > 1 ? FORMAT_TYPE_FULL_LOCALE
+                : FORMAT_TYPE_LANGUAGE_ONLY;
+    }
+
+    public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
+        mEnabledSubtypes = enabledSubtypes;
+    }
+
+    public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
+        mIsSystemLanguageSameAsInputLanguage = isSame;
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java
index 110936f..625a0c2 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java
@@ -18,23 +18,42 @@
 
 import android.text.TextUtils;
 
+import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Locale;
 
+/**
+ * The more key specification object. The more keys are an array of {@link MoreKeySpec}.
+ *
+ * The more keys specification is comma separated "key specification" each of which represents one
+ * "more key".
+ * The key specification might have label or string resource reference in it. These references are
+ * expanded before parsing comma.
+ * Special character, comma ',' backslash '\' can be escaped by '\' character.
+ * Note that the '\' is also parsed by XML parser and {@link MoreKeySpec#splitKeySpecs(String)}
+ * as well.
+ */
+// TODO: Should extend the key specification object.
 public final class MoreKeySpec {
     public final int mCode;
     public final String mLabel;
     public final String mOutputText;
     public final int mIconId;
 
-    public MoreKeySpec(final String moreKeySpec, boolean needsToUpperCase, final Locale locale,
-            final KeyboardCodesSet codesSet) {
-        mLabel = KeySpecParser.toUpperCaseOfStringForLocale(
+    public MoreKeySpec(final String moreKeySpec, boolean needsToUpperCase, final Locale locale) {
+        if (TextUtils.isEmpty(moreKeySpec)) {
+            throw new KeySpecParser.KeySpecParserError("Empty more key spec");
+        }
+        mLabel = StringUtils.toUpperCaseOfStringForLocale(
                 KeySpecParser.getLabel(moreKeySpec), needsToUpperCase, locale);
-        final int code = KeySpecParser.toUpperCaseOfCodeForLocale(
-                KeySpecParser.getCode(moreKeySpec, codesSet), needsToUpperCase, locale);
+        final int code = StringUtils.toUpperCaseOfCodeForLocale(
+                KeySpecParser.getCode(moreKeySpec), needsToUpperCase, locale);
         if (code == Constants.CODE_UNSPECIFIED) {
             // Some letter, for example German Eszett (U+00DF: "ß"), has multiple characters
             // upper case representation ("SS").
@@ -42,12 +61,19 @@
             mOutputText = mLabel;
         } else {
             mCode = code;
-            mOutputText = KeySpecParser.toUpperCaseOfStringForLocale(
+            mOutputText = StringUtils.toUpperCaseOfStringForLocale(
                     KeySpecParser.getOutputText(moreKeySpec), needsToUpperCase, locale);
         }
         mIconId = KeySpecParser.getIconId(moreKeySpec);
     }
 
+    public Key buildKey(final int x, final int y, final int labelFlags,
+            final KeyboardParams params) {
+        return new Key(mLabel, mIconId, mCode, mOutputText, null /* hintLabel */, labelFlags,
+                Key.BACKGROUND_TYPE_NORMAL, x, y, params.mDefaultKeyWidth, params.mDefaultRowHeight,
+                params.mHorizontalGap, params.mVerticalGap);
+    }
+
     @Override
     public int hashCode() {
         int hashCode = 1;
@@ -74,7 +100,7 @@
     @Override
     public String toString() {
         final String label = (mIconId == KeyboardIconsSet.ICON_UNDEFINED ? mLabel
-                : KeySpecParser.PREFIX_ICON + KeyboardIconsSet.getIconName(mIconId));
+                : KeyboardIconsSet.PREFIX_ICON + KeyboardIconsSet.getIconName(mIconId));
         final String output = (mCode == Constants.CODE_OUTPUT_TEXT ? mOutputText
                 : Constants.printableCode(mCode));
         if (StringUtils.codePointCount(label) == 1 && label.codePointAt(0) == mCode) {
@@ -83,4 +109,196 @@
             return label + "|" + output;
         }
     }
+
+    private static final boolean DEBUG = DebugFlags.DEBUG_ENABLED;
+    // Constants for parsing.
+    private static final char COMMA = Constants.CODE_COMMA;
+    private static final char BACKSLASH = Constants.CODE_BACKSLASH;
+    private static final String ADDITIONAL_MORE_KEY_MARKER =
+            StringUtils.newSingleCodePointString(Constants.CODE_PERCENT);
+
+    /**
+     * Split the text containing multiple key specifications separated by commas into an array of
+     * key specifications.
+     * A key specification can contain a character escaped by the backslash character, including a
+     * comma character.
+     * Note that an empty key specification will be eliminated from the result array.
+     *
+     * @param text the text containing multiple key specifications.
+     * @return an array of key specification text. Null if the specified <code>text</code> is empty
+     * or has no key specifications.
+     */
+    public static String[] splitKeySpecs(final String text) {
+        if (TextUtils.isEmpty(text)) {
+            return null;
+        }
+        final int size = text.length();
+        // Optimization for one-letter key specification.
+        if (size == 1) {
+            return text.charAt(0) == COMMA ? null : new String[] { text };
+        }
+
+        ArrayList<String> list = null;
+        int start = 0;
+        // The characters in question in this loop are COMMA and BACKSLASH. These characters never
+        // match any high or low surrogate character. So it is OK to iterate through with char
+        // index.
+        for (int pos = 0; pos < size; pos++) {
+            final char c = text.charAt(pos);
+            if (c == COMMA) {
+                // Skip empty entry.
+                if (pos - start > 0) {
+                    if (list == null) {
+                        list = new ArrayList<>();
+                    }
+                    list.add(text.substring(start, pos));
+                }
+                // Skip comma
+                start = pos + 1;
+            } else if (c == BACKSLASH) {
+                // Skip escape character and escaped character.
+                pos++;
+            }
+        }
+        final String remain = (size - start > 0) ? text.substring(start) : null;
+        if (list == null) {
+            return remain != null ? new String[] { remain } : null;
+        }
+        if (remain != null) {
+            list.add(remain);
+        }
+        return list.toArray(new String[list.size()]);
+    }
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    private static String[] filterOutEmptyString(final String[] array) {
+        if (array == null) {
+            return EMPTY_STRING_ARRAY;
+        }
+        ArrayList<String> out = null;
+        for (int i = 0; i < array.length; i++) {
+            final String entry = array[i];
+            if (TextUtils.isEmpty(entry)) {
+                if (out == null) {
+                    out = CollectionUtils.arrayAsList(array, 0, i);
+                }
+            } else if (out != null) {
+                out.add(entry);
+            }
+        }
+        if (out == null) {
+            return array;
+        }
+        return out.toArray(new String[out.size()]);
+    }
+
+    public static String[] insertAdditionalMoreKeys(final String[] moreKeySpecs,
+            final String[] additionalMoreKeySpecs) {
+        final String[] moreKeys = filterOutEmptyString(moreKeySpecs);
+        final String[] additionalMoreKeys = filterOutEmptyString(additionalMoreKeySpecs);
+        final int moreKeysCount = moreKeys.length;
+        final int additionalCount = additionalMoreKeys.length;
+        ArrayList<String> out = null;
+        int additionalIndex = 0;
+        for (int moreKeyIndex = 0; moreKeyIndex < moreKeysCount; moreKeyIndex++) {
+            final String moreKeySpec = moreKeys[moreKeyIndex];
+            if (moreKeySpec.equals(ADDITIONAL_MORE_KEY_MARKER)) {
+                if (additionalIndex < additionalCount) {
+                    // Replace '%' marker with additional more key specification.
+                    final String additionalMoreKey = additionalMoreKeys[additionalIndex];
+                    if (out != null) {
+                        out.add(additionalMoreKey);
+                    } else {
+                        moreKeys[moreKeyIndex] = additionalMoreKey;
+                    }
+                    additionalIndex++;
+                } else {
+                    // Filter out excessive '%' marker.
+                    if (out == null) {
+                        out = CollectionUtils.arrayAsList(moreKeys, 0, moreKeyIndex);
+                    }
+                }
+            } else {
+                if (out != null) {
+                    out.add(moreKeySpec);
+                }
+            }
+        }
+        if (additionalCount > 0 && additionalIndex == 0) {
+            // No '%' marker is found in more keys.
+            // Insert all additional more keys to the head of more keys.
+            if (DEBUG && out != null) {
+                throw new RuntimeException("Internal logic error:"
+                        + " moreKeys=" + Arrays.toString(moreKeys)
+                        + " additionalMoreKeys=" + Arrays.toString(additionalMoreKeys));
+            }
+            out = CollectionUtils.arrayAsList(additionalMoreKeys, additionalIndex, additionalCount);
+            for (int i = 0; i < moreKeysCount; i++) {
+                out.add(moreKeys[i]);
+            }
+        } else if (additionalIndex < additionalCount) {
+            // The number of '%' markers are less than additional more keys.
+            // Append remained additional more keys to the tail of more keys.
+            if (DEBUG && out != null) {
+                throw new RuntimeException("Internal logic error:"
+                        + " moreKeys=" + Arrays.toString(moreKeys)
+                        + " additionalMoreKeys=" + Arrays.toString(additionalMoreKeys));
+            }
+            out = CollectionUtils.arrayAsList(moreKeys, 0, moreKeysCount);
+            for (int i = additionalIndex; i < additionalCount; i++) {
+                out.add(additionalMoreKeys[additionalIndex]);
+            }
+        }
+        if (out == null && moreKeysCount > 0) {
+            return moreKeys;
+        } else if (out != null && out.size() > 0) {
+            return out.toArray(new String[out.size()]);
+        } else {
+            return null;
+        }
+    }
+
+    public static int getIntValue(final String[] moreKeys, final String key,
+            final int defaultValue) {
+        if (moreKeys == null) {
+            return defaultValue;
+        }
+        final int keyLen = key.length();
+        boolean foundValue = false;
+        int value = defaultValue;
+        for (int i = 0; i < moreKeys.length; i++) {
+            final String moreKeySpec = moreKeys[i];
+            if (moreKeySpec == null || !moreKeySpec.startsWith(key)) {
+                continue;
+            }
+            moreKeys[i] = null;
+            try {
+                if (!foundValue) {
+                    value = Integer.parseInt(moreKeySpec.substring(keyLen));
+                    foundValue = true;
+                }
+            } catch (NumberFormatException e) {
+                throw new RuntimeException(
+                        "integer should follow after " + key + ": " + moreKeySpec);
+            }
+        }
+        return value;
+    }
+
+    public static boolean getBooleanValue(final String[] moreKeys, final String key) {
+        if (moreKeys == null) {
+            return false;
+        }
+        boolean value = false;
+        for (int i = 0; i < moreKeys.length; i++) {
+            final String moreKeySpec = moreKeys[i];
+            if (moreKeySpec == null || !moreKeySpec.equals(key)) {
+                continue;
+            }
+            moreKeys[i] = null;
+            value = true;
+        }
+        return value;
+    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/NonDistinctMultitouchHelper.java b/java/src/com/android/inputmethod/keyboard/internal/NonDistinctMultitouchHelper.java
index a0935b9..3a9aa81 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/NonDistinctMultitouchHelper.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/NonDistinctMultitouchHelper.java
@@ -20,18 +20,19 @@
 import android.view.MotionEvent;
 
 import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.KeyDetector;
 import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
 import com.android.inputmethod.latin.utils.CoordinateUtils;
 
 public final class NonDistinctMultitouchHelper {
     private static final String TAG = NonDistinctMultitouchHelper.class.getSimpleName();
 
+    private static final int MAIN_POINTER_TRACKER_ID = 0;
     private int mOldPointerCount = 1;
     private Key mOldKey;
     private int[] mLastCoords = CoordinateUtils.newInstance();
 
-    public void processMotionEvent(final MotionEvent me, final KeyEventHandler keyEventHandler) {
+    public void processMotionEvent(final MotionEvent me, final KeyDetector keyDetector) {
         final int pointerCount = me.getPointerCount();
         final int oldPointerCount = mOldPointerCount;
         mOldPointerCount = pointerCount;
@@ -41,8 +42,9 @@
             return;
         }
 
-        // Use only main (id=0) pointer tracker.
-        final PointerTracker mainTracker = PointerTracker.getPointerTracker(0, keyEventHandler);
+        // Use only main pointer tracker.
+        final PointerTracker mainTracker = PointerTracker.getPointerTracker(
+                MAIN_POINTER_TRACKER_ID);
         final int action = me.getActionMasked();
         final int index = me.getActionIndex();
         final long eventTime = me.getEventTime();
@@ -51,12 +53,12 @@
         // In single-touch.
         if (oldPointerCount == 1 && pointerCount == 1) {
             if (me.getPointerId(index) == mainTracker.mPointerId) {
-                mainTracker.processMotionEvent(me, keyEventHandler);
+                mainTracker.processMotionEvent(me, keyDetector);
                 return;
             }
             // Inject a copied event.
             injectMotionEvent(action, me.getX(index), me.getY(index), downTime, eventTime,
-                    mainTracker, keyEventHandler);
+                    mainTracker, keyDetector);
             return;
         }
 
@@ -70,7 +72,7 @@
             mOldKey = mainTracker.getKeyOn(x, y);
             // Inject an artifact up event for the old key.
             injectMotionEvent(MotionEvent.ACTION_UP, x, y, downTime, eventTime,
-                    mainTracker, keyEventHandler);
+                    mainTracker, keyDetector);
             return;
         }
 
@@ -85,11 +87,11 @@
                 // Inject an artifact down event for the new key.
                 // An artifact up event for the new key will usually be injected as a single-touch.
                 injectMotionEvent(MotionEvent.ACTION_DOWN, x, y, downTime, eventTime,
-                        mainTracker, keyEventHandler);
+                        mainTracker, keyDetector);
                 if (action == MotionEvent.ACTION_UP) {
                     // Inject an artifact up event for the new key also.
                     injectMotionEvent(MotionEvent.ACTION_UP, x, y, downTime, eventTime,
-                            mainTracker, keyEventHandler);
+                            mainTracker, keyDetector);
                 }
             }
             return;
@@ -101,11 +103,11 @@
 
     private static void injectMotionEvent(final int action, final float x, final float y,
             final long downTime, final long eventTime, final PointerTracker tracker,
-            final KeyEventHandler handler) {
+            final KeyDetector keyDetector) {
         final MotionEvent me = MotionEvent.obtain(
                 downTime, eventTime, action, x, y, 0 /* metaState */);
         try {
-            tracker.processMotionEvent(me, handler);
+            tracker.processMotionEvent(me, keyDetector);
         } finally {
             me.recycle();
         }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
index 7ee45e8..8e89e61e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java
@@ -18,8 +18,6 @@
 
 import android.util.Log;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
 import java.util.ArrayList;
 
 public final class PointerTrackerQueue {
@@ -28,7 +26,7 @@
 
     public interface Element {
         public boolean isModifier();
-        public boolean isInSlidingKeyInput();
+        public boolean isInDraggingFinger();
         public void onPhantomUpEvent(long eventTime);
         public void cancelTrackingForAction();
     }
@@ -37,7 +35,7 @@
     // Note: {@link #mExpandableArrayOfActivePointers} and {@link #mArraySize} are synchronized by
     // {@link #mExpandableArrayOfActivePointers}
     private final ArrayList<Element> mExpandableArrayOfActivePointers =
-            CollectionUtils.newArrayList(INITIAL_CAPACITY);
+            new ArrayList<>(INITIAL_CAPACITY);
     private int mArraySize = 0;
 
     public int size() {
@@ -193,13 +191,13 @@
         }
     }
 
-    public boolean isAnyInSlidingKeyInput() {
+    public boolean isAnyInDraggingFinger() {
         synchronized (mExpandableArrayOfActivePointers) {
             final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers;
             final int arraySize = mArraySize;
             for (int index = 0; index < arraySize; index++) {
                 final Element element = expandableArray.get(index);
-                if (element.isInSlidingKeyInput()) {
+                if (element.isInDraggingFinger()) {
                     return true;
                 }
             }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java b/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java
deleted file mode 100644
index 4c8607d..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/PreviewPlacerView.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
-import android.util.AttributeSet;
-import android.widget.RelativeLayout;
-
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.CoordinateUtils;
-
-import java.util.ArrayList;
-
-public final class PreviewPlacerView extends RelativeLayout {
-    private final int[] mKeyboardViewOrigin = CoordinateUtils.newInstance();
-
-    private final ArrayList<AbstractDrawingPreview> mPreviews = CollectionUtils.newArrayList();
-
-    public PreviewPlacerView(final Context context, final AttributeSet attrs) {
-        super(context, attrs);
-        setWillNotDraw(false);
-    }
-
-    public void setHardwareAcceleratedDrawingEnabled(final boolean enabled) {
-        if (!enabled) return;
-        final Paint layerPaint = new Paint();
-        layerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
-        setLayerType(LAYER_TYPE_HARDWARE, layerPaint);
-    }
-
-    public void addPreview(final AbstractDrawingPreview preview) {
-        mPreviews.add(preview);
-    }
-
-    public void setKeyboardViewGeometry(final int[] originCoords, final int width,
-            final int height) {
-        CoordinateUtils.copy(mKeyboardViewOrigin, originCoords);
-        final int count = mPreviews.size();
-        for (int i = 0; i < count; i++) {
-            mPreviews.get(i).setKeyboardGeometry(originCoords, width, height);
-        }
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        final int count = mPreviews.size();
-        for (int i = 0; i < count; i++) {
-            mPreviews.get(i).onDetachFromWindow();
-        }
-    }
-
-    @Override
-    public void onDraw(final Canvas canvas) {
-        super.onDraw(canvas);
-        final int originX = CoordinateUtils.x(mKeyboardViewOrigin);
-        final int originY = CoordinateUtils.y(mKeyboardViewOrigin);
-        canvas.translate(originX, originY);
-        final int count = mPreviews.size();
-        for (int i = 0; i < count; i++) {
-            mPreviews.get(i).drawPreview(canvas);
-        }
-        canvas.translate(-originX, -originY);
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/ScrollKeyboardView.java b/java/src/com/android/inputmethod/keyboard/internal/ScrollKeyboardView.java
deleted file mode 100644
index 9cf68d4..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/ScrollKeyboardView.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.GestureDetector;
-import android.view.MotionEvent;
-import android.widget.ScrollView;
-import android.widget.Scroller;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.KeyDetector;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardView;
-import com.android.inputmethod.latin.R;
-
-/**
- * This is an extended {@link KeyboardView} class that hosts a vertical scroll keyboard.
- * Multi-touch unsupported. No {@link PointerTracker}s. No gesture support.
- * TODO: Vertical scroll capability should be removed from this class because it's no longer used.
- */
-// TODO: Implement key popup preview.
-public final class ScrollKeyboardView extends KeyboardView implements
-        ScrollViewWithNotifier.ScrollListener, GestureDetector.OnGestureListener {
-    private static final boolean PAGINATION = false;
-
-    public interface OnKeyClickListener {
-        public void onKeyClick(Key key);
-    }
-
-    private static final OnKeyClickListener EMPTY_LISTENER = new OnKeyClickListener() {
-        @Override
-        public void onKeyClick(final Key key) {}
-    };
-
-    private OnKeyClickListener mListener = EMPTY_LISTENER;
-    private final KeyDetector mKeyDetector = new KeyDetector(0.0f /*keyHysteresisDistance */);
-    private final GestureDetector mGestureDetector;
-
-    private final Scroller mScroller;
-    private ScrollViewWithNotifier mScrollView;
-
-    public ScrollKeyboardView(final Context context, final AttributeSet attrs) {
-        this(context, attrs, R.attr.keyboardViewStyle);
-    }
-
-    public ScrollKeyboardView(final Context context, final AttributeSet attrs, final int defStyle) {
-        super(context, attrs, defStyle);
-        mGestureDetector = new GestureDetector(context, this);
-        mGestureDetector.setIsLongpressEnabled(false /* isLongpressEnabled */);
-        mScroller = new Scroller(context);
-    }
-
-    public void setScrollView(final ScrollViewWithNotifier scrollView) {
-        mScrollView = scrollView;
-        scrollView.setScrollListener(this);
-    }
-
-    private final Runnable mScrollTask = new Runnable() {
-        @Override
-        public void run() {
-            final Scroller scroller = mScroller;
-            final ScrollView scrollView = mScrollView;
-            scroller.computeScrollOffset();
-            scrollView.scrollTo(0, scroller.getCurrY());
-            if (!scroller.isFinished()) {
-                scrollView.post(this);
-            }
-        }
-    };
-
-    // {@link ScrollViewWithNotified#ScrollListener} methods.
-    @Override
-    public void notifyScrollChanged(final int scrollX, final int scrollY, final int oldX,
-            final int oldY) {
-        if (PAGINATION) {
-            mScroller.forceFinished(true /* finished */);
-            mScrollView.removeCallbacks(mScrollTask);
-            final int currentTop = mScrollView.getScrollY();
-            final int pageHeight = getKeyboard().mBaseHeight;
-            final int lastPageNo = currentTop / pageHeight;
-            final int lastPageTop = lastPageNo * pageHeight;
-            final int nextPageNo = lastPageNo + 1;
-            final int nextPageTop = Math.min(nextPageNo * pageHeight, getHeight() - pageHeight);
-            final int scrollTo = (currentTop - lastPageTop) < (nextPageTop - currentTop)
-                    ? lastPageTop : nextPageTop;
-            final int deltaY = scrollTo - currentTop;
-            mScroller.startScroll(0, currentTop, 0, deltaY, 300);
-            mScrollView.post(mScrollTask);
-        }
-    }
-
-    @Override
-    public void notifyOverScrolled(final int scrollX, final int scrollY, final boolean clampedX,
-            final boolean clampedY) {
-        releaseCurrentKey();
-    }
-
-    public void setOnKeyClickListener(final OnKeyClickListener listener) {
-        mListener = listener;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setKeyboard(final Keyboard keyboard) {
-        super.setKeyboard(keyboard);
-        mKeyDetector.setKeyboard(keyboard, 0 /* correctionX */, 0 /* correctionY */);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean onTouchEvent(final MotionEvent e) {
-        if (mGestureDetector.onTouchEvent(e)) {
-            return true;
-        }
-        final Key key = getKey(e);
-        if (key != null && key != mCurrentKey) {
-            releaseCurrentKey();
-        }
-        return true;
-    }
-
-    // {@link GestureDetector#OnGestureListener} methods.
-    private Key mCurrentKey;
-
-    private Key getKey(final MotionEvent e) {
-        final int index = e.getActionIndex();
-        final int x = (int)e.getX(index);
-        final int y = (int)e.getY(index);
-        return mKeyDetector.detectHitKey(x, y);
-    }
-
-    public void releaseCurrentKey() {
-        final Key currentKey = mCurrentKey;
-        if (currentKey == null) {
-            return;
-        }
-        currentKey.onReleased();
-        invalidateKey(currentKey);
-        mCurrentKey = null;
-    }
-
-    @Override
-    public boolean onDown(final MotionEvent e) {
-        final Key key = getKey(e);
-        releaseCurrentKey();
-        mCurrentKey = key;
-        if (key == null) {
-            return false;
-        }
-        // TODO: May call {@link KeyboardActionListener#onPressKey(int,int,boolean)}.
-        key.onPressed();
-        invalidateKey(key);
-        return false;
-    }
-
-    @Override
-    public void onShowPress(final MotionEvent e) {
-        // User feedback is done at {@link #onDown(MotionEvent)}.
-    }
-
-    @Override
-    public boolean onSingleTapUp(final MotionEvent e) {
-        final Key key = getKey(e);
-        releaseCurrentKey();
-        if (key == null) {
-            return false;
-        }
-        // TODO: May call {@link KeyboardActionListener#onReleaseKey(int,boolean)}.
-        key.onReleased();
-        invalidateKey(key);
-        mListener.onKeyClick(key);
-        return true;
-    }
-
-    @Override
-    public boolean onScroll(final MotionEvent e1, final MotionEvent e2, final float distanceX,
-           final float distanceY) {
-        releaseCurrentKey();
-        return false;
-    }
-
-    @Override
-    public boolean onFling(final MotionEvent e1, final MotionEvent e2, final float velocityX,
-            final float velocityY) {
-        releaseCurrentKey();
-        return false;
-    }
-
-    @Override
-    public void onLongPress(final MotionEvent e) {
-        // Long press detection of {@link #mGestureDetector} is disabled and not used.
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/ScrollViewWithNotifier.java b/java/src/com/android/inputmethod/keyboard/internal/ScrollViewWithNotifier.java
deleted file mode 100644
index d1ccdc7..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/ScrollViewWithNotifier.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ScrollView;
-
-/**
- * This is an extended {@link ScrollView} that can notify
- * {@link ScrollView#onScrollChanged(int,int,int,int} and
- * {@link ScrollView#onOverScrolled(int,int,int,int)} to a content view.
- */
-public class ScrollViewWithNotifier extends ScrollView {
-    private ScrollListener mScrollListener = EMPTY_LISTER;
-
-    public interface ScrollListener {
-        public void notifyScrollChanged(int scrollX, int scrollY, int oldX, int oldY);
-        public void notifyOverScrolled(int scrollX, int scrollY, boolean clampedX,
-                boolean clampedY);
-    }
-
-    private static final ScrollListener EMPTY_LISTER = new ScrollListener() {
-        @Override
-        public void notifyScrollChanged(int scrollX, int scrollY, int oldX, int oldY) {}
-        @Override
-        public void notifyOverScrolled(int scrollX, int scrollY, boolean clampedX,
-                boolean clampedY) {}
-    };
-
-    public ScrollViewWithNotifier(final Context context, final AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    protected void onScrollChanged(final int scrollX, final int scrollY, final int oldX,
-            final int oldY) {
-        super.onScrollChanged(scrollX, scrollY, oldX, oldY);
-        mScrollListener.notifyScrollChanged(scrollX, scrollY, oldX, oldY);
-    }
-
-    @Override
-    protected void onOverScrolled(final int scrollX, final int scrollY, final boolean clampedX,
-            final boolean clampedY) {
-        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
-        mScrollListener.notifyOverScrolled(scrollX, scrollY, clampedX, clampedY);
-    }
-
-    public void setScrollListener(final ScrollListener listener) {
-        mScrollListener = listener;
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java b/java/src/com/android/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java
new file mode 100644
index 0000000..ef4c74d
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/SlidingKeyInputDrawingPreview.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+
+import com.android.inputmethod.keyboard.PointerTracker;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+
+/**
+ * Draw rubber band preview graphics during sliding key input.
+ *
+ * @attr ref R.styleable#MainKeyboardView_slidingKeyInputPreviewColor
+ * @attr ref R.styleable#MainKeyboardView_slidingKeyInputPreviewWidth
+ * @attr ref R.styleable#MainKeyboardView_slidingKeyInputPreviewBodyRatio
+ * @attr ref R.styleable#MainKeyboardView_slidingKeyInputPreviewShadowRatio
+ */
+public final class SlidingKeyInputDrawingPreview extends AbstractDrawingPreview {
+    private final float mPreviewBodyRadius;
+
+    private boolean mShowsSlidingKeyInputPreview;
+    private final int[] mPreviewFrom = CoordinateUtils.newInstance();
+    private final int[] mPreviewTo = CoordinateUtils.newInstance();
+
+    // TODO: Finalize the rubber band preview implementation.
+    private final RoundedLine mRoundedLine = new RoundedLine();
+    private final Paint mPaint = new Paint();
+
+    public SlidingKeyInputDrawingPreview(final TypedArray mainKeyboardViewAttr) {
+        final int previewColor = mainKeyboardViewAttr.getColor(
+                R.styleable.MainKeyboardView_slidingKeyInputPreviewColor, 0);
+        final float previewRadius = mainKeyboardViewAttr.getDimension(
+                R.styleable.MainKeyboardView_slidingKeyInputPreviewWidth, 0) / 2.0f;
+        final int PERCENTAGE_INT = 100;
+        final float previewBodyRatio = (float)mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_slidingKeyInputPreviewBodyRatio, PERCENTAGE_INT)
+                / (float)PERCENTAGE_INT;
+        mPreviewBodyRadius = previewRadius * previewBodyRatio;
+        final int previewShadowRatioInt = mainKeyboardViewAttr.getInt(
+                R.styleable.MainKeyboardView_slidingKeyInputPreviewShadowRatio, 0);
+        if (previewShadowRatioInt > 0) {
+            final float previewShadowRatio = (float)previewShadowRatioInt / (float)PERCENTAGE_INT;
+            final float shadowRadius = previewRadius * previewShadowRatio;
+            mPaint.setShadowLayer(shadowRadius, 0.0f, 0.0f, previewColor);
+        }
+        mPaint.setColor(previewColor);
+    }
+
+    @Override
+    public void onDeallocateMemory() {
+        // Nothing to do here.
+    }
+
+    public void dismissSlidingKeyInputPreview() {
+        mShowsSlidingKeyInputPreview = false;
+        invalidateDrawingView();
+    }
+
+    /**
+     * Draws the preview
+     * @param canvas The canvas where the preview is drawn.
+     */
+    @Override
+    public void drawPreview(final Canvas canvas) {
+        if (!isPreviewEnabled() || !mShowsSlidingKeyInputPreview) {
+            return;
+        }
+
+        // TODO: Finalize the rubber band preview implementation.
+        final float radius = mPreviewBodyRadius;
+        final Path path = mRoundedLine.makePath(
+                CoordinateUtils.x(mPreviewFrom), CoordinateUtils.y(mPreviewFrom), radius,
+                CoordinateUtils.x(mPreviewTo), CoordinateUtils.y(mPreviewTo), radius);
+        canvas.drawPath(path, mPaint);
+    }
+
+    /**
+     * Set the position of the preview.
+     * @param tracker The new location of the preview is based on the points in PointerTracker.
+     */
+    @Override
+    public void setPreviewPosition(final PointerTracker tracker) {
+        tracker.getDownCoordinates(mPreviewFrom);
+        tracker.getLastCoordinates(mPreviewTo);
+        mShowsSlidingKeyInputPreview = true;
+        invalidateDrawingView();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/SlidingKeyInputPreview.java b/java/src/com/android/inputmethod/keyboard/internal/SlidingKeyInputPreview.java
deleted file mode 100644
index 2787ebf..0000000
--- a/java/src/com/android/inputmethod/keyboard/internal/SlidingKeyInputPreview.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.view.View;
-
-import com.android.inputmethod.keyboard.PointerTracker;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.CoordinateUtils;
-
-/**
- * Draw rubber band preview graphics during sliding key input.
- */
-public final class SlidingKeyInputPreview extends AbstractDrawingPreview {
-    private final float mPreviewBodyRadius;
-
-    private boolean mShowsSlidingKeyInputPreview;
-    private final int[] mPreviewFrom = CoordinateUtils.newInstance();
-    private final int[] mPreviewTo = CoordinateUtils.newInstance();
-
-    // TODO: Finalize the rubber band preview implementation.
-    private final RoundedLine mRoundedLine = new RoundedLine();
-    private final Paint mPaint = new Paint();
-
-    public SlidingKeyInputPreview(final View drawingView, final TypedArray mainKeyboardViewAttr) {
-        super(drawingView);
-        final int previewColor = mainKeyboardViewAttr.getColor(
-                R.styleable.MainKeyboardView_slidingKeyInputPreviewColor, 0);
-        final float previewRadius = mainKeyboardViewAttr.getDimension(
-                R.styleable.MainKeyboardView_slidingKeyInputPreviewWidth, 0) / 2.0f;
-        final int PERCENTAGE_INT = 100;
-        final float previewBodyRatio = (float)mainKeyboardViewAttr.getInt(
-                R.styleable.MainKeyboardView_slidingKeyInputPreviewBodyRatio, PERCENTAGE_INT)
-                / (float)PERCENTAGE_INT;
-        mPreviewBodyRadius = previewRadius * previewBodyRatio;
-        final int previewShadowRatioInt = mainKeyboardViewAttr.getInt(
-                R.styleable.MainKeyboardView_slidingKeyInputPreviewShadowRatio, 0);
-        if (previewShadowRatioInt > 0) {
-            final float previewShadowRatio = (float)previewShadowRatioInt / (float)PERCENTAGE_INT;
-            final float shadowRadius = previewRadius * previewShadowRatio;
-            mPaint.setShadowLayer(shadowRadius, 0.0f, 0.0f, previewColor);
-        }
-        mPaint.setColor(previewColor);
-    }
-
-    public void dismissSlidingKeyInputPreview() {
-        mShowsSlidingKeyInputPreview = false;
-        getDrawingView().invalidate();
-    }
-
-    /**
-     * Draws the preview
-     * @param canvas The canvas where the preview is drawn.
-     */
-    @Override
-    public void drawPreview(final Canvas canvas) {
-        if (!isPreviewEnabled() || !mShowsSlidingKeyInputPreview) {
-            return;
-        }
-
-        // TODO: Finalize the rubber band preview implementation.
-        final float radius = mPreviewBodyRadius;
-        final Path path = mRoundedLine.makePath(
-                CoordinateUtils.x(mPreviewFrom), CoordinateUtils.y(mPreviewFrom), radius,
-                CoordinateUtils.x(mPreviewTo), CoordinateUtils.y(mPreviewTo), radius);
-        canvas.drawPath(path, mPaint);
-    }
-
-    /**
-     * Set the position of the preview.
-     * @param tracker The new location of the preview is based on the points in PointerTracker.
-     */
-    @Override
-    public void setPreviewPosition(final PointerTracker tracker) {
-        tracker.getDownCoordinates(mPreviewFrom);
-        tracker.getLastCoordinates(mPreviewTo);
-        mShowsSlidingKeyInputPreview = true;
-        getDrawingView().invalidate();
-    }
-}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java b/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
new file mode 100644
index 0000000..ec7b9b0
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/TimerHandler.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.os.Message;
+import android.os.SystemClock;
+import android.view.ViewConfiguration;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.PointerTracker;
+import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
+import com.android.inputmethod.keyboard.internal.TimerHandler.Callbacks;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
+
+// TODO: Separate this class into KeyTimerHandler and BatchInputTimerHandler or so.
+public final class TimerHandler extends LeakGuardHandlerWrapper<Callbacks> implements TimerProxy {
+    public interface Callbacks {
+        public void startWhileTypingFadeinAnimation();
+        public void startWhileTypingFadeoutAnimation();
+        public void onLongPress(PointerTracker tracker);
+    }
+
+    private static final int MSG_TYPING_STATE_EXPIRED = 0;
+    private static final int MSG_REPEAT_KEY = 1;
+    private static final int MSG_LONGPRESS_KEY = 2;
+    private static final int MSG_LONGPRESS_SHIFT_KEY = 3;
+    private static final int MSG_DOUBLE_TAP_SHIFT_KEY = 4;
+    private static final int MSG_UPDATE_BATCH_INPUT = 5;
+
+    private final int mIgnoreAltCodeKeyTimeout;
+    private final int mGestureRecognitionUpdateTime;
+
+    public TimerHandler(final Callbacks ownerInstance, final int ignoreAltCodeKeyTimeout,
+            final int gestureRecognitionUpdateTime) {
+        super(ownerInstance);
+        mIgnoreAltCodeKeyTimeout = ignoreAltCodeKeyTimeout;
+        mGestureRecognitionUpdateTime = gestureRecognitionUpdateTime;
+    }
+
+    @Override
+    public void handleMessage(final Message msg) {
+        final Callbacks callbacks = getOwnerInstance();
+        if (callbacks == null) {
+            return;
+        }
+        final PointerTracker tracker = (PointerTracker) msg.obj;
+        switch (msg.what) {
+        case MSG_TYPING_STATE_EXPIRED:
+            callbacks.startWhileTypingFadeinAnimation();
+            break;
+        case MSG_REPEAT_KEY:
+            tracker.onKeyRepeat(msg.arg1 /* code */, msg.arg2 /* repeatCount */);
+            break;
+        case MSG_LONGPRESS_KEY:
+        case MSG_LONGPRESS_SHIFT_KEY:
+            cancelLongPressTimers();
+            callbacks.onLongPress(tracker);
+            break;
+        case MSG_UPDATE_BATCH_INPUT:
+            tracker.updateBatchInputByTimer(SystemClock.uptimeMillis());
+            startUpdateBatchInputTimer(tracker);
+            break;
+        }
+    }
+
+    @Override
+    public void startKeyRepeatTimerOf(final PointerTracker tracker, final int repeatCount,
+            final int delay) {
+        final Key key = tracker.getKey();
+        if (key == null || delay == 0) {
+            return;
+        }
+        sendMessageDelayed(
+                obtainMessage(MSG_REPEAT_KEY, key.getCode(), repeatCount, tracker), delay);
+    }
+
+    private void cancelKeyRepeatTimerOf(final PointerTracker tracker) {
+        removeMessages(MSG_REPEAT_KEY, tracker);
+    }
+
+    public void cancelKeyRepeatTimers() {
+        removeMessages(MSG_REPEAT_KEY);
+    }
+
+    // TODO: Suppress layout changes in key repeat mode
+    public boolean isInKeyRepeat() {
+        return hasMessages(MSG_REPEAT_KEY);
+    }
+
+    @Override
+    public void startLongPressTimerOf(final PointerTracker tracker, final int delay) {
+        final Key key = tracker.getKey();
+        if (key == null) {
+            return;
+        }
+        // Use a separate message id for long pressing shift key, because long press shift key
+        // timers should be canceled when other key is pressed.
+        final int messageId = (key.getCode() == Constants.CODE_SHIFT)
+                ? MSG_LONGPRESS_SHIFT_KEY : MSG_LONGPRESS_KEY;
+        sendMessageDelayed(obtainMessage(messageId, tracker), delay);
+    }
+
+    @Override
+    public void cancelLongPressTimerOf(final PointerTracker tracker) {
+        removeMessages(MSG_LONGPRESS_KEY, tracker);
+        removeMessages(MSG_LONGPRESS_SHIFT_KEY, tracker);
+    }
+
+    @Override
+    public void cancelLongPressShiftKeyTimers() {
+        removeMessages(MSG_LONGPRESS_SHIFT_KEY);
+    }
+
+    public void cancelLongPressTimers() {
+        removeMessages(MSG_LONGPRESS_KEY);
+        removeMessages(MSG_LONGPRESS_SHIFT_KEY);
+    }
+
+    @Override
+    public void startTypingStateTimer(final Key typedKey) {
+        if (typedKey.isModifier() || typedKey.altCodeWhileTyping()) {
+            return;
+        }
+
+        final boolean isTyping = isTypingState();
+        removeMessages(MSG_TYPING_STATE_EXPIRED);
+        final Callbacks callbacks = getOwnerInstance();
+        if (callbacks == null) {
+            return;
+        }
+
+        // When user hits the space or the enter key, just cancel the while-typing timer.
+        final int typedCode = typedKey.getCode();
+        if (typedCode == Constants.CODE_SPACE || typedCode == Constants.CODE_ENTER) {
+            if (isTyping) {
+                callbacks.startWhileTypingFadeinAnimation();
+            }
+            return;
+        }
+
+        sendMessageDelayed(
+                obtainMessage(MSG_TYPING_STATE_EXPIRED), mIgnoreAltCodeKeyTimeout);
+        if (isTyping) {
+            return;
+        }
+        callbacks.startWhileTypingFadeoutAnimation();
+    }
+
+    @Override
+    public boolean isTypingState() {
+        return hasMessages(MSG_TYPING_STATE_EXPIRED);
+    }
+
+    @Override
+    public void startDoubleTapShiftKeyTimer() {
+        sendMessageDelayed(obtainMessage(MSG_DOUBLE_TAP_SHIFT_KEY),
+                ViewConfiguration.getDoubleTapTimeout());
+    }
+
+    @Override
+    public void cancelDoubleTapShiftKeyTimer() {
+        removeMessages(MSG_DOUBLE_TAP_SHIFT_KEY);
+    }
+
+    @Override
+    public boolean isInDoubleTapShiftKeyTimeout() {
+        return hasMessages(MSG_DOUBLE_TAP_SHIFT_KEY);
+    }
+
+    @Override
+    public void cancelKeyTimersOf(final PointerTracker tracker) {
+        cancelKeyRepeatTimerOf(tracker);
+        cancelLongPressTimerOf(tracker);
+    }
+
+    public void cancelAllKeyTimers() {
+        cancelKeyRepeatTimers();
+        cancelLongPressTimers();
+    }
+
+    @Override
+    public void startUpdateBatchInputTimer(final PointerTracker tracker) {
+        if (mGestureRecognitionUpdateTime <= 0) {
+            return;
+        }
+        removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
+        sendMessageDelayed(obtainMessage(MSG_UPDATE_BATCH_INPUT, tracker),
+                mGestureRecognitionUpdateTime);
+    }
+
+    @Override
+    public void cancelUpdateBatchInputTimer(final PointerTracker tracker) {
+        removeMessages(MSG_UPDATE_BATCH_INPUT, tracker);
+    }
+
+    @Override
+    public void cancelAllUpdateBatchInputTimers() {
+        removeMessages(MSG_UPDATE_BATCH_INPUT);
+    }
+
+    public void cancelAllMessages() {
+        cancelAllKeyTimers();
+        cancelAllUpdateBatchInputTimers();
+    }
+}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/TouchPositionCorrection.java b/java/src/com/android/inputmethod/keyboard/internal/TouchPositionCorrection.java
index a75384b..fef97cc 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/TouchPositionCorrection.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/TouchPositionCorrection.java
@@ -17,7 +17,7 @@
 package com.android.inputmethod.keyboard.internal;
 
 import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.define.DebugFlags;
 
 public final class TouchPositionCorrection {
     private static final int TOUCH_POSITION_CORRECTION_RECORD_SIZE = 3;
@@ -30,7 +30,7 @@
     public void load(final String[] data) {
         final int dataLength = data.length;
         if (dataLength % TOUCH_POSITION_CORRECTION_RECORD_SIZE != 0) {
-            if (LatinImeLogger.sDBG) {
+            if (DebugFlags.DEBUG_ENABLED) {
                 throw new RuntimeException(
                         "the size of touch position correction data is invalid");
             }
@@ -56,7 +56,7 @@
             }
             mEnabled = dataLength > 0;
         } catch (NumberFormatException e) {
-            if (LatinImeLogger.sDBG) {
+            if (DebugFlags.DEBUG_ENABLED) {
                 throw new RuntimeException(
                         "the number format for touch position correction data is invalid");
             }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/TypingTimeRecorder.java b/java/src/com/android/inputmethod/keyboard/internal/TypingTimeRecorder.java
new file mode 100644
index 0000000..9593f71
--- /dev/null
+++ b/java/src/com/android/inputmethod/keyboard/internal/TypingTimeRecorder.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+public final class TypingTimeRecorder {
+    private final int mStaticTimeThresholdAfterFastTyping; // msec
+    private final int mSuppressKeyPreviewAfterBatchInputDuration;
+    private long mLastTypingTime;
+    private long mLastLetterTypingTime;
+    private long mLastBatchInputTime;
+
+    public TypingTimeRecorder(final int staticTimeThresholdAfterFastTyping,
+            final int suppressKeyPreviewAfterBatchInputDuration) {
+        mStaticTimeThresholdAfterFastTyping = staticTimeThresholdAfterFastTyping;
+        mSuppressKeyPreviewAfterBatchInputDuration = suppressKeyPreviewAfterBatchInputDuration;
+    }
+
+    public boolean isInFastTyping(final long eventTime) {
+        final long elapsedTimeSinceLastLetterTyping = eventTime - mLastLetterTypingTime;
+        return elapsedTimeSinceLastLetterTyping < mStaticTimeThresholdAfterFastTyping;
+    }
+
+    private boolean wasLastInputTyping() {
+        return mLastTypingTime >= mLastBatchInputTime;
+    }
+
+    public void onCodeInput(final int code, final long eventTime) {
+        // Record the letter typing time when
+        // 1. Letter keys are typed successively without any batch input in between.
+        // 2. A letter key is typed within the threshold time since the last any key typing.
+        // 3. A non-letter key is typed within the threshold time since the last letter key typing.
+        if (Character.isLetter(code)) {
+            if (wasLastInputTyping()
+                    || eventTime - mLastTypingTime < mStaticTimeThresholdAfterFastTyping) {
+                mLastLetterTypingTime = eventTime;
+            }
+        } else {
+            if (eventTime - mLastLetterTypingTime < mStaticTimeThresholdAfterFastTyping) {
+                // This non-letter typing should be treated as a part of fast typing.
+                mLastLetterTypingTime = eventTime;
+            }
+        }
+        mLastTypingTime = eventTime;
+    }
+
+    public void onEndBatchInput(final long eventTime) {
+        mLastBatchInputTime = eventTime;
+    }
+
+    public long getLastLetterTypingTime() {
+        return mLastLetterTypingTime;
+    }
+
+    public boolean needsToSuppressKeyPreviewPopup(final long eventTime) {
+        return !wasLastInputTyping()
+                && eventTime - mLastBatchInputTime < mSuppressKeyPreviewAfterBatchInputDuration;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/AbstractDictionaryWriter.java b/java/src/com/android/inputmethod/latin/AbstractDictionaryWriter.java
deleted file mode 100644
index 463d093..0000000
--- a/java/src/com/android/inputmethod/latin/AbstractDictionaryWriter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.android.inputmethod.latin.makedict.DictEncoder;
-import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.makedict.Ver3DictEncoder;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-
-// TODO: Quit extending Dictionary after implementing dynamic binary dictionary.
-abstract public class AbstractDictionaryWriter extends Dictionary {
-    /** Used for Log actions from this class */
-    private static final String TAG = AbstractDictionaryWriter.class.getSimpleName();
-
-    private final Context mContext;
-
-    public AbstractDictionaryWriter(final Context context, final String dictType) {
-        super(dictType);
-        mContext = context;
-    }
-
-    abstract public void clear();
-
-    /**
-     * Add a unigram with an optional shortcut to the dictionary.
-     * @param word The word to add.
-     * @param shortcutTarget A shortcut target for this word, or null if none.
-     * @param frequency The frequency for this unigram.
-     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
-     *   if shortcutTarget is null.
-     * @param isNotAWord true if this is not a word, i.e. shortcut only.
-     */
-    abstract public void addUnigramWord(final String word, final String shortcutTarget,
-            final int frequency, final int shortcutFreq, final boolean isNotAWord);
-
-    // TODO: Remove lastModifiedTime after making binary dictionary support forgetting curve.
-    abstract public void addBigramWords(final String word0, final String word1,
-            final int frequency, final boolean isValid,
-            final long lastModifiedTime);
-
-    abstract public void removeBigramWords(final String word0, final String word1);
-
-    abstract protected void writeDictionary(final DictEncoder dictEncoder,
-            final Map<String, String> attributeMap) throws IOException, UnsupportedFormatException;
-
-    public void write(final String fileName, final Map<String, String> attributeMap) {
-        final String tempFileName = fileName + ".temp";
-        final File file = new File(mContext.getFilesDir(), fileName);
-        final File tempFile = new File(mContext.getFilesDir(), tempFileName);
-        try {
-            final DictEncoder dictEncoder = new Ver3DictEncoder(tempFile);
-            writeDictionary(dictEncoder, attributeMap);
-            tempFile.renameTo(file);
-        } catch (IOException e) {
-            Log.e(TAG, "IO exception while writing file", e);
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "Unsupported format", e);
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/AssetFileAddress.java b/java/src/com/android/inputmethod/latin/AssetFileAddress.java
index 8751925..fd6c24d 100644
--- a/java/src/com/android/inputmethod/latin/AssetFileAddress.java
+++ b/java/src/com/android/inputmethod/latin/AssetFileAddress.java
@@ -16,6 +16,8 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.latin.utils.FileUtils;
+
 import java.io.File;
 
 /**
@@ -52,4 +54,12 @@
         if (!f.isFile()) return null;
         return new AssetFileAddress(filename, offset, length);
     }
+
+    public boolean pointsToPhysicalFile() {
+        return 0 == mOffset;
+    }
+
+    public void deleteUnderlyingFile() {
+        FileUtils.deleteRecursively(new File(mFilename));
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java
index 54bc295..eb8b34c 100644
--- a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java
+++ b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java
@@ -16,14 +16,14 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.latin.settings.SettingsValues;
-
 import android.content.Context;
 import android.media.AudioManager;
 import android.os.Vibrator;
 import android.view.HapticFeedbackConstants;
 import android.view.View;
 
+import com.android.inputmethod.latin.settings.SettingsValues;
+
 /**
  * This class gathers audio feedback and haptic feedback functions.
  *
@@ -86,40 +86,41 @@
         if (mAudioManager == null) {
             return;
         }
-        if (mSoundOn) {
-            final int sound;
-            switch (code) {
-            case Constants.CODE_DELETE:
-                sound = AudioManager.FX_KEYPRESS_DELETE;
-                break;
-            case Constants.CODE_ENTER:
-                sound = AudioManager.FX_KEYPRESS_RETURN;
-                break;
-            case Constants.CODE_SPACE:
-                sound = AudioManager.FX_KEYPRESS_SPACEBAR;
-                break;
-            default:
-                sound = AudioManager.FX_KEYPRESS_STANDARD;
-                break;
-            }
-            mAudioManager.playSoundEffect(sound, mSettingsValues.mKeypressSoundVolume);
+        if (!mSoundOn) {
+            return;
         }
+        final int sound;
+        switch (code) {
+        case Constants.CODE_DELETE:
+            sound = AudioManager.FX_KEYPRESS_DELETE;
+            break;
+        case Constants.CODE_ENTER:
+            sound = AudioManager.FX_KEYPRESS_RETURN;
+            break;
+        case Constants.CODE_SPACE:
+            sound = AudioManager.FX_KEYPRESS_SPACEBAR;
+            break;
+        default:
+            sound = AudioManager.FX_KEYPRESS_STANDARD;
+            break;
+        }
+        mAudioManager.playSoundEffect(sound, mSettingsValues.mKeypressSoundVolume);
     }
 
     public void performHapticFeedback(final View viewToPerformHapticFeedbackOn) {
         if (!mSettingsValues.mVibrateOn) {
             return;
         }
-        if (mSettingsValues.mKeypressVibrationDuration < 0) {
-            // Go ahead with the system default
-            if (viewToPerformHapticFeedbackOn != null) {
-                viewToPerformHapticFeedbackOn.performHapticFeedback(
-                        HapticFeedbackConstants.KEYBOARD_TAP,
-                        HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
-            }
+        if (mSettingsValues.mKeypressVibrationDuration >= 0) {
+            vibrate(mSettingsValues.mKeypressVibrationDuration);
             return;
         }
-        vibrate(mSettingsValues.mKeypressVibrationDuration);
+        // Go ahead with the system default
+        if (viewToPerformHapticFeedbackOn != null) {
+            viewToPerformHapticFeedbackOn.performHapticFeedback(
+                    HapticFeedbackConstants.KEYBOARD_TAP,
+                    HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
+        }
     }
 
     public void onSettingsChanged(final SettingsValues settingsValues) {
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index fd29698..693e1cd 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -17,19 +17,28 @@
 package com.android.inputmethod.latin;
 
 import android.text.TextUtils;
+import android.util.Log;
 import android.util.SparseArray;
 
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.settings.NativeSuggestOptions;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.makedict.FormatSpec;
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
+import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+import com.android.inputmethod.latin.makedict.WordProperty;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
+import com.android.inputmethod.latin.utils.FileUtils;
 import com.android.inputmethod.latin.utils.JniUtils;
+import com.android.inputmethod.latin.utils.LanguageModelParam;
 import com.android.inputmethod.latin.utils.StringUtils;
 
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 
@@ -40,10 +49,6 @@
 public final class BinaryDictionary extends Dictionary {
     private static final String TAG = BinaryDictionary.class.getSimpleName();
 
-    // Must be equal to MAX_WORD_LENGTH in native/jni/src/defines.h
-    private static final int MAX_WORD_LENGTH = Constants.DICTIONARY_MAX_WORD_LENGTH;
-    // Must be equal to MAX_RESULTS in native/jni/src/defines.h
-    private static final int MAX_RESULTS = 18;
     // The cutoff returned by native for auto-commit confidence.
     // Must be equal to CONFIDENCE_TO_AUTO_COMMIT in native/jni/src/defines.h
     private static final int CONFIDENCE_TO_AUTO_COMMIT = 1000000;
@@ -57,22 +62,35 @@
     @UsedForTesting
     public static final String MAX_BIGRAM_COUNT_QUERY = "MAX_BIGRAM_COUNT";
 
+    public static final int NOT_A_VALID_TIMESTAMP = -1;
+
+    // Format to get unigram flags from native side via getWordPropertyNative().
+    private static final int FORMAT_WORD_PROPERTY_OUTPUT_FLAG_COUNT = 5;
+    private static final int FORMAT_WORD_PROPERTY_IS_NOT_A_WORD_INDEX = 0;
+    private static final int FORMAT_WORD_PROPERTY_IS_BLACKLISTED_INDEX = 1;
+    private static final int FORMAT_WORD_PROPERTY_HAS_BIGRAMS_INDEX = 2;
+    private static final int FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX = 3;
+    private static final int FORMAT_WORD_PROPERTY_IS_BEGINNING_OF_SENTENCE_INDEX = 4;
+
+    // Format to get probability and historical info from native side via getWordPropertyNative().
+    public static final int FORMAT_WORD_PROPERTY_OUTPUT_PROBABILITY_INFO_COUNT = 4;
+    public static final int FORMAT_WORD_PROPERTY_PROBABILITY_INDEX = 0;
+    public static final int FORMAT_WORD_PROPERTY_TIMESTAMP_INDEX = 1;
+    public static final int FORMAT_WORD_PROPERTY_LEVEL_INDEX = 2;
+    public static final int FORMAT_WORD_PROPERTY_COUNT_INDEX = 3;
+
+    public static final String DICT_FILE_NAME_SUFFIX_FOR_MIGRATION = ".migrate";
+    public static final String DIR_NAME_SUFFIX_FOR_RECORD_MIGRATION = ".migrating";
+
     private long mNativeDict;
     private final Locale mLocale;
     private final long mDictSize;
     private final String mDictFilePath;
-    private final int[] mInputCodePoints = new int[MAX_WORD_LENGTH];
-    private final int[] mOutputCodePoints = new int[MAX_WORD_LENGTH * MAX_RESULTS];
-    private final int[] mSpaceIndices = new int[MAX_RESULTS];
-    private final int[] mOutputScores = new int[MAX_RESULTS];
-    private final int[] mOutputTypes = new int[MAX_RESULTS];
-    // Only one result is ever used
-    private final int[] mOutputAutoCommitFirstWordConfidence = new int[1];
+    private final boolean mUseFullEditDistance;
+    private final boolean mIsUpdatable;
+    private boolean mHasUpdated;
 
-    private final NativeSuggestOptions mNativeSuggestOptions = new NativeSuggestOptions();
-
-    private final SparseArray<DicTraverseSession> mDicTraverseSessions =
-            CollectionUtils.newSparseArray();
+    private final SparseArray<DicTraverseSession> mDicTraverseSessions = new SparseArray<>();
 
     // TODO: There should be a way to remove used DicTraverseSession objects from
     // {@code mDicTraverseSessions}.
@@ -80,19 +98,15 @@
         synchronized(mDicTraverseSessions) {
             DicTraverseSession traverseSession = mDicTraverseSessions.get(traverseSessionId);
             if (traverseSession == null) {
-                traverseSession = mDicTraverseSessions.get(traverseSessionId);
-                if (traverseSession == null) {
-                    traverseSession = new DicTraverseSession(mLocale, mNativeDict, mDictSize);
-                    mDicTraverseSessions.put(traverseSessionId, traverseSession);
-                }
+                traverseSession = new DicTraverseSession(mLocale, mNativeDict, mDictSize);
+                mDicTraverseSessions.put(traverseSessionId, traverseSession);
             }
             return traverseSession;
         }
     }
 
     /**
-     * Constructor for the binary dictionary. This is supposed to be called from the
-     * dictionary factory.
+     * Constructs binary dictionary using existing dictionary file.
      * @param filename the name of the file to read through native code.
      * @param offset the offset of the dictionary data within the file.
      * @param length the length of the binary data.
@@ -107,43 +121,31 @@
         mLocale = locale;
         mDictSize = length;
         mDictFilePath = filename;
-        mNativeSuggestOptions.setUseFullEditDistance(useFullEditDistance);
+        mIsUpdatable = isUpdatable;
+        mHasUpdated = false;
+        mUseFullEditDistance = useFullEditDistance;
         loadDictionary(filename, offset, length, isUpdatable);
     }
 
-    static {
-        JniUtils.loadNativeLibrary();
-    }
-
-    private static native boolean createEmptyDictFileNative(String filePath, long dictVersion,
-            String[] attributeKeyStringArray, String[] attributeValueStringArray);
-    private static native long openNative(String sourceDir, long dictOffset, long dictSize,
-            boolean isUpdatable);
-    private static native void flushNative(long dict, String filePath);
-    private static native boolean needsToRunGCNative(long dict, boolean mindsBlockByGC);
-    private static native void flushWithGCNative(long dict, String filePath);
-    private static native void closeNative(long dict);
-    private static native int getProbabilityNative(long dict, int[] word);
-    private static native int getBigramProbabilityNative(long dict, int[] word0, int[] word1);
-    private static native int getSuggestionsNative(long dict, long proximityInfo,
-            long traverseSession, int[] xCoordinates, int[] yCoordinates, int[] times,
-            int[] pointerIds, int[] inputCodePoints, int inputSize, int commitPoint,
-            int[] suggestOptions, int[] prevWordCodePointArray,
-            int[] outputCodePoints, int[] outputScores, int[] outputIndices, int[] outputTypes,
-            int[] outputAutoCommitFirstWordConfidence);
-    private static native float calcNormalizedScoreNative(int[] before, int[] after, int score);
-    private static native int editDistanceNative(int[] before, int[] after);
-    private static native void addUnigramWordNative(long dict, int[] word, int probability);
-    private static native void addBigramWordsNative(long dict, int[] word0, int[] word1,
-            int probability);
-    private static native void removeBigramWordsNative(long dict, int[] word0, int[] word1);
-    private static native int calculateProbabilityNative(long dict, int unigramProbability,
-            int bigramProbability);
-    private static native String getPropertyNative(long dict, String query);
-
-    @UsedForTesting
-    public static boolean createEmptyDictFile(final String filePath, final long dictVersion,
+    /**
+     * Constructs binary dictionary on memory.
+     * @param filename the name of the file used to flush.
+     * @param useFullEditDistance whether to use the full edit distance in suggestions
+     * @param dictType the dictionary type, as a human-readable string
+     * @param formatVersion the format version of the dictionary
+     * @param attributeMap the attributes of the dictionary
+     */
+    public BinaryDictionary(final String filename, final boolean useFullEditDistance,
+            final Locale locale, final String dictType, final long formatVersion,
             final Map<String, String> attributeMap) {
+        super(dictType);
+        mLocale = locale;
+        mDictSize = 0;
+        mDictFilePath = filename;
+        // On memory dictionary is always updatable.
+        mIsUpdatable = true;
+        mHasUpdated = false;
+        mUseFullEditDistance = useFullEditDistance;
         final String[] keyArray = new String[attributeMap.size()];
         final String[] valueArray = new String[attributeMap.size()];
         int index = 0;
@@ -152,80 +154,172 @@
             valueArray[index] = attributeMap.get(key);
             index++;
         }
-        return createEmptyDictFileNative(filePath, dictVersion, keyArray, valueArray);
+        mNativeDict = createOnMemoryNative(formatVersion, locale.toString(), keyArray, valueArray);
     }
 
+
+    static {
+        JniUtils.loadNativeLibrary();
+    }
+
+    private static native long openNative(String sourceDir, long dictOffset, long dictSize,
+            boolean isUpdatable);
+    private static native long createOnMemoryNative(long formatVersion,
+            String locale, String[] attributeKeyStringArray, String[] attributeValueStringArray);
+    private static native void getHeaderInfoNative(long dict, int[] outHeaderSize,
+            int[] outFormatVersion, ArrayList<int[]> outAttributeKeys,
+            ArrayList<int[]> outAttributeValues);
+    private static native boolean flushNative(long dict, String filePath);
+    private static native boolean needsToRunGCNative(long dict, boolean mindsBlockByGC);
+    private static native boolean flushWithGCNative(long dict, String filePath);
+    private static native void closeNative(long dict);
+    private static native int getFormatVersionNative(long dict);
+    private static native int getProbabilityNative(long dict, int[] word);
+    private static native int getMaxProbabilityOfExactMatchesNative(long dict, int[] word);
+    private static native int getNgramProbabilityNative(long dict, int[][] prevWordCodePointArrays,
+            boolean[] isBeginningOfSentenceArray, int[] word);
+    private static native void getWordPropertyNative(long dict, int[] word,
+            boolean isBeginningOfSentence, int[] outCodePoints, boolean[] outFlags,
+            int[] outProbabilityInfo, ArrayList<int[]> outBigramTargets,
+            ArrayList<int[]> outBigramProbabilityInfo, ArrayList<int[]> outShortcutTargets,
+            ArrayList<Integer> outShortcutProbabilities);
+    private static native int getNextWordNative(long dict, int token, int[] outCodePoints,
+            boolean[] outIsBeginningOfSentence);
+    private static native void getSuggestionsNative(long dict, long proximityInfo,
+            long traverseSession, int[] xCoordinates, int[] yCoordinates, int[] times,
+            int[] pointerIds, int[] inputCodePoints, int inputSize, int[] suggestOptions,
+            int[][] prevWordCodePointArrays, boolean[] isBeginningOfSentenceArray,
+            int[] outputSuggestionCount, int[] outputCodePoints, int[] outputScores,
+            int[] outputIndices, int[] outputTypes, int[] outputAutoCommitFirstWordConfidence,
+            float[] inOutLanguageWeight);
+    private static native boolean addUnigramEntryNative(long dict, int[] word, int probability,
+            int[] shortcutTarget, int shortcutProbability, boolean isBeginningOfSentence,
+            boolean isNotAWord, boolean isBlacklisted, int timestamp);
+    private static native boolean removeUnigramEntryNative(long dict, int[] word);
+    private static native boolean addNgramEntryNative(long dict,
+            int[][] prevWordCodePointArrays, boolean[] isBeginningOfSentenceArray,
+            int[] word, int probability, int timestamp);
+    private static native boolean removeNgramEntryNative(long dict,
+            int[][] prevWordCodePointArrays, boolean[] isBeginningOfSentenceArray, int[] word);
+    private static native int addMultipleDictionaryEntriesNative(long dict,
+            LanguageModelParam[] languageModelParams, int startIndex);
+    private static native String getPropertyNative(long dict, String query);
+    private static native boolean isCorruptedNative(long dict);
+    private static native boolean migrateNative(long dict, String dictFilePath,
+            long newFormatVersion);
+
     // TODO: Move native dict into session
     private final void loadDictionary(final String path, final long startOffset,
             final long length, final boolean isUpdatable) {
+        mHasUpdated = false;
         mNativeDict = openNative(path, startOffset, length, isUpdatable);
     }
 
+    // TODO: Check isCorrupted() for main dictionaries.
+    public boolean isCorrupted() {
+        if (!isValidDictionary()) {
+            return false;
+        }
+        if (!isCorruptedNative(mNativeDict)) {
+            return false;
+        }
+        // TODO: Record the corruption.
+        Log.e(TAG, "BinaryDictionary (" + mDictFilePath + ") is corrupted.");
+        Log.e(TAG, "locale: " + mLocale);
+        Log.e(TAG, "dict size: " + mDictSize);
+        Log.e(TAG, "updatable: " + mIsUpdatable);
+        return true;
+    }
+
+    public DictionaryHeader getHeader() throws UnsupportedFormatException {
+        if (mNativeDict == 0) {
+            return null;
+        }
+        final int[] outHeaderSize = new int[1];
+        final int[] outFormatVersion = new int[1];
+        final ArrayList<int[]> outAttributeKeys = new ArrayList<>();
+        final ArrayList<int[]> outAttributeValues = new ArrayList<>();
+        getHeaderInfoNative(mNativeDict, outHeaderSize, outFormatVersion, outAttributeKeys,
+                outAttributeValues);
+        final HashMap<String, String> attributes = new HashMap<>();
+        for (int i = 0; i < outAttributeKeys.size(); i++) {
+            final String attributeKey = StringUtils.getStringFromNullTerminatedCodePointArray(
+                    outAttributeKeys.get(i));
+            final String attributeValue = StringUtils.getStringFromNullTerminatedCodePointArray(
+                    outAttributeValues.get(i));
+            attributes.put(attributeKey, attributeValue);
+        }
+        final boolean hasHistoricalInfo = DictionaryHeader.ATTRIBUTE_VALUE_TRUE.equals(
+                attributes.get(DictionaryHeader.HAS_HISTORICAL_INFO_KEY));
+        return new DictionaryHeader(outHeaderSize[0], new DictionaryOptions(attributes),
+                new FormatSpec.FormatOptions(outFormatVersion[0], hasHistoricalInfo));
+    }
+
     @Override
     public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions, 0 /* sessionId */);
-    }
-
-    @Override
-    public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
-            final int sessionId) {
-        if (!isValidDictionary()) return null;
-
-        Arrays.fill(mInputCodePoints, Constants.NOT_A_CODE);
-        // TODO: toLowerCase in the native code
-        final int[] prevWordCodePointArray = (null == prevWord)
-                ? null : StringUtils.toCodePointArray(prevWord);
-        final int composerSize = composer.size();
-
-        final boolean isGesture = composer.isBatchMode();
-        if (composerSize <= 1 || !isGesture) {
-            if (composerSize > MAX_WORD_LENGTH - 1) return null;
-            for (int i = 0; i < composerSize; i++) {
-                mInputCodePoints[i] = composer.getCodeAt(i);
-            }
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
+            final int sessionId, final float[] inOutLanguageWeight) {
+        if (!isValidDictionary()) {
+            return null;
         }
-
-        final InputPointers ips = composer.getInputPointers();
-        final int inputSize = isGesture ? ips.getPointerSize() : composerSize;
-        mNativeSuggestOptions.setIsGesture(isGesture);
-        mNativeSuggestOptions.setAdditionalFeaturesOptions(additionalFeaturesOptions);
-        // proximityInfo and/or prevWordForBigrams may not be null.
-        final int count = getSuggestionsNative(mNativeDict, proximityInfo.getNativeProximityInfo(),
-                getTraverseSession(sessionId).getSession(), ips.getXCoordinates(),
-                ips.getYCoordinates(), ips.getTimes(), ips.getPointerIds(), mInputCodePoints,
-                inputSize, 0 /* commitPoint */, mNativeSuggestOptions.getOptions(),
-                prevWordCodePointArray, mOutputCodePoints, mOutputScores, mSpaceIndices,
-                mOutputTypes, mOutputAutoCommitFirstWordConfidence);
-        final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList();
+        final DicTraverseSession session = getTraverseSession(sessionId);
+        Arrays.fill(session.mInputCodePoints, Constants.NOT_A_CODE);
+        prevWordsInfo.outputToArray(session.mPrevWordCodePointArrays,
+                session.mIsBeginningOfSentenceArray);
+        final InputPointers inputPointers = composer.getInputPointers();
+        final boolean isGesture = composer.isBatchMode();
+        final int inputSize;
+        if (!isGesture) {
+            inputSize = composer.copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount(
+                    session.mInputCodePoints);
+            if (inputSize < 0) {
+                return null;
+            }
+        } else {
+            inputSize = inputPointers.getPointerSize();
+        }
+        session.mNativeSuggestOptions.setUseFullEditDistance(mUseFullEditDistance);
+        session.mNativeSuggestOptions.setIsGesture(isGesture);
+        session.mNativeSuggestOptions.setBlockOffensiveWords(
+                settingsValuesForSuggestion.mBlockPotentiallyOffensive);
+        session.mNativeSuggestOptions.setSpaceAwareGestureEnabled(
+                settingsValuesForSuggestion.mSpaceAwareGestureEnabled);
+        session.mNativeSuggestOptions.setAdditionalFeaturesOptions(
+                settingsValuesForSuggestion.mAdditionalFeaturesSettingValues);
+        if (inOutLanguageWeight != null) {
+            session.mInputOutputLanguageWeight[0] = inOutLanguageWeight[0];
+        } else {
+            session.mInputOutputLanguageWeight[0] = Dictionary.NOT_A_LANGUAGE_WEIGHT;
+        }
+        // TOOD: Pass multiple previous words information for n-gram.
+        getSuggestionsNative(mNativeDict, proximityInfo.getNativeProximityInfo(),
+                getTraverseSession(sessionId).getSession(), inputPointers.getXCoordinates(),
+                inputPointers.getYCoordinates(), inputPointers.getTimes(),
+                inputPointers.getPointerIds(), session.mInputCodePoints, inputSize,
+                session.mNativeSuggestOptions.getOptions(), session.mPrevWordCodePointArrays,
+                session.mIsBeginningOfSentenceArray, session.mOutputSuggestionCount,
+                session.mOutputCodePoints, session.mOutputScores, session.mSpaceIndices,
+                session.mOutputTypes, session.mOutputAutoCommitFirstWordConfidence,
+                session.mInputOutputLanguageWeight);
+        if (inOutLanguageWeight != null) {
+            inOutLanguageWeight[0] = session.mInputOutputLanguageWeight[0];
+        }
+        final int count = session.mOutputSuggestionCount[0];
+        final ArrayList<SuggestedWordInfo> suggestions = new ArrayList<>();
         for (int j = 0; j < count; ++j) {
-            final int start = j * MAX_WORD_LENGTH;
+            final int start = j * Constants.DICTIONARY_MAX_WORD_LENGTH;
             int len = 0;
-            while (len < MAX_WORD_LENGTH && mOutputCodePoints[start + len] != 0) {
+            while (len < Constants.DICTIONARY_MAX_WORD_LENGTH
+                    && session.mOutputCodePoints[start + len] != 0) {
                 ++len;
             }
             if (len > 0) {
-                final int flags = mOutputTypes[j] & SuggestedWordInfo.KIND_MASK_FLAGS;
-                if (blockOffensiveWords
-                        && 0 != (flags & SuggestedWordInfo.KIND_FLAG_POSSIBLY_OFFENSIVE)
-                        && 0 == (flags & SuggestedWordInfo.KIND_FLAG_EXACT_MATCH)) {
-                    // If we block potentially offensive words, and if the word is possibly
-                    // offensive, then we don't output it unless it's also an exact match.
-                    continue;
-                }
-                final int kind = mOutputTypes[j] & SuggestedWordInfo.KIND_MASK_KIND;
-                final int score = SuggestedWordInfo.KIND_WHITELIST == kind
-                        ? SuggestedWordInfo.MAX_SCORE : mOutputScores[j];
-                // TODO: check that all users of the `kind' parameter are ready to accept
-                // flags too and pass mOutputTypes[j] instead of kind
-                suggestions.add(new SuggestedWordInfo(new String(mOutputCodePoints, start, len),
-                        score, kind, this /* sourceDict */,
-                        mSpaceIndices[j] /* indexOfTouchPointOfSecondWord */,
-                        mOutputAutoCommitFirstWordConfidence[0]));
+                suggestions.add(new SuggestedWordInfo(
+                        new String(session.mOutputCodePoints, start, len),
+                        session.mOutputScores[j], session.mOutputTypes[j], this /* sourceDict */,
+                        session.mSpaceIndices[j] /* indexOfTouchPointOfSecondWord */,
+                        session.mOutputAutoCommitFirstWordConfidence[0]));
             }
         }
         return suggestions;
@@ -235,91 +329,220 @@
         return mNativeDict != 0;
     }
 
-    public static float calcNormalizedScore(final String before, final String after,
-            final int score) {
-        return calcNormalizedScoreNative(StringUtils.toCodePointArray(before),
-                StringUtils.toCodePointArray(after), score);
-    }
-
-    public static int editDistance(final String before, final String after) {
-        if (before == null || after == null) {
-            throw new IllegalArgumentException();
-        }
-        return editDistanceNative(StringUtils.toCodePointArray(before),
-                StringUtils.toCodePointArray(after));
+    public int getFormatVersion() {
+        return getFormatVersionNative(mNativeDict);
     }
 
     @Override
-    public boolean isValidWord(final String word) {
+    public boolean isInDictionary(final String word) {
         return getFrequency(word) != NOT_A_PROBABILITY;
     }
 
     @Override
     public int getFrequency(final String word) {
-        if (word == null) return NOT_A_PROBABILITY;
+        if (TextUtils.isEmpty(word)) return NOT_A_PROBABILITY;
         int[] codePoints = StringUtils.toCodePointArray(word);
         return getProbabilityNative(mNativeDict, codePoints);
     }
 
-    // TODO: Add a batch process version (isValidBigramMultiple?) to avoid excessive numbers of jni
-    // calls when checking for changes in an entire dictionary.
-    public boolean isValidBigram(final String word0, final String word1) {
-        return getBigramProbability(word0, word1) != NOT_A_PROBABILITY;
+    @Override
+    public int getMaxFrequencyOfExactMatches(final String word) {
+        if (TextUtils.isEmpty(word)) return NOT_A_PROBABILITY;
+        int[] codePoints = StringUtils.toCodePointArray(word);
+        return getMaxProbabilityOfExactMatchesNative(mNativeDict, codePoints);
     }
 
-    public int getBigramProbability(final String word0, final String word1) {
-        if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) return NOT_A_PROBABILITY;
-        final int[] codePoints0 = StringUtils.toCodePointArray(word0);
-        final int[] codePoints1 = StringUtils.toCodePointArray(word1);
-        return getBigramProbabilityNative(mNativeDict, codePoints0, codePoints1);
+    @UsedForTesting
+    public boolean isValidNgram(final PrevWordsInfo prevWordsInfo, final String word) {
+        return getNgramProbability(prevWordsInfo, word) != NOT_A_PROBABILITY;
     }
 
-    // Add a unigram entry to binary dictionary in native code.
-    public void addUnigramWord(final String word, final int probability) {
-        if (TextUtils.isEmpty(word)) {
-            return;
+    public int getNgramProbability(final PrevWordsInfo prevWordsInfo, final String word) {
+        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
+            return NOT_A_PROBABILITY;
+        }
+        final int[][] prevWordCodePointArrays = new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
+        final boolean[] isBeginningOfSentenceArray =
+                new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
+        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
+        return getNgramProbabilityNative(mNativeDict, prevWordCodePointArrays,
+                isBeginningOfSentenceArray, wordCodePoints);
+    }
+
+    public WordProperty getWordProperty(final String word, final boolean isBeginningOfSentence) {
+        if (word == null) {
+            return null;
         }
         final int[] codePoints = StringUtils.toCodePointArray(word);
-        addUnigramWordNative(mNativeDict, codePoints, probability);
+        final int[] outCodePoints = new int[Constants.DICTIONARY_MAX_WORD_LENGTH];
+        final boolean[] outFlags = new boolean[FORMAT_WORD_PROPERTY_OUTPUT_FLAG_COUNT];
+        final int[] outProbabilityInfo =
+                new int[FORMAT_WORD_PROPERTY_OUTPUT_PROBABILITY_INFO_COUNT];
+        final ArrayList<int[]> outBigramTargets = new ArrayList<>();
+        final ArrayList<int[]> outBigramProbabilityInfo = new ArrayList<>();
+        final ArrayList<int[]> outShortcutTargets = new ArrayList<>();
+        final ArrayList<Integer> outShortcutProbabilities = new ArrayList<>();
+        getWordPropertyNative(mNativeDict, codePoints, isBeginningOfSentence, outCodePoints,
+                outFlags, outProbabilityInfo, outBigramTargets, outBigramProbabilityInfo,
+                outShortcutTargets, outShortcutProbabilities);
+        return new WordProperty(codePoints,
+                outFlags[FORMAT_WORD_PROPERTY_IS_NOT_A_WORD_INDEX],
+                outFlags[FORMAT_WORD_PROPERTY_IS_BLACKLISTED_INDEX],
+                outFlags[FORMAT_WORD_PROPERTY_HAS_BIGRAMS_INDEX],
+                outFlags[FORMAT_WORD_PROPERTY_HAS_SHORTCUTS_INDEX],
+                outFlags[FORMAT_WORD_PROPERTY_IS_BEGINNING_OF_SENTENCE_INDEX], outProbabilityInfo,
+                outBigramTargets, outBigramProbabilityInfo, outShortcutTargets,
+                outShortcutProbabilities);
     }
 
-    // Add a bigram entry to binary dictionary in native code.
-    public void addBigramWords(final String word0, final String word1, final int probability) {
-        if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
-            return;
+    public static class GetNextWordPropertyResult {
+        public WordProperty mWordProperty;
+        public int mNextToken;
+
+        public GetNextWordPropertyResult(final WordProperty wordProperty, final int nextToken) {
+            mWordProperty = wordProperty;
+            mNextToken = nextToken;
         }
-        final int[] codePoints0 = StringUtils.toCodePointArray(word0);
-        final int[] codePoints1 = StringUtils.toCodePointArray(word1);
-        addBigramWordsNative(mNativeDict, codePoints0, codePoints1, probability);
     }
 
-    // Remove a bigram entry form binary dictionary in native code.
-    public void removeBigramWords(final String word0, final String word1) {
-        if (TextUtils.isEmpty(word0) || TextUtils.isEmpty(word1)) {
-            return;
+    /**
+     * Method to iterate all words in the dictionary for makedict.
+     * If token is 0, this method newly starts iterating the dictionary.
+     */
+    public GetNextWordPropertyResult getNextWordProperty(final int token) {
+        final int[] codePoints = new int[Constants.DICTIONARY_MAX_WORD_LENGTH];
+        final boolean[] isBeginningOfSentence = new boolean[1];
+        final int nextToken = getNextWordNative(mNativeDict, token, codePoints,
+                isBeginningOfSentence);
+        final String word = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints);
+        return new GetNextWordPropertyResult(
+                getWordProperty(word, isBeginningOfSentence[0]), nextToken);
+    }
+
+    // Add a unigram entry to binary dictionary with unigram attributes in native code.
+    public boolean addUnigramEntry(final String word, final int probability,
+            final String shortcutTarget, final int shortcutProbability,
+            final boolean isBeginningOfSentence, final boolean isNotAWord,
+            final boolean isBlacklisted, final int timestamp) {
+        if (word == null || (word.isEmpty() && !isBeginningOfSentence)) {
+            return false;
         }
-        final int[] codePoints0 = StringUtils.toCodePointArray(word0);
-        final int[] codePoints1 = StringUtils.toCodePointArray(word1);
-        removeBigramWordsNative(mNativeDict, codePoints0, codePoints1);
+        final int[] codePoints = StringUtils.toCodePointArray(word);
+        final int[] shortcutTargetCodePoints = (shortcutTarget != null) ?
+                StringUtils.toCodePointArray(shortcutTarget) : null;
+        if (!addUnigramEntryNative(mNativeDict, codePoints, probability, shortcutTargetCodePoints,
+                shortcutProbability, isBeginningOfSentence, isNotAWord, isBlacklisted, timestamp)) {
+            return false;
+        }
+        mHasUpdated = true;
+        return true;
+    }
+
+    // Remove a unigram entry from the binary dictionary in native code.
+    public boolean removeUnigramEntry(final String word) {
+        if (TextUtils.isEmpty(word)) {
+            return false;
+        }
+        final int[] codePoints = StringUtils.toCodePointArray(word);
+        if (!removeUnigramEntryNative(mNativeDict, codePoints)) {
+            return false;
+        }
+        mHasUpdated = true;
+        return true;
+    }
+
+    // Add an n-gram entry to the binary dictionary with timestamp in native code.
+    public boolean addNgramEntry(final PrevWordsInfo prevWordsInfo, final String word,
+            final int probability, final int timestamp) {
+        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
+            return false;
+        }
+        final int[][] prevWordCodePointArrays = new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
+        final boolean[] isBeginningOfSentenceArray =
+                new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
+        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
+        if (!addNgramEntryNative(mNativeDict, prevWordCodePointArrays,
+                isBeginningOfSentenceArray, wordCodePoints, probability, timestamp)) {
+            return false;
+        }
+        mHasUpdated = true;
+        return true;
+    }
+
+    // Remove an n-gram entry from the binary dictionary in native code.
+    public boolean removeNgramEntry(final PrevWordsInfo prevWordsInfo, final String word) {
+        if (!prevWordsInfo.isValid() || TextUtils.isEmpty(word)) {
+            return false;
+        }
+        final int[][] prevWordCodePointArrays = new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
+        final boolean[] isBeginningOfSentenceArray =
+                new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        prevWordsInfo.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray);
+        final int[] wordCodePoints = StringUtils.toCodePointArray(word);
+        if (!removeNgramEntryNative(mNativeDict, prevWordCodePointArrays,
+                isBeginningOfSentenceArray, wordCodePoints)) {
+            return false;
+        }
+        mHasUpdated = true;
+        return true;
+    }
+
+    public void addMultipleDictionaryEntries(final LanguageModelParam[] languageModelParams) {
+        if (!isValidDictionary()) return;
+        int processedParamCount = 0;
+        while (processedParamCount < languageModelParams.length) {
+            if (needsToRunGC(true /* mindsBlockByGC */)) {
+                flushWithGC();
+            }
+            processedParamCount = addMultipleDictionaryEntriesNative(mNativeDict,
+                    languageModelParams, processedParamCount);
+            mHasUpdated = true;
+            if (processedParamCount <= 0) {
+                return;
+            }
+        }
     }
 
     private void reopen() {
         close();
         final File dictFile = new File(mDictFilePath);
-        mNativeDict = openNative(dictFile.getAbsolutePath(), 0 /* startOffset */,
-                dictFile.length(), true /* isUpdatable */);
+        // WARNING: Because we pass 0 as the offset and file.length() as the length, this can
+        // only be called for actual files. Right now it's only called by the flush() family of
+        // functions, which require an updatable dictionary, so it's okay. But beware.
+        loadDictionary(dictFile.getAbsolutePath(), 0 /* startOffset */,
+                dictFile.length(), mIsUpdatable);
     }
 
-    public void flush() {
-        if (!isValidDictionary()) return;
-        flushNative(mNativeDict, mDictFilePath);
-        reopen();
+    // Flush to dict file if the dictionary has been updated.
+    public boolean flush() {
+        if (!isValidDictionary()) return false;
+        if (mHasUpdated) {
+            if (!flushNative(mNativeDict, mDictFilePath)) {
+                return false;
+            }
+            reopen();
+        }
+        return true;
     }
 
-    public void flushWithGC() {
-        if (!isValidDictionary()) return;
-        flushWithGCNative(mNativeDict, mDictFilePath);
+    // Run GC and flush to dict file if the dictionary has been updated.
+    public boolean flushWithGCIfHasUpdated() {
+        if (mHasUpdated) {
+            return flushWithGC();
+        }
+        return true;
+    }
+
+    // Run GC and flush to dict file.
+    public boolean flushWithGC() {
+        if (!isValidDictionary()) return false;
+        if (!flushWithGCNative(mNativeDict, mDictFilePath)) {
+            return false;
+        }
         reopen();
+        return true;
     }
 
     /**
@@ -333,14 +556,47 @@
         return needsToRunGCNative(mNativeDict, mindsBlockByGC);
     }
 
-    @UsedForTesting
-    public int calculateProbability(final int unigramProbability, final int bigramProbability) {
-        if (!isValidDictionary()) return NOT_A_PROBABILITY;
-        return calculateProbabilityNative(mNativeDict, unigramProbability, bigramProbability);
+    public boolean migrateTo(final int newFormatVersion) {
+        if (!isValidDictionary()) {
+            return false;
+        }
+        final File isMigratingDir =
+                new File(mDictFilePath + DIR_NAME_SUFFIX_FOR_RECORD_MIGRATION);
+        if (isMigratingDir.exists()) {
+            isMigratingDir.delete();
+            Log.e(TAG, "Previous migration attempt failed probably due to a crash. "
+                        + "Giving up using the old dictionary (" + mDictFilePath + ").");
+            return false;
+        }
+        if (!isMigratingDir.mkdir()) {
+            Log.e(TAG, "Cannot create a dir (" + isMigratingDir.getAbsolutePath()
+                    + ") to record migration.");
+            return false;
+        }
+        try {
+            final String tmpDictFilePath = mDictFilePath + DICT_FILE_NAME_SUFFIX_FOR_MIGRATION;
+            if (!migrateNative(mNativeDict, tmpDictFilePath, newFormatVersion)) {
+                return false;
+            }
+            close();
+            final File dictFile = new File(mDictFilePath);
+            final File tmpDictFile = new File(tmpDictFilePath);
+            if (!FileUtils.deleteRecursively(dictFile)) {
+                return false;
+            }
+            if (!BinaryDictionaryUtils.renameDict(tmpDictFile, dictFile)) {
+                return false;
+            }
+            loadDictionary(dictFile.getAbsolutePath(), 0 /* startOffset */,
+                    dictFile.length(), mIsUpdatable);
+            return true;
+        } finally {
+            isMigratingDir.delete();
+        }
     }
 
     @UsedForTesting
-    public String getPropertyForTests(String query) {
+    public String getPropertyForTest(final String query) {
         if (!isValidDictionary()) return "";
         return getPropertyNative(mNativeDict, query);
     }
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index 722a829..10b1f1b 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -28,7 +28,7 @@
 import android.util.Log;
 
 import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.dictionarypack.MD5Calculator;
 import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
 import com.android.inputmethod.latin.utils.DictionaryInfoUtils.DictionaryInfo;
 import com.android.inputmethod.latin.utils.FileTransforms;
@@ -38,12 +38,13 @@
 import java.io.BufferedOutputStream;
 import java.io.Closeable;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
@@ -98,7 +99,7 @@
      * This creates a URI builder able to build a URI pointing to the dictionary
      * pack content provider for a specific dictionary id.
      */
-    private static Uri.Builder getProviderUriBuilder(final String path) {
+    public static Uri.Builder getProviderUriBuilder(final String path) {
         return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
                 .authority(DictionaryPackConstants.AUTHORITY).appendPath(path);
     }
@@ -142,7 +143,7 @@
         final ContentProviderClient client = context.getContentResolver().
                 acquireContentProviderClient(getProviderUriBuilder("").build());
         if (null == client) return Collections.<WordListInfo>emptyList();
-
+        Cursor cursor = null;
         try {
             final Uri.Builder builder = getContentUriBuilderForType(clientId, client,
                     QUERY_PATH_DICT_INFO, locale.toString());
@@ -154,24 +155,23 @@
             final boolean isProtocolV2 = (QUERY_PARAMETER_PROTOCOL_VALUE.equals(
                     queryUri.getQueryParameter(QUERY_PARAMETER_PROTOCOL)));
 
-            Cursor c = client.query(queryUri, DICTIONARY_PROJECTION, null, null, null);
-            if (isProtocolV2 && null == c) {
+            cursor = client.query(queryUri, DICTIONARY_PROJECTION, null, null, null);
+            if (isProtocolV2 && null == cursor) {
                 reinitializeClientRecordInDictionaryContentProvider(context, client, clientId);
-                c = client.query(queryUri, DICTIONARY_PROJECTION, null, null, null);
+                cursor = client.query(queryUri, DICTIONARY_PROJECTION, null, null, null);
             }
-            if (null == c) return Collections.<WordListInfo>emptyList();
-            if (c.getCount() <= 0 || !c.moveToFirst()) {
-                c.close();
+            if (null == cursor) return Collections.<WordListInfo>emptyList();
+            if (cursor.getCount() <= 0 || !cursor.moveToFirst()) {
                 return Collections.<WordListInfo>emptyList();
             }
-            final ArrayList<WordListInfo> list = CollectionUtils.newArrayList();
+            final ArrayList<WordListInfo> list = new ArrayList<>();
             do {
-                final String wordListId = c.getString(0);
-                final String wordListLocale = c.getString(1);
+                final String wordListId = cursor.getString(0);
+                final String wordListLocale = cursor.getString(1);
+                final String wordListRawChecksum = cursor.getString(2);
                 if (TextUtils.isEmpty(wordListId)) continue;
-                list.add(new WordListInfo(wordListId, wordListLocale));
-            } while (c.moveToNext());
-            c.close();
+                list.add(new WordListInfo(wordListId, wordListLocale, wordListRawChecksum));
+            } while (cursor.moveToNext());
             return list;
         } catch (RemoteException e) {
             // The documentation is unclear as to in which cases this may happen, but it probably
@@ -186,6 +186,9 @@
             Log.e(TAG, "Unexpected exception communicating with the dictionary pack", e);
             return Collections.<WordListInfo>emptyList();
         } finally {
+            if (null != cursor) {
+                cursor.close();
+            }
             client.release();
         }
     }
@@ -216,7 +219,8 @@
      * and creating it (and its containing directory) if necessary.
      */
     private static void cacheWordList(final String wordlistId, final String locale,
-            final ContentProviderClient providerClient, final Context context) {
+            final String rawChecksum, final ContentProviderClient providerClient,
+            final Context context) {
         final int COMPRESSED_CRYPTED_COMPRESSED = 0;
         final int CRYPTED_COMPRESSED = 1;
         final int COMPRESSED_CRYPTED = 2;
@@ -298,6 +302,13 @@
                 checkMagicAndCopyFileTo(bufferedInputStream, bufferedOutputStream);
                 bufferedOutputStream.flush();
                 bufferedOutputStream.close();
+                final String actualRawChecksum = MD5Calculator.checksum(
+                        new BufferedInputStream(new FileInputStream(outputFile)));
+                Log.i(TAG, "Computed checksum for downloaded dictionary. Expected = " + rawChecksum
+                        + " ; actual = " + actualRawChecksum);
+                if (!TextUtils.isEmpty(rawChecksum) && !rawChecksum.equals(actualRawChecksum)) {
+                    throw new IOException("Could not decode the file correctly : checksum differs");
+                }
                 final File finalFile = new File(finalFileName);
                 finalFile.delete();
                 if (!outputFile.renameTo(finalFile)) {
@@ -339,15 +350,25 @@
         Log.e(TAG, "Could not copy a word list. Will not be able to use it.");
         // If we can't copy it we should warn the dictionary provider so that it can mark it
         // as invalid.
-        wordListUriBuilder.appendQueryParameter(QUERY_PARAMETER_DELETE_RESULT,
-                QUERY_PARAMETER_FAILURE);
+        reportBrokenFileToDictionaryProvider(providerClient, clientId, wordlistId);
+    }
+
+    public static boolean reportBrokenFileToDictionaryProvider(
+            final ContentProviderClient providerClient, final String clientId,
+            final String wordlistId) {
         try {
+            final Uri.Builder wordListUriBuilder = getContentUriBuilderForType(clientId,
+                    providerClient, QUERY_PATH_DATAFILE, wordlistId /* extraPath */);
+            wordListUriBuilder.appendQueryParameter(QUERY_PARAMETER_DELETE_RESULT,
+                    QUERY_PARAMETER_FAILURE);
             if (0 >= providerClient.delete(wordListUriBuilder.build(), null, null)) {
-                Log.e(TAG, "In addition, we were unable to delete it.");
+                Log.e(TAG, "Unable to delete a word list.");
             }
         } catch (RemoteException e) {
-            Log.e(TAG, "In addition, communication with the dictionary provider was cut", e);
+            Log.e(TAG, "Communication with the dictionary provider was cut", e);
+            return false;
         }
+        return true;
     }
 
     // Ideally the two following methods should be merged, but AssetFileDescriptor does not
@@ -397,7 +418,7 @@
             final List<WordListInfo> idList = getWordListWordListInfos(locale, context,
                     hasDefaultWordList);
             for (WordListInfo id : idList) {
-                cacheWordList(id.mId, id.mLocale, providerClient, context);
+                cacheWordList(id.mId, id.mLocale, id.mRawChecksum, providerClient, context);
             }
         } finally {
             providerClient.release();
@@ -432,8 +453,9 @@
 
         // Actually copy the file
         final byte[] buffer = new byte[FILE_READ_BUFFER_SIZE];
-        for (int readBytes = input.read(buffer); readBytes >= 0; readBytes = input.read(buffer))
+        for (int readBytes = input.read(buffer); readBytes >= 0; readBytes = input.read(buffer)) {
             output.write(buffer, 0, readBytes);
+        }
         input.close();
     }
 
@@ -478,8 +500,7 @@
      * @param context the context for resources and providers.
      * @param clientId the client ID to use.
      */
-    public static void initializeClientRecordHelper(final Context context,
-            final String clientId) {
+    public static void initializeClientRecordHelper(final Context context, final String clientId) {
         try {
             final ContentProviderClient client = context.getContentResolver().
                     acquireContentProviderClient(getProviderUriBuilder("").build());
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 181ad17..867c186 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -21,11 +21,9 @@
 import android.content.res.AssetFileDescriptor;
 import android.util.Log;
 
-import com.android.inputmethod.latin.makedict.DictDecoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
 import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
 import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
 import com.android.inputmethod.latin.utils.LocaleUtils;
 
@@ -112,7 +110,7 @@
         public DictPackSettings(final Context context) {
             mDictPreferences = null == context ? null
                     : context.getSharedPreferences(COMMON_PREFERENCES_NAME,
-                            Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
+                            Context.MODE_MULTI_PROCESS);
         }
         public boolean isWordListActive(final String dictId) {
             if (null == mDictPreferences) {
@@ -161,7 +159,7 @@
     public static File[] getCachedWordLists(final String locale, final Context context) {
         final File[] directoryList = DictionaryInfoUtils.getCachedDirectoryList(context);
         if (null == directoryList) return EMPTY_FILE_ARRAY;
-        final HashMap<String, FileAndMatchLevel> cacheFiles = CollectionUtils.newHashMap();
+        final HashMap<String, FileAndMatchLevel> cacheFiles = new HashMap<>();
         for (File directory : directoryList) {
             if (!directory.isDirectory()) continue;
             final String dirLocale =
@@ -226,12 +224,10 @@
     // ## HACK ## we prevent usage of a dictionary before version 18. The reason for this is, since
     // those do not include whitelist entries, the new code with an old version of the dictionary
     // would lose whitelist functionality.
-    private static boolean hackCanUseDictionaryFile(final Locale locale, final File f) {
+    private static boolean hackCanUseDictionaryFile(final Locale locale, final File file) {
         try {
             // Read the version of the file
-            final DictDecoder dictDecoder = FormatSpec.getDictDecoder(f);
-            final FileHeader header = dictDecoder.readHeader();
-
+            final DictionaryHeader header = BinaryDictionaryUtils.getHeader(file);
             final String version = header.mDictionaryOptions.mAttributes.get(VERSION_KEY);
             if (null == version) {
                 // No version in the options : the format is unexpected
@@ -276,7 +272,7 @@
         final DictPackSettings dictPackSettings = new DictPackSettings(context);
 
         boolean foundMainDict = false;
-        final ArrayList<AssetFileAddress> fileList = CollectionUtils.newArrayList();
+        final ArrayList<AssetFileAddress> fileList = new ArrayList<>();
         // cachedWordLists may not be null, see doc for getCachedDictionaryList
         for (final File f : cachedWordLists) {
             final String wordListId = DictionaryInfoUtils.getWordListIdFromFileName(f.getName());
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index 9a96530..43af66e 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -70,42 +70,56 @@
 
         public static final class ExtraValue {
             /**
-             * The subtype extra value used to indicate that the subtype keyboard layout is capable
-             * for typing ASCII characters.
+             * The subtype extra value used to indicate that this subtype is capable of
+             * entering ASCII characters.
              */
             public static final String ASCII_CAPABLE = "AsciiCapable";
 
             /**
-             * The subtype extra value used to indicate that the subtype keyboard layout is capable
-             * for typing EMOJI characters.
+             * The subtype extra value used to indicate that this subtype is enabled
+             * when the default subtype is not marked as ascii capable.
+             */
+            public static final String ENABLED_WHEN_DEFAULT_IS_NOT_ASCII_CAPABLE =
+                    "EnabledWhenDefaultIsNotAsciiCapable";
+
+            /**
+             * The subtype extra value used to indicate that this subtype is capable of
+             * entering emoji characters.
              */
             public static final String EMOJI_CAPABLE = "EmojiCapable";
+
             /**
-             * The subtype extra value used to indicate that the subtype require network connection
-             * to work.
+             * The subtype extra value used to indicate that this subtype requires a network
+             * connection to work.
              */
             public static final String REQ_NETWORK_CONNECTIVITY = "requireNetworkConnectivity";
 
             /**
-             * The subtype extra value used to indicate that the subtype display name contains "%s"
-             * for replacement mark and it should be replaced by this extra value.
+             * The subtype extra value used to indicate that the display name of this subtype
+             * contains a "%s" for printf-like replacement and it should be replaced by
+             * this extra value.
              * This extra value is supported on JellyBean and later.
              */
             public static final String UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME =
                     "UntranslatableReplacementStringInSubtypeName";
 
             /**
-             * The subtype extra value used to indicate that the subtype keyboard layout set name.
+             * The subtype extra value used to indicate this subtype keyboard layout set name.
              * This extra value is private to LatinIME.
              */
             public static final String KEYBOARD_LAYOUT_SET = "KeyboardLayoutSet";
 
             /**
-             * The subtype extra value used to indicate that the subtype is additional subtype
+             * The subtype extra value used to indicate that this subtype is an additional subtype
              * that the user defined. This extra value is private to LatinIME.
              */
             public static final String IS_ADDITIONAL_SUBTYPE = "isAdditionalSubtype";
 
+            /**
+             * The subtype extra value used to specify the combining rules.
+             */
+            public static final String COMBINING_RULES = "CombiningRules";
+
             private ExtraValue() {
                 // This utility class is not publicly instantiable.
             }
@@ -124,6 +138,8 @@
          * {@link android.text.TextUtils#CAP_MODE_WORDS}, and
          * {@link android.text.TextUtils#CAP_MODE_SENTENCES}.
          */
+        // TODO: Straighten this out. It's bizarre to have to use android.text.TextUtils.CAP_MODE_*
+        // except for OFF that is in Constants.TextUtils.
         public static final int CAP_MODE_OFF = 0;
 
         private TextUtils() {
@@ -132,7 +148,8 @@
     }
 
     public static final int NOT_A_CODE = -1;
-
+    public static final int NOT_A_CURSOR_POSITION = -1;
+    // TODO: replace the following constants with state in InputTransaction?
     public static final int NOT_A_COORDINATE = -1;
     public static final int SUGGESTION_STRIP_COORDINATE = -2;
     public static final int SPELL_CHECKER_COORDINATE = -3;
@@ -141,10 +158,27 @@
     // A hint on how many characters to cache from the TextView. A good value of this is given by
     // how many characters we need to be able to almost always find the caps mode.
     public static final int EDITOR_CONTENTS_CACHE_SIZE = 1024;
+    // How many characters we accept for the recapitalization functionality. This needs to be
+    // large enough for all reasonable purposes, but avoid purposeful attacks. 100k sounds about
+    // right for this.
+    public static final int MAX_CHARACTERS_FOR_RECAPITALIZATION = 1024 * 100;
 
     // Must be equal to MAX_WORD_LENGTH in native/jni/src/defines.h
     public static final int DICTIONARY_MAX_WORD_LENGTH = 48;
 
+    // (MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1)-gram is supported in Java side. Needs to modify
+    // MAX_PREV_WORD_COUNT_FOR_N_GRAM in native/jni/src/defines.h for suggestions.
+    public static final int MAX_PREV_WORD_COUNT_FOR_N_GRAM = 2;
+
+    // Key events coming any faster than this are long-presses.
+    public static final int LONG_PRESS_MILLISECONDS = 200;
+    // TODO: Set this value appropriately.
+    public static final int GET_SUGGESTED_WORDS_TIMEOUT = 200;
+    // How many continuous deletes at which to start deleting at a higher speed.
+    public static final int DELETE_ACCELERATE_AT = 20;
+
+    public static final String WORD_SEPARATOR = " ";
+
     public static boolean isValidCoordinate(final int coordinate) {
         // Detect {@link NOT_A_COORDINATE}, {@link SUGGESTION_STRIP_COORDINATE},
         // and {@link SPELL_CHECKER_COORDINATE}.
@@ -165,13 +199,15 @@
     public static final int CODE_TAB = '\t';
     public static final int CODE_SPACE = ' ';
     public static final int CODE_PERIOD = '.';
-    public static final int CODE_ARMENIAN_PERIOD = 0x0589;
+    public static final int CODE_COMMA = ',';
     public static final int CODE_DASH = '-';
     public static final int CODE_SINGLE_QUOTE = '\'';
     public static final int CODE_DOUBLE_QUOTE = '"';
     public static final int CODE_QUESTION_MARK = '?';
     public static final int CODE_EXCLAMATION_MARK = '!';
     public static final int CODE_SLASH = '/';
+    public static final int CODE_BACKSLASH = '\\';
+    public static final int CODE_VERTICAL_BAR = '|';
     public static final int CODE_COMMERCIAL_AT = '@';
     public static final int CODE_PLUS = '+';
     public static final int CODE_PERCENT = '%';
@@ -179,6 +215,12 @@
     public static final int CODE_CLOSING_SQUARE_BRACKET = ']';
     public static final int CODE_CLOSING_CURLY_BRACKET = '}';
     public static final int CODE_CLOSING_ANGLE_BRACKET = '>';
+    public static final int CODE_INVERTED_QUESTION_MARK = 0xBF; // ¿
+    public static final int CODE_INVERTED_EXCLAMATION_MARK = 0xA1; // ¡
+
+    public static final String REGEXP_PERIOD = "\\.";
+    public static final String STRING_SPACE = " ";
+    public static final String STRING_PERIOD_AND_SPACE = ". ";
 
     /**
      * Special keys code. Must be negative.
@@ -197,8 +239,10 @@
     public static final int CODE_LANGUAGE_SWITCH = -10;
     public static final int CODE_EMOJI = -11;
     public static final int CODE_SHIFT_ENTER = -12;
+    public static final int CODE_SYMBOL_SHIFT = -13;
+    public static final int CODE_ALPHA_FROM_EMOJI = -14;
     // Code value representing the code is not specified.
-    public static final int CODE_UNSPECIFIED = -13;
+    public static final int CODE_UNSPECIFIED = -15;
 
     public static boolean isLetterCode(final int code) {
         return code >= CODE_SPACE;
@@ -218,20 +262,50 @@
         case CODE_LANGUAGE_SWITCH: return "languageSwitch";
         case CODE_EMOJI: return "emoji";
         case CODE_SHIFT_ENTER: return "shiftEnter";
+        case CODE_ALPHA_FROM_EMOJI: return "alpha";
         case CODE_UNSPECIFIED: return "unspec";
         case CODE_TAB: return "tab";
         case CODE_ENTER: return "enter";
+        case CODE_SPACE: return "space";
         default:
-            if (code < CODE_SPACE) return String.format("'\\u%02x'", code);
-            if (code < 0x100) return String.format("'%c'", code);
-            return String.format("'\\u%04x'", code);
+            if (code < CODE_SPACE) return String.format("\\u%02X", code);
+            if (code < 0x100) return String.format("%c", code);
+            if (code < 0x10000) return String.format("\\u%04X", code);
+            return String.format("\\U%05X", code);
         }
     }
 
+    public static String printableCodes(final int[] codes) {
+        final StringBuilder sb = new StringBuilder();
+        boolean addDelimiter = false;
+        for (final int code : codes) {
+            if (code == NOT_A_CODE) break;
+            if (addDelimiter) sb.append(", ");
+            sb.append(printableCode(code));
+            addDelimiter = true;
+        }
+        return "[" + sb + "]";
+    }
+
     public static final int MAX_INT_BIT_COUNT = 32;
 
+    /**
+     * Screen metrics (a.k.a. Device form factor) constants of
+     * {@link R.integer#config_screen_metrics}.
+     */
+    public static final int SCREEN_METRICS_SMALL_PHONE = 0;
+    public static final int SCREEN_METRICS_LARGE_PHONE = 1;
+    public static final int SCREEN_METRICS_LARGE_TABLET = 2;
+    public static final int SCREEN_METRICS_SMALL_TABLET = 3;
+
+    /**
+     * Default capacity of gesture points container.
+     * This constant is used by {@link BatchInputArbiter} and etc. to preallocate regions that
+     * contain gesture event points.
+     */
+    public static final int DEFAULT_GESTURE_POINTS_CAPACITY = 128;
+
     private Constants() {
         // This utility class is not publicly instantiable.
     }
-
 }
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index 47891c6..ad14c06 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -16,8 +16,6 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.latin.personalization.AccountUtils;
-
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -31,8 +29,13 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.personalization.AccountUtils;
+import com.android.inputmethod.latin.utils.ExecutorUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
+import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
@@ -44,7 +47,8 @@
     private static final String TAG = ContactsBinaryDictionary.class.getSimpleName();
     private static final String NAME = "contacts";
 
-    private static boolean DEBUG = false;
+    private static final boolean DEBUG = false;
+    private static final boolean DEBUG_DUMP = false;
 
     /**
      * Frequency for contacts information into the dictionary
@@ -58,10 +62,10 @@
     private static final int INDEX_NAME = 1;
 
     /** The number of contacts in the most recent dictionary rebuild. */
-    static private int sContactCountAtLastRebuild = 0;
+    private int mContactCountAtLastRebuild = 0;
 
-    /** The locale for this contacts dictionary. Controls name bigram predictions. */
-    public final Locale mLocale;
+    /** The hash code of ArrayList of contacts names in the most recent dictionary rebuild. */
+    private int mHashCodeAtLastRebuild = 0;
 
     private ContentObserver mObserver;
 
@@ -70,36 +74,40 @@
      */
     private final boolean mUseFirstLastBigrams;
 
-    public ContactsBinaryDictionary(final Context context, final Locale locale) {
-        super(context, getFilenameWithLocale(NAME, locale.toString()), Dictionary.TYPE_CONTACTS,
-                false /* isUpdatable */);
-        mLocale = locale;
+    protected ContactsBinaryDictionary(final Context context, final Locale locale,
+            final File dictFile, final String name) {
+        super(context, getDictName(name, locale, dictFile), locale, Dictionary.TYPE_CONTACTS,
+                dictFile);
         mUseFirstLastBigrams = useFirstLastBigramsForLocale(locale);
         registerObserver(context);
+        reloadDictionaryIfRequired();
+    }
 
-        // Load the current binary dictionary from internal storage. If no binary dictionary exists,
-        // loadDictionary will start a new thread to generate one asynchronously.
-        loadDictionary();
+    @UsedForTesting
+    public static ContactsBinaryDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile, final String dictNamePrefix) {
+        return new ContactsBinaryDictionary(context, locale, dictFile, dictNamePrefix + NAME);
     }
 
     private synchronized void registerObserver(final Context context) {
-        // Perform a managed query. The Activity will handle closing and requerying the cursor
-        // when needed.
         if (mObserver != null) return;
         ContentResolver cres = context.getContentResolver();
         cres.registerContentObserver(Contacts.CONTENT_URI, true, mObserver =
                 new ContentObserver(null) {
                     @Override
                     public void onChange(boolean self) {
-                        setRequiresReload(true);
+                        ExecutorUtils.getExecutor("Check Contacts").execute(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (haveContentsChanged()) {
+                                    setNeedsToRecreate();
+                                }
+                            }
+                        });
                     }
                 });
     }
 
-    public void reopen(final Context context) {
-        registerObserver(context);
-    }
-
     @Override
     public synchronized void close() {
         if (mObserver != null) {
@@ -110,14 +118,14 @@
     }
 
     @Override
-    public void loadDictionaryAsync() {
-        loadDeviceAccountsEmailAddresses();
-        loadDictionaryAsyncForUri(ContactsContract.Profile.CONTENT_URI);
+    public void loadInitialContentsLocked() {
+        loadDeviceAccountsEmailAddressesLocked();
+        loadDictionaryForUriLocked(ContactsContract.Profile.CONTENT_URI);
         // TODO: Switch this URL to the newer ContactsContract too
-        loadDictionaryAsyncForUri(Contacts.CONTENT_URI);
+        loadDictionaryForUriLocked(Contacts.CONTENT_URI);
     }
 
-    private void loadDeviceAccountsEmailAddresses() {
+    private void loadDeviceAccountsEmailAddressesLocked() {
         final List<String> accountVocabulary =
                 AccountUtils.getDeviceAccountsEmailAddresses(mContext);
         if (accountVocabulary == null || accountVocabulary.isEmpty()) {
@@ -127,29 +135,32 @@
             if (DEBUG) {
                 Log.d(TAG, "loadAccountVocabulary: " + word);
             }
-            super.addWord(word, null /* shortcut */, FREQUENCY_FOR_CONTACTS, 0 /* shortcutFreq */,
-                    false /* isNotAWord */);
+            runGCIfRequiredLocked(true /* mindsBlockByGC */);
+            addUnigramLocked(word, FREQUENCY_FOR_CONTACTS, null /* shortcut */,
+                    0 /* shortcutFreq */, false /* isNotAWord */, false /* isBlacklisted */,
+                    BinaryDictionary.NOT_A_VALID_TIMESTAMP);
         }
     }
 
-    private void loadDictionaryAsyncForUri(final Uri uri) {
+    private void loadDictionaryForUriLocked(final Uri uri) {
+        Cursor cursor = null;
         try {
-            Cursor cursor = mContext.getContentResolver()
-                    .query(uri, PROJECTION, null, null, null);
-            if (cursor != null) {
-                try {
-                    if (cursor.moveToFirst()) {
-                        sContactCountAtLastRebuild = getContactCount();
-                        addWords(cursor);
-                    }
-                } finally {
-                    cursor.close();
-                }
+            cursor = mContext.getContentResolver().query(uri, PROJECTION, null, null, null);
+            if (null == cursor) {
+                return;
+            }
+            if (cursor.moveToFirst()) {
+                mContactCountAtLastRebuild = getContactCount();
+                addWordsLocked(cursor);
             }
         } catch (final SQLiteException e) {
             Log.e(TAG, "SQLiteException in the remote Contacts process.", e);
         } catch (final IllegalStateException e) {
             Log.e(TAG, "Contacts DB is having problems", e);
+        } finally {
+            if (null != cursor) {
+                cursor.close();
+            }
         }
     }
 
@@ -161,33 +172,42 @@
         return false;
     }
 
-    private void addWords(final Cursor cursor) {
+    private void addWordsLocked(final Cursor cursor) {
         int count = 0;
+        final ArrayList<String> names = new ArrayList<>();
         while (!cursor.isAfterLast() && count < MAX_CONTACT_COUNT) {
             String name = cursor.getString(INDEX_NAME);
             if (isValidName(name)) {
-                addName(name);
+                names.add(name);
+                addNameLocked(name);
                 ++count;
+            } else {
+                if (DEBUG_DUMP) {
+                    Log.d(TAG, "Invalid name: " + name);
+                }
             }
             cursor.moveToNext();
         }
+        mHashCodeAtLastRebuild = names.hashCode();
     }
 
     private int getContactCount() {
         // TODO: consider switching to a rawQuery("select count(*)...") on the database if
         // performance is a bottleneck.
+        Cursor cursor = null;
         try {
-            final Cursor cursor = mContext.getContentResolver().query(
-                    Contacts.CONTENT_URI, PROJECTION_ID_ONLY, null, null, null);
-            if (cursor != null) {
-                try {
-                    return cursor.getCount();
-                } finally {
-                    cursor.close();
-                }
+            cursor = mContext.getContentResolver().query(Contacts.CONTENT_URI, PROJECTION_ID_ONLY,
+                    null, null, null);
+            if (null == cursor) {
+                return 0;
             }
+            return cursor.getCount();
         } catch (final SQLiteException e) {
             Log.e(TAG, "SQLiteException in the remote Contacts process.", e);
+        } finally {
+            if (null != cursor) {
+                cursor.close();
+            }
         }
         return 0;
     }
@@ -196,31 +216,36 @@
      * Adds the words in a name (e.g., firstname/lastname) to the binary dictionary along with their
      * bigrams depending on locale.
      */
-    private void addName(final String name) {
+    private void addNameLocked(final String name) {
         int len = StringUtils.codePointCount(name);
-        String prevWord = null;
+        PrevWordsInfo prevWordsInfo = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
         // TODO: Better tokenization for non-Latin writing systems
         for (int i = 0; i < len; i++) {
             if (Character.isLetter(name.codePointAt(i))) {
                 int end = getWordEndPosition(name, len, i);
                 String word = name.substring(i, end);
+                if (DEBUG_DUMP) {
+                    Log.d(TAG, "addName word = " + word);
+                }
                 i = end - 1;
                 // Don't add single letter words, possibly confuses
                 // capitalization of i.
                 final int wordLen = StringUtils.codePointCount(word);
                 if (wordLen < MAX_WORD_LENGTH && wordLen > 1) {
                     if (DEBUG) {
-                        Log.d(TAG, "addName " + name + ", " + word + ", " + prevWord);
+                        Log.d(TAG, "addName " + name + ", " + word + ", "  + prevWordsInfo);
                     }
-                    super.addWord(word, null /* shortcut */, FREQUENCY_FOR_CONTACTS,
-                            0 /* shortcutFreq */, false /* isNotAWord */);
-                    if (!TextUtils.isEmpty(prevWord)) {
-                        if (mUseFirstLastBigrams) {
-                            super.addBigram(prevWord, word, FREQUENCY_FOR_CONTACTS_BIGRAM,
-                                    0 /* lastModifiedTime */);
-                        }
+                    runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                    addUnigramLocked(word, FREQUENCY_FOR_CONTACTS,
+                            null /* shortcut */, 0 /* shortcutFreq */, false /* isNotAWord */,
+                            false /* isBlacklisted */, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+                    if (!prevWordsInfo.isValid() && mUseFirstLastBigrams) {
+                        runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                        addNgramEntryLocked(prevWordsInfo, word, FREQUENCY_FOR_CONTACTS_BIGRAM,
+                                BinaryDictionary.NOT_A_VALID_TIMESTAMP);
                     }
-                    prevWord = word;
+                    prevWordsInfo = prevWordsInfo.getNextPrevWordsInfo(
+                            new PrevWordsInfo.WordInfo(word));
                 }
             }
         }
@@ -243,13 +268,7 @@
         return end;
     }
 
-    @Override
-    protected boolean needsToReloadBeforeWriting() {
-        return true;
-    }
-
-    @Override
-    protected boolean hasContentChanged() {
+    private boolean haveContentsChanged() {
         final long startTime = SystemClock.uptimeMillis();
         final int contactCount = getContactCount();
         if (contactCount > MAX_CONTACT_COUNT) {
@@ -258,9 +277,9 @@
             // TODO: Sort and check only the MAX_CONTACT_COUNT most recent contacts?
             return false;
         }
-        if (contactCount != sContactCountAtLastRebuild) {
+        if (contactCount != mContactCountAtLastRebuild) {
             if (DEBUG) {
-                Log.d(TAG, "Contact count changed: " + sContactCountAtLastRebuild + " to "
+                Log.d(TAG, "Contact count changed: " + mContactCountAtLastRebuild + " to "
                         + contactCount);
             }
             return true;
@@ -268,26 +287,27 @@
         // Check all contacts since it's not possible to find out which names have changed.
         // This is needed because it's possible to receive extraneous onChange events even when no
         // name has changed.
-        Cursor cursor = mContext.getContentResolver().query(
-                Contacts.CONTENT_URI, PROJECTION, null, null, null);
-        if (cursor != null) {
-            try {
-                if (cursor.moveToFirst()) {
-                    while (!cursor.isAfterLast()) {
-                        String name = cursor.getString(INDEX_NAME);
-                        if (isValidName(name) && !isNameInDictionary(name)) {
-                            if (DEBUG) {
-                                Log.d(TAG, "Contact name missing: " + name + " (runtime = "
-                                        + (SystemClock.uptimeMillis() - startTime) + " ms)");
-                            }
-                            return true;
-                        }
-                        cursor.moveToNext();
+        final Cursor cursor = mContext.getContentResolver().query(Contacts.CONTENT_URI, PROJECTION,
+                null, null, null);
+        if (null == cursor) {
+            return false;
+        }
+        final ArrayList<String> names = new ArrayList<>();
+        try {
+            if (cursor.moveToFirst()) {
+                while (!cursor.isAfterLast()) {
+                    String name = cursor.getString(INDEX_NAME);
+                    if (isValidName(name)) {
+                        names.add(name);
                     }
+                    cursor.moveToNext();
                 }
-            } finally {
-                cursor.close();
             }
+            if (names.hashCode() != mHashCodeAtLastRebuild) {
+                return true;
+            }
+        } finally {
+            cursor.close();
         }
         if (DEBUG) {
             Log.d(TAG, "No contacts changed. (runtime = " + (SystemClock.uptimeMillis() - startTime)
@@ -302,33 +322,4 @@
         }
         return false;
     }
-
-    /**
-     * Checks if the words in a name are in the current binary dictionary.
-     */
-    private boolean isNameInDictionary(final String name) {
-        int len = StringUtils.codePointCount(name);
-        String prevWord = null;
-        for (int i = 0; i < len; i++) {
-            if (Character.isLetter(name.codePointAt(i))) {
-                int end = getWordEndPosition(name, len, i);
-                String word = name.substring(i, end);
-                i = end - 1;
-                final int wordLen = StringUtils.codePointCount(word);
-                if (wordLen < MAX_WORD_LENGTH && wordLen > 1) {
-                    if (!TextUtils.isEmpty(prevWord) && mUseFirstLastBigrams) {
-                        if (!super.isValidBigramLocked(prevWord, word)) {
-                            return false;
-                        }
-                    } else {
-                        if (!super.isValidWordLocked(word)) {
-                            return false;
-                        }
-                    }
-                    prevWord = word;
-                }
-            }
-        }
-        return true;
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/DicTraverseSession.java b/java/src/com/android/inputmethod/latin/DicTraverseSession.java
index 8d295ad..b341f62 100644
--- a/java/src/com/android/inputmethod/latin/DicTraverseSession.java
+++ b/java/src/com/android/inputmethod/latin/DicTraverseSession.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.latin.settings.NativeSuggestOptions;
 import com.android.inputmethod.latin.utils.JniUtils;
 
 import java.util.Locale;
@@ -24,6 +25,24 @@
     static {
         JniUtils.loadNativeLibrary();
     }
+    // Must be equal to MAX_RESULTS in native/jni/src/defines.h
+    private static final int MAX_RESULTS = 18;
+    public final int[] mInputCodePoints = new int[Constants.DICTIONARY_MAX_WORD_LENGTH];
+    public final int[][] mPrevWordCodePointArrays =
+            new int[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM][];
+    public final boolean[] mIsBeginningOfSentenceArray =
+            new boolean[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    public final int[] mOutputSuggestionCount = new int[1];
+    public final int[] mOutputCodePoints =
+            new int[Constants.DICTIONARY_MAX_WORD_LENGTH * MAX_RESULTS];
+    public final int[] mSpaceIndices = new int[MAX_RESULTS];
+    public final int[] mOutputScores = new int[MAX_RESULTS];
+    public final int[] mOutputTypes = new int[MAX_RESULTS];
+    // Only one result is ever used
+    public final int[] mOutputAutoCommitFirstWordConfidence = new int[1];
+    public final float[] mInputOutputLanguageWeight = new float[1];
+
+    public final NativeSuggestOptions mNativeSuggestOptions = new NativeSuggestOptions();
 
     private static native long setDicTraverseSessionNative(String locale, long dictSize);
     private static native void initDicTraverseSessionNative(long nativeDicTraverseSession,
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java
index fa79f5a..560ced9 100644
--- a/java/src/com/android/inputmethod/latin/Dictionary.java
+++ b/java/src/com/android/inputmethod/latin/Dictionary.java
@@ -16,8 +16,10 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
 
 import java.util.ArrayList;
 
@@ -27,6 +29,7 @@
  */
 public abstract class Dictionary {
     public static final int NOT_A_PROBABILITY = -1;
+    public static final float NOT_A_LANGUAGE_WEIGHT = -1.0f;
 
     // The following types do not actually come from real dictionary instances, so we create
     // corresponding instances.
@@ -52,13 +55,12 @@
     public static final String TYPE_CONTACTS = "contacts";
     // User dictionary, the system-managed one.
     public static final String TYPE_USER = "user";
-    // User history dictionary internal to LatinIME. This assumes bigram prediction for now.
+    // User history dictionary internal to LatinIME.
     public static final String TYPE_USER_HISTORY = "history";
-    // Personalization binary dictionary internal to LatinIME.
+    // Personalization dictionary.
     public static final String TYPE_PERSONALIZATION = "personalization";
-    // Personalization prediction dictionary internal to LatinIME's Java code.
-    public static final String TYPE_PERSONALIZATION_PREDICTION_IN_JAVA =
-            "personalization_prediction_in_java";
+    // Contextual dictionary.
+    public static final String TYPE_CONTEXTUAL = "contextual";
     public final String mDictType;
 
     public Dictionary(final String dictType) {
@@ -69,39 +71,43 @@
      * Searches for suggestions for a given context. For the moment the context is only the
      * previous word.
      * @param composer the key sequence to match with coordinate info, as a WordComposer
-     * @param prevWord the previous word, or null if none
+     * @param prevWordsInfo the information of previous words.
      * @param proximityInfo the object for key proximity. May be ignored by some implementations.
-     * @param blockOffensiveWords whether to block potentially offensive words
-     * @param additionalFeaturesOptions options about additional features used for the suggestion.
+     * @param settingsValuesForSuggestion the settings values used for the suggestion.
+     * @param sessionId the session id.
+     * @param inOutLanguageWeight the language weight used for generating suggestions.
+     * inOutLanguageWeight is a float array that has only one element. This can be updated when the
+     * different language weight is used.
      * @return the list of suggestions (possibly null if none)
      */
-    // TODO: pass more context than just the previous word, to enable better suggestions (n-gram
-    // and more)
     abstract public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions);
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
+            final int sessionId, final float[] inOutLanguageWeight);
 
-    // The default implementation of this method ignores sessionId.
-    // Subclasses that want to use sessionId need to override this method.
-    public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
-            final int sessionId) {
-        return getSuggestions(composer, prevWord, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions);
+    /**
+     * Checks if the given word has to be treated as a valid word. Please note that some
+     * dictionaries have entries that should be treated as invalid words.
+     * @param word the word to search for. The search should be case-insensitive.
+     * @return true if the word is valid, false otherwise
+     */
+    public boolean isValidWord(final String word) {
+        return isInDictionary(word);
     }
 
     /**
-     * Checks if the given word occurs in the dictionary
-     * @param word the word to search for. The search should be case-insensitive.
-     * @return true if the word exists, false otherwise
+     * Checks if the given word is in the dictionary regardless of it being valid or not.
      */
-    abstract public boolean isValidWord(final String word);
+    abstract public boolean isInDictionary(final String word);
 
     public int getFrequency(final String word) {
         return NOT_A_PROBABILITY;
     }
 
+    public int getMaxFrequencyOfExactMatches(final String word) {
+        return NOT_A_PROBABILITY;
+    }
+
     /**
      * Compares the contents of the character array with the typed word and returns true if they
      * are the same.
@@ -161,13 +167,14 @@
 
         @Override
         public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-                final String prevWord, final ProximityInfo proximityInfo,
-                final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
+                final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+                final SettingsValuesForSuggestion settingsValuesForSuggestion,
+                final int sessionId, final float[] inOutLanguageWeight) {
             return null;
         }
 
         @Override
-        public boolean isValidWord(String word) {
+        public boolean isInDictionary(String word) {
             return false;
         }
     }
diff --git a/java/src/com/android/inputmethod/latin/DictionaryCollection.java b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
index bf07514..2b4c54d 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryCollection.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryCollection.java
@@ -20,7 +20,7 @@
 
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -36,49 +36,52 @@
 
     public DictionaryCollection(final String dictType) {
         super(dictType);
-        mDictionaries = CollectionUtils.newCopyOnWriteArrayList();
+        mDictionaries = new CopyOnWriteArrayList<>();
     }
 
     public DictionaryCollection(final String dictType, final Dictionary... dictionaries) {
         super(dictType);
         if (null == dictionaries) {
-            mDictionaries = CollectionUtils.newCopyOnWriteArrayList();
+            mDictionaries = new CopyOnWriteArrayList<>();
         } else {
-            mDictionaries = CollectionUtils.newCopyOnWriteArrayList(dictionaries);
+            mDictionaries = new CopyOnWriteArrayList<>(dictionaries);
             mDictionaries.removeAll(Collections.singleton(null));
         }
     }
 
     public DictionaryCollection(final String dictType, final Collection<Dictionary> dictionaries) {
         super(dictType);
-        mDictionaries = CollectionUtils.newCopyOnWriteArrayList(dictionaries);
+        mDictionaries = new CopyOnWriteArrayList<>(dictionaries);
         mDictionaries.removeAll(Collections.singleton(null));
     }
 
     @Override
     public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
+            final int sessionId, final float[] inOutLanguageWeight) {
         final CopyOnWriteArrayList<Dictionary> dictionaries = mDictionaries;
         if (dictionaries.isEmpty()) return null;
         // To avoid creating unnecessary objects, we get the list out of the first
         // dictionary and add the rest to it if not null, hence the get(0)
         ArrayList<SuggestedWordInfo> suggestions = dictionaries.get(0).getSuggestions(composer,
-                prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions);
-        if (null == suggestions) suggestions = CollectionUtils.newArrayList();
+                prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId,
+                inOutLanguageWeight);
+        if (null == suggestions) suggestions = new ArrayList<>();
         final int length = dictionaries.size();
         for (int i = 1; i < length; ++ i) {
             final ArrayList<SuggestedWordInfo> sugg = dictionaries.get(i).getSuggestions(composer,
-                    prevWord, proximityInfo, blockOffensiveWords, additionalFeaturesOptions);
+                    prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId,
+                    inOutLanguageWeight);
             if (null != sugg) suggestions.addAll(sugg);
         }
         return suggestions;
     }
 
     @Override
-    public boolean isValidWord(final String word) {
+    public boolean isInDictionary(final String word) {
         for (int i = mDictionaries.size() - 1; i >= 0; --i)
-            if (mDictionaries.get(i).isValidWord(word)) return true;
+            if (mDictionaries.get(i).isInDictionary(word)) return true;
         return false;
     }
 
@@ -87,9 +90,17 @@
         int maxFreq = -1;
         for (int i = mDictionaries.size() - 1; i >= 0; --i) {
             final int tempFreq = mDictionaries.get(i).getFrequency(word);
-            if (tempFreq >= maxFreq) {
-                maxFreq = tempFreq;
-            }
+            maxFreq = Math.max(tempFreq, maxFreq);
+        }
+        return maxFreq;
+    }
+
+    @Override
+    public int getMaxFrequencyOfExactMatches(final String word) {
+        int maxFreq = -1;
+        for (int i = mDictionaries.size() - 1; i >= 0; --i) {
+            final int tempFreq = mDictionaries.get(i).getMaxFrequencyOfExactMatches(word);
+            maxFreq = Math.max(tempFreq, maxFreq);
         }
         return maxFreq;
     }
diff --git a/java/src/com/android/inputmethod/latin/DictionaryDumpBroadcastReceiver.java b/java/src/com/android/inputmethod/latin/DictionaryDumpBroadcastReceiver.java
new file mode 100644
index 0000000..ee2fdc6
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/DictionaryDumpBroadcastReceiver.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+public class DictionaryDumpBroadcastReceiver extends BroadcastReceiver {
+  private static final String TAG = DictionaryDumpBroadcastReceiver.class.getSimpleName();
+
+    private static final String DOMAIN = "com.android.inputmethod.latin";
+    public static final String DICTIONARY_DUMP_INTENT_ACTION = DOMAIN + ".DICT_DUMP";
+    public static final String DICTIONARY_NAME_KEY = "dictName";
+
+    final LatinIME mLatinIme;
+
+    public DictionaryDumpBroadcastReceiver(final LatinIME latinIme) {
+        mLatinIme = latinIme;
+    }
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        final String action = intent.getAction();
+        if (action.equals(DICTIONARY_DUMP_INTENT_ACTION)) {
+            final String dictName = intent.getStringExtra(DICTIONARY_NAME_KEY);
+            if (dictName == null) {
+                Log.e(TAG, "Received dictionary dump intent action " +
+                      "but the dictionary name is not set.");
+                return;
+            }
+            mLatinIme.dumpDictionaryForDebug(dictName);
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
new file mode 100644
index 0000000..d6e6656
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -0,0 +1,657 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.personalization.ContextualDictionary;
+import com.android.inputmethod.latin.personalization.PersonalizationDataChunk;
+import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
+import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+import com.android.inputmethod.latin.utils.DistracterFilter;
+import com.android.inputmethod.latin.utils.DistracterFilterCheckingIsInDictionary;
+import com.android.inputmethod.latin.utils.ExecutorUtils;
+import com.android.inputmethod.latin.utils.LanguageModelParam;
+import com.android.inputmethod.latin.utils.SuggestionResults;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+// TODO: Consolidate dictionaries in native code.
+public class DictionaryFacilitator {
+    public static final String TAG = DictionaryFacilitator.class.getSimpleName();
+
+    // HACK: This threshold is being used when adding a capitalized entry in the User History
+    // dictionary.
+    private static final int CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT = 140;
+
+    private Dictionaries mDictionaries = new Dictionaries();
+    private boolean mIsUserDictEnabled = false;
+    private volatile CountDownLatch mLatchForWaitingLoadingMainDictionary = new CountDownLatch(0);
+    // To synchronize assigning mDictionaries to ensure closing dictionaries.
+    private final Object mLock = new Object();
+    private final DistracterFilter mDistracterFilter;
+
+    private static final String[] DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS =
+            new String[] {
+                Dictionary.TYPE_MAIN,
+                Dictionary.TYPE_USER_HISTORY,
+                Dictionary.TYPE_PERSONALIZATION,
+                Dictionary.TYPE_USER,
+                Dictionary.TYPE_CONTACTS,
+                Dictionary.TYPE_CONTEXTUAL
+            };
+
+    public static final Map<String, Class<? extends ExpandableBinaryDictionary>>
+            DICT_TYPE_TO_CLASS = new HashMap<>();
+
+    static {
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_USER_HISTORY, UserHistoryDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_PERSONALIZATION, PersonalizationDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_USER, UserBinaryDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_CONTACTS, ContactsBinaryDictionary.class);
+        DICT_TYPE_TO_CLASS.put(Dictionary.TYPE_CONTEXTUAL, ContextualDictionary.class);
+    }
+
+    private static final String DICT_FACTORY_METHOD_NAME = "getDictionary";
+    private static final Class<?>[] DICT_FACTORY_METHOD_ARG_TYPES =
+            new Class[] { Context.class, Locale.class, File.class, String.class };
+
+    private static final String[] SUB_DICT_TYPES =
+            Arrays.copyOfRange(DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS, 1 /* start */,
+                    DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS.length);
+
+    /**
+     * Class contains dictionaries for a locale.
+     */
+    private static class Dictionaries {
+        public final Locale mLocale;
+        private Dictionary mMainDict;
+        public final ConcurrentHashMap<String, ExpandableBinaryDictionary> mSubDictMap =
+                new ConcurrentHashMap<>();
+
+        public Dictionaries() {
+            mLocale = null;
+        }
+
+        public Dictionaries(final Locale locale, final Dictionary mainDict,
+                final Map<String, ExpandableBinaryDictionary> subDicts) {
+            mLocale = locale;
+            // Main dictionary can be asynchronously loaded.
+            setMainDict(mainDict);
+            for (final Map.Entry<String, ExpandableBinaryDictionary> entry : subDicts.entrySet()) {
+                setSubDict(entry.getKey(), entry.getValue());
+            }
+        }
+
+        private void setSubDict(final String dictType, final ExpandableBinaryDictionary dict) {
+            if (dict != null) {
+                mSubDictMap.put(dictType, dict);
+            }
+        }
+
+        public void setMainDict(final Dictionary mainDict) {
+            // Close old dictionary if exists. Main dictionary can be assigned multiple times.
+            final Dictionary oldDict = mMainDict;
+            mMainDict = mainDict;
+            if (oldDict != null && mainDict != oldDict) {
+                oldDict.close();
+            }
+        }
+
+        public Dictionary getDict(final String dictType) {
+            if (Dictionary.TYPE_MAIN.equals(dictType)) {
+                return mMainDict;
+            } else {
+                return getSubDict(dictType);
+            }
+        }
+
+        public ExpandableBinaryDictionary getSubDict(final String dictType) {
+            return mSubDictMap.get(dictType);
+        }
+
+        public boolean hasDict(final String dictType) {
+            if (Dictionary.TYPE_MAIN.equals(dictType)) {
+                return mMainDict != null;
+            } else {
+                return mSubDictMap.containsKey(dictType);
+            }
+        }
+
+        public void closeDict(final String dictType) {
+            final Dictionary dict;
+            if (Dictionary.TYPE_MAIN.equals(dictType)) {
+                dict = mMainDict;
+            } else {
+                dict = mSubDictMap.remove(dictType);
+            }
+            if (dict != null) {
+                dict.close();
+            }
+        }
+    }
+
+    public interface DictionaryInitializationListener {
+        public void onUpdateMainDictionaryAvailability(boolean isMainDictionaryAvailable);
+    }
+
+    public DictionaryFacilitator() {
+        mDistracterFilter = DistracterFilter.EMPTY_DISTRACTER_FILTER;
+    }
+
+    public DictionaryFacilitator(final DistracterFilter distracterFilter) {
+        mDistracterFilter = distracterFilter;
+    }
+
+    public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
+        mDistracterFilter.updateEnabledSubtypes(enabledSubtypes);
+    }
+
+    public Locale getLocale() {
+        return mDictionaries.mLocale;
+    }
+
+    private static ExpandableBinaryDictionary getSubDict(final String dictType,
+            final Context context, final Locale locale, final File dictFile,
+            final String dictNamePrefix) {
+        final Class<? extends ExpandableBinaryDictionary> dictClass =
+                DICT_TYPE_TO_CLASS.get(dictType);
+        if (dictClass == null) {
+            return null;
+        }
+        try {
+            final Method factoryMethod = dictClass.getMethod(DICT_FACTORY_METHOD_NAME,
+                    DICT_FACTORY_METHOD_ARG_TYPES);
+            final Object dict = factoryMethod.invoke(null /* obj */,
+                    new Object[] { context, locale, dictFile, dictNamePrefix });
+            return (ExpandableBinaryDictionary) dict;
+        } catch (final NoSuchMethodException | SecurityException | IllegalAccessException
+                | IllegalArgumentException | InvocationTargetException e) {
+            Log.e(TAG, "Cannot create dictionary: " + dictType, e);
+            return null;
+        }
+    }
+
+    public void resetDictionaries(final Context context, final Locale newLocale,
+            final boolean useContactsDict, final boolean usePersonalizedDicts,
+            final boolean forceReloadMainDictionary,
+            final DictionaryInitializationListener listener) {
+        resetDictionariesWithDictNamePrefix(context, newLocale, useContactsDict,
+                usePersonalizedDicts, forceReloadMainDictionary, listener, "" /* dictNamePrefix */);
+    }
+
+    public void resetDictionariesWithDictNamePrefix(final Context context, final Locale newLocale,
+            final boolean useContactsDict, final boolean usePersonalizedDicts,
+            final boolean forceReloadMainDictionary,
+            final DictionaryInitializationListener listener,
+            final String dictNamePrefix) {
+        final boolean localeHasBeenChanged = !newLocale.equals(mDictionaries.mLocale);
+        // We always try to have the main dictionary. Other dictionaries can be unused.
+        final boolean reloadMainDictionary = localeHasBeenChanged || forceReloadMainDictionary;
+        // TODO: Make subDictTypesToUse configurable by resource or a static final list.
+        final HashSet<String> subDictTypesToUse = new HashSet<>();
+        if (useContactsDict) {
+            subDictTypesToUse.add(Dictionary.TYPE_CONTACTS);
+        }
+        subDictTypesToUse.add(Dictionary.TYPE_USER);
+        if (usePersonalizedDicts) {
+            subDictTypesToUse.add(Dictionary.TYPE_USER_HISTORY);
+            subDictTypesToUse.add(Dictionary.TYPE_PERSONALIZATION);
+            subDictTypesToUse.add(Dictionary.TYPE_CONTEXTUAL);
+        }
+
+        final Dictionary newMainDict;
+        if (reloadMainDictionary) {
+            // The main dictionary will be asynchronously loaded.
+            newMainDict = null;
+        } else {
+            newMainDict = mDictionaries.getDict(Dictionary.TYPE_MAIN);
+        }
+
+        final Map<String, ExpandableBinaryDictionary> subDicts = new HashMap<>();
+        for (final String dictType : SUB_DICT_TYPES) {
+            if (!subDictTypesToUse.contains(dictType)) {
+                // This dictionary will not be used.
+                continue;
+            }
+            final ExpandableBinaryDictionary dict;
+            if (!localeHasBeenChanged && mDictionaries.hasDict(dictType)) {
+                // Continue to use current dictionary.
+                dict = mDictionaries.getSubDict(dictType);
+            } else {
+                // Start to use new dictionary.
+                dict = getSubDict(dictType, context, newLocale, null /* dictFile */,
+                        dictNamePrefix);
+            }
+            subDicts.put(dictType, dict);
+        }
+
+        // Replace Dictionaries.
+        final Dictionaries newDictionaries = new Dictionaries(newLocale, newMainDict, subDicts);
+        final Dictionaries oldDictionaries;
+        synchronized (mLock) {
+            oldDictionaries = mDictionaries;
+            mDictionaries = newDictionaries;
+            mIsUserDictEnabled = UserBinaryDictionary.isEnabled(context);
+            if (reloadMainDictionary) {
+                asyncReloadMainDictionary(context, newLocale, listener);
+            }
+        }
+        if (listener != null) {
+            listener.onUpdateMainDictionaryAvailability(hasInitializedMainDictionary());
+        }
+        // Clean up old dictionaries.
+        if (reloadMainDictionary) {
+            oldDictionaries.closeDict(Dictionary.TYPE_MAIN);
+        }
+        for (final String dictType : SUB_DICT_TYPES) {
+            if (localeHasBeenChanged || !subDictTypesToUse.contains(dictType)) {
+                oldDictionaries.closeDict(dictType);
+            }
+        }
+        oldDictionaries.mSubDictMap.clear();
+    }
+
+    private void asyncReloadMainDictionary(final Context context, final Locale locale,
+            final DictionaryInitializationListener listener) {
+        final CountDownLatch latchForWaitingLoadingMainDictionary = new CountDownLatch(1);
+        mLatchForWaitingLoadingMainDictionary = latchForWaitingLoadingMainDictionary;
+        ExecutorUtils.getExecutor("InitializeBinaryDictionary").execute(new Runnable() {
+            @Override
+            public void run() {
+                final Dictionary mainDict =
+                        DictionaryFactory.createMainDictionaryFromManager(context, locale);
+                synchronized (mLock) {
+                    if (locale.equals(mDictionaries.mLocale)) {
+                        mDictionaries.setMainDict(mainDict);
+                    } else {
+                        // Dictionary facilitator has been reset for another locale.
+                        mainDict.close();
+                    }
+                }
+                if (listener != null) {
+                    listener.onUpdateMainDictionaryAvailability(hasInitializedMainDictionary());
+                }
+                latchForWaitingLoadingMainDictionary.countDown();
+            }
+        });
+    }
+
+    @UsedForTesting
+    public void resetDictionariesForTesting(final Context context, final Locale locale,
+            final ArrayList<String> dictionaryTypes, final HashMap<String, File> dictionaryFiles,
+            final Map<String, Map<String, String>> additionalDictAttributes) {
+        Dictionary mainDictionary = null;
+        final Map<String, ExpandableBinaryDictionary> subDicts = new HashMap<>();
+
+        for (final String dictType : dictionaryTypes) {
+            if (dictType.equals(Dictionary.TYPE_MAIN)) {
+                mainDictionary = DictionaryFactory.createMainDictionaryFromManager(context, locale);
+            } else {
+                final File dictFile = dictionaryFiles.get(dictType);
+                final ExpandableBinaryDictionary dict = getSubDict(
+                        dictType, context, locale, dictFile, "" /* dictNamePrefix */);
+                if (additionalDictAttributes.containsKey(dictType)) {
+                    dict.clearAndFlushDictionaryWithAdditionalAttributes(
+                            additionalDictAttributes.get(dictType));
+                }
+                if (dict == null) {
+                    throw new RuntimeException("Unknown dictionary type: " + dictType);
+                }
+                dict.reloadDictionaryIfRequired();
+                dict.waitAllTasksForTests();
+                subDicts.put(dictType, dict);
+            }
+        }
+        mDictionaries = new Dictionaries(locale, mainDictionary, subDicts);
+    }
+
+    public void closeDictionaries() {
+        final Dictionaries dictionaries;
+        synchronized (mLock) {
+            dictionaries = mDictionaries;
+            mDictionaries = new Dictionaries();
+        }
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
+            dictionaries.closeDict(dictType);
+        }
+        mDistracterFilter.close();
+    }
+
+    @UsedForTesting
+    public ExpandableBinaryDictionary getSubDictForTesting(final String dictName) {
+        return mDictionaries.getSubDict(dictName);
+    }
+
+    // The main dictionary could have been loaded asynchronously.  Don't cache the return value
+    // of this method.
+    public boolean hasInitializedMainDictionary() {
+        final Dictionary mainDict = mDictionaries.getDict(Dictionary.TYPE_MAIN);
+        return mainDict != null && mainDict.isInitialized();
+    }
+
+    public boolean hasPersonalizationDictionary() {
+        return mDictionaries.hasDict(Dictionary.TYPE_PERSONALIZATION);
+    }
+
+    public void flushPersonalizationDictionary() {
+        final ExpandableBinaryDictionary personalizationDict =
+                mDictionaries.getSubDict(Dictionary.TYPE_PERSONALIZATION);
+        if (personalizationDict != null) {
+            personalizationDict.asyncFlushBinaryDictionary();
+        }
+    }
+
+    public void waitForLoadingMainDictionary(final long timeout, final TimeUnit unit)
+            throws InterruptedException {
+        mLatchForWaitingLoadingMainDictionary.await(timeout, unit);
+    }
+
+    @UsedForTesting
+    public void waitForLoadingDictionariesForTesting(final long timeout, final TimeUnit unit)
+            throws InterruptedException {
+        waitForLoadingMainDictionary(timeout, unit);
+        final Map<String, ExpandableBinaryDictionary> dictMap = mDictionaries.mSubDictMap;
+        for (final ExpandableBinaryDictionary dict : dictMap.values()) {
+            dict.waitAllTasksForTests();
+        }
+    }
+
+    public boolean isUserDictionaryEnabled() {
+        return mIsUserDictEnabled;
+    }
+
+    public void addWordToUserDictionary(final Context context, final String word) {
+        final Locale locale = getLocale();
+        if (locale == null) {
+            return;
+        }
+        UserBinaryDictionary.addWordToUserDictionary(context, locale, word);
+    }
+
+    public void addToUserHistory(final String suggestion, final boolean wasAutoCapitalized,
+            final PrevWordsInfo prevWordsInfo, final int timeStampInSeconds,
+            final boolean blockPotentiallyOffensive) {
+        final Dictionaries dictionaries = mDictionaries;
+        final String[] words = suggestion.split(Constants.WORD_SEPARATOR);
+        PrevWordsInfo prevWordsInfoForCurrentWord = prevWordsInfo;
+        for (int i = 0; i < words.length; i++) {
+            final String currentWord = words[i];
+            final boolean wasCurrentWordAutoCapitalized = (i == 0) ? wasAutoCapitalized : false;
+            addWordToUserHistory(dictionaries, prevWordsInfoForCurrentWord, currentWord,
+                    wasCurrentWordAutoCapitalized, timeStampInSeconds, blockPotentiallyOffensive);
+            prevWordsInfoForCurrentWord =
+                    prevWordsInfoForCurrentWord.getNextPrevWordsInfo(new WordInfo(currentWord));
+        }
+    }
+
+    private void addWordToUserHistory(final Dictionaries dictionaries,
+            final PrevWordsInfo prevWordsInfo, final String word, final boolean wasAutoCapitalized,
+            final int timeStampInSeconds, final boolean blockPotentiallyOffensive) {
+        final ExpandableBinaryDictionary userHistoryDictionary =
+                dictionaries.getSubDict(Dictionary.TYPE_USER_HISTORY);
+        if (userHistoryDictionary == null) {
+            return;
+        }
+        final int maxFreq = getFrequency(word);
+        if (maxFreq == 0 && blockPotentiallyOffensive) {
+            return;
+        }
+        final String lowerCasedWord = word.toLowerCase(dictionaries.mLocale);
+        final String secondWord;
+        if (wasAutoCapitalized) {
+            if (isValidWord(word, false /* ignoreCase */)
+                    && !isValidWord(lowerCasedWord, false /* ignoreCase */)) {
+                // If the word was auto-capitalized and exists only as a capitalized word in the
+                // dictionary, then we must not downcase it before registering it. For example,
+                // the name of the contacts in start-of-sentence position would come here with the
+                // wasAutoCapitalized flag: if we downcase it, we'd register a lower-case version
+                // of that contact's name which would end up popping in suggestions.
+                secondWord = word;
+            } else {
+                // If however the word is not in the dictionary, or exists as a lower-case word
+                // only, then we consider that was a lower-case word that had been auto-capitalized.
+                secondWord = lowerCasedWord;
+            }
+        } else {
+            // HACK: We'd like to avoid adding the capitalized form of common words to the User
+            // History dictionary in order to avoid suggesting them until the dictionary
+            // consolidation is done.
+            // TODO: Remove this hack when ready.
+            final int lowerCaseFreqInMainDict = dictionaries.hasDict(Dictionary.TYPE_MAIN) ?
+                    dictionaries.getDict(Dictionary.TYPE_MAIN).getFrequency(lowerCasedWord) :
+                            Dictionary.NOT_A_PROBABILITY;
+            if (maxFreq < lowerCaseFreqInMainDict
+                    && lowerCaseFreqInMainDict >= CAPITALIZED_FORM_MAX_PROBABILITY_FOR_INSERT) {
+                // Use lower cased word as the word can be a distracter of the popular word.
+                secondWord = lowerCasedWord;
+            } else {
+                secondWord = word;
+            }
+        }
+        // We demote unrecognized words (frequency < 0, below) by specifying them as "invalid".
+        // We don't add words with 0-frequency (assuming they would be profanity etc.).
+        final boolean isValid = maxFreq > 0;
+        UserHistoryDictionary.addToDictionary(userHistoryDictionary, prevWordsInfo, secondWord,
+                isValid, timeStampInSeconds, mDistracterFilter);
+    }
+
+    private void removeWord(final String dictName, final String word) {
+        final ExpandableBinaryDictionary dictionary = mDictionaries.getSubDict(dictName);
+        if (dictionary != null) {
+            dictionary.removeUnigramEntryDynamically(word);
+        }
+    }
+
+    public void removeWordFromPersonalizedDicts(final String word) {
+        removeWord(Dictionary.TYPE_USER_HISTORY, word);
+        removeWord(Dictionary.TYPE_PERSONALIZATION, word);
+        removeWord(Dictionary.TYPE_CONTEXTUAL, word);
+    }
+
+    // TODO: Revise the way to fusion suggestion results.
+    public SuggestionResults getSuggestionResults(final WordComposer composer,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId) {
+        final Dictionaries dictionaries = mDictionaries;
+        final SuggestionResults suggestionResults =
+                new SuggestionResults(dictionaries.mLocale, SuggestedWords.MAX_SUGGESTIONS);
+        final float[] languageWeight = new float[] { Dictionary.NOT_A_LANGUAGE_WEIGHT };
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
+            final Dictionary dictionary = dictionaries.getDict(dictType);
+            if (null == dictionary) continue;
+            final ArrayList<SuggestedWordInfo> dictionarySuggestions =
+                    dictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
+                            settingsValuesForSuggestion, sessionId, languageWeight);
+            if (null == dictionarySuggestions) continue;
+            suggestionResults.addAll(dictionarySuggestions);
+            if (null != suggestionResults.mRawSuggestions) {
+                suggestionResults.mRawSuggestions.addAll(dictionarySuggestions);
+            }
+        }
+        return suggestionResults;
+    }
+
+    public boolean isValidWord(final String word, final boolean ignoreCase) {
+        if (TextUtils.isEmpty(word)) {
+            return false;
+        }
+        final Dictionaries dictionaries = mDictionaries;
+        if (dictionaries.mLocale == null) {
+            return false;
+        }
+        final String lowerCasedWord = word.toLowerCase(dictionaries.mLocale);
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
+            final Dictionary dictionary = dictionaries.getDict(dictType);
+            // Ideally the passed map would come out of a {@link java.util.concurrent.Future} and
+            // would be immutable once it's finished initializing, but concretely a null test is
+            // probably good enough for the time being.
+            if (null == dictionary) continue;
+            if (dictionary.isValidWord(word)
+                    || (ignoreCase && dictionary.isValidWord(lowerCasedWord))) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private int getFrequencyInternal(final String word,
+            final boolean isGettingMaxFrequencyOfExactMatches) {
+        if (TextUtils.isEmpty(word)) {
+            return Dictionary.NOT_A_PROBABILITY;
+        }
+        int maxFreq = Dictionary.NOT_A_PROBABILITY;
+        final Dictionaries dictionaries = mDictionaries;
+        for (final String dictType : DICT_TYPES_ORDERED_TO_GET_SUGGESTIONS) {
+            final Dictionary dictionary = dictionaries.getDict(dictType);
+            if (dictionary == null) continue;
+            final int tempFreq;
+            if (isGettingMaxFrequencyOfExactMatches) {
+                tempFreq = dictionary.getMaxFrequencyOfExactMatches(word);
+            } else {
+                tempFreq = dictionary.getFrequency(word);
+            }
+            if (tempFreq >= maxFreq) {
+                maxFreq = tempFreq;
+            }
+        }
+        return maxFreq;
+    }
+
+    public int getFrequency(final String word) {
+        return getFrequencyInternal(word, false /* isGettingMaxFrequencyOfExactMatches */);
+    }
+
+    public int getMaxFrequencyOfExactMatches(final String word) {
+        return getFrequencyInternal(word, true /* isGettingMaxFrequencyOfExactMatches */);
+    }
+
+    private void clearSubDictionary(final String dictName) {
+        final ExpandableBinaryDictionary dictionary = mDictionaries.getSubDict(dictName);
+        if (dictionary != null) {
+            dictionary.clear();
+        }
+    }
+
+    public void clearUserHistoryDictionary() {
+        clearSubDictionary(Dictionary.TYPE_USER_HISTORY);
+    }
+
+    // This method gets called only when the IME receives a notification to remove the
+    // personalization dictionary.
+    public void clearPersonalizationDictionary() {
+        clearSubDictionary(Dictionary.TYPE_PERSONALIZATION);
+    }
+
+    public void clearContextualDictionary() {
+        clearSubDictionary(Dictionary.TYPE_CONTEXTUAL);
+    }
+
+    public void addEntriesToPersonalizationDictionary(
+            final PersonalizationDataChunk personalizationDataChunk,
+            final SpacingAndPunctuations spacingAndPunctuations,
+            final ExpandableBinaryDictionary.AddMultipleDictionaryEntriesCallback callback) {
+        final ExpandableBinaryDictionary personalizationDict =
+                mDictionaries.getSubDict(Dictionary.TYPE_PERSONALIZATION);
+        if (personalizationDict == null) {
+            if (callback != null) {
+                callback.onFinished();
+            }
+            return;
+        }
+        final ArrayList<LanguageModelParam> languageModelParams =
+                LanguageModelParam.createLanguageModelParamsFrom(
+                        personalizationDataChunk.mTokens,
+                        personalizationDataChunk.mTimestampInSeconds,
+                        this /* dictionaryFacilitator */, spacingAndPunctuations,
+                        new DistracterFilterCheckingIsInDictionary(
+                                mDistracterFilter, personalizationDict));
+        if (languageModelParams == null || languageModelParams.isEmpty()) {
+            if (callback != null) {
+                callback.onFinished();
+            }
+            return;
+        }
+        personalizationDict.addMultipleDictionaryEntriesDynamically(languageModelParams, callback);
+    }
+
+    public void addPhraseToContextualDictionary(final String[] phrase, final int probability,
+            final int bigramProbabilityForWords, final int bigramProbabilityForPhrases) {
+        final ExpandableBinaryDictionary contextualDict =
+                mDictionaries.getSubDict(Dictionary.TYPE_CONTEXTUAL);
+        if (contextualDict == null) {
+            return;
+        }
+        PrevWordsInfo prevWordsInfo = PrevWordsInfo.BEGINNING_OF_SENTENCE;
+        for (int i = 0; i < phrase.length; i++) {
+            final String[] subPhrase = Arrays.copyOfRange(phrase, i /* start */, phrase.length);
+            final String subPhraseStr = TextUtils.join(Constants.WORD_SEPARATOR, subPhrase);
+            contextualDict.addUnigramEntryWithCheckingDistracter(
+                    subPhraseStr, probability, null /* shortcutTarget */,
+                    Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
+                    false /* isNotAWord */, false /* isBlacklisted */,
+                    BinaryDictionary.NOT_A_VALID_TIMESTAMP,
+                    DistracterFilter.EMPTY_DISTRACTER_FILTER);
+            contextualDict.addNgramEntry(prevWordsInfo, subPhraseStr,
+                    bigramProbabilityForPhrases, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+
+            if (i < phrase.length - 1) {
+                contextualDict.addUnigramEntryWithCheckingDistracter(
+                        phrase[i], probability, null /* shortcutTarget */,
+                        Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
+                        false /* isNotAWord */, false /* isBlacklisted */,
+                        BinaryDictionary.NOT_A_VALID_TIMESTAMP,
+                        DistracterFilter.EMPTY_DISTRACTER_FILTER);
+                contextualDict.addNgramEntry(prevWordsInfo, phrase[i],
+                        bigramProbabilityForWords, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+            }
+            prevWordsInfo =
+                    prevWordsInfo.getNextPrevWordsInfo(new PrevWordsInfo.WordInfo(phrase[i]));
+        }
+    }
+
+    public void dumpDictionaryForDebug(final String dictName) {
+        final ExpandableBinaryDictionary dictToDump = mDictionaries.getSubDict(dictName);
+        if (dictToDump == null) {
+            Log.e(TAG, "Cannot dump " + dictName + ". "
+                    + "The dictionary is not being used for suggestion or cannot be dumped.");
+            return;
+        }
+        dictToDump.dumpAllWordsForDebug();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFactory.java b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
index 828e54f..59de4f8 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFactory.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFactory.java
@@ -16,13 +16,13 @@
 
 package com.android.inputmethod.latin;
 
+import android.content.ContentProviderClient;
 import android.content.Context;
 import android.content.res.AssetFileDescriptor;
 import android.content.res.Resources;
 import android.util.Log;
 
 import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
 
 import java.io.File;
@@ -54,7 +54,7 @@
                     createReadOnlyBinaryDictionary(context, locale));
         }
 
-        final LinkedList<Dictionary> dictList = CollectionUtils.newLinkedList();
+        final LinkedList<Dictionary> dictList = new LinkedList<>();
         final ArrayList<AssetFileAddress> assetFileList =
                 BinaryDictionaryGetter.getDictionaryFiles(locale, context);
         if (null != assetFileList) {
@@ -64,6 +64,10 @@
                                 useFullEditDistance, locale, Dictionary.TYPE_MAIN);
                 if (readOnlyBinaryDictionary.isValidDictionary()) {
                     dictList.add(readOnlyBinaryDictionary);
+                } else {
+                    readOnlyBinaryDictionary.close();
+                    // Prevent this dictionary to do any further harm.
+                    killDictionary(context, f);
                 }
             }
         }
@@ -75,6 +79,51 @@
     }
 
     /**
+     * Kills a dictionary so that it is never used again, if possible.
+     * @param context The context to contact the dictionary provider, if possible.
+     * @param f A file address to the dictionary to kill.
+     */
+    private static void killDictionary(final Context context, final AssetFileAddress f) {
+        if (f.pointsToPhysicalFile()) {
+            f.deleteUnderlyingFile();
+            // Warn the dictionary provider if the dictionary came from there.
+            final ContentProviderClient providerClient;
+            try {
+                providerClient = context.getContentResolver().acquireContentProviderClient(
+                        BinaryDictionaryFileDumper.getProviderUriBuilder("").build());
+            } catch (final SecurityException e) {
+                Log.e(TAG, "No permission to communicate with the dictionary provider", e);
+                return;
+            }
+            if (null == providerClient) {
+                Log.e(TAG, "Can't establish communication with the dictionary provider");
+                return;
+            }
+            final String wordlistId =
+                    DictionaryInfoUtils.getWordListIdFromFileName(new File(f.mFilename).getName());
+            if (null != wordlistId) {
+                // TODO: this is a reasonable last resort, but it is suboptimal.
+                // The following will remove the entry for this dictionary with the dictionary
+                // provider. When the metadata is downloaded again, we will try downloading it
+                // again.
+                // However, in the practice that will mean the user will find themselves without
+                // the new dictionary. That's fine for languages where it's included in the APK,
+                // but for other languages it will leave the user without a dictionary at all until
+                // the next update, which may be a few days away.
+                // Ideally, we would trigger a new download right away, and use increasing retry
+                // delays for this particular id/version combination.
+                // Then again, this is expected to only ever happen in case of human mistake. If
+                // the wrong file is on the server, the following is still doing the right thing.
+                // If it's a file left over from the last version however, it's not great.
+                BinaryDictionaryFileDumper.reportBrokenFileToDictionaryProvider(
+                        providerClient,
+                        context.getString(R.string.dictionary_pack_client_id),
+                        wordlistId);
+            }
+        }
+    }
+
+    /**
      * Initializes a main dictionary collection from a dictionary pack, with default flags.
      *
      * This searches for a content provider providing a dictionary pack for the specified
diff --git a/java/src/com/android/inputmethod/latin/DictionaryWriter.java b/java/src/com/android/inputmethod/latin/DictionaryWriter.java
deleted file mode 100644
index 3df2a2b..0000000
--- a/java/src/com/android/inputmethod/latin/DictionaryWriter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin;
-
-import android.content.Context;
-
-import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.makedict.DictEncoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
-import com.android.inputmethod.latin.makedict.FusionDictionary;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * An in memory dictionary for memorizing entries and writing a binary dictionary.
- */
-public class DictionaryWriter extends AbstractDictionaryWriter {
-    private static final int BINARY_DICT_VERSION = 3;
-    private static final FormatSpec.FormatOptions FORMAT_OPTIONS =
-            new FormatSpec.FormatOptions(BINARY_DICT_VERSION, true /* supportsDynamicUpdate */);
-
-    private FusionDictionary mFusionDictionary;
-
-    public DictionaryWriter(final Context context, final String dictType) {
-        super(context, dictType);
-        clear();
-    }
-
-    @Override
-    public void clear() {
-        final HashMap<String, String> attributes = CollectionUtils.newHashMap();
-        mFusionDictionary = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(attributes, false, false));
-    }
-
-    /**
-     * Adds a word unigram to the fusion dictionary.
-     */
-    // TODO: Create "cache dictionary" to cache fresh words for frequently updated dictionaries,
-    // considering performance regression.
-    @Override
-    public void addUnigramWord(final String word, final String shortcutTarget, final int frequency,
-            final int shortcutFreq, final boolean isNotAWord) {
-        if (shortcutTarget == null) {
-            mFusionDictionary.add(word, frequency, null, isNotAWord);
-        } else {
-            // TODO: Do this in the subclass, with this class taking an arraylist.
-            final ArrayList<WeightedString> shortcutTargets = CollectionUtils.newArrayList();
-            shortcutTargets.add(new WeightedString(shortcutTarget, shortcutFreq));
-            mFusionDictionary.add(word, frequency, shortcutTargets, isNotAWord);
-        }
-    }
-
-    @Override
-    public void addBigramWords(final String word0, final String word1, final int frequency,
-            final boolean isValid, final long lastModifiedTime) {
-        mFusionDictionary.setBigram(word0, word1, frequency);
-    }
-
-    @Override
-    public void removeBigramWords(final String word0, final String word1) {
-        // This class don't support removing bigram words.
-    }
-
-    @Override
-    protected void writeDictionary(final DictEncoder dictEncoder,
-            final Map<String, String> attributeMap) throws IOException, UnsupportedFormatException {
-        for (final Map.Entry<String, String> entry : attributeMap.entrySet()) {
-            mFusionDictionary.addOptionAttribute(entry.getKey(), entry.getValue());
-        }
-        dictEncoder.writeDictionary(mFusionDictionary, FORMAT_OPTIONS);
-    }
-
-    @Override
-    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        // This class doesn't support suggestion.
-        return null;
-    }
-
-    @Override
-    public boolean isValidWord(String word) {
-        // This class doesn't support dictionary retrieval.
-        return false;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index eb8650e..5808b9e 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -17,69 +17,58 @@
 package com.android.inputmethod.latin;
 
 import android.content.Context;
-import android.os.SystemClock;
 import android.util.Log;
 
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
 import com.android.inputmethod.latin.makedict.FormatSpec;
-import com.android.inputmethod.latin.personalization.DynamicPersonalizationDictionaryWriter;
+import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+import com.android.inputmethod.latin.makedict.WordProperty;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.utils.AsyncResultHolder;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.PrioritizedSerialExecutor;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
+import com.android.inputmethod.latin.utils.CombinedFormatUtils;
+import com.android.inputmethod.latin.utils.DistracterFilter;
+import com.android.inputmethod.latin.utils.ExecutorUtils;
+import com.android.inputmethod.latin.utils.FileUtils;
+import com.android.inputmethod.latin.utils.LanguageModelParam;
 
 import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 /**
  * Abstract base class for an expandable dictionary that can be created and updated dynamically
  * during runtime. When updated it automatically generates a new binary dictionary to handle future
- * queries in native code. This binary dictionary is written to internal storage, and potentially
- * shared across multiple ExpandableBinaryDictionary instances. Updates to each dictionary filename
- * are controlled across multiple instances to ensure that only one instance can update the same
- * dictionary at the same time.
+ * queries in native code. This binary dictionary is written to internal storage.
  */
 abstract public class ExpandableBinaryDictionary extends Dictionary {
+    private static final boolean DEBUG = false;
 
     /** Used for Log actions from this class */
     private static final String TAG = ExpandableBinaryDictionary.class.getSimpleName();
 
     /** Whether to print debug output to log */
-    private static boolean DEBUG = false;
-
-    // TODO: Remove.
-    /** Whether to call binary dictionary dynamically updating methods. */
-    public static boolean ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE = true;
+    private static final boolean DBG_STRESS_TEST = false;
 
     private static final int TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS = 100;
 
+    private static final int DEFAULT_MAX_UNIGRAM_COUNT = 10000;
+    private static final int DEFAULT_MAX_BIGRAM_COUNT = 10000;
+
     /**
      * The maximum length of a word in this dictionary.
      */
     protected static final int MAX_WORD_LENGTH = Constants.DICTIONARY_MAX_WORD_LENGTH;
 
-    private static final int DICTIONARY_FORMAT_VERSION = 3;
-
-    private static final String SUPPORTS_DYNAMIC_UPDATE =
-            FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE;
-
-    /**
-     * A static map of update controllers, each of which records the time of accesses to a single
-     * binary dictionary file and tracks whether the file is regenerating. The key for this map is
-     * the filename and the value is the shared dictionary time recorder associated with that
-     * filename.
-     */
-    private static final ConcurrentHashMap<String, DictionaryUpdateController>
-            sFilenameDictionaryUpdateControllerMap = CollectionUtils.newConcurrentHashMap();
-
-    private static final ConcurrentHashMap<String, PrioritizedSerialExecutor>
-            sFilenameExecutorMap = CollectionUtils.newConcurrentHashMap();
+    private static final int DICTIONARY_FORMAT_VERSION = FormatSpec.VERSION4;
 
     /** The application context. */
     protected final Context mContext;
@@ -90,114 +79,101 @@
      */
     private BinaryDictionary mBinaryDictionary;
 
-    // TODO: Remove and handle dictionaries in native code.
-    /** The in-memory dictionary used to generate the binary dictionary. */
-    protected AbstractDictionaryWriter mDictionaryWriter;
-
     /**
-     * The name of this dictionary, used as the filename for storing the binary dictionary. Multiple
-     * dictionary instances with the same filename is supported, with access controlled by
-     * DictionaryTimeRecorder.
+     * The name of this dictionary, used as a part of the filename for storing the binary
+     * dictionary.
      */
-    private final String mFilename;
+    private final String mDictName;
 
-    /** Whether to support dynamically updating the dictionary */
-    private final boolean mIsUpdatable;
+    /** Dictionary locale */
+    private final Locale mLocale;
 
-    // TODO: remove, once dynamic operations is serialized
-    /** Controls updating the shared binary dictionary file across multiple instances. */
-    private final DictionaryUpdateController mFilenameDictionaryUpdateController;
+    /** Dictionary file */
+    private final File mDictFile;
 
-    // TODO: remove, once dynamic operations is serialized
-    /** Controls updating the local binary dictionary for this instance. */
-    private final DictionaryUpdateController mPerInstanceDictionaryUpdateController =
-            new DictionaryUpdateController();
+    /** Indicates whether a task for reloading the dictionary has been scheduled. */
+    private final AtomicBoolean mIsReloading;
+
+    /** Indicates whether the current dictionary needs to be recreated. */
+    private boolean mNeedsToRecreate;
+
+    private final ReentrantReadWriteLock mLock;
+
+    private Map<String, String> mAdditionalAttributeMap = null;
 
     /* A extension for a binary dictionary file. */
-    public static final String DICT_FILE_EXTENSION = ".dict";
-
-    private final AtomicReference<Runnable> mUnfinishedFlushingTask =
-            new AtomicReference<Runnable>();
+    protected static final String DICT_FILE_EXTENSION = ".dict";
 
     /**
-     * Abstract method for loading the unigrams and bigrams of a given dictionary in a background
-     * thread.
+     * Abstract method for loading initial contents of a given dictionary.
      */
-    protected abstract void loadDictionaryAsync();
+    protected abstract void loadInitialContentsLocked();
 
-    /**
-     * Indicates that the source dictionary content has changed and a rebuild of the binary file is
-     * required. If it returns false, the next reload will only read the current binary dictionary
-     * from file. Note that the shared binary dictionary is locked when this is called.
-     */
-    protected abstract boolean hasContentChanged();
-
-    /**
-     * Gets the dictionary update controller for the given filename.
-     */
-    private static DictionaryUpdateController getDictionaryUpdateController(
-            String filename) {
-        DictionaryUpdateController recorder = sFilenameDictionaryUpdateControllerMap.get(filename);
-        if (recorder == null) {
-            synchronized(sFilenameDictionaryUpdateControllerMap) {
-                recorder = new DictionaryUpdateController();
-                sFilenameDictionaryUpdateControllerMap.put(filename, recorder);
-            }
-        }
-        return recorder;
+    private boolean matchesExpectedBinaryDictFormatVersionForThisType(final int formatVersion) {
+        return formatVersion == FormatSpec.VERSION4;
     }
 
-    /**
-     * Gets the executor for the given filename.
-     */
-    private static PrioritizedSerialExecutor getExecutor(final String filename) {
-        PrioritizedSerialExecutor executor = sFilenameExecutorMap.get(filename);
-        if (executor == null) {
-            synchronized(sFilenameExecutorMap) {
-                executor = new PrioritizedSerialExecutor();
-                sFilenameExecutorMap.put(filename, executor);
-            }
-        }
-        return executor;
+    private boolean needsToMigrateDictionary(final int formatVersion) {
+        // When we bump up the dictionary format version, the old version should be added to here
+        // for supporting migration. Note that native code has to support reading such formats.
+        return formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING;
     }
 
-    private static AbstractDictionaryWriter getDictionaryWriter(final Context context,
-            final String dictType, final boolean isDynamicPersonalizationDictionary) {
-        if (isDynamicPersonalizationDictionary) {
-            if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                return null;
-            } else {
-                return new DynamicPersonalizationDictionaryWriter(context, dictType);
-            }
-        } else {
-            return new DictionaryWriter(context, dictType);
-        }
+    public boolean isValidDictionaryLocked() {
+        return mBinaryDictionary.isValidDictionary();
     }
 
     /**
      * Creates a new expandable binary dictionary.
      *
      * @param context The application context of the parent.
-     * @param filename The filename for this binary dictionary. Multiple dictionaries with the same
-     *        filename is supported.
+     * @param dictName The name of the dictionary. Multiple instances with the same
+     *        name is supported.
+     * @param locale the dictionary locale.
      * @param dictType the dictionary type, as a human-readable string
-     * @param isUpdatable whether to support dynamically updating the dictionary. Please note that
-     *        dynamic dictionary has negative effects on memory space and computation time.
+     * @param dictFile dictionary file path. if null, use default dictionary path based on
+     *        dictionary type.
      */
-    public ExpandableBinaryDictionary(final Context context, final String filename,
-            final String dictType, final boolean isUpdatable) {
+    public ExpandableBinaryDictionary(final Context context, final String dictName,
+            final Locale locale, final String dictType, final File dictFile) {
         super(dictType);
-        mFilename = filename;
+        mDictName = dictName;
         mContext = context;
-        mIsUpdatable = isUpdatable;
+        mLocale = locale;
+        mDictFile = getDictFile(context, dictName, dictFile);
         mBinaryDictionary = null;
-        mFilenameDictionaryUpdateController = getDictionaryUpdateController(filename);
-        // Currently, only dynamic personalization dictionary is updatable.
-        mDictionaryWriter = getDictionaryWriter(context, dictType, isUpdatable);
+        mIsReloading = new AtomicBoolean();
+        mNeedsToRecreate = false;
+        mLock = new ReentrantReadWriteLock();
     }
 
-    protected static String getFilenameWithLocale(final String name, final String localeStr) {
-        return name + "." + localeStr + DICT_FILE_EXTENSION;
+    public static File getDictFile(final Context context, final String dictName,
+            final File dictFile) {
+        return (dictFile != null) ? dictFile
+                : new File(context.getFilesDir(), dictName + DICT_FILE_EXTENSION);
+    }
+
+    public static String getDictName(final String name, final Locale locale,
+            final File dictFile) {
+        return dictFile != null ? dictFile.getName() : name + "." + locale.toString();
+    }
+
+    private void asyncExecuteTaskWithWriteLock(final Runnable task) {
+        asyncExecuteTaskWithLock(mLock.writeLock(), task);
+    }
+
+    private void asyncExecuteTaskWithLock(final Lock lock, final Runnable task) {
+        ExecutorUtils.getExecutor(mDictName).execute(new Runnable() {
+            @Override
+            public void run() {
+                lock.lock();
+                try {
+                    task.run();
+                } finally {
+                    lock.unlock();
+                }
+            }
+        });
     }
 
     /**
@@ -205,23 +181,7 @@
      */
     @Override
     public void close() {
-        getExecutor(mFilename).execute(new Runnable() {
-            @Override
-            public void run() {
-                if (mBinaryDictionary!= null) {
-                    mBinaryDictionary.close();
-                    mBinaryDictionary = null;
-                }
-                if (mDictionaryWriter != null) {
-                    mDictionaryWriter.close();
-                }
-            }
-        });
-    }
-
-    protected void closeBinaryDictionary() {
-        // Ensure that no other threads are accessing the local binary dictionary.
-        getExecutor(mFilename).execute(new Runnable() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
             @Override
             public void run() {
                 if (mBinaryDictionary != null) {
@@ -233,504 +193,481 @@
     }
 
     protected Map<String, String> getHeaderAttributeMap() {
-        HashMap<String, String> attributeMap = new HashMap<String, String>();
-        attributeMap.put(FormatSpec.FileHeader.SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE,
-                SUPPORTS_DYNAMIC_UPDATE);
-        attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, mFilename);
+        HashMap<String, String> attributeMap = new HashMap<>();
+        if (mAdditionalAttributeMap != null) {
+            attributeMap.putAll(mAdditionalAttributeMap);
+        }
+        attributeMap.put(DictionaryHeader.DICTIONARY_ID_KEY, mDictName);
+        attributeMap.put(DictionaryHeader.DICTIONARY_LOCALE_KEY, mLocale.toString());
+        attributeMap.put(DictionaryHeader.DICTIONARY_VERSION_KEY,
+                String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
+        attributeMap.put(DictionaryHeader.MAX_UNIGRAM_COUNT_KEY,
+                String.valueOf(DEFAULT_MAX_UNIGRAM_COUNT));
+        attributeMap.put(DictionaryHeader.MAX_BIGRAM_COUNT_KEY,
+                String.valueOf(DEFAULT_MAX_BIGRAM_COUNT));
         return attributeMap;
     }
 
-    protected void clear() {
-        getExecutor(mFilename).execute(new Runnable() {
+    private void removeBinaryDictionary() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
             @Override
             public void run() {
-                if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE && mDictionaryWriter == null) {
-                    mBinaryDictionary.close();
-                    final File file = new File(mContext.getFilesDir(), mFilename);
-                    BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(),
-                            DICTIONARY_FORMAT_VERSION, getHeaderAttributeMap());
-                    mBinaryDictionary = new BinaryDictionary(
-                            file.getAbsolutePath(), 0 /* offset */, file.length(),
-                            true /* useFullEditDistance */, null, mDictType, mIsUpdatable);
-                } else {
-                    mDictionaryWriter.clear();
-                }
+                removeBinaryDictionaryLocked();
             }
         });
     }
 
-    /**
-     * Adds a word unigram to the dictionary. Used for loading a dictionary.
-     * @param word The word to add.
-     * @param shortcutTarget A shortcut target for this word, or null if none.
-     * @param frequency The frequency for this unigram.
-     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
-     *   if shortcutTarget is null.
-     * @param isNotAWord true if this is not a word, i.e. shortcut only.
-     */
-    protected void addWord(final String word, final String shortcutTarget,
-            final int frequency, final int shortcutFreq, final boolean isNotAWord) {
-        mDictionaryWriter.addUnigramWord(word, shortcutTarget, frequency, shortcutFreq, isNotAWord);
+    private void removeBinaryDictionaryLocked() {
+        if (mBinaryDictionary != null) {
+            mBinaryDictionary.close();
+        }
+        if (mDictFile.exists() && !FileUtils.deleteRecursively(mDictFile)) {
+            Log.e(TAG, "Can't remove a file: " + mDictFile.getName());
+        }
+        mBinaryDictionary = null;
     }
 
-    /**
-     * Adds a word bigram in the dictionary. Used for loading a dictionary.
-     */
-    protected void addBigram(final String prevWord, final String word, final int frequency,
-            final long lastModifiedTime) {
-        mDictionaryWriter.addBigramWords(prevWord, word, frequency, true /* isValid */,
-                lastModifiedTime);
+    private void openBinaryDictionaryLocked() {
+        mBinaryDictionary = new BinaryDictionary(
+                mDictFile.getAbsolutePath(), 0 /* offset */, mDictFile.length(),
+                true /* useFullEditDistance */, mLocale, mDictType, true /* isUpdatable */);
+    }
+
+    private void createOnMemoryBinaryDictionaryLocked() {
+        mBinaryDictionary = new BinaryDictionary(
+                mDictFile.getAbsolutePath(), true /* useFullEditDistance */, mLocale, mDictType,
+                DICTIONARY_FORMAT_VERSION, getHeaderAttributeMap());
+    }
+
+    public void clear() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
+            @Override
+            public void run() {
+                removeBinaryDictionaryLocked();
+                createOnMemoryBinaryDictionaryLocked();
+            }
+        });
     }
 
     /**
      * Check whether GC is needed and run GC if required.
      */
     protected void runGCIfRequired(final boolean mindsBlockByGC) {
-        if (!ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) return;
-        getExecutor(mFilename).execute(new Runnable() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
             @Override
             public void run() {
-                runGCIfRequiredInternalLocked(mindsBlockByGC);
+                if (mBinaryDictionary == null) {
+                    return;
+                }
+                runGCIfRequiredLocked(mindsBlockByGC);
             }
         });
     }
 
-    private void runGCIfRequiredInternalLocked(final boolean mindsBlockByGC) {
-        if (!ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) return;
-        // Calls to needsToRunGC() need to be serialized.
+    protected void runGCIfRequiredLocked(final boolean mindsBlockByGC) {
         if (mBinaryDictionary.needsToRunGC(mindsBlockByGC)) {
-            if (setIsRegeneratingIfNotRegenerating()) {
-                // Run GC after currently existing time sensitive operations.
-                getExecutor(mFilename).executePrioritized(new Runnable() {
-                    @Override
-                    public void run() {
-                        try {
-                            mBinaryDictionary.flushWithGC();
-                        } finally {
-                            mFilenameDictionaryUpdateController.mIsRegenerating.set(false);
-                        }
-                    }
-                });
-            }
+            mBinaryDictionary.flushWithGC();
         }
     }
 
     /**
-     * Dynamically adds a word unigram to the dictionary. May overwrite an existing entry.
+     * Adds unigram information of a word to the dictionary. May overwrite an existing entry.
      */
-    protected void addWordDynamically(final String word, final String shortcutTarget,
-            final int frequency, final int shortcutFreq, final boolean isNotAWord) {
-        if (!mIsUpdatable) {
-            Log.w(TAG, "addWordDynamically is called for non-updatable dictionary: " + mFilename);
-            return;
-        }
-        getExecutor(mFilename).execute(new Runnable() {
-            @Override
-            public void run() {
-                if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                    runGCIfRequiredInternalLocked(true /* mindsBlockByGC */);
-                    mBinaryDictionary.addUnigramWord(word, frequency);
-                } else {
-                    // TODO: Remove.
-                    mDictionaryWriter.addUnigramWord(word, shortcutTarget, frequency, shortcutFreq,
-                            isNotAWord);
-                }
-            }
-        });
-    }
-
-    /**
-     * Dynamically adds a word bigram in the dictionary. May overwrite an existing entry.
-     */
-    protected void addBigramDynamically(final String word0, final String word1,
-            final int frequency, final boolean isValid) {
-        if (!mIsUpdatable) {
-            Log.w(TAG, "addBigramDynamically is called for non-updatable dictionary: "
-                    + mFilename);
-            return;
-        }
-        getExecutor(mFilename).execute(new Runnable() {
-            @Override
-            public void run() {
-                if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                    runGCIfRequiredInternalLocked(true /* mindsBlockByGC */);
-                    mBinaryDictionary.addBigramWords(word0, word1, frequency);
-                } else {
-                    // TODO: Remove.
-                    mDictionaryWriter.addBigramWords(word0, word1, frequency, isValid,
-                            0 /* lastTouchedTime */);
-                }
-            }
-        });
-    }
-
-    /**
-     * Dynamically remove a word bigram in the dictionary.
-     */
-    protected void removeBigramDynamically(final String word0, final String word1) {
-        if (!mIsUpdatable) {
-            Log.w(TAG, "removeBigramDynamically is called for non-updatable dictionary: "
-                    + mFilename);
-            return;
-        }
-        getExecutor(mFilename).execute(new Runnable() {
-            @Override
-            public void run() {
-                if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                    runGCIfRequiredInternalLocked(true /* mindsBlockByGC */);
-                    mBinaryDictionary.removeBigramWords(word0, word1);
-                } else {
-                    // TODO: Remove.
-                    mDictionaryWriter.removeBigramWords(word0, word1);
-                }
-            }
-        });
-    }
-
-    @Override
-    public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
-            final int sessionId) {
+    public void addUnigramEntryWithCheckingDistracter(final String word, final int frequency,
+            final String shortcutTarget, final int shortcutFreq, final boolean isNotAWord,
+            final boolean isBlacklisted, final int timestamp,
+            final DistracterFilter distracterFilter) {
         reloadDictionaryIfRequired();
-        if (isRegenerating()) {
-            return null;
-        }
-        final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList();
-        final AsyncResultHolder<ArrayList<SuggestedWordInfo>> holder =
-                new AsyncResultHolder<ArrayList<SuggestedWordInfo>>();
-        getExecutor(mFilename).executePrioritized(new Runnable() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
             @Override
             public void run() {
-                if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
+                if (mBinaryDictionary == null) {
+                    return;
+                }
+                if (distracterFilter.isDistracterToWordsInDictionaries(
+                        PrevWordsInfo.EMPTY_PREV_WORDS_INFO, word, mLocale)) {
+                    // The word is a distracter.
+                    return;
+                }
+                runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                addUnigramLocked(word, frequency, shortcutTarget, shortcutFreq,
+                        isNotAWord, isBlacklisted, timestamp);
+            }
+        });
+    }
+
+    protected void addUnigramLocked(final String word, final int frequency,
+            final String shortcutTarget, final int shortcutFreq, final boolean isNotAWord,
+            final boolean isBlacklisted, final int timestamp) {
+        if (!mBinaryDictionary.addUnigramEntry(word, frequency, shortcutTarget, shortcutFreq,
+                false /* isBeginningOfSentence */, isNotAWord, isBlacklisted, timestamp)) {
+            Log.e(TAG, "Cannot add unigram entry. word: " + word);
+        }
+    }
+
+    /**
+     * Dynamically remove the unigram entry from the dictionary.
+     */
+    public void removeUnigramEntryDynamically(final String word) {
+        reloadDictionaryIfRequired();
+        asyncExecuteTaskWithWriteLock(new Runnable() {
+            @Override
+            public void run() {
+                if (mBinaryDictionary == null) {
+                    return;
+                }
+                runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                if (!mBinaryDictionary.removeUnigramEntry(word)) {
+                    if (DEBUG) {
+                        Log.i(TAG, "Cannot remove unigram entry: " + word);
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * Adds n-gram information of a word to the dictionary. May overwrite an existing entry.
+     */
+    public void addNgramEntry(final PrevWordsInfo prevWordsInfo, final String word,
+            final int frequency, final int timestamp) {
+        reloadDictionaryIfRequired();
+        asyncExecuteTaskWithWriteLock(new Runnable() {
+            @Override
+            public void run() {
+                if (mBinaryDictionary == null) {
+                    return;
+                }
+                runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                addNgramEntryLocked(prevWordsInfo, word, frequency, timestamp);
+            }
+        });
+    }
+
+    protected void addNgramEntryLocked(final PrevWordsInfo prevWordsInfo, final String word,
+            final int frequency, final int timestamp) {
+        if (!mBinaryDictionary.addNgramEntry(prevWordsInfo, word, frequency, timestamp)) {
+            if (DEBUG) {
+                Log.i(TAG, "Cannot add n-gram entry.");
+                Log.i(TAG, "  PrevWordsInfo: " + prevWordsInfo + ", word: " + word);
+            }
+        }
+    }
+
+    /**
+     * Dynamically remove the n-gram entry in the dictionary.
+     */
+    @UsedForTesting
+    public void removeNgramDynamically(final PrevWordsInfo prevWordsInfo, final String word) {
+        reloadDictionaryIfRequired();
+        asyncExecuteTaskWithWriteLock(new Runnable() {
+            @Override
+            public void run() {
+                if (mBinaryDictionary == null) {
+                    return;
+                }
+                runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                if (!mBinaryDictionary.removeNgramEntry(prevWordsInfo, word)) {
+                    if (DEBUG) {
+                        Log.i(TAG, "Cannot remove n-gram entry.");
+                        Log.i(TAG, "  PrevWordsInfo: " + prevWordsInfo + ", word: " + word);
+                    }
+                }
+            }
+        });
+    }
+
+    public interface AddMultipleDictionaryEntriesCallback {
+        public void onFinished();
+    }
+
+    /**
+     * Dynamically add multiple entries to the dictionary.
+     */
+    public void addMultipleDictionaryEntriesDynamically(
+            final ArrayList<LanguageModelParam> languageModelParams,
+            final AddMultipleDictionaryEntriesCallback callback) {
+        reloadDictionaryIfRequired();
+        asyncExecuteTaskWithWriteLock(new Runnable() {
+            @Override
+            public void run() {
+                try {
                     if (mBinaryDictionary == null) {
-                        holder.set(null);
                         return;
                     }
-                    final ArrayList<SuggestedWordInfo> binarySuggestion =
-                            mBinaryDictionary.getSuggestionsWithSessionId(composer, prevWord,
-                                    proximityInfo, blockOffensiveWords, additionalFeaturesOptions,
-                                    sessionId);
-                    holder.set(binarySuggestion);
-                } else {
-                    final ArrayList<SuggestedWordInfo> inMemDictSuggestion =
-                            composer.isBatchMode() ? null :
-                                    mDictionaryWriter.getSuggestionsWithSessionId(composer,
-                                            prevWord, proximityInfo, blockOffensiveWords,
-                                            additionalFeaturesOptions, sessionId);
-                    // TODO: Remove checking mIsUpdatable and use native suggestion.
-                    if (mBinaryDictionary != null && !mIsUpdatable) {
-                        final ArrayList<SuggestedWordInfo> binarySuggestion =
-                                mBinaryDictionary.getSuggestionsWithSessionId(composer, prevWord,
-                                        proximityInfo, blockOffensiveWords,
-                                        additionalFeaturesOptions, sessionId);
-                        if (inMemDictSuggestion == null) {
-                            holder.set(binarySuggestion);
-                        } else if (binarySuggestion == null) {
-                            holder.set(inMemDictSuggestion);
-                        } else {
-                            binarySuggestion.addAll(inMemDictSuggestion);
-                            holder.set(binarySuggestion);
-                        }
-                    } else {
-                        holder.set(inMemDictSuggestion);
+                    mBinaryDictionary.addMultipleDictionaryEntries(
+                            languageModelParams.toArray(
+                                    new LanguageModelParam[languageModelParams.size()]));
+                } finally {
+                    if (callback != null) {
+                        callback.onFinished();
                     }
                 }
             }
         });
-        return holder.get(null, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS);
     }
 
     @Override
     public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions, 0 /* sessionId */);
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion, final int sessionId,
+            final float[] inOutLanguageWeight) {
+        reloadDictionaryIfRequired();
+        boolean lockAcquired = false;
+        try {
+            lockAcquired = mLock.readLock().tryLock(
+                    TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
+            if (lockAcquired) {
+                if (mBinaryDictionary == null) {
+                    return null;
+                }
+                final ArrayList<SuggestedWordInfo> suggestions =
+                        mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
+                                settingsValuesForSuggestion, sessionId, inOutLanguageWeight);
+                if (mBinaryDictionary.isCorrupted()) {
+                    Log.i(TAG, "Dictionary (" + mDictName +") is corrupted. "
+                            + "Remove and regenerate it.");
+                    removeBinaryDictionary();
+                }
+                return suggestions;
+            }
+        } catch (final InterruptedException e) {
+            Log.e(TAG, "Interrupted tryLock() in getSuggestionsWithSessionId().", e);
+        } finally {
+            if (lockAcquired) {
+                mLock.readLock().unlock();
+            }
+        }
+        return null;
     }
 
     @Override
-    public boolean isValidWord(final String word) {
+    public boolean isInDictionary(final String word) {
         reloadDictionaryIfRequired();
-        return isValidWordInner(word);
-    }
-
-    protected boolean isValidWordInner(final String word) {
-        if (isRegenerating()) {
-            return false;
-        }
-        final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>();
-        getExecutor(mFilename).executePrioritized(new Runnable() {
-            @Override
-            public void run() {
-                holder.set(isValidWordLocked(word));
+        boolean lockAcquired = false;
+        try {
+            lockAcquired = mLock.readLock().tryLock(
+                    TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
+            if (lockAcquired) {
+                if (mBinaryDictionary == null) {
+                    return false;
+                }
+                return isInDictionaryLocked(word);
             }
-        });
-        return holder.get(false, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS);
+        } catch (final InterruptedException e) {
+            Log.e(TAG, "Interrupted tryLock() in isInDictionary().", e);
+        } finally {
+            if (lockAcquired) {
+                mLock.readLock().unlock();
+            }
+        }
+        return false;
     }
 
-    protected boolean isValidWordLocked(final String word) {
+    protected boolean isInDictionaryLocked(final String word) {
         if (mBinaryDictionary == null) return false;
-        return mBinaryDictionary.isValidWord(word);
+        return mBinaryDictionary.isInDictionary(word);
     }
 
-    protected boolean isValidBigramLocked(final String word1, final String word2) {
-        if (mBinaryDictionary == null) return false;
-        return mBinaryDictionary.isValidBigram(word1, word2);
-    }
-
-    /**
-     * Load the current binary dictionary from internal storage in a background thread. If no binary
-     * dictionary exists, this method will generate one.
-     */
-    protected void loadDictionary() {
-        mPerInstanceDictionaryUpdateController.mLastUpdateRequestTime = SystemClock.uptimeMillis();
+    @Override
+    public int getMaxFrequencyOfExactMatches(final String word) {
         reloadDictionaryIfRequired();
+        boolean lockAcquired = false;
+        try {
+            lockAcquired = mLock.readLock().tryLock(
+                    TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
+            if (lockAcquired) {
+                if (mBinaryDictionary == null) {
+                    return NOT_A_PROBABILITY;
+                }
+                return mBinaryDictionary.getMaxFrequencyOfExactMatches(word);
+            }
+        } catch (final InterruptedException e) {
+            Log.e(TAG, "Interrupted tryLock() in getMaxFrequencyOfExactMatches().", e);
+        } finally {
+            if (lockAcquired) {
+                mLock.readLock().unlock();
+            }
+        }
+        return NOT_A_PROBABILITY;
+    }
+
+
+    protected boolean isValidNgramLocked(final PrevWordsInfo prevWordsInfo, final String word) {
+        if (mBinaryDictionary == null) return false;
+        return mBinaryDictionary.isValidNgram(prevWordsInfo, word);
     }
 
     /**
      * Loads the current binary dictionary from internal storage. Assumes the dictionary file
      * exists.
      */
-    private void loadBinaryDictionary() {
-        if (DEBUG) {
-            Log.d(TAG, "Loading binary dictionary: " + mFilename + " request="
-                    + mFilenameDictionaryUpdateController.mLastUpdateRequestTime + " update="
-                    + mFilenameDictionaryUpdateController.mLastUpdateTime);
+    private void loadBinaryDictionaryLocked() {
+        if (DBG_STRESS_TEST) {
+            // Test if this class does not cause problems when it takes long time to load binary
+            // dictionary.
+            try {
+                Log.w(TAG, "Start stress in loading: " + mDictName);
+                Thread.sleep(15000);
+                Log.w(TAG, "End stress in loading");
+            } catch (InterruptedException e) {
+            }
         }
-
-        final File file = new File(mContext.getFilesDir(), mFilename);
-        final String filename = file.getAbsolutePath();
-        final long length = file.length();
-
-        // Build the new binary dictionary
-        final BinaryDictionary newBinaryDictionary = new BinaryDictionary(filename, 0 /* offset */,
-                length, true /* useFullEditDistance */, null, mDictType, mIsUpdatable);
-
-        // Ensure all threads accessing the current dictionary have finished before
-        // swapping in the new one.
-        // TODO: Ensure multi-thread assignment of mBinaryDictionary.
         final BinaryDictionary oldBinaryDictionary = mBinaryDictionary;
-        getExecutor(mFilename).executePrioritized(new Runnable() {
-            @Override
-            public void run() {
-                mBinaryDictionary = newBinaryDictionary;
-                if (oldBinaryDictionary != null) {
-                    oldBinaryDictionary.close();
-                }
-            }
-        });
-    }
-
-    /**
-     * Abstract method for checking if it is required to reload the dictionary before writing
-     * a binary dictionary.
-     */
-    abstract protected boolean needsToReloadBeforeWriting();
-
-    /**
-     * Writes a new binary dictionary based on the contents of the fusion dictionary.
-     */
-    private void writeBinaryDictionary() {
-        if (DEBUG) {
-            Log.d(TAG, "Generating binary dictionary: " + mFilename + " request="
-                    + mFilenameDictionaryUpdateController.mLastUpdateRequestTime + " update="
-                    + mFilenameDictionaryUpdateController.mLastUpdateTime);
+        openBinaryDictionaryLocked();
+        if (oldBinaryDictionary != null) {
+            oldBinaryDictionary.close();
         }
-        if (needsToReloadBeforeWriting()) {
-            mDictionaryWriter.clear();
-            loadDictionaryAsync();
-            mDictionaryWriter.write(mFilename, getHeaderAttributeMap());
-        } else {
-            if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                if (mBinaryDictionary == null || !mBinaryDictionary.isValidDictionary()) {
-                    final File file = new File(mContext.getFilesDir(), mFilename);
-                    BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(),
-                            DICTIONARY_FORMAT_VERSION, getHeaderAttributeMap());
-                } else {
-                    if (mBinaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
-                        mBinaryDictionary.flushWithGC();
-                    } else {
-                        mBinaryDictionary.flush();
-                    }
-                }
-            } else {
-                mDictionaryWriter.write(mFilename, getHeaderAttributeMap());
+        if (mBinaryDictionary.isValidDictionary()
+                && needsToMigrateDictionary(mBinaryDictionary.getFormatVersion())) {
+            if (!mBinaryDictionary.migrateTo(DICTIONARY_FORMAT_VERSION)) {
+                Log.e(TAG, "Dictionary migration failed: " + mDictName);
+                removeBinaryDictionaryLocked();
             }
         }
     }
 
     /**
-     * Marks that the dictionary is out of date and requires a reload.
+     * Create a new binary dictionary and load initial contents.
+     */
+    private void createNewDictionaryLocked() {
+        removeBinaryDictionaryLocked();
+        createOnMemoryBinaryDictionaryLocked();
+        loadInitialContentsLocked();
+        // Run GC and flush to file when initial contents have been loaded.
+        mBinaryDictionary.flushWithGCIfHasUpdated();
+    }
+
+    /**
+     * Marks that the dictionary needs to be recreated.
      *
-     * @param requiresRebuild Indicates that the source dictionary content has changed and a rebuild
-     *        of the binary file is required. If not true, the next reload process will only read
-     *        the current binary dictionary from file.
      */
-    protected void setRequiresReload(final boolean requiresRebuild) {
-        final long time = SystemClock.uptimeMillis();
-        mPerInstanceDictionaryUpdateController.mLastUpdateRequestTime = time;
-        mFilenameDictionaryUpdateController.mLastUpdateRequestTime = time;
-        if (DEBUG) {
-            Log.d(TAG, "Reload request: " + mFilename + ": request=" + time + " update="
-                    + mFilenameDictionaryUpdateController.mLastUpdateTime);
-        }
+    protected void setNeedsToRecreate() {
+        mNeedsToRecreate = true;
     }
 
     /**
-     * Reloads the dictionary if required.
+     * Load the current binary dictionary from internal storage. If the dictionary file doesn't
+     * exists or needs to be regenerated, the new dictionary file will be asynchronously generated.
+     * However, the dictionary itself is accessible even before the new dictionary file is actually
+     * generated. It may return a null result for getSuggestions() in that case by design.
      */
     public final void reloadDictionaryIfRequired() {
         if (!isReloadRequired()) return;
-        if (setIsRegeneratingIfNotRegenerating()) {
-            reloadDictionary();
-        }
+        asyncReloadDictionary();
     }
 
     /**
      * Returns whether a dictionary reload is required.
      */
     private boolean isReloadRequired() {
-        return mBinaryDictionary == null || mPerInstanceDictionaryUpdateController.isOutOfDate();
-    }
-
-    private boolean isRegenerating() {
-        return mFilenameDictionaryUpdateController.mIsRegenerating.get();
-    }
-
-    // Returns whether the dictionary can be regenerated.
-    private boolean setIsRegeneratingIfNotRegenerating() {
-        return mFilenameDictionaryUpdateController.mIsRegenerating.compareAndSet(
-                false /* expect */ , true /* update */);
+        return mBinaryDictionary == null || mNeedsToRecreate;
     }
 
     /**
-     * Reloads the dictionary. Access is controlled on a per dictionary file basis and supports
-     * concurrent calls from multiple instances that share the same dictionary file.
+     * Reloads the dictionary. Access is controlled on a per dictionary file basis.
      */
-    private final void reloadDictionary() {
-        // Ensure that only one thread attempts to read or write to the shared binary dictionary
-        // file at the same time.
-        getExecutor(mFilename).execute(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    final long time = SystemClock.uptimeMillis();
-                    final boolean dictionaryFileExists = dictionaryFileExists();
-                    if (mFilenameDictionaryUpdateController.isOutOfDate()
-                            || !dictionaryFileExists) {
-                        // If the shared dictionary file does not exist or is out of date, the
-                        // first instance that acquires the lock will generate a new one.
-                        if (hasContentChanged() || !dictionaryFileExists) {
-                            // If the source content has changed or the dictionary does not exist,
-                            // rebuild the binary dictionary. Empty dictionaries are supported (in
-                            // the case where loadDictionaryAsync() adds nothing) in order to
-                            // provide a uniform framework.
-                            mFilenameDictionaryUpdateController.mLastUpdateTime = time;
-                            writeBinaryDictionary();
-                            loadBinaryDictionary();
-                        } else {
-                            // If not, the reload request was unnecessary so revert
-                            // LastUpdateRequestTime to LastUpdateTime.
-                            mFilenameDictionaryUpdateController.mLastUpdateRequestTime =
-                                    mFilenameDictionaryUpdateController.mLastUpdateTime;
+    private final void asyncReloadDictionary() {
+        if (mIsReloading.compareAndSet(false, true)) {
+            asyncExecuteTaskWithWriteLock(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        if (!mDictFile.exists() || mNeedsToRecreate) {
+                            // If the dictionary file does not exist or contents have been updated,
+                            // generate a new one.
+                            createNewDictionaryLocked();
+                        } else if (mBinaryDictionary == null) {
+                            // Otherwise, load the existing dictionary.
+                            loadBinaryDictionaryLocked();
+                            if (mBinaryDictionary != null && !(isValidDictionaryLocked()
+                                    // TODO: remove the check below
+                                    && matchesExpectedBinaryDictFormatVersionForThisType(
+                                            mBinaryDictionary.getFormatVersion()))) {
+                                // Binary dictionary or its format version is not valid. Regenerate
+                                // the dictionary file. createNewDictionaryLocked will remove the
+                                // existing files if appropriate.
+                                createNewDictionaryLocked();
+                            }
                         }
-                    } else if (mBinaryDictionary == null ||
-                            mPerInstanceDictionaryUpdateController.mLastUpdateTime
-                                    < mFilenameDictionaryUpdateController.mLastUpdateTime) {
-                        // Otherwise, if the local dictionary is older than the shared dictionary,
-                        // load the shared dictionary.
-                        loadBinaryDictionary();
+                        mNeedsToRecreate = false;
+                    } finally {
+                        mIsReloading.set(false);
                     }
-                    if (mBinaryDictionary != null && !mBinaryDictionary.isValidDictionary()) {
-                        // Binary dictionary is not valid. Regenerate the dictionary file.
-                        mFilenameDictionaryUpdateController.mLastUpdateTime = time;
-                        writeBinaryDictionary();
-                        loadBinaryDictionary();
-                    }
-                    mPerInstanceDictionaryUpdateController.mLastUpdateTime = time;
-                } finally {
-                    mFilenameDictionaryUpdateController.mIsRegenerating.set(false);
                 }
-            }
-        });
-    }
-
-    // TODO: cache the file's existence so that we avoid doing a disk access each time.
-    private boolean dictionaryFileExists() {
-        final File file = new File(mContext.getFilesDir(), mFilename);
-        return file.exists();
-    }
-
-    /**
-     * Load the dictionary to memory.
-     */
-    protected void asyncLoadDictionaryToMemory() {
-        getExecutor(mFilename).executePrioritized(new Runnable() {
-            @Override
-            public void run() {
-                if (!ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                    loadDictionaryAsync();
-                }
-            }
-        });
-    }
-
-    /**
-     * Generate binary dictionary using DictionaryWriter.
-     */
-    protected void asyncFlashAllBinaryDictionary() {
-        final Runnable newTask = new Runnable() {
-            @Override
-            public void run() {
-                writeBinaryDictionary();
-            }
-        };
-        final Runnable oldTask = mUnfinishedFlushingTask.getAndSet(newTask);
-        getExecutor(mFilename).replaceAndExecute(oldTask, newTask);
-    }
-
-    /**
-     * For tracking whether the dictionary is out of date and the dictionary is regenerating.
-     * Can be shared across multiple dictionary instances that access the same filename.
-     */
-    private static class DictionaryUpdateController {
-        public volatile long mLastUpdateTime = 0;
-        public volatile long mLastUpdateRequestTime = 0;
-        public volatile AtomicBoolean mIsRegenerating = new AtomicBoolean();
-
-        public boolean isOutOfDate() {
-            return (mLastUpdateRequestTime > mLastUpdateTime);
+            });
         }
     }
 
-    // TODO: Implement native binary methods once the dynamic dictionary implementation is done.
-    @UsedForTesting
-    public boolean isInDictionaryForTests(final String word) {
-        final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>();
-        getExecutor(mFilename).executePrioritized(new Runnable() {
+    /**
+     * Flush binary dictionary to dictionary file.
+     */
+    public void asyncFlushBinaryDictionary() {
+        asyncExecuteTaskWithWriteLock(new Runnable() {
             @Override
             public void run() {
-                if (mDictType == Dictionary.TYPE_USER_HISTORY) {
-                    if (ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-                        holder.set(mBinaryDictionary.isValidWord(word));
-                    } else {
-                        holder.set(((DynamicPersonalizationDictionaryWriter) mDictionaryWriter)
-                                .isInBigramListForTests(word));
-                    }
+                if (mBinaryDictionary == null) {
+                    return;
+                }
+                if (mBinaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
+                    mBinaryDictionary.flushWithGC();
+                } else {
+                    mBinaryDictionary.flush();
                 }
             }
         });
-        return holder.get(false, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS);
     }
 
     @UsedForTesting
-    public void shutdownExecutorForTests() {
-        getExecutor(mFilename).shutdown();
+    public void waitAllTasksForTests() {
+        final CountDownLatch countDownLatch = new CountDownLatch(1);
+        ExecutorUtils.getExecutor(mDictName).execute(new Runnable() {
+            @Override
+            public void run() {
+                countDownLatch.countDown();
+            }
+        });
+        try {
+            countDownLatch.await();
+        } catch (InterruptedException e) {
+            Log.e(TAG, "Interrupted while waiting for finishing dictionary operations.", e);
+        }
     }
 
     @UsedForTesting
-    public boolean isTerminatedForTests() {
-        return getExecutor(mFilename).isTerminated();
+    public void clearAndFlushDictionaryWithAdditionalAttributes(
+            final Map<String, String> attributeMap) {
+        mAdditionalAttributeMap = attributeMap;
+        clear();
+    }
+
+    public void dumpAllWordsForDebug() {
+        reloadDictionaryIfRequired();
+        asyncExecuteTaskWithLock(mLock.readLock(), new Runnable() {
+            @Override
+            public void run() {
+                Log.d(TAG, "Dump dictionary: " + mDictName);
+                try {
+                    final DictionaryHeader header = mBinaryDictionary.getHeader();
+                    Log.d(TAG, "Format version: " + mBinaryDictionary.getFormatVersion());
+                    Log.d(TAG, CombinedFormatUtils.formatAttributeMap(
+                            header.mDictionaryOptions.mAttributes));
+                } catch (final UnsupportedFormatException e) {
+                    Log.d(TAG, "Cannot fetch header information.", e);
+                }
+                int token = 0;
+                do {
+                    final BinaryDictionary.GetNextWordPropertyResult result =
+                            mBinaryDictionary.getNextWordProperty(token);
+                    final WordProperty wordProperty = result.mWordProperty;
+                    if (wordProperty == null) {
+                        Log.d(TAG, " dictionary is empty.");
+                        break;
+                    }
+                    Log.d(TAG, wordProperty.toString());
+                    token = result.mNextToken;
+                } while (token != 0);
+            }
+        });
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
deleted file mode 100644
index 95c9bca..0000000
--- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ /dev/null
@@ -1,894 +0,0 @@
-/*
- * Copyright (C) 2009 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;
-
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils.ForgettingCurveParams;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-
-/**
- * Class for an in-memory dictionary that can grow dynamically and can
- * be searched for suggestions and valid words.
- */
-// TODO: Remove after binary dictionary supports dynamic update.
-public class ExpandableDictionary extends Dictionary {
-    private static final String TAG = ExpandableDictionary.class.getSimpleName();
-    /**
-     * The weight to give to a word if it's length is the same as the number of typed characters.
-     */
-    private static final int FULL_WORD_SCORE_MULTIPLIER = 2;
-
-    private char[] mWordBuilder = new char[Constants.DICTIONARY_MAX_WORD_LENGTH];
-    private int mMaxDepth;
-    private int mInputLength;
-
-    private static final class Node {
-        char mCode;
-        int mFrequency;
-        boolean mTerminal;
-        Node mParent;
-        NodeArray mChildren;
-        ArrayList<char[]> mShortcutTargets;
-        boolean mShortcutOnly;
-        LinkedList<NextWord> mNGrams; // Supports ngram
-    }
-
-    private static final class NodeArray {
-        Node[] mData;
-        int mLength = 0;
-        private static final int INCREMENT = 2;
-
-        NodeArray() {
-            mData = new Node[INCREMENT];
-        }
-
-        void add(final Node n) {
-            if (mLength + 1 > mData.length) {
-                Node[] tempData = new Node[mLength + INCREMENT];
-                if (mLength > 0) {
-                    System.arraycopy(mData, 0, tempData, 0, mLength);
-                }
-                mData = tempData;
-            }
-            mData[mLength++] = n;
-        }
-    }
-
-    public interface NextWord {
-        public Node getWordNode();
-        public int getFrequency();
-        public ForgettingCurveParams getFcParams();
-        public int notifyTypedAgainAndGetFrequency();
-    }
-
-    private static final class NextStaticWord implements NextWord {
-        public final Node mWord;
-        private final int mFrequency;
-        public NextStaticWord(Node word, int frequency) {
-            mWord = word;
-            mFrequency = frequency;
-        }
-
-        @Override
-        public Node getWordNode() {
-            return mWord;
-        }
-
-        @Override
-        public int getFrequency() {
-            return mFrequency;
-        }
-
-        @Override
-        public ForgettingCurveParams getFcParams() {
-            return null;
-        }
-
-        @Override
-        public int notifyTypedAgainAndGetFrequency() {
-            return mFrequency;
-        }
-    }
-
-    private static final class NextHistoryWord implements NextWord {
-        public final Node mWord;
-        public final ForgettingCurveParams mFcp;
-
-        public NextHistoryWord(Node word, ForgettingCurveParams fcp) {
-            mWord = word;
-            mFcp = fcp;
-        }
-
-        @Override
-        public Node getWordNode() {
-            return mWord;
-        }
-
-        @Override
-        public int getFrequency() {
-            return mFcp.getFrequency();
-        }
-
-        @Override
-        public ForgettingCurveParams getFcParams() {
-            return mFcp;
-        }
-
-        @Override
-        public int notifyTypedAgainAndGetFrequency() {
-            return mFcp.notifyTypedAgainAndGetFrequency();
-        }
-    }
-
-    private NodeArray mRoots;
-
-    private int[][] mCodes;
-
-    public ExpandableDictionary(final String dictType) {
-        super(dictType);
-        clearDictionary();
-        mCodes = new int[Constants.DICTIONARY_MAX_WORD_LENGTH][];
-    }
-
-    public int getMaxWordLength() {
-        return Constants.DICTIONARY_MAX_WORD_LENGTH;
-    }
-
-    /**
-     * Add a word with an optional shortcut to the dictionary.
-     * @param word The word to add.
-     * @param shortcutTarget A shortcut target for this word, or null if none.
-     * @param frequency The frequency for this unigram.
-     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
-     *   if shortcutTarget is null.
-     */
-    public void addWord(final String word, final String shortcutTarget, final int frequency,
-            final int shortcutFreq) {
-        if (word.length() >= Constants.DICTIONARY_MAX_WORD_LENGTH) {
-            return;
-        }
-        addWordRec(mRoots, word, 0, shortcutTarget, frequency, shortcutFreq, null);
-    }
-
-    /**
-     * Add a word, recursively searching for its correct place in the trie tree.
-     * @param children The node to recursively search for addition. Initially, the root of the tree.
-     * @param word The word to add.
-     * @param depth The current depth in the tree.
-     * @param shortcutTarget A shortcut target for this word, or null if none.
-     * @param frequency The frequency for this unigram.
-     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
-     *   if shortcutTarget is null.
-     * @param parentNode The parent node, for up linking. Initially null, as the root has no parent.
-     */
-    private void addWordRec(final NodeArray children, final String word, final int depth,
-            final String shortcutTarget, final int frequency, final int shortcutFreq,
-            final Node parentNode) {
-        final int wordLength = word.length();
-        if (wordLength <= depth) return;
-        final char c = word.charAt(depth);
-        // Does children have the current character?
-        final int childrenLength = children.mLength;
-        Node childNode = null;
-        for (int i = 0; i < childrenLength; i++) {
-            final Node node = children.mData[i];
-            if (node.mCode == c) {
-                childNode = node;
-                break;
-            }
-        }
-        final boolean isShortcutOnly = (null != shortcutTarget);
-        if (childNode == null) {
-            childNode = new Node();
-            childNode.mCode = c;
-            childNode.mParent = parentNode;
-            childNode.mShortcutOnly = isShortcutOnly;
-            children.add(childNode);
-        }
-        if (wordLength == depth + 1) {
-            // Terminate this word
-            childNode.mTerminal = true;
-            if (isShortcutOnly) {
-                if (null == childNode.mShortcutTargets) {
-                    childNode.mShortcutTargets = CollectionUtils.newArrayList();
-                }
-                childNode.mShortcutTargets.add(shortcutTarget.toCharArray());
-            } else {
-                childNode.mShortcutOnly = false;
-            }
-            childNode.mFrequency = Math.max(frequency, childNode.mFrequency);
-            if (childNode.mFrequency > 255) childNode.mFrequency = 255;
-            return;
-        }
-        if (childNode.mChildren == null) {
-            childNode.mChildren = new NodeArray();
-        }
-        addWordRec(childNode.mChildren, word, depth + 1, shortcutTarget, frequency, shortcutFreq,
-                childNode);
-    }
-
-    @Override
-    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        if (composer.size() > 1) {
-            if (composer.size() >= Constants.DICTIONARY_MAX_WORD_LENGTH) {
-                return null;
-            }
-            final ArrayList<SuggestedWordInfo> suggestions =
-                    getWordsInner(composer, prevWord, proximityInfo);
-            return suggestions;
-        } else {
-            if (TextUtils.isEmpty(prevWord)) return null;
-            final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList();
-            runBigramReverseLookUp(prevWord, suggestions);
-            return suggestions;
-        }
-    }
-
-    private ArrayList<SuggestedWordInfo> getWordsInner(final WordComposer codes,
-            final String prevWordForBigrams, final ProximityInfo proximityInfo) {
-        final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList();
-        mInputLength = codes.size();
-        if (mCodes.length < mInputLength) mCodes = new int[mInputLength][];
-        final InputPointers ips = codes.getInputPointers();
-        final int[] xCoordinates = ips.getXCoordinates();
-        final int[] yCoordinates = ips.getYCoordinates();
-        // Cache the codes so that we don't have to lookup an array list
-        for (int i = 0; i < mInputLength; i++) {
-            // TODO: Calculate proximity info here.
-            if (mCodes[i] == null || mCodes[i].length < 1) {
-                mCodes[i] = new int[ProximityInfo.MAX_PROXIMITY_CHARS_SIZE];
-            }
-            final int x = xCoordinates != null && i < xCoordinates.length ?
-                    xCoordinates[i] : Constants.NOT_A_COORDINATE;
-            final int y = xCoordinates != null && i < yCoordinates.length ?
-                    yCoordinates[i] : Constants.NOT_A_COORDINATE;
-            proximityInfo.fillArrayWithNearestKeyCodes(x, y, codes.getCodeAt(i), mCodes[i]);
-        }
-        mMaxDepth = mInputLength * 3;
-        getWordsRec(mRoots, codes, mWordBuilder, 0, false, 1, 0, -1, suggestions);
-        for (int i = 0; i < mInputLength; i++) {
-            getWordsRec(mRoots, codes, mWordBuilder, 0, false, 1, 0, i, suggestions);
-        }
-        return suggestions;
-    }
-
-    @Override
-    public synchronized boolean isValidWord(final String word) {
-        final Node node = searchNode(mRoots, word, 0, word.length());
-        // If node is null, we didn't find the word, so it's not valid.
-        // If node.mShortcutOnly is true, then it exists as a shortcut but not as a word,
-        // so that means it's not a valid word.
-        // If node.mShortcutOnly is false, then it exists as a word (it may also exist as
-        // a shortcut, but this does not matter), so it's a valid word.
-        return (node == null) ? false : !node.mShortcutOnly;
-    }
-
-    public boolean removeBigram(final String word0, final String word1) {
-        // Refer to addOrSetBigram() about word1.toLowerCase()
-        final Node firstWord = searchWord(mRoots, word0.toLowerCase(), 0, null);
-        final Node secondWord = searchWord(mRoots, word1, 0, null);
-        LinkedList<NextWord> bigrams = firstWord.mNGrams;
-        NextWord bigramNode = null;
-        if (bigrams == null || bigrams.size() == 0) {
-            return false;
-        } else {
-            for (NextWord nw : bigrams) {
-                if (nw.getWordNode() == secondWord) {
-                    bigramNode = nw;
-                    break;
-                }
-            }
-        }
-        if (bigramNode == null) {
-            return false;
-        }
-        return bigrams.remove(bigramNode);
-    }
-
-    /**
-     * Returns the word's frequency or -1 if not found
-     */
-    @UsedForTesting
-    public int getWordFrequency(final String word) {
-        // Case-sensitive search
-        final Node node = searchNode(mRoots, word, 0, word.length());
-        return (node == null) ? -1 : node.mFrequency;
-    }
-
-    public NextWord getBigramWord(final String word0, final String word1) {
-        // Refer to addOrSetBigram() about word0.toLowerCase()
-        final Node firstWord = searchWord(mRoots, word0.toLowerCase(), 0, null);
-        final Node secondWord = searchWord(mRoots, word1, 0, null);
-        LinkedList<NextWord> bigrams = firstWord.mNGrams;
-        if (bigrams == null || bigrams.size() == 0) {
-            return null;
-        } else {
-            for (NextWord nw : bigrams) {
-                if (nw.getWordNode() == secondWord) {
-                    return nw;
-                }
-            }
-        }
-        return null;
-    }
-
-    private static int computeSkippedWordFinalFreq(final int freq, final int snr,
-            final int inputLength) {
-        // The computation itself makes sense for >= 2, but the == 2 case returns 0
-        // anyway so we may as well test against 3 instead and return the constant
-        if (inputLength >= 3) {
-            return (freq * snr * (inputLength - 2)) / (inputLength - 1);
-        } else {
-            return 0;
-        }
-    }
-
-    /**
-     * Helper method to add a word and its shortcuts.
-     *
-     * @param node the terminal node
-     * @param word the word to insert, as an array of code points
-     * @param depth the depth of the node in the tree
-     * @param finalFreq the frequency for this word
-     * @param suggestions the suggestion collection to add the suggestions to
-     * @return whether there is still space for more words.
-     */
-    private boolean addWordAndShortcutsFromNode(final Node node, final char[] word, final int depth,
-            final int finalFreq, final ArrayList<SuggestedWordInfo> suggestions) {
-        if (finalFreq > 0 && !node.mShortcutOnly) {
-            // Use KIND_CORRECTION always. This dictionary does not really have a notion of
-            // COMPLETION against CORRECTION; we could artificially add one by looking at
-            // the respective size of the typed word and the suggestion if it matters sometime
-            // in the future.
-            suggestions.add(new SuggestedWordInfo(new String(word, 0, depth + 1), finalFreq,
-                    SuggestedWordInfo.KIND_CORRECTION, this /* sourceDict */,
-                    SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                    SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
-            if (suggestions.size() >= Suggest.MAX_SUGGESTIONS) return false;
-        }
-        if (null != node.mShortcutTargets) {
-            final int length = node.mShortcutTargets.size();
-            for (int shortcutIndex = 0; shortcutIndex < length; ++shortcutIndex) {
-                final char[] shortcut = node.mShortcutTargets.get(shortcutIndex);
-                suggestions.add(new SuggestedWordInfo(new String(shortcut, 0, shortcut.length),
-                        finalFreq, SuggestedWordInfo.KIND_SHORTCUT, this /* sourceDict */,
-                        SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                        SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
-                if (suggestions.size() > Suggest.MAX_SUGGESTIONS) return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Recursively traverse the tree for words that match the input. Input consists of
-     * a list of arrays. Each item in the list is one input character position. An input
-     * character is actually an array of multiple possible candidates. This function is not
-     * optimized for speed, assuming that the user dictionary will only be a few hundred words in
-     * size.
-     * @param roots node whose children have to be search for matches
-     * @param codes the input character codes
-     * @param word the word being composed as a possible match
-     * @param depth the depth of traversal - the length of the word being composed thus far
-     * @param completion whether the traversal is now in completion mode - meaning that we've
-     * exhausted the input and we're looking for all possible suffixes.
-     * @param snr current weight of the word being formed
-     * @param inputIndex position in the input characters. This can be off from the depth in
-     * case we skip over some punctuations such as apostrophe in the traversal. That is, if you type
-     * "wouldve", it could be matching "would've", so the depth will be one more than the
-     * inputIndex
-     * @param suggestions the list in which to add suggestions
-     */
-    // TODO: Share this routine with the native code for BinaryDictionary
-    private void getWordsRec(final NodeArray roots, final WordComposer codes, final char[] word,
-            final int depth, final boolean completion, final int snr, final int inputIndex,
-            final int skipPos, final ArrayList<SuggestedWordInfo> suggestions) {
-        final int count = roots.mLength;
-        final int codeSize = mInputLength;
-        // Optimization: Prune out words that are too long compared to how much was typed.
-        if (depth > mMaxDepth) {
-            return;
-        }
-        final int[] currentChars;
-        if (codeSize <= inputIndex) {
-            currentChars = null;
-        } else {
-            currentChars = mCodes[inputIndex];
-        }
-
-        for (int i = 0; i < count; i++) {
-            final Node node = roots.mData[i];
-            final char c = node.mCode;
-            final char lowerC = toLowerCase(c);
-            final boolean terminal = node.mTerminal;
-            final NodeArray children = node.mChildren;
-            final int freq = node.mFrequency;
-            if (completion || currentChars == null) {
-                word[depth] = c;
-                if (terminal) {
-                    final int finalFreq;
-                    if (skipPos < 0) {
-                        finalFreq = freq * snr;
-                    } else {
-                        finalFreq = computeSkippedWordFinalFreq(freq, snr, mInputLength);
-                    }
-                    if (!addWordAndShortcutsFromNode(node, word, depth, finalFreq, suggestions)) {
-                        // No space left in the queue, bail out
-                        return;
-                    }
-                }
-                if (children != null) {
-                    getWordsRec(children, codes, word, depth + 1, true, snr, inputIndex,
-                            skipPos, suggestions);
-                }
-            } else if ((c == Constants.CODE_SINGLE_QUOTE
-                    && currentChars[0] != Constants.CODE_SINGLE_QUOTE) || depth == skipPos) {
-                // Skip the ' and continue deeper
-                word[depth] = c;
-                if (children != null) {
-                    getWordsRec(children, codes, word, depth + 1, completion, snr, inputIndex,
-                            skipPos, suggestions);
-                }
-            } else {
-                // Don't use alternatives if we're looking for missing characters
-                final int alternativesSize = skipPos >= 0 ? 1 : currentChars.length;
-                for (int j = 0; j < alternativesSize; j++) {
-                    final int addedAttenuation = (j > 0 ? 1 : 2);
-                    final int currentChar = currentChars[j];
-                    if (currentChar == Constants.NOT_A_CODE) {
-                        break;
-                    }
-                    if (currentChar == lowerC || currentChar == c) {
-                        word[depth] = c;
-
-                        if (codeSize == inputIndex + 1) {
-                            if (terminal) {
-                                final int finalFreq;
-                                if (skipPos < 0) {
-                                    finalFreq = freq * snr * addedAttenuation
-                                            * FULL_WORD_SCORE_MULTIPLIER;
-                                } else {
-                                    finalFreq = computeSkippedWordFinalFreq(freq,
-                                            snr * addedAttenuation, mInputLength);
-                                }
-                                if (!addWordAndShortcutsFromNode(node, word, depth, finalFreq,
-                                        suggestions)) {
-                                    // No space left in the queue, bail out
-                                    return;
-                                }
-                            }
-                            if (children != null) {
-                                getWordsRec(children, codes, word, depth + 1,
-                                        true, snr * addedAttenuation, inputIndex + 1,
-                                        skipPos, suggestions);
-                            }
-                        } else if (children != null) {
-                            getWordsRec(children, codes, word, depth + 1,
-                                    false, snr * addedAttenuation, inputIndex + 1,
-                                    skipPos, suggestions);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    public int setBigramAndGetFrequency(final String word0, final String word1,
-            final int frequency) {
-        return setBigramAndGetFrequency(word0, word1, frequency, null /* unused */);
-    }
-
-    public int setBigramAndGetFrequency(final String word0, final String word1,
-            final ForgettingCurveParams fcp) {
-        return setBigramAndGetFrequency(word0, word1, 0 /* unused */, fcp);
-    }
-
-    /**
-     * Adds bigrams to the in-memory trie structure that is being used to retrieve any word
-     * @param word0 the first word of this bigram
-     * @param word1 the second word of this bigram
-     * @param frequency frequency for this bigram
-     * @param fcp an instance of ForgettingCurveParams to use for decay policy
-     * @return returns the final bigram frequency
-     */
-    private int setBigramAndGetFrequency(final String word0, final String word1,
-            final int frequency, final ForgettingCurveParams fcp) {
-        if (TextUtils.isEmpty(word0)) {
-            Log.e(TAG, "Invalid bigram previous word: " + word0);
-            return frequency;
-        }
-        // We don't want results to be different according to case of the looked up left hand side
-        // word. We do want however to return the correct case for the right hand side.
-        // So we want to squash the case of the left hand side, and preserve that of the right
-        // hand side word.
-        final String word0Lower = word0.toLowerCase();
-        if (TextUtils.isEmpty(word0Lower) || TextUtils.isEmpty(word1)) {
-            Log.e(TAG, "Invalid bigram pair: " + word0 + ", " + word0Lower + ", " + word1);
-            return frequency;
-        }
-        final Node firstWord = searchWord(mRoots, word0Lower, 0, null);
-        final Node secondWord = searchWord(mRoots, word1, 0, null);
-        LinkedList<NextWord> bigrams = firstWord.mNGrams;
-        if (bigrams == null || bigrams.size() == 0) {
-            firstWord.mNGrams = CollectionUtils.newLinkedList();
-            bigrams = firstWord.mNGrams;
-        } else {
-            for (NextWord nw : bigrams) {
-                if (nw.getWordNode() == secondWord) {
-                    return nw.notifyTypedAgainAndGetFrequency();
-                }
-            }
-        }
-        if (fcp != null) {
-            // history
-            firstWord.mNGrams.add(new NextHistoryWord(secondWord, fcp));
-        } else {
-            firstWord.mNGrams.add(new NextStaticWord(secondWord, frequency));
-        }
-        return frequency;
-    }
-
-    /**
-     * Searches for the word and add the word if it does not exist.
-     * @return Returns the terminal node of the word we are searching for.
-     */
-    private Node searchWord(final NodeArray children, final String word, final int depth,
-            final Node parentNode) {
-        final int wordLength = word.length();
-        final char c = word.charAt(depth);
-        // Does children have the current character?
-        final int childrenLength = children.mLength;
-        Node childNode = null;
-        for (int i = 0; i < childrenLength; i++) {
-            final Node node = children.mData[i];
-            if (node.mCode == c) {
-                childNode = node;
-                break;
-            }
-        }
-        if (childNode == null) {
-            childNode = new Node();
-            childNode.mCode = c;
-            childNode.mParent = parentNode;
-            children.add(childNode);
-        }
-        if (wordLength == depth + 1) {
-            // Terminate this word
-            childNode.mTerminal = true;
-            return childNode;
-        }
-        if (childNode.mChildren == null) {
-            childNode.mChildren = new NodeArray();
-        }
-        return searchWord(childNode.mChildren, word, depth + 1, childNode);
-    }
-
-    private void runBigramReverseLookUp(final String previousWord,
-            final ArrayList<SuggestedWordInfo> suggestions) {
-        // Search for the lowercase version of the word only, because that's where bigrams
-        // store their sons.
-        final Node prevWord = searchNode(mRoots, previousWord.toLowerCase(), 0,
-                previousWord.length());
-        if (prevWord != null && prevWord.mNGrams != null) {
-            reverseLookUp(prevWord.mNGrams, suggestions);
-        }
-    }
-
-    // Local to reverseLookUp, but do not allocate each time.
-    private final char[] mLookedUpString = new char[Constants.DICTIONARY_MAX_WORD_LENGTH];
-
-    /**
-     * reverseLookUp retrieves the full word given a list of terminal nodes and adds those words
-     * to the suggestions list passed as an argument.
-     * @param terminalNodes list of terminal nodes we want to add
-     * @param suggestions the suggestion collection to add the word to
-     */
-    private void reverseLookUp(final LinkedList<NextWord> terminalNodes,
-            final ArrayList<SuggestedWordInfo> suggestions) {
-        Node node;
-        int freq;
-        for (NextWord nextWord : terminalNodes) {
-            node = nextWord.getWordNode();
-            freq = nextWord.getFrequency();
-            int index = Constants.DICTIONARY_MAX_WORD_LENGTH;
-            do {
-                --index;
-                mLookedUpString[index] = node.mCode;
-                node = node.mParent;
-            } while (node != null && index > 0);
-
-            // If node is null, we have a word longer than MAX_WORD_LENGTH in the dictionary.
-            // It's a little unclear how this can happen, but just in case it does it's safer
-            // to ignore the word in this case.
-            if (freq >= 0 && node == null) {
-                suggestions.add(new SuggestedWordInfo(new String(mLookedUpString, index,
-                        Constants.DICTIONARY_MAX_WORD_LENGTH - index),
-                        freq, SuggestedWordInfo.KIND_CORRECTION, this /* sourceDict */,
-                        SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                        SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
-            }
-        }
-    }
-
-    /**
-     * Recursively search for the terminal node of the word.
-     *
-     * One iteration takes the full word to search for and the current index of the recursion.
-     *
-     * @param children the node of the trie to search under.
-     * @param word the word to search for. Only read [offset..length] so there may be trailing chars
-     * @param offset the index in {@code word} this recursion should operate on.
-     * @param length the length of the input word.
-     * @return Returns the terminal node of the word if the word exists
-     */
-    private Node searchNode(final NodeArray children, final CharSequence word, final int offset,
-            final int length) {
-        final int count = children.mLength;
-        final char currentChar = word.charAt(offset);
-        for (int j = 0; j < count; j++) {
-            final Node node = children.mData[j];
-            if (node.mCode == currentChar) {
-                if (offset == length - 1) {
-                    if (node.mTerminal) {
-                        return node;
-                    }
-                } else {
-                    if (node.mChildren != null) {
-                        Node returnNode = searchNode(node.mChildren, word, offset + 1, length);
-                        if (returnNode != null) return returnNode;
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    public void clearDictionary() {
-        mRoots = new NodeArray();
-    }
-
-    private static char toLowerCase(final char c) {
-        char baseChar = c;
-        if (c < BASE_CHARS.length) {
-            baseChar = BASE_CHARS[c];
-        }
-        if (baseChar >= 'A' && baseChar <= 'Z') {
-            return (char)(baseChar | 32);
-        } else if (baseChar > 127) {
-            return Character.toLowerCase(baseChar);
-        }
-        return baseChar;
-    }
-
-    /**
-     * Table mapping most combined Latin, Greek, and Cyrillic characters
-     * to their base characters.  If c is in range, BASE_CHARS[c] == c
-     * if c is not a combined character, or the base character if it
-     * is combined.
-     *
-     * cf. native/jni/src/utils/char_utils.cpp
-     */
-    private static final char BASE_CHARS[] = {
-        /* U+0000 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
-        /* U+0008 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
-        /* U+0010 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
-        /* U+0018 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
-        /* U+0020 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
-        /* U+0028 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
-        /* U+0030 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
-        /* U+0038 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
-        /* U+0040 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
-        /* U+0048 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
-        /* U+0050 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
-        /* U+0058 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
-        /* U+0060 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
-        /* U+0068 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
-        /* U+0070 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
-        /* U+0078 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
-        /* U+0080 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
-        /* U+0088 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
-        /* U+0090 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
-        /* U+0098 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
-        /* U+00A0 */ 0x0020, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
-        /* U+00A8 */ 0x0020, 0x00A9, 0x0061, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0020,
-        /* U+00B0 */ 0x00B0, 0x00B1, 0x0032, 0x0033, 0x0020, 0x03BC, 0x00B6, 0x00B7,
-        /* U+00B8 */ 0x0020, 0x0031, 0x006F, 0x00BB, 0x0031, 0x0031, 0x0033, 0x00BF,
-        /* U+00C0 */ 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x00C6, 0x0043,
-        /* U+00C8 */ 0x0045, 0x0045, 0x0045, 0x0045, 0x0049, 0x0049, 0x0049, 0x0049,
-        /* U+00D0 */ 0x00D0, 0x004E, 0x004F, 0x004F, 0x004F, 0x004F, 0x004F, 0x00D7,
-        /* U+00D8 */ 0x004F, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x00DE, 0x0073,
-            // U+00D8: Manually changed from 00D8 to 004F
-              // TODO: Check if it's really acceptable to consider Ø a diacritical variant of O
-            // U+00DF: Manually changed from 00DF to 0073
-        /* U+00E0 */ 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x00E6, 0x0063,
-        /* U+00E8 */ 0x0065, 0x0065, 0x0065, 0x0065, 0x0069, 0x0069, 0x0069, 0x0069,
-        /* U+00F0 */ 0x00F0, 0x006E, 0x006F, 0x006F, 0x006F, 0x006F, 0x006F, 0x00F7,
-        /* U+00F8 */ 0x006F, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x00FE, 0x0079,
-            // U+00F8: Manually changed from 00F8 to 006F
-              // TODO: Check if it's really acceptable to consider ø a diacritical variant of o
-        /* U+0100 */ 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063,
-        /* U+0108 */ 0x0043, 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064,
-        /* U+0110 */ 0x0110, 0x0111, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065,
-        /* U+0118 */ 0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
-        /* U+0120 */ 0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0126, 0x0127,
-        /* U+0128 */ 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
-        /* U+0130 */ 0x0049, 0x0131, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B,
-        /* U+0138 */ 0x0138, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C,
-        /* U+0140 */ 0x006C, 0x004C, 0x006C, 0x004E, 0x006E, 0x004E, 0x006E, 0x004E,
-            // U+0141: Manually changed from 0141 to 004C
-            // U+0142: Manually changed from 0142 to 006C
-        /* U+0148 */ 0x006E, 0x02BC, 0x014A, 0x014B, 0x004F, 0x006F, 0x004F, 0x006F,
-        /* U+0150 */ 0x004F, 0x006F, 0x0152, 0x0153, 0x0052, 0x0072, 0x0052, 0x0072,
-        /* U+0158 */ 0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073,
-        /* U+0160 */ 0x0053, 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0166, 0x0167,
-        /* U+0168 */ 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075,
-        /* U+0170 */ 0x0055, 0x0075, 0x0055, 0x0075, 0x0057, 0x0077, 0x0059, 0x0079,
-        /* U+0178 */ 0x0059, 0x005A, 0x007A, 0x005A, 0x007A, 0x005A, 0x007A, 0x0073,
-        /* U+0180 */ 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, 0x0185, 0x0186, 0x0187,
-        /* U+0188 */ 0x0188, 0x0189, 0x018A, 0x018B, 0x018C, 0x018D, 0x018E, 0x018F,
-        /* U+0190 */ 0x0190, 0x0191, 0x0192, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197,
-        /* U+0198 */ 0x0198, 0x0199, 0x019A, 0x019B, 0x019C, 0x019D, 0x019E, 0x019F,
-        /* U+01A0 */ 0x004F, 0x006F, 0x01A2, 0x01A3, 0x01A4, 0x01A5, 0x01A6, 0x01A7,
-        /* U+01A8 */ 0x01A8, 0x01A9, 0x01AA, 0x01AB, 0x01AC, 0x01AD, 0x01AE, 0x0055,
-        /* U+01B0 */ 0x0075, 0x01B1, 0x01B2, 0x01B3, 0x01B4, 0x01B5, 0x01B6, 0x01B7,
-        /* U+01B8 */ 0x01B8, 0x01B9, 0x01BA, 0x01BB, 0x01BC, 0x01BD, 0x01BE, 0x01BF,
-        /* U+01C0 */ 0x01C0, 0x01C1, 0x01C2, 0x01C3, 0x0044, 0x0044, 0x0064, 0x004C,
-        /* U+01C8 */ 0x004C, 0x006C, 0x004E, 0x004E, 0x006E, 0x0041, 0x0061, 0x0049,
-        /* U+01D0 */ 0x0069, 0x004F, 0x006F, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055,
-            // U+01D5: Manually changed from 00DC to 0055
-            // U+01D6: Manually changed from 00FC to 0075
-            // U+01D7: Manually changed from 00DC to 0055
-        /* U+01D8 */ 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x01DD, 0x0041, 0x0061,
-            // U+01D8: Manually changed from 00FC to 0075
-            // U+01D9: Manually changed from 00DC to 0055
-            // U+01DA: Manually changed from 00FC to 0075
-            // U+01DB: Manually changed from 00DC to 0055
-            // U+01DC: Manually changed from 00FC to 0075
-            // U+01DE: Manually changed from 00C4 to 0041
-            // U+01DF: Manually changed from 00E4 to 0061
-        /* U+01E0 */ 0x0041, 0x0061, 0x00C6, 0x00E6, 0x01E4, 0x01E5, 0x0047, 0x0067,
-            // U+01E0: Manually changed from 0226 to 0041
-            // U+01E1: Manually changed from 0227 to 0061
-        /* U+01E8 */ 0x004B, 0x006B, 0x004F, 0x006F, 0x004F, 0x006F, 0x01B7, 0x0292,
-            // U+01EC: Manually changed from 01EA to 004F
-            // U+01ED: Manually changed from 01EB to 006F
-        /* U+01F0 */ 0x006A, 0x0044, 0x0044, 0x0064, 0x0047, 0x0067, 0x01F6, 0x01F7,
-        /* U+01F8 */ 0x004E, 0x006E, 0x0041, 0x0061, 0x00C6, 0x00E6, 0x004F, 0x006F,
-            // U+01FA: Manually changed from 00C5 to 0041
-            // U+01FB: Manually changed from 00E5 to 0061
-            // U+01FE: Manually changed from 00D8 to 004F
-              // TODO: Check if it's really acceptable to consider Ø a diacritical variant of O
-            // U+01FF: Manually changed from 00F8 to 006F
-              // TODO: Check if it's really acceptable to consider ø a diacritical variant of o
-        /* U+0200 */ 0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065,
-        /* U+0208 */ 0x0049, 0x0069, 0x0049, 0x0069, 0x004F, 0x006F, 0x004F, 0x006F,
-        /* U+0210 */ 0x0052, 0x0072, 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075,
-        /* U+0218 */ 0x0053, 0x0073, 0x0054, 0x0074, 0x021C, 0x021D, 0x0048, 0x0068,
-        /* U+0220 */ 0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0041, 0x0061,
-        /* U+0228 */ 0x0045, 0x0065, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F,
-            // U+022A: Manually changed from 00D6 to 004F
-            // U+022B: Manually changed from 00F6 to 006F
-            // U+022C: Manually changed from 00D5 to 004F
-            // U+022D: Manually changed from 00F5 to 006F
-        /* U+0230 */ 0x004F, 0x006F, 0x0059, 0x0079, 0x0234, 0x0235, 0x0236, 0x0237,
-            // U+0230: Manually changed from 022E to 004F
-            // U+0231: Manually changed from 022F to 006F
-        /* U+0238 */ 0x0238, 0x0239, 0x023A, 0x023B, 0x023C, 0x023D, 0x023E, 0x023F,
-        /* U+0240 */ 0x0240, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247,
-        /* U+0248 */ 0x0248, 0x0249, 0x024A, 0x024B, 0x024C, 0x024D, 0x024E, 0x024F,
-        /* U+0250 */ 0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257,
-        /* U+0258 */ 0x0258, 0x0259, 0x025A, 0x025B, 0x025C, 0x025D, 0x025E, 0x025F,
-        /* U+0260 */ 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267,
-        /* U+0268 */ 0x0268, 0x0269, 0x026A, 0x026B, 0x026C, 0x026D, 0x026E, 0x026F,
-        /* U+0270 */ 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
-        /* U+0278 */ 0x0278, 0x0279, 0x027A, 0x027B, 0x027C, 0x027D, 0x027E, 0x027F,
-        /* U+0280 */ 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287,
-        /* U+0288 */ 0x0288, 0x0289, 0x028A, 0x028B, 0x028C, 0x028D, 0x028E, 0x028F,
-        /* U+0290 */ 0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297,
-        /* U+0298 */ 0x0298, 0x0299, 0x029A, 0x029B, 0x029C, 0x029D, 0x029E, 0x029F,
-        /* U+02A0 */ 0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4, 0x02A5, 0x02A6, 0x02A7,
-        /* U+02A8 */ 0x02A8, 0x02A9, 0x02AA, 0x02AB, 0x02AC, 0x02AD, 0x02AE, 0x02AF,
-        /* U+02B0 */ 0x0068, 0x0266, 0x006A, 0x0072, 0x0279, 0x027B, 0x0281, 0x0077,
-        /* U+02B8 */ 0x0079, 0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD, 0x02BE, 0x02BF,
-        /* U+02C0 */ 0x02C0, 0x02C1, 0x02C2, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7,
-        /* U+02C8 */ 0x02C8, 0x02C9, 0x02CA, 0x02CB, 0x02CC, 0x02CD, 0x02CE, 0x02CF,
-        /* U+02D0 */ 0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6, 0x02D7,
-        /* U+02D8 */ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x02DE, 0x02DF,
-        /* U+02E0 */ 0x0263, 0x006C, 0x0073, 0x0078, 0x0295, 0x02E5, 0x02E6, 0x02E7,
-        /* U+02E8 */ 0x02E8, 0x02E9, 0x02EA, 0x02EB, 0x02EC, 0x02ED, 0x02EE, 0x02EF,
-        /* U+02F0 */ 0x02F0, 0x02F1, 0x02F2, 0x02F3, 0x02F4, 0x02F5, 0x02F6, 0x02F7,
-        /* U+02F8 */ 0x02F8, 0x02F9, 0x02FA, 0x02FB, 0x02FC, 0x02FD, 0x02FE, 0x02FF,
-        /* U+0300 */ 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307,
-        /* U+0308 */ 0x0308, 0x0309, 0x030A, 0x030B, 0x030C, 0x030D, 0x030E, 0x030F,
-        /* U+0310 */ 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
-        /* U+0318 */ 0x0318, 0x0319, 0x031A, 0x031B, 0x031C, 0x031D, 0x031E, 0x031F,
-        /* U+0320 */ 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327,
-        /* U+0328 */ 0x0328, 0x0329, 0x032A, 0x032B, 0x032C, 0x032D, 0x032E, 0x032F,
-        /* U+0330 */ 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337,
-        /* U+0338 */ 0x0338, 0x0339, 0x033A, 0x033B, 0x033C, 0x033D, 0x033E, 0x033F,
-        /* U+0340 */ 0x0300, 0x0301, 0x0342, 0x0313, 0x0308, 0x0345, 0x0346, 0x0347,
-        /* U+0348 */ 0x0348, 0x0349, 0x034A, 0x034B, 0x034C, 0x034D, 0x034E, 0x034F,
-        /* U+0350 */ 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357,
-        /* U+0358 */ 0x0358, 0x0359, 0x035A, 0x035B, 0x035C, 0x035D, 0x035E, 0x035F,
-        /* U+0360 */ 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
-        /* U+0368 */ 0x0368, 0x0369, 0x036A, 0x036B, 0x036C, 0x036D, 0x036E, 0x036F,
-        /* U+0370 */ 0x0370, 0x0371, 0x0372, 0x0373, 0x02B9, 0x0375, 0x0376, 0x0377,
-        /* U+0378 */ 0x0378, 0x0379, 0x0020, 0x037B, 0x037C, 0x037D, 0x003B, 0x037F,
-        /* U+0380 */ 0x0380, 0x0381, 0x0382, 0x0383, 0x0020, 0x00A8, 0x0391, 0x00B7,
-        /* U+0388 */ 0x0395, 0x0397, 0x0399, 0x038B, 0x039F, 0x038D, 0x03A5, 0x03A9,
-        /* U+0390 */ 0x03CA, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
-        /* U+0398 */ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
-        /* U+03A0 */ 0x03A0, 0x03A1, 0x03A2, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
-        /* U+03A8 */ 0x03A8, 0x03A9, 0x0399, 0x03A5, 0x03B1, 0x03B5, 0x03B7, 0x03B9,
-        /* U+03B0 */ 0x03CB, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
-        /* U+03B8 */ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
-        /* U+03C0 */ 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
-        /* U+03C8 */ 0x03C8, 0x03C9, 0x03B9, 0x03C5, 0x03BF, 0x03C5, 0x03C9, 0x03CF,
-        /* U+03D0 */ 0x03B2, 0x03B8, 0x03A5, 0x03D2, 0x03D2, 0x03C6, 0x03C0, 0x03D7,
-        /* U+03D8 */ 0x03D8, 0x03D9, 0x03DA, 0x03DB, 0x03DC, 0x03DD, 0x03DE, 0x03DF,
-        /* U+03E0 */ 0x03E0, 0x03E1, 0x03E2, 0x03E3, 0x03E4, 0x03E5, 0x03E6, 0x03E7,
-        /* U+03E8 */ 0x03E8, 0x03E9, 0x03EA, 0x03EB, 0x03EC, 0x03ED, 0x03EE, 0x03EF,
-        /* U+03F0 */ 0x03BA, 0x03C1, 0x03C2, 0x03F3, 0x0398, 0x03B5, 0x03F6, 0x03F7,
-        /* U+03F8 */ 0x03F8, 0x03A3, 0x03FA, 0x03FB, 0x03FC, 0x03FD, 0x03FE, 0x03FF,
-        /* U+0400 */ 0x0415, 0x0415, 0x0402, 0x0413, 0x0404, 0x0405, 0x0406, 0x0406,
-        /* U+0408 */ 0x0408, 0x0409, 0x040A, 0x040B, 0x041A, 0x0418, 0x0423, 0x040F,
-        /* U+0410 */ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
-        /* U+0418 */ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
-            // U+0419: Manually changed from 0418 to 0419
-        /* U+0420 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
-        /* U+0428 */ 0x0428, 0x0429, 0x042C, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
-            // U+042A: Manually changed from 042A to 042C
-        /* U+0430 */ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
-        /* U+0438 */ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
-            // U+0439: Manually changed from 0438 to 0439
-        /* U+0440 */ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
-        /* U+0448 */ 0x0448, 0x0449, 0x044C, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
-            // U+044A: Manually changed from 044A to 044C
-        /* U+0450 */ 0x0435, 0x0435, 0x0452, 0x0433, 0x0454, 0x0455, 0x0456, 0x0456,
-        /* U+0458 */ 0x0458, 0x0459, 0x045A, 0x045B, 0x043A, 0x0438, 0x0443, 0x045F,
-        /* U+0460 */ 0x0460, 0x0461, 0x0462, 0x0463, 0x0464, 0x0465, 0x0466, 0x0467,
-        /* U+0468 */ 0x0468, 0x0469, 0x046A, 0x046B, 0x046C, 0x046D, 0x046E, 0x046F,
-        /* U+0470 */ 0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475, 0x0474, 0x0475,
-        /* U+0478 */ 0x0478, 0x0479, 0x047A, 0x047B, 0x047C, 0x047D, 0x047E, 0x047F,
-        /* U+0480 */ 0x0480, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487,
-        /* U+0488 */ 0x0488, 0x0489, 0x048A, 0x048B, 0x048C, 0x048D, 0x048E, 0x048F,
-        /* U+0490 */ 0x0490, 0x0491, 0x0492, 0x0493, 0x0494, 0x0495, 0x0496, 0x0497,
-        /* U+0498 */ 0x0498, 0x0499, 0x049A, 0x049B, 0x049C, 0x049D, 0x049E, 0x049F,
-        /* U+04A0 */ 0x04A0, 0x04A1, 0x04A2, 0x04A3, 0x04A4, 0x04A5, 0x04A6, 0x04A7,
-        /* U+04A8 */ 0x04A8, 0x04A9, 0x04AA, 0x04AB, 0x04AC, 0x04AD, 0x04AE, 0x04AF,
-        /* U+04B0 */ 0x04B0, 0x04B1, 0x04B2, 0x04B3, 0x04B4, 0x04B5, 0x04B6, 0x04B7,
-        /* U+04B8 */ 0x04B8, 0x04B9, 0x04BA, 0x04BB, 0x04BC, 0x04BD, 0x04BE, 0x04BF,
-        /* U+04C0 */ 0x04C0, 0x0416, 0x0436, 0x04C3, 0x04C4, 0x04C5, 0x04C6, 0x04C7,
-        /* U+04C8 */ 0x04C8, 0x04C9, 0x04CA, 0x04CB, 0x04CC, 0x04CD, 0x04CE, 0x04CF,
-        /* U+04D0 */ 0x0410, 0x0430, 0x0410, 0x0430, 0x04D4, 0x04D5, 0x0415, 0x0435,
-        /* U+04D8 */ 0x04D8, 0x04D9, 0x04D8, 0x04D9, 0x0416, 0x0436, 0x0417, 0x0437,
-        /* U+04E0 */ 0x04E0, 0x04E1, 0x0418, 0x0438, 0x0418, 0x0438, 0x041E, 0x043E,
-        /* U+04E8 */ 0x04E8, 0x04E9, 0x04E8, 0x04E9, 0x042D, 0x044D, 0x0423, 0x0443,
-        /* U+04F0 */ 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, 0x04F6, 0x04F7,
-        /* U+04F8 */ 0x042B, 0x044B, 0x04FA, 0x04FB, 0x04FC, 0x04FD, 0x04FE, 0x04FF,
-    };
-}
diff --git a/java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java b/java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java
new file mode 100644
index 0000000..567087c
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/ImportantNoticeDialog.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+
+import com.android.inputmethod.latin.utils.DialogUtils;
+import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
+
+/**
+ * The dialog box that shows the important notice contents.
+ */
+public final class ImportantNoticeDialog extends AlertDialog implements OnClickListener {
+    public interface ImportantNoticeDialogListener {
+        public void onUserAcknowledgmentOfImportantNoticeDialog(final int nextVersion);
+        public void onClickSettingsOfImportantNoticeDialog(final int nextVersion);
+    }
+
+    private final ImportantNoticeDialogListener mListener;
+    private final int mNextImportantNoticeVersion;
+
+    public ImportantNoticeDialog(
+            final Context context, final ImportantNoticeDialogListener listener) {
+        super(DialogUtils.getPlatformDialogThemeContext(context));
+        mListener = listener;
+        mNextImportantNoticeVersion = ImportantNoticeUtils.getNextImportantNoticeVersion(context);
+        setMessage(ImportantNoticeUtils.getNextImportantNoticeContents(context));
+        // Create buttons and set listeners.
+        setButton(BUTTON_POSITIVE, context.getString(android.R.string.ok), this);
+        if (shouldHaveSettingsButton()) {
+            setButton(BUTTON_NEGATIVE, context.getString(R.string.go_to_settings), this);
+        }
+        // This dialog is cancelable by pressing back key. See {@link #onBackPress()}.
+        setCancelable(true /* cancelable */);
+        setCanceledOnTouchOutside(false /* cancelable */);
+    }
+
+    private boolean shouldHaveSettingsButton() {
+        return mNextImportantNoticeVersion
+                == ImportantNoticeUtils.VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS;
+    }
+
+    private void userAcknowledged() {
+        ImportantNoticeUtils.updateLastImportantNoticeVersion(getContext());
+        mListener.onUserAcknowledgmentOfImportantNoticeDialog(mNextImportantNoticeVersion);
+    }
+
+    @Override
+    public void onClick(final DialogInterface dialog, final int which) {
+        if (shouldHaveSettingsButton() && which == BUTTON_NEGATIVE) {
+            mListener.onClickSettingsOfImportantNoticeDialog(mNextImportantNoticeVersion);
+        }
+        userAcknowledged();
+    }
+
+    @Override
+    public void onBackPressed() {
+        super.onBackPressed();
+        userAcknowledged();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java
index 8caf6f1..ebe4361 100644
--- a/java/src/com/android/inputmethod/latin/InputAttributes.java
+++ b/java/src/com/android/inputmethod/latin/InputAttributes.java
@@ -16,6 +16,9 @@
 
 package com.android.inputmethod.latin;
 
+import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE;
+import static com.android.inputmethod.latin.Constants.ImeOption.NO_MICROPHONE_COMPAT;
+
 import android.text.InputType;
 import android.util.Log;
 import android.view.inputmethod.EditorInfo;
@@ -23,22 +26,36 @@
 import com.android.inputmethod.latin.utils.InputTypeUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+
 /**
  * Class to hold attributes of the input field.
  */
 public final class InputAttributes {
     private final String TAG = InputAttributes.class.getSimpleName();
 
+    final public String mTargetApplicationPackageName;
     final public boolean mInputTypeNoAutoCorrect;
-    final public boolean mIsSettingsSuggestionStripOn;
+    final public boolean mIsPasswordField;
+    final public boolean mShouldShowSuggestions;
     final public boolean mApplicationSpecifiedCompletionOn;
     final public boolean mShouldInsertSpacesAutomatically;
+    final public boolean mShouldShowVoiceInputKey;
     final private int mInputType;
+    final private EditorInfo mEditorInfo;
+    final private String mPackageNameForPrivateImeOptions;
 
-    public InputAttributes(final EditorInfo editorInfo, final boolean isFullscreenMode) {
+    public InputAttributes(final EditorInfo editorInfo, final boolean isFullscreenMode,
+            final String packageNameForPrivateImeOptions) {
+        mEditorInfo = editorInfo;
+        mPackageNameForPrivateImeOptions = packageNameForPrivateImeOptions;
+        mTargetApplicationPackageName = null != editorInfo ? editorInfo.packageName : null;
         final int inputType = null != editorInfo ? editorInfo.inputType : 0;
         final int inputClass = inputType & InputType.TYPE_MASK_CLASS;
         mInputType = inputType;
+        mIsPasswordField = InputTypeUtils.isPasswordInputType(inputType)
+                || InputTypeUtils.isVisiblePasswordInputType(inputType);
         if (inputClass != InputType.TYPE_CLASS_TEXT) {
             // If we are not looking at a TYPE_CLASS_TEXT field, the following strange
             // cases may arise, so we do a couple sanity checks for them. If it's a
@@ -52,55 +69,54 @@
             } else if (inputClass == 0) {
                 // TODO: is this check still necessary?
                 Log.w(TAG, String.format("Unexpected input class: inputType=0x%08x"
-                        + " imeOptions=0x%08x",
-                        inputType, editorInfo.imeOptions));
+                        + " imeOptions=0x%08x", inputType, editorInfo.imeOptions));
             }
-            mIsSettingsSuggestionStripOn = false;
+            mShouldShowSuggestions = false;
             mInputTypeNoAutoCorrect = false;
             mApplicationSpecifiedCompletionOn = false;
             mShouldInsertSpacesAutomatically = false;
-        } else {
-            final int variation = inputType & InputType.TYPE_MASK_VARIATION;
-            final boolean flagNoSuggestions =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
-            final boolean flagMultiLine =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE);
-            final boolean flagAutoCorrect =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
-            final boolean flagAutoComplete =
-                    0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
-
-            // TODO: Have a helper method in InputTypeUtils
-            // Make sure that passwords are not displayed in {@link SuggestionStripView}.
-            if (InputTypeUtils.isPasswordInputType(inputType)
-                    || InputTypeUtils.isVisiblePasswordInputType(inputType)
-                    || InputTypeUtils.isEmailVariation(variation)
-                    || InputType.TYPE_TEXT_VARIATION_URI == variation
-                    || InputType.TYPE_TEXT_VARIATION_FILTER == variation
-                    || flagNoSuggestions
-                    || flagAutoComplete) {
-                mIsSettingsSuggestionStripOn = false;
-            } else {
-                mIsSettingsSuggestionStripOn = true;
-            }
-
-            mShouldInsertSpacesAutomatically = InputTypeUtils.isAutoSpaceFriendlyType(inputType);
-
-            // If it's a browser edit field and auto correct is not ON explicitly, then
-            // disable auto correction, but keep suggestions on.
-            // If NO_SUGGESTIONS is set, don't do prediction.
-            // If it's not multiline and the autoCorrect flag is not set, then don't correct
-            if ((variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT
-                    && !flagAutoCorrect)
-                    || flagNoSuggestions
-                    || (!flagAutoCorrect && !flagMultiLine)) {
-                mInputTypeNoAutoCorrect = true;
-            } else {
-                mInputTypeNoAutoCorrect = false;
-            }
-
-            mApplicationSpecifiedCompletionOn = flagAutoComplete && isFullscreenMode;
+            mShouldShowVoiceInputKey = false;
+            return;
         }
+        // inputClass == InputType.TYPE_CLASS_TEXT
+        final int variation = inputType & InputType.TYPE_MASK_VARIATION;
+        final boolean flagNoSuggestions =
+                0 != (inputType & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
+        final boolean flagMultiLine =
+                0 != (inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE);
+        final boolean flagAutoCorrect =
+                0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
+        final boolean flagAutoComplete =
+                0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
+
+        // TODO: Have a helper method in InputTypeUtils
+        // Make sure that passwords are not displayed in {@link SuggestionStripView}.
+        final boolean shouldSuppressSuggestions = mIsPasswordField
+                || InputTypeUtils.isEmailVariation(variation)
+                || InputType.TYPE_TEXT_VARIATION_URI == variation
+                || InputType.TYPE_TEXT_VARIATION_FILTER == variation
+                || flagNoSuggestions
+                || flagAutoComplete;
+        mShouldShowSuggestions = !shouldSuppressSuggestions;
+
+        mShouldInsertSpacesAutomatically = InputTypeUtils.isAutoSpaceFriendlyType(inputType);
+
+        final boolean noMicrophone = mIsPasswordField
+                || InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS == variation
+                || InputType.TYPE_TEXT_VARIATION_URI == variation
+                || hasNoMicrophoneKeyOption();
+        mShouldShowVoiceInputKey = !noMicrophone;
+
+        // If it's a browser edit field and auto correct is not ON explicitly, then
+        // disable auto correction, but keep suggestions on.
+        // If NO_SUGGESTIONS is set, don't do prediction.
+        // If it's not multiline and the autoCorrect flag is not set, then don't correct
+        mInputTypeNoAutoCorrect =
+                (variation == InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT && !flagAutoCorrect)
+                || flagNoSuggestions
+                || (!flagAutoCorrect && !flagMultiLine);
+
+        mApplicationSpecifiedCompletionOn = flagAutoComplete && isFullscreenMode;
     }
 
     public boolean isTypeNull() {
@@ -111,101 +127,155 @@
         return editorInfo.inputType == mInputType;
     }
 
+    private boolean hasNoMicrophoneKeyOption() {
+        @SuppressWarnings("deprecation")
+        final boolean deprecatedNoMicrophone = InputAttributes.inPrivateImeOptions(
+                null, NO_MICROPHONE_COMPAT, mEditorInfo);
+        final boolean noMicrophone = InputAttributes.inPrivateImeOptions(
+                mPackageNameForPrivateImeOptions, NO_MICROPHONE, mEditorInfo);
+        return noMicrophone || deprecatedNoMicrophone;
+    }
+
     @SuppressWarnings("unused")
     private void dumpFlags(final int inputType) {
-        Log.i(TAG, "Input class:");
         final int inputClass = inputType & InputType.TYPE_MASK_CLASS;
-        if (inputClass == InputType.TYPE_CLASS_TEXT)
-            Log.i(TAG, "  TYPE_CLASS_TEXT");
-        if (inputClass == InputType.TYPE_CLASS_PHONE)
-            Log.i(TAG, "  TYPE_CLASS_PHONE");
-        if (inputClass == InputType.TYPE_CLASS_NUMBER)
-            Log.i(TAG, "  TYPE_CLASS_NUMBER");
-        if (inputClass == InputType.TYPE_CLASS_DATETIME)
-            Log.i(TAG, "  TYPE_CLASS_DATETIME");
-        Log.i(TAG, "Variation:");
-        switch (InputType.TYPE_MASK_VARIATION & inputType) {
-            case InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_EMAIL_ADDRESS");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_EMAIL_SUBJECT");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_FILTER:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_FILTER");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_LONG_MESSAGE");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_NORMAL:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_NORMAL");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_PASSWORD:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_PASSWORD");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_PERSON_NAME:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_PERSON_NAME");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_PHONETIC:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_PHONETIC");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_POSTAL_ADDRESS");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_SHORT_MESSAGE");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_URI:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_URI");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_VISIBLE_PASSWORD");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_WEB_EDIT_TEXT");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS");
-                break;
-            case InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD:
-                Log.i(TAG, "  TYPE_TEXT_VARIATION_WEB_PASSWORD");
-                break;
-            default:
-                Log.i(TAG, "  Unknown variation");
-                break;
+        final String inputClassString = toInputClassString(inputClass);
+        final String variationString = toVariationString(
+                inputClass, inputType & InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
+        final String flagsString = toFlagsString(inputType & InputType.TYPE_MASK_FLAGS);
+        Log.i(TAG, "Input class: " + inputClassString);
+        Log.i(TAG, "Variation: " + variationString);
+        Log.i(TAG, "Flags: " + flagsString);
+    }
+
+    private static String toInputClassString(final int inputClass) {
+        switch (inputClass) {
+        case InputType.TYPE_CLASS_TEXT:
+            return "TYPE_CLASS_TEXT";
+        case InputType.TYPE_CLASS_PHONE:
+            return "TYPE_CLASS_PHONE";
+        case InputType.TYPE_CLASS_NUMBER:
+            return "TYPE_CLASS_NUMBER";
+        case InputType.TYPE_CLASS_DATETIME:
+            return "TYPE_CLASS_DATETIME";
+        default:
+            return String.format("unknownInputClass<0x%08x>", inputClass);
         }
-        Log.i(TAG, "Flags:");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_NO_SUGGESTIONS");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_MULTI_LINE))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_MULTI_LINE");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_IME_MULTI_LINE");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_CAP_WORDS");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_CAP_SENTENCES");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_CAP_CHARACTERS");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_AUTO_CORRECT");
-        if (0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE))
-            Log.i(TAG, "  TYPE_TEXT_FLAG_AUTO_COMPLETE");
+    }
+
+    private static String toVariationString(final int inputClass, final int variation) {
+        switch (inputClass) {
+        case InputType.TYPE_CLASS_TEXT:
+            return toTextVariationString(variation);
+        case InputType.TYPE_CLASS_NUMBER:
+            return toNumberVariationString(variation);
+        case InputType.TYPE_CLASS_DATETIME:
+            return toDatetimeVariationString(variation);
+        default:
+            return "";
+        }
+    }
+
+    private static String toTextVariationString(final int variation) {
+        switch (variation) {
+        case InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS:
+            return " TYPE_TEXT_VARIATION_EMAIL_ADDRESS";
+        case InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT:
+            return "TYPE_TEXT_VARIATION_EMAIL_SUBJECT";
+        case InputType.TYPE_TEXT_VARIATION_FILTER:
+            return "TYPE_TEXT_VARIATION_FILTER";
+        case InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE:
+            return "TYPE_TEXT_VARIATION_LONG_MESSAGE";
+        case InputType.TYPE_TEXT_VARIATION_NORMAL:
+            return "TYPE_TEXT_VARIATION_NORMAL";
+        case InputType.TYPE_TEXT_VARIATION_PASSWORD:
+            return "TYPE_TEXT_VARIATION_PASSWORD";
+        case InputType.TYPE_TEXT_VARIATION_PERSON_NAME:
+            return "TYPE_TEXT_VARIATION_PERSON_NAME";
+        case InputType.TYPE_TEXT_VARIATION_PHONETIC:
+            return "TYPE_TEXT_VARIATION_PHONETIC";
+        case InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS:
+            return "TYPE_TEXT_VARIATION_POSTAL_ADDRESS";
+        case InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE:
+            return "TYPE_TEXT_VARIATION_SHORT_MESSAGE";
+        case InputType.TYPE_TEXT_VARIATION_URI:
+            return "TYPE_TEXT_VARIATION_URI";
+        case InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD:
+            return "TYPE_TEXT_VARIATION_VISIBLE_PASSWORD";
+        case InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT:
+            return "TYPE_TEXT_VARIATION_WEB_EDIT_TEXT";
+        case InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS:
+            return "TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS";
+        case InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD:
+            return "TYPE_TEXT_VARIATION_WEB_PASSWORD";
+        default:
+            return String.format("unknownVariation<0x%08x>", variation);
+        }
+    }
+
+    private static String toNumberVariationString(final int variation) {
+        switch (variation) {
+        case InputType.TYPE_NUMBER_VARIATION_NORMAL:
+            return "TYPE_NUMBER_VARIATION_NORMAL";
+        case InputType.TYPE_NUMBER_VARIATION_PASSWORD:
+            return "TYPE_NUMBER_VARIATION_PASSWORD";
+        default:
+            return String.format("unknownVariation<0x%08x>", variation);
+        }
+    }
+
+    private static String toDatetimeVariationString(final int variation) {
+        switch (variation) {
+        case InputType.TYPE_DATETIME_VARIATION_NORMAL:
+            return "TYPE_DATETIME_VARIATION_NORMAL";
+        case InputType.TYPE_DATETIME_VARIATION_DATE:
+            return "TYPE_DATETIME_VARIATION_DATE";
+        case InputType.TYPE_DATETIME_VARIATION_TIME:
+            return "TYPE_DATETIME_VARIATION_TIME";
+        default:
+            return String.format("unknownVariation<0x%08x>", variation);
+        }
+    }
+
+    private static String toFlagsString(final int flags) {
+        final ArrayList<String> flagsArray = new ArrayList<>();
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS))
+            flagsArray.add("TYPE_TEXT_FLAG_NO_SUGGESTIONS");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_MULTI_LINE))
+            flagsArray.add("TYPE_TEXT_FLAG_MULTI_LINE");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE))
+            flagsArray.add("TYPE_TEXT_FLAG_IME_MULTI_LINE");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_CAP_WORDS))
+            flagsArray.add("TYPE_TEXT_FLAG_CAP_WORDS");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_CAP_SENTENCES))
+            flagsArray.add("TYPE_TEXT_FLAG_CAP_SENTENCES");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS))
+            flagsArray.add("TYPE_TEXT_FLAG_CAP_CHARACTERS");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_AUTO_CORRECT))
+            flagsArray.add("TYPE_TEXT_FLAG_AUTO_CORRECT");
+        if (0 != (flags & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE))
+            flagsArray.add("TYPE_TEXT_FLAG_AUTO_COMPLETE");
+        return flagsArray.isEmpty() ? "" : Arrays.toString(flagsArray.toArray());
     }
 
     // Pretty print
     @Override
     public String toString() {
-        return "\n mInputTypeNoAutoCorrect = " + mInputTypeNoAutoCorrect
-                + "\n mIsSettingsSuggestionStripOn = " + mIsSettingsSuggestionStripOn
-                + "\n mApplicationSpecifiedCompletionOn = " + mApplicationSpecifiedCompletionOn;
+        return String.format(
+                "%s: inputType=0x%08x%s%s%s%s%s targetApp=%s\n", getClass().getSimpleName(),
+                mInputType,
+                (mInputTypeNoAutoCorrect ? " noAutoCorrect" : ""),
+                (mIsPasswordField ? " password" : ""),
+                (mShouldShowSuggestions ? " shouldShowSuggestions" : ""),
+                (mApplicationSpecifiedCompletionOn ? " appSpecified" : ""),
+                (mShouldInsertSpacesAutomatically ? " insertSpaces" : ""),
+                mTargetApplicationPackageName);
     }
 
-    public static boolean inPrivateImeOptions(String packageName, String key,
-            EditorInfo editorInfo) {
+    public static boolean inPrivateImeOptions(final String packageName, final String key,
+            final EditorInfo editorInfo) {
         if (editorInfo == null) return false;
-        final String findingKey = (packageName != null) ? packageName + "." + key
-                : key;
+        final String findingKey = (packageName != null) ? packageName + "." + key : key;
         return StringUtils.containsInCommaSplittableText(findingKey, editorInfo.privateImeOptions);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/InputPointers.java b/java/src/com/android/inputmethod/latin/InputPointers.java
index 2e638aa..790e0d8 100644
--- a/java/src/com/android/inputmethod/latin/InputPointers.java
+++ b/java/src/com/android/inputmethod/latin/InputPointers.java
@@ -16,14 +16,18 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.utils.ResizableIntArray;
-
 import android.util.Log;
+import android.util.SparseIntArray;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.utils.ResizableIntArray;
 
 // TODO: This class is not thread-safe.
 public final class InputPointers {
     private static final String TAG = InputPointers.class.getSimpleName();
+    private static final boolean DEBUG_TIME = false;
+
     private final int mDefaultCapacity;
     private final ResizableIntArray mXCoordinates;
     private final ResizableIntArray mYCoordinates;
@@ -38,11 +42,29 @@
         mTimes = new ResizableIntArray(defaultCapacity);
     }
 
-    public void addPointer(int index, int x, int y, int pointerId, int time) {
-        mXCoordinates.add(index, x);
-        mYCoordinates.add(index, y);
-        mPointerIds.add(index, pointerId);
-        mTimes.add(index, time);
+    private void fillWithLastTimeUntil(final int index) {
+        final int fromIndex = mTimes.getLength();
+        // Fill the gap with the latest time.
+        // See {@link #getTime(int)} and {@link #isValidTimeStamps()}.
+        if (fromIndex <= 0) {
+            return;
+        }
+        final int fillLength = index - fromIndex + 1;
+        if (fillLength <= 0) {
+            return;
+        }
+        final int lastTime = mTimes.get(fromIndex - 1);
+        mTimes.fill(lastTime, fromIndex, fillLength);
+    }
+
+    public void addPointerAt(int index, int x, int y, int pointerId, int time) {
+        mXCoordinates.addAt(index, x);
+        mYCoordinates.addAt(index, y);
+        mPointerIds.addAt(index, pointerId);
+        if (DebugFlags.DEBUG_ENABLED || DEBUG_TIME) {
+            fillWithLastTimeUntil(index);
+        }
+        mTimes.addAt(index, time);
     }
 
     @UsedForTesting
@@ -68,23 +90,6 @@
     }
 
     /**
-     * Append the pointers in the specified {@link InputPointers} to the end of this.
-     * @param src the source {@link InputPointers} to read the data from.
-     * @param startPos the starting index of the pointers in {@code src}.
-     * @param length the number of pointers to be appended.
-     */
-    @UsedForTesting
-    void append(InputPointers src, int startPos, int length) {
-        if (length == 0) {
-            return;
-        }
-        mXCoordinates.append(src.mXCoordinates, startPos, length);
-        mYCoordinates.append(src.mYCoordinates, startPos, length);
-        mPointerIds.append(src.mPointerIds, startPos, length);
-        mTimes.append(src.mTimes, startPos, length);
-    }
-
-    /**
      * Append the times, x-coordinates and y-coordinates in the specified {@link ResizableIntArray}
      * to the end of this.
      * @param pointerId the pointer id of the source.
@@ -141,7 +146,7 @@
     }
 
     public int[] getTimes() {
-        if (LatinImeLogger.sDBG) {
+        if (DebugFlags.DEBUG_ENABLED || DEBUG_TIME) {
             if (!isValidTimeStamps()) {
                 throw new RuntimeException("Time stamps are invalid.");
             }
@@ -157,14 +162,21 @@
 
     private boolean isValidTimeStamps() {
         final int[] times = mTimes.getPrimitiveArray();
-        for (int i = 1; i < getPointerSize(); ++i) {
-            if (times[i] < times[i - 1]) {
+        final int[] pointerIds = mPointerIds.getPrimitiveArray();
+        final SparseIntArray lastTimeOfPointers = new SparseIntArray();
+        final int size = getPointerSize();
+        for (int i = 0; i < size; ++i) {
+            final int pointerId = pointerIds[i];
+            final int time = times[i];
+            final int lastTime = lastTimeOfPointers.get(pointerId, time);
+            if (time < lastTime) {
                 // dump
-                for (int j = 0; j < times.length; ++j) {
+                for (int j = 0; j < size; ++j) {
                     Log.d(TAG, "--- (" + j + ") " + times[j]);
                 }
                 return false;
             }
+            lastTimeOfPointers.put(pointerId, time);
         }
         return true;
     }
diff --git a/java/src/com/android/inputmethod/latin/InputView.java b/java/src/com/android/inputmethod/latin/InputView.java
index 81ccf83..e9e12f0 100644
--- a/java/src/com/android/inputmethod/latin/InputView.java
+++ b/java/src/com/android/inputmethod/latin/InputView.java
@@ -23,87 +23,227 @@
 import android.view.View;
 import android.widget.LinearLayout;
 
-public final class InputView extends LinearLayout {
-    private View mSuggestionStripView;
-    private View mKeyboardView;
-    private int mKeyboardTopPadding;
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+import com.android.inputmethod.keyboard.MainKeyboardView;
+import com.android.inputmethod.latin.suggestions.MoreSuggestionsView;
+import com.android.inputmethod.latin.suggestions.SuggestionStripView;
 
-    private boolean mIsForwardingEvent;
+public final class InputView extends LinearLayout {
     private final Rect mInputViewRect = new Rect();
-    private final Rect mEventForwardingRect = new Rect();
-    private final Rect mEventReceivingRect = new Rect();
+    private MainKeyboardView mMainKeyboardView;
+    private KeyboardTopPaddingForwarder mKeyboardTopPaddingForwarder;
+    private MoreSuggestionsViewCanceler mMoreSuggestionsViewCanceler;
+    private MotionEventForwarder<?, ?> mActiveForwarder;
 
     public InputView(final Context context, final AttributeSet attrs) {
         super(context, attrs, 0);
     }
 
-    public void setKeyboardGeometry(final int keyboardTopPadding) {
-        mKeyboardTopPadding = keyboardTopPadding;
-    }
-
     @Override
     protected void onFinishInflate() {
-        mSuggestionStripView = findViewById(R.id.suggestion_strip_view);
-        mKeyboardView = findViewById(R.id.keyboard_view);
+        final SuggestionStripView suggestionStripView =
+                (SuggestionStripView)findViewById(R.id.suggestion_strip_view);
+        mMainKeyboardView = (MainKeyboardView)findViewById(R.id.keyboard_view);
+        mKeyboardTopPaddingForwarder = new KeyboardTopPaddingForwarder(
+                mMainKeyboardView, suggestionStripView);
+        mMoreSuggestionsViewCanceler = new MoreSuggestionsViewCanceler(
+                mMainKeyboardView, suggestionStripView);
+    }
+
+    public void setKeyboardTopPadding(final int keyboardTopPadding) {
+        mKeyboardTopPaddingForwarder.setKeyboardTopPadding(keyboardTopPadding);
     }
 
     @Override
-    public boolean dispatchTouchEvent(final MotionEvent me) {
-        if (mSuggestionStripView.getVisibility() != VISIBLE
-                || mKeyboardView.getVisibility() != VISIBLE) {
-            return super.dispatchTouchEvent(me);
+    protected boolean dispatchHoverEvent(final MotionEvent event) {
+        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()
+                && mMainKeyboardView.isShowingMoreKeysPanel()) {
+            // With accessibility mode on, discard hover events while a more keys keyboard is shown.
+            // The {@link MoreKeysKeyboard} receives hover events directly from the platform.
+            return true;
         }
+        return super.dispatchHoverEvent(event);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(final MotionEvent me) {
+        final Rect rect = mInputViewRect;
+        getGlobalVisibleRect(rect);
+        final int index = me.getActionIndex();
+        final int x = (int)me.getX(index) + rect.left;
+        final int y = (int)me.getY(index) + rect.top;
 
         // The touch events that hit the top padding of keyboard should be forwarded to
         // {@link SuggestionStripView}.
+        if (mKeyboardTopPaddingForwarder.onInterceptTouchEvent(x, y, me)) {
+            mActiveForwarder = mKeyboardTopPaddingForwarder;
+            return true;
+        }
+
+        // To cancel {@link MoreSuggestionsView}, we should intercept a touch event to
+        // {@link MainKeyboardView} and dismiss the {@link MoreSuggestionsView}.
+        if (mMoreSuggestionsViewCanceler.onInterceptTouchEvent(x, y, me)) {
+            mActiveForwarder = mMoreSuggestionsViewCanceler;
+            return true;
+        }
+
+        mActiveForwarder = null;
+        return false;
+    }
+
+    @Override
+    public boolean onTouchEvent(final MotionEvent me) {
+        if (mActiveForwarder == null) {
+            return super.onTouchEvent(me);
+        }
+
         final Rect rect = mInputViewRect;
-        this.getGlobalVisibleRect(rect);
-        final int x = (int)me.getX() + rect.left;
-        final int y = (int)me.getY() + rect.top;
+        getGlobalVisibleRect(rect);
+        final int index = me.getActionIndex();
+        final int x = (int)me.getX(index) + rect.left;
+        final int y = (int)me.getY(index) + rect.top;
+        return mActiveForwarder.onTouchEvent(x, y, me);
+    }
 
-        final Rect forwardingRect = mEventForwardingRect;
-        mKeyboardView.getGlobalVisibleRect(forwardingRect);
-        if (!mIsForwardingEvent && !forwardingRect.contains(x, y)) {
-            return super.dispatchTouchEvent(me);
+    /**
+     * This class forwards series of {@link MotionEvent}s from <code>SenderView</code> to
+     * <code>ReceiverView</code>.
+     *
+     * @param <SenderView> a {@link View} that may send a {@link MotionEvent} to <ReceiverView>.
+     * @param <ReceiverView> a {@link View} that receives forwarded {@link MotionEvent} from
+     *     <SenderView>.
+     */
+    private static abstract class
+            MotionEventForwarder<SenderView extends View, ReceiverView extends View> {
+        protected final SenderView mSenderView;
+        protected final ReceiverView mReceiverView;
+
+        protected final Rect mEventSendingRect = new Rect();
+        protected final Rect mEventReceivingRect = new Rect();
+
+        public MotionEventForwarder(final SenderView senderView, final ReceiverView receiverView) {
+            mSenderView = senderView;
+            mReceiverView = receiverView;
         }
 
-        final int forwardingLimitY = forwardingRect.top + mKeyboardTopPadding;
-        boolean sendToTarget = false;
+        // Return true if a touch event of global coordinate x, y needs to be forwarded.
+        protected abstract boolean needsToForward(final int x, final int y);
 
-        switch (me.getAction()) {
-        case MotionEvent.ACTION_DOWN:
-            if (y < forwardingLimitY) {
-                // This down event and further move and up events should be forwarded to the target.
-                mIsForwardingEvent = true;
-                sendToTarget = true;
+        // Translate global x-coordinate to <code>ReceiverView</code> local coordinate.
+        protected int translateX(final int x) {
+            return x - mEventReceivingRect.left;
+        }
+
+        // Translate global y-coordinate to <code>ReceiverView</code> local coordinate.
+        protected int translateY(final int y) {
+            return y - mEventReceivingRect.top;
+        }
+
+        // Callback when a {@link MotionEvent} is forwarded.
+        protected void onForwardingEvent(final MotionEvent me) {}
+
+        // Returns true if a {@link MotionEvent} is needed to be forwarded to
+        // <code>ReceiverView</code>. Otherwise returns false.
+        public boolean onInterceptTouchEvent(final int x, final int y, final MotionEvent me) {
+            // Forwards a {link MotionEvent} only if both <code>SenderView</code> and
+            // <code>ReceiverView</code> are visible.
+            if (mSenderView.getVisibility() != View.VISIBLE ||
+                    mReceiverView.getVisibility() != View.VISIBLE) {
+                return false;
             }
-            break;
-        case MotionEvent.ACTION_MOVE:
-            sendToTarget = mIsForwardingEvent;
-            break;
-        case MotionEvent.ACTION_UP:
-        case MotionEvent.ACTION_CANCEL:
-            sendToTarget = mIsForwardingEvent;
-            mIsForwardingEvent = false;
-            break;
+            mSenderView.getGlobalVisibleRect(mEventSendingRect);
+            if (!mEventSendingRect.contains(x, y)) {
+                return false;
+            }
+
+            if (me.getActionMasked() == MotionEvent.ACTION_DOWN) {
+                // If the down event happens in the forwarding area, successive
+                // {@link MotionEvent}s should be forwarded to <code>ReceiverView</code>.
+                if (needsToForward(x, y)) {
+                    return true;
+                }
+            }
+
+            return false;
         }
 
-        if (!sendToTarget) {
-            return super.dispatchTouchEvent(me);
+        // Returns true if a {@link MotionEvent} is forwarded to <code>ReceiverView</code>.
+        // Otherwise returns false.
+        public boolean onTouchEvent(final int x, final int y, final MotionEvent me) {
+            mReceiverView.getGlobalVisibleRect(mEventReceivingRect);
+            // Translate global coordinates to <code>ReceiverView</code> local coordinates.
+            me.setLocation(translateX(x), translateY(y));
+            mReceiverView.dispatchTouchEvent(me);
+            onForwardingEvent(me);
+            return true;
+        }
+    }
+
+    /**
+     * This class forwards {@link MotionEvent}s happened in the top padding of
+     * {@link MainKeyboardView} to {@link SuggestionStripView}.
+     */
+    private static class KeyboardTopPaddingForwarder
+            extends MotionEventForwarder<MainKeyboardView, SuggestionStripView> {
+        private int mKeyboardTopPadding;
+
+        public KeyboardTopPaddingForwarder(final MainKeyboardView mainKeyboardView,
+                final SuggestionStripView suggestionStripView) {
+            super(mainKeyboardView, suggestionStripView);
         }
 
-        final Rect receivingRect = mEventReceivingRect;
-        mSuggestionStripView.getGlobalVisibleRect(receivingRect);
-        final int translatedX = x - receivingRect.left;
-        final int translatedY;
-        if (y < forwardingLimitY) {
-            // The forwarded event should have coordinates that are inside of the target.
-            translatedY = Math.min(y - receivingRect.top, receivingRect.height() - 1);
-        } else {
-            translatedY = y - receivingRect.top;
+        public void setKeyboardTopPadding(final int keyboardTopPadding) {
+            mKeyboardTopPadding = keyboardTopPadding;
         }
-        me.setLocation(translatedX, translatedY);
-        mSuggestionStripView.dispatchTouchEvent(me);
-        return true;
+
+        private boolean isInKeyboardTopPadding(final int y) {
+            return y < mEventSendingRect.top + mKeyboardTopPadding;
+        }
+
+        @Override
+        protected boolean needsToForward(final int x, final int y) {
+            // Forwarding an event only when {@link MainKeyboardView} is visible.
+            // Because the visibility of {@link MainKeyboardView} is controlled by its parent
+            // view in {@link KeyboardSwitcher#setMainKeyboardFrame()}, we should check the
+            // visibility of the parent view.
+            final View mainKeyboardFrame = (View)mSenderView.getParent();
+            return mainKeyboardFrame.getVisibility() == View.VISIBLE && isInKeyboardTopPadding(y);
+        }
+
+        @Override
+        protected int translateY(final int y) {
+            final int translatedY = super.translateY(y);
+            if (isInKeyboardTopPadding(y)) {
+                // The forwarded event should have coordinates that are inside of the target.
+                return Math.min(translatedY, mEventReceivingRect.height() - 1);
+            }
+            return translatedY;
+        }
+    }
+
+    /**
+     * This class forwards {@link MotionEvent}s happened in the {@link MainKeyboardView} to
+     * {@link SuggestionStripView} when the {@link MoreSuggestionsView} is showing.
+     * {@link SuggestionStripView} dismisses {@link MoreSuggestionsView} when it receives any event
+     * outside of it.
+     */
+    private static class MoreSuggestionsViewCanceler
+            extends MotionEventForwarder<MainKeyboardView, SuggestionStripView> {
+        public MoreSuggestionsViewCanceler(final MainKeyboardView mainKeyboardView,
+                final SuggestionStripView suggestionStripView) {
+            super(mainKeyboardView, suggestionStripView);
+        }
+
+        @Override
+        protected boolean needsToForward(final int x, final int y) {
+            return mReceiverView.isShowingMoreSuggestionPanel() && mEventSendingRect.contains(x, y);
+        }
+
+        @Override
+        protected void onForwardingEvent(final MotionEvent me) {
+            if (me.getActionMasked() == MotionEvent.ACTION_DOWN) {
+                mReceiverView.dismissMoreSuggestionsPanel();
+            }
+        }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/LastComposedWord.java b/java/src/com/android/inputmethod/latin/LastComposedWord.java
index 2e9280c..8cbf837 100644
--- a/java/src/com/android/inputmethod/latin/LastComposedWord.java
+++ b/java/src/com/android/inputmethod/latin/LastComposedWord.java
@@ -18,6 +18,10 @@
 
 import android.text.TextUtils;
 
+import com.android.inputmethod.event.Event;
+
+import java.util.ArrayList;
+
 /**
  * This class encapsulates data about a word previously composed, but that has been
  * committed already. This is used for resuming suggestion, and cancel auto-correction.
@@ -40,11 +44,11 @@
 
     public static final String NOT_A_SEPARATOR = "";
 
-    public final int[] mPrimaryKeyCodes;
+    public final ArrayList<Event> mEvents;
     public final String mTypedWord;
-    public final String mCommittedWord;
+    public final CharSequence mCommittedWord;
     public final String mSeparatorString;
-    public final String mPrevWord;
+    public final PrevWordsInfo mPrevWordsInfo;
     public final int mCapitalizedMode;
     public final InputPointers mInputPointers =
             new InputPointers(Constants.DICTIONARY_MAX_WORD_LENGTH);
@@ -52,23 +56,24 @@
     private boolean mActive;
 
     public static final LastComposedWord NOT_A_COMPOSED_WORD =
-            new LastComposedWord(null, null, "", "", NOT_A_SEPARATOR, null,
-            WordComposer.CAPS_MODE_OFF);
+            new LastComposedWord(new ArrayList<Event>(), null, "", "",
+            NOT_A_SEPARATOR, null, WordComposer.CAPS_MODE_OFF);
 
     // Warning: this is using the passed objects as is and fully expects them to be
     // immutable. Do not fiddle with their contents after you passed them to this constructor.
-    public LastComposedWord(final int[] primaryKeyCodes, final InputPointers inputPointers,
-            final String typedWord, final String committedWord, final String separatorString,
-            final String prevWord, final int capitalizedMode) {
-        mPrimaryKeyCodes = primaryKeyCodes;
+    public LastComposedWord(final ArrayList<Event> events,
+            final InputPointers inputPointers, final String typedWord,
+            final CharSequence committedWord, final String separatorString,
+            final PrevWordsInfo prevWordsInfo, final int capitalizedMode) {
         if (inputPointers != null) {
             mInputPointers.copy(inputPointers);
         }
         mTypedWord = typedWord;
+        mEvents = new ArrayList<>(events);
         mCommittedWord = committedWord;
         mSeparatorString = separatorString;
         mActive = true;
-        mPrevWord = prevWord;
+        mPrevWordsInfo = prevWordsInfo;
         mCapitalizedMode = capitalizedMode;
     }
 
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 77d0701..b641f3a 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -25,10 +25,9 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Rect;
@@ -36,39 +35,33 @@
 import android.media.AudioManager;
 import android.net.ConnectivityManager;
 import android.os.Debug;
-import android.os.Handler;
-import android.os.HandlerThread;
 import android.os.IBinder;
 import android.os.Message;
-import android.os.SystemClock;
 import android.preference.PreferenceManager;
 import android.text.InputType;
 import android.text.TextUtils;
-import android.text.style.SuggestionSpan;
 import android.util.Log;
-import android.util.Pair;
 import android.util.PrintWriterPrinter;
 import android.util.Printer;
-import android.view.KeyCharacterMap;
+import android.util.SparseArray;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.inputmethod.CompletionInfo;
-import android.view.inputmethod.CorrectionInfo;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.inputmethod.accessibility.AccessibilityUtils;
-import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
 import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.compat.AppWorkaroundsUtils;
+import com.android.inputmethod.compat.InputConnectionCompatUtils;
 import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
-import com.android.inputmethod.compat.SuggestionSpanUtils;
 import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
-import com.android.inputmethod.event.EventInterpreter;
-import com.android.inputmethod.keyboard.KeyDetector;
+import com.android.inputmethod.event.Event;
+import com.android.inputmethod.event.HardwareEventDecoder;
+import com.android.inputmethod.event.HardwareKeyboardEventDecoder;
+import com.android.inputmethod.event.InputTransaction;
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.keyboard.KeyboardActionListener;
 import com.android.inputmethod.keyboard.KeyboardId;
@@ -76,64 +69,55 @@
 import com.android.inputmethod.keyboard.MainKeyboardView;
 import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.define.ProductionFlag;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.define.ProductionFlags;
+import com.android.inputmethod.latin.inputlogic.InputLogic;
+import com.android.inputmethod.latin.personalization.ContextualDictionaryUpdater;
 import com.android.inputmethod.latin.personalization.DictionaryDecayBroadcastReciever;
-import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
-import com.android.inputmethod.latin.personalization.PersonalizationDictionarySessionRegister;
+import com.android.inputmethod.latin.personalization.PersonalizationDictionaryUpdater;
 import com.android.inputmethod.latin.personalization.PersonalizationHelper;
-import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
-import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
 import com.android.inputmethod.latin.settings.Settings;
 import com.android.inputmethod.latin.settings.SettingsActivity;
 import com.android.inputmethod.latin.settings.SettingsValues;
 import com.android.inputmethod.latin.suggestions.SuggestionStripView;
+import com.android.inputmethod.latin.suggestions.SuggestionStripViewAccessor;
 import com.android.inputmethod.latin.utils.ApplicationUtils;
-import com.android.inputmethod.latin.utils.AsyncResultHolder;
-import com.android.inputmethod.latin.utils.AutoCorrectionUtils;
 import com.android.inputmethod.latin.utils.CapsModeUtils;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.CompletionInfoUtils;
-import com.android.inputmethod.latin.utils.InputTypeUtils;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+import com.android.inputmethod.latin.utils.DialogUtils;
+import com.android.inputmethod.latin.utils.DistracterFilterCheckingExactMatches;
+import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
 import com.android.inputmethod.latin.utils.IntentUtils;
 import com.android.inputmethod.latin.utils.JniUtils;
-import com.android.inputmethod.latin.utils.LatinImeLoggerUtils;
-import com.android.inputmethod.latin.utils.RecapitalizeStatus;
-import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper;
-import com.android.inputmethod.latin.utils.StringUtils;
-import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask;
-import com.android.inputmethod.latin.utils.TextRange;
-import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils;
-import com.android.inputmethod.research.ResearchLogger;
+import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
+import com.android.inputmethod.latin.utils.StatsUtils;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Locale;
-import java.util.TreeSet;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Input method implementation for Qwerty'ish keyboard.
  */
 public class LatinIME extends InputMethodService implements KeyboardActionListener,
-        SuggestionStripView.Listener, TargetPackageInfoGetterTask.OnTargetPackageInfoKnownListener,
-        Suggest.SuggestInitializationListener {
+        SuggestionStripView.Listener, SuggestionStripViewAccessor,
+        DictionaryFacilitator.DictionaryInitializationListener,
+        ImportantNoticeDialog.ImportantNoticeDialogListener {
     private static final String TAG = LatinIME.class.getSimpleName();
     private static final boolean TRACE = false;
-    private static boolean DEBUG;
+    private static boolean DEBUG = false;
 
     private static final int EXTENDED_TOUCHABLE_REGION_HEIGHT = 100;
 
-    // How many continuous deletes at which to start deleting at a higher speed.
-    private static final int DELETE_ACCELERATE_AT = 20;
-    // Key events coming any faster than this are long-presses.
-    private static final int QUICK_PRESS = 200;
-
     private static final int PENDING_IMS_CALLBACK_DURATION = 800;
 
-    private static final int PERIOD_FOR_AUDIO_AND_HAPTIC_FEEDBACK_IN_KEY_REPEAT = 2;
+    private static final int DELAY_WAIT_FOR_DICTIONARY_LOAD = 2000; // 2s
 
-    // TODO: Set this value appropriately.
-    private static final int GET_SUGGESTED_WORDS_TIMEOUT = 200;
+    private static final int PERIOD_FOR_AUDIO_AND_HAPTIC_FEEDBACK_IN_KEY_REPEAT = 2;
 
     /**
      * The name of the scheme used by the Package Manager to warn of a new package installation,
@@ -141,168 +125,142 @@
      */
     private static final String SCHEME_PACKAGE = "package";
 
-    private static final int SPACE_STATE_NONE = 0;
-    // Double space: the state where the user pressed space twice quickly, which LatinIME
-    // resolved as period-space. Undoing this converts the period to a space.
-    private static final int SPACE_STATE_DOUBLE = 1;
-    // Swap punctuation: the state where a weak space and a punctuation from the suggestion strip
-    // have just been swapped. Undoing this swaps them back; the space is still considered weak.
-    private static final int SPACE_STATE_SWAP_PUNCTUATION = 2;
-    // Weak space: a space that should be swapped only by suggestion strip punctuation. Weak
-    // spaces happen when the user presses space, accepting the current suggestion (whether
-    // it's an auto-correction or not).
-    private static final int SPACE_STATE_WEAK = 3;
-    // Phantom space: a not-yet-inserted space that should get inserted on the next input,
-    // character provided it's not a separator. If it's a separator, the phantom space is dropped.
-    // Phantom spaces happen when a user chooses a word from the suggestion strip.
-    private static final int SPACE_STATE_PHANTOM = 4;
-
-    // Current space state of the input method. This can be any of the above constants.
-    private int mSpaceState;
-
     private final Settings mSettings;
+    private final DictionaryFacilitator mDictionaryFacilitator =
+            new DictionaryFacilitator(new DistracterFilterCheckingExactMatches(this /* context */));
+    // TODO: Move from LatinIME.
+    private final PersonalizationDictionaryUpdater mPersonalizationDictionaryUpdater =
+            new PersonalizationDictionaryUpdater(this /* context */, mDictionaryFacilitator);
+    private final ContextualDictionaryUpdater mContextualDictionaryUpdater =
+            new ContextualDictionaryUpdater(this /* context */, mDictionaryFacilitator,
+                    new Runnable() {
+                        @Override
+                        public void run() {
+                            mHandler.postUpdateSuggestionStrip();
+                        }
+                    });
+    private final InputLogic mInputLogic = new InputLogic(this /* LatinIME */,
+            this /* SuggestionStripViewAccessor */, mDictionaryFacilitator);
+    // We expect to have only one decoder in almost all cases, hence the default capacity of 1.
+    // If it turns out we need several, it will get grown seamlessly.
+    final SparseArray<HardwareEventDecoder> mHardwareEventDecoders = new SparseArray<>(1);
 
     private View mExtractArea;
     private View mKeyPreviewBackingView;
     private SuggestionStripView mSuggestionStripView;
-    // Never null
-    private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
-    private Suggest mSuggest;
-    private CompletionInfo[] mApplicationSpecifiedCompletions;
-    private AppWorkaroundsUtils mAppWorkAroundsUtils = new AppWorkaroundsUtils();
 
     private RichInputMethodManager mRichImm;
     @UsedForTesting final KeyboardSwitcher mKeyboardSwitcher;
     private final SubtypeSwitcher mSubtypeSwitcher;
     private final SubtypeState mSubtypeState = new SubtypeState();
-    // At start, create a default event interpreter that does nothing by passing it no decoder spec.
-    // The event interpreter should never be null.
-    private EventInterpreter mEventInterpreter = new EventInterpreter(this);
-
-    private boolean mIsMainDictionaryAvailable;
-    private UserBinaryDictionary mUserDictionary;
-    private UserHistoryDictionary mUserHistoryDictionary;
-    private PersonalizationPredictionDictionary mPersonalizationPredictionDictionary;
-    private PersonalizationDictionary mPersonalizationDictionary;
-    private boolean mIsUserDictionaryAvailable;
-
-    private LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
-    private final WordComposer mWordComposer = new WordComposer();
-    private final RichInputConnection mConnection = new RichInputConnection(this);
-    private final RecapitalizeStatus mRecapitalizeStatus = new RecapitalizeStatus();
-
-    // Keep track of the last selection range to decide if we need to show word alternatives
-    private static final int NOT_A_CURSOR_POSITION = -1;
-    private int mLastSelectionStart = NOT_A_CURSOR_POSITION;
-    private int mLastSelectionEnd = NOT_A_CURSOR_POSITION;
-
-    // Whether we are expecting an onUpdateSelection event to fire. If it does when we don't
-    // "expect" it, it means the user actually moved the cursor.
-    private boolean mExpectingUpdateSelection;
-    private int mDeleteCount;
-    private long mLastKeyTime;
-    private final TreeSet<Long> mCurrentlyPressedHardwareKeys = CollectionUtils.newTreeSet();
-    // Personalization debugging params
-    private boolean mUseOnlyPersonalizationDictionaryForDebug = false;
-    private boolean mBoostPersonalizationDictionaryForDebug = false;
-
-    // Member variables for remembering the current device orientation.
-    private int mDisplayOrientation;
 
     // Object for reacting to adding/removing a dictionary pack.
-    private BroadcastReceiver mDictionaryPackInstallReceiver =
+    private final BroadcastReceiver mDictionaryPackInstallReceiver =
             new DictionaryPackInstallBroadcastReceiver(this);
 
-    // Keeps track of most recently inserted text (multi-character key) for reverting
-    private String mEnteredText;
-
-    // TODO: This boolean is persistent state and causes large side effects at unexpected times.
-    // Find a way to remove it for readability.
-    private boolean mIsAutoCorrectionIndicatorOn;
+    private final BroadcastReceiver mDictionaryDumpBroadcastReceiver =
+            new DictionaryDumpBroadcastReceiver(this);
 
     private AlertDialog mOptionsDialog;
 
     private final boolean mIsHardwareAcceleratedDrawingEnabled;
 
     public final UIHandler mHandler = new UIHandler(this);
-    private InputUpdater mInputUpdater;
 
-    public static final class UIHandler extends StaticInnerHandlerWrapper<LatinIME> {
+    public static final class UIHandler extends LeakGuardHandlerWrapper<LatinIME> {
         private static final int MSG_UPDATE_SHIFT_STATE = 0;
         private static final int MSG_PENDING_IMS_CALLBACK = 1;
         private static final int MSG_UPDATE_SUGGESTION_STRIP = 2;
         private static final int MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP = 3;
         private static final int MSG_RESUME_SUGGESTIONS = 4;
         private static final int MSG_REOPEN_DICTIONARIES = 5;
-        private static final int MSG_ON_END_BATCH_INPUT = 6;
+        private static final int MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED = 6;
         private static final int MSG_RESET_CACHES = 7;
+        private static final int MSG_WAIT_FOR_DICTIONARY_LOAD = 8;
+        // Update this when adding new messages
+        private static final int MSG_LAST = MSG_WAIT_FOR_DICTIONARY_LOAD;
 
         private static final int ARG1_NOT_GESTURE_INPUT = 0;
         private static final int ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 1;
         private static final int ARG1_SHOW_GESTURE_FLOATING_PREVIEW_TEXT = 2;
-        private static final int ARG2_WITHOUT_TYPED_WORD = 0;
-        private static final int ARG2_WITH_TYPED_WORD = 1;
+        private static final int ARG2_UNUSED = 0;
+        private static final int ARG1_FALSE = 0;
+        private static final int ARG1_TRUE = 1;
 
         private int mDelayUpdateSuggestions;
         private int mDelayUpdateShiftState;
-        private long mDoubleSpacePeriodTimeout;
-        private long mDoubleSpacePeriodTimerStart;
 
-        public UIHandler(final LatinIME outerInstance) {
-            super(outerInstance);
+        public UIHandler(final LatinIME ownerInstance) {
+            super(ownerInstance);
         }
 
         public void onCreate() {
-            final Resources res = getOuterInstance().getResources();
-            mDelayUpdateSuggestions =
-                    res.getInteger(R.integer.config_delay_update_suggestions);
-            mDelayUpdateShiftState =
-                    res.getInteger(R.integer.config_delay_update_shift_state);
-            mDoubleSpacePeriodTimeout =
-                    res.getInteger(R.integer.config_double_space_period_timeout);
+            final LatinIME latinIme = getOwnerInstance();
+            if (latinIme == null) {
+                return;
+            }
+            final Resources res = latinIme.getResources();
+            mDelayUpdateSuggestions = res.getInteger(R.integer.config_delay_update_suggestions);
+            mDelayUpdateShiftState = res.getInteger(R.integer.config_delay_update_shift_state);
         }
 
         @Override
         public void handleMessage(final Message msg) {
-            final LatinIME latinIme = getOuterInstance();
+            final LatinIME latinIme = getOwnerInstance();
+            if (latinIme == null) {
+                return;
+            }
             final KeyboardSwitcher switcher = latinIme.mKeyboardSwitcher;
             switch (msg.what) {
             case MSG_UPDATE_SUGGESTION_STRIP:
-                latinIme.updateSuggestionStrip();
+                cancelUpdateSuggestionStrip();
+                latinIme.mInputLogic.performUpdateSuggestionStripSync(
+                        latinIme.mSettings.getCurrent());
                 break;
             case MSG_UPDATE_SHIFT_STATE:
-                switcher.updateShiftState();
+                switcher.requestUpdatingShiftState(latinIme.getCurrentAutoCapsState(),
+                        latinIme.getCurrentRecapitalizeState());
                 break;
             case MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP:
                 if (msg.arg1 == ARG1_NOT_GESTURE_INPUT) {
-                    if (msg.arg2 == ARG2_WITH_TYPED_WORD) {
-                        final Pair<SuggestedWords, String> p =
-                                (Pair<SuggestedWords, String>) msg.obj;
-                        latinIme.showSuggestionStripWithTypedWord(p.first, p.second);
-                    } else {
-                        latinIme.showSuggestionStrip((SuggestedWords) msg.obj);
-                    }
+                    final SuggestedWords suggestedWords = (SuggestedWords) msg.obj;
+                    latinIme.showSuggestionStrip(suggestedWords);
                 } else {
                     latinIme.showGesturePreviewAndSuggestionStrip((SuggestedWords) msg.obj,
                             msg.arg1 == ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT);
                 }
                 break;
             case MSG_RESUME_SUGGESTIONS:
-                latinIme.restartSuggestionsOnWordTouchedByCursor();
+                latinIme.mInputLogic.restartSuggestionsOnWordTouchedByCursor(
+                        latinIme.mSettings.getCurrent(),
+                        msg.arg1 == ARG1_TRUE /* shouldIncludeResumedWordInSuggestions */,
+                        latinIme.mKeyboardSwitcher.getCurrentKeyboardScriptId());
                 break;
             case MSG_REOPEN_DICTIONARIES:
-                latinIme.initSuggest();
-                // In theory we could call latinIme.updateSuggestionStrip() right away, but
-                // in the practice, the dictionary is not finished opening yet so we wouldn't
-                // get any suggestions. Wait one frame.
-                postUpdateSuggestionStrip();
+                latinIme.resetSuggest();
+                // We need to re-evaluate the currently composing word in case the script has
+                // changed.
+                postWaitForDictionaryLoad();
                 break;
-            case MSG_ON_END_BATCH_INPUT:
-                latinIme.onEndBatchInputAsyncInternal((SuggestedWords) msg.obj);
+            case MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED:
+                latinIme.mInputLogic.onUpdateTailBatchInputCompleted(
+                        latinIme.mSettings.getCurrent(),
+                        (SuggestedWords) msg.obj, latinIme.mKeyboardSwitcher);
                 break;
             case MSG_RESET_CACHES:
-                latinIme.retryResetCaches(msg.arg1 == 1 /* tryResumeSuggestions */,
-                        msg.arg2 /* remainingTries */);
+                final SettingsValues settingsValues = latinIme.mSettings.getCurrent();
+                if (latinIme.mInputLogic.retryResetCachesAndReturnSuccess(settingsValues,
+                        msg.arg1 == 1 /* tryResumeSuggestions */,
+                        msg.arg2 /* remainingTries */, this /* handler */)) {
+                    // If we were able to reset the caches, then we can reload the keyboard.
+                    // Otherwise, we'll do it when we can.
+                    latinIme.mKeyboardSwitcher.loadKeyboard(latinIme.getCurrentInputEditorInfo(),
+                            settingsValues, latinIme.getCurrentAutoCapsState(),
+                            latinIme.getCurrentRecapitalizeState());
+                }
+                break;
+            case MSG_WAIT_FOR_DICTIONARY_LOAD:
+                Log.i(TAG, "Timeout waiting for dictionary load");
                 break;
             }
         }
@@ -315,9 +273,27 @@
             sendMessage(obtainMessage(MSG_REOPEN_DICTIONARIES));
         }
 
-        public void postResumeSuggestions() {
+        public void postResumeSuggestions(final boolean shouldIncludeResumedWordInSuggestions,
+                final boolean shouldDelay) {
+            final LatinIME latinIme = getOwnerInstance();
+            if (latinIme == null) {
+                return;
+            }
+            if (!latinIme.mSettings.getCurrent()
+                    .isCurrentOrientationAllowingSuggestionsPerUserSettings()) {
+                return;
+            }
             removeMessages(MSG_RESUME_SUGGESTIONS);
-            sendMessageDelayed(obtainMessage(MSG_RESUME_SUGGESTIONS), mDelayUpdateSuggestions);
+            if (shouldDelay) {
+                sendMessageDelayed(obtainMessage(MSG_RESUME_SUGGESTIONS,
+                                shouldIncludeResumedWordInSuggestions ? ARG1_TRUE : ARG1_FALSE,
+                                0 /* ignored */),
+                        mDelayUpdateSuggestions);
+            } else {
+                sendMessage(obtainMessage(MSG_RESUME_SUGGESTIONS,
+                        shouldIncludeResumedWordInSuggestions ? ARG1_TRUE : ARG1_FALSE,
+                        0 /* ignored */));
+            }
         }
 
         public void postResetCaches(final boolean tryResumeSuggestions, final int remainingTries) {
@@ -326,6 +302,19 @@
                     remainingTries, null));
         }
 
+        public void postWaitForDictionaryLoad() {
+            sendMessageDelayed(obtainMessage(MSG_WAIT_FOR_DICTIONARY_LOAD),
+                    DELAY_WAIT_FOR_DICTIONARY_LOAD);
+        }
+
+        public void cancelWaitForDictionaryLoad() {
+            removeMessages(MSG_WAIT_FOR_DICTIONARY_LOAD);
+        }
+
+        public boolean hasPendingWaitForDictionaryLoad() {
+            return hasMessages(MSG_WAIT_FOR_DICTIONARY_LOAD);
+        }
+
         public void cancelUpdateSuggestionStrip() {
             removeMessages(MSG_UPDATE_SUGGESTION_STRIP);
         }
@@ -343,8 +332,11 @@
             sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE), mDelayUpdateShiftState);
         }
 
-        public void cancelUpdateShiftState() {
-            removeMessages(MSG_UPDATE_SHIFT_STATE);
+        @UsedForTesting
+        public void removeAllMessages() {
+            for (int i = 0; i <= MSG_LAST; ++i) {
+                removeMessages(i);
+            }
         }
 
         public void showGesturePreviewAndSuggestionStrip(final SuggestedWords suggestedWords,
@@ -354,39 +346,17 @@
                     ? ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT
                     : ARG1_SHOW_GESTURE_FLOATING_PREVIEW_TEXT;
             obtainMessage(MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP, arg1,
-                    ARG2_WITHOUT_TYPED_WORD, suggestedWords).sendToTarget();
+                    ARG2_UNUSED, suggestedWords).sendToTarget();
         }
 
         public void showSuggestionStrip(final SuggestedWords suggestedWords) {
             removeMessages(MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
             obtainMessage(MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP,
-                    ARG1_NOT_GESTURE_INPUT, ARG2_WITHOUT_TYPED_WORD, suggestedWords).sendToTarget();
+                    ARG1_NOT_GESTURE_INPUT, ARG2_UNUSED, suggestedWords).sendToTarget();
         }
 
-        // TODO: Remove this method.
-        public void showSuggestionStripWithTypedWord(final SuggestedWords suggestedWords,
-                final String typedWord) {
-            removeMessages(MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
-            obtainMessage(MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP, ARG1_NOT_GESTURE_INPUT,
-                    ARG2_WITH_TYPED_WORD,
-                    new Pair<SuggestedWords, String>(suggestedWords, typedWord)).sendToTarget();
-        }
-
-        public void onEndBatchInput(final SuggestedWords suggestedWords) {
-            obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget();
-        }
-
-        public void startDoubleSpacePeriodTimer() {
-            mDoubleSpacePeriodTimerStart = SystemClock.uptimeMillis();
-        }
-
-        public void cancelDoubleSpacePeriodTimer() {
-            mDoubleSpacePeriodTimerStart = 0;
-        }
-
-        public boolean isAcceptingDoubleSpacePeriod() {
-            return SystemClock.uptimeMillis() - mDoubleSpacePeriodTimerStart
-                    < mDoubleSpacePeriodTimeout;
+        public void showTailBatchInputResult(final SuggestedWords suggestedWords) {
+            obtainMessage(MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED, suggestedWords).sendToTarget();
         }
 
         // Working variables for the following methods.
@@ -401,7 +371,10 @@
             removeMessages(MSG_PENDING_IMS_CALLBACK);
             resetPendingImsCallback();
             mIsOrientationChanging = true;
-            final LatinIME latinIme = getOuterInstance();
+            final LatinIME latinIme = getOwnerInstance();
+            if (latinIme == null) {
+                return;
+            }
             if (latinIme.isInputViewShown()) {
                 latinIme.mKeyboardSwitcher.saveKeyboardState();
             }
@@ -415,12 +388,15 @@
 
         private void executePendingImsCallback(final LatinIME latinIme, final EditorInfo editorInfo,
                 boolean restarting) {
-            if (mHasPendingFinishInputView)
+            if (mHasPendingFinishInputView) {
                 latinIme.onFinishInputViewInternal(mHasPendingFinishInput);
-            if (mHasPendingFinishInput)
+            }
+            if (mHasPendingFinishInput) {
                 latinIme.onFinishInputInternal();
-            if (mHasPendingStartInput)
+            }
+            if (mHasPendingStartInput) {
                 latinIme.onStartInputInternal(editorInfo, restarting);
+            }
             resetPendingImsCallback();
         }
 
@@ -434,9 +410,20 @@
                     mIsOrientationChanging = false;
                     mPendingSuccessiveImsCallback = true;
                 }
-                final LatinIME latinIme = getOuterInstance();
-                executePendingImsCallback(latinIme, editorInfo, restarting);
-                latinIme.onStartInputInternal(editorInfo, restarting);
+                final LatinIME latinIme = getOwnerInstance();
+                if (latinIme != null) {
+                    executePendingImsCallback(latinIme, editorInfo, restarting);
+                    latinIme.onStartInputInternal(editorInfo, restarting);
+                    if (ProductionFlags.ENABLE_CURSOR_RECT_CALLBACK) {
+                        InputConnectionCompatUtils.requestCursorRect(
+                                latinIme.getCurrentInputConnection(), true /* enableMonitor */);
+                    }
+                    if (ProductionFlags.ENABLE_CURSOR_ANCHOR_INFO_CALLBACK) {
+                        InputConnectionCompatUtils.requestCursorAnchorInfo(
+                                latinIme.getCurrentInputConnection(), true /* enableMonitor */,
+                                true /* requestImmediateCallback */);
+                    }
+                }
             }
         }
 
@@ -453,10 +440,12 @@
                     sendMessageDelayed(obtainMessage(MSG_PENDING_IMS_CALLBACK),
                             PENDING_IMS_CALLBACK_DURATION);
                 }
-                final LatinIME latinIme = getOuterInstance();
-                executePendingImsCallback(latinIme, editorInfo, restarting);
-                latinIme.onStartInputViewInternal(editorInfo, restarting);
-                mAppliedEditorInfo = editorInfo;
+                final LatinIME latinIme = getOwnerInstance();
+                if (latinIme != null) {
+                    executePendingImsCallback(latinIme, editorInfo, restarting);
+                    latinIme.onStartInputViewInternal(editorInfo, restarting);
+                    mAppliedEditorInfo = editorInfo;
+                }
             }
         }
 
@@ -465,9 +454,11 @@
                 // Typically this is the first onFinishInputView after orientation changed.
                 mHasPendingFinishInputView = true;
             } else {
-                final LatinIME latinIme = getOuterInstance();
-                latinIme.onFinishInputViewInternal(finishingInput);
-                mAppliedEditorInfo = null;
+                final LatinIME latinIme = getOwnerInstance();
+                if (latinIme != null) {
+                    latinIme.onFinishInputViewInternal(finishingInput);
+                    mAppliedEditorInfo = null;
+                }
             }
         }
 
@@ -476,31 +467,33 @@
                 // Typically this is the first onFinishInput after orientation changed.
                 mHasPendingFinishInput = true;
             } else {
-                final LatinIME latinIme = getOuterInstance();
-                executePendingImsCallback(latinIme, null, false);
-                latinIme.onFinishInputInternal();
+                final LatinIME latinIme = getOwnerInstance();
+                if (latinIme != null) {
+                    executePendingImsCallback(latinIme, null, false);
+                    latinIme.onFinishInputInternal();
+                }
             }
         }
     }
 
     static final class SubtypeState {
         private InputMethodSubtype mLastActiveSubtype;
-        private boolean mCurrentSubtypeUsed;
+        private boolean mCurrentSubtypeHasBeenUsed;
 
-        public void currentSubtypeUsed() {
-            mCurrentSubtypeUsed = true;
+        public void setCurrentSubtypeHasBeenUsed() {
+            mCurrentSubtypeHasBeenUsed = true;
         }
 
         public void switchSubtype(final IBinder token, final RichInputMethodManager richImm) {
             final InputMethodSubtype currentSubtype = richImm.getInputMethodManager()
                     .getCurrentInputMethodSubtype();
             final InputMethodSubtype lastActiveSubtype = mLastActiveSubtype;
-            final boolean currentSubtypeUsed = mCurrentSubtypeUsed;
-            if (currentSubtypeUsed) {
+            final boolean currentSubtypeHasBeenUsed = mCurrentSubtypeHasBeenUsed;
+            if (currentSubtypeHasBeenUsed) {
                 mLastActiveSubtype = currentSubtype;
-                mCurrentSubtypeUsed = false;
+                mCurrentSubtypeHasBeenUsed = false;
             }
-            if (currentSubtypeUsed
+            if (currentSubtypeHasBeenUsed
                     && richImm.checkIfSubtypeBelongsToThisImeAndEnabled(lastActiveSubtype)
                     && !currentSubtype.equals(lastActiveSubtype)) {
                 richImm.setInputMethodAndSubtype(token, lastActiveSubtype);
@@ -529,35 +522,30 @@
     @Override
     public void onCreate() {
         Settings.init(this);
-        LatinImeLogger.init(this);
+        DebugFlags.init(PreferenceManager.getDefaultSharedPreferences(this));
         RichInputMethodManager.init(this);
         mRichImm = RichInputMethodManager.getInstance();
         SubtypeSwitcher.init(this);
         KeyboardSwitcher.init(this);
         AudioAndHapticFeedbackManager.init(this);
         AccessibilityUtils.init(this);
-        PersonalizationDictionarySessionRegister.init(this);
+        StatsUtils.init(this);
 
         super.onCreate();
 
         mHandler.onCreate();
-        DEBUG = LatinImeLogger.sDBG;
+        DEBUG = DebugFlags.DEBUG_ENABLED;
 
         // TODO: Resolve mutual dependencies of {@link #loadSettings()} and {@link #initSuggest()}.
         loadSettings();
-        initSuggest();
-
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.getInstance().init(this, mKeyboardSwitcher, mSuggest);
-        }
-        mDisplayOrientation = getResources().getConfiguration().orientation;
+        resetSuggest();
 
         // Register to receive ringer mode change and network state change.
         // Also receive installation and removal of a dictionary pack.
         final IntentFilter filter = new IntentFilter();
         filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
         filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
-        registerReceiver(mReceiver, filter);
+        registerReceiver(mConnectivityAndRingerModeChangeReceiver, filter);
 
         final IntentFilter packageFilter = new IntentFilter();
         packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
@@ -569,47 +557,74 @@
         newDictFilter.addAction(DictionaryPackConstants.NEW_DICTIONARY_INTENT_ACTION);
         registerReceiver(mDictionaryPackInstallReceiver, newDictFilter);
 
+        final IntentFilter dictDumpFilter = new IntentFilter();
+        dictDumpFilter.addAction(DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION);
+        registerReceiver(mDictionaryDumpBroadcastReceiver, dictDumpFilter);
+
         DictionaryDecayBroadcastReciever.setUpIntervalAlarmForDictionaryDecaying(this);
 
-        mInputUpdater = new InputUpdater(this);
+        StatsUtils.onCreate(mSettings.getCurrent());
     }
 
     // Has to be package-visible for unit tests
     @UsedForTesting
     void loadSettings() {
         final Locale locale = mSubtypeSwitcher.getCurrentSubtypeLocale();
-        final InputAttributes inputAttributes =
-                new InputAttributes(getCurrentInputEditorInfo(), isFullscreenMode());
-        mSettings.loadSettings(locale, inputAttributes);
-        AudioAndHapticFeedbackManager.getInstance().onSettingsChanged(mSettings.getCurrent());
-        // To load the keyboard we need to load all the settings once, but resetting the
-        // contacts dictionary should be deferred until after the new layout has been displayed
-        // to improve responsivity. In the language switching process, we post a reopenDictionaries
-        // message, then come here to read the settings for the new language before we change
-        // the layout; at this time, we need to skip resetting the contacts dictionary. It will
-        // be done later inside {@see #initSuggest()} when the reopenDictionaries message is
-        // processed.
+        final EditorInfo editorInfo = getCurrentInputEditorInfo();
+        final InputAttributes inputAttributes = new InputAttributes(
+                editorInfo, isFullscreenMode(), getPackageName());
+        mSettings.loadSettings(this, locale, inputAttributes);
+        final SettingsValues currentSettingsValues = mSettings.getCurrent();
+        AudioAndHapticFeedbackManager.getInstance().onSettingsChanged(currentSettingsValues);
+        // This method is called on startup and language switch, before the new layout has
+        // been displayed. Opening dictionaries never affects responsivity as dictionaries are
+        // asynchronously loaded.
         if (!mHandler.hasPendingReopenDictionaries()) {
-            // May need to reset the contacts dictionary depending on the user settings.
-            resetContactsDictionary(null == mSuggest ? null : mSuggest.getContactsDictionary());
+            resetSuggestForLocale(locale);
+        }
+        mDictionaryFacilitator.updateEnabledSubtypes(mRichImm.getMyEnabledInputMethodSubtypeList(
+                true /* allowsImplicitlySelectedSubtypes */));
+        refreshPersonalizationDictionarySession(currentSettingsValues);
+        StatsUtils.onLoadSettings(currentSettingsValues);
+    }
+
+    private void refreshPersonalizationDictionarySession(
+            final SettingsValues currentSettingsValues) {
+        mPersonalizationDictionaryUpdater.onLoadSettings(
+                currentSettingsValues.mUsePersonalizedDicts,
+                mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes());
+        mContextualDictionaryUpdater.onLoadSettings(currentSettingsValues.mUsePersonalizedDicts);
+        final boolean shouldKeepUserHistoryDictionaries;
+        if (currentSettingsValues.mUsePersonalizedDicts) {
+            shouldKeepUserHistoryDictionaries = true;
+        } else {
+            shouldKeepUserHistoryDictionaries = false;
+        }
+        if (!shouldKeepUserHistoryDictionaries) {
+            // Remove user history dictionaries.
+            PersonalizationHelper.removeAllUserHistoryDictionaries(this);
+            mDictionaryFacilitator.clearUserHistoryDictionary();
         }
     }
 
     // Note that this method is called from a non-UI thread.
     @Override
     public void onUpdateMainDictionaryAvailability(final boolean isMainDictionaryAvailable) {
-        mIsMainDictionaryAvailable = isMainDictionaryAvailable;
         final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
         if (mainKeyboardView != null) {
             mainKeyboardView.setMainDictionaryAvailability(isMainDictionaryAvailable);
         }
+        if (mHandler.hasPendingWaitForDictionaryLoad()) {
+            mHandler.cancelWaitForDictionaryLoad();
+            mHandler.postResumeSuggestions(true /* shouldIncludeResumedWordInSuggestions */,
+                    false /* shouldDelay */);
+        }
     }
 
-    private void initSuggest() {
+    private void resetSuggest() {
         final Locale switcherSubtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
         final String switcherLocaleStr = switcherSubtypeLocale.toString();
         final Locale subtypeLocale;
-        final String localeStr;
         if (TextUtils.isEmpty(switcherLocaleStr)) {
             // This happens in very rare corner cases - for example, immediately after a switch
             // to LatinIME has been requested, about a frame later another switch happens. In this
@@ -619,132 +634,70 @@
             // of knowing anyway.
             Log.e(TAG, "System is reporting no current subtype.");
             subtypeLocale = getResources().getConfiguration().locale;
-            localeStr = subtypeLocale.toString();
         } else {
             subtypeLocale = switcherSubtypeLocale;
-            localeStr = switcherLocaleStr;
         }
-
-        final Suggest newSuggest = new Suggest(this /* Context */, subtypeLocale,
-                this /* SuggestInitializationListener */);
-        final SettingsValues settingsValues = mSettings.getCurrent();
-        if (settingsValues.mCorrectionEnabled) {
-            newSuggest.setAutoCorrectionThreshold(settingsValues.mAutoCorrectionThreshold);
-        }
-
-        mIsMainDictionaryAvailable = DictionaryFactory.isDictionaryAvailable(this, subtypeLocale);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.getInstance().initSuggest(newSuggest);
-        }
-
-        mUserDictionary = new UserBinaryDictionary(this, localeStr);
-        mIsUserDictionaryAvailable = mUserDictionary.isEnabled();
-        newSuggest.setUserDictionary(mUserDictionary);
-
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
-
-        mUserHistoryDictionary = PersonalizationHelper.getUserHistoryDictionary(
-                this, localeStr, prefs);
-        newSuggest.setUserHistoryDictionary(mUserHistoryDictionary);
-        mPersonalizationDictionary = PersonalizationHelper
-                .getPersonalizationDictionary(this, localeStr, prefs);
-        newSuggest.setPersonalizationDictionary(mPersonalizationDictionary);
-        mPersonalizationPredictionDictionary = PersonalizationHelper
-                .getPersonalizationPredictionDictionary(this, localeStr, prefs);
-        newSuggest.setPersonalizationPredictionDictionary(mPersonalizationPredictionDictionary);
-
-        final Suggest oldSuggest = mSuggest;
-        resetContactsDictionary(null != oldSuggest ? oldSuggest.getContactsDictionary() : null);
-        mSuggest = newSuggest;
-        if (oldSuggest != null) oldSuggest.close();
+        resetSuggestForLocale(subtypeLocale);
     }
 
     /**
-     * Resets the contacts dictionary in mSuggest according to the user settings.
+     * Reset suggest by loading dictionaries for the locale and the current settings values.
      *
-     * This method takes an optional contacts dictionary to use when the locale hasn't changed
-     * since the contacts dictionary can be opened or closed as necessary depending on the settings.
-     *
-     * @param oldContactsDictionary an optional dictionary to use, or null
+     * @param locale the locale
      */
-    private void resetContactsDictionary(final ContactsBinaryDictionary oldContactsDictionary) {
-        final Suggest suggest = mSuggest;
-        final boolean shouldSetDictionary =
-                (null != suggest && mSettings.getCurrent().mUseContactsDict);
-
-        final ContactsBinaryDictionary dictionaryToUse;
-        if (!shouldSetDictionary) {
-            // Make sure the dictionary is closed. If it is already closed, this is a no-op,
-            // so it's safe to call it anyways.
-            if (null != oldContactsDictionary) oldContactsDictionary.close();
-            dictionaryToUse = null;
-        } else {
-            final Locale locale = mSubtypeSwitcher.getCurrentSubtypeLocale();
-            if (null != oldContactsDictionary) {
-                if (!oldContactsDictionary.mLocale.equals(locale)) {
-                    // If the locale has changed then recreate the contacts dictionary. This
-                    // allows locale dependent rules for handling bigram name predictions.
-                    oldContactsDictionary.close();
-                    dictionaryToUse = new ContactsBinaryDictionary(this, locale);
-                } else {
-                    // Make sure the old contacts dictionary is opened. If it is already open,
-                    // this is a no-op, so it's safe to call it anyways.
-                    oldContactsDictionary.reopen(this);
-                    dictionaryToUse = oldContactsDictionary;
-                }
-            } else {
-                dictionaryToUse = new ContactsBinaryDictionary(this, locale);
-            }
-        }
-
-        if (null != suggest) {
-            suggest.setContactsDictionary(dictionaryToUse);
+    private void resetSuggestForLocale(final Locale locale) {
+        final SettingsValues settingsValues = mSettings.getCurrent();
+        mDictionaryFacilitator.resetDictionaries(this /* context */, locale,
+                settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts,
+                false /* forceReloadMainDictionary */, this);
+        if (settingsValues.mAutoCorrectionEnabled) {
+            mInputLogic.mSuggest.setAutoCorrectionThreshold(
+                    settingsValues.mAutoCorrectionThreshold);
         }
     }
 
+    /**
+     * Reset suggest by loading the main dictionary of the current locale.
+     */
     /* package private */ void resetSuggestMainDict() {
-        final Locale subtypeLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
-        mSuggest.resetMainDict(this, subtypeLocale, this /* SuggestInitializationListener */);
-        mIsMainDictionaryAvailable = DictionaryFactory.isDictionaryAvailable(this, subtypeLocale);
+        final SettingsValues settingsValues = mSettings.getCurrent();
+        mDictionaryFacilitator.resetDictionaries(this /* context */,
+                mDictionaryFacilitator.getLocale(), settingsValues.mUseContactsDict,
+                settingsValues.mUsePersonalizedDicts, true /* forceReloadMainDictionary */, this);
     }
 
     @Override
     public void onDestroy() {
-        final Suggest suggest = mSuggest;
-        if (suggest != null) {
-            suggest.close();
-            mSuggest = null;
-        }
+        mDictionaryFacilitator.closeDictionaries();
+        mPersonalizationDictionaryUpdater.onDestroy();
+        mContextualDictionaryUpdater.onDestroy();
         mSettings.onDestroy();
-        unregisterReceiver(mReceiver);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.getInstance().onDestroy();
-        }
+        unregisterReceiver(mConnectivityAndRingerModeChangeReceiver);
         unregisterReceiver(mDictionaryPackInstallReceiver);
-        PersonalizationDictionarySessionRegister.onDestroy(this);
-        LatinImeLogger.commit();
-        LatinImeLogger.onDestroy();
-        if (mInputUpdater != null) {
-            mInputUpdater.quitLooper();
-        }
+        unregisterReceiver(mDictionaryDumpBroadcastReceiver);
+        StatsUtils.onDestroy();
         super.onDestroy();
     }
 
+    @UsedForTesting
+    public void recycle() {
+        unregisterReceiver(mDictionaryPackInstallReceiver);
+        unregisterReceiver(mDictionaryDumpBroadcastReceiver);
+        unregisterReceiver(mConnectivityAndRingerModeChangeReceiver);
+        mInputLogic.recycle();
+    }
+
     @Override
     public void onConfigurationChanged(final Configuration conf) {
-        // If orientation changed while predicting, commit the change
-        if (mDisplayOrientation != conf.orientation) {
-            mDisplayOrientation = conf.orientation;
+        final SettingsValues settingsValues = mSettings.getCurrent();
+        if (settingsValues.mDisplayOrientation != conf.orientation) {
             mHandler.startOrientationChanging();
-            mConnection.beginBatchEdit();
-            commitTyped(LastComposedWord.NOT_A_SEPARATOR);
-            mConnection.finishComposingText();
-            mConnection.endBatchEdit();
-            if (isShowingOptionDialog()) {
-                mOptionsDialog.dismiss();
-            }
+            mInputLogic.onOrientationChange(mSettings.getCurrent());
         }
-        PersonalizationDictionarySessionRegister.onConfigurationChanged(this, conf);
+        // TODO: Remove this test.
+        if (!conf.locale.equals(mPersonalizationDictionaryUpdater.getLocale())) {
+            refreshPersonalizationDictionarySession(settingsValues);
+        }
         super.onConfigurationChanged(conf);
     }
 
@@ -760,10 +713,8 @@
                 .findViewById(android.R.id.extractArea);
         mKeyPreviewBackingView = view.findViewById(R.id.key_preview_backing);
         mSuggestionStripView = (SuggestionStripView)view.findViewById(R.id.suggestion_strip_view);
-        if (mSuggestionStripView != null)
+        if (hasSuggestionStripView()) {
             mSuggestionStripView.setListener(this, view);
-        if (LatinImeLogger.sVISUALDEBUG) {
-            mKeyPreviewBackingView.setBackgroundColor(0x10FF0000);
         }
     }
 
@@ -798,6 +749,7 @@
         // Note that the calling sequence of onCreate() and onCurrentInputMethodSubtypeChanged()
         // is not guaranteed. It may even be called at the same time on a different thread.
         mSubtypeSwitcher.onSubtypeChanged(subtype);
+        mInputLogic.onSubtypeChanged(SubtypeLocaleUtils.getCombiningRulesExtraValue(subtype));
         loadKeyboard();
     }
 
@@ -818,7 +770,7 @@
 
         if (editorInfo == null) {
             Log.e(TAG, "Null EditorInfo in onStartInputView()");
-            if (LatinImeLogger.sDBG) {
+            if (DebugFlags.DEBUG_ENABLED) {
                 throw new NullPointerException("Null EditorInfo in onStartInputView()");
             }
             return;
@@ -834,30 +786,18 @@
                     + ", word caps = "
                     + ((editorInfo.inputType & InputType.TYPE_TEXT_FLAG_CAP_WORDS) != 0));
         }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
-            ResearchLogger.latinIME_onStartInputViewInternal(editorInfo, prefs);
-        }
+        Log.i(TAG, "Starting input. Cursor position = "
+                + editorInfo.initialSelStart + "," + editorInfo.initialSelEnd);
+        // TODO: Consolidate these checks with {@link InputAttributes}.
         if (InputAttributes.inPrivateImeOptions(null, NO_MICROPHONE_COMPAT, editorInfo)) {
-            Log.w(TAG, "Deprecated private IME option specified: "
-                    + editorInfo.privateImeOptions);
+            Log.w(TAG, "Deprecated private IME option specified: " + editorInfo.privateImeOptions);
             Log.w(TAG, "Use " + getPackageName() + "." + NO_MICROPHONE + " instead");
         }
         if (InputAttributes.inPrivateImeOptions(getPackageName(), FORCE_ASCII, editorInfo)) {
-            Log.w(TAG, "Deprecated private IME option specified: "
-                    + editorInfo.privateImeOptions);
+            Log.w(TAG, "Deprecated private IME option specified: " + editorInfo.privateImeOptions);
             Log.w(TAG, "Use EditorInfo.IME_FLAG_FORCE_ASCII flag instead");
         }
 
-        final PackageInfo packageInfo =
-                TargetPackageInfoGetterTask.getCachedPackageInfo(editorInfo.packageName);
-        mAppWorkAroundsUtils.setPackageInfo(packageInfo);
-        if (null == packageInfo) {
-            new TargetPackageInfoGetterTask(this /* context */, this /* listener */)
-                    .execute(editorInfo.packageName);
-        }
-
-        LatinImeLogger.onStartInputView(editorInfo);
         // In landscape mode, this method gets called without the input view being created.
         if (mainKeyboardView == null) {
             return;
@@ -878,57 +818,57 @@
         // The EditorInfo might have a flag that affects fullscreen mode.
         // Note: This call should be done by InputMethodService?
         updateFullscreenMode();
-        mApplicationSpecifiedCompletions = null;
 
         // The app calling setText() has the effect of clearing the composing
         // span, so we should reset our state unconditionally, even if restarting is true.
-        mEnteredText = null;
-        resetComposingState(true /* alsoResetLastComposedWord */);
-        mDeleteCount = 0;
-        mSpaceState = SPACE_STATE_NONE;
-        mRecapitalizeStatus.deactivate();
-        mCurrentlyPressedHardwareKeys.clear();
+        // We also tell the input logic about the combining rules for the current subtype, so
+        // it can adjust its combiners if needed.
+        mInputLogic.startInput(mSubtypeSwitcher.getCombiningRulesExtraValueOfCurrentSubtype());
 
         // Note: the following does a round-trip IPC on the main thread: be careful
         final Locale currentLocale = mSubtypeSwitcher.getCurrentSubtypeLocale();
-        final Suggest suggest = mSuggest;
-        if (null != suggest && null != currentLocale && !currentLocale.equals(suggest.mLocale)) {
-            initSuggest();
+        final Suggest suggest = mInputLogic.mSuggest;
+        if (null != currentLocale && !currentLocale.equals(suggest.getLocale())) {
+            // TODO: Do this automatically.
+            resetSuggest();
         }
-        if (mSuggestionStripView != null) {
-            // This will set the punctuation suggestions if next word suggestion is off;
-            // otherwise it will clear the suggestion strip.
-            setPunctuationSuggestions();
-        }
-        mSuggestedWords = SuggestedWords.EMPTY;
 
-        // Sometimes, while rotating, for some reason the framework tells the app we are not
-        // connected to it and that means we can't refresh the cache. In this case, schedule a
-        // refresh later.
+        // TODO[IL]: Can the following be moved to InputLogic#startInput?
         final boolean canReachInputConnection;
-        if (!mConnection.resetCachesUponCursorMoveAndReturnSuccess(editorInfo.initialSelStart,
+        if (!mInputLogic.mConnection.resetCachesUponCursorMoveAndReturnSuccess(
+                editorInfo.initialSelStart, editorInfo.initialSelEnd,
                 false /* shouldFinishComposition */)) {
+            // Sometimes, while rotating, for some reason the framework tells the app we are not
+            // connected to it and that means we can't refresh the cache. In this case, schedule a
+            // refresh later.
             // We try resetting the caches up to 5 times before giving up.
             mHandler.postResetCaches(isDifferentTextField, 5 /* remainingTries */);
             // mLastSelection{Start,End} are reset later in this method, don't need to do it here
             canReachInputConnection = false;
         } else {
-            if (isDifferentTextField) {
-                mHandler.postResumeSuggestions();
-            }
+            // When rotating, initialSelStart and initialSelEnd sometimes are lying. Make a best
+            // effort to work around this bug.
+            mInputLogic.mConnection.tryFixLyingCursorPosition();
+            mHandler.postResumeSuggestions(true /* shouldIncludeResumedWordInSuggestions */,
+                    true /* shouldDelay */);
             canReachInputConnection = true;
         }
 
+        if (isDifferentTextField ||
+                !currentSettingsValues.hasSameOrientation(getResources().getConfiguration())) {
+            loadSettings();
+        }
         if (isDifferentTextField) {
             mainKeyboardView.closing();
-            loadSettings();
             currentSettingsValues = mSettings.getCurrent();
 
-            if (suggest != null && currentSettingsValues.mCorrectionEnabled) {
-                suggest.setAutoCorrectionThreshold(currentSettingsValues.mAutoCorrectionThreshold);
+            if (currentSettingsValues.mAutoCorrectionEnabled) {
+                suggest.setAutoCorrectionThreshold(
+                        currentSettingsValues.mAutoCorrectionThreshold);
             }
 
-            switcher.loadKeyboard(editorInfo, currentSettingsValues);
+            switcher.loadKeyboard(editorInfo, currentSettingsValues, getCurrentAutoCapsState(),
+                    getCurrentRecapitalizeState());
             if (!canReachInputConnection) {
                 // If we can't reach the input connection, we will call loadKeyboard again later,
                 // so we need to save its state now. The call will be done in #retryResetCaches.
@@ -937,26 +877,23 @@
         } else if (restarting) {
             // TODO: Come up with a more comprehensive way to reset the keyboard layout when
             // a keyboard layout set doesn't get reloaded in this method.
-            switcher.resetKeyboardStateToAlphabet();
+            switcher.resetKeyboardStateToAlphabet(getCurrentAutoCapsState(),
+                    getCurrentRecapitalizeState());
             // In apps like Talk, we come here when the text is sent and the field gets emptied and
             // we need to re-evaluate the shift state, but not the whole layout which would be
             // disruptive.
             // Space state must be updated before calling updateShiftState
-            switcher.updateShiftState();
+            switcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+                    getCurrentRecapitalizeState());
         }
-        setSuggestionStripShownInternal(
-                isSuggestionsStripVisible(), /* needsInputViewShown */ false);
-
-        mLastSelectionStart = editorInfo.initialSelStart;
-        mLastSelectionEnd = editorInfo.initialSelEnd;
-        // In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
-        // so we try using some heuristics to find out about these and fix them.
-        tryFixLyingCursorPosition();
+        // This will set the punctuation suggestions if next word suggestion is off;
+        // otherwise it will clear the suggestion strip.
+        setNeutralSuggestionStrip();
 
         mHandler.cancelUpdateSuggestionStrip();
-        mHandler.cancelDoubleSpacePeriodTimer();
 
-        mainKeyboardView.setMainDictionaryAvailability(mIsMainDictionaryAvailable);
+        mainKeyboardView.setMainDictionaryAvailability(
+                mDictionaryFacilitator.hasInitializedMainDictionary());
         mainKeyboardView.setKeyPreviewPopupEnabled(currentSettingsValues.mKeyPreviewPopupOn,
                 currentSettingsValues.mKeyPreviewPopupDismissDelay);
         mainKeyboardView.setSlidingKeyInputPreviewEnabled(
@@ -966,76 +903,11 @@
                 currentSettingsValues.mGestureTrailEnabled,
                 currentSettingsValues.mGestureFloatingPreviewTextEnabled);
 
-        initPersonalizationDebugSettings(currentSettingsValues);
-
+        // Contextual dictionary should be updated for the current application.
+        mContextualDictionaryUpdater.onStartInputView(editorInfo.packageName);
         if (TRACE) Debug.startMethodTracing("/data/trace/latinime");
     }
 
-    /**
-     * Try to get the text from the editor to expose lies the framework may have been
-     * telling us. Concretely, when the device rotates, the frameworks tells us about where the
-     * cursor used to be initially in the editor at the time it first received the focus; this
-     * may be completely different from the place it is upon rotation. Since we don't have any
-     * means to get the real value, try at least to ask the text view for some characters and
-     * detect the most damaging cases: when the cursor position is declared to be much smaller
-     * than it really is.
-     */
-    private void tryFixLyingCursorPosition() {
-        final CharSequence textBeforeCursor =
-                mConnection.getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE, 0);
-        if (null == textBeforeCursor) {
-            mLastSelectionStart = mLastSelectionEnd = NOT_A_CURSOR_POSITION;
-        } else {
-            final int textLength = textBeforeCursor.length();
-            if (textLength > mLastSelectionStart
-                    || (textLength < Constants.EDITOR_CONTENTS_CACHE_SIZE
-                            && mLastSelectionStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
-                // It should not be possible to have only one of those variables be
-                // NOT_A_CURSOR_POSITION, so if they are equal, either the selection is zero-sized
-                // (simple cursor, no selection) or there is no cursor/we don't know its pos
-                final boolean wasEqual = mLastSelectionStart == mLastSelectionEnd;
-                mLastSelectionStart = textLength;
-                // We can't figure out the value of mLastSelectionEnd :(
-                // But at least if it's smaller than mLastSelectionStart something is wrong,
-                // and if they used to be equal we also don't want to make it look like there is a
-                // selection.
-                if (wasEqual || mLastSelectionStart > mLastSelectionEnd) {
-                    mLastSelectionEnd = mLastSelectionStart;
-                }
-            }
-        }
-    }
-
-    // Initialization of personalization debug settings. This must be called inside
-    // onStartInputView.
-    private void initPersonalizationDebugSettings(SettingsValues currentSettingsValues) {
-        if (mUseOnlyPersonalizationDictionaryForDebug
-                != currentSettingsValues.mUseOnlyPersonalizationDictionaryForDebug) {
-            // Only for debug
-            initSuggest();
-            mUseOnlyPersonalizationDictionaryForDebug =
-                    currentSettingsValues.mUseOnlyPersonalizationDictionaryForDebug;
-        }
-
-        if (mBoostPersonalizationDictionaryForDebug !=
-                currentSettingsValues.mBoostPersonalizationDictionaryForDebug) {
-            // Only for debug
-            mBoostPersonalizationDictionaryForDebug =
-                    currentSettingsValues.mBoostPersonalizationDictionaryForDebug;
-            if (mBoostPersonalizationDictionaryForDebug) {
-                UserHistoryForgettingCurveUtils.boostMaxFreqForDebug();
-            } else {
-                UserHistoryForgettingCurveUtils.resetMaxFreqForDebug();
-            }
-        }
-    }
-
-    // Callback for the TargetPackageInfoGetterTask
-    @Override
-    public void onTargetPackageInfoKnown(final PackageInfo info) {
-        mAppWorkAroundsUtils.setPackageInfo(info);
-    }
-
     @Override
     public void onWindowHidden() {
         super.onWindowHidden();
@@ -1048,7 +920,6 @@
     private void onFinishInputInternal() {
         super.onFinishInput();
 
-        LatinImeLogger.commit();
         final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
         if (mainKeyboardView != null) {
             mainKeyboardView.closing();
@@ -1057,18 +928,11 @@
 
     private void onFinishInputViewInternal(final boolean finishingInput) {
         super.onFinishInputView(finishingInput);
-        mKeyboardSwitcher.onFinishInputView();
         mKeyboardSwitcher.deallocateMemory();
         // Remove pending messages related to update suggestions
         mHandler.cancelUpdateSuggestionStrip();
         // Should do the following in onFinishInputInternal but until JB MR2 it's not called :(
-        if (mWordComposer.isComposingWord()) mConnection.finishComposingText();
-        resetComposingState(true /* alsoResetLastComposedWord */);
-        // Notify ResearchLogger
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_onFinishInputViewInternal(finishingInput, mLastSelectionStart,
-                    mLastSelectionEnd, getCurrentInputConnection());
-        }
+        mInputLogic.finishInput();
     }
 
     @Override
@@ -1078,102 +942,29 @@
         super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd,
                 composingSpanStart, composingSpanEnd);
         if (DEBUG) {
-            Log.i(TAG, "onUpdateSelection: oss=" + oldSelStart
-                    + ", ose=" + oldSelEnd
-                    + ", lss=" + mLastSelectionStart
-                    + ", lse=" + mLastSelectionEnd
-                    + ", nss=" + newSelStart
-                    + ", nse=" + newSelEnd
-                    + ", cs=" + composingSpanStart
-                    + ", ce=" + composingSpanEnd);
+            Log.i(TAG, "onUpdateSelection: oss=" + oldSelStart + ", ose=" + oldSelEnd
+                    + ", nss=" + newSelStart + ", nse=" + newSelEnd
+                    + ", cs=" + composingSpanStart + ", ce=" + composingSpanEnd);
         }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            final boolean expectingUpdateSelectionFromLogger =
-                    ResearchLogger.getAndClearLatinIMEExpectingUpdateSelection();
-            ResearchLogger.latinIME_onUpdateSelection(mLastSelectionStart, mLastSelectionEnd,
-                    oldSelStart, oldSelEnd, newSelStart, newSelEnd, composingSpanStart,
-                    composingSpanEnd, mExpectingUpdateSelection,
-                    expectingUpdateSelectionFromLogger, mConnection);
-            if (expectingUpdateSelectionFromLogger) {
-                // TODO: Investigate. Quitting now sounds wrong - we won't do the resetting work
-                return;
-            }
-        }
-
-        final boolean selectionChanged = mLastSelectionStart != newSelStart
-                || mLastSelectionEnd != newSelEnd;
-
-        // if composingSpanStart and composingSpanEnd are -1, it means there is no composing
-        // span in the view - we can use that to narrow down whether the cursor was moved
-        // by us or not. If we are composing a word but there is no composing span, then
-        // we know for sure the cursor moved while we were composing and we should reset
-        // the state. TODO: rescind this policy: the framework never removes the composing
-        // span on its own accord while editing. This test is useless.
-        final boolean noComposingSpan = composingSpanStart == -1 && composingSpanEnd == -1;
 
         // If the keyboard is not visible, we don't need to do all the housekeeping work, as it
         // will be reset when the keyboard shows up anyway.
         // TODO: revisit this when LatinIME supports hardware keyboards.
         // NOTE: the test harness subclasses LatinIME and overrides isInputViewShown().
         // TODO: find a better way to simulate actual execution.
-        if (isInputViewShown() && !mExpectingUpdateSelection
-                && !mConnection.isBelatedExpectedUpdate(oldSelStart, newSelStart)) {
-            // TAKE CARE: there is a race condition when we enter this test even when the user
-            // did not explicitly move the cursor. This happens when typing fast, where two keys
-            // turn this flag on in succession and both onUpdateSelection() calls arrive after
-            // the second one - the first call successfully avoids this test, but the second one
-            // enters. For the moment we rely on noComposingSpan to further reduce the impact.
-
-            // TODO: the following is probably better done in resetEntireInputState().
-            // it should only happen when the cursor moved, and the very purpose of the
-            // test below is to narrow down whether this happened or not. Likewise with
-            // the call to updateShiftState.
-            // We set this to NONE because after a cursor move, we don't want the space
-            // state-related special processing to kick in.
-            mSpaceState = SPACE_STATE_NONE;
-
-            // TODO: is it still necessary to test for composingSpan related stuff?
-            final boolean selectionChangedOrSafeToReset = selectionChanged
-                    || (!mWordComposer.isComposingWord()) || noComposingSpan;
-            final boolean hasOrHadSelection = (oldSelStart != oldSelEnd
-                    || newSelStart != newSelEnd);
-            final int moveAmount = newSelStart - oldSelStart;
-            if (selectionChangedOrSafeToReset && (hasOrHadSelection
-                    || !mWordComposer.moveCursorByAndReturnIfInsideComposingWord(moveAmount))) {
-                // If we are composing a word and moving the cursor, we would want to set a
-                // suggestion span for recorrection to work correctly. Unfortunately, that
-                // would involve the keyboard committing some new text, which would move the
-                // cursor back to where it was. Latin IME could then fix the position of the cursor
-                // again, but the asynchronous nature of the calls results in this wreaking havoc
-                // with selection on double tap and the like.
-                // Another option would be to send suggestions each time we set the composing
-                // text, but that is probably too expensive to do, so we decided to leave things
-                // as is.
-                resetEntireInputState(newSelStart);
-            } else {
-                // resetEntireInputState calls resetCachesUponCursorMove, but with the second
-                // argument as true. But in all cases where we don't reset the entire input state,
-                // we still want to tell the rich input connection about the new cursor position so
-                // that it can update its caches.
-                mConnection.resetCachesUponCursorMoveAndReturnSuccess(newSelStart,
-                        false /* shouldFinishComposition */);
-            }
-
-            // We moved the cursor. If we are touching a word, we need to resume suggestion,
-            // unless suggestions are off.
-            if (isSuggestionsStripVisible()) {
-                mHandler.postResumeSuggestions();
-            }
-            // Reset the last recapitalization.
-            mRecapitalizeStatus.deactivate();
-            mKeyboardSwitcher.updateShiftState();
+        if (isInputViewShown() &&
+                mInputLogic.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd)) {
+            mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+                    getCurrentRecapitalizeState());
         }
-        mExpectingUpdateSelection = false;
+    }
 
-        // Make a note of the cursor position
-        mLastSelectionStart = newSelStart;
-        mLastSelectionEnd = newSelEnd;
-        mSubtypeState.currentSubtypeUsed();
+    @Override
+    public void onUpdateCursor(final Rect rect) {
+        if (DEBUG) {
+            Log.i(TAG, "onUpdateCursor:" + rect.toShortString());
+        }
+        super.onUpdateCursor(rect);
     }
 
     /**
@@ -1186,7 +977,9 @@
      */
     @Override
     public void onExtractedTextClicked() {
-        if (mSettings.getCurrent().isSuggestionsRequested(mDisplayOrientation)) return;
+        if (mSettings.getCurrent().isSuggestionsRequested()) {
+            return;
+        }
 
         super.onExtractedTextClicked();
     }
@@ -1202,22 +995,19 @@
      */
     @Override
     public void onExtractedCursorMovement(final int dx, final int dy) {
-        if (mSettings.getCurrent().isSuggestionsRequested(mDisplayOrientation)) return;
+        if (mSettings.getCurrent().isSuggestionsRequested()) {
+            return;
+        }
 
         super.onExtractedCursorMovement(dx, dy);
     }
 
     @Override
     public void hideWindow() {
-        LatinImeLogger.commit();
         mKeyboardSwitcher.onHideWindow();
 
-        if (AccessibilityUtils.getInstance().isAccessibilityEnabled()) {
-            AccessibleKeyboardViewProxy.getInstance().onHideWindow();
-        }
-
         if (TRACE) Debug.stopMethodTracing();
-        if (mOptionsDialog != null && mOptionsDialog.isShowing()) {
+        if (isShowingOptionDialog()) {
             mOptionsDialog.dismiss();
             mOptionsDialog = null;
         }
@@ -1234,56 +1024,25 @@
                 }
             }
         }
-        if (!mSettings.getCurrent().isApplicationSpecifiedCompletionsOn()) return;
-        if (applicationSpecifiedCompletions == null) {
-            clearSuggestionStrip();
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.latinIME_onDisplayCompletions(null);
-            }
+        if (!mSettings.getCurrent().isApplicationSpecifiedCompletionsOn()) {
             return;
         }
-        mApplicationSpecifiedCompletions =
-                CompletionInfoUtils.removeNulls(applicationSpecifiedCompletions);
+        // If we have an update request in flight, we need to cancel it so it does not override
+        // these completions.
+        mHandler.cancelUpdateSuggestionStrip();
+        if (applicationSpecifiedCompletions == null) {
+            setNeutralSuggestionStrip();
+            return;
+        }
 
         final ArrayList<SuggestedWords.SuggestedWordInfo> applicationSuggestedWords =
                 SuggestedWords.getFromApplicationSpecifiedCompletions(
                         applicationSpecifiedCompletions);
-        final SuggestedWords suggestedWords = new SuggestedWords(
-                applicationSuggestedWords,
-                false /* typedWordValid */,
-                false /* hasAutoCorrectionCandidate */,
-                false /* isPunctuationSuggestions */,
-                false /* isObsoleteSuggestions */,
-                false /* isPrediction */);
-        // When in fullscreen mode, show completions generated by the application
-        final boolean isAutoCorrection = false;
-        setSuggestedWords(suggestedWords, isAutoCorrection);
-        setAutoCorrectionIndicator(isAutoCorrection);
-        setSuggestionStripShown(true);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_onDisplayCompletions(applicationSpecifiedCompletions);
-        }
-    }
-
-    private void setSuggestionStripShownInternal(final boolean shown,
-            final boolean needsInputViewShown) {
-        // TODO: Modify this if we support suggestions with hard keyboard
-        if (onEvaluateInputViewShown() && mSuggestionStripView != null) {
-            final boolean inputViewShown = mKeyboardSwitcher.isShowingMainKeyboardOrEmojiPalettes();
-            final boolean shouldShowSuggestions = shown
-                    && (needsInputViewShown ? inputViewShown : true);
-            if (isFullscreenMode()) {
-                mSuggestionStripView.setVisibility(
-                        shouldShowSuggestions ? View.VISIBLE : View.GONE);
-            } else {
-                mSuggestionStripView.setVisibility(
-                        shouldShowSuggestions ? View.VISIBLE : View.INVISIBLE);
-            }
-        }
-    }
-
-    private void setSuggestionStripShown(final boolean shown) {
-        setSuggestionStripShownInternal(shown, /* needsInputViewShown */true);
+        final SuggestedWords suggestedWords = new SuggestedWords(applicationSuggestedWords,
+                null /* rawSuggestions */, false /* typedWordValid */, false /* willAutoCorrect */,
+                false /* isObsoleteSuggestions */, false /* isPrediction */);
+        // When in fullscreen mode, show completions generated by the application forcibly
+        setSuggestedWords(suggestedWords);
     }
 
     private int getAdjustedBackingViewHeight() {
@@ -1317,7 +1076,7 @@
     public void onComputeInsets(final InputMethodService.Insets outInsets) {
         super.onComputeInsets(outInsets);
         final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView();
-        if (visibleKeyboardView == null || mSuggestionStripView == null) {
+        if (visibleKeyboardView == null || !hasSuggestionStripView()) {
             return;
         }
         final int adjustedBackingHeight = getAdjustedBackingViewHeight();
@@ -1353,9 +1112,8 @@
 
     @Override
     public boolean onEvaluateFullscreenMode() {
-        // Reread resource value here, because this method is called by framework anytime as needed.
-        final boolean isFullscreenModeAllowed =
-                Settings.readUseFullscreenMode(getResources());
+        // Reread resource value here, because this method is called by the framework as needed.
+        final boolean isFullscreenModeAllowed = Settings.readUseFullscreenMode(getResources());
         if (super.onEvaluateFullscreenMode() && isFullscreenModeAllowed) {
             // TODO: Remove this hack. Actually we should not really assume NO_EXTRACT_UI
             // implies NO_FULLSCREEN. However, the framework mistakenly does.  i.e. NO_EXTRACT_UI
@@ -1378,138 +1136,30 @@
         mKeyPreviewBackingView.setVisibility(isFullscreenMode() ? View.GONE : View.VISIBLE);
     }
 
-    // This will reset the whole input state to the starting state. It will clear
-    // the composing word, reset the last composed word, tell the inputconnection about it.
-    private void resetEntireInputState(final int newCursorPosition) {
-        final boolean shouldFinishComposition = mWordComposer.isComposingWord();
-        resetComposingState(true /* alsoResetLastComposedWord */);
-        final SettingsValues settingsValues = mSettings.getCurrent();
-        if (settingsValues.mBigramPredictionEnabled) {
-            clearSuggestionStrip();
+    private int getCurrentAutoCapsState() {
+        return mInputLogic.getCurrentAutoCapsState(mSettings.getCurrent());
+    }
+
+    private int getCurrentRecapitalizeState() {
+        return mInputLogic.getCurrentRecapitalizeState();
+    }
+
+    public Locale getCurrentSubtypeLocale() {
+        return mSubtypeSwitcher.getCurrentSubtypeLocale();
+    }
+
+    /**
+     * @param codePoints code points to get coordinates for.
+     * @return x,y coordinates for this keyboard, as a flattened array.
+     */
+    public int[] getCoordinatesForCurrentKeyboard(final int[] codePoints) {
+        final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
+        if (null == keyboard) {
+            return CoordinateUtils.newCoordinateArray(codePoints.length,
+                    Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
         } else {
-            setSuggestedWords(settingsValues.mSuggestPuncList, false);
+            return keyboard.getCoordinates(codePoints);
         }
-        mConnection.resetCachesUponCursorMoveAndReturnSuccess(newCursorPosition,
-                shouldFinishComposition);
-    }
-
-    private void resetComposingState(final boolean alsoResetLastComposedWord) {
-        mWordComposer.reset();
-        if (alsoResetLastComposedWord)
-            mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
-    }
-
-    private void commitTyped(final String separatorString) {
-        if (!mWordComposer.isComposingWord()) return;
-        final String typedWord = mWordComposer.getTypedWord();
-        if (typedWord.length() > 0) {
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.getInstance().onWordFinished(typedWord, mWordComposer.isBatchMode());
-            }
-            commitChosenWord(typedWord, LastComposedWord.COMMIT_TYPE_USER_TYPED_WORD,
-                    separatorString);
-        }
-    }
-
-    // Called from the KeyboardSwitcher which needs to know auto caps state to display
-    // the right layout.
-    public int getCurrentAutoCapsState() {
-        final SettingsValues currentSettingsValues = mSettings.getCurrent();
-        if (!currentSettingsValues.mAutoCap) return Constants.TextUtils.CAP_MODE_OFF;
-
-        final EditorInfo ei = getCurrentInputEditorInfo();
-        if (ei == null) return Constants.TextUtils.CAP_MODE_OFF;
-        final int inputType = ei.inputType;
-        // Warning: this depends on mSpaceState, which may not be the most current value. If
-        // mSpaceState gets updated later, whoever called this may need to be told about it.
-        return mConnection.getCursorCapsMode(inputType, currentSettingsValues,
-                SPACE_STATE_PHANTOM == mSpaceState);
-    }
-
-    public int getCurrentRecapitalizeState() {
-        if (!mRecapitalizeStatus.isActive()
-                || !mRecapitalizeStatus.isSetAt(mLastSelectionStart, mLastSelectionEnd)) {
-            // Not recapitalizing at the moment
-            return RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
-        }
-        return mRecapitalizeStatus.getCurrentMode();
-    }
-
-    // Factor in auto-caps and manual caps and compute the current caps mode.
-    private int getActualCapsMode() {
-        final int keyboardShiftMode = mKeyboardSwitcher.getKeyboardShiftMode();
-        if (keyboardShiftMode != WordComposer.CAPS_MODE_AUTO_SHIFTED) return keyboardShiftMode;
-        final int auto = getCurrentAutoCapsState();
-        if (0 != (auto & TextUtils.CAP_MODE_CHARACTERS)) {
-            return WordComposer.CAPS_MODE_AUTO_SHIFT_LOCKED;
-        }
-        if (0 != auto) return WordComposer.CAPS_MODE_AUTO_SHIFTED;
-        return WordComposer.CAPS_MODE_OFF;
-    }
-
-    private void swapSwapperAndSpace() {
-        final CharSequence lastTwo = mConnection.getTextBeforeCursor(2, 0);
-        // It is guaranteed lastTwo.charAt(1) is a swapper - else this method is not called.
-        if (lastTwo != null && lastTwo.length() == 2
-                && lastTwo.charAt(0) == Constants.CODE_SPACE) {
-            mConnection.deleteSurroundingText(2, 0);
-            final String text = lastTwo.charAt(1) + " ";
-            mConnection.commitText(text, 1);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.latinIME_swapSwapperAndSpace(lastTwo, text);
-            }
-            mKeyboardSwitcher.updateShiftState();
-        }
-    }
-
-    private boolean maybeDoubleSpacePeriod() {
-        final SettingsValues currentSettingsValues = mSettings.getCurrent();
-        if (!currentSettingsValues.mUseDoubleSpacePeriod) return false;
-        if (!mHandler.isAcceptingDoubleSpacePeriod()) return false;
-        // We only do this when we see two spaces and an accepted code point before the cursor.
-        // The code point may be a surrogate pair but the two spaces may not, so we need 4 chars.
-        final CharSequence lastThree = mConnection.getTextBeforeCursor(4, 0);
-        if (null == lastThree) return false;
-        final int length = lastThree.length();
-        if (length < 3) return false;
-        if (lastThree.charAt(length - 1) != Constants.CODE_SPACE) return false;
-        if (lastThree.charAt(length - 2) != Constants.CODE_SPACE) return false;
-        // We know there are spaces in pos -1 and -2, and we have at least three chars.
-        // If we have only three chars, isSurrogatePairs can't return true as charAt(1) is a space,
-        // so this is fine.
-        final int firstCodePoint =
-                Character.isSurrogatePair(lastThree.charAt(0), lastThree.charAt(1)) ?
-                        Character.codePointAt(lastThree, 0) : lastThree.charAt(length - 3);
-        if (canBeFollowedByDoubleSpacePeriod(firstCodePoint)) {
-            mHandler.cancelDoubleSpacePeriodTimer();
-            mConnection.deleteSurroundingText(2, 0);
-            final String textToInsert = new String(
-                    new int[] { currentSettingsValues.mSentenceSeparator, Constants.CODE_SPACE },
-                    0, 2);
-            mConnection.commitText(textToInsert, 1);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert,
-                        false /* isBatchMode */);
-            }
-            mKeyboardSwitcher.updateShiftState();
-            return true;
-        }
-        return false;
-    }
-
-    private static boolean canBeFollowedByDoubleSpacePeriod(final int codePoint) {
-        // TODO: Check again whether there really ain't a better way to check this.
-        // TODO: This should probably be language-dependant...
-        return Character.isLetterOrDigit(codePoint)
-                || codePoint == Constants.CODE_SINGLE_QUOTE
-                || codePoint == Constants.CODE_DOUBLE_QUOTE
-                || codePoint == Constants.CODE_CLOSING_PARENTHESIS
-                || codePoint == Constants.CODE_CLOSING_SQUARE_BRACKET
-                || codePoint == Constants.CODE_CLOSING_CURLY_BRACKET
-                || codePoint == Constants.CODE_CLOSING_ANGLE_BRACKET
-                || codePoint == Constants.CODE_PLUS
-                || codePoint == Constants.CODE_PERCENT
-                || Character.getType(codePoint) == Character.OTHER_SYMBOL;
     }
 
     // Callback for the {@link SuggestionStripView}, to call when the "add to dictionary" hint is
@@ -1521,16 +1171,37 @@
             return;
         }
         final String wordToEdit;
-        if (CapsModeUtils.isAutoCapsMode(mLastComposedWord.mCapitalizedMode)) {
-            wordToEdit = word.toLowerCase(mSubtypeSwitcher.getCurrentSubtypeLocale());
+        if (CapsModeUtils.isAutoCapsMode(mInputLogic.mLastComposedWord.mCapitalizedMode)) {
+            wordToEdit = word.toLowerCase(getCurrentSubtypeLocale());
         } else {
             wordToEdit = word;
         }
-        mUserDictionary.addWordToUserDictionary(wordToEdit);
+        mDictionaryFacilitator.addWordToUserDictionary(this /* context */, wordToEdit);
     }
 
-    private void onSettingsKeyPressed() {
-        if (isShowingOptionDialog()) return;
+    // Callback for the {@link SuggestionStripView}, to call when the important notice strip is
+    // pressed.
+    @Override
+    public void showImportantNoticeContents() {
+        showOptionDialog(new ImportantNoticeDialog(this /* context */, this /* listener */));
+    }
+
+    // Implement {@link ImportantNoticeDialog.ImportantNoticeDialogListener}
+    @Override
+    public void onClickSettingsOfImportantNoticeDialog(final int nextVersion) {
+        launchSettings();
+    }
+
+    // Implement {@link ImportantNoticeDialog.ImportantNoticeDialogListener}
+    @Override
+    public void onUserAcknowledgmentOfImportantNoticeDialog(final int nextVersion) {
+        setNeutralSuggestionStrip();
+    }
+
+    public void displaySettingsDialog() {
+        if (isShowingOptionDialog()) {
+            return;
+        }
         showSubtypeSelectorAndSettings();
     }
 
@@ -1552,408 +1223,105 @@
         return mOptionsDialog != null && mOptionsDialog.isShowing();
     }
 
-    private void performEditorAction(final int actionId) {
-        mConnection.performEditorAction(actionId);
-    }
-
     // TODO: Revise the language switch key behavior to make it much smarter and more reasonable.
-    private void handleLanguageSwitchKey() {
+    public void switchToNextSubtype() {
         final IBinder token = getWindow().getWindow().getAttributes().token;
-        if (mSettings.getCurrent().mIncludesOtherImesInLanguageSwitchList) {
+        if (shouldSwitchToOtherInputMethods()) {
             mRichImm.switchToNextInputMethod(token, false /* onlyCurrentIme */);
             return;
         }
         mSubtypeState.switchSubtype(token, mRichImm);
     }
 
-    private void sendDownUpKeyEvent(final int code) {
-        final long eventTime = SystemClock.uptimeMillis();
-        mConnection.sendKeyEvent(new KeyEvent(eventTime, eventTime,
-                KeyEvent.ACTION_DOWN, code, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
-                KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE));
-        mConnection.sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
-                KeyEvent.ACTION_UP, code, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
-                KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE));
-    }
-
-    private void sendKeyCodePoint(final int code) {
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_sendKeyCodePoint(code);
-        }
-        // TODO: Remove this special handling of digit letters.
-        // For backward compatibility. See {@link InputMethodService#sendKeyChar(char)}.
-        if (code >= '0' && code <= '9') {
-            sendDownUpKeyEvent(code - '0' + KeyEvent.KEYCODE_0);
-            return;
-        }
-
-        if (Constants.CODE_ENTER == code && mAppWorkAroundsUtils.isBeforeJellyBean()) {
-            // Backward compatibility mode. Before Jelly bean, the keyboard would simulate
-            // a hardware keyboard event on pressing enter or delete. This is bad for many
-            // reasons (there are race conditions with commits) but some applications are
-            // relying on this behavior so we continue to support it for older apps.
-            sendDownUpKeyEvent(KeyEvent.KEYCODE_ENTER);
-        } else {
-            mConnection.commitText(StringUtils.newSingleCodePointString(code), 1);
-        }
-    }
-
     // Implementation of {@link KeyboardActionListener}.
     @Override
-    public void onCodeInput(final int primaryCode, final int x, final int y) {
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_onCodeInput(primaryCode, x, y);
-        }
-        final long when = SystemClock.uptimeMillis();
-        if (primaryCode != Constants.CODE_DELETE || when > mLastKeyTime + QUICK_PRESS) {
-            mDeleteCount = 0;
-        }
-        mLastKeyTime = when;
-        mConnection.beginBatchEdit();
-        final KeyboardSwitcher switcher = mKeyboardSwitcher;
-        // The space state depends only on the last character pressed and its own previous
-        // state. Here, we revert the space state to neutral if the key is actually modifying
-        // the input contents (any non-shift key), which is what we should do for
-        // all inputs that do not result in a special state. Each character handling is then
-        // free to override the state as they see fit.
-        final int spaceState = mSpaceState;
-        if (!mWordComposer.isComposingWord()) mIsAutoCorrectionIndicatorOn = false;
-
-        // TODO: Consolidate the double-space period timer, mLastKeyTime, and the space state.
-        if (primaryCode != Constants.CODE_SPACE) {
-            mHandler.cancelDoubleSpacePeriodTimer();
-        }
-
-        boolean didAutoCorrect = false;
-        switch (primaryCode) {
-        case Constants.CODE_DELETE:
-            mSpaceState = SPACE_STATE_NONE;
-            handleBackspace(spaceState);
-            LatinImeLogger.logOnDelete(x, y);
-            break;
-        case Constants.CODE_SHIFT:
-            // Note: Calling back to the keyboard on Shift key is handled in
-            // {@link #onPressKey(int,int,boolean)} and {@link #onReleaseKey(int,boolean)}.
-            final Keyboard currentKeyboard = switcher.getKeyboard();
+    public void onCodeInput(final int codePoint, final int x, final int y,
+            final boolean isKeyRepeat) {
+        final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
+        // x and y include some padding, but everything down the line (especially native
+        // code) needs the coordinates in the keyboard frame.
+        // TODO: We should reconsider which coordinate system should be used to represent
+        // keyboard event. Also we should pull this up -- LatinIME has no business doing
+        // this transformation, it should be done already before calling onCodeInput.
+        final int keyX = mainKeyboardView.getKeyX(x);
+        final int keyY = mainKeyboardView.getKeyY(y);
+        final int codeToSend;
+        if (Constants.CODE_SHIFT == codePoint) {
+            // TODO: Instead of checking for alphabetic keyboard here, separate keycodes for
+            // alphabetic shift and shift while in symbol layout.
+            final Keyboard currentKeyboard = mKeyboardSwitcher.getKeyboard();
             if (null != currentKeyboard && currentKeyboard.mId.isAlphabetKeyboard()) {
-                // TODO: Instead of checking for alphabetic keyboard here, separate keycodes for
-                // alphabetic shift and shift while in symbol layout.
-                handleRecapitalize();
-            }
-            break;
-        case Constants.CODE_CAPSLOCK:
-            // Note: Changing keyboard to shift lock state is handled in
-            // {@link KeyboardSwitcher#onCodeInput(int)}.
-            break;
-        case Constants.CODE_SWITCH_ALPHA_SYMBOL:
-            // Note: Calling back to the keyboard on symbol key is handled in
-            // {@link #onPressKey(int,int,boolean)} and {@link #onReleaseKey(int,boolean)}.
-            break;
-        case Constants.CODE_SETTINGS:
-            onSettingsKeyPressed();
-            break;
-        case Constants.CODE_SHORTCUT:
-            mSubtypeSwitcher.switchToShortcutIME(this);
-            break;
-        case Constants.CODE_ACTION_NEXT:
-            performEditorAction(EditorInfo.IME_ACTION_NEXT);
-            break;
-        case Constants.CODE_ACTION_PREVIOUS:
-            performEditorAction(EditorInfo.IME_ACTION_PREVIOUS);
-            break;
-        case Constants.CODE_LANGUAGE_SWITCH:
-            handleLanguageSwitchKey();
-            break;
-        case Constants.CODE_EMOJI:
-            // Note: Switching emoji keyboard is being handled in
-            // {@link KeyboardState#onCodeInput(int,int)}.
-            break;
-        case Constants.CODE_ENTER:
-            final EditorInfo editorInfo = getCurrentInputEditorInfo();
-            final int imeOptionsActionId =
-                    InputTypeUtils.getImeOptionsActionIdFromEditorInfo(editorInfo);
-            if (InputTypeUtils.IME_ACTION_CUSTOM_LABEL == imeOptionsActionId) {
-                // Either we have an actionLabel and we should performEditorAction with actionId
-                // regardless of its value.
-                performEditorAction(editorInfo.actionId);
-            } else if (EditorInfo.IME_ACTION_NONE != imeOptionsActionId) {
-                // We didn't have an actionLabel, but we had another action to execute.
-                // EditorInfo.IME_ACTION_NONE explicitly means no action. In contrast,
-                // EditorInfo.IME_ACTION_UNSPECIFIED is the default value for an action, so it
-                // means there should be an action and the app didn't bother to set a specific
-                // code for it - presumably it only handles one. It does not have to be treated
-                // in any specific way: anything that is not IME_ACTION_NONE should be sent to
-                // performEditorAction.
-                performEditorAction(imeOptionsActionId);
+                codeToSend = codePoint;
             } else {
-                // No action label, and the action from imeOptions is NONE: this is a regular
-                // enter key that should input a carriage return.
-                didAutoCorrect = handleNonSpecialCharacter(Constants.CODE_ENTER, x, y, spaceState);
+                codeToSend = Constants.CODE_SYMBOL_SHIFT;
             }
-            break;
-        case Constants.CODE_SHIFT_ENTER:
-            didAutoCorrect = handleNonSpecialCharacter(Constants.CODE_ENTER, x, y, spaceState);
-            break;
-        default:
-            didAutoCorrect = handleNonSpecialCharacter(primaryCode, x, y, spaceState);
-            break;
+        } else {
+            codeToSend = codePoint;
         }
-        switcher.onCodeInput(primaryCode);
-        // Reset after any single keystroke, except shift, capslock, and symbol-shift
-        if (!didAutoCorrect && primaryCode != Constants.CODE_SHIFT
-                && primaryCode != Constants.CODE_CAPSLOCK
-                && primaryCode != Constants.CODE_SWITCH_ALPHA_SYMBOL)
-            mLastComposedWord.deactivate();
-        if (Constants.CODE_DELETE != primaryCode) {
-            mEnteredText = null;
+        if (Constants.CODE_SHORTCUT == codePoint) {
+            mSubtypeSwitcher.switchToShortcutIME(this);
+            // Still call the *#onCodeInput methods for readability.
         }
-        mConnection.endBatchEdit();
+        final Event event = createSoftwareKeypressEvent(codeToSend, keyX, keyY, isKeyRepeat);
+        final InputTransaction completeInputTransaction =
+                mInputLogic.onCodeInput(mSettings.getCurrent(), event,
+                        mKeyboardSwitcher.getKeyboardShiftMode(),
+                        mKeyboardSwitcher.getCurrentKeyboardScriptId(), mHandler);
+        updateStateAfterInputTransaction(completeInputTransaction);
+        mKeyboardSwitcher.onCodeInput(codePoint, getCurrentAutoCapsState(),
+                getCurrentRecapitalizeState());
     }
 
-    private boolean handleNonSpecialCharacter(final int primaryCode, final int x, final int y,
-            final int spaceState) {
-        mSpaceState = SPACE_STATE_NONE;
-        final boolean didAutoCorrect;
-        final SettingsValues settingsValues = mSettings.getCurrent();
-        if (settingsValues.isWordSeparator(primaryCode)
-                || Character.getType(primaryCode) == Character.OTHER_SYMBOL) {
-            didAutoCorrect = handleSeparator(primaryCode, x, y, spaceState);
+    // A helper method to split the code point and the key code. Ultimately, they should not be
+    // squashed into the same variable, and this method should be removed.
+    private static Event createSoftwareKeypressEvent(final int keyCodeOrCodePoint, final int keyX,
+             final int keyY, final boolean isKeyRepeat) {
+        final int keyCode;
+        final int codePoint;
+        if (keyCodeOrCodePoint <= 0) {
+            keyCode = keyCodeOrCodePoint;
+            codePoint = Event.NOT_A_CODE_POINT;
         } else {
-            didAutoCorrect = false;
-            if (SPACE_STATE_PHANTOM == spaceState) {
-                if (settingsValues.mIsInternal) {
-                    if (mWordComposer.isComposingWord() && mWordComposer.isBatchMode()) {
-                        LatinImeLoggerUtils.onAutoCorrection(
-                                "", mWordComposer.getTypedWord(), " ", mWordComposer);
-                    }
-                }
-                if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
-                    // If we are in the middle of a recorrection, we need to commit the recorrection
-                    // first so that we can insert the character at the current cursor position.
-                    resetEntireInputState(mLastSelectionStart);
-                } else {
-                    commitTyped(LastComposedWord.NOT_A_SEPARATOR);
-                }
-            }
-            final int keyX, keyY;
-            final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
-            if (keyboard != null && keyboard.hasProximityCharsCorrection(primaryCode)) {
-                keyX = x;
-                keyY = y;
-            } else {
-                keyX = Constants.NOT_A_COORDINATE;
-                keyY = Constants.NOT_A_COORDINATE;
-            }
-            handleCharacter(primaryCode, keyX, keyY, spaceState);
+            keyCode = Event.NOT_A_KEY_CODE;
+            codePoint = keyCodeOrCodePoint;
         }
-        mExpectingUpdateSelection = true;
-        return didAutoCorrect;
+        return Event.createSoftwareKeypressEvent(codePoint, keyCode, keyX, keyY, isKeyRepeat);
     }
 
     // Called from PointerTracker through the KeyboardActionListener interface
     @Override
     public void onTextInput(final String rawText) {
-        mConnection.beginBatchEdit();
-        if (mWordComposer.isComposingWord()) {
-            commitCurrentAutoCorrection(rawText);
-        } else {
-            resetComposingState(true /* alsoResetLastComposedWord */);
-        }
-        mHandler.postUpdateSuggestionStrip();
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS
-                && ResearchLogger.RESEARCH_KEY_OUTPUT_TEXT.equals(rawText)) {
-            ResearchLogger.getInstance().onResearchKeySelected(this);
-            return;
-        }
-        final String text = specificTldProcessingOnTextInput(rawText);
-        if (SPACE_STATE_PHANTOM == mSpaceState) {
-            promotePhantomSpace();
-        }
-        mConnection.commitText(text, 1);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_onTextInput(text, false /* isBatchMode */);
-        }
-        mConnection.endBatchEdit();
-        // Space state must be updated before calling updateShiftState
-        mSpaceState = SPACE_STATE_NONE;
-        mKeyboardSwitcher.updateShiftState();
-        mKeyboardSwitcher.onCodeInput(Constants.CODE_OUTPUT_TEXT);
-        mEnteredText = text;
+        // TODO: have the keyboard pass the correct key code when we need it.
+        final Event event = Event.createSoftwareTextEvent(rawText, Event.NOT_A_KEY_CODE);
+        final InputTransaction completeInputTransaction =
+                mInputLogic.onTextInput(mSettings.getCurrent(), event,
+                        mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
+        updateStateAfterInputTransaction(completeInputTransaction);
+        mKeyboardSwitcher.onCodeInput(Constants.CODE_OUTPUT_TEXT, getCurrentAutoCapsState(),
+                getCurrentRecapitalizeState());
     }
 
     @Override
     public void onStartBatchInput() {
-        mInputUpdater.onStartBatchInput();
-        mHandler.cancelUpdateSuggestionStrip();
-        mConnection.beginBatchEdit();
-        final SettingsValues settingsValues = mSettings.getCurrent();
-        if (mWordComposer.isComposingWord()) {
-            if (settingsValues.mIsInternal) {
-                if (mWordComposer.isBatchMode()) {
-                    LatinImeLoggerUtils.onAutoCorrection(
-                            "", mWordComposer.getTypedWord(), " ", mWordComposer);
-                }
-            }
-            final int wordComposerSize = mWordComposer.size();
-            // Since isComposingWord() is true, the size is at least 1.
-            if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
-                // If we are in the middle of a recorrection, we need to commit the recorrection
-                // first so that we can insert the batch input at the current cursor position.
-                resetEntireInputState(mLastSelectionStart);
-            } else if (wordComposerSize <= 1) {
-                // We auto-correct the previous (typed, not gestured) string iff it's one character
-                // long. The reason for this is, even in the middle of gesture typing, you'll still
-                // tap one-letter words and you want them auto-corrected (typically, "i" in English
-                // should become "I"). However for any longer word, we assume that the reason for
-                // tapping probably is that the word you intend to type is not in the dictionary,
-                // so we do not attempt to correct, on the assumption that if that was a dictionary
-                // word, the user would probably have gestured instead.
-                commitCurrentAutoCorrection(LastComposedWord.NOT_A_SEPARATOR);
-            } else {
-                commitTyped(LastComposedWord.NOT_A_SEPARATOR);
-            }
-            mExpectingUpdateSelection = true;
-        }
-        final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
-        if (Character.isLetterOrDigit(codePointBeforeCursor)
-                || settingsValues.isUsuallyFollowedBySpace(codePointBeforeCursor)) {
-            mSpaceState = SPACE_STATE_PHANTOM;
-        }
-        mConnection.endBatchEdit();
-        mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
+        mInputLogic.onStartBatchInput(mSettings.getCurrent(), mKeyboardSwitcher, mHandler);
     }
 
-    static final class InputUpdater implements Handler.Callback {
-        private final Handler mHandler;
-        private final LatinIME mLatinIme;
-        private final Object mLock = new Object();
-        private boolean mInBatchInput; // synchronized using {@link #mLock}.
-
-        InputUpdater(final LatinIME latinIme) {
-            final HandlerThread handlerThread = new HandlerThread(
-                    InputUpdater.class.getSimpleName());
-            handlerThread.start();
-            mHandler = new Handler(handlerThread.getLooper(), this);
-            mLatinIme = latinIme;
-        }
-
-        private static final int MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP = 1;
-        private static final int MSG_GET_SUGGESTED_WORDS = 2;
-
-        @Override
-        public boolean handleMessage(final Message msg) {
-            // TODO: straighten message passing - we don't need two kinds of messages calling
-            // each other.
-            switch (msg.what) {
-                case MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP:
-                    updateBatchInput((InputPointers)msg.obj, msg.arg2 /* sequenceNumber */);
-                    break;
-                case MSG_GET_SUGGESTED_WORDS:
-                    mLatinIme.getSuggestedWords(msg.arg1 /* sessionId */,
-                            msg.arg2 /* sequenceNumber */, (OnGetSuggestedWordsCallback) msg.obj);
-                    break;
-            }
-            return true;
-        }
-
-        // Run in the UI thread.
-        public void onStartBatchInput() {
-            synchronized (mLock) {
-                mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
-                mInBatchInput = true;
-                mLatinIme.mHandler.showGesturePreviewAndSuggestionStrip(
-                        SuggestedWords.EMPTY, false /* dismissGestureFloatingPreviewText */);
-            }
-        }
-
-        // Run in the Handler thread.
-        private void updateBatchInput(final InputPointers batchPointers, final int sequenceNumber) {
-            synchronized (mLock) {
-                if (!mInBatchInput) {
-                    // Batch input has ended or canceled while the message was being delivered.
-                    return;
-                }
-
-                getSuggestedWordsGestureLocked(batchPointers, sequenceNumber,
-                        new OnGetSuggestedWordsCallback() {
-                    @Override
-                    public void onGetSuggestedWords(final SuggestedWords suggestedWords) {
-                        mLatinIme.mHandler.showGesturePreviewAndSuggestionStrip(
-                                suggestedWords, false /* dismissGestureFloatingPreviewText */);
-                    }
-                });
-            }
-        }
-
-        // Run in the UI thread.
-        public void onUpdateBatchInput(final InputPointers batchPointers,
-                final int sequenceNumber) {
-            if (mHandler.hasMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP)) {
-                return;
-            }
-            mHandler.obtainMessage(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP, 0 /* arg1 */,
-                    sequenceNumber /* arg2 */, batchPointers /* obj */).sendToTarget();
-        }
-
-        public void onCancelBatchInput() {
-            synchronized (mLock) {
-                mInBatchInput = false;
-                mLatinIme.mHandler.showGesturePreviewAndSuggestionStrip(
-                        SuggestedWords.EMPTY, true /* dismissGestureFloatingPreviewText */);
-            }
-        }
-
-        // Run in the UI thread.
-        public void onEndBatchInput(final InputPointers batchPointers) {
-            synchronized(mLock) {
-                getSuggestedWordsGestureLocked(batchPointers, SuggestedWords.NOT_A_SEQUENCE_NUMBER,
-                        new OnGetSuggestedWordsCallback() {
-                    @Override
-                    public void onGetSuggestedWords(final SuggestedWords suggestedWords) {
-                        mInBatchInput = false;
-                        mLatinIme.mHandler.showGesturePreviewAndSuggestionStrip(suggestedWords,
-                                true /* dismissGestureFloatingPreviewText */);
-                        mLatinIme.mHandler.onEndBatchInput(suggestedWords);
-                    }
-                });
-            }
-        }
-
-        // {@link LatinIME#getSuggestedWords(int)} method calls with same session id have to
-        // be synchronized.
-        private void getSuggestedWordsGestureLocked(final InputPointers batchPointers,
-                final int sequenceNumber, final OnGetSuggestedWordsCallback callback) {
-            mLatinIme.mWordComposer.setBatchInputPointers(batchPointers);
-            mLatinIme.getSuggestedWordsOrOlderSuggestionsAsync(Suggest.SESSION_GESTURE,
-                    sequenceNumber, new OnGetSuggestedWordsCallback() {
-                @Override
-                public void onGetSuggestedWords(SuggestedWords suggestedWords) {
-                    final int suggestionCount = suggestedWords.size();
-                    if (suggestionCount <= 1) {
-                        final String mostProbableSuggestion = (suggestionCount == 0) ? null
-                                : suggestedWords.getWord(0);
-                        callback.onGetSuggestedWords(
-                                mLatinIme.getOlderSuggestions(mostProbableSuggestion));
-                    }
-                    callback.onGetSuggestedWords(suggestedWords);
-                }
-            });
-        }
-
-        public void getSuggestedWords(final int sessionId, final int sequenceNumber,
-                final OnGetSuggestedWordsCallback callback) {
-            mHandler.obtainMessage(MSG_GET_SUGGESTED_WORDS, sessionId, sequenceNumber, callback)
-                    .sendToTarget();
-        }
-
-        void quitLooper() {
-            mHandler.removeMessages(MSG_GET_SUGGESTED_WORDS);
-            mHandler.removeMessages(MSG_UPDATE_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);
-            mHandler.getLooper().quit();
-        }
+    @Override
+    public void onUpdateBatchInput(final InputPointers batchPointers) {
+        mInputLogic.onUpdateBatchInput(mSettings.getCurrent(), batchPointers, mKeyboardSwitcher);
     }
 
-    // This method must run in UI Thread.
+    @Override
+    public void onEndBatchInput(final InputPointers batchPointers) {
+        mInputLogic.onEndBatchInput(batchPointers);
+    }
+
+    @Override
+    public void onCancelBatchInput() {
+        mInputLogic.onCancelBatchInput(mHandler);
+    }
+
+    // This method must run on the UI Thread.
     private void showGesturePreviewAndSuggestionStrip(final SuggestedWords suggestedWords,
             final boolean dismissGestureFloatingPreviewText) {
         showSuggestionStrip(suggestedWords);
@@ -1964,107 +1332,12 @@
         }
     }
 
-    /* The sequence number member is only used in onUpdateBatchInput. It is increased each time
-     * auto-commit happens. The reason we need this is, when auto-commit happens we trim the
-     * input pointers that are held in a singleton, and to know how much to trim we rely on the
-     * results of the suggestion process that is held in mSuggestedWords.
-     * However, the suggestion process is asynchronous, and sometimes we may enter the
-     * onUpdateBatchInput method twice without having recomputed suggestions yet, or having
-     * received new suggestions generated from not-yet-trimmed input pointers. In this case, the
-     * mIndexOfTouchPointOfSecondWords member will be out of date, and we must not use it lest we
-     * remove an unrelated number of pointers (possibly even more than are left in the input
-     * pointers, leading to a crash).
-     * To avoid that, we increase the sequence number each time we auto-commit and trim the
-     * input pointers, and we do not use any suggested words that have been generated with an
-     * earlier sequence number.
-     */
-    private int mAutoCommitSequenceNumber = 1;
-    @Override
-    public void onUpdateBatchInput(final InputPointers batchPointers) {
-        if (mSettings.getCurrent().mPhraseGestureEnabled) {
-            final SuggestedWordInfo candidate = mSuggestedWords.getAutoCommitCandidate();
-            // If these suggested words have been generated with out of date input pointers, then
-            // we skip auto-commit (see comments above on the mSequenceNumber member).
-            if (null != candidate && mSuggestedWords.mSequenceNumber >= mAutoCommitSequenceNumber) {
-                if (candidate.mSourceDict.shouldAutoCommit(candidate)) {
-                    final String[] commitParts = candidate.mWord.split(" ", 2);
-                    batchPointers.shift(candidate.mIndexOfTouchPointOfSecondWord);
-                    promotePhantomSpace();
-                    mConnection.commitText(commitParts[0], 0);
-                    mSpaceState = SPACE_STATE_PHANTOM;
-                    mKeyboardSwitcher.updateShiftState();
-                    mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
-                    ++mAutoCommitSequenceNumber;
-                }
-            }
-        }
-        mInputUpdater.onUpdateBatchInput(batchPointers, mAutoCommitSequenceNumber);
-    }
-
-    // This method must run in UI Thread.
-    public void onEndBatchInputAsyncInternal(final SuggestedWords suggestedWords) {
-        final String batchInputText = suggestedWords.isEmpty()
-                ? null : suggestedWords.getWord(0);
-        if (TextUtils.isEmpty(batchInputText)) {
-            return;
-        }
-        mConnection.beginBatchEdit();
-        if (SPACE_STATE_PHANTOM == mSpaceState) {
-            promotePhantomSpace();
-        }
-        if (mSettings.getCurrent().mPhraseGestureEnabled) {
-            // Find the last space
-            final int indexOfLastSpace = batchInputText.lastIndexOf(Constants.CODE_SPACE) + 1;
-            if (0 != indexOfLastSpace) {
-                mConnection.commitText(batchInputText.substring(0, indexOfLastSpace), 1);
-                showSuggestionStrip(suggestedWords.getSuggestedWordsForLastWordOfPhraseGesture());
-            }
-            final String lastWord = batchInputText.substring(indexOfLastSpace);
-            mWordComposer.setBatchInputWord(lastWord);
-            mConnection.setComposingText(lastWord, 1);
-        } else {
-            mWordComposer.setBatchInputWord(batchInputText);
-            mConnection.setComposingText(batchInputText, 1);
-        }
-        mExpectingUpdateSelection = true;
-        mConnection.endBatchEdit();
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_onEndBatchInput(batchInputText, 0, suggestedWords);
-        }
-        // Space state must be updated before calling updateShiftState
-        mSpaceState = SPACE_STATE_PHANTOM;
-        mKeyboardSwitcher.updateShiftState();
-    }
-
-    @Override
-    public void onEndBatchInput(final InputPointers batchPointers) {
-        mInputUpdater.onEndBatchInput(batchPointers);
-    }
-
-    private String specificTldProcessingOnTextInput(final String text) {
-        if (text.length() <= 1 || text.charAt(0) != Constants.CODE_PERIOD
-                || !Character.isLetter(text.charAt(1))) {
-            // Not a tld: do nothing.
-            return text;
-        }
-        // We have a TLD (or something that looks like this): make sure we don't add
-        // a space even if currently in phantom mode.
-        mSpaceState = SPACE_STATE_NONE;
-        // TODO: use getCodePointBeforeCursor instead to improve performance and simplify the code
-        final CharSequence lastOne = mConnection.getTextBeforeCursor(1, 0);
-        if (lastOne != null && lastOne.length() == 1
-                && lastOne.charAt(0) == Constants.CODE_PERIOD) {
-            return text.substring(1);
-        } else {
-            return text;
-        }
-    }
-
     // Called from PointerTracker through the KeyboardActionListener interface
     @Override
     public void onFinishSlidingInput() {
         // User finished sliding input.
-        mKeyboardSwitcher.onFinishSlidingInput();
+        mKeyboardSwitcher.onFinishSlidingInput(getCurrentAutoCapsState(),
+                getCurrentRecapitalizeState());
     }
 
     // Called from PointerTracker through the KeyboardActionListener interface
@@ -2074,1006 +1347,126 @@
         // Nothing to do so far.
     }
 
+    public boolean hasSuggestionStripView() {
+        return null != mSuggestionStripView;
+    }
+
     @Override
-    public void onCancelBatchInput() {
-        mInputUpdater.onCancelBatchInput();
+    public boolean isShowingAddToDictionaryHint() {
+        return hasSuggestionStripView() && mSuggestionStripView.isShowingAddToDictionaryHint();
     }
 
-    private void handleBackspace(final int spaceState) {
-        // We revert these in this method if the deletion doesn't happen.
-        mDeleteCount++;
-        mExpectingUpdateSelection = true;
-
-        // In many cases, we may have to put the keyboard in auto-shift state again. However
-        // we want to wait a few milliseconds before doing it to avoid the keyboard flashing
-        // during key repeat.
-        mHandler.postUpdateShiftState();
-
-        if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
-            // If we are in the middle of a recorrection, we need to commit the recorrection
-            // first so that we can remove the character at the current cursor position.
-            resetEntireInputState(mLastSelectionStart);
-            // When we exit this if-clause, mWordComposer.isComposingWord() will return false.
+    @Override
+    public void dismissAddToDictionaryHint() {
+        if (!hasSuggestionStripView()) {
+            return;
         }
-        if (mWordComposer.isComposingWord()) {
-            if (mWordComposer.isBatchMode()) {
-                if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                    final String word = mWordComposer.getTypedWord();
-                    ResearchLogger.latinIME_handleBackspace_batch(word, 1);
-                }
-                final String rejectedSuggestion = mWordComposer.getTypedWord();
-                mWordComposer.reset();
-                mWordComposer.setRejectedBatchModeSuggestion(rejectedSuggestion);
-            } else {
-                mWordComposer.deleteLast();
-            }
-            mConnection.setComposingText(getTextWithUnderline(mWordComposer.getTypedWord()), 1);
-            mHandler.postUpdateSuggestionStrip();
-            if (!mWordComposer.isComposingWord()) {
-                // If we just removed the last character, auto-caps mode may have changed so we
-                // need to re-evaluate.
-                mKeyboardSwitcher.updateShiftState();
-            }
-        } else {
-            final SettingsValues currentSettings = mSettings.getCurrent();
-            if (mLastComposedWord.canRevertCommit()) {
-                if (currentSettings.mIsInternal) {
-                    LatinImeLoggerUtils.onAutoCorrectionCancellation();
-                }
-                revertCommit();
-                return;
-            }
-            if (mEnteredText != null && mConnection.sameAsTextBeforeCursor(mEnteredText)) {
-                // Cancel multi-character input: remove the text we just entered.
-                // This is triggered on backspace after a key that inputs multiple characters,
-                // like the smiley key or the .com key.
-                mConnection.deleteSurroundingText(mEnteredText.length(), 0);
-                if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                    ResearchLogger.latinIME_handleBackspace_cancelTextInput(mEnteredText);
-                }
-                mEnteredText = null;
-                // If we have mEnteredText, then we know that mHasUncommittedTypedChars == false.
-                // In addition we know that spaceState is false, and that we should not be
-                // reverting any autocorrect at this point. So we can safely return.
-                return;
-            }
-            if (SPACE_STATE_DOUBLE == spaceState) {
-                mHandler.cancelDoubleSpacePeriodTimer();
-                if (mConnection.revertDoubleSpacePeriod()) {
-                    // No need to reset mSpaceState, it has already be done (that's why we
-                    // receive it as a parameter)
-                    return;
-                }
-            } else if (SPACE_STATE_SWAP_PUNCTUATION == spaceState) {
-                if (mConnection.revertSwapPunctuation()) {
-                    // Likewise
-                    return;
-                }
-            }
-
-            // No cancelling of commit/double space/swap: we have a regular backspace.
-            // We should backspace one char and restart suggestion if at the end of a word.
-            if (mLastSelectionStart != mLastSelectionEnd) {
-                // If there is a selection, remove it.
-                final int numCharsDeleted = mLastSelectionEnd - mLastSelectionStart;
-                mConnection.setSelection(mLastSelectionEnd, mLastSelectionEnd);
-                // Reset mLastSelectionEnd to mLastSelectionStart. This is what is supposed to
-                // happen, and if it's wrong, the next call to onUpdateSelection will correct it,
-                // but we want to set it right away to avoid it being used with the wrong values
-                // later (typically, in a subsequent press on backspace).
-                mLastSelectionEnd = mLastSelectionStart;
-                mConnection.deleteSurroundingText(numCharsDeleted, 0);
-            } else {
-                // There is no selection, just delete one character.
-                if (NOT_A_CURSOR_POSITION == mLastSelectionEnd) {
-                    // This should never happen.
-                    Log.e(TAG, "Backspace when we don't know the selection position");
-                }
-                if (mAppWorkAroundsUtils.isBeforeJellyBean() ||
-                        currentSettings.mInputAttributes.isTypeNull()) {
-                    // There are two possible reasons to send a key event: either the field has
-                    // type TYPE_NULL, in which case the keyboard should send events, or we are
-                    // running in backward compatibility mode. Before Jelly bean, the keyboard
-                    // would simulate a hardware keyboard event on pressing enter or delete. This
-                    // is bad for many reasons (there are race conditions with commits) but some
-                    // applications are relying on this behavior so we continue to support it for
-                    // older apps, so we retain this behavior if the app has target SDK < JellyBean.
-                    sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
-                    if (mDeleteCount > DELETE_ACCELERATE_AT) {
-                        sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
-                    }
-                } else {
-                    final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
-                    if (codePointBeforeCursor == Constants.NOT_A_CODE) {
-                        // Nothing to delete before the cursor. We have to revert the deletion
-                        // states that were updated at the beginning of this method.
-                        mDeleteCount--;
-                        mExpectingUpdateSelection = false;
-                        return;
-                    }
-                    final int lengthToDelete =
-                            Character.isSupplementaryCodePoint(codePointBeforeCursor) ? 2 : 1;
-                    mConnection.deleteSurroundingText(lengthToDelete, 0);
-                    if (mDeleteCount > DELETE_ACCELERATE_AT) {
-                        final int codePointBeforeCursorToDeleteAgain =
-                                mConnection.getCodePointBeforeCursor();
-                        if (codePointBeforeCursorToDeleteAgain != Constants.NOT_A_CODE) {
-                            final int lengthToDeleteAgain = Character.isSupplementaryCodePoint(
-                                   codePointBeforeCursorToDeleteAgain) ? 2 : 1;
-                            mConnection.deleteSurroundingText(lengthToDeleteAgain, 0);
-                        }
-                    }
-                }
-            }
-            if (currentSettings.isSuggestionsRequested(mDisplayOrientation)
-                    && currentSettings.mCurrentLanguageHasSpaces) {
-                restartSuggestionsOnWordBeforeCursorIfAtEndOfWord();
-            }
-            // We just removed a character. We need to update the auto-caps state.
-            mKeyboardSwitcher.updateShiftState();
-        }
+        mSuggestionStripView.dismissAddToDictionaryHint();
     }
 
-    /*
-     * Strip a trailing space if necessary and returns whether it's a swap weak space situation.
-     */
-    private boolean maybeStripSpace(final int code,
-            final int spaceState, final boolean isFromSuggestionStrip) {
-        if (Constants.CODE_ENTER == code && SPACE_STATE_SWAP_PUNCTUATION == spaceState) {
-            mConnection.removeTrailingSpace();
-            return false;
+    private void setSuggestedWords(final SuggestedWords suggestedWords) {
+        mInputLogic.setSuggestedWords(suggestedWords);
+        // TODO: Modify this when we support suggestions with hard keyboard
+        if (!hasSuggestionStripView()) {
+            return;
         }
-        if ((SPACE_STATE_WEAK == spaceState || SPACE_STATE_SWAP_PUNCTUATION == spaceState)
-                && isFromSuggestionStrip) {
-            final SettingsValues currentSettings = mSettings.getCurrent();
-            if (currentSettings.isUsuallyPrecededBySpace(code)) return false;
-            if (currentSettings.isUsuallyFollowedBySpace(code)) return true;
-            mConnection.removeTrailingSpace();
-        }
-        return false;
-    }
-
-    private void handleCharacter(final int primaryCode, final int x,
-            final int y, final int spaceState) {
-        // TODO: refactor this method to stop flipping isComposingWord around all the time, and
-        // make it shorter (possibly cut into several pieces). Also factor handleNonSpecialCharacter
-        // which has the same name as other handle* methods but is not the same.
-        boolean isComposingWord = mWordComposer.isComposingWord();
-
-        // TODO: remove isWordConnector() and use isUsuallyFollowedBySpace() instead.
-        // See onStartBatchInput() to see how to do it.
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        if (SPACE_STATE_PHANTOM == spaceState && !currentSettings.isWordConnector(primaryCode)) {
-            if (isComposingWord) {
-                // Sanity check
-                throw new RuntimeException("Should not be composing here");
-            }
-            promotePhantomSpace();
-        }
-
-        if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
-            // If we are in the middle of a recorrection, we need to commit the recorrection
-            // first so that we can insert the character at the current cursor position.
-            resetEntireInputState(mLastSelectionStart);
-            isComposingWord = false;
-        }
-        // We want to find out whether to start composing a new word with this character. If so,
-        // we need to reset the composing state and switch isComposingWord. The order of the
-        // tests is important for good performance.
-        // We only start composing if we're not already composing.
-        if (!isComposingWord
-        // We only start composing if this is a word code point. Essentially that means it's a
-        // a letter or a word connector.
-                && currentSettings.isWordCodePoint(primaryCode)
-        // We never go into composing state if suggestions are not requested.
-                && currentSettings.isSuggestionsRequested(mDisplayOrientation) &&
-        // In languages with spaces, we only start composing a word when we are not already
-        // touching a word. In languages without spaces, the above conditions are sufficient.
-                (!mConnection.isCursorTouchingWord(currentSettings)
-                        || !currentSettings.mCurrentLanguageHasSpaces)) {
-            // Reset entirely the composing state anyway, then start composing a new word unless
-            // the character is a single quote or a dash. The idea here is, single quote and dash
-            // are not separators and they should be treated as normal characters, except in the
-            // first position where they should not start composing a word.
-            isComposingWord = (Constants.CODE_SINGLE_QUOTE != primaryCode
-                    && Constants.CODE_DASH != primaryCode);
-            // Here we don't need to reset the last composed word. It will be reset
-            // when we commit this one, if we ever do; if on the other hand we backspace
-            // it entirely and resume suggestions on the previous word, we'd like to still
-            // have touch coordinates for it.
-            resetComposingState(false /* alsoResetLastComposedWord */);
-        }
-        if (isComposingWord) {
-            final int keyX, keyY;
-            if (Constants.isValidCoordinate(x) && Constants.isValidCoordinate(y)) {
-                final KeyDetector keyDetector =
-                        mKeyboardSwitcher.getMainKeyboardView().getKeyDetector();
-                keyX = keyDetector.getTouchX(x);
-                keyY = keyDetector.getTouchY(y);
-            } else {
-                keyX = x;
-                keyY = y;
-            }
-            mWordComposer.add(primaryCode, keyX, keyY);
-            // If it's the first letter, make note of auto-caps state
-            if (mWordComposer.size() == 1) {
-                mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode());
-            }
-            mConnection.setComposingText(getTextWithUnderline(mWordComposer.getTypedWord()), 1);
-        } else {
-            final boolean swapWeakSpace = maybeStripSpace(primaryCode,
-                    spaceState, Constants.SUGGESTION_STRIP_COORDINATE == x);
-
-            sendKeyCodePoint(primaryCode);
-
-            if (swapWeakSpace) {
-                swapSwapperAndSpace();
-                mSpaceState = SPACE_STATE_WEAK;
-            }
-            // In case the "add to dictionary" hint was still displayed.
-            if (null != mSuggestionStripView) mSuggestionStripView.dismissAddToDictionaryHint();
-        }
-        mHandler.postUpdateSuggestionStrip();
-        if (currentSettings.mIsInternal) {
-            LatinImeLoggerUtils.onNonSeparator((char)primaryCode, x, y);
-        }
-    }
-
-    private void handleRecapitalize() {
-        if (mLastSelectionStart == mLastSelectionEnd) return; // No selection
-        // If we have a recapitalize in progress, use it; otherwise, create a new one.
-        if (!mRecapitalizeStatus.isActive()
-                || !mRecapitalizeStatus.isSetAt(mLastSelectionStart, mLastSelectionEnd)) {
-            final CharSequence selectedText =
-                    mConnection.getSelectedText(0 /* flags, 0 for no styles */);
-            if (TextUtils.isEmpty(selectedText)) return; // Race condition with the input connection
-            final SettingsValues currentSettings = mSettings.getCurrent();
-            mRecapitalizeStatus.initialize(mLastSelectionStart, mLastSelectionEnd,
-                    selectedText.toString(), currentSettings.mLocale,
-                    currentSettings.mWordSeparators);
-            // We trim leading and trailing whitespace.
-            mRecapitalizeStatus.trim();
-            // Trimming the object may have changed the length of the string, and we need to
-            // reposition the selection handles accordingly. As this result in an IPC call,
-            // only do it if it's actually necessary, in other words if the recapitalize status
-            // is not set at the same place as before.
-            if (!mRecapitalizeStatus.isSetAt(mLastSelectionStart, mLastSelectionEnd)) {
-                mLastSelectionStart = mRecapitalizeStatus.getNewCursorStart();
-                mLastSelectionEnd = mRecapitalizeStatus.getNewCursorEnd();
-            }
-        }
-        mConnection.finishComposingText();
-        mRecapitalizeStatus.rotate();
-        final int numCharsDeleted = mLastSelectionEnd - mLastSelectionStart;
-        mConnection.setSelection(mLastSelectionEnd, mLastSelectionEnd);
-        mConnection.deleteSurroundingText(numCharsDeleted, 0);
-        mConnection.commitText(mRecapitalizeStatus.getRecapitalizedString(), 0);
-        mLastSelectionStart = mRecapitalizeStatus.getNewCursorStart();
-        mLastSelectionEnd = mRecapitalizeStatus.getNewCursorEnd();
-        mConnection.setSelection(mLastSelectionStart, mLastSelectionEnd);
-        // Match the keyboard to the new state.
-        mKeyboardSwitcher.updateShiftState();
-    }
-
-    // Returns true if we do an autocorrection, false otherwise.
-    private boolean handleSeparator(final int primaryCode, final int x, final int y,
-            final int spaceState) {
-        boolean didAutoCorrect = false;
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        // We avoid sending spaces in languages without spaces if we were composing.
-        final boolean shouldAvoidSendingCode = Constants.CODE_SPACE == primaryCode
-                && !currentSettings.mCurrentLanguageHasSpaces && mWordComposer.isComposingWord();
-        if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
-            // If we are in the middle of a recorrection, we need to commit the recorrection
-            // first so that we can insert the separator at the current cursor position.
-            resetEntireInputState(mLastSelectionStart);
-        }
-        if (mWordComposer.isComposingWord()) { // May have changed since we stored wasComposing
-            if (currentSettings.mCorrectionEnabled) {
-                final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR
-                        : StringUtils.newSingleCodePointString(primaryCode);
-                commitCurrentAutoCorrection(separator);
-                didAutoCorrect = true;
-            } else {
-                commitTyped(StringUtils.newSingleCodePointString(primaryCode));
-            }
-        }
-
-        final boolean swapWeakSpace = maybeStripSpace(primaryCode, spaceState,
-                Constants.SUGGESTION_STRIP_COORDINATE == x);
-
-        if (SPACE_STATE_PHANTOM == spaceState &&
-                currentSettings.isUsuallyPrecededBySpace(primaryCode)) {
-            promotePhantomSpace();
-        }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_handleSeparator(primaryCode, mWordComposer.isComposingWord());
-        }
-
-        if (!shouldAvoidSendingCode) {
-            sendKeyCodePoint(primaryCode);
-        }
-
-        if (Constants.CODE_SPACE == primaryCode) {
-            if (currentSettings.isSuggestionsRequested(mDisplayOrientation)) {
-                if (maybeDoubleSpacePeriod()) {
-                    mSpaceState = SPACE_STATE_DOUBLE;
-                } else if (!isShowingPunctuationList()) {
-                    mSpaceState = SPACE_STATE_WEAK;
-                }
-            }
-
-            mHandler.startDoubleSpacePeriodTimer();
-            mHandler.postUpdateSuggestionStrip();
-        } else {
-            if (swapWeakSpace) {
-                swapSwapperAndSpace();
-                mSpaceState = SPACE_STATE_SWAP_PUNCTUATION;
-            } else if (SPACE_STATE_PHANTOM == spaceState
-                    && currentSettings.isUsuallyFollowedBySpace(primaryCode)) {
-                // If we are in phantom space state, and the user presses a separator, we want to
-                // stay in phantom space state so that the next keypress has a chance to add the
-                // space. For example, if I type "Good dat", pick "day" from the suggestion strip
-                // then insert a comma and go on to typing the next word, I want the space to be
-                // inserted automatically before the next word, the same way it is when I don't
-                // input the comma.
-                // The case is a little different if the separator is a space stripper. Such a
-                // separator does not normally need a space on the right (that's the difference
-                // between swappers and strippers), so we should not stay in phantom space state if
-                // the separator is a stripper. Hence the additional test above.
-                mSpaceState = SPACE_STATE_PHANTOM;
-            }
-
-            // Set punctuation right away. onUpdateSelection will fire but tests whether it is
-            // already displayed or not, so it's okay.
-            setPunctuationSuggestions();
-        }
-        if (currentSettings.mIsInternal) {
-            LatinImeLoggerUtils.onSeparator((char)primaryCode, x, y);
-        }
-
-        mKeyboardSwitcher.updateShiftState();
-        return didAutoCorrect;
-    }
-
-    private CharSequence getTextWithUnderline(final String text) {
-        return mIsAutoCorrectionIndicatorOn
-                ? SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline(this, text)
-                : text;
-    }
-
-    private void handleClose() {
-        // TODO: Verify that words are logged properly when IME is closed.
-        commitTyped(LastComposedWord.NOT_A_SEPARATOR);
-        requestHideSelf(0);
-        final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
-        if (mainKeyboardView != null) {
-            mainKeyboardView.closing();
-        }
-    }
-
-    // TODO: make this private
-    // Outside LatinIME, only used by the test suite.
-    @UsedForTesting
-    boolean isShowingPunctuationList() {
-        if (mSuggestedWords == null) return false;
-        return mSettings.getCurrent().mSuggestPuncList == mSuggestedWords;
-    }
-
-    private boolean isSuggestionsStripVisible() {
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        if (mSuggestionStripView == null)
-            return false;
-        if (mSuggestionStripView.isShowingAddToDictionaryHint())
-            return true;
-        if (null == currentSettings)
-            return false;
-        if (!currentSettings.isSuggestionStripVisibleInOrientation(mDisplayOrientation))
-            return false;
-        if (currentSettings.isApplicationSpecifiedCompletionsOn())
-            return true;
-        return currentSettings.isSuggestionsRequested(mDisplayOrientation);
-    }
-
-    private void clearSuggestionStrip() {
-        setSuggestedWords(SuggestedWords.EMPTY, false);
-        setAutoCorrectionIndicator(false);
-    }
-
-    private void setSuggestedWords(final SuggestedWords words, final boolean isAutoCorrection) {
-        mSuggestedWords = words;
-        if (mSuggestionStripView != null) {
-            mSuggestionStripView.setSuggestions(words);
-            mKeyboardSwitcher.onAutoCorrectionStateChanged(isAutoCorrection);
-        }
-    }
-
-    private void setAutoCorrectionIndicator(final boolean newAutoCorrectionIndicator) {
-        // Put a blue underline to a word in TextView which will be auto-corrected.
-        if (mIsAutoCorrectionIndicatorOn != newAutoCorrectionIndicator
-                && mWordComposer.isComposingWord()) {
-            mIsAutoCorrectionIndicatorOn = newAutoCorrectionIndicator;
-            final CharSequence textWithUnderline =
-                    getTextWithUnderline(mWordComposer.getTypedWord());
-            // TODO: when called from an updateSuggestionStrip() call that results from a posted
-            // message, this is called outside any batch edit. Potentially, this may result in some
-            // janky flickering of the screen, although the display speed makes it unlikely in
-            // the practice.
-            mConnection.setComposingText(textWithUnderline, 1);
-        }
-    }
-
-    private void updateSuggestionStrip() {
-        mHandler.cancelUpdateSuggestionStrip();
-        final SettingsValues currentSettings = mSettings.getCurrent();
-
-        // Check if we have a suggestion engine attached.
-        if (mSuggest == null
-                || !currentSettings.isSuggestionsRequested(mDisplayOrientation)) {
-            if (mWordComposer.isComposingWord()) {
-                Log.w(TAG, "Called updateSuggestionsOrPredictions but suggestions were not "
-                        + "requested!");
-            }
+        if (!onEvaluateInputViewShown()) {
             return;
         }
 
-        if (!mWordComposer.isComposingWord() && !currentSettings.mBigramPredictionEnabled) {
-            setPunctuationSuggestions();
+        final SettingsValues currentSettingsValues = mSettings.getCurrent();
+        final boolean shouldShowImportantNotice =
+                ImportantNoticeUtils.shouldShowImportantNotice(this);
+        final boolean shouldShowSuggestionCandidates =
+                currentSettingsValues.mInputAttributes.mShouldShowSuggestions
+                && currentSettingsValues.isCurrentOrientationAllowingSuggestionsPerUserSettings();
+        final boolean shouldShowSuggestionsStripUnlessPassword = shouldShowImportantNotice
+                || currentSettingsValues.mShowsVoiceInputKey
+                || shouldShowSuggestionCandidates
+                || currentSettingsValues.isApplicationSpecifiedCompletionsOn();
+        final boolean shouldShowSuggestionsStrip = shouldShowSuggestionsStripUnlessPassword
+                && !currentSettingsValues.mInputAttributes.mIsPasswordField;
+        mSuggestionStripView.updateVisibility(shouldShowSuggestionsStrip, isFullscreenMode());
+        if (!shouldShowSuggestionsStrip) {
             return;
         }
 
-        final AsyncResultHolder<SuggestedWords> holder = new AsyncResultHolder<SuggestedWords>();
-        getSuggestedWordsOrOlderSuggestionsAsync(Suggest.SESSION_TYPING,
-                SuggestedWords.NOT_A_SEQUENCE_NUMBER, new OnGetSuggestedWordsCallback() {
-                    @Override
-                    public void onGetSuggestedWords(final SuggestedWords suggestedWords) {
-                        holder.set(suggestedWords);
-                    }
-                }
-        );
+        final boolean isEmptyApplicationSpecifiedCompletions =
+                currentSettingsValues.isApplicationSpecifiedCompletionsOn()
+                && suggestedWords.isEmpty();
+        final boolean noSuggestionsToShow = (SuggestedWords.EMPTY == suggestedWords)
+                || suggestedWords.isPunctuationSuggestions()
+                || isEmptyApplicationSpecifiedCompletions;
+        if (shouldShowImportantNotice && noSuggestionsToShow) {
+            if (mSuggestionStripView.maybeShowImportantNoticeTitle()) {
+                return;
+            }
+        }
 
-        // This line may cause the current thread to wait.
-        final SuggestedWords suggestedWords = holder.get(null, GET_SUGGESTED_WORDS_TIMEOUT);
-        if (suggestedWords != null) {
-            showSuggestionStrip(suggestedWords);
+        if (currentSettingsValues.isCurrentOrientationAllowingSuggestionsPerUserSettings()
+                // We should clear suggestions if there is no suggestion to show.
+                || noSuggestionsToShow
+                || currentSettingsValues.isApplicationSpecifiedCompletionsOn()) {
+            mSuggestionStripView.setSuggestions(suggestedWords,
+                    SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype()));
         }
     }
 
-    private void getSuggestedWords(final int sessionId, final int sequenceNumber,
+    // TODO[IL]: Move this out of LatinIME.
+    public void getSuggestedWords(final int sessionId, final int sequenceNumber,
             final OnGetSuggestedWordsCallback callback) {
         final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
-        final Suggest suggest = mSuggest;
-        if (keyboard == null || suggest == null) {
+        if (keyboard == null) {
             callback.onGetSuggestedWords(SuggestedWords.EMPTY);
             return;
         }
-        // Get the word on which we should search the bigrams. If we are composing a word, it's
-        // whatever is *before* the half-committed word in the buffer, hence 2; if we aren't, we
-        // should just skip whitespace if any, so 1.
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        final int[] additionalFeaturesOptions = currentSettings.mAdditionalFeaturesSettingValues;
-        final String prevWord;
-        if (currentSettings.mCurrentLanguageHasSpaces) {
-            // If we are typing in a language with spaces we can just look up the previous
-            // word from textview.
-            prevWord = mConnection.getNthPreviousWord(currentSettings.mWordSeparators,
-                    mWordComposer.isComposingWord() ? 2 : 1);
+        mInputLogic.getSuggestedWords(mSettings.getCurrent(), keyboard.getProximityInfo(),
+                mKeyboardSwitcher.getKeyboardShiftMode(), sessionId, sequenceNumber, callback);
+    }
+
+    @Override
+    public void showSuggestionStrip(final SuggestedWords sourceSuggestedWords) {
+        final SuggestedWords suggestedWords =
+                sourceSuggestedWords.isEmpty() ? SuggestedWords.EMPTY : sourceSuggestedWords;
+        if (SuggestedWords.EMPTY == suggestedWords) {
+            setNeutralSuggestionStrip();
         } else {
-            prevWord = LastComposedWord.NOT_A_COMPOSED_WORD == mLastComposedWord ? null
-                    : mLastComposedWord.mCommittedWord;
+            setSuggestedWords(suggestedWords);
         }
-        suggest.getSuggestedWords(mWordComposer, prevWord, keyboard.getProximityInfo(),
-                currentSettings.mBlockPotentiallyOffensive, currentSettings.mCorrectionEnabled,
-                additionalFeaturesOptions, sessionId, sequenceNumber, callback);
-    }
-
-    private void getSuggestedWordsOrOlderSuggestionsAsync(final int sessionId,
-            final int sequenceNumber, final OnGetSuggestedWordsCallback callback) {
-        mInputUpdater.getSuggestedWords(sessionId, sequenceNumber,
-                new OnGetSuggestedWordsCallback() {
-                    @Override
-                    public void onGetSuggestedWords(SuggestedWords suggestedWords) {
-                        callback.onGetSuggestedWords(maybeRetrieveOlderSuggestions(
-                                mWordComposer.getTypedWord(), suggestedWords));
-                    }
-                });
-    }
-
-    private SuggestedWords maybeRetrieveOlderSuggestions(final String typedWord,
-            final SuggestedWords suggestedWords) {
-        // TODO: consolidate this into getSuggestedWords
-        // We update the suggestion strip only when we have some suggestions to show, i.e. when
-        // the suggestion count is > 1; else, we leave the old suggestions, with the typed word
-        // replaced with the new one. However, when the word is a dictionary word, or when the
-        // length of the typed word is 1 or 0 (after a deletion typically), we do want to remove the
-        // old suggestions. Also, if we are showing the "add to dictionary" hint, we need to
-        // revert to suggestions - although it is unclear how we can come here if it's displayed.
-        if (suggestedWords.size() > 1 || typedWord.length() <= 1
-                || suggestedWords.mTypedWordValid || null == mSuggestionStripView
-                || mSuggestionStripView.isShowingAddToDictionaryHint()) {
-            return suggestedWords;
-        } else {
-            return getOlderSuggestions(typedWord);
-        }
-    }
-
-    private SuggestedWords getOlderSuggestions(final String typedWord) {
-        SuggestedWords previousSuggestedWords = mSuggestedWords;
-        if (previousSuggestedWords == mSettings.getCurrent().mSuggestPuncList) {
-            previousSuggestedWords = SuggestedWords.EMPTY;
-        }
-        if (typedWord == null) {
-            return previousSuggestedWords;
-        }
-        final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
-                SuggestedWords.getTypedWordAndPreviousSuggestions(typedWord,
-                        previousSuggestedWords);
-        return new SuggestedWords(typedWordAndPreviousSuggestions,
-                false /* typedWordValid */,
-                false /* hasAutoCorrectionCandidate */,
-                false /* isPunctuationSuggestions */,
-                true /* isObsoleteSuggestions */,
-                false /* isPrediction */);
-    }
-
-    private void setAutoCorrection(final SuggestedWords suggestedWords, final String typedWord) {
-        if (suggestedWords.isEmpty()) return;
-        final String autoCorrection;
-        if (suggestedWords.mWillAutoCorrect) {
-            autoCorrection = suggestedWords.getWord(SuggestedWords.INDEX_OF_AUTO_CORRECTION);
-        } else {
-            // We can't use suggestedWords.getWord(SuggestedWords.INDEX_OF_TYPED_WORD)
-            // because it may differ from mWordComposer.mTypedWord.
-            autoCorrection = typedWord;
-        }
-        mWordComposer.setAutoCorrection(autoCorrection);
-    }
-
-    private void showSuggestionStripWithTypedWord(final SuggestedWords suggestedWords,
-            final String typedWord) {
-      if (suggestedWords.isEmpty()) {
-          // No auto-correction is available, clear the cached values.
-          AccessibilityUtils.getInstance().setAutoCorrection(null, null);
-          clearSuggestionStrip();
-          return;
-      }
-      setAutoCorrection(suggestedWords, typedWord);
-      final boolean isAutoCorrection = suggestedWords.willAutoCorrect();
-      setSuggestedWords(suggestedWords, isAutoCorrection);
-      setAutoCorrectionIndicator(isAutoCorrection);
-      setSuggestionStripShown(isSuggestionsStripVisible());
-      // An auto-correction is available, cache it in accessibility code so
-      // we can be speak it if the user touches a key that will insert it.
-      AccessibilityUtils.getInstance().setAutoCorrection(suggestedWords, typedWord);
-    }
-
-    private void showSuggestionStrip(final SuggestedWords suggestedWords) {
-        if (suggestedWords.isEmpty()) {
-            clearSuggestionStrip();
-            return;
-        }
-        showSuggestionStripWithTypedWord(suggestedWords,
-            suggestedWords.getWord(SuggestedWords.INDEX_OF_TYPED_WORD));
-    }
-
-    private void commitCurrentAutoCorrection(final String separator) {
-        // Complete any pending suggestions query first
-        if (mHandler.hasPendingUpdateSuggestions()) {
-            updateSuggestionStrip();
-        }
-        final String typedAutoCorrection = mWordComposer.getAutoCorrectionOrNull();
-        final String typedWord = mWordComposer.getTypedWord();
-        final String autoCorrection = (typedAutoCorrection != null)
-                ? typedAutoCorrection : typedWord;
-        if (autoCorrection != null) {
-            if (TextUtils.isEmpty(typedWord)) {
-                throw new RuntimeException("We have an auto-correction but the typed word "
-                        + "is empty? Impossible! I must commit suicide.");
-            }
-            if (mSettings.isInternal()) {
-                LatinImeLoggerUtils.onAutoCorrection(
-                        typedWord, autoCorrection, separator, mWordComposer);
-            }
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                final SuggestedWords suggestedWords = mSuggestedWords;
-                ResearchLogger.latinIme_commitCurrentAutoCorrection(typedWord, autoCorrection,
-                        separator, mWordComposer.isBatchMode(), suggestedWords);
-            }
-            mExpectingUpdateSelection = true;
-            commitChosenWord(autoCorrection, LastComposedWord.COMMIT_TYPE_DECIDED_WORD,
-                    separator);
-            if (!typedWord.equals(autoCorrection)) {
-                // This will make the correction flash for a short while as a visual clue
-                // to the user that auto-correction happened. It has no other effect; in particular
-                // note that this won't affect the text inside the text field AT ALL: it only makes
-                // the segment of text starting at the supplied index and running for the length
-                // of the auto-correction flash. At this moment, the "typedWord" argument is
-                // ignored by TextView.
-                mConnection.commitCorrection(
-                        new CorrectionInfo(mLastSelectionEnd - typedWord.length(),
-                        typedWord, autoCorrection));
-            }
-        }
+        // Cache the auto-correction in accessibility code so we can speak it if the user
+        // touches a key that will insert it.
+        AccessibilityUtils.getInstance().setAutoCorrection(suggestedWords,
+                sourceSuggestedWords.mTypedWord);
     }
 
     // Called from {@link SuggestionStripView} through the {@link SuggestionStripView#Listener}
     // interface
     @Override
-    public void pickSuggestionManually(final int index, final SuggestedWordInfo suggestionInfo) {
-        final SuggestedWords suggestedWords = mSuggestedWords;
-        final String suggestion = suggestionInfo.mWord;
-        // If this is a punctuation picked from the suggestion strip, pass it to onCodeInput
-        if (suggestion.length() == 1 && isShowingPunctuationList()) {
-            // Word separators are suggested before the user inputs something.
-            // So, LatinImeLogger logs "" as a user's input.
-            LatinImeLogger.logOnManualSuggestion("", suggestion, index, suggestedWords);
-            // Rely on onCodeInput to do the complicated swapping/stripping logic consistently.
-            final int primaryCode = suggestion.charAt(0);
-            onCodeInput(primaryCode,
-                    Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.latinIME_punctuationSuggestion(index, suggestion,
-                        false /* isBatchMode */, suggestedWords.mIsPrediction);
-            }
+    public void pickSuggestionManually(final SuggestedWordInfo suggestionInfo) {
+        final InputTransaction completeInputTransaction = mInputLogic.onPickSuggestionManually(
+                mSettings.getCurrent(), suggestionInfo,
+                mKeyboardSwitcher.getKeyboardShiftMode(),
+                mKeyboardSwitcher.getCurrentKeyboardScriptId(),
+                mHandler);
+        updateStateAfterInputTransaction(completeInputTransaction);
+    }
+
+    @Override
+    public void showAddToDictionaryHint(final String word) {
+        if (!hasSuggestionStripView()) {
             return;
         }
+        mSuggestionStripView.showAddToDictionaryHint(word);
+    }
 
-        mConnection.beginBatchEdit();
+    // This will show either an empty suggestion strip (if prediction is enabled) or
+    // punctuation suggestions (if it's disabled).
+    @Override
+    public void setNeutralSuggestionStrip() {
         final SettingsValues currentSettings = mSettings.getCurrent();
-        if (SPACE_STATE_PHANTOM == mSpaceState && suggestion.length() > 0
-                // In the batch input mode, a manually picked suggested word should just replace
-                // the current batch input text and there is no need for a phantom space.
-                && !mWordComposer.isBatchMode()) {
-            final int firstChar = Character.codePointAt(suggestion, 0);
-            if (!currentSettings.isWordSeparator(firstChar)
-                    || currentSettings.isUsuallyPrecededBySpace(firstChar)) {
-                promotePhantomSpace();
-            }
-        }
-
-        if (currentSettings.isApplicationSpecifiedCompletionsOn()
-                && mApplicationSpecifiedCompletions != null
-                && index >= 0 && index < mApplicationSpecifiedCompletions.length) {
-            mSuggestedWords = SuggestedWords.EMPTY;
-            if (mSuggestionStripView != null) {
-                mSuggestionStripView.clear();
-            }
-            mKeyboardSwitcher.updateShiftState();
-            resetComposingState(true /* alsoResetLastComposedWord */);
-            final CompletionInfo completionInfo = mApplicationSpecifiedCompletions[index];
-            mConnection.commitCompletion(completionInfo);
-            mConnection.endBatchEdit();
-            return;
-        }
-
-        // We need to log before we commit, because the word composer will store away the user
-        // typed word.
-        final String replacedWord = mWordComposer.getTypedWord();
-        LatinImeLogger.logOnManualSuggestion(replacedWord, suggestion, index, suggestedWords);
-        mExpectingUpdateSelection = true;
-        commitChosenWord(suggestion, LastComposedWord.COMMIT_TYPE_MANUAL_PICK,
-                LastComposedWord.NOT_A_SEPARATOR);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_pickSuggestionManually(replacedWord, index, suggestion,
-                    mWordComposer.isBatchMode(), suggestionInfo.mScore, suggestionInfo.mKind,
-                    suggestionInfo.mSourceDict.mDictType);
-        }
-        mConnection.endBatchEdit();
-        // Don't allow cancellation of manual pick
-        mLastComposedWord.deactivate();
-        // Space state must be updated before calling updateShiftState
-        mSpaceState = SPACE_STATE_PHANTOM;
-        mKeyboardSwitcher.updateShiftState();
-
-        // We should show the "Touch again to save" hint if the user pressed the first entry
-        // AND it's in none of our current dictionaries (main, user or otherwise).
-        // Please note that if mSuggest is null, it means that everything is off: suggestion
-        // and correction, so we shouldn't try to show the hint
-        final Suggest suggest = mSuggest;
-        final boolean showingAddToDictionaryHint =
-                (SuggestedWordInfo.KIND_TYPED == suggestionInfo.mKind
-                        || SuggestedWordInfo.KIND_OOV_CORRECTION == suggestionInfo.mKind)
-                        && suggest != null
-                        // If the suggestion is not in the dictionary, the hint should be shown.
-                        && !AutoCorrectionUtils.isValidWord(suggest, suggestion, true);
-
-        if (currentSettings.mIsInternal) {
-            LatinImeLoggerUtils.onSeparator((char)Constants.CODE_SPACE,
-                    Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
-        }
-        if (showingAddToDictionaryHint && mIsUserDictionaryAvailable) {
-            mSuggestionStripView.showAddToDictionaryHint(
-                    suggestion, currentSettings.mHintToSaveText);
-        } else {
-            // If we're not showing the "Touch again to save", then update the suggestion strip.
-            mHandler.postUpdateSuggestionStrip();
-        }
-    }
-
-    /**
-     * Commits the chosen word to the text field and saves it for later retrieval.
-     */
-    private void commitChosenWord(final String chosenWord, final int commitType,
-            final String separatorString) {
-        final SuggestedWords suggestedWords = mSuggestedWords;
-        mConnection.commitText(SuggestionSpanUtils.getTextWithSuggestionSpan(
-                this, chosenWord, suggestedWords, mIsMainDictionaryAvailable), 1);
-        // Add the word to the user history dictionary
-        final String prevWord = addToUserHistoryDictionary(chosenWord);
-        // TODO: figure out here if this is an auto-correct or if the best word is actually
-        // what user typed. Note: currently this is done much later in
-        // LastComposedWord#didCommitTypedWord by string equality of the remembered
-        // strings.
-        mLastComposedWord = mWordComposer.commitWord(commitType, chosenWord, separatorString,
-                prevWord);
-    }
-
-    private void setPunctuationSuggestions() {
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        if (currentSettings.mBigramPredictionEnabled) {
-            clearSuggestionStrip();
-        } else {
-            setSuggestedWords(currentSettings.mSuggestPuncList, false);
-        }
-        setAutoCorrectionIndicator(false);
-        setSuggestionStripShown(isSuggestionsStripVisible());
-    }
-
-    private String addToUserHistoryDictionary(final String suggestion) {
-        if (TextUtils.isEmpty(suggestion)) return null;
-        final Suggest suggest = mSuggest;
-        if (suggest == null) return null;
-
-        // If correction is not enabled, we don't add words to the user history dictionary.
-        // That's to avoid unintended additions in some sensitive fields, or fields that
-        // expect to receive non-words.
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        if (!currentSettings.mCorrectionEnabled) return null;
-
-        final UserHistoryDictionary userHistoryDictionary = mUserHistoryDictionary;
-        if (userHistoryDictionary == null) return null;
-
-        final String prevWord = mConnection.getNthPreviousWord(currentSettings.mWordSeparators, 2);
-        final String secondWord;
-        if (mWordComposer.wasAutoCapitalized() && !mWordComposer.isMostlyCaps()) {
-            secondWord = suggestion.toLowerCase(mSubtypeSwitcher.getCurrentSubtypeLocale());
-        } else {
-            secondWord = suggestion;
-        }
-        // We demote unrecognized words (frequency < 0, below) by specifying them as "invalid".
-        // We don't add words with 0-frequency (assuming they would be profanity etc.).
-        final int maxFreq = AutoCorrectionUtils.getMaxFrequency(
-                suggest.getUnigramDictionaries(), suggestion);
-        if (maxFreq == 0) return null;
-        userHistoryDictionary.addToDictionary(prevWord, secondWord, maxFreq > 0);
-        return prevWord;
-    }
-
-    private boolean isResumableWord(final String word, final SettingsValues settings) {
-        final int firstCodePoint = word.codePointAt(0);
-        return settings.isWordCodePoint(firstCodePoint)
-                && Constants.CODE_SINGLE_QUOTE != firstCodePoint
-                && Constants.CODE_DASH != firstCodePoint;
-    }
-
-    /**
-     * Check if the cursor is touching a word. If so, restart suggestions on this word, else
-     * do nothing.
-     */
-    private void restartSuggestionsOnWordTouchedByCursor() {
-        // HACK: We may want to special-case some apps that exhibit bad behavior in case of
-        // recorrection. This is a temporary, stopgap measure that will be removed later.
-        // TODO: remove this.
-        if (mAppWorkAroundsUtils.isBrokenByRecorrection()) return;
-        // A simple way to test for support from the TextView.
-        if (!isSuggestionsStripVisible()) return;
-        // Recorrection is not supported in languages without spaces because we don't know
-        // how to segment them yet.
-        if (!mSettings.getCurrent().mCurrentLanguageHasSpaces) return;
-        // If the cursor is not touching a word, or if there is a selection, return right away.
-        if (mLastSelectionStart != mLastSelectionEnd) return;
-        // If we don't know the cursor location, return.
-        if (mLastSelectionStart < 0) return;
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        if (!mConnection.isCursorTouchingWord(currentSettings)) return;
-        final TextRange range = mConnection.getWordRangeAtCursor(currentSettings.mWordSeparators,
-                0 /* additionalPrecedingWordsCount */);
-        if (null == range) return; // Happens if we don't have an input connection at all
-        if (range.length() <= 0) return; // Race condition. No text to resume on, so bail out.
-        // If for some strange reason (editor bug or so) we measure the text before the cursor as
-        // longer than what the entire text is supposed to be, the safe thing to do is bail out.
-        final int numberOfCharsInWordBeforeCursor = range.getNumberOfCharsInWordBeforeCursor();
-        if (numberOfCharsInWordBeforeCursor > mLastSelectionStart) return;
-        final ArrayList<SuggestedWordInfo> suggestions = CollectionUtils.newArrayList();
-        final String typedWord = range.mWord.toString();
-        if (!isResumableWord(typedWord, currentSettings)) return;
-        int i = 0;
-        for (final SuggestionSpan span : range.getSuggestionSpansAtWord()) {
-            for (final String s : span.getSuggestions()) {
-                ++i;
-                if (!TextUtils.equals(s, typedWord)) {
-                    suggestions.add(new SuggestedWordInfo(s,
-                            SuggestionStripView.MAX_SUGGESTIONS - i,
-                            SuggestedWordInfo.KIND_RESUMED, Dictionary.DICTIONARY_RESUMED,
-                            SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                            SuggestedWordInfo.NOT_A_CONFIDENCE
-                                    /* autoCommitFirstWordConfidence */));
-                }
-            }
-        }
-        mWordComposer.setComposingWord(typedWord, mKeyboardSwitcher.getKeyboard());
-        mWordComposer.setCursorPositionWithinWord(
-                typedWord.codePointCount(0, numberOfCharsInWordBeforeCursor));
-        mConnection.setComposingRegion(
-                mLastSelectionStart - numberOfCharsInWordBeforeCursor,
-                mLastSelectionEnd + range.getNumberOfCharsInWordAfterCursor());
-        if (suggestions.isEmpty()) {
-            // We come here if there weren't any suggestion spans on this word. We will try to
-            // compute suggestions for it instead.
-            mInputUpdater.getSuggestedWords(Suggest.SESSION_TYPING,
-                    SuggestedWords.NOT_A_SEQUENCE_NUMBER, new OnGetSuggestedWordsCallback() {
-                        @Override
-                        public void onGetSuggestedWords(
-                                final SuggestedWords suggestedWordsIncludingTypedWord) {
-                            final SuggestedWords suggestedWords;
-                            if (suggestedWordsIncludingTypedWord.size() > 1) {
-                                // We were able to compute new suggestions for this word.
-                                // Remove the typed word, since we don't want to display it in this
-                                // case. The #getSuggestedWordsExcludingTypedWord() method sets
-                                // willAutoCorrect to false.
-                                suggestedWords = suggestedWordsIncludingTypedWord
-                                        .getSuggestedWordsExcludingTypedWord();
-                            } else {
-                                // No saved suggestions, and we were unable to compute any good one
-                                // either. Rather than displaying an empty suggestion strip, we'll
-                                // display the original word alone in the middle.
-                                // Since there is only one word, willAutoCorrect is false.
-                                suggestedWords = suggestedWordsIncludingTypedWord;
-                            }
-                            // We need to pass typedWord because mWordComposer.mTypedWord may
-                            // differ from typedWord.
-                            unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(
-                                    suggestedWords, typedWord);
-                        }});
-        } else {
-            // We found suggestion spans in the word. We'll create the SuggestedWords out of
-            // them, and make willAutoCorrect false.
-            final SuggestedWords suggestedWords = new SuggestedWords(suggestions,
-                    true /* typedWordValid */, false /* willAutoCorrect */,
-                    false /* isPunctuationSuggestions */, false /* isObsoleteSuggestions */,
-                    false /* isPrediction */);
-            // We need to pass typedWord because mWordComposer.mTypedWord may differ from typedWord.
-            unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(suggestedWords, typedWord);
-        }
-    }
-
-    public void unsetIsAutoCorrectionIndicatorOnAndCallShowSuggestionStrip(
-            final SuggestedWords suggestedWords, final String typedWord) {
-        // Note that it's very important here that suggestedWords.mWillAutoCorrect is false.
-        // We never want to auto-correct on a resumed suggestion. Please refer to the three places
-        // above in restartSuggestionsOnWordTouchedByCursor() where suggestedWords is affected.
-        // We also need to unset mIsAutoCorrectionIndicatorOn to avoid showSuggestionStrip touching
-        // the text to adapt it.
-        // TODO: remove mIsAutoCorrectionIndicatorOn (see comment on definition)
-        mIsAutoCorrectionIndicatorOn = false;
-        mHandler.showSuggestionStripWithTypedWord(suggestedWords, typedWord);
-    }
-
-    /**
-     * Check if the cursor is actually at the end of a word. If so, restart suggestions on this
-     * word, else do nothing.
-     */
-    private void restartSuggestionsOnWordBeforeCursorIfAtEndOfWord() {
-        final CharSequence word =
-                mConnection.getWordBeforeCursorIfAtEndOfWord(mSettings.getCurrent());
-        if (null != word) {
-            final String wordString = word.toString();
-            restartSuggestionsOnWordBeforeCursor(wordString);
-            // TODO: Handle the case where the user manually moves the cursor and then backs up over
-            // a separator.  In that case, the current log unit should not be uncommitted.
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.getInstance().uncommitCurrentLogUnit(wordString,
-                        true /* dumpCurrentLogUnit */);
-            }
-        }
-    }
-
-    private void restartSuggestionsOnWordBeforeCursor(final String word) {
-        mWordComposer.setComposingWord(word, mKeyboardSwitcher.getKeyboard());
-        final int length = word.length();
-        mConnection.deleteSurroundingText(length, 0);
-        mConnection.setComposingText(word, 1);
-        mHandler.postUpdateSuggestionStrip();
-    }
-
-    /**
-     * Retry resetting caches in the rich input connection.
-     *
-     * When the editor can't be accessed we can't reset the caches, so we schedule a retry.
-     * This method handles the retry, and re-schedules a new retry if we still can't access.
-     * We only retry up to 5 times before giving up.
-     *
-     * @param tryResumeSuggestions Whether we should resume suggestions or not.
-     * @param remainingTries How many times we may try again before giving up.
-     */
-    private void retryResetCaches(final boolean tryResumeSuggestions, final int remainingTries) {
-        if (!mConnection.resetCachesUponCursorMoveAndReturnSuccess(mLastSelectionStart, false)) {
-            if (0 < remainingTries) {
-                mHandler.postResetCaches(tryResumeSuggestions, remainingTries - 1);
-                return;
-            }
-            // If remainingTries is 0, we should stop waiting for new tries, but it's still
-            // better to load the keyboard (less things will be broken).
-        }
-        tryFixLyingCursorPosition();
-        mKeyboardSwitcher.loadKeyboard(getCurrentInputEditorInfo(), mSettings.getCurrent());
-        if (tryResumeSuggestions) mHandler.postResumeSuggestions();
-    }
-
-    private void revertCommit() {
-        final String previousWord = mLastComposedWord.mPrevWord;
-        final String originallyTypedWord = mLastComposedWord.mTypedWord;
-        final String committedWord = mLastComposedWord.mCommittedWord;
-        final int cancelLength = committedWord.length();
-        // We want java chars, not codepoints for the following.
-        final int separatorLength = mLastComposedWord.mSeparatorString.length();
-        // TODO: should we check our saved separator against the actual contents of the text view?
-        final int deleteLength = cancelLength + separatorLength;
-        if (DEBUG) {
-            if (mWordComposer.isComposingWord()) {
-                throw new RuntimeException("revertCommit, but we are composing a word");
-            }
-            final CharSequence wordBeforeCursor =
-                    mConnection.getTextBeforeCursor(deleteLength, 0)
-                            .subSequence(0, cancelLength);
-            if (!TextUtils.equals(committedWord, wordBeforeCursor)) {
-                throw new RuntimeException("revertCommit check failed: we thought we were "
-                        + "reverting \"" + committedWord
-                        + "\", but before the cursor we found \"" + wordBeforeCursor + "\"");
-            }
-        }
-        mConnection.deleteSurroundingText(deleteLength, 0);
-        if (!TextUtils.isEmpty(previousWord) && !TextUtils.isEmpty(committedWord)) {
-            mUserHistoryDictionary.cancelAddingUserHistory(previousWord, committedWord);
-        }
-        final String stringToCommit = originallyTypedWord + mLastComposedWord.mSeparatorString;
-        if (mSettings.getCurrent().mCurrentLanguageHasSpaces) {
-            // For languages with spaces, we revert to the typed string, but the cursor is still
-            // after the separator so we don't resume suggestions. If the user wants to correct
-            // the word, they have to press backspace again.
-            mConnection.commitText(stringToCommit, 1);
-        } else {
-            // For languages without spaces, we revert the typed string but the cursor is flush
-            // with the typed word, so we need to resume suggestions right away.
-            mWordComposer.setComposingWord(stringToCommit, mKeyboardSwitcher.getKeyboard());
-            mConnection.setComposingText(stringToCommit, 1);
-        }
-        if (mSettings.isInternal()) {
-            LatinImeLoggerUtils.onSeparator(mLastComposedWord.mSeparatorString,
-                    Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
-        }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.latinIME_revertCommit(committedWord, originallyTypedWord,
-                    mWordComposer.isBatchMode(), mLastComposedWord.mSeparatorString);
-        }
-        // Don't restart suggestion yet. We'll restart if the user deletes the
-        // separator.
-        mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
-        // We have a separator between the word and the cursor: we should show predictions.
-        mHandler.postUpdateSuggestionStrip();
-    }
-
-    // This essentially inserts a space, and that's it.
-    public void promotePhantomSpace() {
-        final SettingsValues currentSettings = mSettings.getCurrent();
-        if (currentSettings.shouldInsertSpacesAutomatically()
-                && currentSettings.mCurrentLanguageHasSpaces
-                && !mConnection.textBeforeCursorLooksLikeURL()) {
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.latinIME_promotePhantomSpace();
-            }
-            sendKeyCodePoint(Constants.CODE_SPACE);
-        }
+        final SuggestedWords neutralSuggestions = currentSettings.mBigramPredictionEnabled
+                ? SuggestedWords.EMPTY : currentSettings.mSpacingAndPunctuations.mSuggestPuncList;
+        setSuggestedWords(neutralSuggestions);
     }
 
     // TODO: Make this private
@@ -3089,18 +1482,44 @@
         loadSettings();
         if (mKeyboardSwitcher.getMainKeyboardView() != null) {
             // Reload keyboard because the current language has been changed.
-            mKeyboardSwitcher.loadKeyboard(getCurrentInputEditorInfo(), mSettings.getCurrent());
+            mKeyboardSwitcher.loadKeyboard(getCurrentInputEditorInfo(), mSettings.getCurrent(),
+                    getCurrentAutoCapsState(), getCurrentRecapitalizeState());
+        }
+    }
+
+    /**
+     * After an input transaction has been executed, some state must be updated. This includes
+     * the shift state of the keyboard and suggestions. This method looks at the finished
+     * inputTransaction to find out what is necessary and updates the state accordingly.
+     * @param inputTransaction The transaction that has been executed.
+     */
+    private void updateStateAfterInputTransaction(final InputTransaction inputTransaction) {
+        switch (inputTransaction.getRequiredShiftUpdate()) {
+        case InputTransaction.SHIFT_UPDATE_LATER:
+            mHandler.postUpdateShiftState();
+            break;
+        case InputTransaction.SHIFT_UPDATE_NOW:
+            mKeyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(),
+                    getCurrentRecapitalizeState());
+            break;
+        default: // SHIFT_NO_UPDATE
+        }
+        if (inputTransaction.requiresUpdateSuggestions()) {
+            mHandler.postUpdateSuggestionStrip();
+        }
+        if (inputTransaction.didAffectContents()) {
+            mSubtypeState.setCurrentSubtypeHasBeenUsed();
         }
     }
 
     private void hapticAndAudioFeedback(final int code, final int repeatCount) {
         final MainKeyboardView keyboardView = mKeyboardSwitcher.getMainKeyboardView();
-        if (keyboardView != null && keyboardView.isInSlidingKeyInput()) {
-            // No need to feedback while sliding input.
+        if (keyboardView != null && keyboardView.isInDraggingFinger()) {
+            // No need to feedback while finger is dragging.
             return;
         }
         if (repeatCount > 0) {
-            if (code == Constants.CODE_DELETE && !mConnection.canDeleteCharacters()) {
+            if (code == Constants.CODE_DELETE && !mInputLogic.mConnection.canDeleteCharacters()) {
                 // No need to feedback when repeat delete key will have no effect.
                 return;
             }
@@ -3124,7 +1543,8 @@
     @Override
     public void onPressKey(final int primaryCode, final int repeatCount,
             final boolean isSinglePointer) {
-        mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer);
+        mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer, getCurrentAutoCapsState(),
+                getCurrentRecapitalizeState());
         hapticAndAudioFeedback(primaryCode, repeatCount);
     }
 
@@ -3132,40 +1552,44 @@
     // press matching call is {@link #onPressKey(int,int,boolean)} above.
     @Override
     public void onReleaseKey(final int primaryCode, final boolean withSliding) {
-        mKeyboardSwitcher.onReleaseKey(primaryCode, withSliding);
+        mKeyboardSwitcher.onReleaseKey(primaryCode, withSliding, getCurrentAutoCapsState(),
+                getCurrentRecapitalizeState());
+    }
 
-        // If accessibility is on, ensure the user receives keyboard state updates.
-        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
-            switch (primaryCode) {
-            case Constants.CODE_SHIFT:
-                AccessibleKeyboardViewProxy.getInstance().notifyShiftState();
-                break;
-            case Constants.CODE_SWITCH_ALPHA_SYMBOL:
-                AccessibleKeyboardViewProxy.getInstance().notifySymbolsState();
-                break;
-            }
-        }
+    private HardwareEventDecoder getHardwareKeyEventDecoder(final int deviceId) {
+        final HardwareEventDecoder decoder = mHardwareEventDecoders.get(deviceId);
+        if (null != decoder) return decoder;
+        // TODO: create the decoder according to the specification
+        final HardwareEventDecoder newDecoder = new HardwareKeyboardEventDecoder(deviceId);
+        mHardwareEventDecoders.put(deviceId, newDecoder);
+        return newDecoder;
     }
 
     // Hooks for hardware keyboard
     @Override
-    public boolean onKeyDown(final int keyCode, final KeyEvent event) {
-        if (!ProductionFlag.IS_HARDWARE_KEYBOARD_SUPPORTED) return super.onKeyDown(keyCode, event);
-        // onHardwareKeyEvent, like onKeyDown returns true if it handled the event, false if
-        // it doesn't know what to do with it and leave it to the application. For example,
-        // hardware key events for adjusting the screen's brightness are passed as is.
-        if (mEventInterpreter.onHardwareKeyEvent(event)) {
-            final long keyIdentifier = event.getDeviceId() << 32 + event.getKeyCode();
-            mCurrentlyPressedHardwareKeys.add(keyIdentifier);
+    public boolean onKeyDown(final int keyCode, final KeyEvent keyEvent) {
+        if (!ProductionFlags.IS_HARDWARE_KEYBOARD_SUPPORTED) {
+            return super.onKeyDown(keyCode, keyEvent);
+        }
+        final Event event = getHardwareKeyEventDecoder(
+                keyEvent.getDeviceId()).decodeHardwareKey(keyEvent);
+        // If the event is not handled by LatinIME, we just pass it to the parent implementation.
+        // If it's handled, we return true because we did handle it.
+        if (event.isHandled()) {
+            mInputLogic.onCodeInput(mSettings.getCurrent(), event,
+                    mKeyboardSwitcher.getKeyboardShiftMode(),
+                    // TODO: this is not necessarily correct for a hardware keyboard right now
+                    mKeyboardSwitcher.getCurrentKeyboardScriptId(),
+                    mHandler);
             return true;
         }
-        return super.onKeyDown(keyCode, event);
+        return super.onKeyDown(keyCode, keyEvent);
     }
 
     @Override
     public boolean onKeyUp(final int keyCode, final KeyEvent event) {
         final long keyIdentifier = event.getDeviceId() << 32 + event.getKeyCode();
-        if (mCurrentlyPressedHardwareKeys.remove(keyIdentifier)) {
+        if (mInputLogic.mCurrentlyPressedHardwareKeys.remove(keyIdentifier)) {
             return true;
         }
         return super.onKeyUp(keyCode, event);
@@ -3177,7 +1601,8 @@
     // boolean onKeyMultiple(final int keyCode, final int count, final KeyEvent event);
 
     // receive ringer mode change and network state change.
-    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+    private final BroadcastReceiver mConnectivityAndRingerModeChangeReceiver =
+            new BroadcastReceiver() {
         @Override
         public void onReceive(final Context context, final Intent intent) {
             final String action = intent.getAction();
@@ -3190,17 +1615,15 @@
     };
 
     private void launchSettings() {
-        handleClose();
+        mInputLogic.commitTyped(mSettings.getCurrent(), LastComposedWord.NOT_A_SEPARATOR);
+        requestHideSelf(0);
+        final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
+        if (mainKeyboardView != null) {
+            mainKeyboardView.closing();
+        }
         launchSubActivity(SettingsActivity.class);
     }
 
-    public void launchKeyboardedDialogActivity(final Class<? extends Activity> activityClass) {
-        // Put the text in the attached EditText into a safe, saved state before switching to a
-        // new activity that will also use the soft keyboard.
-        commitTyped(LastComposedWord.NOT_A_SEPARATOR);
-        launchSubActivity(activityClass);
-    }
-
     private void launchSubActivity(final Class<? extends Activity> activityClass) {
         Intent intent = new Intent();
         intent.setClass(LatinIME.this, activityClass);
@@ -3215,9 +1638,9 @@
         final CharSequence[] items = new CharSequence[] {
                 // TODO: Should use new string "Select active input modes".
                 getString(R.string.language_selection_title),
-                getString(ApplicationUtils.getAcitivityTitleResId(this, SettingsActivity.class)),
+                getString(ApplicationUtils.getActivityTitleResId(this, SettingsActivity.class)),
         };
-        final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
+        final OnClickListener listener = new OnClickListener() {
             @Override
             public void onClick(DialogInterface di, int position) {
                 di.dismiss();
@@ -3226,8 +1649,8 @@
                     final Intent intent = IntentUtils.getInputLanguageSelectionIntent(
                             mRichImm.getInputMethodIdOfThisIme(),
                             Intent.FLAG_ACTIVITY_NEW_TASK
-                            | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
-                            | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
+                                    | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     startActivity(intent);
                     break;
                 case 1:
@@ -3236,21 +1659,22 @@
                 }
             }
         };
-        final AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                .setItems(items, listener)
-                .setTitle(title);
-        showOptionDialog(builder.create());
+        final AlertDialog.Builder builder = new AlertDialog.Builder(
+                DialogUtils.getPlatformDialogThemeContext(this));
+        builder.setItems(items, listener).setTitle(title);
+        final AlertDialog dialog = builder.create();
+        dialog.setCancelable(true /* cancelable */);
+        dialog.setCanceledOnTouchOutside(true /* cancelable */);
+        showOptionDialog(dialog);
     }
 
-    public void showOptionDialog(final AlertDialog dialog) {
+    // TODO: Move this method out of {@link LatinIME}.
+    private void showOptionDialog(final AlertDialog dialog) {
         final IBinder windowToken = mKeyboardSwitcher.getMainKeyboardView().getWindowToken();
         if (windowToken == null) {
             return;
         }
 
-        dialog.setCancelable(true);
-        dialog.setCanceledOnTouchOutside(true);
-
         final Window window = dialog.getWindow();
         final WindowManager.LayoutParams lp = window.getAttributes();
         lp.token = windowToken;
@@ -3264,31 +1688,51 @@
 
     // TODO: can this be removed somehow without breaking the tests?
     @UsedForTesting
-    /* package for test */ String getFirstSuggestedWord() {
-        return mSuggestedWords.size() > 0 ? mSuggestedWords.getWord(0) : null;
+    /* package for test */ SuggestedWords getSuggestedWordsForTest() {
+        // You may not use this method for anything else than debug
+        return DEBUG ? mInputLogic.mSuggestedWords : null;
     }
 
     // DO NOT USE THIS for any other purpose than testing. This is information private to LatinIME.
     @UsedForTesting
-    /* package for test */ boolean isCurrentlyWaitingForMainDictionary() {
-        return mSuggest.isCurrentlyWaitingForMainDictionary();
-    }
-
-    // DO NOT USE THIS for any other purpose than testing. This is information private to LatinIME.
-    @UsedForTesting
-    /* package for test */ boolean hasMainDictionary() {
-        return mSuggest.hasMainDictionary();
+    /* package for test */ void waitForLoadingDictionaries(final long timeout, final TimeUnit unit)
+            throws InterruptedException {
+        mDictionaryFacilitator.waitForLoadingDictionariesForTesting(timeout, unit);
     }
 
     // DO NOT USE THIS for any other purpose than testing. This can break the keyboard badly.
     @UsedForTesting
-    /* package for test */ void replaceMainDictionaryForTest(final Locale locale) {
-        mSuggest.resetMainDict(this, locale, null);
+    /* package for test */ void replaceDictionariesForTest(final Locale locale) {
+        final SettingsValues settingsValues = mSettings.getCurrent();
+        mDictionaryFacilitator.resetDictionaries(this, locale,
+            settingsValues.mUseContactsDict, settingsValues.mUsePersonalizedDicts,
+            false /* forceReloadMainDictionary */, this /* listener */);
+    }
+
+    // DO NOT USE THIS for any other purpose than testing.
+    @UsedForTesting
+    /* package for test */ void clearPersonalizedDictionariesForTest() {
+        mDictionaryFacilitator.clearUserHistoryDictionary();
+        mDictionaryFacilitator.clearPersonalizationDictionary();
+    }
+
+    @UsedForTesting
+    /* package for test */ List<InputMethodSubtype> getEnabledSubtypesForTest() {
+        return (mRichImm != null) ? mRichImm.getMyEnabledInputMethodSubtypeList(
+                true /* allowsImplicitlySelectedSubtypes */) : new ArrayList<InputMethodSubtype>();
+    }
+
+    public void dumpDictionaryForDebug(final String dictName) {
+        if (mDictionaryFacilitator.getLocale() == null) {
+            resetSuggest();
+        }
+        mDictionaryFacilitator.dumpDictionaryForDebug(dictName);
     }
 
     public void debugDumpStateAndCrashWithException(final String context) {
-        final StringBuilder s = new StringBuilder(mAppWorkAroundsUtils.toString());
-        s.append("\nAttributes : ").append(mSettings.getCurrent().mInputAttributes)
+        final SettingsValues settingsValues = mSettings.getCurrent();
+        final StringBuilder s = new StringBuilder(settingsValues.toString());
+        s.append("\nAttributes : ").append(settingsValues.mInputAttributes)
                 .append("\nContext : ").append(context);
         throw new RuntimeException(s.toString());
     }
@@ -3299,17 +1743,37 @@
 
         final Printer p = new PrintWriterPrinter(fout);
         p.println("LatinIME state :");
+        p.println("  VersionCode = " + ApplicationUtils.getVersionCode(this));
+        p.println("  VersionName = " + ApplicationUtils.getVersionName(this));
         final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
         final int keyboardMode = keyboard != null ? keyboard.mId.mMode : -1;
         p.println("  Keyboard mode = " + keyboardMode);
         final SettingsValues settingsValues = mSettings.getCurrent();
-        p.println("  mIsSuggestionsSuggestionsRequested = "
-                + settingsValues.isSuggestionsRequested(mDisplayOrientation));
-        p.println("  mCorrectionEnabled=" + settingsValues.mCorrectionEnabled);
-        p.println("  isComposingWord=" + mWordComposer.isComposingWord());
-        p.println("  mSoundOn=" + settingsValues.mSoundOn);
-        p.println("  mVibrateOn=" + settingsValues.mVibrateOn);
-        p.println("  mKeyPreviewPopupOn=" + settingsValues.mKeyPreviewPopupOn);
-        p.println("  inputAttributes=" + settingsValues.mInputAttributes);
+        p.println(settingsValues.dump());
+        // TODO: Dump all settings values
+    }
+
+    public boolean shouldSwitchToOtherInputMethods() {
+        // TODO: Revisit here to reorganize the settings. Probably we can/should use different
+        // strategy once the implementation of
+        // {@link InputMethodManager#shouldOfferSwitchingToNextInputMethod} is defined well.
+        final boolean fallbackValue = mSettings.getCurrent().mIncludesOtherImesInLanguageSwitchList;
+        final IBinder token = getWindow().getWindow().getAttributes().token;
+        if (token == null) {
+            return fallbackValue;
+        }
+        return mRichImm.shouldOfferSwitchingToNextInputMethod(token, fallbackValue);
+    }
+
+    public boolean shouldShowLanguageSwitchKey() {
+        // TODO: Revisit here to reorganize the settings. Probably we can/should use different
+        // strategy once the implementation of
+        // {@link InputMethodManager#shouldOfferSwitchingToNextInputMethod} is defined well.
+        final boolean fallbackValue = mSettings.getCurrent().isLanguageSwitchKeyEnabled();
+        final IBinder token = getWindow().getWindow().getAttributes().token;
+        if (token == null) {
+            return fallbackValue;
+        }
+        return mRichImm.shouldOfferSwitchingToNextInputMethod(token, fallbackValue);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
deleted file mode 100644
index 3f2b0a3..0000000
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin;
-
-import android.content.SharedPreferences;
-import android.view.inputmethod.EditorInfo;
-
-import com.android.inputmethod.keyboard.Keyboard;
-
-public final class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChangeListener {
-
-    public static boolean sDBG = false;
-    public static boolean sVISUALDEBUG = false;
-    public static boolean sUsabilityStudy = false;
-
-    @Override
-    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
-    }
-
-    public static void init(LatinIME context) {
-    }
-
-    public static void commit() {
-    }
-
-    public static boolean getUsabilityStudyMode(final SharedPreferences prefs) {
-        return false;
-    }
-
-    public static void onDestroy() {
-    }
-
-    public static void logOnManualSuggestion(
-            String before, String after, int position, SuggestedWords suggestedWords) {
-    }
-
-    public static void logOnAutoCorrectionForTyping(
-            String before, String after, int separatorCode) {
-    }
-
-    public static void logOnAutoCorrectionForGeometric(String before, String after,
-            int separatorCode, InputPointers inputPointers) {
-    }
-
-    public static void logOnAutoCorrectionCancelled() {
-    }
-
-    public static void logOnDelete(int x, int y) {
-    }
-
-    public static void logOnInputChar() {
-    }
-
-    public static void logOnInputSeparator() {
-    }
-
-    public static void logOnException(String metaData, Throwable e) {
-    }
-
-    public static void logOnWarning(String warning) {
-    }
-
-    public static void onStartInputView(EditorInfo editorInfo) {
-    }
-
-    public static void onStartSuggestion(CharSequence previousWords) {
-    }
-
-    public static void onAddSuggestedWord(String word, String sourceDictionaryId) {
-    }
-
-    public static void onSetKeyboard(Keyboard kb) {
-    }
-
-    public static void onPrintAllUsabilityStudyLogs() {
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/PrevWordsInfo.java b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
new file mode 100644
index 0000000..db877ab
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/PrevWordsInfo.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.text.TextUtils;
+
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.Arrays;
+
+/**
+ * Class to represent information of previous words. This class is used to add n-gram entries
+ * into binary dictionaries, to get predictions, and to get suggestions.
+ */
+public class PrevWordsInfo {
+    public static final PrevWordsInfo EMPTY_PREV_WORDS_INFO =
+            new PrevWordsInfo(WordInfo.EMPTY_WORD_INFO);
+    public static final PrevWordsInfo BEGINNING_OF_SENTENCE =
+            new PrevWordsInfo(WordInfo.BEGINNING_OF_SENTENCE);
+
+    /**
+     * Word information used to represent previous words information.
+     */
+    public static class WordInfo {
+        public static final WordInfo EMPTY_WORD_INFO = new WordInfo(null);
+        public static final WordInfo BEGINNING_OF_SENTENCE = new WordInfo();
+
+        // This is an empty char sequence when mIsBeginningOfSentence is true.
+        public final CharSequence mWord;
+        // TODO: Have sentence separator.
+        // Whether the current context is beginning of sentence or not. This is true when composing
+        // at the beginning of an input field or composing a word after a sentence separator.
+        public final boolean mIsBeginningOfSentence;
+
+        // Beginning of sentence.
+        public WordInfo() {
+            mWord = "";
+            mIsBeginningOfSentence = true;
+        }
+
+        public WordInfo(final CharSequence word) {
+            mWord = word;
+            mIsBeginningOfSentence = false;
+        }
+
+        public boolean isValid() {
+            return mWord != null;
+        }
+
+        @Override
+        public int hashCode() {
+            return Arrays.hashCode(new Object[] { mWord, mIsBeginningOfSentence } );
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (!(o instanceof WordInfo)) return false;
+            final WordInfo wordInfo = (WordInfo)o;
+            if (mWord == null || wordInfo.mWord == null) {
+                return mWord == wordInfo.mWord
+                        && mIsBeginningOfSentence == wordInfo.mIsBeginningOfSentence;
+            }
+            return TextUtils.equals(mWord, wordInfo.mWord)
+                    && mIsBeginningOfSentence == wordInfo.mIsBeginningOfSentence;
+        }
+    }
+
+    // The words immediately before the considered word. EMPTY_WORD_INFO element means we don't
+    // have any context for that previous word including the "beginning of sentence context" - we
+    // just don't know what to predict using the information. An example of that is after a comma.
+    // For simplicity of implementation, elements may also be EMPTY_WORD_INFO transiently after the
+    // WordComposer was reset and before starting a new composing word, but we should never be
+    // calling getSuggetions* in this situation.
+    public WordInfo[] mPrevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+
+    // Construct from the previous word information.
+    public PrevWordsInfo(final WordInfo prevWordInfo) {
+        mPrevWordsInfo[0] = prevWordInfo;
+    }
+
+    // Construct from WordInfo array. n-th element represents (n+1)-th previous word's information.
+    public PrevWordsInfo(final WordInfo[] prevWordsInfo) {
+        for (int i = 0; i < Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM; i++) {
+            mPrevWordsInfo[i] =
+                    (prevWordsInfo.length > i) ? prevWordsInfo[i] : WordInfo.EMPTY_WORD_INFO;
+        }
+    }
+
+    // Create next prevWordsInfo using current prevWordsInfo.
+    public PrevWordsInfo getNextPrevWordsInfo(final WordInfo wordInfo) {
+        final WordInfo[] prevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        prevWordsInfo[0] = wordInfo;
+        for (int i = 1; i < prevWordsInfo.length; i++) {
+            prevWordsInfo[i] = mPrevWordsInfo[i - 1];
+        }
+        return new PrevWordsInfo(prevWordsInfo);
+    }
+
+    public boolean isValid() {
+        return mPrevWordsInfo[0].isValid();
+    }
+
+    public void outputToArray(final int[][] codePointArrays,
+            final boolean[] isBeginningOfSentenceArray) {
+        for (int i = 0; i < mPrevWordsInfo.length; i++) {
+            final WordInfo wordInfo = mPrevWordsInfo[i];
+            if (wordInfo == null || !wordInfo.isValid()) {
+                codePointArrays[i] = new int[0];
+                isBeginningOfSentenceArray[i] = false;
+                continue;
+            }
+            codePointArrays[i] = StringUtils.toCodePointArray(wordInfo.mWord);
+            isBeginningOfSentenceArray[i] = wordInfo.mIsBeginningOfSentence;
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        return Arrays.hashCode(mPrevWordsInfo);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof PrevWordsInfo)) return false;
+        final PrevWordsInfo prevWordsInfo = (PrevWordsInfo)o;
+        return Arrays.equals(mPrevWordsInfo, prevWordsInfo.mPrevWordsInfo);
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer builder = new StringBuffer();
+        for (int i = 0; i < mPrevWordsInfo.length; i++) {
+            final WordInfo wordInfo = mPrevWordsInfo[i];
+            builder.append("PrevWord[");
+            builder.append(i);
+            builder.append("]: ");
+            if (wordInfo == null || !wordInfo.isValid()) {
+                builder.append("Empty. ");
+                continue;
+            }
+            builder.append(wordInfo.mWord);
+            builder.append(", isBeginningOfSentence: ");
+            builder.append(wordInfo.mIsBeginningOfSentence);
+            builder.append(". ");
+        }
+        return builder.toString();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/PunctuationSuggestions.java b/java/src/com/android/inputmethod/latin/PunctuationSuggestions.java
new file mode 100644
index 0000000..0fba37c
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/PunctuationSuggestions.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import com.android.inputmethod.keyboard.internal.KeySpecParser;
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * The extended {@link SuggestedWords} class to represent punctuation suggestions.
+ *
+ * Each punctuation specification string is the key specification that can be parsed by
+ * {@link KeySpecParser}.
+ */
+public final class PunctuationSuggestions extends SuggestedWords {
+    private PunctuationSuggestions(final ArrayList<SuggestedWordInfo> punctuationsList) {
+        super(punctuationsList,
+                null /* rawSuggestions */,
+                false /* typedWordValid */,
+                false /* hasAutoCorrectionCandidate */,
+                false /* isObsoleteSuggestions */,
+                false /* isPrediction */);
+    }
+
+    /**
+     * Create new instance of {@link PunctuationSuggestions} from the array of punctuation key
+     * specifications.
+     *
+     * @param punctuationSpecs The array of punctuation key specifications.
+     * @return The {@link PunctuationSuggestions} object.
+     */
+    public static PunctuationSuggestions newPunctuationSuggestions(
+            final String[] punctuationSpecs) {
+        final ArrayList<SuggestedWordInfo> puncuationsList = new ArrayList<>();
+        for (final String puncSpec : punctuationSpecs) {
+            puncuationsList.add(newHardCodedWordInfo(puncSpec));
+        }
+        return new PunctuationSuggestions(puncuationsList);
+    }
+
+    /**
+     * {@inheritDoc}
+     * Note that {@link super#getWord(int)} returns a punctuation key specification text.
+     * The suggested punctuation should be gotten by parsing the key specification.
+     */
+    @Override
+    public String getWord(final int index) {
+        final String keySpec = super.getWord(index);
+        final int code = KeySpecParser.getCode(keySpec);
+        return (code == Constants.CODE_OUTPUT_TEXT)
+                ? KeySpecParser.getOutputText(keySpec)
+                : StringUtils.newSingleCodePointString(code);
+    }
+
+    /**
+     * {@inheritDoc}
+     * Note that {@link super#getWord(int)} returns a punctuation key specification text.
+     * The displayed text should be gotten by parsing the key specification.
+     */
+    @Override
+    public String getLabel(final int index) {
+        final String keySpec = super.getWord(index);
+        return KeySpecParser.getLabel(keySpec);
+    }
+
+    /**
+     * {@inheritDoc}
+     * Note that {@link #getWord(int)} returns a suggested punctuation. We should create a
+     * {@link SuggestedWordInfo} object that represents a hard coded word.
+     */
+    @Override
+    public SuggestedWordInfo getInfo(final int index) {
+        return newHardCodedWordInfo(getWord(index));
+    }
+
+    /**
+     * The predicator to tell whether this object represents punctuation suggestions.
+     * @return true if this object represents punctuation suggestions.
+     */
+    @Override
+    public boolean isPunctuationSuggestions() {
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "PunctuationSuggestions: "
+                + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray());
+    }
+
+    private static SuggestedWordInfo newHardCodedWordInfo(final String keySpec) {
+        return new SuggestedWordInfo(keySpec, SuggestedWordInfo.MAX_SCORE,
+                SuggestedWordInfo.KIND_HARDCODED,
+                Dictionary.DICTIONARY_HARDCODED,
+                SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
+                SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
index 68505ce..5d4fc58 100644
--- a/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ReadOnlyBinaryDictionary.java
@@ -18,6 +18,7 @@
 
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
 
 import java.util.ArrayList;
 import java.util.Locale;
@@ -50,21 +51,13 @@
 
     @Override
     public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        return getSuggestionsWithSessionId(composer, prevWord, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions, 0 /* sessionId */);
-    }
-
-    @Override
-    public ArrayList<SuggestedWordInfo> getSuggestionsWithSessionId(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
-            final int sessionId) {
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
+            final int sessionId, final float[] inOutLanguageWeight) {
         if (mLock.readLock().tryLock()) {
             try {
-                return mBinaryDictionary.getSuggestions(composer, prevWord, proximityInfo,
-                        blockOffensiveWords, additionalFeaturesOptions);
+                return mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo,
+                        settingsValuesForSuggestion, sessionId, inOutLanguageWeight);
             } finally {
                 mLock.readLock().unlock();
             }
@@ -73,10 +66,10 @@
     }
 
     @Override
-    public boolean isValidWord(final String word) {
+    public boolean isInDictionary(final String word) {
         if (mLock.readLock().tryLock()) {
             try {
-                return mBinaryDictionary.isValidWord(word);
+                return mBinaryDictionary.isInDictionary(word);
             } finally {
                 mLock.readLock().unlock();
             }
@@ -109,6 +102,18 @@
     }
 
     @Override
+    public int getMaxFrequencyOfExactMatches(final String word) {
+        if (mLock.readLock().tryLock()) {
+            try {
+                return mBinaryDictionary.getMaxFrequencyOfExactMatches(word);
+            } finally {
+                mLock.readLock().unlock();
+            }
+        }
+        return NOT_A_PROBABILITY;
+    }
+
+    @Override
     public void close() {
         mLock.writeLock().lock();
         try {
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index 673d1b4..a6b3b71 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -26,17 +26,16 @@
 import android.view.inputmethod.ExtractedTextRequest;
 import android.view.inputmethod.InputConnection;
 
-import com.android.inputmethod.latin.define.ProductionFlag;
-import com.android.inputmethod.latin.settings.SettingsValues;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
 import com.android.inputmethod.latin.utils.CapsModeUtils;
 import com.android.inputmethod.latin.utils.DebugLogUtils;
+import com.android.inputmethod.latin.utils.PrevWordsInfoUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 import com.android.inputmethod.latin.utils.SpannableStringUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 import com.android.inputmethod.latin.utils.TextRange;
-import com.android.inputmethod.research.ResearchLogger;
 
-import java.util.Locale;
-import java.util.regex.Pattern;
+import java.util.Arrays;
 
 /**
  * Enrichment class for InputConnection to simplify interaction and add functionality.
@@ -51,20 +50,26 @@
     private static final boolean DBG = false;
     private static final boolean DEBUG_PREVIOUS_TEXT = false;
     private static final boolean DEBUG_BATCH_NESTING = false;
-    // Provision for a long word pair and a separator
-    private static final int LOOKBACK_CHARACTER_NUM = Constants.DICTIONARY_MAX_WORD_LENGTH * 2 + 1;
-    private static final Pattern spaceRegex = Pattern.compile("\\s+");
+    // Provision for long words and separators between the words.
+    private static final int LOOKBACK_CHARACTER_NUM = Constants.DICTIONARY_MAX_WORD_LENGTH
+            * (Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1) /* words */
+            + Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM /* separators */;
     private static final int INVALID_CURSOR_POSITION = -1;
 
     /**
-     * This variable contains an expected value for the cursor position. This is where the
-     * cursor may end up after all the keyboard-triggered updates have passed. We keep this to
-     * compare it to the actual cursor position to guess whether the move was caused by a
-     * keyboard command or not.
-     * It's not really the cursor position: the cursor may not be there yet, and it's also expected
-     * there be cases where it never actually comes to be there.
+     * This variable contains an expected value for the selection start position. This is where the
+     * cursor or selection start may end up after all the keyboard-triggered updates have passed. We
+     * keep this to compare it to the actual selection start to guess whether the move was caused by
+     * a keyboard command or not.
+     * It's not really the selection start position: the selection start may not be there yet, and
+     * in some cases, it may never arrive there.
      */
-    private int mExpectedCursorPosition = INVALID_CURSOR_POSITION; // in chars, not code points
+    private int mExpectedSelStart = INVALID_CURSOR_POSITION; // in chars, not code points
+    /**
+     * The expected selection end.  Only differs from mExpectedSelStart if a non-empty selection is
+     * expected.  The same caveats as mExpectedSelStart apply.
+     */
+    private int mExpectedSelEnd = INVALID_CURSOR_POSITION; // in chars, not code points
     /**
      * This contains the committed text immediately preceding the cursor and the composing
      * text if any. It is refreshed when the cursor moves by calling upon the TextView.
@@ -93,7 +98,7 @@
         final ExtractedText et = mIC.getExtractedText(r, 0);
         final CharSequence beforeCursor = getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE,
                 0);
-        final StringBuilder internal = new StringBuilder().append(mCommittedTextBeforeComposingText)
+        final StringBuilder internal = new StringBuilder(mCommittedTextBeforeComposingText)
                 .append(mComposingText);
         if (null == et || null == beforeCursor) return;
         final int actualLength = Math.min(beforeCursor.length(), internal.length());
@@ -103,16 +108,16 @@
         final String reference = (beforeCursor.length() <= actualLength) ? beforeCursor.toString()
                 : beforeCursor.subSequence(beforeCursor.length() - actualLength,
                         beforeCursor.length()).toString();
-        if (et.selectionStart != mExpectedCursorPosition
+        if (et.selectionStart != mExpectedSelStart
                 || !(reference.equals(internal.toString()))) {
-            final String context = "Expected cursor position = " + mExpectedCursorPosition
-                    + "\nActual cursor position = " + et.selectionStart
+            final String context = "Expected selection start = " + mExpectedSelStart
+                    + "\nActual selection start = " + et.selectionStart
                     + "\nExpected text = " + internal.length() + " " + internal
                     + "\nActual text = " + reference.length() + " " + reference;
             ((LatinIME)mParent).debugDumpStateAndCrashWithException(context);
         } else {
             Log.e(TAG, DebugLogUtils.getStackTrace(2));
-            Log.e(TAG, "Exp <> Actual : " + mExpectedCursorPosition + " <> " + et.selectionStart);
+            Log.e(TAG, "Exp <> Actual : " + mExpectedSelStart + " <> " + et.selectionStart);
         }
     }
 
@@ -150,16 +155,35 @@
      * data, so we empty the cache and note that we don't know the new cursor position, and we
      * return false so that the caller knows about this and can retry later.
      *
-     * @param newCursorPosition The new position of the cursor, as received from the system.
-     * @param shouldFinishComposition Whether we should finish the composition in progress.
+     * @param newSelStart the new position of the selection start, as received from the system.
+     * @param newSelEnd the new position of the selection end, as received from the system.
+     * @param shouldFinishComposition whether we should finish the composition in progress.
      * @return true if we were able to connect to the editor successfully, false otherwise. When
      *   this method returns false, the caches could not be correctly refreshed so they were only
      *   reset: the caller should try again later to return to normal operation.
      */
-    public boolean resetCachesUponCursorMoveAndReturnSuccess(final int newCursorPosition,
-            final boolean shouldFinishComposition) {
-        mExpectedCursorPosition = newCursorPosition;
+    public boolean resetCachesUponCursorMoveAndReturnSuccess(final int newSelStart,
+            final int newSelEnd, final boolean shouldFinishComposition) {
+        mExpectedSelStart = newSelStart;
+        mExpectedSelEnd = newSelEnd;
         mComposingText.setLength(0);
+        final boolean didReloadTextSuccessfully = reloadTextCache();
+        if (!didReloadTextSuccessfully) {
+            Log.d(TAG, "Will try to retrieve text later.");
+            return false;
+        }
+        if (null != mIC && shouldFinishComposition) {
+            mIC.finishComposingText();
+        }
+        return true;
+    }
+
+    /**
+     * Reload the cached text from the InputConnection.
+     *
+     * @return true if successful
+     */
+    private boolean reloadTextCache() {
         mCommittedTextBeforeComposingText.setLength(0);
         mIC = mParent.getCurrentInputConnection();
         // Call upon the inputconnection directly since our own method is using the cache, and
@@ -169,27 +193,12 @@
         if (null == textBeforeCursor) {
             // For some reason the app thinks we are not connected to it. This looks like a
             // framework bug... Fall back to ground state and return false.
-            mExpectedCursorPosition = INVALID_CURSOR_POSITION;
-            Log.e(TAG, "Unable to connect to the editor to retrieve text... will retry later");
+            mExpectedSelStart = INVALID_CURSOR_POSITION;
+            mExpectedSelEnd = INVALID_CURSOR_POSITION;
+            Log.e(TAG, "Unable to connect to the editor to retrieve text.");
             return false;
         }
         mCommittedTextBeforeComposingText.append(textBeforeCursor);
-        final int lengthOfTextBeforeCursor = textBeforeCursor.length();
-        if (lengthOfTextBeforeCursor > newCursorPosition
-                || (lengthOfTextBeforeCursor < Constants.EDITOR_CONTENTS_CACHE_SIZE
-                        && newCursorPosition < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
-            // newCursorPosition may be lying -- when rotating the device (probably a framework
-            // bug). If we have less chars than we asked for, then we know how many chars we have,
-            // and if we got more than newCursorPosition says, then we know it was lying. In both
-            // cases the length is more reliable
-            mExpectedCursorPosition = lengthOfTextBeforeCursor;
-        }
-        if (null != mIC && shouldFinishComposition) {
-            mIC.finishComposingText();
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_finishComposingText();
-            }
-        }
         return true;
     }
 
@@ -204,13 +213,13 @@
     public void finishComposingText() {
         if (DEBUG_BATCH_NESTING) checkBatchEdit();
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
+        // TODO: this is not correct! The cursor is not necessarily after the composing text.
+        // In the practice right now this is only called when input ends so it will be reset so
+        // it works, but it's wrong and should be fixed.
         mCommittedTextBeforeComposingText.append(mComposingText);
         mComposingText.setLength(0);
         if (null != mIC) {
             mIC.finishComposingText();
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_finishComposingText();
-            }
         }
     }
 
@@ -218,7 +227,11 @@
         if (DEBUG_BATCH_NESTING) checkBatchEdit();
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
         mCommittedTextBeforeComposingText.append(text);
-        mExpectedCursorPosition += text.length() - mComposingText.length();
+        // TODO: the following is exceedingly error-prone. Right now when the cursor is in the
+        // middle of the composing word mComposingText only holds the part of the composing text
+        // that is before the cursor, so this actually works, but it's terribly confusing. Fix this.
+        mExpectedSelStart += text.length() - mComposingText.length();
+        mExpectedSelEnd = mExpectedSelStart;
         mComposingText.setLength(0);
         if (null != mIC) {
             mIC.commitText(text, i);
@@ -226,12 +239,11 @@
     }
 
     public CharSequence getSelectedText(final int flags) {
-        if (null == mIC) return null;
-        return mIC.getSelectedText(flags);
+        return (null == mIC) ? null : mIC.getSelectedText(flags);
     }
 
     public boolean canDeleteCharacters() {
-        return mExpectedCursorPosition > 0;
+        return mExpectedSelStart > 0;
     }
 
     /**
@@ -245,12 +257,12 @@
      * American English, it's just the most common set of rules for English).
      *
      * @param inputType a mask of the caps modes to test for.
-     * @param settingsValues the values of the settings to use for locale and separators.
+     * @param spacingAndPunctuations the values of the settings to use for locale and separators.
      * @param hasSpaceBefore if we should consider there should be a space after the string.
      * @return the caps modes that should be on as a set of bits
      */
-    public int getCursorCapsMode(final int inputType, final SettingsValues settingsValues,
-            final boolean hasSpaceBefore) {
+    public int getCursorCapsMode(final int inputType,
+            final SpacingAndPunctuations spacingAndPunctuations, final boolean hasSpaceBefore) {
         mIC = mParent.getCurrentInputConnection();
         if (null == mIC) return Constants.TextUtils.CAP_MODE_OFF;
         if (!TextUtils.isEmpty(mComposingText)) {
@@ -268,23 +280,22 @@
         // heavy pressing of delete, for example DEFAULT_TEXT_CACHE_SIZE - 5 times or so.
         // getCapsMode should be updated to be able to return a "not enough info" result so that
         // we can get more context only when needed.
-        if (TextUtils.isEmpty(mCommittedTextBeforeComposingText) && 0 != mExpectedCursorPosition) {
-            final CharSequence textBeforeCursor = getTextBeforeCursor(
-                    Constants.EDITOR_CONTENTS_CACHE_SIZE, 0);
-            if (!TextUtils.isEmpty(textBeforeCursor)) {
-                mCommittedTextBeforeComposingText.append(textBeforeCursor);
+        if (TextUtils.isEmpty(mCommittedTextBeforeComposingText) && 0 != mExpectedSelStart) {
+            if (!reloadTextCache()) {
+                Log.w(TAG, "Unable to connect to the editor. "
+                        + "Setting caps mode without knowing text.");
             }
         }
         // This never calls InputConnection#getCapsMode - in fact, it's a static method that
         // never blocks or initiates IPC.
         return CapsModeUtils.getCapsMode(mCommittedTextBeforeComposingText, inputType,
-                settingsValues, hasSpaceBefore);
+                spacingAndPunctuations, hasSpaceBefore);
     }
 
     public int getCodePointBeforeCursor() {
-        if (mCommittedTextBeforeComposingText.length() < 1) return Constants.NOT_A_CODE;
-        return Character.codePointBefore(mCommittedTextBeforeComposingText,
-                mCommittedTextBeforeComposingText.length());
+        final int length = mCommittedTextBeforeComposingText.length();
+        if (length < 1) return Constants.NOT_A_CODE;
+        return Character.codePointBefore(mCommittedTextBeforeComposingText, length);
     }
 
     public CharSequence getTextBeforeCursor(final int n, final int flags) {
@@ -295,8 +306,8 @@
         // However, if we don't have an expected cursor position, then we should always
         // go fetch the cache again (as it happens, INVALID_CURSOR_POSITION < 0, so we need to
         // test for this explicitly)
-        if (INVALID_CURSOR_POSITION != mExpectedCursorPosition
-                && (cachedLength >= n || cachedLength >= mExpectedCursorPosition)) {
+        if (INVALID_CURSOR_POSITION != mExpectedSelStart
+                && (cachedLength >= n || cachedLength >= mExpectedSelStart)) {
             final StringBuilder s = new StringBuilder(mCommittedTextBeforeComposingText);
             // We call #toString() here to create a temporary object.
             // In some situations, this method is called on a worker thread, and it's possible
@@ -312,20 +323,19 @@
             return s;
         }
         mIC = mParent.getCurrentInputConnection();
-        if (null != mIC) {
-            return mIC.getTextBeforeCursor(n, flags);
-        }
-        return null;
+        return (null == mIC) ? null : mIC.getTextBeforeCursor(n, flags);
     }
 
     public CharSequence getTextAfterCursor(final int n, final int flags) {
         mIC = mParent.getCurrentInputConnection();
-        if (null != mIC) return mIC.getTextAfterCursor(n, flags);
-        return null;
+        return (null == mIC) ? null : mIC.getTextAfterCursor(n, flags);
     }
 
     public void deleteSurroundingText(final int beforeLength, final int afterLength) {
         if (DEBUG_BATCH_NESTING) checkBatchEdit();
+        // TODO: the following is incorrect if the cursor is not immediately after the composition.
+        // Right now we never come here in this case because we reset the composing state before we
+        // come here in this case, but we need to fix this.
         final int remainingChars = mComposingText.length() - beforeLength;
         if (remainingChars >= 0) {
             mComposingText.setLength(remainingChars);
@@ -336,16 +346,17 @@
                     + remainingChars, 0);
             mCommittedTextBeforeComposingText.setLength(len);
         }
-        if (mExpectedCursorPosition > beforeLength) {
-            mExpectedCursorPosition -= beforeLength;
+        if (mExpectedSelStart > beforeLength) {
+            mExpectedSelStart -= beforeLength;
+            mExpectedSelEnd -= beforeLength;
         } else {
-            mExpectedCursorPosition = 0;
+            // There are fewer characters before the cursor in the buffer than we are being asked to
+            // delete. Only delete what is there, and update the end with the amount deleted.
+            mExpectedSelEnd -= mExpectedSelStart;
+            mExpectedSelStart = 0;
         }
         if (null != mIC) {
             mIC.deleteSurroundingText(beforeLength, afterLength);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_deleteSurroundingText(beforeLength, afterLength);
-            }
         }
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
     }
@@ -354,9 +365,6 @@
         mIC = mParent.getCurrentInputConnection();
         if (null != mIC) {
             mIC.performEditorAction(actionId);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_performEditorAction(actionId);
-            }
         }
     }
 
@@ -373,7 +381,8 @@
             switch (keyEvent.getKeyCode()) {
             case KeyEvent.KEYCODE_ENTER:
                 mCommittedTextBeforeComposingText.append("\n");
-                mExpectedCursorPosition += 1;
+                mExpectedSelStart += 1;
+                mExpectedSelEnd = mExpectedSelStart;
                 break;
             case KeyEvent.KEYCODE_DEL:
                 if (0 == mComposingText.length()) {
@@ -385,26 +394,29 @@
                 } else {
                     mComposingText.delete(mComposingText.length() - 1, mComposingText.length());
                 }
-                if (mExpectedCursorPosition > 0) mExpectedCursorPosition -= 1;
+                if (mExpectedSelStart > 0 && mExpectedSelStart == mExpectedSelEnd) {
+                    // TODO: Handle surrogate pairs.
+                    mExpectedSelStart -= 1;
+                }
+                mExpectedSelEnd = mExpectedSelStart;
                 break;
             case KeyEvent.KEYCODE_UNKNOWN:
                 if (null != keyEvent.getCharacters()) {
                     mCommittedTextBeforeComposingText.append(keyEvent.getCharacters());
-                    mExpectedCursorPosition += keyEvent.getCharacters().length();
+                    mExpectedSelStart += keyEvent.getCharacters().length();
+                    mExpectedSelEnd = mExpectedSelStart;
                 }
                 break;
             default:
-                final String text = new String(new int[] { keyEvent.getUnicodeChar() }, 0, 1);
+                final String text = StringUtils.newSingleCodePointString(keyEvent.getUnicodeChar());
                 mCommittedTextBeforeComposingText.append(text);
-                mExpectedCursorPosition += text.length();
+                mExpectedSelStart += text.length();
+                mExpectedSelEnd = mExpectedSelStart;
                 break;
             }
         }
         if (null != mIC) {
             mIC.sendKeyEvent(keyEvent);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_sendKeyEvent(keyEvent);
-            }
         }
     }
 
@@ -415,8 +427,12 @@
                 getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE + (end - start), 0);
         mCommittedTextBeforeComposingText.setLength(0);
         if (!TextUtils.isEmpty(textBeforeCursor)) {
+            // The cursor is not necessarily at the end of the composing text, but we have its
+            // position in mExpectedSelStart and mExpectedSelEnd. In this case we want the start
+            // of the text, so we should use mExpectedSelStart. In other words, the composing
+            // text starts (mExpectedSelStart - start) characters before the end of textBeforeCursor
             final int indexOfStartOfComposingText =
-                    Math.max(textBeforeCursor.length() - (end - start), 0);
+                    Math.max(textBeforeCursor.length() - (mExpectedSelStart - start), 0);
             mComposingText.append(textBeforeCursor.subSequence(indexOfStartOfComposingText,
                     textBeforeCursor.length()));
             mCommittedTextBeforeComposingText.append(
@@ -430,32 +446,44 @@
     public void setComposingText(final CharSequence text, final int newCursorPosition) {
         if (DEBUG_BATCH_NESTING) checkBatchEdit();
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
-        mExpectedCursorPosition += text.length() - mComposingText.length();
+        mExpectedSelStart += text.length() - mComposingText.length();
+        mExpectedSelEnd = mExpectedSelStart;
         mComposingText.setLength(0);
         mComposingText.append(text);
-        // TODO: support values of i != 1. At this time, this is never called with i != 1.
+        // TODO: support values of newCursorPosition != 1. At this time, this is never called with
+        // newCursorPosition != 1.
         if (null != mIC) {
             mIC.setComposingText(text, newCursorPosition);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_setComposingText(text, newCursorPosition);
-            }
         }
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
     }
 
-    public void setSelection(final int start, final int end) {
+    /**
+     * Set the selection of the text editor.
+     *
+     * Calls through to {@link InputConnection#setSelection(int, int)}.
+     *
+     * @param start the character index where the selection should start.
+     * @param end the character index where the selection should end.
+     * @return Returns true on success, false on failure: either the input connection is no longer
+     * valid when setting the selection or when retrieving the text cache at that point, or
+     * invalid arguments were passed.
+     */
+    public boolean setSelection(final int start, final int end) {
         if (DEBUG_BATCH_NESTING) checkBatchEdit();
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
+        if (start < 0 || end < 0) {
+            return false;
+        }
+        mExpectedSelStart = start;
+        mExpectedSelEnd = end;
         if (null != mIC) {
-            mIC.setSelection(start, end);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_setSelection(start, end);
+            final boolean isIcValid = mIC.setSelection(start, end);
+            if (!isIcValid) {
+                return false;
             }
         }
-        mExpectedCursorPosition = start;
-        mCommittedTextBeforeComposingText.setLength(0);
-        mCommittedTextBeforeComposingText.append(
-                getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE, 0));
+        return reloadTextCache();
     }
 
     public void commitCorrection(final CorrectionInfo correctionInfo) {
@@ -476,26 +504,30 @@
         // text should never be null, but just in case, it's better to insert nothing than to crash
         if (null == text) text = "";
         mCommittedTextBeforeComposingText.append(text);
-        mExpectedCursorPosition += text.length() - mComposingText.length();
+        mExpectedSelStart += text.length() - mComposingText.length();
+        mExpectedSelEnd = mExpectedSelStart;
         mComposingText.setLength(0);
         if (null != mIC) {
             mIC.commitCompletion(completionInfo);
-            if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                ResearchLogger.richInputConnection_commitCompletion(completionInfo);
-            }
         }
         if (DEBUG_PREVIOUS_TEXT) checkConsistencyForDebug();
     }
 
     @SuppressWarnings("unused")
-    public String getNthPreviousWord(final String sentenceSeperators, final int n) {
+    public PrevWordsInfo getPrevWordsInfoFromNthPreviousWord(
+            final SpacingAndPunctuations spacingAndPunctuations, final int n) {
         mIC = mParent.getCurrentInputConnection();
-        if (null == mIC) return null;
+        if (null == mIC) {
+            return PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+        }
         final CharSequence prev = getTextBeforeCursor(LOOKBACK_CHARACTER_NUM, 0);
         if (DEBUG_PREVIOUS_TEXT && null != prev) {
             final int checkLength = LOOKBACK_CHARACTER_NUM - 1;
             final String reference = prev.length() <= checkLength ? prev.toString()
                     : prev.subSequence(prev.length() - checkLength, prev.length()).toString();
+            // TODO: right now the following works because mComposingText holds the part of the
+            // composing text that is before the cursor, but this is very confusing. We should
+            // fix it.
             final StringBuilder internal = new StringBuilder()
                     .append(mCommittedTextBeforeComposingText).append(mComposingText);
             if (internal.length() > checkLength) {
@@ -507,71 +539,24 @@
                 }
             }
         }
-        return getNthPreviousWord(prev, sentenceSeperators, n);
+        return PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                prev, spacingAndPunctuations, n);
     }
 
-    private static boolean isSeparator(int code, String sep) {
-        return sep.indexOf(code) != -1;
-    }
-
-    // Get the nth word before cursor. n = 1 retrieves the word immediately before the cursor,
-    // n = 2 retrieves the word before that, and so on. This splits on whitespace only.
-    // Also, it won't return words that end in a separator (if the nth word before the cursor
-    // ends in a separator, it returns null).
-    // Example :
-    // (n = 1) "abc def|" -> def
-    // (n = 1) "abc def |" -> def
-    // (n = 1) "abc def. |" -> null
-    // (n = 1) "abc def . |" -> null
-    // (n = 2) "abc def|" -> abc
-    // (n = 2) "abc def |" -> abc
-    // (n = 2) "abc def. |" -> abc
-    // (n = 2) "abc def . |" -> def
-    // (n = 2) "abc|" -> null
-    // (n = 2) "abc |" -> null
-    // (n = 2) "abc. def|" -> null
-    public static String getNthPreviousWord(final CharSequence prev,
-            final String sentenceSeperators, final int n) {
-        if (prev == null) return null;
-        final String[] w = spaceRegex.split(prev);
-
-        // If we can't find n words, or we found an empty word, return null.
-        if (w.length < n) return null;
-        final String nthPrevWord = w[w.length - n];
-        final int length = nthPrevWord.length();
-        if (length <= 0) return null;
-
-        // If ends in a separator, return null
-        final char lastChar = nthPrevWord.charAt(length - 1);
-        if (sentenceSeperators.contains(String.valueOf(lastChar))) return null;
-
-        return nthPrevWord;
-    }
-
-    /**
-     * @param separators characters which may separate words
-     * @return the word that surrounds the cursor, including up to one trailing
-     *   separator. For example, if the field contains "he|llo world", where |
-     *   represents the cursor, then "hello " will be returned.
-     */
-    public CharSequence getWordAtCursor(String separators) {
-        // getWordRangeAtCursor returns null if the connection is null
-        TextRange r = getWordRangeAtCursor(separators, 0);
-        return (r == null) ? null : r.mWord;
+    private static boolean isSeparator(final int code, final int[] sortedSeparators) {
+        return Arrays.binarySearch(sortedSeparators, code) >= 0;
     }
 
     /**
      * Returns the text surrounding the cursor.
      *
-     * @param sep a string of characters that split words.
-     * @param additionalPrecedingWordsCount the number of words before the current word that should
-     *   be included in the returned range
+     * @param sortedSeparators a sorted array of code points that split words.
+     * @param scriptId the script we consider to be writing words, as one of ScriptUtils.SCRIPT_*
      * @return a range containing the text surrounding the cursor
      */
-    public TextRange getWordRangeAtCursor(final String sep,
-            final int additionalPrecedingWordsCount) {
+    public TextRange getWordRangeAtCursor(final int[] sortedSeparators, final int scriptId) {
         mIC = mParent.getCurrentInputConnection();
-        if (mIC == null || sep == null) {
+        if (mIC == null) {
             return null;
         }
         final CharSequence before = mIC.getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE,
@@ -582,36 +567,26 @@
             return null;
         }
 
-        // Going backward, alternate skipping non-separators and separators until enough words
-        // have been read.
-        int count = additionalPrecedingWordsCount;
+        // Going backward, find the first breaking point (separator)
         int startIndexInBefore = before.length();
-        boolean isStoppingAtWhitespace = true;  // toggles to indicate what to stop at
-        while (true) { // see comments below for why this is guaranteed to halt
-            while (startIndexInBefore > 0) {
-                final int codePoint = Character.codePointBefore(before, startIndexInBefore);
-                if (isStoppingAtWhitespace == isSeparator(codePoint, sep)) {
-                    break;  // inner loop
-                }
+        while (startIndexInBefore > 0) {
+            final int codePoint = Character.codePointBefore(before, startIndexInBefore);
+            if (isSeparator(codePoint, sortedSeparators)
+                    || !ScriptUtils.isLetterPartOfScript(codePoint, scriptId)) {
+                break;
+            }
+            --startIndexInBefore;
+            if (Character.isSupplementaryCodePoint(codePoint)) {
                 --startIndexInBefore;
-                if (Character.isSupplementaryCodePoint(codePoint)) {
-                    --startIndexInBefore;
-                }
             }
-            // isStoppingAtWhitespace is true every other time through the loop,
-            // so additionalPrecedingWordsCount is guaranteed to become < 0, which
-            // guarantees outer loop termination
-            if (isStoppingAtWhitespace && (--count < 0)) {
-                break;  // outer loop
-            }
-            isStoppingAtWhitespace = !isStoppingAtWhitespace;
         }
 
         // Find last word separator after the cursor
         int endIndexInAfter = -1;
         while (++endIndexInAfter < after.length()) {
             final int codePoint = Character.codePointAt(after, endIndexInAfter);
-            if (isSeparator(codePoint, sep)) {
+            if (isSeparator(codePoint, sortedSeparators)
+                    || !ScriptUtils.isLetterPartOfScript(codePoint, scriptId)) {
                 break;
             }
             if (Character.isSupplementaryCodePoint(codePoint)) {
@@ -619,27 +594,50 @@
             }
         }
 
+        final boolean hasUrlSpans =
+                SpannableStringUtils.hasUrlSpans(before, startIndexInBefore, before.length())
+                || SpannableStringUtils.hasUrlSpans(after, 0, endIndexInAfter);
         // We don't use TextUtils#concat because it copies all spans without respect to their
         // nature. If the text includes a PARAGRAPH span and it has been split, then
         // TextUtils#concat will crash when it tries to concat both sides of it.
         return new TextRange(
                 SpannableStringUtils.concatWithNonParagraphSuggestionSpansOnly(before, after),
-                        startIndexInBefore, before.length() + endIndexInAfter, before.length());
+                        startIndexInBefore, before.length() + endIndexInAfter, before.length(),
+                        hasUrlSpans);
     }
 
-    public boolean isCursorTouchingWord(final SettingsValues settingsValues) {
-        final int codePointBeforeCursor = getCodePointBeforeCursor();
-        if (Constants.NOT_A_CODE != codePointBeforeCursor
-                && !settingsValues.isWordSeparator(codePointBeforeCursor)
-                && !settingsValues.isWordConnector(codePointBeforeCursor)) {
+    public boolean isCursorTouchingWord(final SpacingAndPunctuations spacingAndPunctuations) {
+        if (isCursorFollowedByWordCharacter(spacingAndPunctuations)) {
+            // If what's after the cursor is a word character, then we're touching a word.
             return true;
         }
+        final String textBeforeCursor = mCommittedTextBeforeComposingText.toString();
+        int indexOfCodePointInJavaChars = textBeforeCursor.length();
+        int consideredCodePoint = 0 == indexOfCodePointInJavaChars ? Constants.NOT_A_CODE
+                : textBeforeCursor.codePointBefore(indexOfCodePointInJavaChars);
+        // Search for the first non word-connector char
+        if (spacingAndPunctuations.isWordConnector(consideredCodePoint)) {
+            indexOfCodePointInJavaChars -= Character.charCount(consideredCodePoint);
+            consideredCodePoint = 0 == indexOfCodePointInJavaChars ? Constants.NOT_A_CODE
+                    : textBeforeCursor.codePointBefore(indexOfCodePointInJavaChars);
+        }
+        return !(Constants.NOT_A_CODE == consideredCodePoint
+                || spacingAndPunctuations.isWordSeparator(consideredCodePoint)
+                || spacingAndPunctuations.isWordConnector(consideredCodePoint));
+    }
+
+    public boolean isCursorFollowedByWordCharacter(
+            final SpacingAndPunctuations spacingAndPunctuations) {
         final CharSequence after = getTextAfterCursor(1, 0);
-        if (!TextUtils.isEmpty(after) && !settingsValues.isWordSeparator(after.charAt(0))
-                && !settingsValues.isWordConnector(after.charAt(0))) {
-            return true;
+        if (TextUtils.isEmpty(after)) {
+            return false;
         }
-        return false;
+        final int codePointAfterCursor = Character.codePointAt(after, 0);
+        if (spacingAndPunctuations.isWordSeparator(codePointAfterCursor)
+                || spacingAndPunctuations.isWordConnector(codePointAfterCursor)) {
+            return false;
+        }
+        return true;
     }
 
     public void removeTrailingSpace() {
@@ -655,57 +653,17 @@
         return TextUtils.equals(text, beforeText);
     }
 
-    /* (non-javadoc)
-     * Returns the word before the cursor if the cursor is at the end of a word, null otherwise
-     */
-    public CharSequence getWordBeforeCursorIfAtEndOfWord(final SettingsValues settings) {
-        // Bail out if the cursor is in the middle of a word (cursor must be followed by whitespace,
-        // separator or end of line/text)
-        // Example: "test|"<EOL> "te|st" get rejected here
-        final CharSequence textAfterCursor = getTextAfterCursor(1, 0);
-        if (!TextUtils.isEmpty(textAfterCursor)
-                && !settings.isWordSeparator(textAfterCursor.charAt(0))) return null;
-
-        // Bail out if word before cursor is 0-length or a single non letter (like an apostrophe)
-        // Example: " -|" gets rejected here but "e-|" and "e|" are okay
-        CharSequence word = getWordAtCursor(settings.mWordSeparators);
-        // We don't suggest on leading single quotes, so we have to remove them from the word if
-        // it starts with single quotes.
-        while (!TextUtils.isEmpty(word) && Constants.CODE_SINGLE_QUOTE == word.charAt(0)) {
-            word = word.subSequence(1, word.length());
-        }
-        if (TextUtils.isEmpty(word)) return null;
-        // Find the last code point of the string
-        final int lastCodePoint = Character.codePointBefore(word, word.length());
-        // If for some reason the text field contains non-unicode binary data, or if the
-        // charsequence is exactly one char long and the contents is a low surrogate, return null.
-        if (!Character.isDefined(lastCodePoint)) return null;
-        // Bail out if the cursor is not at the end of a word (cursor must be preceded by
-        // non-whitespace, non-separator, non-start-of-text)
-        // Example ("|" is the cursor here) : <SOL>"|a" " |a" " | " all get rejected here.
-        if (settings.isWordSeparator(lastCodePoint)) return null;
-        final char firstChar = word.charAt(0); // we just tested that word is not empty
-        if (word.length() == 1 && !Character.isLetter(firstChar)) return null;
-
-        // We don't restart suggestion if the first character is not a letter, because we don't
-        // start composing when the first character is not a letter.
-        if (!Character.isLetter(firstChar)) return null;
-
-        return word;
-    }
-
     public boolean revertDoubleSpacePeriod() {
         if (DEBUG_BATCH_NESTING) checkBatchEdit();
         // Here we test whether we indeed have a period and a space before us. This should not
         // be needed, but it's there just in case something went wrong.
         final CharSequence textBeforeCursor = getTextBeforeCursor(2, 0);
-        final String periodSpace = ". ";
-        if (!TextUtils.equals(periodSpace, textBeforeCursor)) {
+        if (!TextUtils.equals(Constants.STRING_PERIOD_AND_SPACE, textBeforeCursor)) {
             // Theoretically we should not be coming here if there isn't ". " before the
             // cursor, but the application may be changing the text while we are typing, so
             // anything goes. We should not crash.
             Log.d(TAG, "Tried to revert double-space combo but we didn't find "
-                    + "\"" + periodSpace + "\" just before the cursor.");
+                    + "\"" + Constants.STRING_PERIOD_AND_SPACE + "\" just before the cursor.");
             return false;
         }
         // Double-space results in ". ". A backspace to cancel this should result in a single
@@ -713,9 +671,6 @@
         deleteSurroundingText(2, 0);
         final String singleSpace = " ";
         commitText(singleSpace, 1);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.richInputConnection_revertDoubleSpacePeriod();
-        }
         return true;
     }
 
@@ -738,9 +693,6 @@
         deleteSurroundingText(2, 0);
         final String text = " " + textBeforeCursor.subSequence(0, 1);
         commitText(text, 1);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.richInputConnection_revertSwapPunctuation();
-        }
         return true;
     }
 
@@ -758,20 +710,30 @@
      * this update and not the ones in-between. This is almost impossible to achieve even trying
      * very very hard.
      *
-     * @param oldSelStart The value of the old cursor position in the update.
-     * @param newSelStart The value of the new cursor position in the update.
+     * @param oldSelStart The value of the old selection in the update.
+     * @param newSelStart The value of the new selection in the update.
+     * @param oldSelEnd The value of the old selection end in the update.
+     * @param newSelEnd The value of the new selection end in the update.
      * @return whether this is a belated expected update or not.
      */
-    public boolean isBelatedExpectedUpdate(final int oldSelStart, final int newSelStart) {
-        // If this is an update that arrives at our expected position, it's a belated update.
-        if (newSelStart == mExpectedCursorPosition) return true;
-        // If this is an update that moves the cursor from our expected position, it must be
-        // an explicit move.
-        if (oldSelStart == mExpectedCursorPosition) return false;
-        // The following returns true if newSelStart is between oldSelStart and
-        // mCurrentCursorPosition. We assume that if the updated position is between the old
-        // position and the expected position, then it must be a belated update.
-        return (newSelStart - oldSelStart) * (mExpectedCursorPosition - newSelStart) >= 0;
+    public boolean isBelatedExpectedUpdate(final int oldSelStart, final int newSelStart,
+            final int oldSelEnd, final int newSelEnd) {
+        // This update is "belated" if we are expecting it. That is, mExpectedSelStart and
+        // mExpectedSelEnd match the new values that the TextView is updating TO.
+        if (mExpectedSelStart == newSelStart && mExpectedSelEnd == newSelEnd) return true;
+        // This update is not belated if mExpectedSelStart and mExpectedSelEnd match the old
+        // values, and one of newSelStart or newSelEnd is updated to a different value. In this
+        // case, it is likely that something other than the IME has moved the selection endpoint
+        // to the new value.
+        if (mExpectedSelStart == oldSelStart && mExpectedSelEnd == oldSelEnd
+                && (oldSelStart != newSelStart || oldSelEnd != newSelEnd)) return false;
+        // If neither of the above two cases hold, then the system may be having trouble keeping up
+        // with updates. If 1) the selection is a cursor, 2) newSelStart is between oldSelStart
+        // and mExpectedSelStart, and 3) newSelEnd is between oldSelEnd and mExpectedSelEnd, then
+        // assume a belated update.
+        return (newSelStart == newSelEnd)
+                && (newSelStart - oldSelStart) * (mExpectedSelStart - newSelStart) >= 0
+                && (newSelEnd - oldSelEnd) * (mExpectedSelEnd - newSelEnd) >= 0;
     }
 
     /**
@@ -784,4 +746,69 @@
     public boolean textBeforeCursorLooksLikeURL() {
         return StringUtils.lastPartLooksLikeURL(mCommittedTextBeforeComposingText);
     }
+
+    /**
+     * Looks at the text just before the cursor to find out if we are inside a double quote.
+     *
+     * As with #textBeforeCursorLooksLikeURL, this is dependent on how much text we have cached.
+     * However this won't be a concrete problem in most situations, as the cache is almost always
+     * long enough for this use.
+     */
+    public boolean isInsideDoubleQuoteOrAfterDigit() {
+        return StringUtils.isInsideDoubleQuoteOrAfterDigit(mCommittedTextBeforeComposingText);
+    }
+
+    /**
+     * Try to get the text from the editor to expose lies the framework may have been
+     * telling us. Concretely, when the device rotates, the frameworks tells us about where the
+     * cursor used to be initially in the editor at the time it first received the focus; this
+     * may be completely different from the place it is upon rotation. Since we don't have any
+     * means to get the real value, try at least to ask the text view for some characters and
+     * detect the most damaging cases: when the cursor position is declared to be much smaller
+     * than it really is.
+     */
+    public void tryFixLyingCursorPosition() {
+        final CharSequence textBeforeCursor = getTextBeforeCursor(
+                Constants.EDITOR_CONTENTS_CACHE_SIZE, 0);
+        if (null == textBeforeCursor) {
+            mExpectedSelStart = mExpectedSelEnd = Constants.NOT_A_CURSOR_POSITION;
+        } else {
+            final int textLength = textBeforeCursor.length();
+            if (textLength < Constants.EDITOR_CONTENTS_CACHE_SIZE
+                    && (textLength > mExpectedSelStart
+                            ||  mExpectedSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
+                // It should not be possible to have only one of those variables be
+                // NOT_A_CURSOR_POSITION, so if they are equal, either the selection is zero-sized
+                // (simple cursor, no selection) or there is no cursor/we don't know its pos
+                final boolean wasEqual = mExpectedSelStart == mExpectedSelEnd;
+                mExpectedSelStart = textLength;
+                // We can't figure out the value of mLastSelectionEnd :(
+                // But at least if it's smaller than mLastSelectionStart something is wrong,
+                // and if they used to be equal we also don't want to make it look like there is a
+                // selection.
+                if (wasEqual || mExpectedSelStart > mExpectedSelEnd) {
+                    mExpectedSelEnd = mExpectedSelStart;
+                }
+            }
+        }
+    }
+
+    public int getExpectedSelectionStart() {
+        return mExpectedSelStart;
+    }
+
+    public int getExpectedSelectionEnd() {
+        return mExpectedSelEnd;
+    }
+
+    /**
+     * @return whether there is a selection currently active.
+     */
+    public boolean hasSelection() {
+        return mExpectedSelEnd != mExpectedSelStart;
+    }
+
+    public boolean isCursorPositionKnown() {
+        return INVALID_CURSOR_POSITION != mExpectedSelStart;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
index 6b6bbf3..7cf4eff 100644
--- a/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
+++ b/java/src/com/android/inputmethod/latin/RichInputMethodManager.java
@@ -20,6 +20,7 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.os.Build;
 import android.os.IBinder;
 import android.preference.PreferenceManager;
 import android.util.Log;
@@ -30,7 +31,6 @@
 import com.android.inputmethod.compat.InputMethodManagerCompatWrapper;
 import com.android.inputmethod.latin.settings.Settings;
 import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
 import java.util.Collections;
@@ -50,11 +50,11 @@
     private static final RichInputMethodManager sInstance = new RichInputMethodManager();
 
     private InputMethodManagerCompatWrapper mImmWrapper;
-    private InputMethodInfo mInputMethodInfoOfThisIme;
+    private InputMethodInfoCache mInputMethodInfoCache;
     final HashMap<InputMethodInfo, List<InputMethodSubtype>>
-            mSubtypeListCacheWithImplicitlySelectedSubtypes = CollectionUtils.newHashMap();
+            mSubtypeListCacheWithImplicitlySelectedSubtypes = new HashMap<>();
     final HashMap<InputMethodInfo, List<InputMethodSubtype>>
-            mSubtypeListCacheWithoutImplicitlySelectedSubtypes = CollectionUtils.newHashMap();
+            mSubtypeListCacheWithoutImplicitlySelectedSubtypes = new HashMap<>();
 
     private static final int INDEX_NOT_FOUND = -1;
 
@@ -64,8 +64,7 @@
     }
 
     public static void init(final Context context) {
-        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        sInstance.initInternal(context, prefs);
+        sInstance.initInternal(context);
     }
 
     private boolean isInitialized() {
@@ -78,20 +77,26 @@
         }
     }
 
-    private void initInternal(final Context context, final SharedPreferences prefs) {
+    private void initInternal(final Context context) {
         if (isInitialized()) {
             return;
         }
         mImmWrapper = new InputMethodManagerCompatWrapper(context);
-        mInputMethodInfoOfThisIme = getInputMethodInfoOfThisIme(context);
+        mInputMethodInfoCache = new InputMethodInfoCache(
+                mImmWrapper.mImm, context.getPackageName());
 
         // Initialize additional subtypes.
         SubtypeLocaleUtils.init(context);
+        final InputMethodSubtype[] additionalSubtypes = getAdditionalSubtypes(context);
+        setAdditionalInputMethodSubtypes(additionalSubtypes);
+    }
+
+    public InputMethodSubtype[] getAdditionalSubtypes(final Context context) {
+        SubtypeLocaleUtils.init(context);
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
         final String prefAdditionalSubtypes = Settings.readPrefAdditionalSubtypes(
                 prefs, context.getResources());
-        final InputMethodSubtype[] additionalSubtypes =
-                AdditionalSubtypeUtils.createAdditionalSubtypesArray(prefAdditionalSubtypes);
-        setAdditionalInputMethodSubtypes(additionalSubtypes);
+        return AdditionalSubtypeUtils.createAdditionalSubtypesArray(prefAdditionalSubtypes);
     }
 
     public InputMethodManager getInputMethodManager() {
@@ -99,20 +104,10 @@
         return mImmWrapper.mImm;
     }
 
-    private InputMethodInfo getInputMethodInfoOfThisIme(final Context context) {
-        final String packageName = context.getPackageName();
-        for (final InputMethodInfo imi : mImmWrapper.mImm.getInputMethodList()) {
-            if (imi.getPackageName().equals(packageName)) {
-                return imi;
-            }
-        }
-        throw new RuntimeException("Input method id for " + packageName + " not found.");
-    }
-
     public List<InputMethodSubtype> getMyEnabledInputMethodSubtypeList(
             boolean allowsImplicitlySelectedSubtypes) {
-        return getEnabledInputMethodSubtypeList(mInputMethodInfoOfThisIme,
-                allowsImplicitlySelectedSubtypes);
+        return getEnabledInputMethodSubtypeList(
+                getInputMethodInfoOfThisIme(), allowsImplicitlySelectedSubtypes);
     }
 
     public boolean switchToNextInputMethod(final IBinder token, final boolean onlyCurrentIme) {
@@ -153,10 +148,10 @@
     private boolean switchToNextInputMethodAndSubtype(final IBinder token) {
         final InputMethodManager imm = mImmWrapper.mImm;
         final List<InputMethodInfo> enabledImis = imm.getEnabledInputMethodList();
-        final int currentIndex = getImiIndexInList(mInputMethodInfoOfThisIme, enabledImis);
+        final int currentIndex = getImiIndexInList(getInputMethodInfoOfThisIme(), enabledImis);
         if (currentIndex == INDEX_NOT_FOUND) {
             Log.w(TAG, "Can't find current IME in enabled IMEs: IME package="
-                    + mInputMethodInfoOfThisIme.getPackageName());
+                    + getInputMethodInfoOfThisIme().getPackageName());
             return false;
         }
         final InputMethodInfo nextImi = getNextNonAuxiliaryIme(currentIndex, enabledImis);
@@ -213,16 +208,45 @@
         return true;
     }
 
+    private static class InputMethodInfoCache {
+        private final InputMethodManager mImm;
+        private final String mImePackageName;
+
+        private InputMethodInfo mCachedValue;
+
+        public InputMethodInfoCache(final InputMethodManager imm, final String imePackageName) {
+            mImm = imm;
+            mImePackageName = imePackageName;
+        }
+
+        public synchronized InputMethodInfo get() {
+            if (mCachedValue != null) {
+                return mCachedValue;
+            }
+            for (final InputMethodInfo imi : mImm.getInputMethodList()) {
+                if (imi.getPackageName().equals(mImePackageName)) {
+                    mCachedValue = imi;
+                    return imi;
+                }
+            }
+            throw new RuntimeException("Input method id for " + mImePackageName + " not found.");
+        }
+
+        public synchronized void clear() {
+            mCachedValue = null;
+        }
+    }
+
     public InputMethodInfo getInputMethodInfoOfThisIme() {
-        return mInputMethodInfoOfThisIme;
+        return mInputMethodInfoCache.get();
     }
 
     public String getInputMethodIdOfThisIme() {
-        return mInputMethodInfoOfThisIme.getId();
+        return getInputMethodInfoOfThisIme().getId();
     }
 
     public boolean checkIfSubtypeBelongsToThisImeAndEnabled(final InputMethodSubtype subtype) {
-        return checkIfSubtypeBelongsToImeAndEnabled(mInputMethodInfoOfThisIme, subtype);
+        return checkIfSubtypeBelongsToImeAndEnabled(getInputMethodInfoOfThisIme(), subtype);
     }
 
     public boolean checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(
@@ -258,7 +282,7 @@
     }
 
     public boolean checkIfSubtypeBelongsToThisIme(final InputMethodSubtype subtype) {
-        return getSubtypeIndexInIme(subtype, mInputMethodInfoOfThisIme) != INDEX_NOT_FOUND;
+        return getSubtypeIndexInIme(subtype, getInputMethodInfoOfThisIme()) != INDEX_NOT_FOUND;
     }
 
     private static int getSubtypeIndexInIme(final InputMethodSubtype subtype,
@@ -286,7 +310,8 @@
 
     public boolean hasMultipleEnabledSubtypesInThisIme(
             final boolean shouldIncludeAuxiliarySubtypes) {
-        final List<InputMethodInfo> imiList = Collections.singletonList(mInputMethodInfoOfThisIme);
+        final List<InputMethodInfo> imiList = Collections.singletonList(
+                getInputMethodInfoOfThisIme());
         return hasMultipleEnabledSubtypes(shouldIncludeAuxiliarySubtypes, imiList);
     }
 
@@ -340,7 +365,7 @@
 
     public InputMethodSubtype findSubtypeByLocaleAndKeyboardLayoutSet(final String localeString,
             final String keyboardLayoutSetName) {
-        final InputMethodInfo myImi = mInputMethodInfoOfThisIme;
+        final InputMethodInfo myImi = getInputMethodInfoOfThisIme();
         final int count = myImi.getSubtypeCount();
         for (int i = 0; i < count; i++) {
             final InputMethodSubtype subtype = myImi.getSubtypeAt(i);
@@ -355,13 +380,14 @@
 
     public void setInputMethodAndSubtype(final IBinder token, final InputMethodSubtype subtype) {
         mImmWrapper.mImm.setInputMethodAndSubtype(
-                token, mInputMethodInfoOfThisIme.getId(), subtype);
+                token, getInputMethodIdOfThisIme(), subtype);
     }
 
     public void setAdditionalInputMethodSubtypes(final InputMethodSubtype[] subtypes) {
         mImmWrapper.mImm.setAdditionalInputMethodSubtypes(
-                mInputMethodInfoOfThisIme.getId(), subtypes);
-        // Clear the cache so that we go read the subtypes again next time.
+                getInputMethodIdOfThisIme(), subtypes);
+        // Clear the cache so that we go read the {@link InputMethodInfo} of this IME and list of
+        // subtypes again next time.
         clearSubtypeCaches();
     }
 
@@ -382,5 +408,17 @@
     public void clearSubtypeCaches() {
         mSubtypeListCacheWithImplicitlySelectedSubtypes.clear();
         mSubtypeListCacheWithoutImplicitlySelectedSubtypes.clear();
+        mInputMethodInfoCache.clear();
+    }
+
+    public boolean shouldOfferSwitchingToNextInputMethod(final IBinder binder,
+            boolean defaultValue) {
+        // Use the default value instead on Jelly Bean MR2 and previous where
+        // {@link InputMethodManager#shouldOfferSwitchingToNextInputMethod} isn't yet available
+        // and on KitKat where the API is still just a stub to return true always.
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
+            return defaultValue;
+        }
+        return mImmWrapper.shouldOfferSwitchingToNextInputMethod(binder);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index cd9c89f..a725e16 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -32,64 +32,64 @@
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
 import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.utils.LocaleUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
 public final class SubtypeSwitcher {
-    private static boolean DBG = LatinImeLogger.sDBG;
+    private static boolean DBG = DebugFlags.DEBUG_ENABLED;
     private static final String TAG = SubtypeSwitcher.class.getSimpleName();
 
     private static final SubtypeSwitcher sInstance = new SubtypeSwitcher();
 
     private /* final */ RichInputMethodManager mRichImm;
     private /* final */ Resources mResources;
-    private /* final */ ConnectivityManager mConnectivityManager;
 
-    private final NeedsToDisplayLanguage mNeedsToDisplayLanguage = new NeedsToDisplayLanguage();
+    private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
+            new LanguageOnSpacebarHelper();
     private InputMethodInfo mShortcutInputMethodInfo;
     private InputMethodSubtype mShortcutSubtype;
     private InputMethodSubtype mNoLanguageSubtype;
     private InputMethodSubtype mEmojiSubtype;
     private boolean mIsNetworkConnected;
 
+    private static final String KEYBOARD_MODE = "keyboard";
     // Dummy no language QWERTY subtype. See {@link R.xml.method}.
-    private static final InputMethodSubtype DUMMY_NO_LANGUAGE_SUBTYPE = new InputMethodSubtype(
-            R.string.subtype_no_language_qwerty, R.drawable.ic_ime_switcher_dark,
-            SubtypeLocaleUtils.NO_LANGUAGE, "keyboard", "KeyboardLayoutSet="
-                    + SubtypeLocaleUtils.QWERTY
-                    + "," + Constants.Subtype.ExtraValue.ASCII_CAPABLE
-                    + ",EnabledWhenDefaultIsNotAsciiCapable,"
-                    + Constants.Subtype.ExtraValue.EMOJI_CAPABLE,
-            false /* isAuxiliary */, false /* overridesImplicitlyEnabledSubtype */);
+    private static final int SUBTYPE_ID_OF_DUMMY_NO_LANGUAGE_SUBTYPE = 0xdde0bfd3;
+    private static final String EXTRA_VALUE_OF_DUMMY_NO_LANGUAGE_SUBTYPE =
+            "KeyboardLayoutSet=" + SubtypeLocaleUtils.QWERTY
+            + "," + Constants.Subtype.ExtraValue.ASCII_CAPABLE
+            + "," + Constants.Subtype.ExtraValue.ENABLED_WHEN_DEFAULT_IS_NOT_ASCII_CAPABLE
+            + "," + Constants.Subtype.ExtraValue.EMOJI_CAPABLE;
+    private static final InputMethodSubtype DUMMY_NO_LANGUAGE_SUBTYPE =
+            InputMethodSubtypeCompatUtils.newInputMethodSubtype(
+                    R.string.subtype_no_language_qwerty, R.drawable.ic_ime_switcher_dark,
+                    SubtypeLocaleUtils.NO_LANGUAGE, KEYBOARD_MODE,
+                    EXTRA_VALUE_OF_DUMMY_NO_LANGUAGE_SUBTYPE,
+                    false /* isAuxiliary */, false /* overridesImplicitlyEnabledSubtype */,
+                    SUBTYPE_ID_OF_DUMMY_NO_LANGUAGE_SUBTYPE);
     // Caveat: We probably should remove this when we add an Emoji subtype in {@link R.xml.method}.
     // Dummy Emoji subtype. See {@link R.xml.method}.
-    private static final InputMethodSubtype DUMMY_EMOJI_SUBTYPE = new InputMethodSubtype(
-            R.string.subtype_emoji, R.drawable.ic_ime_switcher_dark,
-            SubtypeLocaleUtils.NO_LANGUAGE, "keyboard", "KeyboardLayoutSet="
-                    + SubtypeLocaleUtils.EMOJI + ","
-                    + Constants.Subtype.ExtraValue.EMOJI_CAPABLE,
-            false /* isAuxiliary */, false /* overridesImplicitlyEnabledSubtype */);
-
-    static final class NeedsToDisplayLanguage {
-        private int mEnabledSubtypeCount;
-        private boolean mIsSystemLanguageSameAsInputLanguage;
-
-        public boolean getValue() {
-            return mEnabledSubtypeCount >= 2 || !mIsSystemLanguageSameAsInputLanguage;
-        }
-
-        public void updateEnabledSubtypeCount(final int count) {
-            mEnabledSubtypeCount = count;
-        }
-
-        public void updateIsSystemLanguageSameAsInputLanguage(final boolean isSame) {
-            mIsSystemLanguageSameAsInputLanguage = isSame;
-        }
-    }
+    private static final int SUBTYPE_ID_OF_DUMMY_EMOJI_SUBTYPE = 0xd78b2ed0;
+    private static final String EXTRA_VALUE_OF_DUMMY_EMOJI_SUBTYPE =
+            "KeyboardLayoutSet=" + SubtypeLocaleUtils.EMOJI
+            + "," + Constants.Subtype.ExtraValue.EMOJI_CAPABLE;
+    private static final InputMethodSubtype DUMMY_EMOJI_SUBTYPE =
+            InputMethodSubtypeCompatUtils.newInputMethodSubtype(
+                    R.string.subtype_emoji, R.drawable.ic_ime_switcher_dark,
+                    SubtypeLocaleUtils.NO_LANGUAGE, KEYBOARD_MODE,
+                    EXTRA_VALUE_OF_DUMMY_EMOJI_SUBTYPE,
+                    false /* isAuxiliary */, false /* overridesImplicitlyEnabledSubtype */,
+                    SUBTYPE_ID_OF_DUMMY_EMOJI_SUBTYPE);
 
     public static SubtypeSwitcher getInstance() {
         return sInstance;
@@ -111,10 +111,10 @@
         }
         mResources = context.getResources();
         mRichImm = RichInputMethodManager.getInstance();
-        mConnectivityManager = (ConnectivityManager) context.getSystemService(
+        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(
                 Context.CONNECTIVITY_SERVICE);
 
-        final NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
+        final NetworkInfo info = connectivityManager.getActiveNetworkInfo();
         mIsNetworkConnected = (info != null && info.isConnected());
 
         onSubtypeChanged(getCurrentSubtype());
@@ -128,7 +128,7 @@
     public void updateParametersOnStartInputView() {
         final List<InputMethodSubtype> enabledSubtypesOfThisIme =
                 mRichImm.getMyEnabledInputMethodSubtypeList(true);
-        mNeedsToDisplayLanguage.updateEnabledSubtypeCount(enabledSubtypesOfThisIme.size());
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(enabledSubtypesOfThisIme);
         updateShortcutIME();
     }
 
@@ -177,7 +177,7 @@
         final boolean sameLanguage = systemLocale.getLanguage().equals(newLocale.getLanguage());
         final boolean implicitlyEnabled =
                 mRichImm.checkIfSubtypeBelongsToThisImeAndImplicitlyEnabled(newSubtype);
-        mNeedsToDisplayLanguage.updateIsSystemLanguageSameAsInputLanguage(
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(
                 sameLocale || (sameLanguage && implicitlyEnabled));
 
         updateShortcutIME();
@@ -213,6 +213,7 @@
     }
 
     public boolean isShortcutImeEnabled() {
+        updateShortcutIME();
         if (mShortcutInputMethodInfo == null) {
             return false;
         }
@@ -224,10 +225,13 @@
     }
 
     public boolean isShortcutImeReady() {
-        if (mShortcutInputMethodInfo == null)
+        updateShortcutIME();
+        if (mShortcutInputMethodInfo == null) {
             return false;
-        if (mShortcutSubtype == null)
+        }
+        if (mShortcutSubtype == null) {
             return true;
+        }
         if (mShortcutSubtype.containsExtraValueKey(REQ_NETWORK_CONNECTIVITY)) {
             return mIsNetworkConnected;
         }
@@ -246,28 +250,52 @@
     // Subtype Switching functions //
     //////////////////////////////////
 
-    public boolean needsToDisplayLanguage(final Locale keyboardLocale) {
-        if (keyboardLocale.toString().equals(SubtypeLocaleUtils.NO_LANGUAGE)) {
-            return true;
-        }
-        if (!keyboardLocale.equals(getCurrentSubtypeLocale())) {
-            return false;
-        }
-        return mNeedsToDisplayLanguage.getValue();
+    public int getLanguageOnSpacebarFormatType(final InputMethodSubtype subtype) {
+        return mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(subtype);
     }
 
-    private static Locale sForcedLocaleForTesting = null;
+    public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
+        final Locale systemLocale = mResources.getConfiguration().locale;
+        final Set<InputMethodSubtype> enabledSubtypesOfEnabledImes = new HashSet<>();
+        final InputMethodManager inputMethodManager = mRichImm.getInputMethodManager();
+        final List<InputMethodInfo> enabledInputMethodInfoList =
+                inputMethodManager.getEnabledInputMethodList();
+        for (final InputMethodInfo info : enabledInputMethodInfoList) {
+            final List<InputMethodSubtype> enabledSubtypes =
+                    inputMethodManager.getEnabledInputMethodSubtypeList(
+                            info, true /* allowsImplicitlySelectedSubtypes */);
+            if (enabledSubtypes.isEmpty()) {
+                // An IME with no subtypes is found.
+                return false;
+            }
+            enabledSubtypesOfEnabledImes.addAll(enabledSubtypes);
+        }
+        for (final InputMethodSubtype subtype : enabledSubtypesOfEnabledImes) {
+            if (!subtype.isAuxiliary() && !subtype.getLocale().isEmpty()
+                    && !systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static InputMethodSubtype sForcedSubtypeForTesting = null;
     @UsedForTesting
-    void forceLocale(final Locale locale) {
-        sForcedLocaleForTesting = locale;
+    void forceSubtype(final InputMethodSubtype subtype) {
+        sForcedSubtypeForTesting = subtype;
     }
 
     public Locale getCurrentSubtypeLocale() {
-        if (null != sForcedLocaleForTesting) return sForcedLocaleForTesting;
+        if (null != sForcedSubtypeForTesting) {
+            return LocaleUtils.constructLocaleFromString(sForcedSubtypeForTesting.getLocale());
+        }
         return SubtypeLocaleUtils.getSubtypeLocale(getCurrentSubtype());
     }
 
     public InputMethodSubtype getCurrentSubtype() {
+        if (null != sForcedSubtypeForTesting) {
+            return sForcedSubtypeForTesting;
+        }
         return mRichImm.getCurrentInputMethodSubtype(getNoLanguageSubtype());
     }
 
@@ -279,8 +307,8 @@
         if (mNoLanguageSubtype != null) {
             return mNoLanguageSubtype;
         }
-        Log.w(TAG, "Can't find no lanugage with QWERTY subtype");
-        Log.w(TAG, "No input method subtype found; return dummy subtype: "
+        Log.w(TAG, "Can't find any language with QWERTY subtype");
+        Log.w(TAG, "No input method subtype found; returning dummy subtype: "
                 + DUMMY_NO_LANGUAGE_SUBTYPE);
         return DUMMY_NO_LANGUAGE_SUBTYPE;
     }
@@ -293,8 +321,13 @@
         if (mEmojiSubtype != null) {
             return mEmojiSubtype;
         }
-        Log.w(TAG, "Can't find Emoji subtype");
-        Log.w(TAG, "No input method subtype found; return dummy subtype: " + DUMMY_EMOJI_SUBTYPE);
+        Log.w(TAG, "Can't find emoji subtype");
+        Log.w(TAG, "No input method subtype found; returning dummy subtype: "
+                + DUMMY_EMOJI_SUBTYPE);
         return DUMMY_EMOJI_SUBTYPE;
     }
+
+    public String getCombiningRulesExtraValueOfCurrentSubtype() {
+        return SubtypeLocaleUtils.getCombiningRulesExtraValue(getCurrentSubtype());
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 0a4c7a5..b8b6d64 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -16,28 +16,19 @@
 
 package com.android.inputmethod.latin;
 
-import android.content.Context;
-import android.preference.PreferenceManager;
 import android.text.TextUtils;
-import android.util.Log;
 
-import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.personalization.PersonalizationDictionary;
-import com.android.inputmethod.latin.personalization.PersonalizationPredictionDictionary;
-import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
-import com.android.inputmethod.latin.settings.Settings;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
 import com.android.inputmethod.latin.utils.AutoCorrectionUtils;
-import com.android.inputmethod.latin.utils.BoundedTreeSet;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.SuggestionResults;
 
 import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashSet;
 import java.util.Locale;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * This class loads a dictionary and provides a list of suggestions for a given sequence of
@@ -60,153 +51,20 @@
     // Close to -2**31
     private static final int SUPPRESS_SUGGEST_THRESHOLD = -2000000000;
 
-    public static final int MAX_SUGGESTIONS = 18;
-
-    public interface SuggestInitializationListener {
-        public void onUpdateMainDictionaryAvailability(boolean isMainDictionaryAvailable);
-    }
-
-    private static final boolean DBG = LatinImeLogger.sDBG;
-
-    private final ConcurrentHashMap<String, Dictionary> mDictionaries =
-            CollectionUtils.newConcurrentHashMap();
-    private HashSet<String> mOnlyDictionarySetForDebug = null;
-    private Dictionary mMainDictionary;
-    private ContactsBinaryDictionary mContactsDict;
-    @UsedForTesting
-    private boolean mIsCurrentlyWaitingForMainDictionary = false;
+    private static final boolean DBG = DebugFlags.DEBUG_ENABLED;
+    private final DictionaryFacilitator mDictionaryFacilitator;
 
     private float mAutoCorrectionThreshold;
 
-    // Locale used for upper- and title-casing words
-    public final Locale mLocale;
-
-    public Suggest(final Context context, final Locale locale,
-            final SuggestInitializationListener listener) {
-        initAsynchronously(context, locale, listener);
-        mLocale = locale;
-        // initialize a debug flag for the personalization
-        if (Settings.readUseOnlyPersonalizationDictionaryForDebug(
-                PreferenceManager.getDefaultSharedPreferences(context))) {
-            mOnlyDictionarySetForDebug = new HashSet<String>();
-            mOnlyDictionarySetForDebug.add(Dictionary.TYPE_PERSONALIZATION);
-            mOnlyDictionarySetForDebug.add(Dictionary.TYPE_PERSONALIZATION_PREDICTION_IN_JAVA);
-        }
+    public Suggest(final DictionaryFacilitator dictionaryFacilitator) {
+        mDictionaryFacilitator = dictionaryFacilitator;
     }
 
-    @UsedForTesting
-    Suggest(final AssetFileAddress[] dictionaryList, final Locale locale) {
-        final Dictionary mainDict = DictionaryFactory.createDictionaryForTest(dictionaryList,
-                false /* useFullEditDistance */, locale);
-        mLocale = locale;
-        mMainDictionary = mainDict;
-        addOrReplaceDictionaryInternal(Dictionary.TYPE_MAIN, mainDict);
+    public Locale getLocale() {
+        return mDictionaryFacilitator.getLocale();
     }
 
-    private void initAsynchronously(final Context context, final Locale locale,
-            final SuggestInitializationListener listener) {
-        resetMainDict(context, locale, listener);
-    }
-
-    private void addOrReplaceDictionaryInternal(final String key, final Dictionary dict) {
-        if (mOnlyDictionarySetForDebug != null && !mOnlyDictionarySetForDebug.contains(key)) {
-            Log.w(TAG, "Ignore add " + key + " dictionary for debug.");
-            return;
-        }
-        addOrReplaceDictionary(mDictionaries, key, dict);
-    }
-
-    private static void addOrReplaceDictionary(
-            final ConcurrentHashMap<String, Dictionary> dictionaries,
-            final String key, final Dictionary dict) {
-        final Dictionary oldDict = (dict == null)
-                ? dictionaries.remove(key)
-                : dictionaries.put(key, dict);
-        if (oldDict != null && dict != oldDict) {
-            oldDict.close();
-        }
-    }
-
-    public void resetMainDict(final Context context, final Locale locale,
-            final SuggestInitializationListener listener) {
-        mIsCurrentlyWaitingForMainDictionary = true;
-        mMainDictionary = null;
-        if (listener != null) {
-            listener.onUpdateMainDictionaryAvailability(hasMainDictionary());
-        }
-        new Thread("InitializeBinaryDictionary") {
-            @Override
-            public void run() {
-                final DictionaryCollection newMainDict =
-                        DictionaryFactory.createMainDictionaryFromManager(context, locale);
-                addOrReplaceDictionaryInternal(Dictionary.TYPE_MAIN, newMainDict);
-                mMainDictionary = newMainDict;
-                if (listener != null) {
-                    listener.onUpdateMainDictionaryAvailability(hasMainDictionary());
-                }
-                mIsCurrentlyWaitingForMainDictionary = false;
-            }
-        }.start();
-    }
-
-    // The main dictionary could have been loaded asynchronously.  Don't cache the return value
-    // of this method.
-    public boolean hasMainDictionary() {
-        return null != mMainDictionary && mMainDictionary.isInitialized();
-    }
-
-    @UsedForTesting
-    public boolean isCurrentlyWaitingForMainDictionary() {
-        return mIsCurrentlyWaitingForMainDictionary;
-    }
-
-    public Dictionary getMainDictionary() {
-        return mMainDictionary;
-    }
-
-    public ContactsBinaryDictionary getContactsDictionary() {
-        return mContactsDict;
-    }
-
-    public ConcurrentHashMap<String, Dictionary> getUnigramDictionaries() {
-        return mDictionaries;
-    }
-
-    /**
-     * Sets an optional user dictionary resource to be loaded. The user dictionary is consulted
-     * before the main dictionary, if set. This refers to the system-managed user dictionary.
-     */
-    public void setUserDictionary(final UserBinaryDictionary userDictionary) {
-        addOrReplaceDictionaryInternal(Dictionary.TYPE_USER, userDictionary);
-    }
-
-    /**
-     * Sets an optional contacts dictionary resource to be loaded. It is also possible to remove
-     * the contacts dictionary by passing null to this method. In this case no contacts dictionary
-     * won't be used.
-     */
-    public void setContactsDictionary(final ContactsBinaryDictionary contactsDictionary) {
-        mContactsDict = contactsDictionary;
-        addOrReplaceDictionaryInternal(Dictionary.TYPE_CONTACTS, contactsDictionary);
-    }
-
-    public void setUserHistoryDictionary(final UserHistoryDictionary userHistoryDictionary) {
-        addOrReplaceDictionaryInternal(Dictionary.TYPE_USER_HISTORY, userHistoryDictionary);
-    }
-
-    public void setPersonalizationPredictionDictionary(
-            final PersonalizationPredictionDictionary personalizationPredictionDictionary) {
-        addOrReplaceDictionaryInternal(Dictionary.TYPE_PERSONALIZATION_PREDICTION_IN_JAVA,
-                personalizationPredictionDictionary);
-    }
-
-    public void setPersonalizationDictionary(
-            final PersonalizationDictionary personalizationDictionary) {
-        addOrReplaceDictionaryInternal(Dictionary.TYPE_PERSONALIZATION,
-                personalizationDictionary);
-    }
-
-    public void setAutoCorrectionThreshold(float threshold) {
+    public void setAutoCorrectionThreshold(final float threshold) {
         mAutoCorrectionThreshold = threshold;
     }
 
@@ -215,71 +73,82 @@
     }
 
     public void getSuggestedWords(final WordComposer wordComposer,
-            final String prevWordForBigram, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
-            final int[] additionalFeaturesOptions, final int sessionId, final int sequenceNumber,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
+            final boolean isCorrectionEnabled, final int sessionId, final int sequenceNumber,
             final OnGetSuggestedWordsCallback callback) {
-        LatinImeLogger.onStartSuggestion(prevWordForBigram);
         if (wordComposer.isBatchMode()) {
-            getSuggestedWordsForBatchInput(wordComposer, prevWordForBigram, proximityInfo,
-                    blockOffensiveWords, additionalFeaturesOptions, sessionId, sequenceNumber,
-                    callback);
+            getSuggestedWordsForBatchInput(wordComposer, prevWordsInfo, proximityInfo,
+                    settingsValuesForSuggestion, sessionId, sequenceNumber, callback);
         } else {
-            getSuggestedWordsForTypingInput(wordComposer, prevWordForBigram, proximityInfo,
-                    blockOffensiveWords, isCorrectionEnabled, additionalFeaturesOptions,
-                    sequenceNumber, callback);
+            getSuggestedWordsForTypingInput(wordComposer, prevWordsInfo, proximityInfo,
+                    settingsValuesForSuggestion, isCorrectionEnabled, sequenceNumber, callback);
         }
     }
 
+    private static ArrayList<SuggestedWordInfo> getTransformedSuggestedWordInfoList(
+            final WordComposer wordComposer, final SuggestionResults results,
+            final int trailingSingleQuotesCount) {
+        final boolean shouldMakeSuggestionsAllUpperCase = wordComposer.isAllUpperCase()
+                && !wordComposer.isResumed();
+        final boolean isOnlyFirstCharCapitalized =
+                wordComposer.isOrWillBeOnlyFirstCharCapitalized();
+
+        final ArrayList<SuggestedWordInfo> suggestionsContainer = new ArrayList<>(results);
+        final int suggestionsCount = suggestionsContainer.size();
+        if (isOnlyFirstCharCapitalized || shouldMakeSuggestionsAllUpperCase
+                || 0 != trailingSingleQuotesCount) {
+            for (int i = 0; i < suggestionsCount; ++i) {
+                final SuggestedWordInfo wordInfo = suggestionsContainer.get(i);
+                final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo(
+                        wordInfo, results.mLocale, shouldMakeSuggestionsAllUpperCase,
+                        isOnlyFirstCharCapitalized, trailingSingleQuotesCount);
+                suggestionsContainer.set(i, transformedWordInfo);
+            }
+        }
+        return suggestionsContainer;
+    }
+
+    private static String getWhitelistedWordOrNull(final ArrayList<SuggestedWordInfo> suggestions) {
+        if (suggestions.isEmpty()) {
+            return null;
+        }
+        final SuggestedWordInfo firstSuggestedWordInfo = suggestions.get(0);
+        if (!firstSuggestedWordInfo.isKindOf(SuggestedWordInfo.KIND_WHITELIST)) {
+            return null;
+        }
+        return firstSuggestedWordInfo.mWord;
+    }
+
     // Retrieves suggestions for the typing input
     // and calls the callback function with the suggestions.
     private void getSuggestedWordsForTypingInput(final WordComposer wordComposer,
-            final String prevWordForBigram, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final boolean isCorrectionEnabled,
-            final int[] additionalFeaturesOptions, final int sequenceNumber,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
+            final boolean isCorrectionEnabled, final int sequenceNumber,
             final OnGetSuggestedWordsCallback callback) {
-        final int trailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount();
-        final BoundedTreeSet suggestionsSet = new BoundedTreeSet(sSuggestedWordInfoComparator,
-                MAX_SUGGESTIONS);
-
         final String typedWord = wordComposer.getTypedWord();
+        final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(typedWord);
         final String consideredWord = trailingSingleQuotesCount > 0
                 ? typedWord.substring(0, typedWord.length() - trailingSingleQuotesCount)
                 : typedWord;
-        LatinImeLogger.onAddSuggestedWord(typedWord, Dictionary.TYPE_USER_TYPED);
 
-        final WordComposer wordComposerForLookup;
-        if (trailingSingleQuotesCount > 0) {
-            wordComposerForLookup = new WordComposer(wordComposer);
-            for (int i = trailingSingleQuotesCount - 1; i >= 0; --i) {
-                wordComposerForLookup.deleteLast();
-            }
-        } else {
-            wordComposerForLookup = wordComposer;
-        }
+        final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
+                wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion,
+                SESSION_TYPING);
+        final ArrayList<SuggestedWordInfo> suggestionsContainer =
+                getTransformedSuggestedWordInfoList(wordComposer, suggestionResults,
+                        trailingSingleQuotesCount);
+        final boolean didRemoveTypedWord =
+                SuggestedWordInfo.removeDups(wordComposer.getTypedWord(), suggestionsContainer);
 
-        for (final String key : mDictionaries.keySet()) {
-            final Dictionary dictionary = mDictionaries.get(key);
-            suggestionsSet.addAll(dictionary.getSuggestions(wordComposerForLookup,
-                    prevWordForBigram, proximityInfo, blockOffensiveWords,
-                    additionalFeaturesOptions));
-        }
+        final String whitelistedWord = getWhitelistedWordOrNull(suggestionsContainer);
+        final boolean resultsArePredictions = !wordComposer.isComposingWord();
 
-        final String whitelistedWord;
-        if (suggestionsSet.isEmpty()) {
-            whitelistedWord = null;
-        } else if (SuggestedWordInfo.KIND_WHITELIST != suggestionsSet.first().mKind) {
-            whitelistedWord = null;
-        } else {
-            whitelistedWord = suggestionsSet.first().mWord;
-        }
-
-        // The word can be auto-corrected if it has a whitelist entry that is not itself,
-        // or if it's a 2+ characters non-word (i.e. it's not in the dictionary).
-        final boolean allowsToBeAutoCorrected = (null != whitelistedWord
-                && !whitelistedWord.equals(consideredWord))
-                || (consideredWord.length() > 1 && !AutoCorrectionUtils.isValidWord(this,
-                        consideredWord, wordComposer.isFirstCharCapitalized()));
+        // We allow auto-correction if we have a whitelisted word, or if the word had more than
+        // one char and was not suggested.
+        final boolean allowsToBeAutoCorrected = (null != whitelistedWord)
+                || (consideredWord.length() > 1 && !didRemoveTypedWord);
 
         final boolean hasAutoCorrection;
         // TODO: using isCorrectionEnabled here is not very good. It's probably useless, because
@@ -287,10 +156,11 @@
         // same time, it feels wrong that the SuggestedWord object includes information about
         // the current settings. It may also be useful to know, when the setting is off, whether
         // the word *would* have been auto-corrected.
-        if (!isCorrectionEnabled || !allowsToBeAutoCorrected || !wordComposer.isComposingWord()
-                || suggestionsSet.isEmpty() || wordComposer.hasDigits()
-                || wordComposer.isMostlyCaps() || wordComposer.isResumed() || !hasMainDictionary()
-                || SuggestedWordInfo.KIND_SHORTCUT == suggestionsSet.first().mKind) {
+        if (!isCorrectionEnabled || !allowsToBeAutoCorrected || resultsArePredictions
+                || suggestionResults.isEmpty() || wordComposer.hasDigits()
+                || wordComposer.isMostlyCaps() || wordComposer.isResumed()
+                || !mDictionaryFacilitator.hasInitializedMainDictionary()
+                || suggestionResults.first().isKindOf(SuggestedWordInfo.KIND_SHORTCUT)) {
             // If we don't have a main dictionary, we never want to auto-correct. The reason for
             // this is, the user may have a contact whose name happens to match a valid word in
             // their language, and it will unexpectedly auto-correct. For example, if the user
@@ -302,28 +172,7 @@
             hasAutoCorrection = false;
         } else {
             hasAutoCorrection = AutoCorrectionUtils.suggestionExceedsAutoCorrectionThreshold(
-                    suggestionsSet.first(), consideredWord, mAutoCorrectionThreshold);
-        }
-
-        final ArrayList<SuggestedWordInfo> suggestionsContainer =
-                CollectionUtils.newArrayList(suggestionsSet);
-        final int suggestionsCount = suggestionsContainer.size();
-        final boolean isFirstCharCapitalized = wordComposer.isFirstCharCapitalized();
-        final boolean isAllUpperCase = wordComposer.isAllUpperCase();
-        if (isFirstCharCapitalized || isAllUpperCase || 0 != trailingSingleQuotesCount) {
-            for (int i = 0; i < suggestionsCount; ++i) {
-                final SuggestedWordInfo wordInfo = suggestionsContainer.get(i);
-                final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo(
-                        wordInfo, mLocale, isAllUpperCase, isFirstCharCapitalized,
-                        trailingSingleQuotesCount);
-                suggestionsContainer.set(i, transformedWordInfo);
-            }
-        }
-
-        for (int i = 0; i < suggestionsCount; ++i) {
-            final SuggestedWordInfo wordInfo = suggestionsContainer.get(i);
-            LatinImeLogger.onAddSuggestedWord(wordInfo.mWord.toString(),
-                    wordInfo.mSourceDict.mDictType);
+                    suggestionResults.first(), consideredWord, mAutoCorrectionThreshold);
         }
 
         if (!TextUtils.isEmpty(typedWord)) {
@@ -333,7 +182,6 @@
                     SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
                     SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
         }
-        SuggestedWordInfo.removeDups(suggestionsContainer);
 
         final ArrayList<SuggestedWordInfo> suggestionsList;
         if (DBG && !suggestionsContainer.isEmpty()) {
@@ -343,40 +191,26 @@
         }
 
         callback.onGetSuggestedWords(new SuggestedWords(suggestionsList,
+                suggestionResults.mRawSuggestions,
                 // TODO: this first argument is lying. If this is a whitelisted word which is an
                 // actual word, it says typedWordValid = false, which looks wrong. We should either
                 // rename the attribute or change the value.
-                !allowsToBeAutoCorrected /* typedWordValid */,
-                hasAutoCorrection, /* willAutoCorrect */
-                false /* isPunctuationSuggestions */,
-                false /* isObsoleteSuggestions */,
-                !wordComposer.isComposingWord() /* isPrediction */, sequenceNumber));
+                !resultsArePredictions && !allowsToBeAutoCorrected /* typedWordValid */,
+                hasAutoCorrection /* willAutoCorrect */,
+                false /* isObsoleteSuggestions */, resultsArePredictions, sequenceNumber));
     }
 
     // Retrieves suggestions for the batch input
     // and calls the callback function with the suggestions.
     private void getSuggestedWordsForBatchInput(final WordComposer wordComposer,
-            final String prevWordForBigram, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo,
+            final SettingsValuesForSuggestion settingsValuesForSuggestion,
             final int sessionId, final int sequenceNumber,
             final OnGetSuggestedWordsCallback callback) {
-        final BoundedTreeSet suggestionsSet = new BoundedTreeSet(sSuggestedWordInfoComparator,
-                MAX_SUGGESTIONS);
-
-        // At second character typed, search the unigrams (scores being affected by bigrams)
-        for (final String key : mDictionaries.keySet()) {
-            final Dictionary dictionary = mDictionaries.get(key);
-            suggestionsSet.addAll(dictionary.getSuggestionsWithSessionId(wordComposer,
-                    prevWordForBigram, proximityInfo, blockOffensiveWords,
-                    additionalFeaturesOptions, sessionId));
-        }
-
-        for (SuggestedWordInfo wordInfo : suggestionsSet) {
-            LatinImeLogger.onAddSuggestedWord(wordInfo.mWord, wordInfo.mSourceDict.mDictType);
-        }
-
+        final SuggestionResults suggestionResults = mDictionaryFacilitator.getSuggestionResults(
+                wordComposer, prevWordsInfo, proximityInfo, settingsValuesForSuggestion, sessionId);
         final ArrayList<SuggestedWordInfo> suggestionsContainer =
-                CollectionUtils.newArrayList(suggestionsSet);
+                new ArrayList<>(suggestionResults);
         final int suggestionsCount = suggestionsContainer.size();
         final boolean isFirstCharCapitalized = wordComposer.wasShiftedNoLock();
         final boolean isAllUpperCase = wordComposer.isAllUpperCase();
@@ -384,7 +218,7 @@
             for (int i = 0; i < suggestionsCount; ++i) {
                 final SuggestedWordInfo wordInfo = suggestionsContainer.get(i);
                 final SuggestedWordInfo transformedWordInfo = getTransformedSuggestedWordInfo(
-                        wordInfo, mLocale, isAllUpperCase, isFirstCharCapitalized,
+                        wordInfo, suggestionResults.mLocale, isAllUpperCase, isFirstCharCapitalized,
                         0 /* trailingSingleQuotesCount */);
                 suggestionsContainer.set(i, transformedWordInfo);
             }
@@ -395,7 +229,7 @@
             final SuggestedWordInfo rejected = suggestionsContainer.remove(0);
             suggestionsContainer.add(1, rejected);
         }
-        SuggestedWordInfo.removeDups(suggestionsContainer);
+        SuggestedWordInfo.removeDups(null /* typedWord */, suggestionsContainer);
 
         // For some reason some suggestions with MIN_VALUE are making their way here.
         // TODO: Find a more robust way to detect distractors.
@@ -408,9 +242,9 @@
         // In the batch input mode, the most relevant suggested word should act as a "typed word"
         // (typedWordValid=true), not as an "auto correct word" (willAutoCorrect=false).
         callback.onGetSuggestedWords(new SuggestedWords(suggestionsContainer,
+                suggestionResults.mRawSuggestions,
                 true /* typedWordValid */,
                 false /* willAutoCorrect */,
-                false /* isPunctuationSuggestions */,
                 false /* isObsoleteSuggestions */,
                 false /* isPrediction */, sequenceNumber));
     }
@@ -420,19 +254,19 @@
         final SuggestedWordInfo typedWordInfo = suggestions.get(0);
         typedWordInfo.setDebugString("+");
         final int suggestionsSize = suggestions.size();
-        final ArrayList<SuggestedWordInfo> suggestionsList =
-                CollectionUtils.newArrayList(suggestionsSize);
+        final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<>(suggestionsSize);
         suggestionsList.add(typedWordInfo);
         // Note: i here is the index in mScores[], but the index in mSuggestions is one more
         // than i because we added the typed word to mSuggestions without touching mScores.
         for (int i = 0; i < suggestionsSize - 1; ++i) {
             final SuggestedWordInfo cur = suggestions.get(i + 1);
-            final float normalizedScore = BinaryDictionary.calcNormalizedScore(
+            final float normalizedScore = BinaryDictionaryUtils.calcNormalizedScore(
                     typedWord, cur.toString(), cur.mScore);
             final String scoreInfoString;
             if (normalizedScore > 0) {
                 scoreInfoString = String.format(
-                        Locale.ROOT, "%d (%4.2f)", cur.mScore, normalizedScore);
+                        Locale.ROOT, "%d (%4.2f), %s", cur.mScore, normalizedScore,
+                        cur.mSourceDict.mDictType);
             } else {
                 scoreInfoString = Integer.toString(cur.mScore);
             }
@@ -442,29 +276,13 @@
         return suggestionsList;
     }
 
-    private static final class SuggestedWordInfoComparator
-            implements Comparator<SuggestedWordInfo> {
-        // This comparator ranks the word info with the higher frequency first. That's because
-        // that's the order we want our elements in.
-        @Override
-        public int compare(final SuggestedWordInfo o1, final SuggestedWordInfo o2) {
-            if (o1.mScore > o2.mScore) return -1;
-            if (o1.mScore < o2.mScore) return 1;
-            if (o1.mCodePointCount < o2.mCodePointCount) return -1;
-            if (o1.mCodePointCount > o2.mCodePointCount) return 1;
-            return o1.mWord.compareTo(o2.mWord);
-        }
-    }
-    private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator =
-            new SuggestedWordInfoComparator();
-
     /* package for test */ static SuggestedWordInfo getTransformedSuggestedWordInfo(
             final SuggestedWordInfo wordInfo, final Locale locale, final boolean isAllUpperCase,
-            final boolean isFirstCharCapitalized, final int trailingSingleQuotesCount) {
+            final boolean isOnlyFirstCharCapitalized, final int trailingSingleQuotesCount) {
         final StringBuilder sb = new StringBuilder(wordInfo.mWord.length());
         if (isAllUpperCase) {
             sb.append(wordInfo.mWord.toUpperCase(locale));
-        } else if (isFirstCharCapitalized) {
+        } else if (isOnlyFirstCharCapitalized) {
             sb.append(StringUtils.capitalizeFirstCodePoint(wordInfo.mWord, locale));
         } else {
             sb.append(wordInfo.mWord);
@@ -477,17 +295,8 @@
         for (int i = quotesToAppend - 1; i >= 0; --i) {
             sb.appendCodePoint(Constants.CODE_SINGLE_QUOTE);
         }
-        return new SuggestedWordInfo(sb.toString(), wordInfo.mScore, wordInfo.mKind,
+        return new SuggestedWordInfo(sb.toString(), wordInfo.mScore, wordInfo.mKindAndFlags,
                 wordInfo.mSourceDict, wordInfo.mIndexOfTouchPointOfSecondWord,
                 wordInfo.mAutoCommitFirstWordConfidence);
     }
-
-    public void close() {
-        final HashSet<Dictionary> dictionaries = CollectionUtils.newHashSet();
-        dictionaries.addAll(mDictionaries.values());
-        for (final Dictionary dictionary : dictionaries) {
-            dictionary.close();
-        }
-        mMainDictionary = null;
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java
index 97c89dd4..5231cc8 100644
--- a/java/src/com/android/inputmethod/latin/SuggestedWords.java
+++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java
@@ -19,58 +19,77 @@
 import android.text.TextUtils;
 import android.view.inputmethod.CompletionInfo;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.define.DebugFlags;
 import com.android.inputmethod.latin.utils.StringUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 
-public final class SuggestedWords {
+public class SuggestedWords {
     public static final int INDEX_OF_TYPED_WORD = 0;
     public static final int INDEX_OF_AUTO_CORRECTION = 1;
     public static final int NOT_A_SEQUENCE_NUMBER = -1;
 
-    private static final ArrayList<SuggestedWordInfo> EMPTY_WORD_INFO_LIST =
-            CollectionUtils.newArrayList(0);
-    public static final SuggestedWords EMPTY = new SuggestedWords(
-            EMPTY_WORD_INFO_LIST, false, false, false, false, false);
+    // The maximum number of suggestions available.
+    public static final int MAX_SUGGESTIONS = 18;
 
+    private static final ArrayList<SuggestedWordInfo> EMPTY_WORD_INFO_LIST = new ArrayList<>(0);
+    public static final SuggestedWords EMPTY = new SuggestedWords(
+            EMPTY_WORD_INFO_LIST, null /* rawSuggestions */, false, false, false, false);
+
+    public final String mTypedWord;
     public final boolean mTypedWordValid;
     // Note: this INCLUDES cases where the word will auto-correct to itself. A good definition
     // of what this flag means would be "the top suggestion is strong enough to auto-correct",
     // whether this exactly matches the user entry or not.
     public final boolean mWillAutoCorrect;
-    public final boolean mIsPunctuationSuggestions;
     public final boolean mIsObsoleteSuggestions;
     public final boolean mIsPrediction;
     public final int mSequenceNumber; // Sequence number for auto-commit.
-    private final ArrayList<SuggestedWordInfo> mSuggestedWordInfoList;
+    protected final ArrayList<SuggestedWordInfo> mSuggestedWordInfoList;
+    public final ArrayList<SuggestedWordInfo> mRawSuggestions;
 
     public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList,
+            final ArrayList<SuggestedWordInfo> rawSuggestions,
             final boolean typedWordValid,
             final boolean willAutoCorrect,
-            final boolean isPunctuationSuggestions,
             final boolean isObsoleteSuggestions,
             final boolean isPrediction) {
-        this(suggestedWordInfoList, typedWordValid, willAutoCorrect, isPunctuationSuggestions,
+        this(suggestedWordInfoList, rawSuggestions, typedWordValid, willAutoCorrect,
                 isObsoleteSuggestions, isPrediction, NOT_A_SEQUENCE_NUMBER);
     }
 
     public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList,
+            final ArrayList<SuggestedWordInfo> rawSuggestions,
             final boolean typedWordValid,
             final boolean willAutoCorrect,
-            final boolean isPunctuationSuggestions,
+            final boolean isObsoleteSuggestions,
+            final boolean isPrediction,
+            final int sequenceNumber) {
+        this(suggestedWordInfoList, rawSuggestions,
+                (suggestedWordInfoList.isEmpty() || isPrediction) ? null
+                        : suggestedWordInfoList.get(INDEX_OF_TYPED_WORD).mWord,
+                typedWordValid, willAutoCorrect, isObsoleteSuggestions, isPrediction,
+                sequenceNumber);
+    }
+
+    public SuggestedWords(final ArrayList<SuggestedWordInfo> suggestedWordInfoList,
+            final ArrayList<SuggestedWordInfo> rawSuggestions,
+            final String typedWord,
+            final boolean typedWordValid,
+            final boolean willAutoCorrect,
             final boolean isObsoleteSuggestions,
             final boolean isPrediction,
             final int sequenceNumber) {
         mSuggestedWordInfoList = suggestedWordInfoList;
+        mRawSuggestions = rawSuggestions;
         mTypedWordValid = typedWordValid;
         mWillAutoCorrect = willAutoCorrect;
-        mIsPunctuationSuggestions = isPunctuationSuggestions;
         mIsObsoleteSuggestions = isObsoleteSuggestions;
         mIsPrediction = isPrediction;
         mSequenceNumber = sequenceNumber;
+        mTypedWord = typedWord;
     }
 
     public boolean isEmpty() {
@@ -81,16 +100,38 @@
         return mSuggestedWordInfoList.size();
     }
 
+    /**
+     * Get suggested word at <code>index</code>.
+     * @param index The index of the suggested word.
+     * @return The suggested word.
+     */
     public String getWord(final int index) {
         return mSuggestedWordInfoList.get(index).mWord;
     }
 
+    /**
+     * Get displayed text at <code>index</code>.
+     * In RTL languages, the displayed text on the suggestion strip may be different from the
+     * suggested word that is returned from {@link #getWord(int)}. For example the displayed text
+     * of punctuation suggestion "(" should be ")".
+     * @param index The index of the text to display.
+     * @return The text to be displayed.
+     */
+    public String getLabel(final int index) {
+        return mSuggestedWordInfoList.get(index).mWord;
+    }
+
+    /**
+     * Get {@link SuggestedWordInfo} object at <code>index</code>.
+     * @param index The index of the {@link SuggestedWordInfo}.
+     * @return The {@link SuggestedWordInfo} object.
+     */
     public SuggestedWordInfo getInfo(final int index) {
         return mSuggestedWordInfoList.get(index);
     }
 
     public String getDebugString(final int pos) {
-        if (!LatinImeLogger.sDBG) {
+        if (!DebugFlags.DEBUG_ENABLED) {
             return null;
         }
         final SuggestedWordInfo wordInfo = getInfo(pos);
@@ -104,8 +145,12 @@
         return debugString;
     }
 
-    public boolean willAutoCorrect() {
-        return mWillAutoCorrect;
+    /**
+     * The predicator to tell whether this object represents punctuation suggestions.
+     * @return false if this object desn't represent punctuation suggestions.
+     */
+    public boolean isPunctuationSuggestions() {
+        return false;
     }
 
     @Override
@@ -114,23 +159,17 @@
         return "SuggestedWords:"
                 + " mTypedWordValid=" + mTypedWordValid
                 + " mWillAutoCorrect=" + mWillAutoCorrect
-                + " mIsPunctuationSuggestions=" + mIsPunctuationSuggestions
                 + " words=" + Arrays.toString(mSuggestedWordInfoList.toArray());
     }
 
     public static ArrayList<SuggestedWordInfo> getFromApplicationSpecifiedCompletions(
             final CompletionInfo[] infos) {
-        final ArrayList<SuggestedWordInfo> result = CollectionUtils.newArrayList();
+        final ArrayList<SuggestedWordInfo> result = new ArrayList<>();
         for (final CompletionInfo info : infos) {
-            if (info == null) continue;
-            final CharSequence text = info.getText();
-            if (null == text) continue;
-            final SuggestedWordInfo suggestedWordInfo = new SuggestedWordInfo(text.toString(),
-                    SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_APP_DEFINED,
-                    Dictionary.DICTIONARY_APPLICATION_DEFINED,
-                    SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                    SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */);
-            result.add(suggestedWordInfo);
+            if (null == info || null == info.getText()) {
+                continue;
+            }
+            result.add(new SuggestedWordInfo(info));
         }
         return result;
     }
@@ -139,8 +178,8 @@
     // and replace it with what the user currently typed.
     public static ArrayList<SuggestedWordInfo> getTypedWordAndPreviousSuggestions(
             final String typedWord, final SuggestedWords previousSuggestions) {
-        final ArrayList<SuggestedWordInfo> suggestionsList = CollectionUtils.newArrayList();
-        final HashSet<String> alreadySeen = CollectionUtils.newHashSet();
+        final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<>();
+        final HashSet<String> alreadySeen = new HashSet<>();
         suggestionsList.add(new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE,
                 SuggestedWordInfo.KIND_TYPED, Dictionary.DICTIONARY_USER_TYPED,
                 SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
@@ -150,7 +189,7 @@
         for (int index = 1; index < previousSize; index++) {
             final SuggestedWordInfo prevWordInfo = previousSuggestions.getInfo(index);
             final String prevWord = prevWordInfo.mWord;
-            // Filter out duplicate suggestion.
+            // Filter out duplicate suggestions.
             if (!alreadySeen.contains(prevWord)) {
                 suggestionsList.add(prevWordInfo);
                 alreadySeen.add(prevWord);
@@ -169,7 +208,8 @@
         public static final int NOT_AN_INDEX = -1;
         public static final int NOT_A_CONFIDENCE = -1;
         public static final int MAX_SCORE = Integer.MAX_VALUE;
-        public static final int KIND_MASK_KIND = 0xFF; // Mask to get only the kind
+
+        private static final int KIND_MASK_KIND = 0xFF; // Mask to get only the kind
         public static final int KIND_TYPED = 0; // What user typed
         public static final int KIND_CORRECTION = 1; // Simple correction/suggestion
         public static final int KIND_COMPLETION = 2; // Completion (suggestion with appended chars)
@@ -184,13 +224,16 @@
         public static final int KIND_RESUMED = 9;
         public static final int KIND_OOV_CORRECTION = 10; // Most probable string correction
 
-        public static final int KIND_MASK_FLAGS = 0xFFFFFF00; // Mask to get the flags
         public static final int KIND_FLAG_POSSIBLY_OFFENSIVE = 0x80000000;
         public static final int KIND_FLAG_EXACT_MATCH = 0x40000000;
+        public static final int KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION = 0x20000000;
 
         public final String mWord;
+        // The completion info from the application. Null for suggestions that don't come from
+        // the application (including keyboard-computed ones, so this is almost always null)
+        public final CompletionInfo mApplicationSpecifiedCompletionInfo;
         public final int mScore;
-        public final int mKind; // one of the KIND_* constants above
+        public final int mKindAndFlags;
         public final int mCodePointCount;
         public final Dictionary mSourceDict;
         // For auto-commit. This keeps track of the index inside the touch coordinates array
@@ -206,25 +249,63 @@
          * Create a new suggested word info.
          * @param word The string to suggest.
          * @param score A measure of how likely this suggestion is.
-         * @param kind The kind of suggestion, as one of the above KIND_* constants.
+         * @param kindAndFlags The kind of suggestion, as one of the above KIND_* constants with
+         * flags.
          * @param sourceDict What instance of Dictionary produced this suggestion.
          * @param indexOfTouchPointOfSecondWord See mIndexOfTouchPointOfSecondWord.
          * @param autoCommitFirstWordConfidence See mAutoCommitFirstWordConfidence.
          */
-        public SuggestedWordInfo(final String word, final int score, final int kind,
+        public SuggestedWordInfo(final String word, final int score, final int kindAndFlags,
                 final Dictionary sourceDict, final int indexOfTouchPointOfSecondWord,
                 final int autoCommitFirstWordConfidence) {
             mWord = word;
+            mApplicationSpecifiedCompletionInfo = null;
             mScore = score;
-            mKind = kind;
+            mKindAndFlags = kindAndFlags;
             mSourceDict = sourceDict;
             mCodePointCount = StringUtils.codePointCount(mWord);
             mIndexOfTouchPointOfSecondWord = indexOfTouchPointOfSecondWord;
             mAutoCommitFirstWordConfidence = autoCommitFirstWordConfidence;
         }
 
+        /**
+         * Create a new suggested word info from an application-specified completion.
+         * If the passed argument or its contained text is null, this throws a NPE.
+         * @param applicationSpecifiedCompletion The application-specified completion info.
+         */
+        public SuggestedWordInfo(final CompletionInfo applicationSpecifiedCompletion) {
+            mWord = applicationSpecifiedCompletion.getText().toString();
+            mApplicationSpecifiedCompletionInfo = applicationSpecifiedCompletion;
+            mScore = SuggestedWordInfo.MAX_SCORE;
+            mKindAndFlags = SuggestedWordInfo.KIND_APP_DEFINED;
+            mSourceDict = Dictionary.DICTIONARY_APPLICATION_DEFINED;
+            mCodePointCount = StringUtils.codePointCount(mWord);
+            mIndexOfTouchPointOfSecondWord = SuggestedWordInfo.NOT_AN_INDEX;
+            mAutoCommitFirstWordConfidence = SuggestedWordInfo.NOT_A_CONFIDENCE;
+        }
+
         public boolean isEligibleForAutoCommit() {
-            return (KIND_CORRECTION == mKind && NOT_AN_INDEX != mIndexOfTouchPointOfSecondWord);
+            return (isKindOf(KIND_CORRECTION) && NOT_AN_INDEX != mIndexOfTouchPointOfSecondWord);
+        }
+
+        public int getKind() {
+            return (mKindAndFlags & KIND_MASK_KIND);
+        }
+
+        public boolean isKindOf(final int kind) {
+            return getKind() == kind;
+        }
+
+        public boolean isPossiblyOffensive() {
+            return (mKindAndFlags & KIND_FLAG_POSSIBLY_OFFENSIVE) != 0;
+        }
+
+        public boolean isExactMatch() {
+            return (mKindAndFlags & KIND_FLAG_EXACT_MATCH) != 0;
+        }
+
+        public boolean isExactMatchWithIntentionalOmission() {
+            return (mKindAndFlags & KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION) != 0;
         }
 
         public void setDebugString(final String str) {
@@ -236,10 +317,6 @@
             return mDebugString;
         }
 
-        public int codePointCount() {
-            return mCodePointCount;
-        }
-
         public int codePointAt(int i) {
             return mWord.codePointAt(i);
         }
@@ -253,42 +330,60 @@
             }
         }
 
-        // TODO: Consolidate this method and StringUtils.removeDupes() in the future.
-        public static void removeDups(ArrayList<SuggestedWordInfo> candidates) {
-            if (candidates.size() <= 1) {
-                return;
+        // This will always remove the higher index if a duplicate is found.
+        public static boolean removeDups(final String typedWord,
+                ArrayList<SuggestedWordInfo> candidates) {
+            if (candidates.isEmpty()) {
+                return false;
             }
-            int i = 1;
-            while (i < candidates.size()) {
-                final SuggestedWordInfo cur = candidates.get(i);
-                for (int j = 0; j < i; ++j) {
-                    final SuggestedWordInfo previous = candidates.get(j);
-                    if (cur.mWord.equals(previous.mWord)) {
-                        candidates.remove(cur.mScore < previous.mScore ? i : j);
-                        --i;
-                        break;
-                    }
+            final boolean didRemoveTypedWord;
+            if (!TextUtils.isEmpty(typedWord)) {
+                didRemoveTypedWord = removeSuggestedWordInfoFrom(typedWord, candidates,
+                        -1 /* startIndexExclusive */);
+            } else {
+                didRemoveTypedWord = false;
+            }
+            for (int i = 0; i < candidates.size(); ++i) {
+                removeSuggestedWordInfoFrom(candidates.get(i).mWord, candidates,
+                        i /* startIndexExclusive */);
+            }
+            return didRemoveTypedWord;
+        }
+
+        private static boolean removeSuggestedWordInfoFrom(final String word,
+                final ArrayList<SuggestedWordInfo> candidates, final int startIndexExclusive) {
+            boolean didRemove = false;
+            for (int i = startIndexExclusive + 1; i < candidates.size(); ++i) {
+                final SuggestedWordInfo previous = candidates.get(i);
+                if (word.equals(previous.mWord)) {
+                    didRemove = true;
+                    candidates.remove(i);
+                    --i;
                 }
-                ++i;
             }
+            return didRemove;
         }
     }
 
     // SuggestedWords is an immutable object, as much as possible. We must not just remove
     // words from the member ArrayList as some other parties may expect the object to never change.
     public SuggestedWords getSuggestedWordsExcludingTypedWord() {
-        final ArrayList<SuggestedWordInfo> newSuggestions = CollectionUtils.newArrayList();
+        final ArrayList<SuggestedWordInfo> newSuggestions = new ArrayList<>();
+        String typedWord = null;
         for (int i = 0; i < mSuggestedWordInfoList.size(); ++i) {
             final SuggestedWordInfo info = mSuggestedWordInfoList.get(i);
-            if (SuggestedWordInfo.KIND_TYPED != info.mKind) {
+            if (!info.isKindOf(SuggestedWordInfo.KIND_TYPED)) {
                 newSuggestions.add(info);
+            } else {
+                assert(null == typedWord);
+                typedWord = info.mWord;
             }
         }
         // We should never autocorrect, so we say the typed word is valid. Also, in this case,
         // no auto-correction should take place hence willAutoCorrect = false.
-        return new SuggestedWords(newSuggestions, true /* typedWordValid */,
-                false /* willAutoCorrect */, mIsPunctuationSuggestions, mIsObsoleteSuggestions,
-                mIsPrediction);
+        return new SuggestedWords(newSuggestions, null /* rawSuggestions */, typedWord,
+                true /* typedWordValid */, false /* willAutoCorrect */, mIsObsoleteSuggestions,
+                mIsPrediction, NOT_A_SEQUENCE_NUMBER);
     }
 
     // Creates a new SuggestedWordInfo from the currently suggested words that removes all but the
@@ -297,17 +392,16 @@
     // we should only suggest replacements for this last word.
     // TODO: make this work with languages without spaces.
     public SuggestedWords getSuggestedWordsForLastWordOfPhraseGesture() {
-        final ArrayList<SuggestedWordInfo> newSuggestions = CollectionUtils.newArrayList();
+        final ArrayList<SuggestedWordInfo> newSuggestions = new ArrayList<>();
         for (int i = 0; i < mSuggestedWordInfoList.size(); ++i) {
             final SuggestedWordInfo info = mSuggestedWordInfoList.get(i);
             final int indexOfLastSpace = info.mWord.lastIndexOf(Constants.CODE_SPACE) + 1;
             final String lastWord = info.mWord.substring(indexOfLastSpace);
-            newSuggestions.add(new SuggestedWordInfo(lastWord, info.mScore, info.mKind,
+            newSuggestions.add(new SuggestedWordInfo(lastWord, info.mScore, info.mKindAndFlags,
                     info.mSourceDict, SuggestedWordInfo.NOT_AN_INDEX,
                     SuggestedWordInfo.NOT_A_CONFIDENCE));
         }
-        return new SuggestedWords(newSuggestions, mTypedWordValid,
-                mWillAutoCorrect, mIsPunctuationSuggestions, mIsObsoleteSuggestions,
-                mIsPrediction);
+        return new SuggestedWords(newSuggestions, null /* rawSuggestions */, mTypedWordValid,
+                mWillAutoCorrect, mIsObsoleteSuggestions, mIsPrediction);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java b/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java
index ed6fc03..08785f3 100644
--- a/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java
+++ b/java/src/com/android/inputmethod/latin/SuggestionSpanPickedNotificationReceiver.java
@@ -22,8 +22,10 @@
 import android.text.style.SuggestionSpan;
 import android.util.Log;
 
+import com.android.inputmethod.latin.define.DebugFlags;
+
 public final class SuggestionSpanPickedNotificationReceiver extends BroadcastReceiver {
-    private static final boolean DBG = LatinImeLogger.sDBG;
+    private static final boolean DBG = DebugFlags.DEBUG_ENABLED;
     private static final String TAG =
             SuggestionSpanPickedNotificationReceiver.class.getSimpleName();
 
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
deleted file mode 100644
index 3213c92..0000000
--- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedContactsBinaryDictionary.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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;
-
-import android.content.Context;
-
-import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
-import java.util.ArrayList;
-import java.util.Locale;
-
-public final class SynchronouslyLoadedContactsBinaryDictionary extends ContactsBinaryDictionary {
-    private boolean mClosed;
-
-    public SynchronouslyLoadedContactsBinaryDictionary(final Context context, final Locale locale) {
-        super(context, locale);
-    }
-
-    @Override
-    public synchronized ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
-            final String prevWordForBigrams, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        reloadDictionaryIfRequired();
-        return super.getSuggestions(codes, prevWordForBigrams, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions);
-    }
-
-    @Override
-    public synchronized boolean isValidWord(final String word) {
-        reloadDictionaryIfRequired();
-        return isValidWordInner(word);
-    }
-
-    // Protect against multiple closing
-    @Override
-    public synchronized void close() {
-        // Actually with the current implementation of ContactsDictionary it's safe to close
-        // several times, so the following protection is really only for foolproofing
-        if (mClosed) return;
-        mClosed = true;
-        super.close();
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
deleted file mode 100644
index 6405b5e..0000000
--- a/java/src/com/android/inputmethod/latin/SynchronouslyLoadedUserBinaryDictionary.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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;
-
-import android.content.Context;
-
-import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
-import java.util.ArrayList;
-
-public final class SynchronouslyLoadedUserBinaryDictionary extends UserBinaryDictionary {
-
-    public SynchronouslyLoadedUserBinaryDictionary(final Context context, final String locale) {
-        this(context, locale, false);
-    }
-
-    public SynchronouslyLoadedUserBinaryDictionary(final Context context, final String locale,
-            final boolean alsoUseMoreRestrictiveLocales) {
-        super(context, locale, alsoUseMoreRestrictiveLocales);
-    }
-
-    @Override
-    public synchronized ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer codes,
-            final String prevWordForBigrams, final ProximityInfo proximityInfo,
-            final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        reloadDictionaryIfRequired();
-        return super.getSuggestions(codes, prevWordForBigrams, proximityInfo, blockOffensiveWords,
-                additionalFeaturesOptions);
-    }
-
-    @Override
-    public synchronized boolean isValidWord(final String word) {
-        reloadDictionaryIfRequired();
-        return isValidWordInner(word);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java b/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java
new file mode 100644
index 0000000..e4ee426
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/SystemBroadcastReceiver.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.compat.IntentCompatUtils;
+import com.android.inputmethod.latin.settings.Settings;
+import com.android.inputmethod.latin.setup.LauncherIconVisibilityManager;
+import com.android.inputmethod.latin.setup.SetupActivity;
+import com.android.inputmethod.latin.utils.UncachedInputMethodManagerUtils;
+
+/**
+ * This class detects the {@link Intent#ACTION_MY_PACKAGE_REPLACED} broadcast intent when this IME
+ * package has been replaced by a newer version of the same package. This class also detects
+ * {@link Intent#ACTION_BOOT_COMPLETED} and {@link Intent#ACTION_USER_INITIALIZE} broadcast intent.
+ *
+ * If this IME has already been installed in the system image and a new version of this IME has
+ * been installed, {@link Intent#ACTION_MY_PACKAGE_REPLACED} is received by this receiver and it
+ * will hide the setup wizard's icon.
+ *
+ * If this IME has already been installed in the data partition and a new version of this IME has
+ * been installed, {@link Intent#ACTION_MY_PACKAGE_REPLACED} is received by this receiver but it
+ * will not hide the setup wizard's icon, and the icon will appear on the launcher.
+ *
+ * If this IME hasn't been installed yet and has been newly installed, no
+ * {@link Intent#ACTION_MY_PACKAGE_REPLACED} will be sent and the setup wizard's icon will appear
+ * on the launcher.
+ *
+ * When the device has been booted, {@link Intent#ACTION_BOOT_COMPLETED} is received by this
+ * receiver and it checks whether the setup wizard's icon should be appeared or not on the launcher
+ * depending on which partition this IME is installed.
+ *
+ * When a multiuser account has been created, {@link Intent#ACTION_USER_INITIALIZE} is received
+ * by this receiver and it checks the whether the setup wizard's icon should be appeared or not on
+ * the launcher depending on which partition this IME is installed.
+ */
+public final class SystemBroadcastReceiver extends BroadcastReceiver {
+    private static final String TAG = SystemBroadcastReceiver.class.getSimpleName();
+
+    @Override
+    public void onReceive(final Context context, final Intent intent) {
+        final String intentAction = intent.getAction();
+        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(intentAction)) {
+            Log.i(TAG, "Package has been replaced: " + context.getPackageName());
+        } else if (Intent.ACTION_BOOT_COMPLETED.equals(intentAction)) {
+            Log.i(TAG, "Boot has been completed");
+        } else if (IntentCompatUtils.is_ACTION_USER_INITIALIZE(intentAction)) {
+            Log.i(TAG, "User initialize");
+        }
+
+        LauncherIconVisibilityManager.onReceiveGlobalIntent(intentAction, context);
+
+        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(intentAction)) {
+            // Need to restore additional subtypes because system always clears additional
+            // subtypes when the package is replaced.
+            RichInputMethodManager.init(context);
+            final RichInputMethodManager richImm = RichInputMethodManager.getInstance();
+            final InputMethodSubtype[] additionalSubtypes = richImm.getAdditionalSubtypes(context);
+            richImm.setAdditionalInputMethodSubtypes(additionalSubtypes);
+        }
+
+        // The process that hosts this broadcast receiver is invoked and remains alive even after
+        // 1) the package has been re-installed, 2) the device has just booted,
+        // 3) a new user has been created.
+        // There is no good reason to keep the process alive if this IME isn't a current IME.
+        final InputMethodManager imm =
+                (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        // Called to check whether this IME has been triggered by the current user or not
+        final boolean isInputMethodManagerValidForUserOfThisProcess =
+                !imm.getInputMethodList().isEmpty();
+        final boolean isCurrentImeOfCurrentUser = isInputMethodManagerValidForUserOfThisProcess
+                && UncachedInputMethodManagerUtils.isThisImeCurrent(context, imm);
+        if (!isCurrentImeOfCurrentUser) {
+            final int myPid = Process.myPid();
+            Log.i(TAG, "Killing my process: pid=" + myPid);
+            Process.killProcess(myPid);
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
index 15b3d8d..debaad1 100644
--- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
@@ -18,7 +18,6 @@
 
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
-import android.content.ContentUris;
 import android.content.Context;
 import android.database.ContentObserver;
 import android.database.Cursor;
@@ -29,10 +28,11 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.compat.UserDictionaryCompatUtils;
-import com.android.inputmethod.latin.utils.LocaleUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
+import java.io.File;
 import java.util.Arrays;
 import java.util.Locale;
 
@@ -51,23 +51,15 @@
     // to auto-correct, so we set this to the highest frequency that won't, i.e. 14.
     private static final int USER_DICT_SHORTCUT_FREQUENCY = 14;
 
-    // TODO: use Words.SHORTCUT when we target JellyBean or above
-    final static String SHORTCUT = "shortcut";
-    private static final String[] PROJECTION_QUERY;
-    static {
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
-            PROJECTION_QUERY = new String[] {
-                Words.WORD,
-                SHORTCUT,
-                Words.FREQUENCY,
-            };
-        } else {
-            PROJECTION_QUERY = new String[] {
-                Words.WORD,
-                Words.FREQUENCY,
-            };
-        }
-    }
+    private static final String[] PROJECTION_QUERY_WITH_SHORTCUT = new String[] {
+        Words.WORD,
+        Words.SHORTCUT,
+        Words.FREQUENCY,
+    };
+    private static final String[] PROJECTION_QUERY_WITHOUT_SHORTCUT = new String[] {
+        Words.WORD,
+        Words.FREQUENCY,
+    };
 
     private static final String NAME = "userunigram";
 
@@ -75,24 +67,18 @@
     final private String mLocale;
     final private boolean mAlsoUseMoreRestrictiveLocales;
 
-    public UserBinaryDictionary(final Context context, final String locale) {
-        this(context, locale, false);
-    }
-
-    public UserBinaryDictionary(final Context context, final String locale,
-            final boolean alsoUseMoreRestrictiveLocales) {
-        super(context, getFilenameWithLocale(NAME, locale), Dictionary.TYPE_USER,
-                false /* isUpdatable */);
+    protected UserBinaryDictionary(final Context context, final Locale locale,
+            final boolean alsoUseMoreRestrictiveLocales, final File dictFile, final String name) {
+        super(context, getDictName(name, locale, dictFile), locale, Dictionary.TYPE_USER, dictFile);
         if (null == locale) throw new NullPointerException(); // Catch the error earlier
-        if (SubtypeLocaleUtils.NO_LANGUAGE.equals(locale)) {
+        final String localeStr = locale.toString();
+        if (SubtypeLocaleUtils.NO_LANGUAGE.equals(localeStr)) {
             // If we don't have a locale, insert into the "all locales" user dictionary.
             mLocale = USER_DICTIONARY_ALL_LANGUAGES;
         } else {
-            mLocale = locale;
+            mLocale = localeStr;
         }
         mAlsoUseMoreRestrictiveLocales = alsoUseMoreRestrictiveLocales;
-        // Perform a managed query. The Activity will handle closing and re-querying the cursor
-        // when needed.
         ContentResolver cres = context.getContentResolver();
 
         mObserver = new ContentObserver(null) {
@@ -108,12 +94,18 @@
             // devices. On older versions of the platform, the hook above will be called instead.
             @Override
             public void onChange(final boolean self, final Uri uri) {
-                setRequiresReload(true);
+                setNeedsToRecreate();
             }
         };
         cres.registerContentObserver(Words.CONTENT_URI, true, mObserver);
+        reloadDictionaryIfRequired();
+    }
 
-        loadDictionary();
+    @UsedForTesting
+    public static UserBinaryDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile, final String dictNamePrefix) {
+        return new UserBinaryDictionary(context, locale, false /* alsoUseMoreRestrictiveLocales */,
+                dictFile, dictNamePrefix + NAME);
     }
 
     @Override
@@ -126,7 +118,7 @@
     }
 
     @Override
-    public void loadDictionaryAsync() {
+    public void loadInitialContentsLocked() {
         // Split the locale. For example "en" => ["en"], "de_DE" => ["de", "DE"],
         // "en_US_foo_bar_qux" => ["en", "US", "foo_bar_qux"] because of the limit of 3.
         // This is correct for locale processing.
@@ -174,11 +166,30 @@
         } else {
             requestArguments = localeElements;
         }
+        final String requestString = request.toString();
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            try {
+                addWordsFromProjectionLocked(PROJECTION_QUERY_WITH_SHORTCUT, requestString,
+                        requestArguments);
+            } catch (IllegalArgumentException e) {
+                // This may happen on some non-compliant devices where the declared API is JB+ but
+                // the SHORTCUT column is not present for some reason.
+                addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+                        requestArguments);
+            }
+        } else {
+            addWordsFromProjectionLocked(PROJECTION_QUERY_WITHOUT_SHORTCUT, requestString,
+                    requestArguments);
+        }
+    }
+
+    private void addWordsFromProjectionLocked(final String[] query, String request,
+            final String[] requestArguments) throws IllegalArgumentException {
         Cursor cursor = null;
         try {
             cursor = mContext.getContentResolver().query(
-                Words.CONTENT_URI, PROJECTION_QUERY, request.toString(), requestArguments, null);
-            addWords(cursor);
+                    Words.CONTENT_URI, query, request, requestArguments, null);
+            addWordsLocked(cursor);
         } catch (final SQLiteException e) {
             Log.e(TAG, "SQLiteException in the remote User dictionary process.", e);
         } finally {
@@ -190,8 +201,8 @@
         }
     }
 
-    public boolean isEnabled() {
-        final ContentResolver cr = mContext.getContentResolver();
+    public static boolean isEnabled(final Context context) {
+        final ContentResolver cr = context.getContentResolver();
         final ContentProviderClient client = cr.acquireContentProviderClient(Words.CONTENT_URI);
         if (client != null) {
             client.release();
@@ -204,18 +215,15 @@
     /**
      * Adds a word to the user dictionary and makes it persistent.
      *
+     * @param context the context
+     * @param locale the locale
      * @param word the word to add. If the word is capitalized, then the dictionary will
      * recognize it as a capitalized word when searched.
      */
-    public synchronized void addWordToUserDictionary(final String word) {
+    public static void addWordToUserDictionary(final Context context, final Locale locale,
+            final String word) {
         // Update the user dictionary provider
-        final Locale locale;
-        if (USER_DICTIONARY_ALL_LANGUAGES == mLocale) {
-            locale = null;
-        } else {
-            locale = LocaleUtils.constructLocaleFromString(mLocale);
-        }
-        UserDictionaryCompatUtils.addWord(mContext, word,
+        UserDictionaryCompatUtils.addWord(context, word,
                 HISTORICAL_DEFAULT_USER_DICTIONARY_FREQUENCY, null, locale);
     }
 
@@ -232,12 +240,12 @@
         }
     }
 
-    private void addWords(final Cursor cursor) {
+    private void addWordsLocked(final Cursor cursor) {
         final boolean hasShortcutColumn = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
         if (cursor == null) return;
         if (cursor.moveToFirst()) {
             final int indexWord = cursor.getColumnIndex(Words.WORD);
-            final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(SHORTCUT) : 0;
+            final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(Words.SHORTCUT) : 0;
             final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY);
             while (!cursor.isAfterLast()) {
                 final String word = cursor.getString(indexWord);
@@ -246,25 +254,19 @@
                 final int adjustedFrequency = scaleFrequencyFromDefaultToLatinIme(frequency);
                 // Safeguard against adding really long words.
                 if (word.length() < MAX_WORD_LENGTH) {
-                    super.addWord(word, null, adjustedFrequency, 0 /* shortcutFreq */,
-                            false /* isNotAWord */);
-                }
-                if (null != shortcut && shortcut.length() < MAX_WORD_LENGTH) {
-                    super.addWord(shortcut, word, adjustedFrequency, USER_DICT_SHORTCUT_FREQUENCY,
-                            true /* isNotAWord */);
+                    runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                    addUnigramLocked(word, adjustedFrequency, null /* shortcutTarget */,
+                            0 /* shortcutFreq */, false /* isNotAWord */,
+                            false /* isBlacklisted */, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+                    if (null != shortcut && shortcut.length() < MAX_WORD_LENGTH) {
+                        runGCIfRequiredLocked(true /* mindsBlockByGC */);
+                        addUnigramLocked(shortcut, adjustedFrequency, word,
+                                USER_DICT_SHORTCUT_FREQUENCY, true /* isNotAWord */,
+                                false /* isBlacklisted */, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+                    }
                 }
                 cursor.moveToNext();
             }
         }
     }
-
-    @Override
-    protected boolean hasContentChanged() {
-        return true;
-    }
-
-    @Override
-    protected boolean needsToReloadBeforeWriting() {
-        return true;
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 039dadc..cdd7822 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -16,18 +16,21 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.event.CombinerChain;
+import com.android.inputmethod.event.Event;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
 
 /**
  * A place to store the currently composing word with information such as adjacent key codes as well
  */
 public final class WordComposer {
     private static final int MAX_WORD_LENGTH = Constants.DICTIONARY_MAX_WORD_LENGTH;
-    private static final boolean DBG = LatinImeLogger.sDBG;
+    private static final boolean DBG = DebugFlags.DEBUG_ENABLED;
 
     public static final int CAPS_MODE_OFF = 0;
     // 1 is shift bit, 2 is caps bit, 4 is auto bit but this is just a convention as these bits
@@ -37,17 +40,12 @@
     public static final int CAPS_MODE_AUTO_SHIFTED = 0x5;
     public static final int CAPS_MODE_AUTO_SHIFT_LOCKED = 0x7;
 
-    // An array of code points representing the characters typed so far.
-    // The array is limited to MAX_WORD_LENGTH code points, but mTypedWord extends past that
-    // and mCodePointSize can go past that. If mCodePointSize is greater than MAX_WORD_LENGTH,
-    // this just does not contain the associated code points past MAX_WORD_LENGTH.
-    private int[] mPrimaryKeyCodes;
+    private CombinerChain mCombinerChain;
+    private String mCombiningSpec; // Memory so that we don't uselessly recreate the combiner chain
+
+    // The list of events that served to compose this string.
+    private final ArrayList<Event> mEvents;
     private final InputPointers mInputPointers = new InputPointers(MAX_WORD_LENGTH);
-    // This is the typed word, as a StringBuilder. This has the same contents as mPrimaryKeyCodes
-    // but under a StringBuilder representation for ease of use, depending on what is more useful
-    // at any given time. However this is not limited in size, while mPrimaryKeyCodes is limited
-    // to MAX_WORD_LENGTH code points.
-    private final StringBuilder mTypedWord;
     private String mAutoCorrection;
     private boolean mIsResumed;
     private boolean mIsBatchMode;
@@ -60,10 +58,10 @@
     private String mRejectedBatchModeSuggestion;
 
     // Cache these values for performance
+    private CharSequence mTypedWordCache;
     private int mCapsCount;
     private int mDigitsCount;
     private int mCapitalizedMode;
-    private int mTrailingSingleQuotesCount;
     // This is the number of code points entered so far. This is not limited to MAX_WORD_LENGTH.
     // In general, this contains the size of mPrimaryKeyCodes, except when this is greater than
     // MAX_WORD_LENGTH in which case mPrimaryKeyCodes only contain the first MAX_WORD_LENGTH
@@ -72,129 +70,156 @@
     private int mCursorPositionWithinWord;
 
     /**
-     * Whether the user chose to capitalize the first char of the word.
+     * Whether the composing word has the only first char capitalized.
      */
-    private boolean mIsFirstCharCapitalized;
+    private boolean mIsOnlyFirstCharCapitalized;
 
     public WordComposer() {
-        mPrimaryKeyCodes = new int[MAX_WORD_LENGTH];
-        mTypedWord = new StringBuilder(MAX_WORD_LENGTH);
+        mCombinerChain = new CombinerChain("");
+        mEvents = new ArrayList<>();
         mAutoCorrection = null;
-        mTrailingSingleQuotesCount = 0;
         mIsResumed = false;
         mIsBatchMode = false;
         mCursorPositionWithinWord = 0;
         mRejectedBatchModeSuggestion = null;
-        refreshSize();
+        refreshTypedWordCache();
     }
 
-    public WordComposer(final WordComposer source) {
-        mPrimaryKeyCodes = Arrays.copyOf(source.mPrimaryKeyCodes, source.mPrimaryKeyCodes.length);
-        mTypedWord = new StringBuilder(source.mTypedWord);
-        mInputPointers.copy(source.mInputPointers);
-        mCapsCount = source.mCapsCount;
-        mDigitsCount = source.mDigitsCount;
-        mIsFirstCharCapitalized = source.mIsFirstCharCapitalized;
-        mCapitalizedMode = source.mCapitalizedMode;
-        mTrailingSingleQuotesCount = source.mTrailingSingleQuotesCount;
-        mIsResumed = source.mIsResumed;
-        mIsBatchMode = source.mIsBatchMode;
-        mCursorPositionWithinWord = source.mCursorPositionWithinWord;
-        mRejectedBatchModeSuggestion = source.mRejectedBatchModeSuggestion;
-        refreshSize();
+    /**
+     * Restart the combiners, possibly with a new spec.
+     * @param combiningSpec The spec string for combining. This is found in the extra value.
+     */
+    public void restartCombining(final String combiningSpec) {
+        final String nonNullCombiningSpec = null == combiningSpec ? "" : combiningSpec;
+        if (!nonNullCombiningSpec.equals(mCombiningSpec)) {
+            mCombinerChain = new CombinerChain(
+                    mCombinerChain.getComposingWordWithCombiningFeedback().toString(),
+                    CombinerChain.createCombiners(nonNullCombiningSpec));
+            mCombiningSpec = nonNullCombiningSpec;
+        }
     }
 
     /**
      * Clear out the keys registered so far.
      */
     public void reset() {
-        mTypedWord.setLength(0);
+        mCombinerChain.reset();
+        mEvents.clear();
         mAutoCorrection = null;
         mCapsCount = 0;
         mDigitsCount = 0;
-        mIsFirstCharCapitalized = false;
-        mTrailingSingleQuotesCount = 0;
+        mIsOnlyFirstCharCapitalized = false;
         mIsResumed = false;
         mIsBatchMode = false;
         mCursorPositionWithinWord = 0;
         mRejectedBatchModeSuggestion = null;
-        refreshSize();
+        refreshTypedWordCache();
     }
 
-    private final void refreshSize() {
-        mCodePointSize = mTypedWord.codePointCount(0, mTypedWord.length());
+    private final void refreshTypedWordCache() {
+        mTypedWordCache = mCombinerChain.getComposingWordWithCombiningFeedback();
+        mCodePointSize = Character.codePointCount(mTypedWordCache, 0, mTypedWordCache.length());
     }
 
     /**
      * Number of keystrokes in the composing word.
      * @return the number of keystrokes
      */
-    public final int size() {
+    // This may be made public if need be, but right now it's not used anywhere
+    /* package for tests */ int size() {
         return mCodePointSize;
     }
 
+    /**
+     * Copy the code points in the typed word to a destination array of ints.
+     *
+     * If the array is too small to hold the code points in the typed word, nothing is copied and
+     * -1 is returned.
+     *
+     * @param destination the array of ints.
+     * @return the number of copied code points.
+     */
+    public int copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount(
+            final int[] destination) {
+        // This method can be called on a separate thread and mTypedWordCache can change while we
+        // are executing this method.
+        final String typedWord = mTypedWordCache.toString();
+        // lastIndex is exclusive
+        final int lastIndex = typedWord.length()
+                - StringUtils.getTrailingSingleQuotesCount(typedWord);
+        if (lastIndex <= 0) {
+            // The string is empty or contains only single quotes.
+            return 0;
+        }
+
+        // The following function counts the number of code points in the text range which begins
+        // at index 0 and extends to the character at lastIndex.
+        final int codePointSize = Character.codePointCount(typedWord, 0, lastIndex);
+        if (codePointSize > destination.length) {
+            return -1;
+        }
+        return StringUtils.copyCodePointsAndReturnCodePointCount(destination, typedWord, 0,
+                lastIndex, true /* downCase */);
+    }
+
+    public boolean isSingleLetter() {
+        return size() == 1;
+    }
+
     public final boolean isComposingWord() {
         return size() > 0;
     }
 
-    // TODO: make sure that the index should not exceed MAX_WORD_LENGTH
-    public int getCodeAt(int index) {
-        if (index >= MAX_WORD_LENGTH) {
-            return -1;
-        }
-        return mPrimaryKeyCodes[index];
-    }
-
-    public int getCodeBeforeCursor() {
-        if (mCursorPositionWithinWord < 1 || mCursorPositionWithinWord > mPrimaryKeyCodes.length) {
-            return Constants.NOT_A_CODE;
-        }
-        return mPrimaryKeyCodes[mCursorPositionWithinWord - 1];
-    }
-
     public InputPointers getInputPointers() {
         return mInputPointers;
     }
 
-    private static boolean isFirstCharCapitalized(final int index, final int codePoint,
-            final boolean previous) {
-        if (index == 0) return Character.isUpperCase(codePoint);
-        return previous && !Character.isUpperCase(codePoint);
-    }
-
     /**
-     * Add a new keystroke, with the pressed key's code point with the touch point coordinates.
+     * Process an input event.
+     *
+     * All input events should be supported, including software/hardware events, characters as well
+     * as deletions, multiple inputs and gestures.
+     *
+     * @param event the event to process.
      */
-    public void add(final int primaryCode, final int keyX, final int keyY) {
+    public void processEvent(final Event event) {
+        final int primaryCode = event.mCodePoint;
+        final int keyX = event.mX;
+        final int keyY = event.mY;
         final int newIndex = size();
-        mTypedWord.appendCodePoint(primaryCode);
-        refreshSize();
+        mCombinerChain.processEvent(mEvents, event);
+        mEvents.add(event);
+        refreshTypedWordCache();
         mCursorPositionWithinWord = mCodePointSize;
-        if (newIndex < MAX_WORD_LENGTH) {
-            mPrimaryKeyCodes[newIndex] = primaryCode >= Constants.CODE_SPACE
-                    ? Character.toLowerCase(primaryCode) : primaryCode;
-            // In the batch input mode, the {@code mInputPointers} holds batch input points and
-            // shouldn't be overridden by the "typed key" coordinates
-            // (See {@link #setBatchInputWord}).
-            if (!mIsBatchMode) {
-                // TODO: Set correct pointer id and time
-                mInputPointers.addPointer(newIndex, keyX, keyY, 0, 0);
-            }
+        // We may have deleted the last one.
+        if (0 == mCodePointSize) {
+            mIsOnlyFirstCharCapitalized = false;
         }
-        mIsFirstCharCapitalized = isFirstCharCapitalized(
-                newIndex, primaryCode, mIsFirstCharCapitalized);
-        if (Character.isUpperCase(primaryCode)) mCapsCount++;
-        if (Character.isDigit(primaryCode)) mDigitsCount++;
-        if (Constants.CODE_SINGLE_QUOTE == primaryCode) {
-            ++mTrailingSingleQuotesCount;
-        } else {
-            mTrailingSingleQuotesCount = 0;
+        if (Constants.CODE_DELETE != event.mKeyCode) {
+            if (newIndex < MAX_WORD_LENGTH) {
+                // In the batch input mode, the {@code mInputPointers} holds batch input points and
+                // shouldn't be overridden by the "typed key" coordinates
+                // (See {@link #setBatchInputWord}).
+                if (!mIsBatchMode) {
+                    // TODO: Set correct pointer id and time
+                    mInputPointers.addPointerAt(newIndex, keyX, keyY, 0, 0);
+                }
+            }
+            if (0 == newIndex) {
+                mIsOnlyFirstCharCapitalized = Character.isUpperCase(primaryCode);
+            } else {
+                mIsOnlyFirstCharCapitalized = mIsOnlyFirstCharCapitalized
+                        && !Character.isUpperCase(primaryCode);
+            }
+            if (Character.isUpperCase(primaryCode)) mCapsCount++;
+            if (Character.isDigit(primaryCode)) mDigitsCount++;
         }
         mAutoCorrection = null;
     }
 
     public void setCursorPositionWithinWord(final int posWithinWord) {
         mCursorPositionWithinWord = posWithinWord;
+        // TODO: compute where that puts us inside the events
     }
 
     public boolean isCursorFrontOrMiddleOfComposingWord() {
@@ -215,17 +240,12 @@
      * @return true if the cursor is still inside the composing word, false otherwise.
      */
     public boolean moveCursorByAndReturnIfInsideComposingWord(final int expectedMoveAmount) {
+        // TODO: should uncommit the composing feedback
+        mCombinerChain.reset();
         int actualMoveAmountWithinWord = 0;
         int cursorPos = mCursorPositionWithinWord;
-        final int[] codePoints;
-        if (mCodePointSize >= MAX_WORD_LENGTH) {
-            // If we have more than MAX_WORD_LENGTH characters, we don't have everything inside
-            // mPrimaryKeyCodes. This should be rare enough that we can afford to just compute
-            // the array on the fly when this happens.
-            codePoints = StringUtils.toCodePointArray(mTypedWord.toString());
-        } else {
-            codePoints = mPrimaryKeyCodes;
-        }
+        // TODO: Don't make that copy. We can do this directly from mTypedWordCache.
+        final int[] codePoints = StringUtils.toCodePointArray(mTypedWordCache);
         if (expectedMoveAmount >= 0) {
             // Moving the cursor forward for the expected amount or until the end of the word has
             // been reached, whichever comes first.
@@ -261,98 +281,48 @@
             final int codePoint = Character.codePointAt(word, i);
             // We don't want to override the batch input points that are held in mInputPointers
             // (See {@link #add(int,int,int)}).
-            add(codePoint, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+            processEvent(Event.createEventForCodePointFromUnknownSource(codePoint));
         }
     }
 
     /**
-     * Add a dummy key by retrieving reasonable coordinates
-     */
-    public void addKeyInfo(final int codePoint, final Keyboard keyboard) {
-        final int x, y;
-        final Key key;
-        if (keyboard != null && (key = keyboard.getKey(codePoint)) != null) {
-            x = key.getX() + key.getWidth() / 2;
-            y = key.getY() + key.getHeight() / 2;
-        } else {
-            x = Constants.NOT_A_COORDINATE;
-            y = Constants.NOT_A_COORDINATE;
-        }
-        add(codePoint, x, y);
-    }
-
-    /**
      * Set the currently composing word to the one passed as an argument.
      * This will register NOT_A_COORDINATE for X and Ys, and use the passed keyboard for proximity.
+     * @param codePoints the code points to set as the composing word.
+     * @param coordinates the x, y coordinates of the key in the CoordinateUtils format
      */
-    public void setComposingWord(final CharSequence word, final Keyboard keyboard) {
+    public void setComposingWord(final int[] codePoints, final int[] coordinates) {
         reset();
-        final int length = word.length();
-        for (int i = 0; i < length; i = Character.offsetByCodePoints(word, i, 1)) {
-            final int codePoint = Character.codePointAt(word, i);
-            addKeyInfo(codePoint, keyboard);
+        final int length = codePoints.length;
+        for (int i = 0; i < length; ++i) {
+            processEvent(Event.createEventForCodePointFromAlreadyTypedText(codePoints[i],
+                    CoordinateUtils.xFromArray(coordinates, i),
+                    CoordinateUtils.yFromArray(coordinates, i)));
         }
         mIsResumed = true;
     }
 
     /**
-     * Delete the last keystroke as a result of hitting backspace.
-     */
-    public void deleteLast() {
-        final int size = size();
-        if (size > 0) {
-            // Note: mTypedWord.length() and mCodes.length differ when there are surrogate pairs
-            final int stringBuilderLength = mTypedWord.length();
-            if (stringBuilderLength < size) {
-                throw new RuntimeException(
-                        "In WordComposer: mCodes and mTypedWords have non-matching lengths");
-            }
-            final int lastChar = mTypedWord.codePointBefore(stringBuilderLength);
-            if (Character.isSupplementaryCodePoint(lastChar)) {
-                mTypedWord.delete(stringBuilderLength - 2, stringBuilderLength);
-            } else {
-                mTypedWord.deleteCharAt(stringBuilderLength - 1);
-            }
-            if (Character.isUpperCase(lastChar)) mCapsCount--;
-            if (Character.isDigit(lastChar)) mDigitsCount--;
-            refreshSize();
-        }
-        // We may have deleted the last one.
-        if (0 == size()) {
-            mIsFirstCharCapitalized = false;
-        }
-        if (mTrailingSingleQuotesCount > 0) {
-            --mTrailingSingleQuotesCount;
-        } else {
-            int i = mTypedWord.length();
-            while (i > 0) {
-                i = mTypedWord.offsetByCodePoints(i, -1);
-                if (Constants.CODE_SINGLE_QUOTE != mTypedWord.codePointAt(i)) break;
-                ++mTrailingSingleQuotesCount;
-            }
-        }
-        mCursorPositionWithinWord = mCodePointSize;
-        mAutoCorrection = null;
-    }
-
-    /**
      * Returns the word as it was typed, without any correction applied.
      * @return the word that was typed so far. Never returns null.
      */
     public String getTypedWord() {
-        return mTypedWord.toString();
+        return mTypedWordCache.toString();
     }
 
     /**
-     * Whether or not the user typed a capital letter as the first letter in the word
+     * Whether this composer is composing or about to compose a word in which only the first letter
+     * is a capital.
+     *
+     * If we do have a composing word, we just return whether the word has indeed only its first
+     * character capitalized. If we don't, then we return a value based on the capitalized mode,
+     * which tell us what is likely to happen for the next composing word.
+     *
      * @return capitalization preference
      */
-    public boolean isFirstCharCapitalized() {
-        return mIsFirstCharCapitalized;
-    }
-
-    public int trailingSingleQuotesCount() {
-        return mTrailingSingleQuotesCount;
+    public boolean isOrWillBeOnlyFirstCharCapitalized() {
+        return isComposingWord() ? mIsOnlyFirstCharCapitalized
+                : (CAPS_MODE_OFF != mCapitalizedMode);
     }
 
     /**
@@ -390,10 +360,10 @@
     /**
      * Saves the caps mode at the start of composing.
      *
-     * WordComposer needs to know about this for several reasons. The first is, we need to know
-     * after the fact what the reason was, to register the correct form into the user history
-     * dictionary: if the word was automatically capitalized, we should insert it in all-lower
-     * case but if it's a manual pressing of shift, then it should be inserted as is.
+     * WordComposer needs to know about the caps mode for several reasons. The first is, we need
+     * to know after the fact what the reason was, to register the correct form into the user
+     * history dictionary: if the word was automatically capitalized, we should insert it in
+     * all-lower case but if it's a manual pressing of shift, then it should be inserted as is.
      * Also, batch input needs to know about the current caps mode to display correctly
      * capitalized suggestions.
      * @param mode the mode at the time of start
@@ -403,6 +373,20 @@
     }
 
     /**
+     * Before fetching suggestions, we don't necessarily know about the capitalized mode yet.
+     *
+     * If we don't have a composing word yet, we take a note of this mode so that we can then
+     * supply this information to the suggestion process. If we have a composing word, then
+     * the previous mode has priority over this.
+     * @param mode the mode just before fetching suggestions
+     */
+    public void adviseCapitalizedModeBeforeFetchingSuggestions(final int mode) {
+        if (!isComposingWord()) {
+            mCapitalizedMode = mode;
+        }
+    }
+
+    /**
      * Returns whether the word was automatically capitalized.
      * @return whether the word was automatically capitalized
      */
@@ -433,16 +417,15 @@
     }
 
     // `type' should be one of the LastComposedWord.COMMIT_TYPE_* constants above.
-    public LastComposedWord commitWord(final int type, final String committedWord,
-            final String separatorString, final String prevWord) {
+    // committedWord should contain suggestion spans if applicable.
+    public LastComposedWord commitWord(final int type, final CharSequence committedWord,
+            final String separatorString, final PrevWordsInfo prevWordsInfo) {
         // Note: currently, we come here whenever we commit a word. If it's a MANUAL_PICK
         // or a DECIDED_WORD we may cancel the commit later; otherwise, we should deactivate
         // the last composed word to ensure this does not happen.
-        final int[] primaryKeyCodes = mPrimaryKeyCodes;
-        mPrimaryKeyCodes = new int[MAX_WORD_LENGTH];
-        final LastComposedWord lastComposedWord = new LastComposedWord(primaryKeyCodes,
-                mInputPointers, mTypedWord.toString(), committedWord, separatorString,
-                prevWord, mCapitalizedMode);
+        final LastComposedWord lastComposedWord = new LastComposedWord(mEvents,
+                mInputPointers, mTypedWordCache.toString(), committedWord, separatorString,
+                prevWordsInfo, mCapitalizedMode);
         mInputPointers.reset();
         if (type != LastComposedWord.COMMIT_TYPE_DECIDED_WORD
                 && type != LastComposedWord.COMMIT_TYPE_MANUAL_PICK) {
@@ -451,12 +434,12 @@
         mCapsCount = 0;
         mDigitsCount = 0;
         mIsBatchMode = false;
-        mTypedWord.setLength(0);
+        mCombinerChain.reset();
+        mEvents.clear();
         mCodePointSize = 0;
-        mTrailingSingleQuotesCount = 0;
-        mIsFirstCharCapitalized = false;
+        mIsOnlyFirstCharCapitalized = false;
         mCapitalizedMode = CAPS_MODE_OFF;
-        refreshSize();
+        refreshTypedWordCache();
         mAutoCorrection = null;
         mCursorPositionWithinWord = 0;
         mIsResumed = false;
@@ -465,11 +448,11 @@
     }
 
     public void resumeSuggestionOnLastComposedWord(final LastComposedWord lastComposedWord) {
-        mPrimaryKeyCodes = lastComposedWord.mPrimaryKeyCodes;
+        mEvents.clear();
+        Collections.copy(mEvents, lastComposedWord.mEvents);
         mInputPointers.set(lastComposedWord.mInputPointers);
-        mTypedWord.setLength(0);
-        mTypedWord.append(lastComposedWord.mTypedWord);
-        refreshSize();
+        mCombinerChain.reset();
+        refreshTypedWordCache();
         mCapitalizedMode = lastComposedWord.mCapitalizedMode;
         mAutoCorrection = null; // This will be filled by the next call to updateSuggestion.
         mCursorPositionWithinWord = mCodePointSize;
diff --git a/java/src/com/android/inputmethod/latin/WordListInfo.java b/java/src/com/android/inputmethod/latin/WordListInfo.java
index 5ac806a..268fe98 100644
--- a/java/src/com/android/inputmethod/latin/WordListInfo.java
+++ b/java/src/com/android/inputmethod/latin/WordListInfo.java
@@ -22,8 +22,10 @@
 public final class WordListInfo {
     public final String mId;
     public final String mLocale;
-    public WordListInfo(final String id, final String locale) {
+    public final String mRawChecksum;
+    public WordListInfo(final String id, final String locale, final String rawChecksum) {
         mId = id;
         mLocale = locale;
+        mRawChecksum = rawChecksum;
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/debug/ExternalDictionaryGetterForDebug.java b/java/src/com/android/inputmethod/latin/debug/ExternalDictionaryGetterForDebug.java
index 028f78a..7071d86 100644
--- a/java/src/com/android/inputmethod/latin/debug/ExternalDictionaryGetterForDebug.java
+++ b/java/src/com/android/inputmethod/latin/debug/ExternalDictionaryGetterForDebug.java
@@ -26,8 +26,8 @@
 import com.android.inputmethod.latin.BinaryDictionaryFileDumper;
 import com.android.inputmethod.latin.BinaryDictionaryGetter;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.utils.DialogUtils;
 import com.android.inputmethod.latin.utils.DictionaryInfoUtils;
 import com.android.inputmethod.latin.utils.LocaleUtils;
 
@@ -49,9 +49,9 @@
 
     private static String[] findDictionariesInTheDownloadedFolder() {
         final File[] files = new File(SOURCE_FOLDER).listFiles();
-        final ArrayList<String> eligibleList = CollectionUtils.newArrayList();
+        final ArrayList<String> eligibleList = new ArrayList<>();
         for (File f : files) {
-            final FileHeader header = DictionaryInfoUtils.getDictionaryFileHeaderOrNull(f);
+            final DictionaryHeader header = DictionaryInfoUtils.getDictionaryFileHeaderOrNull(f);
             if (null == header) continue;
             eligibleList.add(f.getName());
         }
@@ -70,7 +70,7 @@
     }
 
     private static void showNoFileDialog(final Context context) {
-        new AlertDialog.Builder(context)
+        new AlertDialog.Builder(DialogUtils.getPlatformDialogThemeContext(context))
                 .setMessage(R.string.read_external_dictionary_no_files_message)
                 .setPositiveButton(android.R.string.ok, new OnClickListener() {
                     @Override
@@ -81,8 +81,8 @@
     }
 
     private static void showChooseFileDialog(final Context context, final String[] fileNames) {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        builder.setTitle(R.string.read_external_dictionary_multiple_files_title)
+        new AlertDialog.Builder(DialogUtils.getPlatformDialogThemeContext(context))
+                .setTitle(R.string.read_external_dictionary_multiple_files_title)
                 .setItems(fileNames, new OnClickListener() {
                     @Override
                     public void onClick(final DialogInterface dialog, final int which) {
@@ -99,7 +99,7 @@
     public static void askInstallFile(final Context context, final String dirPath,
             final String fileName, final Runnable completeRunnable) {
         final File file = new File(dirPath, fileName.toString());
-        final FileHeader header = DictionaryInfoUtils.getDictionaryFileHeaderOrNull(file);
+        final DictionaryHeader header = DictionaryInfoUtils.getDictionaryFileHeaderOrNull(file);
         final StringBuilder message = new StringBuilder();
         final String locale = header.getLocaleString();
         for (String key : header.mDictionaryOptions.mAttributes.keySet()) {
@@ -111,7 +111,7 @@
         final String title = String.format(
                 context.getString(R.string.read_external_dictionary_confirm_install_message),
                 languageName);
-        new AlertDialog.Builder(context)
+        new AlertDialog.Builder(DialogUtils.getPlatformDialogThemeContext(context))
                 .setTitle(title)
                 .setMessage(message)
                 .setNegativeButton(android.R.string.cancel, new OnClickListener() {
@@ -143,7 +143,7 @@
     }
 
     private static void installFile(final Context context, final File file,
-            final FileHeader header) {
+            final DictionaryHeader header) {
         BufferedOutputStream outputStream = null;
         File tempFile = null;
         try {
@@ -167,7 +167,7 @@
             }
         } catch (IOException e) {
             // There was an error: show a dialog
-            new AlertDialog.Builder(context)
+            new AlertDialog.Builder(DialogUtils.getPlatformDialogThemeContext(context))
                     .setTitle(R.string.error)
                     .setMessage(e.toString())
                     .setPositiveButton(android.R.string.ok, new OnClickListener() {
diff --git a/java/src/com/android/inputmethod/latin/define/DebugFlags.java b/java/src/com/android/inputmethod/latin/define/DebugFlags.java
new file mode 100644
index 0000000..c509e83
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/define/DebugFlags.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.define;
+
+import android.content.SharedPreferences;
+
+public final class DebugFlags {
+    public static final boolean DEBUG_ENABLED = false;
+
+    private DebugFlags() {
+        // This class is not publicly instantiable.
+    }
+
+    @SuppressWarnings("unused")
+    public static void init(final SharedPreferences prefs) {
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/define/ProductionFlag.java b/java/src/com/android/inputmethod/latin/define/ProductionFlag.java
deleted file mode 100644
index dc937fb..0000000
--- a/java/src/com/android/inputmethod/latin/define/ProductionFlag.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.define;
-
-public final class ProductionFlag {
-    private ProductionFlag() {
-        // This class is not publicly instantiable.
-    }
-
-    public static final boolean USES_DEVELOPMENT_ONLY_DIAGNOSTICS = false;
-
-    // When false, USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG suggests that all guarded
-    // class-private DEBUG flags should be false, and any privacy controls should be enforced.
-    // USES_DEVELOPMENT_ONLY_DIAGNOSTICS must be false for any production build.
-    public static final boolean USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG = false;
-
-    public static final boolean IS_HARDWARE_KEYBOARD_SUPPORTED = false;
-}
diff --git a/java/src/com/android/inputmethod/latin/define/ProductionFlags.java b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
new file mode 100644
index 0000000..d385cf8
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/define/ProductionFlags.java
@@ -0,0 +1,52 @@
+/*
+ * 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.define;
+
+public final class ProductionFlags {
+    private ProductionFlags() {
+        // This class is not publicly instantiable.
+    }
+
+    public static final boolean IS_HARDWARE_KEYBOARD_SUPPORTED = false;
+
+    /**
+     *  When true, enable {@link InputMethodService#onUpdateCursorAnchorInfo} callback via
+     *  {@link InputConnection#requestCursorAnchorInfo}. This flag has no effect in API Level 20
+     *  and prior. In general, this callback provides more detailed positional information,
+     *  even though an explicit support is required by the editor.
+     */
+    public static final boolean ENABLE_CURSOR_ANCHOR_INFO_CALLBACK = false;
+
+    /**
+     * When true, enable {@link InputMethodService#onUpdateCursor} callback via
+     * {@link InputConnection#requestCursorAnchorInfo}. Although this callback has been available
+     * since API Level 3, the callback has never been used until API Level 20. Thus it may or may
+     * not work well as expected. Should rely on {@link InputMethodService#onUpdateCursorAnchorInfo}
+     * whenever possible since it is supposed to be more reliable and accurate.
+     */
+    public static final boolean ENABLE_CURSOR_RECT_CALLBACK = false;
+
+    /**
+     * Include all suggestions from all dictionaries in {@link SuggestedWords#mRawSuggestions}.
+     */
+    public static final boolean INCLUDE_RAW_SUGGESTIONS = false;
+
+    /**
+     * When false, the metrics logging is not yet ready to be enabled.
+     */
+    public static final boolean IS_METRICS_LOGGING_SUPPORTED = false;
+}
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
new file mode 100644
index 0000000..6588951
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -0,0 +1,2009 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.inputlogic;
+
+import android.os.SystemClock;
+import android.text.SpannableString;
+import android.text.TextUtils;
+import android.text.style.SuggestionSpan;
+import android.util.Log;
+import android.view.KeyCharacterMap;
+import android.view.KeyEvent;
+import android.view.inputmethod.CorrectionInfo;
+import android.view.inputmethod.EditorInfo;
+
+import com.android.inputmethod.compat.SuggestionSpanUtils;
+import com.android.inputmethod.event.Event;
+import com.android.inputmethod.event.InputTransaction;
+import com.android.inputmethod.keyboard.KeyboardSwitcher;
+import com.android.inputmethod.keyboard.ProximityInfo;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.DictionaryFacilitator;
+import com.android.inputmethod.latin.InputPointers;
+import com.android.inputmethod.latin.LastComposedWord;
+import com.android.inputmethod.latin.LatinIME;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.RichInputConnection;
+import com.android.inputmethod.latin.Suggest;
+import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.WordComposer;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.settings.SettingsValues;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+import com.android.inputmethod.latin.suggestions.SuggestionStripViewAccessor;
+import com.android.inputmethod.latin.utils.AsyncResultHolder;
+import com.android.inputmethod.latin.utils.InputTypeUtils;
+import com.android.inputmethod.latin.utils.RecapitalizeStatus;
+import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.TextRange;
+
+import java.util.ArrayList;
+import java.util.TreeSet;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * This class manages the input logic.
+ */
+public final class InputLogic {
+    private static final String TAG = InputLogic.class.getSimpleName();
+
+    // TODO : Remove this member when we can.
+    private final LatinIME mLatinIME;
+    private final SuggestionStripViewAccessor mSuggestionStripViewAccessor;
+
+    // Never null.
+    private InputLogicHandler mInputLogicHandler = InputLogicHandler.NULL_HANDLER;
+
+    // TODO : make all these fields private as soon as possible.
+    // Current space state of the input method. This can be any of the above constants.
+    private int mSpaceState;
+    // Never null
+    public SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
+    public final Suggest mSuggest;
+    private final DictionaryFacilitator mDictionaryFacilitator;
+
+    public LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
+    // This has package visibility so it can be accessed from InputLogicHandler.
+    /* package */ final WordComposer mWordComposer;
+    public final RichInputConnection mConnection;
+    private final RecapitalizeStatus mRecapitalizeStatus = new RecapitalizeStatus();
+
+    private int mDeleteCount;
+    private long mLastKeyTime;
+    public final TreeSet<Long> mCurrentlyPressedHardwareKeys = new TreeSet<>();
+
+    // Keeps track of most recently inserted text (multi-character key) for reverting
+    private String mEnteredText;
+
+    // TODO: This boolean is persistent state and causes large side effects at unexpected times.
+    // Find a way to remove it for readability.
+    private boolean mIsAutoCorrectionIndicatorOn;
+    private long mDoubleSpacePeriodCountdownStart;
+
+    /**
+     * Create a new instance of the input logic.
+     * @param latinIME the instance of the parent LatinIME. We should remove this when we can.
+     * @param suggestionStripViewAccessor an object to access the suggestion strip view.
+     * @param dictionaryFacilitator facilitator for getting suggestions and updating user history
+     * dictionary.
+     */
+    public InputLogic(final LatinIME latinIME,
+            final SuggestionStripViewAccessor suggestionStripViewAccessor,
+            final DictionaryFacilitator dictionaryFacilitator) {
+        mLatinIME = latinIME;
+        mSuggestionStripViewAccessor = suggestionStripViewAccessor;
+        mWordComposer = new WordComposer();
+        mConnection = new RichInputConnection(latinIME);
+        mInputLogicHandler = InputLogicHandler.NULL_HANDLER;
+        mSuggest = new Suggest(dictionaryFacilitator);
+        mDictionaryFacilitator = dictionaryFacilitator;
+    }
+
+    /**
+     * Initializes the input logic for input in an editor.
+     *
+     * Call this when input starts or restarts in some editor (typically, in onStartInputView).
+     *
+     * @param combiningSpec the combining spec string for this subtype
+     */
+    public void startInput(final String combiningSpec) {
+        mEnteredText = null;
+        mWordComposer.restartCombining(combiningSpec);
+        resetComposingState(true /* alsoResetLastComposedWord */);
+        mDeleteCount = 0;
+        mSpaceState = SpaceState.NONE;
+        mRecapitalizeStatus.disable(); // Do not perform recapitalize until the cursor is moved once
+        mCurrentlyPressedHardwareKeys.clear();
+        mSuggestedWords = SuggestedWords.EMPTY;
+        // In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
+        // so we try using some heuristics to find out about these and fix them.
+        mConnection.tryFixLyingCursorPosition();
+        cancelDoubleSpacePeriodCountdown();
+        if (InputLogicHandler.NULL_HANDLER == mInputLogicHandler) {
+            mInputLogicHandler = new InputLogicHandler(mLatinIME, this);
+        } else {
+            mInputLogicHandler.reset();
+        }
+    }
+
+    /**
+     * Call this when the subtype changes.
+     * @param combiningSpec the spec string for the combining rules
+     */
+    public void onSubtypeChanged(final String combiningSpec) {
+        finishInput();
+        startInput(combiningSpec);
+    }
+
+    /**
+     * Call this when the orientation changes.
+     * @param settingsValues the current values of the settings.
+     */
+    public void onOrientationChange(final SettingsValues settingsValues) {
+        // If !isComposingWord, #commitTyped() is a no-op, but still, it's better to avoid
+        // the useless IPC of {begin,end}BatchEdit.
+        if (mWordComposer.isComposingWord()) {
+            mConnection.beginBatchEdit();
+            // If we had a composition in progress, we need to commit the word so that the
+            // suggestionsSpan will be added. This will allow resuming on the same suggestions
+            // after rotation is finished.
+            commitTyped(settingsValues, LastComposedWord.NOT_A_SEPARATOR);
+            mConnection.endBatchEdit();
+        }
+    }
+
+    /**
+     * Clean up the input logic after input is finished.
+     */
+    public void finishInput() {
+        if (mWordComposer.isComposingWord()) {
+            mConnection.finishComposingText();
+        }
+        resetComposingState(true /* alsoResetLastComposedWord */);
+        mInputLogicHandler.reset();
+    }
+
+    // Normally this class just gets out of scope after the process ends, but in unit tests, we
+    // create several instances of LatinIME in the same process, which results in several
+    // instances of InputLogic. This cleans up the associated handler so that tests don't leak
+    // handlers.
+    public void recycle() {
+        final InputLogicHandler inputLogicHandler = mInputLogicHandler;
+        mInputLogicHandler = InputLogicHandler.NULL_HANDLER;
+        inputLogicHandler.destroy();
+        mDictionaryFacilitator.closeDictionaries();
+    }
+
+    /**
+     * React to a string input.
+     *
+     * This is triggered by keys that input many characters at once, like the ".com" key or
+     * some additional keys for example.
+     *
+     * @param settingsValues the current values of the settings.
+     * @param event the input event containing the data.
+     * @return the complete transaction object
+     */
+    public InputTransaction onTextInput(final SettingsValues settingsValues, final Event event,
+            final int keyboardShiftMode,
+            // TODO: remove this argument
+            final LatinIME.UIHandler handler) {
+        final String rawText = event.mText.toString();
+        final InputTransaction inputTransaction = new InputTransaction(settingsValues, event,
+                SystemClock.uptimeMillis(), mSpaceState,
+                getActualCapsMode(settingsValues, keyboardShiftMode));
+        mConnection.beginBatchEdit();
+        if (mWordComposer.isComposingWord()) {
+            commitCurrentAutoCorrection(settingsValues, rawText, handler);
+        } else {
+            resetComposingState(true /* alsoResetLastComposedWord */);
+        }
+        handler.postUpdateSuggestionStrip();
+        final String text = performSpecificTldProcessingOnTextInput(rawText);
+        if (SpaceState.PHANTOM == mSpaceState) {
+            promotePhantomSpace(settingsValues);
+        }
+        mConnection.commitText(text, 1);
+        mConnection.endBatchEdit();
+        // Space state must be updated before calling updateShiftState
+        mSpaceState = SpaceState.NONE;
+        mEnteredText = text;
+        inputTransaction.setDidAffectContents();
+        inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+        return inputTransaction;
+    }
+
+    /**
+     * A suggestion was picked from the suggestion strip.
+     * @param settingsValues the current values of the settings.
+     * @param suggestionInfo the suggestion info.
+     * @param keyboardShiftState the shift state of the keyboard, as returned by
+     *     {@link com.android.inputmethod.keyboard.KeyboardSwitcher#getKeyboardShiftMode()}
+     * @return the complete transaction object
+     */
+    // Called from {@link SuggestionStripView} through the {@link SuggestionStripView#Listener}
+    // interface
+    public InputTransaction onPickSuggestionManually(final SettingsValues settingsValues,
+            final SuggestedWordInfo suggestionInfo, final int keyboardShiftState,
+            // TODO: remove these arguments
+            final int currentKeyboardScriptId, final LatinIME.UIHandler handler) {
+        final SuggestedWords suggestedWords = mSuggestedWords;
+        final String suggestion = suggestionInfo.mWord;
+        // If this is a punctuation picked from the suggestion strip, pass it to onCodeInput
+        if (suggestion.length() == 1 && suggestedWords.isPunctuationSuggestions()) {
+            // Word separators are suggested before the user inputs something.
+            // Rely on onCodeInput to do the complicated swapping/stripping logic consistently.
+            final Event event = Event.createPunctuationSuggestionPickedEvent(suggestionInfo);
+            return onCodeInput(settingsValues, event, keyboardShiftState,
+                    currentKeyboardScriptId, handler);
+        }
+
+        final Event event = Event.createSuggestionPickedEvent(suggestionInfo);
+        final InputTransaction inputTransaction = new InputTransaction(settingsValues,
+                event, SystemClock.uptimeMillis(), mSpaceState, keyboardShiftState);
+        // Manual pick affects the contents of the editor, so we take note of this. It's important
+        // for the sequence of language switching.
+        inputTransaction.setDidAffectContents();
+        mConnection.beginBatchEdit();
+        if (SpaceState.PHANTOM == mSpaceState && suggestion.length() > 0
+                // In the batch input mode, a manually picked suggested word should just replace
+                // the current batch input text and there is no need for a phantom space.
+                && !mWordComposer.isBatchMode()) {
+            final int firstChar = Character.codePointAt(suggestion, 0);
+            if (!settingsValues.isWordSeparator(firstChar)
+                    || settingsValues.isUsuallyPrecededBySpace(firstChar)) {
+                promotePhantomSpace(settingsValues);
+            }
+        }
+
+        // TODO: We should not need the following branch. We should be able to take the same
+        // code path as for other kinds, use commitChosenWord, and do everything normally. We will
+        // however need to reset the suggestion strip right away, because we know we can't take
+        // the risk of calling commitCompletion twice because we don't know how the app will react.
+        if (suggestionInfo.isKindOf(SuggestedWordInfo.KIND_APP_DEFINED)) {
+            mSuggestedWords = SuggestedWords.EMPTY;
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+            inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+            resetComposingState(true /* alsoResetLastComposedWord */);
+            mConnection.commitCompletion(suggestionInfo.mApplicationSpecifiedCompletionInfo);
+            mConnection.endBatchEdit();
+            return inputTransaction;
+        }
+
+        // We need to log before we commit, because the word composer will store away the user
+        // typed word.
+        final String replacedWord = mWordComposer.getTypedWord();
+        commitChosenWord(settingsValues, suggestion,
+                LastComposedWord.COMMIT_TYPE_MANUAL_PICK, LastComposedWord.NOT_A_SEPARATOR);
+        mConnection.endBatchEdit();
+        // Don't allow cancellation of manual pick
+        mLastComposedWord.deactivate();
+        // Space state must be updated before calling updateShiftState
+        mSpaceState = SpaceState.PHANTOM;
+        inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+
+        // We should show the "Touch again to save" hint if the user pressed the first entry
+        // AND it's in none of our current dictionaries (main, user or otherwise).
+        final boolean showingAddToDictionaryHint =
+                (suggestionInfo.isKindOf(SuggestedWordInfo.KIND_TYPED)
+                        || suggestionInfo.isKindOf(SuggestedWordInfo.KIND_OOV_CORRECTION))
+                        && !mDictionaryFacilitator.isValidWord(suggestion, true /* ignoreCase */);
+
+        if (showingAddToDictionaryHint && mDictionaryFacilitator.isUserDictionaryEnabled()) {
+            mSuggestionStripViewAccessor.showAddToDictionaryHint(suggestion);
+        } else {
+            // If we're not showing the "Touch again to save", then update the suggestion strip.
+            handler.postUpdateSuggestionStrip();
+        }
+        return inputTransaction;
+    }
+
+    /**
+     * Consider an update to the cursor position. Evaluate whether this update has happened as
+     * part of normal typing or whether it was an explicit cursor move by the user. In any case,
+     * do the necessary adjustments.
+     * @param oldSelStart old selection start
+     * @param oldSelEnd old selection end
+     * @param newSelStart new selection start
+     * @param newSelEnd new selection end
+     * @return whether the cursor has moved as a result of user interaction.
+     */
+    public boolean onUpdateSelection(final int oldSelStart, final int oldSelEnd,
+            final int newSelStart, final int newSelEnd) {
+        if (mConnection.isBelatedExpectedUpdate(oldSelStart, newSelStart, oldSelEnd, newSelEnd)) {
+            return false;
+        }
+        // TODO: the following is probably better done in resetEntireInputState().
+        // it should only happen when the cursor moved, and the very purpose of the
+        // test below is to narrow down whether this happened or not. Likewise with
+        // the call to updateShiftState.
+        // We set this to NONE because after a cursor move, we don't want the space
+        // state-related special processing to kick in.
+        mSpaceState = SpaceState.NONE;
+
+        final boolean selectionChangedOrSafeToReset =
+                oldSelStart != newSelStart || oldSelEnd != newSelEnd // selection changed
+                || !mWordComposer.isComposingWord(); // safe to reset
+        final boolean hasOrHadSelection = (oldSelStart != oldSelEnd || newSelStart != newSelEnd);
+        final int moveAmount = newSelStart - oldSelStart;
+        // As an added small gift from the framework, it happens upon rotation when there
+        // is a selection that we get a wrong cursor position delivered to startInput() that
+        // does not get reflected in the oldSel{Start,End} parameters to the next call to
+        // onUpdateSelection. In this case, we may have set a composition, and when we're here
+        // we realize we shouldn't have. In theory, in this case, selectionChangedOrSafeToReset
+        // should be true, but that is if the framework had taken that wrong cursor position
+        // into account, which means we have to reset the entire composing state whenever there
+        // is or was a selection regardless of whether it changed or not.
+        if (hasOrHadSelection || (selectionChangedOrSafeToReset
+                && !mWordComposer.moveCursorByAndReturnIfInsideComposingWord(moveAmount))) {
+            // If we are composing a word and moving the cursor, we would want to set a
+            // suggestion span for recorrection to work correctly. Unfortunately, that
+            // would involve the keyboard committing some new text, which would move the
+            // cursor back to where it was. Latin IME could then fix the position of the cursor
+            // again, but the asynchronous nature of the calls results in this wreaking havoc
+            // with selection on double tap and the like.
+            // Another option would be to send suggestions each time we set the composing
+            // text, but that is probably too expensive to do, so we decided to leave things
+            // as is.
+            // Also, we're posting a resume suggestions message, and this will update the
+            // suggestions strip in a few milliseconds, so if we cleared the suggestion strip here
+            // we'd have the suggestion strip noticeably janky. To avoid that, we don't clear
+            // it here, which means we'll keep outdated suggestions for a split second but the
+            // visual result is better.
+            resetEntireInputState(newSelStart, newSelEnd, false /* clearSuggestionStrip */);
+        } else {
+            // resetEntireInputState calls resetCachesUponCursorMove, but forcing the
+            // composition to end. But in all cases where we don't reset the entire input
+            // state, we still want to tell the rich input connection about the new cursor
+            // position so that it can update its caches.
+            mConnection.resetCachesUponCursorMoveAndReturnSuccess(
+                    newSelStart, newSelEnd, false /* shouldFinishComposition */);
+        }
+
+        // The cursor has been moved : we now accept to perform recapitalization
+        mRecapitalizeStatus.enable();
+        // We moved the cursor. If we are touching a word, we need to resume suggestion.
+        mLatinIME.mHandler.postResumeSuggestions(false /* shouldIncludeResumedWordInSuggestions */,
+                true /* shouldDelay */);
+        // Stop the last recapitalization, if started.
+        mRecapitalizeStatus.stop();
+        return true;
+    }
+
+    /**
+     * React to a code input. It may be a code point to insert, or a symbolic value that influences
+     * the keyboard behavior.
+     *
+     * Typically, this is called whenever a key is pressed on the software keyboard. This is not
+     * the entry point for gesture input; see the onBatchInput* family of functions for this.
+     *
+     * @param settingsValues the current settings values.
+     * @param event the event to handle.
+     * @param keyboardShiftMode the current shift mode of the keyboard, as returned by
+     *     {@link com.android.inputmethod.keyboard.KeyboardSwitcher#getKeyboardShiftMode()}
+     * @return the complete transaction object
+     */
+    public InputTransaction onCodeInput(final SettingsValues settingsValues, final Event event,
+            final int keyboardShiftMode,
+            // TODO: remove these arguments
+            final int currentKeyboardScriptId, final LatinIME.UIHandler handler) {
+        final InputTransaction inputTransaction = new InputTransaction(settingsValues, event,
+                SystemClock.uptimeMillis(), mSpaceState,
+                getActualCapsMode(settingsValues, keyboardShiftMode));
+        if (event.mKeyCode != Constants.CODE_DELETE
+                || inputTransaction.mTimestamp > mLastKeyTime + Constants.LONG_PRESS_MILLISECONDS) {
+            mDeleteCount = 0;
+        }
+        mLastKeyTime = inputTransaction.mTimestamp;
+        mConnection.beginBatchEdit();
+        if (!mWordComposer.isComposingWord()) {
+            mIsAutoCorrectionIndicatorOn = false;
+        }
+
+        // TODO: Consolidate the double-space period timer, mLastKeyTime, and the space state.
+        if (event.mCodePoint != Constants.CODE_SPACE) {
+            cancelDoubleSpacePeriodCountdown();
+        }
+
+        boolean didAutoCorrect = false;
+        if (event.isFunctionalKeyEvent()) {
+            // A special key, like delete, shift, emoji, or the settings key.
+            switch (event.mKeyCode) {
+            case Constants.CODE_DELETE:
+                handleBackspace(inputTransaction, currentKeyboardScriptId);
+                // Backspace is a functional key, but it affects the contents of the editor.
+                inputTransaction.setDidAffectContents();
+                break;
+            case Constants.CODE_SHIFT:
+                performRecapitalization(inputTransaction.mSettingsValues);
+                inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+                if (mSuggestedWords.mIsPrediction) {
+                    inputTransaction.setRequiresUpdateSuggestions();
+                }
+                break;
+            case Constants.CODE_CAPSLOCK:
+                // Note: Changing keyboard to shift lock state is handled in
+                // {@link KeyboardSwitcher#onCodeInput(int)}.
+                break;
+            case Constants.CODE_SYMBOL_SHIFT:
+                // Note: Calling back to the keyboard on the symbol Shift key is handled in
+                // {@link #onPressKey(int,int,boolean)} and {@link #onReleaseKey(int,boolean)}.
+                break;
+            case Constants.CODE_SWITCH_ALPHA_SYMBOL:
+                // Note: Calling back to the keyboard on symbol key is handled in
+                // {@link #onPressKey(int,int,boolean)} and {@link #onReleaseKey(int,boolean)}.
+                break;
+            case Constants.CODE_SETTINGS:
+                onSettingsKeyPressed();
+                break;
+            case Constants.CODE_SHORTCUT:
+                // We need to switch to the shortcut IME. This is handled by LatinIME since the
+                // input logic has no business with IME switching.
+                break;
+            case Constants.CODE_ACTION_NEXT:
+                performEditorAction(EditorInfo.IME_ACTION_NEXT);
+                break;
+            case Constants.CODE_ACTION_PREVIOUS:
+                performEditorAction(EditorInfo.IME_ACTION_PREVIOUS);
+                break;
+            case Constants.CODE_LANGUAGE_SWITCH:
+                handleLanguageSwitchKey();
+                break;
+            case Constants.CODE_EMOJI:
+                // Note: Switching emoji keyboard is being handled in
+                // {@link KeyboardState#onCodeInput(int,int)}.
+                break;
+            case Constants.CODE_ALPHA_FROM_EMOJI:
+                // Note: Switching back from Emoji keyboard to the main keyboard is being
+                // handled in {@link KeyboardState#onCodeInput(int,int)}.
+                break;
+            case Constants.CODE_SHIFT_ENTER:
+                // TODO: remove this object
+                final Event tmpEvent = Event.createSoftwareKeypressEvent(Constants.CODE_ENTER,
+                        event.mKeyCode, event.mX, event.mY, event.isKeyRepeat());
+                final InputTransaction tmpTransaction = new InputTransaction(
+                        inputTransaction.mSettingsValues, tmpEvent,
+                        inputTransaction.mTimestamp, inputTransaction.mSpaceState,
+                        inputTransaction.mShiftState);
+                didAutoCorrect = handleNonSpecialCharacter(tmpTransaction, handler);
+                // Shift + Enter is treated as a functional key but it results in adding a new
+                // line, so that does affect the contents of the editor.
+                inputTransaction.setDidAffectContents();
+                break;
+            default:
+                throw new RuntimeException("Unknown key code : " + event.mKeyCode);
+            }
+        } else {
+            inputTransaction.setDidAffectContents();
+            switch (event.mCodePoint) {
+            case Constants.CODE_ENTER:
+                final EditorInfo editorInfo = getCurrentInputEditorInfo();
+                final int imeOptionsActionId =
+                        InputTypeUtils.getImeOptionsActionIdFromEditorInfo(editorInfo);
+                if (InputTypeUtils.IME_ACTION_CUSTOM_LABEL == imeOptionsActionId) {
+                    // Either we have an actionLabel and we should performEditorAction with
+                    // actionId regardless of its value.
+                    performEditorAction(editorInfo.actionId);
+                } else if (EditorInfo.IME_ACTION_NONE != imeOptionsActionId) {
+                    // We didn't have an actionLabel, but we had another action to execute.
+                    // EditorInfo.IME_ACTION_NONE explicitly means no action. In contrast,
+                    // EditorInfo.IME_ACTION_UNSPECIFIED is the default value for an action, so it
+                    // means there should be an action and the app didn't bother to set a specific
+                    // code for it - presumably it only handles one. It does not have to be treated
+                    // in any specific way: anything that is not IME_ACTION_NONE should be sent to
+                    // performEditorAction.
+                    performEditorAction(imeOptionsActionId);
+                } else {
+                    // No action label, and the action from imeOptions is NONE: this is a regular
+                    // enter key that should input a carriage return.
+                    didAutoCorrect = handleNonSpecialCharacter(inputTransaction, handler);
+                }
+                break;
+            default:
+                didAutoCorrect = handleNonSpecialCharacter(inputTransaction, handler);
+                break;
+            }
+        }
+        if (!didAutoCorrect && event.mKeyCode != Constants.CODE_SHIFT
+                && event.mKeyCode != Constants.CODE_CAPSLOCK
+                && event.mKeyCode != Constants.CODE_SWITCH_ALPHA_SYMBOL)
+            mLastComposedWord.deactivate();
+        if (Constants.CODE_DELETE != event.mKeyCode) {
+            mEnteredText = null;
+        }
+        mConnection.endBatchEdit();
+        return inputTransaction;
+    }
+
+    public void onStartBatchInput(final SettingsValues settingsValues,
+            // TODO: remove these arguments
+            final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) {
+        mInputLogicHandler.onStartBatchInput();
+        handler.showGesturePreviewAndSuggestionStrip(
+                SuggestedWords.EMPTY, false /* dismissGestureFloatingPreviewText */);
+        handler.cancelUpdateSuggestionStrip();
+        ++mAutoCommitSequenceNumber;
+        mConnection.beginBatchEdit();
+        if (mWordComposer.isComposingWord()) {
+            if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
+                // If we are in the middle of a recorrection, we need to commit the recorrection
+                // first so that we can insert the batch input at the current cursor position.
+                resetEntireInputState(mConnection.getExpectedSelectionStart(),
+                        mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
+            } else if (mWordComposer.isSingleLetter()) {
+                // We auto-correct the previous (typed, not gestured) string iff it's one character
+                // long. The reason for this is, even in the middle of gesture typing, you'll still
+                // tap one-letter words and you want them auto-corrected (typically, "i" in English
+                // should become "I"). However for any longer word, we assume that the reason for
+                // tapping probably is that the word you intend to type is not in the dictionary,
+                // so we do not attempt to correct, on the assumption that if that was a dictionary
+                // word, the user would probably have gestured instead.
+                commitCurrentAutoCorrection(settingsValues, LastComposedWord.NOT_A_SEPARATOR,
+                        handler);
+            } else {
+                commitTyped(settingsValues, LastComposedWord.NOT_A_SEPARATOR);
+            }
+        }
+        final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
+        if (Character.isLetterOrDigit(codePointBeforeCursor)
+                || settingsValues.isUsuallyFollowedBySpace(codePointBeforeCursor)) {
+            final boolean autoShiftHasBeenOverriden = keyboardSwitcher.getKeyboardShiftMode() !=
+                    getCurrentAutoCapsState(settingsValues);
+            mSpaceState = SpaceState.PHANTOM;
+            if (!autoShiftHasBeenOverriden) {
+                // When we change the space state, we need to update the shift state of the
+                // keyboard unless it has been overridden manually. This is happening for example
+                // after typing some letters and a period, then gesturing; the keyboard is not in
+                // caps mode yet, but since a gesture is starting, it should go in caps mode,
+                // unless the user explictly said it should not.
+                keyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(settingsValues),
+                        getCurrentRecapitalizeState());
+            }
+        }
+        mConnection.endBatchEdit();
+        mWordComposer.setCapitalizedModeAtStartComposingTime(
+                getActualCapsMode(settingsValues, keyboardSwitcher.getKeyboardShiftMode()));
+    }
+
+    /* The sequence number member is only used in onUpdateBatchInput. It is increased each time
+     * auto-commit happens. The reason we need this is, when auto-commit happens we trim the
+     * input pointers that are held in a singleton, and to know how much to trim we rely on the
+     * results of the suggestion process that is held in mSuggestedWords.
+     * However, the suggestion process is asynchronous, and sometimes we may enter the
+     * onUpdateBatchInput method twice without having recomputed suggestions yet, or having
+     * received new suggestions generated from not-yet-trimmed input pointers. In this case, the
+     * mIndexOfTouchPointOfSecondWords member will be out of date, and we must not use it lest we
+     * remove an unrelated number of pointers (possibly even more than are left in the input
+     * pointers, leading to a crash).
+     * To avoid that, we increase the sequence number each time we auto-commit and trim the
+     * input pointers, and we do not use any suggested words that have been generated with an
+     * earlier sequence number.
+     */
+    private int mAutoCommitSequenceNumber = 1;
+    public void onUpdateBatchInput(final SettingsValues settingsValues,
+            final InputPointers batchPointers,
+            // TODO: remove these arguments
+            final KeyboardSwitcher keyboardSwitcher) {
+        if (settingsValues.mPhraseGestureEnabled) {
+            final SuggestedWordInfo candidate = mSuggestedWords.getAutoCommitCandidate();
+            // If these suggested words have been generated with out of date input pointers, then
+            // we skip auto-commit (see comments above on the mSequenceNumber member).
+            if (null != candidate
+                    && mSuggestedWords.mSequenceNumber >= mAutoCommitSequenceNumber) {
+                if (candidate.mSourceDict.shouldAutoCommit(candidate)) {
+                    final String[] commitParts = candidate.mWord.split(Constants.WORD_SEPARATOR, 2);
+                    batchPointers.shift(candidate.mIndexOfTouchPointOfSecondWord);
+                    promotePhantomSpace(settingsValues);
+                    mConnection.commitText(commitParts[0], 0);
+                    mSpaceState = SpaceState.PHANTOM;
+                    keyboardSwitcher.requestUpdatingShiftState(
+                            getCurrentAutoCapsState(settingsValues), getCurrentRecapitalizeState());
+                    mWordComposer.setCapitalizedModeAtStartComposingTime(getActualCapsMode(
+                            settingsValues, keyboardSwitcher.getKeyboardShiftMode()));
+                    ++mAutoCommitSequenceNumber;
+                }
+            }
+        }
+        mInputLogicHandler.onUpdateBatchInput(batchPointers, mAutoCommitSequenceNumber);
+    }
+
+    public void onEndBatchInput(final InputPointers batchPointers) {
+        mInputLogicHandler.updateTailBatchInput(batchPointers, mAutoCommitSequenceNumber);
+        ++mAutoCommitSequenceNumber;
+    }
+
+    // TODO: remove this argument
+    public void onCancelBatchInput(final LatinIME.UIHandler handler) {
+        mInputLogicHandler.onCancelBatchInput();
+        handler.showGesturePreviewAndSuggestionStrip(
+                SuggestedWords.EMPTY, true /* dismissGestureFloatingPreviewText */);
+    }
+
+    // TODO: on the long term, this method should become private, but it will be difficult.
+    // Especially, how do we deal with InputMethodService.onDisplayCompletions?
+    public void setSuggestedWords(final SuggestedWords suggestedWords) {
+        if (SuggestedWords.EMPTY != suggestedWords) {
+            final String autoCorrection;
+            if (suggestedWords.mWillAutoCorrect) {
+                autoCorrection = suggestedWords.getWord(SuggestedWords.INDEX_OF_AUTO_CORRECTION);
+            } else {
+                // We can't use suggestedWords.getWord(SuggestedWords.INDEX_OF_TYPED_WORD)
+                // because it may differ from mWordComposer.mTypedWord.
+                autoCorrection = suggestedWords.mTypedWord;
+            }
+            mWordComposer.setAutoCorrection(autoCorrection);
+        }
+        mSuggestedWords = suggestedWords;
+        final boolean newAutoCorrectionIndicator = suggestedWords.mWillAutoCorrect;
+        // Put a blue underline to a word in TextView which will be auto-corrected.
+        if (mIsAutoCorrectionIndicatorOn != newAutoCorrectionIndicator
+                && mWordComposer.isComposingWord()) {
+            mIsAutoCorrectionIndicatorOn = newAutoCorrectionIndicator;
+            final CharSequence textWithUnderline =
+                    getTextWithUnderline(mWordComposer.getTypedWord());
+            // TODO: when called from an updateSuggestionStrip() call that results from a posted
+            // message, this is called outside any batch edit. Potentially, this may result in some
+            // janky flickering of the screen, although the display speed makes it unlikely in
+            // the practice.
+            mConnection.setComposingText(textWithUnderline, 1);
+        }
+    }
+
+    /**
+     * Handle inputting a code point to the editor.
+     *
+     * Non-special keys are those that generate a single code point.
+     * This includes all letters, digits, punctuation, separators, emoji. It excludes keys that
+     * manage keyboard-related stuff like shift, language switch, settings, layout switch, or
+     * any key that results in multiple code points like the ".com" key.
+     *
+     * @param inputTransaction The transaction in progress.
+     * @return whether this caused an auto-correction to happen.
+     */
+    private boolean handleNonSpecialCharacter(final InputTransaction inputTransaction,
+            // TODO: remove this argument
+            final LatinIME.UIHandler handler) {
+        final int codePoint = inputTransaction.mEvent.mCodePoint;
+        mSpaceState = SpaceState.NONE;
+        final boolean didAutoCorrect;
+        if (inputTransaction.mSettingsValues.isWordSeparator(codePoint)
+                || Character.getType(codePoint) == Character.OTHER_SYMBOL) {
+            didAutoCorrect = handleSeparator(inputTransaction,
+                    inputTransaction.mEvent.isSuggestionStripPress(), handler);
+        } else {
+            didAutoCorrect = false;
+            if (SpaceState.PHANTOM == inputTransaction.mSpaceState) {
+                if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
+                    // If we are in the middle of a recorrection, we need to commit the recorrection
+                    // first so that we can insert the character at the current cursor position.
+                    resetEntireInputState(mConnection.getExpectedSelectionStart(),
+                            mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
+                } else {
+                    commitTyped(inputTransaction.mSettingsValues, LastComposedWord.NOT_A_SEPARATOR);
+                }
+            }
+            handleNonSeparator(inputTransaction.mSettingsValues, inputTransaction);
+        }
+        return didAutoCorrect;
+    }
+
+    /**
+     * Handle a non-separator.
+     * @param settingsValues The current settings values.
+     * @param inputTransaction The transaction in progress.
+     */
+    private void handleNonSeparator(final SettingsValues settingsValues,
+            final InputTransaction inputTransaction) {
+        final int codePoint = inputTransaction.mEvent.mCodePoint;
+        // TODO: refactor this method to stop flipping isComposingWord around all the time, and
+        // make it shorter (possibly cut into several pieces). Also factor handleNonSpecialCharacter
+        // which has the same name as other handle* methods but is not the same.
+        boolean isComposingWord = mWordComposer.isComposingWord();
+
+        // TODO: remove isWordConnector() and use isUsuallyFollowedBySpace() instead.
+        // See onStartBatchInput() to see how to do it.
+        if (SpaceState.PHANTOM == inputTransaction.mSpaceState
+                && !settingsValues.isWordConnector(codePoint)) {
+            if (isComposingWord) {
+                // Sanity check
+                throw new RuntimeException("Should not be composing here");
+            }
+            promotePhantomSpace(settingsValues);
+        }
+
+        if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
+            // If we are in the middle of a recorrection, we need to commit the recorrection
+            // first so that we can insert the character at the current cursor position.
+            resetEntireInputState(mConnection.getExpectedSelectionStart(),
+                    mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
+            isComposingWord = false;
+        }
+        // We want to find out whether to start composing a new word with this character. If so,
+        // we need to reset the composing state and switch isComposingWord. The order of the
+        // tests is important for good performance.
+        // We only start composing if we're not already composing.
+        if (!isComposingWord
+        // We only start composing if this is a word code point. Essentially that means it's a
+        // a letter or a word connector.
+                && settingsValues.isWordCodePoint(codePoint)
+        // We never go into composing state if suggestions are not requested.
+                && settingsValues.isSuggestionsRequested() &&
+        // In languages with spaces, we only start composing a word when we are not already
+        // touching a word. In languages without spaces, the above conditions are sufficient.
+                (!mConnection.isCursorTouchingWord(settingsValues.mSpacingAndPunctuations)
+                        || !settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces)) {
+            // Reset entirely the composing state anyway, then start composing a new word unless
+            // the character is a word connector. The idea here is, word connectors are not
+            // separators and they should be treated as normal characters, except in the first
+            // position where they should not start composing a word.
+            isComposingWord = !settingsValues.mSpacingAndPunctuations.isWordConnector(codePoint);
+            // Here we don't need to reset the last composed word. It will be reset
+            // when we commit this one, if we ever do; if on the other hand we backspace
+            // it entirely and resume suggestions on the previous word, we'd like to still
+            // have touch coordinates for it.
+            resetComposingState(false /* alsoResetLastComposedWord */);
+        }
+        if (isComposingWord) {
+            mWordComposer.processEvent(inputTransaction.mEvent);
+            // If it's the first letter, make note of auto-caps state
+            if (mWordComposer.isSingleLetter()) {
+                mWordComposer.setCapitalizedModeAtStartComposingTime(inputTransaction.mShiftState);
+            }
+            mConnection.setComposingText(getTextWithUnderline(
+                    mWordComposer.getTypedWord()), 1);
+        } else {
+            final boolean swapWeakSpace = tryStripSpaceAndReturnWhetherShouldSwapInstead(
+                    inputTransaction, inputTransaction.mEvent.isSuggestionStripPress());
+
+            if (swapWeakSpace && trySwapSwapperAndSpace(inputTransaction)) {
+                mSpaceState = SpaceState.WEAK;
+            } else {
+                sendKeyCodePoint(settingsValues, codePoint);
+            }
+            // In case the "add to dictionary" hint was still displayed.
+            mSuggestionStripViewAccessor.dismissAddToDictionaryHint();
+        }
+        inputTransaction.setRequiresUpdateSuggestions();
+    }
+
+    /**
+     * Handle input of a separator code point.
+     * @param inputTransaction The transaction in progress.
+     * @param isFromSuggestionStrip whether this code point comes from the suggestion strip.
+     * @return whether this caused an auto-correction to happen.
+     */
+    private boolean handleSeparator(final InputTransaction inputTransaction,
+            final boolean isFromSuggestionStrip,
+            // TODO: remove this argument
+            final LatinIME.UIHandler handler) {
+        final int codePoint = inputTransaction.mEvent.mCodePoint;
+        final SettingsValues settingsValues = inputTransaction.mSettingsValues;
+        boolean didAutoCorrect = false;
+        final boolean wasComposingWord = mWordComposer.isComposingWord();
+        // We avoid sending spaces in languages without spaces if we were composing.
+        final boolean shouldAvoidSendingCode = Constants.CODE_SPACE == codePoint
+                && !settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces
+                && wasComposingWord;
+        if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
+            // If we are in the middle of a recorrection, we need to commit the recorrection
+            // first so that we can insert the separator at the current cursor position.
+            resetEntireInputState(mConnection.getExpectedSelectionStart(),
+                    mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
+        }
+        // isComposingWord() may have changed since we stored wasComposing
+        if (mWordComposer.isComposingWord()) {
+            if (settingsValues.mAutoCorrectionEnabled) {
+                final String separator = shouldAvoidSendingCode ? LastComposedWord.NOT_A_SEPARATOR
+                        : StringUtils.newSingleCodePointString(codePoint);
+                commitCurrentAutoCorrection(settingsValues, separator, handler);
+                didAutoCorrect = true;
+            } else {
+                commitTyped(settingsValues,
+                        StringUtils.newSingleCodePointString(codePoint));
+            }
+        }
+
+        final boolean swapWeakSpace = tryStripSpaceAndReturnWhetherShouldSwapInstead(
+                inputTransaction, isFromSuggestionStrip);
+
+        final boolean isInsideDoubleQuoteOrAfterDigit = Constants.CODE_DOUBLE_QUOTE == codePoint
+                && mConnection.isInsideDoubleQuoteOrAfterDigit();
+
+        final boolean needsPrecedingSpace;
+        if (SpaceState.PHANTOM != inputTransaction.mSpaceState) {
+            needsPrecedingSpace = false;
+        } else if (Constants.CODE_DOUBLE_QUOTE == codePoint) {
+            // Double quotes behave like they are usually preceded by space iff we are
+            // not inside a double quote or after a digit.
+            needsPrecedingSpace = !isInsideDoubleQuoteOrAfterDigit;
+        } else if (settingsValues.mSpacingAndPunctuations.isClusteringSymbol(codePoint)
+                && settingsValues.mSpacingAndPunctuations.isClusteringSymbol(
+                        mConnection.getCodePointBeforeCursor())) {
+            needsPrecedingSpace = false;
+        } else {
+            needsPrecedingSpace = settingsValues.isUsuallyPrecededBySpace(codePoint);
+        }
+
+        if (needsPrecedingSpace) {
+            promotePhantomSpace(settingsValues);
+        }
+
+        if (tryPerformDoubleSpacePeriod(inputTransaction)) {
+            mSpaceState = SpaceState.DOUBLE;
+            inputTransaction.setRequiresUpdateSuggestions();
+        } else if (swapWeakSpace && trySwapSwapperAndSpace(inputTransaction)) {
+            mSpaceState = SpaceState.SWAP_PUNCTUATION;
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+        } else if (Constants.CODE_SPACE == codePoint) {
+            if (!mSuggestedWords.isPunctuationSuggestions()) {
+                mSpaceState = SpaceState.WEAK;
+            }
+
+            startDoubleSpacePeriodCountdown(inputTransaction);
+            if (wasComposingWord || mSuggestedWords.isEmpty()) {
+                inputTransaction.setRequiresUpdateSuggestions();
+            }
+
+            if (!shouldAvoidSendingCode) {
+                sendKeyCodePoint(settingsValues, codePoint);
+            }
+        } else {
+            if ((SpaceState.PHANTOM == inputTransaction.mSpaceState
+                    && settingsValues.isUsuallyFollowedBySpace(codePoint))
+                    || (Constants.CODE_DOUBLE_QUOTE == codePoint
+                            && isInsideDoubleQuoteOrAfterDigit)) {
+                // If we are in phantom space state, and the user presses a separator, we want to
+                // stay in phantom space state so that the next keypress has a chance to add the
+                // space. For example, if I type "Good dat", pick "day" from the suggestion strip
+                // then insert a comma and go on to typing the next word, I want the space to be
+                // inserted automatically before the next word, the same way it is when I don't
+                // input the comma. A double quote behaves like it's usually followed by space if
+                // we're inside a double quote.
+                // The case is a little different if the separator is a space stripper. Such a
+                // separator does not normally need a space on the right (that's the difference
+                // between swappers and strippers), so we should not stay in phantom space state if
+                // the separator is a stripper. Hence the additional test above.
+                mSpaceState = SpaceState.PHANTOM;
+            }
+
+            sendKeyCodePoint(settingsValues, codePoint);
+
+            // Set punctuation right away. onUpdateSelection will fire but tests whether it is
+            // already displayed or not, so it's okay.
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+        }
+
+        inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+        return didAutoCorrect;
+    }
+
+    /**
+     * Handle a press on the backspace key.
+     * @param inputTransaction The transaction in progress.
+     */
+    private void handleBackspace(final InputTransaction inputTransaction,
+            // TODO: remove this argument, put it into settingsValues
+            final int currentKeyboardScriptId) {
+        mSpaceState = SpaceState.NONE;
+        mDeleteCount++;
+
+        // In many cases after backspace, we need to update the shift state. Normally we need
+        // to do this right away to avoid the shift state being out of date in case the user types
+        // backspace then some other character very fast. However, in the case of backspace key
+        // repeat, this can lead to flashiness when the cursor flies over positions where the
+        // shift state should be updated, so if this is a key repeat, we update after a small delay.
+        // Then again, even in the case of a key repeat, if the cursor is at start of text, it
+        // can't go any further back, so we can update right away even if it's a key repeat.
+        final int shiftUpdateKind =
+                inputTransaction.mEvent.isKeyRepeat() && mConnection.getExpectedSelectionStart() > 0
+                ? InputTransaction.SHIFT_UPDATE_LATER : InputTransaction.SHIFT_UPDATE_NOW;
+        inputTransaction.requireShiftUpdate(shiftUpdateKind);
+
+        if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
+            // If we are in the middle of a recorrection, we need to commit the recorrection
+            // first so that we can remove the character at the current cursor position.
+            resetEntireInputState(mConnection.getExpectedSelectionStart(),
+                    mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
+            // When we exit this if-clause, mWordComposer.isComposingWord() will return false.
+        }
+        if (mWordComposer.isComposingWord()) {
+            if (mWordComposer.isBatchMode()) {
+                final String rejectedSuggestion = mWordComposer.getTypedWord();
+                mWordComposer.reset();
+                mWordComposer.setRejectedBatchModeSuggestion(rejectedSuggestion);
+                if (!TextUtils.isEmpty(rejectedSuggestion)) {
+                    mDictionaryFacilitator.removeWordFromPersonalizedDicts(rejectedSuggestion);
+                }
+            } else {
+                mWordComposer.processEvent(inputTransaction.mEvent);
+            }
+            if (mWordComposer.isComposingWord()) {
+                mConnection.setComposingText(getTextWithUnderline(mWordComposer.getTypedWord()), 1);
+            } else {
+                mConnection.commitText("", 1);
+            }
+            inputTransaction.setRequiresUpdateSuggestions();
+        } else {
+            if (mLastComposedWord.canRevertCommit()) {
+                revertCommit(inputTransaction);
+                return;
+            }
+            if (mEnteredText != null && mConnection.sameAsTextBeforeCursor(mEnteredText)) {
+                // Cancel multi-character input: remove the text we just entered.
+                // This is triggered on backspace after a key that inputs multiple characters,
+                // like the smiley key or the .com key.
+                mConnection.deleteSurroundingText(mEnteredText.length(), 0);
+                mEnteredText = null;
+                // If we have mEnteredText, then we know that mHasUncommittedTypedChars == false.
+                // In addition we know that spaceState is false, and that we should not be
+                // reverting any autocorrect at this point. So we can safely return.
+                return;
+            }
+            if (SpaceState.DOUBLE == inputTransaction.mSpaceState) {
+                cancelDoubleSpacePeriodCountdown();
+                if (mConnection.revertDoubleSpacePeriod()) {
+                    // No need to reset mSpaceState, it has already be done (that's why we
+                    // receive it as a parameter)
+                    inputTransaction.setRequiresUpdateSuggestions();
+                    mWordComposer.setCapitalizedModeAtStartComposingTime(
+                            WordComposer.CAPS_MODE_OFF);
+                    return;
+                }
+            } else if (SpaceState.SWAP_PUNCTUATION == inputTransaction.mSpaceState) {
+                if (mConnection.revertSwapPunctuation()) {
+                    // Likewise
+                    return;
+                }
+            }
+
+            // No cancelling of commit/double space/swap: we have a regular backspace.
+            // We should backspace one char and restart suggestion if at the end of a word.
+            if (mConnection.hasSelection()) {
+                // If there is a selection, remove it.
+                final int numCharsDeleted = mConnection.getExpectedSelectionEnd()
+                        - mConnection.getExpectedSelectionStart();
+                mConnection.setSelection(mConnection.getExpectedSelectionEnd(),
+                        mConnection.getExpectedSelectionEnd());
+                mConnection.deleteSurroundingText(numCharsDeleted, 0);
+            } else {
+                // There is no selection, just delete one character.
+                if (Constants.NOT_A_CURSOR_POSITION == mConnection.getExpectedSelectionEnd()) {
+                    // This should never happen.
+                    Log.e(TAG, "Backspace when we don't know the selection position");
+                }
+                if (inputTransaction.mSettingsValues.isBeforeJellyBean() ||
+                        inputTransaction.mSettingsValues.mInputAttributes.isTypeNull()) {
+                    // There are two possible reasons to send a key event: either the field has
+                    // type TYPE_NULL, in which case the keyboard should send events, or we are
+                    // running in backward compatibility mode. Before Jelly bean, the keyboard
+                    // would simulate a hardware keyboard event on pressing enter or delete. This
+                    // is bad for many reasons (there are race conditions with commits) but some
+                    // applications are relying on this behavior so we continue to support it for
+                    // older apps, so we retain this behavior if the app has target SDK < JellyBean.
+                    sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
+                    if (mDeleteCount > Constants.DELETE_ACCELERATE_AT) {
+                        sendDownUpKeyEvent(KeyEvent.KEYCODE_DEL);
+                    }
+                } else {
+                    final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
+                    if (codePointBeforeCursor == Constants.NOT_A_CODE) {
+                        // HACK for backward compatibility with broken apps that haven't realized
+                        // yet that hardware keyboards are not the only way of inputting text.
+                        // Nothing to delete before the cursor. We should not do anything, but many
+                        // broken apps expect something to happen in this case so that they can
+                        // catch it and have their broken interface react. If you need the keyboard
+                        // to do this, you're doing it wrong -- please fix your app.
+                        mConnection.deleteSurroundingText(1, 0);
+                        return;
+                    }
+                    final int lengthToDelete =
+                            Character.isSupplementaryCodePoint(codePointBeforeCursor) ? 2 : 1;
+                    mConnection.deleteSurroundingText(lengthToDelete, 0);
+                    if (mDeleteCount > Constants.DELETE_ACCELERATE_AT) {
+                        final int codePointBeforeCursorToDeleteAgain =
+                                mConnection.getCodePointBeforeCursor();
+                        if (codePointBeforeCursorToDeleteAgain != Constants.NOT_A_CODE) {
+                            final int lengthToDeleteAgain = Character.isSupplementaryCodePoint(
+                                    codePointBeforeCursorToDeleteAgain) ? 2 : 1;
+                            mConnection.deleteSurroundingText(lengthToDeleteAgain, 0);
+                        }
+                    }
+                }
+            }
+            if (inputTransaction.mSettingsValues
+                    .isCurrentOrientationAllowingSuggestionsPerUserSettings()
+                    && inputTransaction.mSettingsValues.mSpacingAndPunctuations
+                            .mCurrentLanguageHasSpaces
+                    && !mConnection.isCursorFollowedByWordCharacter(
+                            inputTransaction.mSettingsValues.mSpacingAndPunctuations)) {
+                restartSuggestionsOnWordTouchedByCursor(inputTransaction.mSettingsValues,
+                        true /* shouldIncludeResumedWordInSuggestions */, currentKeyboardScriptId);
+            }
+        }
+    }
+
+    /**
+     * Handle a press on the language switch key (the "globe key")
+     */
+    private void handleLanguageSwitchKey() {
+        mLatinIME.switchToNextSubtype();
+    }
+
+    /**
+     * Swap a space with a space-swapping punctuation sign.
+     *
+     * This method will check that there are two characters before the cursor and that the first
+     * one is a space before it does the actual swapping.
+     * @param inputTransaction The transaction in progress.
+     * @return true if the swap has been performed, false if it was prevented by preliminary checks.
+     */
+    private boolean trySwapSwapperAndSpace(final InputTransaction inputTransaction) {
+        final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
+        if (Constants.CODE_SPACE != codePointBeforeCursor) {
+            return false;
+        }
+        mConnection.deleteSurroundingText(1, 0);
+        final String text = inputTransaction.mEvent.getTextToCommit() + " ";
+        mConnection.commitText(text, 1);
+        inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+        return true;
+    }
+
+    /*
+     * Strip a trailing space if necessary and returns whether it's a swap weak space situation.
+     * @param inputTransaction The transaction in progress.
+     * @param isFromSuggestionStrip Whether this code point is coming from the suggestion strip.
+     * @return whether we should swap the space instead of removing it.
+     */
+    private boolean tryStripSpaceAndReturnWhetherShouldSwapInstead(
+            final InputTransaction inputTransaction, final boolean isFromSuggestionStrip) {
+        final int codePoint = inputTransaction.mEvent.mCodePoint;
+        if (Constants.CODE_ENTER == codePoint &&
+                SpaceState.SWAP_PUNCTUATION == inputTransaction.mSpaceState) {
+            mConnection.removeTrailingSpace();
+            return false;
+        }
+        if ((SpaceState.WEAK == inputTransaction.mSpaceState
+                || SpaceState.SWAP_PUNCTUATION == inputTransaction.mSpaceState)
+                && isFromSuggestionStrip) {
+            if (inputTransaction.mSettingsValues.isUsuallyPrecededBySpace(codePoint)) {
+                return false;
+            }
+            if (inputTransaction.mSettingsValues.isUsuallyFollowedBySpace(codePoint)) {
+                return true;
+            }
+            mConnection.removeTrailingSpace();
+        }
+        return false;
+    }
+
+    public void startDoubleSpacePeriodCountdown(final InputTransaction inputTransaction) {
+        mDoubleSpacePeriodCountdownStart = inputTransaction.mTimestamp;
+    }
+
+    public void cancelDoubleSpacePeriodCountdown() {
+        mDoubleSpacePeriodCountdownStart = 0;
+    }
+
+    public boolean isDoubleSpacePeriodCountdownActive(final InputTransaction inputTransaction) {
+        return inputTransaction.mTimestamp - mDoubleSpacePeriodCountdownStart
+                < inputTransaction.mSettingsValues.mDoubleSpacePeriodTimeout;
+    }
+
+    /**
+     * Apply the double-space-to-period transformation if applicable.
+     *
+     * The double-space-to-period transformation means that we replace two spaces with a
+     * period-space sequence of characters. This typically happens when the user presses space
+     * twice in a row quickly.
+     * This method will check that the double-space-to-period is active in settings, that the
+     * two spaces have been input close enough together, that the typed character is a space
+     * and that the previous character allows for the transformation to take place. If all of
+     * these conditions are fulfilled, this method applies the transformation and returns true.
+     * Otherwise, it does nothing and returns false.
+     *
+     * @param inputTransaction The transaction in progress.
+     * @return true if we applied the double-space-to-period transformation, false otherwise.
+     */
+    private boolean tryPerformDoubleSpacePeriod(final InputTransaction inputTransaction) {
+        // Check the setting, the typed character and the countdown. If any of the conditions is
+        // not fulfilled, return false.
+        if (!inputTransaction.mSettingsValues.mUseDoubleSpacePeriod
+                || Constants.CODE_SPACE != inputTransaction.mEvent.mCodePoint
+                || !isDoubleSpacePeriodCountdownActive(inputTransaction)) {
+            return false;
+        }
+        // We only do this when we see one space and an accepted code point before the cursor.
+        // The code point may be a surrogate pair but the space may not, so we need 3 chars.
+        final CharSequence lastTwo = mConnection.getTextBeforeCursor(3, 0);
+        if (null == lastTwo) return false;
+        final int length = lastTwo.length();
+        if (length < 2) return false;
+        if (lastTwo.charAt(length - 1) != Constants.CODE_SPACE) return false;
+        // We know there is a space in pos -1, and we have at least two chars. If we have only two
+        // chars, isSurrogatePairs can't return true as charAt(1) is a space, so this is fine.
+        final int firstCodePoint =
+                Character.isSurrogatePair(lastTwo.charAt(0), lastTwo.charAt(1)) ?
+                        Character.codePointAt(lastTwo, length - 3) : lastTwo.charAt(length - 2);
+        if (canBeFollowedByDoubleSpacePeriod(firstCodePoint)) {
+            cancelDoubleSpacePeriodCountdown();
+            mConnection.deleteSurroundingText(1, 0);
+            final String textToInsert = inputTransaction.mSettingsValues.mSpacingAndPunctuations
+                    .mSentenceSeparatorAndSpace;
+            mConnection.commitText(textToInsert, 1);
+            inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
+            inputTransaction.setRequiresUpdateSuggestions();
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns whether this code point can be followed by the double-space-to-period transformation.
+     *
+     * See #maybeDoubleSpaceToPeriod for details.
+     * Generally, most word characters can be followed by the double-space-to-period transformation,
+     * while most punctuation can't. Some punctuation however does allow for this to take place
+     * after them, like the closing parenthesis for example.
+     *
+     * @param codePoint the code point after which we may want to apply the transformation
+     * @return whether it's fine to apply the transformation after this code point.
+     */
+    private static boolean canBeFollowedByDoubleSpacePeriod(final int codePoint) {
+        // TODO: This should probably be a blacklist rather than a whitelist.
+        // TODO: This should probably be language-dependant...
+        return Character.isLetterOrDigit(codePoint)
+                || codePoint == Constants.CODE_SINGLE_QUOTE
+                || codePoint == Constants.CODE_DOUBLE_QUOTE
+                || codePoint == Constants.CODE_CLOSING_PARENTHESIS
+                || codePoint == Constants.CODE_CLOSING_SQUARE_BRACKET
+                || codePoint == Constants.CODE_CLOSING_CURLY_BRACKET
+                || codePoint == Constants.CODE_CLOSING_ANGLE_BRACKET
+                || codePoint == Constants.CODE_PLUS
+                || codePoint == Constants.CODE_PERCENT
+                || Character.getType(codePoint) == Character.OTHER_SYMBOL;
+    }
+
+    /**
+     * Performs a recapitalization event.
+     * @param settingsValues The current settings values.
+     */
+    private void performRecapitalization(final SettingsValues settingsValues) {
+        if (!mConnection.hasSelection() || !mRecapitalizeStatus.mIsEnabled()) {
+            return; // No selection or recapitalize is disabled for now
+        }
+        final int selectionStart = mConnection.getExpectedSelectionStart();
+        final int selectionEnd = mConnection.getExpectedSelectionEnd();
+        final int numCharsSelected = selectionEnd - selectionStart;
+        if (numCharsSelected > Constants.MAX_CHARACTERS_FOR_RECAPITALIZATION) {
+            // We bail out if we have too many characters for performance reasons. We don't want
+            // to suck possibly multiple-megabyte data.
+            return;
+        }
+        // If we have a recapitalize in progress, use it; otherwise, start a new one.
+        if (!mRecapitalizeStatus.isStarted()
+                || !mRecapitalizeStatus.isSetAt(selectionStart, selectionEnd)) {
+            final CharSequence selectedText =
+                    mConnection.getSelectedText(0 /* flags, 0 for no styles */);
+            if (TextUtils.isEmpty(selectedText)) return; // Race condition with the input connection
+            mRecapitalizeStatus.start(selectionStart, selectionEnd, selectedText.toString(),
+                    settingsValues.mLocale,
+                    settingsValues.mSpacingAndPunctuations.mSortedWordSeparators);
+            // We trim leading and trailing whitespace.
+            mRecapitalizeStatus.trim();
+        }
+        mConnection.finishComposingText();
+        mRecapitalizeStatus.rotate();
+        mConnection.setSelection(selectionEnd, selectionEnd);
+        mConnection.deleteSurroundingText(numCharsSelected, 0);
+        mConnection.commitText(mRecapitalizeStatus.getRecapitalizedString(), 0);
+        mConnection.setSelection(mRecapitalizeStatus.getNewCursorStart(),
+                mRecapitalizeStatus.getNewCursorEnd());
+    }
+
+    private void performAdditionToUserHistoryDictionary(final SettingsValues settingsValues,
+            final String suggestion, final PrevWordsInfo prevWordsInfo) {
+        // If correction is not enabled, we don't add words to the user history dictionary.
+        // That's to avoid unintended additions in some sensitive fields, or fields that
+        // expect to receive non-words.
+        if (!settingsValues.mAutoCorrectionEnabled) return;
+
+        if (TextUtils.isEmpty(suggestion)) return;
+        final boolean wasAutoCapitalized =
+                mWordComposer.wasAutoCapitalized() && !mWordComposer.isMostlyCaps();
+        final int timeStampInSeconds = (int)TimeUnit.MILLISECONDS.toSeconds(
+                System.currentTimeMillis());
+        mDictionaryFacilitator.addToUserHistory(suggestion, wasAutoCapitalized,
+                prevWordsInfo, timeStampInSeconds, settingsValues.mBlockPotentiallyOffensive);
+    }
+
+    public void performUpdateSuggestionStripSync(final SettingsValues settingsValues) {
+        // Check if we have a suggestion engine attached.
+        if (!settingsValues.isSuggestionsRequested()) {
+            if (mWordComposer.isComposingWord()) {
+                Log.w(TAG, "Called updateSuggestionsOrPredictions but suggestions were not "
+                        + "requested!");
+            }
+            // Clear the suggestions strip.
+            mSuggestionStripViewAccessor.showSuggestionStrip(SuggestedWords.EMPTY);
+            return;
+        }
+
+        if (!mWordComposer.isComposingWord() && !settingsValues.mBigramPredictionEnabled) {
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+            return;
+        }
+
+        final AsyncResultHolder<SuggestedWords> holder = new AsyncResultHolder<>();
+        mInputLogicHandler.getSuggestedWords(Suggest.SESSION_TYPING,
+                SuggestedWords.NOT_A_SEQUENCE_NUMBER, new OnGetSuggestedWordsCallback() {
+                    @Override
+                    public void onGetSuggestedWords(final SuggestedWords suggestedWords) {
+                        final String typedWord = mWordComposer.getTypedWord();
+                        // Show new suggestions if we have at least one. Otherwise keep the old
+                        // suggestions with the new typed word. Exception: if the length of the
+                        // typed word is <= 1 (after a deletion typically) we clear old suggestions.
+                        if (suggestedWords.size() > 1 || typedWord.length() <= 1) {
+                            holder.set(suggestedWords);
+                        } else {
+                            holder.set(retrieveOlderSuggestions(typedWord, mSuggestedWords));
+                        }
+                    }
+                }
+        );
+
+        // This line may cause the current thread to wait.
+        final SuggestedWords suggestedWords = holder.get(null,
+                Constants.GET_SUGGESTED_WORDS_TIMEOUT);
+        if (suggestedWords != null) {
+            mSuggestionStripViewAccessor.showSuggestionStrip(suggestedWords);
+        }
+    }
+
+    /**
+     * Check if the cursor is touching a word. If so, restart suggestions on this word, else
+     * do nothing.
+     *
+     * @param settingsValues the current values of the settings.
+     * @param shouldIncludeResumedWordInSuggestions whether to include the word on which we resume
+     *   suggestions in the suggestion list.
+     */
+    // TODO: make this private.
+    public void restartSuggestionsOnWordTouchedByCursor(final SettingsValues settingsValues,
+            final boolean shouldIncludeResumedWordInSuggestions,
+            // TODO: remove this argument, put it into settingsValues
+            final int currentKeyboardScriptId) {
+        // HACK: We may want to special-case some apps that exhibit bad behavior in case of
+        // recorrection. This is a temporary, stopgap measure that will be removed later.
+        // TODO: remove this.
+        if (settingsValues.isBrokenByRecorrection()
+        // Recorrection is not supported in languages without spaces because we don't know
+        // how to segment them yet.
+                || !settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces
+        // If no suggestions are requested, don't try restarting suggestions.
+                || !settingsValues.isSuggestionsRequested()
+        // If we are currently in a batch input, we must not resume suggestions, or the result
+        // of the batch input will replace the new composition. This may happen in the corner case
+        // that the app moves the cursor on its own accord during a batch input.
+                || mInputLogicHandler.isInBatchInput()
+        // If the cursor is not touching a word, or if there is a selection, return right away.
+                || mConnection.hasSelection()
+        // If we don't know the cursor location, return.
+                || mConnection.getExpectedSelectionStart() < 0) {
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+            return;
+        }
+        final int expectedCursorPosition = mConnection.getExpectedSelectionStart();
+        if (!mConnection.isCursorTouchingWord(settingsValues.mSpacingAndPunctuations)) {
+            // Show predictions.
+            mWordComposer.setCapitalizedModeAtStartComposingTime(WordComposer.CAPS_MODE_OFF);
+            mLatinIME.mHandler.postUpdateSuggestionStrip();
+            return;
+        }
+        final TextRange range = mConnection.getWordRangeAtCursor(
+                settingsValues.mSpacingAndPunctuations.mSortedWordSeparators,
+                currentKeyboardScriptId);
+        if (null == range) return; // Happens if we don't have an input connection at all
+        if (range.length() <= 0) {
+            // Race condition, or touching a word in a non-supported script.
+            mLatinIME.setNeutralSuggestionStrip();
+            return;
+        }
+        // If for some strange reason (editor bug or so) we measure the text before the cursor as
+        // longer than what the entire text is supposed to be, the safe thing to do is bail out.
+        if (range.mHasUrlSpans) return; // If there are links, we don't resume suggestions. Making
+        // edits to a linkified text through batch commands would ruin the URL spans, and unless
+        // we take very complicated steps to preserve the whole link, we can't do things right so
+        // we just do not resume because it's safer.
+        final int numberOfCharsInWordBeforeCursor = range.getNumberOfCharsInWordBeforeCursor();
+        if (numberOfCharsInWordBeforeCursor > expectedCursorPosition) return;
+        final ArrayList<SuggestedWordInfo> suggestions = new ArrayList<>();
+        final String typedWord = range.mWord.toString();
+        if (shouldIncludeResumedWordInSuggestions) {
+            suggestions.add(new SuggestedWordInfo(typedWord,
+                    SuggestedWords.MAX_SUGGESTIONS + 1,
+                    SuggestedWordInfo.KIND_TYPED, Dictionary.DICTIONARY_USER_TYPED,
+                    SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
+                    SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
+        }
+        if (!isResumableWord(settingsValues, typedWord)) {
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+            return;
+        }
+        int i = 0;
+        for (final SuggestionSpan span : range.getSuggestionSpansAtWord()) {
+            for (final String s : span.getSuggestions()) {
+                ++i;
+                if (!TextUtils.equals(s, typedWord)) {
+                    suggestions.add(new SuggestedWordInfo(s,
+                            SuggestedWords.MAX_SUGGESTIONS - i,
+                            SuggestedWordInfo.KIND_RESUMED, Dictionary.DICTIONARY_RESUMED,
+                            SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
+                            SuggestedWordInfo.NOT_A_CONFIDENCE
+                                    /* autoCommitFirstWordConfidence */));
+                }
+            }
+        }
+        final int[] codePoints = StringUtils.toCodePointArray(typedWord);
+        // We want the previous word for suggestion. If we have chars in the word
+        // before the cursor, then we want the word before that, hence 2; otherwise,
+        // we want the word immediately before the cursor, hence 1.
+        final PrevWordsInfo prevWordsInfo = getPrevWordsInfoFromNthPreviousWordForSuggestion(
+                settingsValues.mSpacingAndPunctuations,
+                0 == numberOfCharsInWordBeforeCursor ? 1 : 2);
+        mWordComposer.setComposingWord(codePoints,
+                mLatinIME.getCoordinatesForCurrentKeyboard(codePoints));
+        mWordComposer.setCursorPositionWithinWord(
+                typedWord.codePointCount(0, numberOfCharsInWordBeforeCursor));
+        mConnection.setComposingRegion(expectedCursorPosition - numberOfCharsInWordBeforeCursor,
+                expectedCursorPosition + range.getNumberOfCharsInWordAfterCursor());
+        if (suggestions.size() <= (shouldIncludeResumedWordInSuggestions ? 1 : 0)) {
+            // If there weren't any suggestion spans on this word, suggestions#size() will be 1
+            // if shouldIncludeResumedWordInSuggestions is true, 0 otherwise. In this case, we
+            // have no useful suggestions, so we will try to compute some for it instead.
+            mInputLogicHandler.getSuggestedWords(Suggest.SESSION_TYPING,
+                    SuggestedWords.NOT_A_SEQUENCE_NUMBER, new OnGetSuggestedWordsCallback() {
+                        @Override
+                        public void onGetSuggestedWords(
+                                final SuggestedWords suggestedWordsIncludingTypedWord) {
+                            final SuggestedWords suggestedWords;
+                            if (suggestedWordsIncludingTypedWord.size() > 1
+                                    && !shouldIncludeResumedWordInSuggestions) {
+                                // We were able to compute new suggestions for this word.
+                                // Remove the typed word, since we don't want to display it in this
+                                // case. The #getSuggestedWordsExcludingTypedWord() method sets
+                                // willAutoCorrect to false.
+                                suggestedWords = suggestedWordsIncludingTypedWord
+                                        .getSuggestedWordsExcludingTypedWord();
+                            } else {
+                                // No saved suggestions, and we were unable to compute any good one
+                                // either. Rather than displaying an empty suggestion strip, we'll
+                                // display the original word alone in the middle.
+                                // Since there is only one word, willAutoCorrect is false.
+                                suggestedWords = suggestedWordsIncludingTypedWord;
+                            }
+                            mIsAutoCorrectionIndicatorOn = false;
+                            mLatinIME.mHandler.showSuggestionStrip(suggestedWords);
+                        }});
+        } else {
+            // We found suggestion spans in the word. We'll create the SuggestedWords out of
+            // them, and make willAutoCorrect false. We make typedWordValid false, because the
+            // color of the word in the suggestion strip changes according to this parameter,
+            // and false gives the correct color.
+            final SuggestedWords suggestedWords = new SuggestedWords(suggestions,
+                    null /* rawSuggestions */, typedWord,
+                    false /* typedWordValid */, false /* willAutoCorrect */,
+                    false /* isObsoleteSuggestions */, false /* isPrediction */,
+                    SuggestedWords.NOT_A_SEQUENCE_NUMBER);
+            mIsAutoCorrectionIndicatorOn = false;
+            mLatinIME.mHandler.showSuggestionStrip(suggestedWords);
+        }
+    }
+
+    /**
+     * Reverts a previous commit with auto-correction.
+     *
+     * This is triggered upon pressing backspace just after a commit with auto-correction.
+     *
+     * @param inputTransaction The transaction in progress.
+     */
+    private void revertCommit(final InputTransaction inputTransaction) {
+        final CharSequence originallyTypedWord = mLastComposedWord.mTypedWord;
+        final CharSequence committedWord = mLastComposedWord.mCommittedWord;
+        final String committedWordString = committedWord.toString();
+        final int cancelLength = committedWord.length();
+        // We want java chars, not codepoints for the following.
+        final int separatorLength = mLastComposedWord.mSeparatorString.length();
+        // TODO: should we check our saved separator against the actual contents of the text view?
+        final int deleteLength = cancelLength + separatorLength;
+        if (DebugFlags.DEBUG_ENABLED) {
+            if (mWordComposer.isComposingWord()) {
+                throw new RuntimeException("revertCommit, but we are composing a word");
+            }
+            final CharSequence wordBeforeCursor =
+                    mConnection.getTextBeforeCursor(deleteLength, 0).subSequence(0, cancelLength);
+            if (!TextUtils.equals(committedWord, wordBeforeCursor)) {
+                throw new RuntimeException("revertCommit check failed: we thought we were "
+                        + "reverting \"" + committedWord
+                        + "\", but before the cursor we found \"" + wordBeforeCursor + "\"");
+            }
+        }
+        mConnection.deleteSurroundingText(deleteLength, 0);
+        if (!TextUtils.isEmpty(committedWord)) {
+            mDictionaryFacilitator.removeWordFromPersonalizedDicts(committedWordString);
+        }
+        final String stringToCommit = originallyTypedWord + mLastComposedWord.mSeparatorString;
+        final SpannableString textToCommit = new SpannableString(stringToCommit);
+        if (committedWord instanceof SpannableString) {
+            final SpannableString committedWordWithSuggestionSpans = (SpannableString)committedWord;
+            final Object[] spans = committedWordWithSuggestionSpans.getSpans(0,
+                    committedWord.length(), Object.class);
+            final int lastCharIndex = textToCommit.length() - 1;
+            // We will collect all suggestions in the following array.
+            final ArrayList<String> suggestions = new ArrayList<>();
+            // First, add the committed word to the list of suggestions.
+            suggestions.add(committedWordString);
+            for (final Object span : spans) {
+                // If this is a suggestion span, we check that the locale is the right one, and
+                // that the word is not the committed word. That should mostly be the case.
+                // Given this, we add it to the list of suggestions, otherwise we discard it.
+                if (span instanceof SuggestionSpan) {
+                    final SuggestionSpan suggestionSpan = (SuggestionSpan)span;
+                    if (!suggestionSpan.getLocale().equals(
+                            inputTransaction.mSettingsValues.mLocale.toString())) {
+                        continue;
+                    }
+                    for (final String suggestion : suggestionSpan.getSuggestions()) {
+                        if (!suggestion.equals(committedWordString)) {
+                            suggestions.add(suggestion);
+                        }
+                    }
+                } else {
+                    // If this is not a suggestion span, we just add it as is.
+                    textToCommit.setSpan(span, 0 /* start */, lastCharIndex /* end */,
+                            committedWordWithSuggestionSpans.getSpanFlags(span));
+                }
+            }
+            // Add the suggestion list to the list of suggestions.
+            textToCommit.setSpan(new SuggestionSpan(inputTransaction.mSettingsValues.mLocale,
+                    suggestions.toArray(new String[suggestions.size()]), 0 /* flags */),
+                    0 /* start */, lastCharIndex /* end */, 0 /* flags */);
+        }
+        if (inputTransaction.mSettingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
+            // For languages with spaces, we revert to the typed string, but the cursor is still
+            // after the separator so we don't resume suggestions. If the user wants to correct
+            // the word, they have to press backspace again.
+            mConnection.commitText(textToCommit, 1);
+        } else {
+            // For languages without spaces, we revert the typed string but the cursor is flush
+            // with the typed word, so we need to resume suggestions right away.
+            final int[] codePoints = StringUtils.toCodePointArray(stringToCommit);
+            mWordComposer.setComposingWord(codePoints,
+                    mLatinIME.getCoordinatesForCurrentKeyboard(codePoints));
+            mConnection.setComposingText(textToCommit, 1);
+        }
+        // Don't restart suggestion yet. We'll restart if the user deletes the separator.
+        mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
+        // We have a separator between the word and the cursor: we should show predictions.
+        inputTransaction.setRequiresUpdateSuggestions();
+    }
+
+    /**
+     * Factor in auto-caps and manual caps and compute the current caps mode.
+     * @param settingsValues the current settings values.
+     * @param keyboardShiftMode the current shift mode of the keyboard. See
+     *   KeyboardSwitcher#getKeyboardShiftMode() for possible values.
+     * @return the actual caps mode the keyboard is in right now.
+     */
+    private int getActualCapsMode(final SettingsValues settingsValues,
+            final int keyboardShiftMode) {
+        if (keyboardShiftMode != WordComposer.CAPS_MODE_AUTO_SHIFTED) {
+            return keyboardShiftMode;
+        }
+        final int auto = getCurrentAutoCapsState(settingsValues);
+        if (0 != (auto & TextUtils.CAP_MODE_CHARACTERS)) {
+            return WordComposer.CAPS_MODE_AUTO_SHIFT_LOCKED;
+        }
+        if (0 != auto) {
+            return WordComposer.CAPS_MODE_AUTO_SHIFTED;
+        }
+        return WordComposer.CAPS_MODE_OFF;
+    }
+
+    /**
+     * Gets the current auto-caps state, factoring in the space state.
+     *
+     * This method tries its best to do this in the most efficient possible manner. It avoids
+     * getting text from the editor if possible at all.
+     * This is called from the KeyboardSwitcher (through a trampoline in LatinIME) because it
+     * needs to know auto caps state to display the right layout.
+     *
+     * @param settingsValues the relevant settings values
+     * @return a caps mode from TextUtils.CAP_MODE_* or Constants.TextUtils.CAP_MODE_OFF.
+     */
+    public int getCurrentAutoCapsState(final SettingsValues settingsValues) {
+        if (!settingsValues.mAutoCap) return Constants.TextUtils.CAP_MODE_OFF;
+
+        final EditorInfo ei = getCurrentInputEditorInfo();
+        if (ei == null) return Constants.TextUtils.CAP_MODE_OFF;
+        final int inputType = ei.inputType;
+        // Warning: this depends on mSpaceState, which may not be the most current value. If
+        // mSpaceState gets updated later, whoever called this may need to be told about it.
+        return mConnection.getCursorCapsMode(inputType, settingsValues.mSpacingAndPunctuations,
+                SpaceState.PHANTOM == mSpaceState);
+    }
+
+    public int getCurrentRecapitalizeState() {
+        if (!mRecapitalizeStatus.isStarted()
+                || !mRecapitalizeStatus.isSetAt(mConnection.getExpectedSelectionStart(),
+                        mConnection.getExpectedSelectionEnd())) {
+            // Not recapitalizing at the moment
+            return RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
+        }
+        return mRecapitalizeStatus.getCurrentMode();
+    }
+
+    /**
+     * @return the editor info for the current editor
+     */
+    private EditorInfo getCurrentInputEditorInfo() {
+        return mLatinIME.getCurrentInputEditorInfo();
+    }
+
+    /**
+     * Get information fo previous words from the nth previous word before the cursor as context
+     * for the suggestion process.
+     * @param spacingAndPunctuations the current spacing and punctuations settings.
+     * @param nthPreviousWord reverse index of the word to get (1-indexed)
+     * @return the information of previous words
+     */
+    // TODO: Make this private
+    public PrevWordsInfo getPrevWordsInfoFromNthPreviousWordForSuggestion(
+            final SpacingAndPunctuations spacingAndPunctuations, final int nthPreviousWord) {
+        if (spacingAndPunctuations.mCurrentLanguageHasSpaces) {
+            // If we are typing in a language with spaces we can just look up the previous
+            // word information from textview.
+            return mConnection.getPrevWordsInfoFromNthPreviousWord(
+                    spacingAndPunctuations, nthPreviousWord);
+        } else {
+            return LastComposedWord.NOT_A_COMPOSED_WORD == mLastComposedWord ?
+                    PrevWordsInfo.BEGINNING_OF_SENTENCE :
+                            new PrevWordsInfo(new PrevWordsInfo.WordInfo(
+                                    mLastComposedWord.mCommittedWord.toString()));
+        }
+    }
+
+    /**
+     * Tests the passed word for resumability.
+     *
+     * We can resume suggestions on words whose first code point is a word code point (with some
+     * nuances: check the code for details).
+     *
+     * @param settings the current values of the settings.
+     * @param word the word to evaluate.
+     * @return whether it's fine to resume suggestions on this word.
+     */
+    private static boolean isResumableWord(final SettingsValues settings, final String word) {
+        final int firstCodePoint = word.codePointAt(0);
+        return settings.isWordCodePoint(firstCodePoint)
+                && Constants.CODE_SINGLE_QUOTE != firstCodePoint
+                && Constants.CODE_DASH != firstCodePoint;
+    }
+
+    /**
+     * @param actionId the action to perform
+     */
+    private void performEditorAction(final int actionId) {
+        mConnection.performEditorAction(actionId);
+    }
+
+    /**
+     * Perform the processing specific to inputting TLDs.
+     *
+     * Some keys input a TLD (specifically, the ".com" key) and this warrants some specific
+     * processing. First, if this is a TLD, we ignore PHANTOM spaces -- this is done by type
+     * of character in onCodeInput, but since this gets inputted as a whole string we need to
+     * do it here specifically. Then, if the last character before the cursor is a period, then
+     * we cut the dot at the start of ".com". This is because humans tend to type "www.google."
+     * and then press the ".com" key and instinctively don't expect to get "www.google..com".
+     *
+     * @param text the raw text supplied to onTextInput
+     * @return the text to actually send to the editor
+     */
+    private String performSpecificTldProcessingOnTextInput(final String text) {
+        if (text.length() <= 1 || text.charAt(0) != Constants.CODE_PERIOD
+                || !Character.isLetter(text.charAt(1))) {
+            // Not a tld: do nothing.
+            return text;
+        }
+        // We have a TLD (or something that looks like this): make sure we don't add
+        // a space even if currently in phantom mode.
+        mSpaceState = SpaceState.NONE;
+        final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
+        // If no code point, #getCodePointBeforeCursor returns NOT_A_CODE_POINT.
+        if (Constants.CODE_PERIOD == codePointBeforeCursor) {
+            return text.substring(1);
+        } else {
+            return text;
+        }
+    }
+
+    /**
+     * Handle a press on the settings key.
+     */
+    private void onSettingsKeyPressed() {
+        mLatinIME.displaySettingsDialog();
+    }
+
+    /**
+     * Resets the whole input state to the starting state.
+     *
+     * This will clear the composing word, reset the last composed word, clear the suggestion
+     * strip and tell the input connection about it so that it can refresh its caches.
+     *
+     * @param newSelStart the new selection start, in java characters.
+     * @param newSelEnd the new selection end, in java characters.
+     * @param clearSuggestionStrip whether this method should clear the suggestion strip.
+     */
+    // TODO: how is this different from startInput ?!
+    private void resetEntireInputState(final int newSelStart, final int newSelEnd,
+            final boolean clearSuggestionStrip) {
+        final boolean shouldFinishComposition = mWordComposer.isComposingWord();
+        resetComposingState(true /* alsoResetLastComposedWord */);
+        if (clearSuggestionStrip) {
+            mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
+        }
+        mConnection.resetCachesUponCursorMoveAndReturnSuccess(newSelStart, newSelEnd,
+                shouldFinishComposition);
+    }
+
+    /**
+     * Resets only the composing state.
+     *
+     * Compare #resetEntireInputState, which also clears the suggestion strip and resets the
+     * input connection caches. This only deals with the composing state.
+     *
+     * @param alsoResetLastComposedWord whether to also reset the last composed word.
+     */
+    private void resetComposingState(final boolean alsoResetLastComposedWord) {
+        mWordComposer.reset();
+        if (alsoResetLastComposedWord) {
+            mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
+        }
+    }
+
+    /**
+     * Make a {@link com.android.inputmethod.latin.SuggestedWords} object containing a typed word
+     * and obsolete suggestions.
+     * See {@link com.android.inputmethod.latin.SuggestedWords#getTypedWordAndPreviousSuggestions(
+     *      String, com.android.inputmethod.latin.SuggestedWords)}.
+     * @param typedWord The typed word as a string.
+     * @param previousSuggestedWords The previously suggested words.
+     * @return Obsolete suggestions with the newly typed word.
+     */
+    private SuggestedWords retrieveOlderSuggestions(final String typedWord,
+            final SuggestedWords previousSuggestedWords) {
+        final SuggestedWords oldSuggestedWords =
+                previousSuggestedWords.isPunctuationSuggestions() ? SuggestedWords.EMPTY
+                        : previousSuggestedWords;
+        final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
+                SuggestedWords.getTypedWordAndPreviousSuggestions(typedWord, oldSuggestedWords);
+        return new SuggestedWords(typedWordAndPreviousSuggestions, null /* rawSuggestions */,
+                false /* typedWordValid */, false /* hasAutoCorrectionCandidate */,
+                true /* isObsoleteSuggestions */, false /* isPrediction */);
+    }
+
+    /**
+     * Gets a chunk of text with or the auto-correction indicator underline span as appropriate.
+     *
+     * This method looks at the old state of the auto-correction indicator to put or not put
+     * the underline span as appropriate. It is important to note that this does not correspond
+     * exactly to whether this word will be auto-corrected to or not: what's important here is
+     * to keep the same indication as before.
+     * When we add a new code point to a composing word, we don't know yet if we are going to
+     * auto-correct it until the suggestions are computed. But in the mean time, we still need
+     * to display the character and to extend the previous underline. To avoid any flickering,
+     * the underline should keep the same color it used to have, even if that's not ultimately
+     * the correct color for this new word. When the suggestions are finished evaluating, we
+     * will call this method again to fix the color of the underline.
+     *
+     * @param text the text on which to maybe apply the span.
+     * @return the same text, with the auto-correction underline span if that's appropriate.
+     */
+    // TODO: Shouldn't this go in some *Utils class instead?
+    private CharSequence getTextWithUnderline(final String text) {
+        return mIsAutoCorrectionIndicatorOn
+                ? SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline(mLatinIME, text)
+                : text;
+    }
+
+    /**
+     * Sends a DOWN key event followed by an UP key event to the editor.
+     *
+     * If possible at all, avoid using this method. It causes all sorts of race conditions with
+     * the text view because it goes through a different, asynchronous binder. Also, batch edits
+     * are ignored for key events. Use the normal software input methods instead.
+     *
+     * @param keyCode the key code to send inside the key event.
+     */
+    private void sendDownUpKeyEvent(final int keyCode) {
+        final long eventTime = SystemClock.uptimeMillis();
+        mConnection.sendKeyEvent(new KeyEvent(eventTime, eventTime,
+                KeyEvent.ACTION_DOWN, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
+                KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE));
+        mConnection.sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
+                KeyEvent.ACTION_UP, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
+                KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE));
+    }
+
+    /**
+     * Sends a code point to the editor, using the most appropriate method.
+     *
+     * Normally we send code points with commitText, but there are some cases (where backward
+     * compatibility is a concern for example) where we want to use deprecated methods.
+     *
+     * @param settingsValues the current values of the settings.
+     * @param codePoint the code point to send.
+     */
+    // TODO: replace these two parameters with an InputTransaction
+    private void sendKeyCodePoint(final SettingsValues settingsValues, final int codePoint) {
+        // TODO: Remove this special handling of digit letters.
+        // For backward compatibility. See {@link InputMethodService#sendKeyChar(char)}.
+        if (codePoint >= '0' && codePoint <= '9') {
+            sendDownUpKeyEvent(codePoint - '0' + KeyEvent.KEYCODE_0);
+            return;
+        }
+
+        // TODO: we should do this also when the editor has TYPE_NULL
+        if (Constants.CODE_ENTER == codePoint && settingsValues.isBeforeJellyBean()) {
+            // Backward compatibility mode. Before Jelly bean, the keyboard would simulate
+            // a hardware keyboard event on pressing enter or delete. This is bad for many
+            // reasons (there are race conditions with commits) but some applications are
+            // relying on this behavior so we continue to support it for older apps.
+            sendDownUpKeyEvent(KeyEvent.KEYCODE_ENTER);
+        } else {
+            mConnection.commitText(StringUtils.newSingleCodePointString(codePoint), 1);
+        }
+    }
+
+    /**
+     * Promote a phantom space to an actual space.
+     *
+     * This essentially inserts a space, and that's it. It just checks the options and the text
+     * before the cursor are appropriate before doing it.
+     *
+     * @param settingsValues the current values of the settings.
+     */
+    private void promotePhantomSpace(final SettingsValues settingsValues) {
+        if (settingsValues.shouldInsertSpacesAutomatically()
+                && settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces
+                && !mConnection.textBeforeCursorLooksLikeURL()) {
+            sendKeyCodePoint(settingsValues, Constants.CODE_SPACE);
+        }
+    }
+
+    /**
+     * Do the final processing after a batch input has ended. This commits the word to the editor.
+     * @param settingsValues the current values of the settings.
+     * @param suggestedWords suggestedWords to use.
+     */
+    public void onUpdateTailBatchInputCompleted(final SettingsValues settingsValues,
+            final SuggestedWords suggestedWords,
+            // TODO: remove this argument
+            final KeyboardSwitcher keyboardSwitcher) {
+        final String batchInputText = suggestedWords.isEmpty() ? null : suggestedWords.getWord(0);
+        if (TextUtils.isEmpty(batchInputText)) {
+            return;
+        }
+        mConnection.beginBatchEdit();
+        if (SpaceState.PHANTOM == mSpaceState) {
+            promotePhantomSpace(settingsValues);
+        }
+        final SuggestedWordInfo autoCommitCandidate = mSuggestedWords.getAutoCommitCandidate();
+        // Commit except the last word for phrase gesture if the top suggestion is eligible for auto
+        // commit.
+        if (settingsValues.mPhraseGestureEnabled && null != autoCommitCandidate) {
+            // Find the last space
+            final int indexOfLastSpace = batchInputText.lastIndexOf(Constants.CODE_SPACE) + 1;
+            if (0 != indexOfLastSpace) {
+                mConnection.commitText(batchInputText.substring(0, indexOfLastSpace), 1);
+                final SuggestedWords suggestedWordsForLastWordOfPhraseGesture =
+                        suggestedWords.getSuggestedWordsForLastWordOfPhraseGesture();
+                mLatinIME.showSuggestionStrip(suggestedWordsForLastWordOfPhraseGesture);
+            }
+            final String lastWord = batchInputText.substring(indexOfLastSpace);
+            mWordComposer.setBatchInputWord(lastWord);
+            mConnection.setComposingText(lastWord, 1);
+        } else {
+            mWordComposer.setBatchInputWord(batchInputText);
+            mConnection.setComposingText(batchInputText, 1);
+        }
+        mConnection.endBatchEdit();
+        // Space state must be updated before calling updateShiftState
+        mSpaceState = SpaceState.PHANTOM;
+        keyboardSwitcher.requestUpdatingShiftState(getCurrentAutoCapsState(settingsValues),
+                getCurrentRecapitalizeState());
+    }
+
+    /**
+     * Commit the typed string to the editor.
+     *
+     * This is typically called when we should commit the currently composing word without applying
+     * auto-correction to it. Typically, we come here upon pressing a separator when the keyboard
+     * is configured to not do auto-correction at all (because of the settings or the properties of
+     * the editor). In this case, `separatorString' is set to the separator that was pressed.
+     * We also come here in a variety of cases with external user action. For example, when the
+     * cursor is moved while there is a composition, or when the keyboard is closed, or when the
+     * user presses the Send button for an SMS, we don't auto-correct as that would be unexpected.
+     * In this case, `separatorString' is set to NOT_A_SEPARATOR.
+     *
+     * @param settingsValues the current values of the settings.
+     * @param separatorString the separator that's causing the commit, or NOT_A_SEPARATOR if none.
+     */
+    // TODO: Make this private
+    public void commitTyped(final SettingsValues settingsValues, final String separatorString) {
+        if (!mWordComposer.isComposingWord()) return;
+        final String typedWord = mWordComposer.getTypedWord();
+        if (typedWord.length() > 0) {
+            commitChosenWord(settingsValues, typedWord,
+                    LastComposedWord.COMMIT_TYPE_USER_TYPED_WORD, separatorString);
+        }
+    }
+
+    /**
+     * Commit the current auto-correction.
+     *
+     * This will commit the best guess of the keyboard regarding what the user meant by typing
+     * the currently composing word. The IME computes suggestions and assigns a confidence score
+     * to each of them; when it's confident enough in one suggestion, it replaces the typed string
+     * by this suggestion at commit time. When it's not confident enough, or when it has no
+     * suggestions, or when the settings or environment does not allow for auto-correction, then
+     * this method just commits the typed string.
+     * Note that if suggestions are currently being computed in the background, this method will
+     * block until the computation returns. This is necessary for consistency (it would be very
+     * strange if pressing space would commit a different word depending on how fast you press).
+     *
+     * @param settingsValues the current value of the settings.
+     * @param separator the separator that's causing the commit to happen.
+     */
+    private void commitCurrentAutoCorrection(final SettingsValues settingsValues,
+            final String separator,
+            // TODO: Remove this argument.
+            final LatinIME.UIHandler handler) {
+        // Complete any pending suggestions query first
+        if (handler.hasPendingUpdateSuggestions()) {
+            handler.cancelUpdateSuggestionStrip();
+            performUpdateSuggestionStripSync(settingsValues);
+        }
+        final String typedAutoCorrection = mWordComposer.getAutoCorrectionOrNull();
+        final String typedWord = mWordComposer.getTypedWord();
+        final String autoCorrection = (typedAutoCorrection != null)
+                ? typedAutoCorrection : typedWord;
+        if (autoCorrection != null) {
+            if (TextUtils.isEmpty(typedWord)) {
+                throw new RuntimeException("We have an auto-correction but the typed word "
+                        + "is empty? Impossible! I must commit suicide.");
+            }
+            commitChosenWord(settingsValues, autoCorrection,
+                    LastComposedWord.COMMIT_TYPE_DECIDED_WORD, separator);
+            if (!typedWord.equals(autoCorrection)) {
+                // This will make the correction flash for a short while as a visual clue
+                // to the user that auto-correction happened. It has no other effect; in particular
+                // note that this won't affect the text inside the text field AT ALL: it only makes
+                // the segment of text starting at the supplied index and running for the length
+                // of the auto-correction flash. At this moment, the "typedWord" argument is
+                // ignored by TextView.
+                mConnection.commitCorrection(new CorrectionInfo(
+                        mConnection.getExpectedSelectionEnd() - autoCorrection.length(),
+                        typedWord, autoCorrection));
+            }
+        }
+    }
+
+    /**
+     * Commits the chosen word to the text field and saves it for later retrieval.
+     *
+     * @param settingsValues the current values of the settings.
+     * @param chosenWord the word we want to commit.
+     * @param commitType the type of the commit, as one of LastComposedWord.COMMIT_TYPE_*
+     * @param separatorString the separator that's causing the commit, or NOT_A_SEPARATOR if none.
+     */
+    private void commitChosenWord(final SettingsValues settingsValues, final String chosenWord,
+            final int commitType, final String separatorString) {
+        final SuggestedWords suggestedWords = mSuggestedWords;
+        final CharSequence chosenWordWithSuggestions =
+                SuggestionSpanUtils.getTextWithSuggestionSpan(mLatinIME, chosenWord,
+                        suggestedWords);
+        // When we are composing word, get previous words information from the 2nd previous word
+        // because the 1st previous word is the word to be committed. Otherwise get previous words
+        // information from the 1st previous word.
+        final PrevWordsInfo prevWordsInfo = mConnection.getPrevWordsInfoFromNthPreviousWord(
+                settingsValues.mSpacingAndPunctuations, mWordComposer.isComposingWord() ? 2 : 1);
+        mConnection.commitText(chosenWordWithSuggestions, 1);
+        // Add the word to the user history dictionary
+        performAdditionToUserHistoryDictionary(settingsValues, chosenWord, prevWordsInfo);
+        // TODO: figure out here if this is an auto-correct or if the best word is actually
+        // what user typed. Note: currently this is done much later in
+        // LastComposedWord#didCommitTypedWord by string equality of the remembered
+        // strings.
+        mLastComposedWord = mWordComposer.commitWord(commitType,
+                chosenWordWithSuggestions, separatorString, prevWordsInfo);
+    }
+
+    /**
+     * Retry resetting caches in the rich input connection.
+     *
+     * When the editor can't be accessed we can't reset the caches, so we schedule a retry.
+     * This method handles the retry, and re-schedules a new retry if we still can't access.
+     * We only retry up to 5 times before giving up.
+     *
+     * @param settingsValues the current values of the settings.
+     * @param tryResumeSuggestions Whether we should resume suggestions or not.
+     * @param remainingTries How many times we may try again before giving up.
+     * @return whether true if the caches were successfully reset, false otherwise.
+     */
+    // TODO: make this private
+    public boolean retryResetCachesAndReturnSuccess(final SettingsValues settingsValues,
+            final boolean tryResumeSuggestions, final int remainingTries,
+            // TODO: remove these arguments
+            final LatinIME.UIHandler handler) {
+        final boolean shouldFinishComposition = mConnection.hasSelection()
+                || !mConnection.isCursorPositionKnown();
+        if (!mConnection.resetCachesUponCursorMoveAndReturnSuccess(
+                mConnection.getExpectedSelectionStart(), mConnection.getExpectedSelectionEnd(),
+                shouldFinishComposition)) {
+            if (0 < remainingTries) {
+                handler.postResetCaches(tryResumeSuggestions, remainingTries - 1);
+                return false;
+            }
+            // If remainingTries is 0, we should stop waiting for new tries, however we'll still
+            // return true as we need to perform other tasks (for example, loading the keyboard).
+        }
+        mConnection.tryFixLyingCursorPosition();
+        if (tryResumeSuggestions) {
+            // This is triggered when starting input anew, so we want to include the resumed
+            // word in suggestions.
+            handler.postResumeSuggestions(true /* shouldIncludeResumedWordInSuggestions */,
+                    true /* shouldDelay */);
+        }
+        return true;
+    }
+
+    public void getSuggestedWords(final SettingsValues settingsValues,
+            final ProximityInfo proximityInfo, final int keyboardShiftMode, final int sessionId,
+            final int sequenceNumber, final OnGetSuggestedWordsCallback callback) {
+        mWordComposer.adviseCapitalizedModeBeforeFetchingSuggestions(
+                getActualCapsMode(settingsValues, keyboardShiftMode));
+        mSuggest.getSuggestedWords(mWordComposer,
+                getPrevWordsInfoFromNthPreviousWordForSuggestion(
+                        settingsValues.mSpacingAndPunctuations,
+                        // Get the word on which we should search the bigrams. If we are composing
+                        // a word, it's whatever is *before* the half-committed word in the buffer,
+                        // hence 2; if we aren't, we should just skip whitespace if any, so 1.
+                        mWordComposer.isComposingWord() ? 2 : 1),
+                proximityInfo,
+                new SettingsValuesForSuggestion(settingsValues.mBlockPotentiallyOffensive,
+                        settingsValues.mPhraseGestureEnabled,
+                        settingsValues.mAdditionalFeaturesSettingValues),
+                settingsValues.mAutoCorrectionEnabled,
+                sessionId, sequenceNumber, callback);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java
new file mode 100644
index 0000000..9dbe2c3
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.inputlogic;
+
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Message;
+
+import com.android.inputmethod.compat.LooperCompatUtils;
+import com.android.inputmethod.latin.InputPointers;
+import com.android.inputmethod.latin.LatinIME;
+import com.android.inputmethod.latin.Suggest;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.Suggest.OnGetSuggestedWordsCallback;
+
+/**
+ * A helper to manage deferred tasks for the input logic.
+ */
+class InputLogicHandler implements Handler.Callback {
+    final Handler mNonUIThreadHandler;
+    // TODO: remove this reference.
+    final LatinIME mLatinIME;
+    final InputLogic mInputLogic;
+    private final Object mLock = new Object();
+    private boolean mInBatchInput; // synchronized using {@link #mLock}.
+
+    private static final int MSG_GET_SUGGESTED_WORDS = 1;
+
+    // A handler that never does anything. This is used for cases where events come before anything
+    // is initialized, though probably only the monkey can actually do this.
+    public static final InputLogicHandler NULL_HANDLER = new InputLogicHandler() {
+        @Override
+        public void reset() {}
+        @Override
+        public boolean handleMessage(final Message msg) { return true; }
+        @Override
+        public void onStartBatchInput() {}
+        @Override
+        public void onUpdateBatchInput(final InputPointers batchPointers,
+                final int sequenceNumber) {}
+        @Override
+        public void onCancelBatchInput() {}
+        @Override
+        public void updateTailBatchInput(final InputPointers batchPointers,
+                final int sequenceNumber) {}
+        @Override
+        public void getSuggestedWords(final int sessionId, final int sequenceNumber,
+                final OnGetSuggestedWordsCallback callback) {}
+    };
+
+    private InputLogicHandler() {
+        mNonUIThreadHandler = null;
+        mLatinIME = null;
+        mInputLogic = null;
+    }
+
+    public InputLogicHandler(final LatinIME latinIME, final InputLogic inputLogic) {
+        final HandlerThread handlerThread = new HandlerThread(
+                InputLogicHandler.class.getSimpleName());
+        handlerThread.start();
+        mNonUIThreadHandler = new Handler(handlerThread.getLooper(), this);
+        mLatinIME = latinIME;
+        mInputLogic = inputLogic;
+    }
+
+    public void reset() {
+        mNonUIThreadHandler.removeCallbacksAndMessages(null);
+    }
+
+    // In unit tests, we create several instances of LatinIME, which results in several instances
+    // of InputLogicHandler. To avoid these handlers lingering, we call this.
+    public void destroy() {
+        LooperCompatUtils.quitSafely(mNonUIThreadHandler.getLooper());
+    }
+
+    /**
+     * Handle a message.
+     * @see android.os.Handler.Callback#handleMessage(android.os.Message)
+     */
+    // Called on the Non-UI handler thread by the Handler code.
+    @Override
+    public boolean handleMessage(final Message msg) {
+        switch (msg.what) {
+            case MSG_GET_SUGGESTED_WORDS:
+                mLatinIME.getSuggestedWords(msg.arg1 /* sessionId */,
+                        msg.arg2 /* sequenceNumber */, (OnGetSuggestedWordsCallback) msg.obj);
+                break;
+        }
+        return true;
+    }
+
+    // Called on the UI thread by InputLogic.
+    public void onStartBatchInput() {
+        synchronized (mLock) {
+            mInBatchInput = true;
+        }
+    }
+
+    public boolean isInBatchInput() {
+        return mInBatchInput;
+    }
+
+    /**
+     * Fetch suggestions corresponding to an update of a batch input.
+     * @param batchPointers the updated pointers, including the part that was passed last time.
+     * @param sequenceNumber the sequence number associated with this batch input.
+     * @param isTailBatchInput true if this is the end of a batch input, false if it's an update.
+     */
+    // This method can be called from any thread and will see to it that the correct threads
+    // are used for parts that require it. This method will send a message to the Non-UI handler
+    // thread to pull suggestions, and get the inlined callback to get called on the Non-UI
+    // handler thread. If this is the end of a batch input, the callback will then proceed to
+    // send a message to the UI handler in LatinIME so that showing suggestions can be done on
+    // the UI thread.
+    private void updateBatchInput(final InputPointers batchPointers,
+            final int sequenceNumber, final boolean isTailBatchInput) {
+        synchronized (mLock) {
+            if (!mInBatchInput) {
+                // Batch input has ended or canceled while the message was being delivered.
+                return;
+            }
+            mInputLogic.mWordComposer.setBatchInputPointers(batchPointers);
+            getSuggestedWords(Suggest.SESSION_GESTURE, sequenceNumber,
+                    new OnGetSuggestedWordsCallback() {
+                        @Override
+                        public void onGetSuggestedWords(SuggestedWords suggestedWords) {
+                            // We're now inside the callback. This always runs on the Non-UI thread,
+                            // no matter what thread updateBatchInput was originally called on.
+                            if (suggestedWords.isEmpty()) {
+                                // Use old suggestions if we don't have any new ones.
+                                // Previous suggestions are found in InputLogic#mSuggestedWords.
+                                // Since these are the most recent ones and we just recomputed
+                                // new ones to update them, then the previous ones are there.
+                                suggestedWords = mInputLogic.mSuggestedWords;
+                            }
+                            mLatinIME.mHandler.showGesturePreviewAndSuggestionStrip(suggestedWords,
+                                    isTailBatchInput /* dismissGestureFloatingPreviewText */);
+                            if (isTailBatchInput) {
+                                mInBatchInput = false;
+                                // The following call schedules onEndBatchInputInternal
+                                // to be called on the UI thread.
+                                mLatinIME.mHandler.showTailBatchInputResult(suggestedWords);
+                            }
+                        }
+                    });
+        }
+    }
+
+    /**
+     * Update a batch input.
+     *
+     * This fetches suggestions and updates the suggestion strip and the floating text preview.
+     *
+     * @param batchPointers the updated batch pointers.
+     * @param sequenceNumber the sequence number associated with this batch input.
+     */
+    // Called on the UI thread by InputLogic.
+    public void onUpdateBatchInput(final InputPointers batchPointers,
+            final int sequenceNumber) {
+        updateBatchInput(batchPointers, sequenceNumber, false /* isTailBatchInput */);
+    }
+
+    /**
+     * Cancel a batch input.
+     *
+     * Note that as opposed to updateTailBatchInput, we do the UI side of this immediately on the
+     * same thread, rather than get this to call a method in LatinIME. This is because
+     * canceling a batch input does not necessitate the long operation of pulling suggestions.
+     */
+    // Called on the UI thread by InputLogic.
+    public void onCancelBatchInput() {
+        synchronized (mLock) {
+            mInBatchInput = false;
+        }
+    }
+
+    /**
+     * Trigger an update for a tail batch input.
+     *
+     * A tail batch input is the last update for a gesture, the one that is triggered after the
+     * user lifts their finger. This method schedules fetching suggestions on the non-UI thread,
+     * then when the suggestions are computed it comes back on the UI thread to update the
+     * suggestion strip, commit the first suggestion, and dismiss the floating text preview.
+     *
+     * @param batchPointers the updated batch pointers.
+     * @param sequenceNumber the sequence number associated with this batch input.
+     */
+    // Called on the UI thread by InputLogic.
+    public void updateTailBatchInput(final InputPointers batchPointers,
+            final int sequenceNumber) {
+        updateBatchInput(batchPointers, sequenceNumber, true /* isTailBatchInput */);
+    }
+
+    public void getSuggestedWords(final int sessionId, final int sequenceNumber,
+            final OnGetSuggestedWordsCallback callback) {
+        mNonUIThreadHandler.obtainMessage(
+                MSG_GET_SUGGESTED_WORDS, sessionId, sequenceNumber, callback).sendToTarget();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/SpaceState.java b/java/src/com/android/inputmethod/latin/inputlogic/SpaceState.java
new file mode 100644
index 0000000..ce80c00
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/inputlogic/SpaceState.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.inputlogic;
+
+/**
+ * Class for managing space states.
+ *
+ * At any given time, the input logic is in one of five possible space states. Depending on the
+ * current space state, some behavior will change; the prime example of this is the PHANTOM state,
+ * in which any subsequent letter input will input a space before the letter. Read on the
+ * description inside this class for each of the space states.
+ */
+public class SpaceState {
+    // None: the state where all the keyboard behavior is the most "standard" and no automatic
+    // input is added or removed. In this state, all self-inserting keys only insert themselves,
+    // and backspace removes one character.
+    public static final int NONE = 0;
+    // Double space: the state where the user pressed space twice quickly, which LatinIME
+    // resolved as period-space. In this state, pressing backspace will undo the
+    // double-space-to-period insertion: it will replace ". " with "  ".
+    public static final int DOUBLE = 1;
+    // Swap punctuation: the state where a weak space and a punctuation from the suggestion strip
+    // have just been swapped. In this state, pressing backspace will undo the swap: the
+    // characters will be swapped back back, and the space state will go to WEAK.
+    public static final int SWAP_PUNCTUATION = 2;
+    // Weak space: a space that should be swapped only by suggestion strip punctuation. Weak
+    // spaces happen when the user presses space, accepting the current suggestion (whether
+    // it's an auto-correction or not). In this state, pressing a punctuation from the suggestion
+    // strip inserts it before the space (while it inserts it after the space in the NONE state).
+    public static final int WEAK = 3;
+    // Phantom space: a not-yet-inserted space that should get inserted on the next input,
+    // character provided it's not a separator. If it's a separator, the phantom space is dropped.
+    // Phantom spaces happen when a user chooses a word from the suggestion strip. In this state,
+    // non-separators insert a space before they get inserted.
+    public static final int PHANTOM = 4;
+
+    private SpaceState() {
+        // This class is not publicly instantiable.
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java
deleted file mode 100644
index fda97da..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.TreeMap;
-
-/**
- * A base class of the binary dictionary decoder.
- */
-public abstract class AbstractDictDecoder implements DictDecoder {
-    protected FileHeader readHeader(final DictBuffer dictBuffer)
-            throws IOException, UnsupportedFormatException {
-        if (dictBuffer == null) {
-            openDictBuffer();
-        }
-
-        final int version = HeaderReader.readVersion(dictBuffer);
-        if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
-                || version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
-          throw new UnsupportedFormatException("Unsupported version : " + version);
-        }
-        // TODO: Remove this field.
-        final int optionsFlags = HeaderReader.readOptionFlags(dictBuffer);
-
-        final int headerSize = HeaderReader.readHeaderSize(dictBuffer);
-
-        if (headerSize < 0) {
-            throw new UnsupportedFormatException("header size can't be negative.");
-        }
-
-        final HashMap<String, String> attributes = HeaderReader.readAttributes(dictBuffer,
-                headerSize);
-
-        final FileHeader header = new FileHeader(headerSize,
-                new FusionDictionary.DictionaryOptions(attributes,
-                        0 != (optionsFlags & FormatSpec.GERMAN_UMLAUT_PROCESSING_FLAG),
-                        0 != (optionsFlags & FormatSpec.FRENCH_LIGATURE_PROCESSING_FLAG)),
-                        new FormatOptions(version,
-                                0 != (optionsFlags & FormatSpec.SUPPORTS_DYNAMIC_UPDATE),
-                                0 != (optionsFlags & FormatSpec.CONTAINS_TIMESTAMP_FLAG)));
-        return header;
-    }
-
-    @Override @UsedForTesting
-    public int getTerminalPosition(final String word)
-            throws IOException, UnsupportedFormatException {
-        if (!isDictBufferOpen()) {
-            openDictBuffer();
-        }
-        return BinaryDictIOUtils.getTerminalPosition(this, word);
-    }
-
-    @Override @UsedForTesting
-    public void readUnigramsAndBigramsBinary(final TreeMap<Integer, String> words,
-            final TreeMap<Integer, Integer> frequencies,
-            final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams)
-            throws IOException, UnsupportedFormatException {
-        if (!isDictBufferOpen()) {
-            openDictBuffer();
-        }
-        BinaryDictIOUtils.readUnigramsAndBigramsBinary(this, words, frequencies, bigrams);
-    }
-
-    /**
-     * A utility class for reading a file header.
-     */
-    protected static class HeaderReader {
-        protected static int readVersion(final DictBuffer dictBuffer)
-                throws IOException, UnsupportedFormatException {
-            return BinaryDictDecoderUtils.checkFormatVersion(dictBuffer);
-        }
-
-        protected static int readOptionFlags(final DictBuffer dictBuffer) {
-            return dictBuffer.readUnsignedShort();
-        }
-
-        protected static int readHeaderSize(final DictBuffer dictBuffer) {
-            return dictBuffer.readInt();
-        }
-
-        protected static HashMap<String, String> readAttributes(final DictBuffer dictBuffer,
-                final int headerSize) {
-            final HashMap<String, String> attributes = new HashMap<String, String>();
-            while (dictBuffer.position() < headerSize) {
-                // We can avoid an infinite loop here since dictBuffer.position() is always
-                // increased by calling CharEncoding.readString.
-                final String key = CharEncoding.readString(dictBuffer);
-                final String value = CharEncoding.readString(dictBuffer);
-                attributes.put(key, value);
-            }
-            dictBuffer.position(headerSize);
-            return attributes;
-        }
-    }
-
-    /**
-     * A utility class for reading a PtNode.
-     */
-    protected static class PtNodeReader {
-        protected static int readPtNodeOptionFlags(final DictBuffer dictBuffer) {
-            return dictBuffer.readUnsignedByte();
-        }
-
-        protected static int readParentAddress(final DictBuffer dictBuffer,
-                final FormatOptions formatOptions) {
-            if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) {
-                return BinaryDictDecoderUtils.readSInt24(dictBuffer);
-            } else {
-                return FormatSpec.NO_PARENT_ADDRESS;
-            }
-        }
-
-        protected static int readChildrenAddress(final DictBuffer dictBuffer, final int optionFlags,
-                final FormatOptions formatOptions) {
-            if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) {
-                final int address = BinaryDictDecoderUtils.readSInt24(dictBuffer);
-                if (address == 0) return FormatSpec.NO_CHILDREN_ADDRESS;
-                return address;
-            } else {
-                switch (optionFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) {
-                    case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE:
-                        return dictBuffer.readUnsignedByte();
-                    case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES:
-                        return dictBuffer.readUnsignedShort();
-                    case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES:
-                        return dictBuffer.readUnsignedInt24();
-                    case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS:
-                    default:
-                        return FormatSpec.NO_CHILDREN_ADDRESS;
-                }
-            }
-        }
-
-        // Reads shortcuts and returns the read length.
-        protected static int readShortcut(final DictBuffer dictBuffer,
-                final ArrayList<WeightedString> shortcutTargets) {
-            final int pointerBefore = dictBuffer.position();
-            dictBuffer.readUnsignedShort(); // skip the size
-            while (true) {
-                final int targetFlags = dictBuffer.readUnsignedByte();
-                final String word = CharEncoding.readString(dictBuffer);
-                shortcutTargets.add(new WeightedString(word,
-                        targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY));
-                if (0 == (targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break;
-            }
-            return dictBuffer.position() - pointerBefore;
-        }
-
-        protected static int readBigramAddresses(final DictBuffer dictBuffer,
-                final ArrayList<PendingAttribute> bigrams, final int baseAddress) {
-            int readLength = 0;
-            int bigramCount = 0;
-            while (bigramCount++ < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
-                final int bigramFlags = dictBuffer.readUnsignedByte();
-                ++readLength;
-                final int sign = 0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE)
-                        ? 1 : -1;
-                int bigramAddress = baseAddress + readLength;
-                switch (bigramFlags & FormatSpec.MASK_BIGRAM_ATTR_ADDRESS_TYPE) {
-                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE:
-                        bigramAddress += sign * dictBuffer.readUnsignedByte();
-                        readLength += 1;
-                        break;
-                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES:
-                        bigramAddress += sign * dictBuffer.readUnsignedShort();
-                        readLength += 2;
-                        break;
-                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES:
-                        bigramAddress += sign * dictBuffer.readUnsignedInt24();
-                        readLength += 3;
-                        break;
-                    default:
-                        throw new RuntimeException("Has bigrams with no address");
-                }
-                bigrams.add(new PendingAttribute(
-                        bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY,
-                        bigramAddress));
-                if (0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break;
-            }
-            return readLength;
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java
deleted file mode 100644
index 216492b..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java
+++ /dev/null
@@ -1,623 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Decodes binary files for a FusionDictionary.
- *
- * All the methods in this class are static.
- *
- * TODO: Remove calls from classes except Ver3DictDecoder
- * TODO: Move this file to makedict/internal.
- * TODO: Rename this class to DictDecoderUtils.
- */
-public final class BinaryDictDecoderUtils {
-
-    private static final boolean DBG = MakedictLog.DBG;
-
-    private BinaryDictDecoderUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    private static final int MAX_JUMPS = 12;
-
-    @UsedForTesting
-    public interface DictBuffer {
-        public int readUnsignedByte();
-        public int readUnsignedShort();
-        public int readUnsignedInt24();
-        public int readInt();
-        public int position();
-        public void position(int newPosition);
-        public void put(final byte b);
-        public int limit();
-        @UsedForTesting
-        public int capacity();
-    }
-
-    public static final class ByteBufferDictBuffer implements DictBuffer {
-        private ByteBuffer mBuffer;
-
-        public ByteBufferDictBuffer(final ByteBuffer buffer) {
-            mBuffer = buffer;
-        }
-
-        @Override
-        public int readUnsignedByte() {
-            return mBuffer.get() & 0xFF;
-        }
-
-        @Override
-        public int readUnsignedShort() {
-            return mBuffer.getShort() & 0xFFFF;
-        }
-
-        @Override
-        public int readUnsignedInt24() {
-            final int retval = readUnsignedByte();
-            return (retval << 16) + readUnsignedShort();
-        }
-
-        @Override
-        public int readInt() {
-            return mBuffer.getInt();
-        }
-
-        @Override
-        public int position() {
-            return mBuffer.position();
-        }
-
-        @Override
-        public void position(int newPos) {
-            mBuffer.position(newPos);
-        }
-
-        @Override
-        public void put(final byte b) {
-            mBuffer.put(b);
-        }
-
-        @Override
-        public int limit() {
-            return mBuffer.limit();
-        }
-
-        @Override
-        public int capacity() {
-            return mBuffer.capacity();
-        }
-    }
-
-    /**
-     * A class grouping utility function for our specific character encoding.
-     */
-    static final class CharEncoding {
-        private static final int MINIMAL_ONE_BYTE_CHARACTER_VALUE = 0x20;
-        private static final int MAXIMAL_ONE_BYTE_CHARACTER_VALUE = 0xFF;
-
-        /**
-         * Helper method to find out whether this code fits on one byte
-         */
-        private static boolean fitsOnOneByte(final int character) {
-            return character >= MINIMAL_ONE_BYTE_CHARACTER_VALUE
-                    && character <= MAXIMAL_ONE_BYTE_CHARACTER_VALUE;
-        }
-
-        /**
-         * Compute the size of a character given its character code.
-         *
-         * Char format is:
-         * 1 byte = bbbbbbbb match
-         * case 000xxxxx: xxxxx << 16 + next byte << 8 + next byte
-         * else: if 00011111 (= 0x1F) : this is the terminator. This is a relevant choice because
-         *       unicode code points range from 0 to 0x10FFFF, so any 3-byte value starting with
-         *       00011111 would be outside unicode.
-         * else: iso-latin-1 code
-         * This allows for the whole unicode range to be encoded, including chars outside of
-         * the BMP. Also everything in the iso-latin-1 charset is only 1 byte, except control
-         * characters which should never happen anyway (and still work, but take 3 bytes).
-         *
-         * @param character the character code.
-         * @return the size in binary encoded-form, either 1 or 3 bytes.
-         */
-        static int getCharSize(final int character) {
-            // See char encoding in FusionDictionary.java
-            if (fitsOnOneByte(character)) return 1;
-            if (FormatSpec.INVALID_CHARACTER == character) return 1;
-            return 3;
-        }
-
-        /**
-         * Compute the byte size of a character array.
-         */
-        static int getCharArraySize(final int[] chars) {
-            int size = 0;
-            for (int character : chars) size += getCharSize(character);
-            return size;
-        }
-
-        /**
-         * Writes a char array to a byte buffer.
-         *
-         * @param codePoints the code point array to write.
-         * @param buffer the byte buffer to write to.
-         * @param index the index in buffer to write the character array to.
-         * @return the index after the last character.
-         */
-        static int writeCharArray(final int[] codePoints, final byte[] buffer, int index) {
-            for (int codePoint : codePoints) {
-                if (1 == getCharSize(codePoint)) {
-                    buffer[index++] = (byte)codePoint;
-                } else {
-                    buffer[index++] = (byte)(0xFF & (codePoint >> 16));
-                    buffer[index++] = (byte)(0xFF & (codePoint >> 8));
-                    buffer[index++] = (byte)(0xFF & codePoint);
-                }
-            }
-            return index;
-        }
-
-        /**
-         * Writes a string with our character format to a byte buffer.
-         *
-         * This will also write the terminator byte.
-         *
-         * @param buffer the byte buffer to write to.
-         * @param origin the offset to write from.
-         * @param word the string to write.
-         * @return the size written, in bytes.
-         */
-        static int writeString(final byte[] buffer, final int origin,
-                final String word) {
-            final int length = word.length();
-            int index = origin;
-            for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
-                final int codePoint = word.codePointAt(i);
-                if (1 == getCharSize(codePoint)) {
-                    buffer[index++] = (byte)codePoint;
-                } else {
-                    buffer[index++] = (byte)(0xFF & (codePoint >> 16));
-                    buffer[index++] = (byte)(0xFF & (codePoint >> 8));
-                    buffer[index++] = (byte)(0xFF & codePoint);
-                }
-            }
-            buffer[index++] = FormatSpec.PTNODE_CHARACTERS_TERMINATOR;
-            return index - origin;
-        }
-
-        /**
-         * Writes a string with our character format to an OutputStream.
-         *
-         * This will also write the terminator byte.
-         *
-         * @param buffer the OutputStream to write to.
-         * @param word the string to write.
-         */
-        static void writeString(final OutputStream buffer, final String word) throws IOException {
-            final int length = word.length();
-            for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
-                final int codePoint = word.codePointAt(i);
-                if (1 == getCharSize(codePoint)) {
-                    buffer.write((byte) codePoint);
-                } else {
-                    buffer.write((byte) (0xFF & (codePoint >> 16)));
-                    buffer.write((byte) (0xFF & (codePoint >> 8)));
-                    buffer.write((byte) (0xFF & codePoint));
-                }
-            }
-            buffer.write(FormatSpec.PTNODE_CHARACTERS_TERMINATOR);
-        }
-
-        /**
-         * Reads a string from a DictBuffer. This is the converse of the above method.
-         */
-        static String readString(final DictBuffer dictBuffer) {
-            final StringBuilder s = new StringBuilder();
-            int character = readChar(dictBuffer);
-            while (character != FormatSpec.INVALID_CHARACTER) {
-                s.appendCodePoint(character);
-                character = readChar(dictBuffer);
-            }
-            return s.toString();
-        }
-
-        /**
-         * Reads a character from the buffer.
-         *
-         * This follows the character format documented earlier in this source file.
-         *
-         * @param dictBuffer the buffer, positioned over an encoded character.
-         * @return the character code.
-         */
-        static int readChar(final DictBuffer dictBuffer) {
-            int character = dictBuffer.readUnsignedByte();
-            if (!fitsOnOneByte(character)) {
-                if (FormatSpec.PTNODE_CHARACTERS_TERMINATOR == character) {
-                    return FormatSpec.INVALID_CHARACTER;
-                }
-                character <<= 16;
-                character += dictBuffer.readUnsignedShort();
-            }
-            return character;
-        }
-    }
-
-    // Input methods: Read a binary dictionary to memory.
-    // readDictionaryBinary is the public entry point for them.
-
-    static int readSInt24(final DictBuffer dictBuffer) {
-        final int retval = dictBuffer.readUnsignedInt24();
-        final int sign = ((retval & FormatSpec.MSB24) != 0) ? -1 : 1;
-        return sign * (retval & FormatSpec.SINT24_MAX);
-    }
-
-    static int readChildrenAddress(final DictBuffer dictBuffer,
-            final int optionFlags, final FormatOptions options) {
-        if (options.mSupportsDynamicUpdate) {
-            final int address = dictBuffer.readUnsignedInt24();
-            if (address == 0) return FormatSpec.NO_CHILDREN_ADDRESS;
-            if ((address & FormatSpec.MSB24) != 0) {
-                return -(address & FormatSpec.SINT24_MAX);
-            } else {
-                return address;
-            }
-        }
-        switch (optionFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) {
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE:
-                return dictBuffer.readUnsignedByte();
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES:
-                return dictBuffer.readUnsignedShort();
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES:
-                return dictBuffer.readUnsignedInt24();
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS:
-            default:
-                return FormatSpec.NO_CHILDREN_ADDRESS;
-        }
-    }
-
-    static int readParentAddress(final DictBuffer dictBuffer,
-            final FormatOptions formatOptions) {
-        if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) {
-            final int parentAddress = dictBuffer.readUnsignedInt24();
-            final int sign = ((parentAddress & FormatSpec.MSB24) != 0) ? -1 : 1;
-            return sign * (parentAddress & FormatSpec.SINT24_MAX);
-        } else {
-            return FormatSpec.NO_PARENT_ADDRESS;
-        }
-    }
-
-    /**
-     * Reads and returns the PtNode count out of a buffer and forwards the pointer.
-     */
-    /* package */ static int readPtNodeCount(final DictBuffer dictBuffer) {
-        final int msb = dictBuffer.readUnsignedByte();
-        if (FormatSpec.MAX_PTNODES_FOR_ONE_BYTE_PTNODE_COUNT >= msb) {
-            return msb;
-        } else {
-            return ((FormatSpec.MAX_PTNODES_FOR_ONE_BYTE_PTNODE_COUNT & msb) << 8)
-                    + dictBuffer.readUnsignedByte();
-        }
-    }
-
-    /**
-     * Finds, as a string, the word at the position passed as an argument.
-     *
-     * @param dictDecoder the dict decoder.
-     * @param headerSize the size of the header.
-     * @param pos the position to seek.
-     * @param formatOptions file format options.
-     * @return the word with its frequency, as a weighted string.
-     */
-    /* package for tests */ static WeightedString getWordAtPosition(final DictDecoder dictDecoder,
-            final int headerSize, final int pos, final FormatOptions formatOptions) {
-        final WeightedString result;
-        final int originalPos = dictDecoder.getPosition();
-        dictDecoder.setPosition(pos);
-
-        if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) {
-            result = getWordAtPositionWithParentAddress(dictDecoder, pos, formatOptions);
-        } else {
-            result = getWordAtPositionWithoutParentAddress(dictDecoder, headerSize, pos,
-                    formatOptions);
-        }
-
-        dictDecoder.setPosition(originalPos);
-        return result;
-    }
-
-    @SuppressWarnings("unused")
-    private static WeightedString getWordAtPositionWithParentAddress(final DictDecoder dictDecoder,
-            final int pos, final FormatOptions options) {
-        int currentPos = pos;
-        int frequency = Integer.MIN_VALUE;
-        final StringBuilder builder = new StringBuilder();
-        // the length of the path from the root to the leaf is limited by MAX_WORD_LENGTH
-        for (int count = 0; count < FormatSpec.MAX_WORD_LENGTH; ++count) {
-            PtNodeInfo currentInfo;
-            int loopCounter = 0;
-            do {
-                dictDecoder.setPosition(currentPos);
-                currentInfo = dictDecoder.readPtNode(currentPos, options);
-                if (BinaryDictIOUtils.isMovedPtNode(currentInfo.mFlags, options)) {
-                    currentPos = currentInfo.mParentAddress + currentInfo.mOriginalAddress;
-                }
-                if (DBG && loopCounter++ > MAX_JUMPS) {
-                    MakedictLog.d("Too many jumps - probably a bug");
-                }
-            } while (BinaryDictIOUtils.isMovedPtNode(currentInfo.mFlags, options));
-            if (Integer.MIN_VALUE == frequency) frequency = currentInfo.mFrequency;
-            builder.insert(0,
-                    new String(currentInfo.mCharacters, 0, currentInfo.mCharacters.length));
-            if (currentInfo.mParentAddress == FormatSpec.NO_PARENT_ADDRESS) break;
-            currentPos = currentInfo.mParentAddress + currentInfo.mOriginalAddress;
-        }
-        return new WeightedString(builder.toString(), frequency);
-    }
-
-    private static WeightedString getWordAtPositionWithoutParentAddress(
-            final DictDecoder dictDecoder, final int headerSize, final int pos,
-            final FormatOptions options) {
-        dictDecoder.setPosition(headerSize);
-        final int count = dictDecoder.readPtNodeCount();
-        int groupPos = headerSize + BinaryDictIOUtils.getPtNodeCountSize(count);
-        final StringBuilder builder = new StringBuilder();
-        WeightedString result = null;
-
-        PtNodeInfo last = null;
-        for (int i = count - 1; i >= 0; --i) {
-            PtNodeInfo info = dictDecoder.readPtNode(groupPos, options);
-            groupPos = info.mEndAddress;
-            if (info.mOriginalAddress == pos) {
-                builder.append(new String(info.mCharacters, 0, info.mCharacters.length));
-                result = new WeightedString(builder.toString(), info.mFrequency);
-                break; // and return
-            }
-            if (BinaryDictIOUtils.hasChildrenAddress(info.mChildrenAddress)) {
-                if (info.mChildrenAddress > pos) {
-                    if (null == last) continue;
-                    builder.append(new String(last.mCharacters, 0, last.mCharacters.length));
-                    dictDecoder.setPosition(last.mChildrenAddress);
-                    i = dictDecoder.readPtNodeCount();
-                    groupPos = last.mChildrenAddress + BinaryDictIOUtils.getPtNodeCountSize(i);
-                    last = null;
-                    continue;
-                }
-                last = info;
-            }
-            if (0 == i && BinaryDictIOUtils.hasChildrenAddress(last.mChildrenAddress)) {
-                builder.append(new String(last.mCharacters, 0, last.mCharacters.length));
-                dictDecoder.setPosition(last.mChildrenAddress);
-                i = dictDecoder.readPtNodeCount();
-                groupPos = last.mChildrenAddress + BinaryDictIOUtils.getPtNodeCountSize(i);
-                last = null;
-                continue;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Reads a single node array from a buffer.
-     *
-     * This methods reads the file at the current position. A node array is fully expected to start
-     * at the current position.
-     * This will recursively read other node arrays into the structure, populating the reverse
-     * maps on the fly and using them to keep track of already read nodes.
-     *
-     * @param dictDecoder the dict decoder, correctly positioned at the start of a node array.
-     * @param headerSize the size, in bytes, of the file header.
-     * @param reverseNodeArrayMap a mapping from addresses to already read node arrays.
-     * @param reversePtNodeMap a mapping from addresses to already read PtNodes.
-     * @param options file format options.
-     * @return the read node array with all his children already read.
-     */
-    private static PtNodeArray readNodeArray(final DictDecoder dictDecoder,
-            final int headerSize, final Map<Integer, PtNodeArray> reverseNodeArrayMap,
-            final Map<Integer, PtNode> reversePtNodeMap, final FormatOptions options)
-            throws IOException {
-        final ArrayList<PtNode> nodeArrayContents = new ArrayList<PtNode>();
-        final int nodeArrayOriginPos = dictDecoder.getPosition();
-
-        do { // Scan the linked-list node.
-            final int nodeArrayHeadPos = dictDecoder.getPosition();
-            final int count = dictDecoder.readPtNodeCount();
-            int groupOffsetPos = nodeArrayHeadPos + BinaryDictIOUtils.getPtNodeCountSize(count);
-            for (int i = count; i > 0; --i) { // Scan the array of PtNode.
-                PtNodeInfo info = dictDecoder.readPtNode(groupOffsetPos, options);
-                if (BinaryDictIOUtils.isMovedPtNode(info.mFlags, options)) continue;
-                ArrayList<WeightedString> shortcutTargets = info.mShortcutTargets;
-                ArrayList<WeightedString> bigrams = null;
-                if (null != info.mBigrams) {
-                    bigrams = new ArrayList<WeightedString>();
-                    for (PendingAttribute bigram : info.mBigrams) {
-                        final WeightedString word = getWordAtPosition(dictDecoder, headerSize,
-                                bigram.mAddress, options);
-                        final int reconstructedFrequency =
-                                BinaryDictIOUtils.reconstructBigramFrequency(word.mFrequency,
-                                        bigram.mFrequency);
-                        bigrams.add(new WeightedString(word.mWord, reconstructedFrequency));
-                    }
-                }
-                if (BinaryDictIOUtils.hasChildrenAddress(info.mChildrenAddress)) {
-                    PtNodeArray children = reverseNodeArrayMap.get(info.mChildrenAddress);
-                    if (null == children) {
-                        final int currentPosition = dictDecoder.getPosition();
-                        dictDecoder.setPosition(info.mChildrenAddress);
-                        children = readNodeArray(dictDecoder, headerSize, reverseNodeArrayMap,
-                                reversePtNodeMap, options);
-                        dictDecoder.setPosition(currentPosition);
-                    }
-                    nodeArrayContents.add(
-                            new PtNode(info.mCharacters, shortcutTargets, bigrams,
-                                    info.mFrequency,
-                                    0 != (info.mFlags & FormatSpec.FLAG_IS_NOT_A_WORD),
-                                    0 != (info.mFlags & FormatSpec.FLAG_IS_BLACKLISTED), children));
-                } else {
-                    nodeArrayContents.add(
-                            new PtNode(info.mCharacters, shortcutTargets, bigrams,
-                                    info.mFrequency,
-                                    0 != (info.mFlags & FormatSpec.FLAG_IS_NOT_A_WORD),
-                                    0 != (info.mFlags & FormatSpec.FLAG_IS_BLACKLISTED)));
-                }
-                groupOffsetPos = info.mEndAddress;
-            }
-
-            // reach the end of the array.
-            if (options.mSupportsDynamicUpdate) {
-                final boolean hasValidForwardLink = dictDecoder.readAndFollowForwardLink();
-                if (!hasValidForwardLink) break;
-            }
-        } while (options.mSupportsDynamicUpdate && dictDecoder.hasNextPtNodeArray());
-
-        final PtNodeArray nodeArray = new PtNodeArray(nodeArrayContents);
-        nodeArray.mCachedAddressBeforeUpdate = nodeArrayOriginPos;
-        nodeArray.mCachedAddressAfterUpdate = nodeArrayOriginPos;
-        reverseNodeArrayMap.put(nodeArray.mCachedAddressAfterUpdate, nodeArray);
-        return nodeArray;
-    }
-
-    /**
-     * Helper function to get the binary format version from the header.
-     * @throws IOException
-     */
-    private static int getFormatVersion(final DictBuffer dictBuffer)
-            throws IOException {
-        final int magic = dictBuffer.readInt();
-        if (FormatSpec.MAGIC_NUMBER == magic) return dictBuffer.readUnsignedShort();
-        return FormatSpec.NOT_A_VERSION_NUMBER;
-    }
-
-    /**
-     * Helper function to get and validate the binary format version.
-     * @throws UnsupportedFormatException
-     * @throws IOException
-     */
-    static int checkFormatVersion(final DictBuffer dictBuffer)
-            throws IOException, UnsupportedFormatException {
-        final int version = getFormatVersion(dictBuffer);
-        if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
-                || version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
-            throw new UnsupportedFormatException("This file has version " + version
-                    + ", but this implementation does not support versions above "
-                    + FormatSpec.MAXIMUM_SUPPORTED_VERSION);
-        }
-        return version;
-    }
-
-    /**
-     * Reads a buffer and returns the memory representation of the dictionary.
-     *
-     * This high-level method takes a buffer and reads its contents, populating a
-     * FusionDictionary structure. The optional dict argument is an existing dictionary to
-     * which words from the buffer should be added. If it is null, a new dictionary is created.
-     *
-     * @param dictDecoder the dict decoder.
-     * @param dict an optional dictionary to add words to, or null.
-     * @return the created (or merged) dictionary.
-     */
-    @UsedForTesting
-    /* package */ static FusionDictionary readDictionaryBinary(final DictDecoder dictDecoder,
-            final FusionDictionary dict) throws IOException, UnsupportedFormatException {
-        // Read header
-        final FileHeader fileHeader = dictDecoder.readHeader();
-
-        Map<Integer, PtNodeArray> reverseNodeArrayMapping = new TreeMap<Integer, PtNodeArray>();
-        Map<Integer, PtNode> reversePtNodeMapping = new TreeMap<Integer, PtNode>();
-        final PtNodeArray root = readNodeArray(dictDecoder, fileHeader.mHeaderSize,
-                reverseNodeArrayMapping, reversePtNodeMapping, fileHeader.mFormatOptions);
-
-        FusionDictionary newDict = new FusionDictionary(root, fileHeader.mDictionaryOptions);
-        if (null != dict) {
-            for (final Word w : dict) {
-                if (w.mIsBlacklistEntry) {
-                    newDict.addBlacklistEntry(w.mWord, w.mShortcutTargets, w.mIsNotAWord);
-                } else {
-                    newDict.add(w.mWord, w.mFrequency, w.mShortcutTargets, w.mIsNotAWord);
-                }
-            }
-            for (final Word w : dict) {
-                // By construction a binary dictionary may not have bigrams pointing to
-                // words that are not also registered as unigrams so we don't have to avoid
-                // them explicitly here.
-                for (final WeightedString bigram : w.mBigrams) {
-                    newDict.setBigram(w.mWord, bigram.mWord, bigram.mFrequency);
-                }
-            }
-        }
-
-        return newDict;
-    }
-
-    /**
-     * Helper method to pass a file name instead of a File object to isBinaryDictionary.
-     */
-    public static boolean isBinaryDictionary(final String filename) {
-        final File file = new File(filename);
-        return isBinaryDictionary(file);
-    }
-
-    /**
-     * Basic test to find out whether the file is a binary dictionary or not.
-     *
-     * Concretely this only tests the magic number.
-     *
-     * @param file The file to test.
-     * @return true if it's a binary dictionary, false otherwise
-     */
-    public static boolean isBinaryDictionary(final File file) {
-        FileInputStream inStream = null;
-        try {
-            inStream = new FileInputStream(file);
-            final ByteBuffer buffer = inStream.getChannel().map(
-                    FileChannel.MapMode.READ_ONLY, 0, file.length());
-            final int version = getFormatVersion(new ByteBufferDictBuffer(buffer));
-            return (version >= FormatSpec.MINIMUM_SUPPORTED_VERSION
-                    && version <= FormatSpec.MAXIMUM_SUPPORTED_VERSION);
-        } catch (FileNotFoundException e) {
-            return false;
-        } catch (IOException e) {
-            return false;
-        } finally {
-            if (inStream != null) {
-                try {
-                    inStream.close();
-                } catch (IOException e) {
-                    // do nothing
-                }
-            }
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
deleted file mode 100644
index f761829..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
+++ /dev/null
@@ -1,956 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-
-/**
- * Encodes binary files for a FusionDictionary.
- *
- * All the methods in this class are static.
- *
- * TODO: Rename this class to DictEncoderUtils.
- */
-public class BinaryDictEncoderUtils {
-
-    private static final boolean DBG = MakedictLog.DBG;
-
-    private BinaryDictEncoderUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    // Arbitrary limit to how much passes we consider address size compression should
-    // terminate in. At the time of this writing, our largest dictionary completes
-    // compression in five passes.
-    // If the number of passes exceeds this number, makedict bails with an exception on
-    // suspicion that a bug might be causing an infinite loop.
-    private static final int MAX_PASSES = 24;
-
-    /**
-     * Compute the binary size of the character array.
-     *
-     * If only one character, this is the size of this character. If many, it's the sum of their
-     * sizes + 1 byte for the terminator.
-     *
-     * @param characters the character array
-     * @return the size of the char array, including the terminator if any
-     */
-    static int getPtNodeCharactersSize(final int[] characters) {
-        int size = CharEncoding.getCharArraySize(characters);
-        if (characters.length > 1) size += FormatSpec.PTNODE_TERMINATOR_SIZE;
-        return size;
-    }
-
-    /**
-     * Compute the binary size of the character array in a PtNode
-     *
-     * If only one character, this is the size of this character. If many, it's the sum of their
-     * sizes + 1 byte for the terminator.
-     *
-     * @param ptNode the PtNode
-     * @return the size of the char array, including the terminator if any
-     */
-    private static int getPtNodeCharactersSize(final PtNode ptNode) {
-        return getPtNodeCharactersSize(ptNode.mChars);
-    }
-
-    /**
-     * Compute the binary size of the PtNode count for a node array.
-     * @param nodeArray the nodeArray
-     * @return the size of the PtNode count, either 1 or 2 bytes.
-     */
-    private static int getPtNodeCountSize(final PtNodeArray nodeArray) {
-        return BinaryDictIOUtils.getPtNodeCountSize(nodeArray.mData.size());
-    }
-
-    /**
-     * Compute the size of a shortcut in bytes.
-     */
-    private static int getShortcutSize(final WeightedString shortcut) {
-        int size = FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE;
-        final String word = shortcut.mWord;
-        final int length = word.length();
-        for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
-            final int codePoint = word.codePointAt(i);
-            size += CharEncoding.getCharSize(codePoint);
-        }
-        size += FormatSpec.PTNODE_TERMINATOR_SIZE;
-        return size;
-    }
-
-    /**
-     * Compute the size of a shortcut list in bytes.
-     *
-     * This is known in advance and does not change according to position in the file
-     * like address lists do.
-     */
-    static int getShortcutListSize(final ArrayList<WeightedString> shortcutList) {
-        if (null == shortcutList || shortcutList.isEmpty()) return 0;
-        int size = FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE;
-        for (final WeightedString shortcut : shortcutList) {
-            size += getShortcutSize(shortcut);
-        }
-        return size;
-    }
-
-    /**
-     * Compute the maximum size of a PtNode, assuming 3-byte addresses for everything.
-     *
-     * @param ptNode the PtNode to compute the size of.
-     * @param options file format options.
-     * @return the maximum size of the PtNode.
-     */
-    private static int getPtNodeMaximumSize(final PtNode ptNode, final FormatOptions options) {
-        int size = getNodeHeaderSize(ptNode, options);
-        if (ptNode.isTerminal()) {
-            // If terminal, one byte for the frequency or four bytes for the terminal id.
-            if (options.mHasTerminalId) {
-                size += FormatSpec.PTNODE_TERMINAL_ID_SIZE;
-            } else {
-                size += FormatSpec.PTNODE_FREQUENCY_SIZE;
-            }
-        }
-        size += FormatSpec.PTNODE_MAX_ADDRESS_SIZE; // For children address
-        size += getShortcutListSize(ptNode.mShortcutTargets);
-        if (null != ptNode.mBigrams) {
-            size += (FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE
-                    + FormatSpec.PTNODE_ATTRIBUTE_MAX_ADDRESS_SIZE)
-                    * ptNode.mBigrams.size();
-        }
-        return size;
-    }
-
-    /**
-     * Compute the maximum size of each PtNode of a PtNode array, assuming 3-byte addresses for
-     * everything, and caches it in the `mCachedSize' member of the nodes; deduce the size of
-     * the containing node array, and cache it it its 'mCachedSize' member.
-     *
-     * @param ptNodeArray the node array to compute the maximum size of.
-     * @param options file format options.
-     */
-    private static void calculatePtNodeArrayMaximumSize(final PtNodeArray ptNodeArray,
-            final FormatOptions options) {
-        int size = getPtNodeCountSize(ptNodeArray);
-        for (PtNode node : ptNodeArray.mData) {
-            final int nodeSize = getPtNodeMaximumSize(node, options);
-            node.mCachedSize = nodeSize;
-            size += nodeSize;
-        }
-        if (options.mSupportsDynamicUpdate) {
-            size += FormatSpec.FORWARD_LINK_ADDRESS_SIZE;
-        }
-        ptNodeArray.mCachedSize = size;
-    }
-
-    /**
-     * Compute the size of the header (flag + [parent address] + characters size) of a PtNode.
-     *
-     * @param ptNode the PtNode of which to compute the size of the header
-     * @param options file format options.
-     */
-    private static int getNodeHeaderSize(final PtNode ptNode, final FormatOptions options) {
-        if (BinaryDictIOUtils.supportsDynamicUpdate(options)) {
-            return FormatSpec.PTNODE_FLAGS_SIZE + FormatSpec.PARENT_ADDRESS_SIZE
-                    + getPtNodeCharactersSize(ptNode);
-        } else {
-            return FormatSpec.PTNODE_FLAGS_SIZE + getPtNodeCharactersSize(ptNode);
-        }
-    }
-
-    /**
-     * Compute the size, in bytes, that an address will occupy.
-     *
-     * This can be used either for children addresses (which are always positive) or for
-     * attribute, which may be positive or negative but
-     * store their sign bit separately.
-     *
-     * @param address the address
-     * @return the byte size.
-     */
-    static int getByteSize(final int address) {
-        assert(address <= FormatSpec.UINT24_MAX);
-        if (!BinaryDictIOUtils.hasChildrenAddress(address)) {
-            return 0;
-        } else if (Math.abs(address) <= FormatSpec.UINT8_MAX) {
-            return 1;
-        } else if (Math.abs(address) <= FormatSpec.UINT16_MAX) {
-            return 2;
-        } else {
-            return 3;
-        }
-    }
-
-    static int writeUIntToBuffer(final byte[] buffer, int position, final int value,
-            final int size) {
-        switch(size) {
-            case 4:
-                buffer[position++] = (byte) ((value >> 24) & 0xFF);
-                /* fall through */
-            case 3:
-                buffer[position++] = (byte) ((value >> 16) & 0xFF);
-                /* fall through */
-            case 2:
-                buffer[position++] = (byte) ((value >> 8) & 0xFF);
-                /* fall through */
-            case 1:
-                buffer[position++] = (byte) (value & 0xFF);
-                break;
-            default:
-                /* nop */
-        }
-        return position;
-    }
-
-    static void writeUIntToStream(final OutputStream stream, final int value, final int size)
-            throws IOException {
-        switch(size) {
-            case 4:
-                stream.write((value >> 24) & 0xFF);
-                /* fall through */
-            case 3:
-                stream.write((value >> 16) & 0xFF);
-                /* fall through */
-            case 2:
-                stream.write((value >> 8) & 0xFF);
-                /* fall through */
-            case 1:
-                stream.write(value & 0xFF);
-                break;
-            default:
-                /* nop */
-        }
-    }
-
-    // End utility methods
-
-    // This method is responsible for finding a nice ordering of the nodes that favors run-time
-    // cache performance and dictionary size.
-    /* package for tests */ static ArrayList<PtNodeArray> flattenTree(
-            final PtNodeArray rootNodeArray) {
-        final int treeSize = FusionDictionary.countPtNodes(rootNodeArray);
-        MakedictLog.i("Counted nodes : " + treeSize);
-        final ArrayList<PtNodeArray> flatTree = new ArrayList<PtNodeArray>(treeSize);
-        return flattenTreeInner(flatTree, rootNodeArray);
-    }
-
-    private static ArrayList<PtNodeArray> flattenTreeInner(final ArrayList<PtNodeArray> list,
-            final PtNodeArray ptNodeArray) {
-        // Removing the node is necessary if the tails are merged, because we would then
-        // add the same node several times when we only want it once. A number of places in
-        // the code also depends on any node being only once in the list.
-        // Merging tails can only be done if there are no attributes. Searching for attributes
-        // in LatinIME code depends on a total breadth-first ordering, which merging tails
-        // breaks. If there are no attributes, it should be fine (and reduce the file size)
-        // to merge tails, and removing the node from the list would be necessary. However,
-        // we don't merge tails because breaking the breadth-first ordering would result in
-        // extreme overhead at bigram lookup time (it would make the search function O(n) instead
-        // of the current O(log(n)), where n=number of nodes in the dictionary which is pretty
-        // high).
-        // If no nodes are ever merged, we can't have the same node twice in the list, hence
-        // searching for duplicates in unnecessary. It is also very performance consuming,
-        // since `list' is an ArrayList so it's an O(n) operation that runs on all nodes, making
-        // this simple list.remove operation O(n*n) overall. On Android this overhead is very
-        // high.
-        // For future reference, the code to remove duplicate is a simple : list.remove(node);
-        list.add(ptNodeArray);
-        final ArrayList<PtNode> branches = ptNodeArray.mData;
-        for (PtNode ptNode : branches) {
-            if (null != ptNode.mChildren) flattenTreeInner(list, ptNode.mChildren);
-        }
-        return list;
-    }
-
-    /**
-     * Get the offset from a position inside a current node array to a target node array, during
-     * update.
-     *
-     * If the current node array is before the target node array, the target node array has not
-     * been updated yet, so we should return the offset from the old position of the current node
-     * array to the old position of the target node array. If on the other hand the target is
-     * before the current node array, it already has been updated, so we should return the offset
-     * from the new position in the current node array to the new position in the target node
-     * array.
-     *
-     * @param currentNodeArray node array containing the PtNode where the offset will be written
-     * @param offsetFromStartOfCurrentNodeArray offset, in bytes, from the start of currentNodeArray
-     * @param targetNodeArray the target node array to get the offset to
-     * @return the offset to the target node array
-     */
-    private static int getOffsetToTargetNodeArrayDuringUpdate(final PtNodeArray currentNodeArray,
-            final int offsetFromStartOfCurrentNodeArray, final PtNodeArray targetNodeArray) {
-        final boolean isTargetBeforeCurrent = (targetNodeArray.mCachedAddressBeforeUpdate
-                < currentNodeArray.mCachedAddressBeforeUpdate);
-        if (isTargetBeforeCurrent) {
-            return targetNodeArray.mCachedAddressAfterUpdate
-                    - (currentNodeArray.mCachedAddressAfterUpdate
-                            + offsetFromStartOfCurrentNodeArray);
-        } else {
-            return targetNodeArray.mCachedAddressBeforeUpdate
-                    - (currentNodeArray.mCachedAddressBeforeUpdate
-                            + offsetFromStartOfCurrentNodeArray);
-        }
-    }
-
-    /**
-     * Get the offset from a position inside a current node array to a target PtNode, during
-     * update.
-     *
-     * @param currentNodeArray node array containing the PtNode where the offset will be written
-     * @param offsetFromStartOfCurrentNodeArray offset, in bytes, from the start of currentNodeArray
-     * @param targetPtNode the target PtNode to get the offset to
-     * @return the offset to the target PtNode
-     */
-    // TODO: is there any way to factorize this method with the one above?
-    private static int getOffsetToTargetPtNodeDuringUpdate(final PtNodeArray currentNodeArray,
-            final int offsetFromStartOfCurrentNodeArray, final PtNode targetPtNode) {
-        final int oldOffsetBasePoint = currentNodeArray.mCachedAddressBeforeUpdate
-                + offsetFromStartOfCurrentNodeArray;
-        final boolean isTargetBeforeCurrent = (targetPtNode.mCachedAddressBeforeUpdate
-                < oldOffsetBasePoint);
-        // If the target is before the current node array, then its address has already been
-        // updated. We can use the AfterUpdate member, and compare it to our own member after
-        // update. Otherwise, the AfterUpdate member is not updated yet, so we need to use the
-        // BeforeUpdate member, and of course we have to compare this to our own address before
-        // update.
-        if (isTargetBeforeCurrent) {
-            final int newOffsetBasePoint = currentNodeArray.mCachedAddressAfterUpdate
-                    + offsetFromStartOfCurrentNodeArray;
-            return targetPtNode.mCachedAddressAfterUpdate - newOffsetBasePoint;
-        } else {
-            return targetPtNode.mCachedAddressBeforeUpdate - oldOffsetBasePoint;
-        }
-    }
-
-    /**
-     * Computes the actual node array size, based on the cached addresses of the children nodes.
-     *
-     * Each node array stores its tentative address. During dictionary address computing, these
-     * are not final, but they can be used to compute the node array size (the node array size
-     * depends on the address of the children because the number of bytes necessary to store an
-     * address depends on its numeric value. The return value indicates whether the node array
-     * contents (as in, any of the addresses stored in the cache fields) have changed with
-     * respect to their previous value.
-     *
-     * @param ptNodeArray the node array to compute the size of.
-     * @param dict the dictionary in which the word/attributes are to be found.
-     * @param formatOptions file format options.
-     * @return false if none of the cached addresses inside the node array changed, true otherwise.
-     */
-    private static boolean computeActualPtNodeArraySize(final PtNodeArray ptNodeArray,
-            final FusionDictionary dict, final FormatOptions formatOptions) {
-        boolean changed = false;
-        int size = getPtNodeCountSize(ptNodeArray);
-        for (PtNode ptNode : ptNodeArray.mData) {
-            ptNode.mCachedAddressAfterUpdate = ptNodeArray.mCachedAddressAfterUpdate + size;
-            if (ptNode.mCachedAddressAfterUpdate != ptNode.mCachedAddressBeforeUpdate) {
-                changed = true;
-            }
-            int nodeSize = getNodeHeaderSize(ptNode, formatOptions);
-            if (ptNode.isTerminal()) {
-                if (formatOptions.mHasTerminalId) {
-                    nodeSize += FormatSpec.PTNODE_TERMINAL_ID_SIZE;
-                } else {
-                    nodeSize += FormatSpec.PTNODE_FREQUENCY_SIZE;
-                }
-            }
-            if (formatOptions.mSupportsDynamicUpdate) {
-                nodeSize += FormatSpec.SIGNED_CHILDREN_ADDRESS_SIZE;
-            } else if (null != ptNode.mChildren) {
-                nodeSize += getByteSize(getOffsetToTargetNodeArrayDuringUpdate(ptNodeArray,
-                        nodeSize + size, ptNode.mChildren));
-            }
-            if (formatOptions.mVersion < FormatSpec.FIRST_VERSION_WITH_TERMINAL_ID) {
-                nodeSize += getShortcutListSize(ptNode.mShortcutTargets);
-                if (null != ptNode.mBigrams) {
-                    for (WeightedString bigram : ptNode.mBigrams) {
-                        final int offset = getOffsetToTargetPtNodeDuringUpdate(ptNodeArray,
-                                nodeSize + size + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE,
-                                FusionDictionary.findWordInTree(dict.mRootNodeArray, bigram.mWord));
-                        nodeSize += getByteSize(offset) + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE;
-                    }
-                }
-            }
-            ptNode.mCachedSize = nodeSize;
-            size += nodeSize;
-        }
-        if (formatOptions.mSupportsDynamicUpdate) {
-            size += FormatSpec.FORWARD_LINK_ADDRESS_SIZE;
-        }
-        if (ptNodeArray.mCachedSize != size) {
-            ptNodeArray.mCachedSize = size;
-            changed = true;
-        }
-        return changed;
-    }
-
-    /**
-     * Initializes the cached addresses of node arrays and their containing nodes from their size.
-     *
-     * @param flatNodes the list of node arrays.
-     * @param formatOptions file format options.
-     * @return the byte size of the entire stack.
-     */
-    private static int initializePtNodeArraysCachedAddresses(final ArrayList<PtNodeArray> flatNodes,
-            final FormatOptions formatOptions) {
-        int nodeArrayOffset = 0;
-        for (final PtNodeArray nodeArray : flatNodes) {
-            nodeArray.mCachedAddressBeforeUpdate = nodeArrayOffset;
-            int nodeCountSize = getPtNodeCountSize(nodeArray);
-            int nodeffset = 0;
-            for (final PtNode ptNode : nodeArray.mData) {
-                ptNode.mCachedAddressBeforeUpdate = ptNode.mCachedAddressAfterUpdate =
-                        nodeCountSize + nodeArrayOffset + nodeffset;
-                nodeffset += ptNode.mCachedSize;
-            }
-            nodeArrayOffset += nodeArray.mCachedSize;
-        }
-        return nodeArrayOffset;
-    }
-
-    /**
-     * Updates the cached addresses of node arrays after recomputing their new positions.
-     *
-     * @param flatNodes the list of node arrays.
-     */
-    private static void updatePtNodeArraysCachedAddresses(final ArrayList<PtNodeArray> flatNodes) {
-        for (final PtNodeArray nodeArray : flatNodes) {
-            nodeArray.mCachedAddressBeforeUpdate = nodeArray.mCachedAddressAfterUpdate;
-            for (final PtNode ptNode : nodeArray.mData) {
-                ptNode.mCachedAddressBeforeUpdate = ptNode.mCachedAddressAfterUpdate;
-            }
-        }
-    }
-
-    /**
-     * Compute the cached parent addresses after all has been updated.
-     *
-     * The parent addresses are used by some binary formats at write-to-disk time. Not all formats
-     * need them. In particular, version 2 does not need them, and version 3 does.
-     *
-     * @param flatNodes the flat array of node arrays to fill in
-     */
-    private static void computeParentAddresses(final ArrayList<PtNodeArray> flatNodes) {
-        for (final PtNodeArray nodeArray : flatNodes) {
-            for (final PtNode ptNode : nodeArray.mData) {
-                if (null != ptNode.mChildren) {
-                    // Assign my address to children's parent address
-                    // Here BeforeUpdate and AfterUpdate addresses have the same value, so it
-                    // does not matter which we use.
-                    ptNode.mChildren.mCachedParentAddress = ptNode.mCachedAddressAfterUpdate
-                            - ptNode.mChildren.mCachedAddressAfterUpdate;
-                }
-            }
-        }
-    }
-
-    /**
-     * Compute the addresses and sizes of an ordered list of PtNode arrays.
-     *
-     * This method takes a list of PtNode arrays and will update their cached address and size
-     * values so that they can be written into a file. It determines the smallest size each of the
-     * PtNode arrays can be given the addresses of its children and attributes, and store that into
-     * each PtNode.
-     * The order of the PtNode is given by the order of the array. This method makes no effort
-     * to find a good order; it only mechanically computes the size this order results in.
-     *
-     * @param dict the dictionary
-     * @param flatNodes the ordered list of PtNode arrays
-     * @param formatOptions file format options.
-     * @return the same array it was passed. The nodes have been updated for address and size.
-     */
-    /* package */ static ArrayList<PtNodeArray> computeAddresses(final FusionDictionary dict,
-            final ArrayList<PtNodeArray> flatNodes, final FormatOptions formatOptions) {
-        // First get the worst possible sizes and offsets
-        for (final PtNodeArray n : flatNodes) calculatePtNodeArrayMaximumSize(n, formatOptions);
-        final int offset = initializePtNodeArraysCachedAddresses(flatNodes, formatOptions);
-
-        MakedictLog.i("Compressing the array addresses. Original size : " + offset);
-        MakedictLog.i("(Recursively seen size : " + offset + ")");
-
-        int passes = 0;
-        boolean changesDone = false;
-        do {
-            changesDone = false;
-            int ptNodeArrayStartOffset = 0;
-            for (final PtNodeArray ptNodeArray : flatNodes) {
-                ptNodeArray.mCachedAddressAfterUpdate = ptNodeArrayStartOffset;
-                final int oldNodeArraySize = ptNodeArray.mCachedSize;
-                final boolean changed =
-                        computeActualPtNodeArraySize(ptNodeArray, dict, formatOptions);
-                final int newNodeArraySize = ptNodeArray.mCachedSize;
-                if (oldNodeArraySize < newNodeArraySize) {
-                    throw new RuntimeException("Increased size ?!");
-                }
-                ptNodeArrayStartOffset += newNodeArraySize;
-                changesDone |= changed;
-            }
-            updatePtNodeArraysCachedAddresses(flatNodes);
-            ++passes;
-            if (passes > MAX_PASSES) throw new RuntimeException("Too many passes - probably a bug");
-        } while (changesDone);
-
-        if (formatOptions.mSupportsDynamicUpdate) {
-            computeParentAddresses(flatNodes);
-        }
-        final PtNodeArray lastPtNodeArray = flatNodes.get(flatNodes.size() - 1);
-        MakedictLog.i("Compression complete in " + passes + " passes.");
-        MakedictLog.i("After address compression : "
-                + (lastPtNodeArray.mCachedAddressAfterUpdate + lastPtNodeArray.mCachedSize));
-
-        return flatNodes;
-    }
-
-    /**
-     * Sanity-checking method.
-     *
-     * This method checks a list of PtNode arrays for juxtaposition, that is, it will do
-     * nothing if each node array's cached address is actually the previous node array's address
-     * plus the previous node's size.
-     * If this is not the case, it will throw an exception.
-     *
-     * @param arrays the list of node arrays to check
-     */
-    /* package */ static void checkFlatPtNodeArrayList(final ArrayList<PtNodeArray> arrays) {
-        int offset = 0;
-        int index = 0;
-        for (final PtNodeArray ptNodeArray : arrays) {
-            // BeforeUpdate and AfterUpdate addresses are the same here, so it does not matter
-            // which we use.
-            if (ptNodeArray.mCachedAddressAfterUpdate != offset) {
-                throw new RuntimeException("Wrong address for node " + index
-                        + " : expected " + offset + ", got " +
-                        ptNodeArray.mCachedAddressAfterUpdate);
-            }
-            ++index;
-            offset += ptNodeArray.mCachedSize;
-        }
-    }
-
-    /**
-     * Helper method to write a children position to a file.
-     *
-     * @param buffer the buffer to write to.
-     * @param index the index in the buffer to write the address to.
-     * @param position the position to write.
-     * @return the size in bytes the address actually took.
-     */
-    /* package */ static int writeChildrenPosition(final byte[] buffer, int index,
-            final int position) {
-        switch (getByteSize(position)) {
-        case 1:
-            buffer[index++] = (byte)position;
-            return 1;
-        case 2:
-            buffer[index++] = (byte)(0xFF & (position >> 8));
-            buffer[index++] = (byte)(0xFF & position);
-            return 2;
-        case 3:
-            buffer[index++] = (byte)(0xFF & (position >> 16));
-            buffer[index++] = (byte)(0xFF & (position >> 8));
-            buffer[index++] = (byte)(0xFF & position);
-            return 3;
-        case 0:
-            return 0;
-        default:
-            throw new RuntimeException("Position " + position + " has a strange size");
-        }
-    }
-
-    /**
-     * Helper method to write a signed children position to a file.
-     *
-     * @param buffer the buffer to write to.
-     * @param index the index in the buffer to write the address to.
-     * @param position the position to write.
-     * @return the size in bytes the address actually took.
-     */
-    /* package */ static int writeSignedChildrenPosition(final byte[] buffer, int index,
-            final int position) {
-        if (!BinaryDictIOUtils.hasChildrenAddress(position)) {
-            buffer[index] = buffer[index + 1] = buffer[index + 2] = 0;
-        } else {
-            final int absPosition = Math.abs(position);
-            buffer[index++] =
-                    (byte)((position < 0 ? FormatSpec.MSB8 : 0) | (0xFF & (absPosition >> 16)));
-            buffer[index++] = (byte)(0xFF & (absPosition >> 8));
-            buffer[index++] = (byte)(0xFF & absPosition);
-        }
-        return 3;
-    }
-
-    /**
-     * Makes the flag value for a PtNode.
-     *
-     * @param hasMultipleChars whether the PtNode has multiple chars.
-     * @param isTerminal whether the PtNode is terminal.
-     * @param childrenAddressSize the size of a children address.
-     * @param hasShortcuts whether the PtNode has shortcuts.
-     * @param hasBigrams whether the PtNode has bigrams.
-     * @param isNotAWord whether the PtNode is not a word.
-     * @param isBlackListEntry whether the PtNode is a blacklist entry.
-     * @param formatOptions file format options.
-     * @return the flags
-     */
-    static int makePtNodeFlags(final boolean hasMultipleChars, final boolean isTerminal,
-            final int childrenAddressSize, final boolean hasShortcuts, final boolean hasBigrams,
-            final boolean isNotAWord, final boolean isBlackListEntry,
-            final FormatOptions formatOptions) {
-        byte flags = 0;
-        if (hasMultipleChars) flags |= FormatSpec.FLAG_HAS_MULTIPLE_CHARS;
-        if (isTerminal) flags |= FormatSpec.FLAG_IS_TERMINAL;
-        if (formatOptions.mSupportsDynamicUpdate) {
-            flags |= FormatSpec.FLAG_IS_NOT_MOVED;
-        } else if (true) {
-            switch (childrenAddressSize) {
-                case 1:
-                    flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE;
-                    break;
-                case 2:
-                    flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES;
-                    break;
-                case 3:
-                    flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES;
-                    break;
-                case 0:
-                    flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS;
-                    break;
-                default:
-                    throw new RuntimeException("Node with a strange address");
-            }
-        }
-        if (hasShortcuts) flags |= FormatSpec.FLAG_HAS_SHORTCUT_TARGETS;
-        if (hasBigrams) flags |= FormatSpec.FLAG_HAS_BIGRAMS;
-        if (isNotAWord) flags |= FormatSpec.FLAG_IS_NOT_A_WORD;
-        if (isBlackListEntry) flags |= FormatSpec.FLAG_IS_BLACKLISTED;
-        return flags;
-    }
-
-    /* package */ static byte makePtNodeFlags(final PtNode node, final int childrenOffset,
-            final FormatOptions formatOptions) {
-        return (byte) makePtNodeFlags(node.mChars.length > 1, node.mFrequency >= 0,
-                getByteSize(childrenOffset),
-                node.mShortcutTargets != null && !node.mShortcutTargets.isEmpty(),
-                node.mBigrams != null, node.mIsNotAWord, node.mIsBlacklistEntry, formatOptions);
-    }
-
-    /**
-     * Makes the flag value for a bigram.
-     *
-     * @param more whether there are more bigrams after this one.
-     * @param offset the offset of the bigram.
-     * @param bigramFrequency the frequency of the bigram, 0..255.
-     * @param unigramFrequency the unigram frequency of the same word, 0..255.
-     * @param word the second bigram, for debugging purposes
-     * @return the flags
-     */
-    /* package */ static final int makeBigramFlags(final boolean more, final int offset,
-            int bigramFrequency, final int unigramFrequency, final String word) {
-        int bigramFlags = (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
-                + (offset < 0 ? FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE : 0);
-        switch (getByteSize(offset)) {
-        case 1:
-            bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE;
-            break;
-        case 2:
-            bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES;
-            break;
-        case 3:
-            bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES;
-            break;
-        default:
-            throw new RuntimeException("Strange offset size");
-        }
-        if (unigramFrequency > bigramFrequency) {
-            MakedictLog.e("Unigram freq is superior to bigram freq for \"" + word
-                    + "\". Bigram freq is " + bigramFrequency + ", unigram freq for "
-                    + word + " is " + unigramFrequency);
-            bigramFrequency = unigramFrequency;
-        }
-        // We compute the difference between 255 (which means probability = 1) and the
-        // unigram score. We split this into a number of discrete steps.
-        // Now, the steps are numbered 0~15; 0 represents an increase of 1 step while 15
-        // represents an increase of 16 steps: a value of 15 will be interpreted as the median
-        // value of the 16th step. In all justice, if the bigram frequency is low enough to be
-        // rounded below the first step (which means it is less than half a step higher than the
-        // unigram frequency) then the unigram frequency itself is the best approximation of the
-        // bigram freq that we could possibly supply, hence we should *not* include this bigram
-        // in the file at all.
-        // until this is done, we'll write 0 and slightly overestimate this case.
-        // In other words, 0 means "between 0.5 step and 1.5 step", 1 means "between 1.5 step
-        // and 2.5 steps", and 15 means "between 15.5 steps and 16.5 steps". So we want to
-        // divide our range [unigramFreq..MAX_TERMINAL_FREQUENCY] in 16.5 steps to get the
-        // step size. Then we compute the start of the first step (the one where value 0 starts)
-        // by adding half-a-step to the unigramFrequency. From there, we compute the integer
-        // number of steps to the bigramFrequency. One last thing: we want our steps to include
-        // their lower bound and exclude their higher bound so we need to have the first step
-        // start at exactly 1 unit higher than floor(unigramFreq + half a step).
-        // Note : to reconstruct the score, the dictionary reader will need to divide
-        // MAX_TERMINAL_FREQUENCY - unigramFreq by 16.5 likewise to get the value of the step,
-        // and add (discretizedFrequency + 0.5 + 0.5) times this value to get the best
-        // approximation. (0.5 to get the first step start, and 0.5 to get the middle of the
-        // step pointed by the discretized frequency.
-        final float stepSize =
-                (FormatSpec.MAX_TERMINAL_FREQUENCY - unigramFrequency)
-                / (1.5f + FormatSpec.MAX_BIGRAM_FREQUENCY);
-        final float firstStepStart = 1 + unigramFrequency + (stepSize / 2.0f);
-        final int discretizedFrequency = (int)((bigramFrequency - firstStepStart) / stepSize);
-        // If the bigram freq is less than half-a-step higher than the unigram freq, we get -1
-        // here. The best approximation would be the unigram freq itself, so we should not
-        // include this bigram in the dictionary. For now, register as 0, and live with the
-        // small over-estimation that we get in this case. TODO: actually remove this bigram
-        // if discretizedFrequency < 0.
-        final int finalBigramFrequency = discretizedFrequency > 0 ? discretizedFrequency : 0;
-        bigramFlags += finalBigramFrequency & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY;
-        return bigramFlags;
-    }
-
-    /**
-     * Makes the 2-byte value for options flags.
-     */
-    private static final int makeOptionsValue(final FusionDictionary dictionary,
-            final FormatOptions formatOptions) {
-        final DictionaryOptions options = dictionary.mOptions;
-        final boolean hasBigrams = dictionary.hasBigrams();
-        return (options.mFrenchLigatureProcessing ? FormatSpec.FRENCH_LIGATURE_PROCESSING_FLAG : 0)
-                + (options.mGermanUmlautProcessing ? FormatSpec.GERMAN_UMLAUT_PROCESSING_FLAG : 0)
-                + (hasBigrams ? FormatSpec.CONTAINS_BIGRAMS_FLAG : 0)
-                + (formatOptions.mSupportsDynamicUpdate ? FormatSpec.SUPPORTS_DYNAMIC_UPDATE : 0);
-    }
-
-    /**
-     * Makes the flag value for a shortcut.
-     *
-     * @param more whether there are more attributes after this one.
-     * @param frequency the frequency of the attribute, 0..15
-     * @return the flags
-     */
-    static final int makeShortcutFlags(final boolean more, final int frequency) {
-        return (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
-                + (frequency & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY);
-    }
-
-    /* package */ static final int writeParentAddress(final byte[] buffer, final int index,
-            final int address, final FormatOptions formatOptions) {
-        if (BinaryDictIOUtils.supportsDynamicUpdate(formatOptions)) {
-            if (address == FormatSpec.NO_PARENT_ADDRESS) {
-                buffer[index] = buffer[index + 1] = buffer[index + 2] = 0;
-            } else {
-                final int absAddress = Math.abs(address);
-                assert(absAddress <= FormatSpec.SINT24_MAX);
-                buffer[index] = (byte)((address < 0 ? FormatSpec.MSB8 : 0)
-                        | ((absAddress >> 16) & 0xFF));
-                buffer[index + 1] = (byte)((absAddress >> 8) & 0xFF);
-                buffer[index + 2] = (byte)(absAddress & 0xFF);
-            }
-            return index + 3;
-        } else {
-            return index;
-        }
-    }
-
-    /* package */ static final int getChildrenPosition(final PtNode ptNode,
-            final FormatOptions formatOptions) {
-        int positionOfChildrenPosField = ptNode.mCachedAddressAfterUpdate
-                + getNodeHeaderSize(ptNode, formatOptions);
-        if (ptNode.isTerminal()) {
-            // A terminal node has either the terminal id or the frequency.
-            // If positionOfChildrenPosField is incorrect, we may crash when jumping to the children
-            // position.
-            if (formatOptions.mHasTerminalId) {
-                positionOfChildrenPosField += FormatSpec.PTNODE_TERMINAL_ID_SIZE;
-            } else {
-                positionOfChildrenPosField += FormatSpec.PTNODE_FREQUENCY_SIZE;
-            }
-        }
-        return null == ptNode.mChildren ? FormatSpec.NO_CHILDREN_ADDRESS
-                : ptNode.mChildren.mCachedAddressAfterUpdate - positionOfChildrenPosField;
-    }
-
-    /**
-     * Write a PtNodeArray. The PtNodeArray is expected to have its final position cached.
-     *
-     * @param dict the dictionary the node array is a part of (for relative offsets).
-     * @param dictEncoder the dictionary encoder.
-     * @param ptNodeArray the node array to write.
-     * @param formatOptions file format options.
-     */
-    @SuppressWarnings("unused")
-    /* package */ static void writePlacedPtNodeArray(final FusionDictionary dict,
-            final DictEncoder dictEncoder, final PtNodeArray ptNodeArray,
-            final FormatOptions formatOptions) {
-        // TODO: Make the code in common with BinaryDictIOUtils#writePtNode
-        dictEncoder.setPosition(ptNodeArray.mCachedAddressAfterUpdate);
-
-        final int ptNodeCount = ptNodeArray.mData.size();
-        dictEncoder.writePtNodeCount(ptNodeCount);
-        final int parentPosition =
-                (ptNodeArray.mCachedParentAddress == FormatSpec.NO_PARENT_ADDRESS)
-                ? FormatSpec.NO_PARENT_ADDRESS
-                : ptNodeArray.mCachedParentAddress + ptNodeArray.mCachedAddressAfterUpdate;
-        for (int i = 0; i < ptNodeCount; ++i) {
-            final PtNode ptNode = ptNodeArray.mData.get(i);
-            if (dictEncoder.getPosition() != ptNode.mCachedAddressAfterUpdate) {
-                throw new RuntimeException("Bug: write index is not the same as the cached address "
-                        + "of the node : " + dictEncoder.getPosition() + " <> "
-                        + ptNode.mCachedAddressAfterUpdate);
-            }
-            // Sanity checks.
-            if (DBG && ptNode.mFrequency > FormatSpec.MAX_TERMINAL_FREQUENCY) {
-                throw new RuntimeException("A node has a frequency > "
-                        + FormatSpec.MAX_TERMINAL_FREQUENCY
-                        + " : " + ptNode.mFrequency);
-            }
-            dictEncoder.writePtNode(ptNode, parentPosition, formatOptions, dict);
-        }
-        if (formatOptions.mSupportsDynamicUpdate) {
-            dictEncoder.writeForwardLinkAddress(FormatSpec.NO_FORWARD_LINK_ADDRESS);
-        }
-        if (dictEncoder.getPosition() != ptNodeArray.mCachedAddressAfterUpdate
-                + ptNodeArray.mCachedSize) {
-            throw new RuntimeException("Not the same size : written "
-                     + (dictEncoder.getPosition() - ptNodeArray.mCachedAddressAfterUpdate)
-                     + " bytes from a node that should have " + ptNodeArray.mCachedSize + " bytes");
-        }
-    }
-
-    /**
-     * Dumps a collection of useful statistics about a list of PtNode arrays.
-     *
-     * This prints purely informative stuff, like the total estimated file size, the
-     * number of PtNode arrays, of PtNodes, the repartition of each address size, etc
-     *
-     * @param ptNodeArrays the list of PtNode arrays.
-     */
-    /* package */ static void showStatistics(ArrayList<PtNodeArray> ptNodeArrays) {
-        int firstTerminalAddress = Integer.MAX_VALUE;
-        int lastTerminalAddress = Integer.MIN_VALUE;
-        int size = 0;
-        int ptNodes = 0;
-        int maxNodes = 0;
-        int maxRuns = 0;
-        for (final PtNodeArray ptNodeArray : ptNodeArrays) {
-            if (maxNodes < ptNodeArray.mData.size()) maxNodes = ptNodeArray.mData.size();
-            for (final PtNode ptNode : ptNodeArray.mData) {
-                ++ptNodes;
-                if (ptNode.mChars.length > maxRuns) maxRuns = ptNode.mChars.length;
-                if (ptNode.mFrequency >= 0) {
-                    if (ptNodeArray.mCachedAddressAfterUpdate < firstTerminalAddress)
-                        firstTerminalAddress = ptNodeArray.mCachedAddressAfterUpdate;
-                    if (ptNodeArray.mCachedAddressAfterUpdate > lastTerminalAddress)
-                        lastTerminalAddress = ptNodeArray.mCachedAddressAfterUpdate;
-                }
-            }
-            if (ptNodeArray.mCachedAddressAfterUpdate + ptNodeArray.mCachedSize > size) {
-                size = ptNodeArray.mCachedAddressAfterUpdate + ptNodeArray.mCachedSize;
-            }
-        }
-        final int[] ptNodeCounts = new int[maxNodes + 1];
-        final int[] runCounts = new int[maxRuns + 1];
-        for (final PtNodeArray ptNodeArray : ptNodeArrays) {
-            ++ptNodeCounts[ptNodeArray.mData.size()];
-            for (final PtNode ptNode : ptNodeArray.mData) {
-                ++runCounts[ptNode.mChars.length];
-            }
-        }
-
-        MakedictLog.i("Statistics:\n"
-                + "  total file size " + size + "\n"
-                + "  " + ptNodeArrays.size() + " node arrays\n"
-                + "  " + ptNodes + " PtNodes (" + ((float)ptNodes / ptNodeArrays.size())
-                        + " PtNodes per node)\n"
-                + "  first terminal at " + firstTerminalAddress + "\n"
-                + "  last terminal at " + lastTerminalAddress + "\n"
-                + "  PtNode stats : max = " + maxNodes);
-        for (int i = 0; i < ptNodeCounts.length; ++i) {
-            MakedictLog.i("    " + i + " : " + ptNodeCounts[i]);
-        }
-        MakedictLog.i("  Character run stats : max = " + maxRuns);
-        for (int i = 0; i < runCounts.length; ++i) {
-            MakedictLog.i("    " + i + " : " + runCounts[i]);
-        }
-    }
-
-    /**
-     * Writes a file header to an output stream.
-     *
-     * @param destination the stream to write the file header to.
-     * @param dict the dictionary to write.
-     * @param formatOptions file format options.
-     * @return the size of the header.
-     */
-    /* package */ static int writeDictionaryHeader(final OutputStream destination,
-            final FusionDictionary dict, final FormatOptions formatOptions)
-                    throws IOException, UnsupportedFormatException {
-        final int version = formatOptions.mVersion;
-        if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
-                || version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
-            throw new UnsupportedFormatException("Requested file format version " + version
-                    + ", but this implementation only supports versions "
-                    + FormatSpec.MINIMUM_SUPPORTED_VERSION + " through "
-                    + FormatSpec.MAXIMUM_SUPPORTED_VERSION);
-        }
-
-        ByteArrayOutputStream headerBuffer = new ByteArrayOutputStream(256);
-
-        // The magic number in big-endian order.
-        // Magic number for all versions.
-        headerBuffer.write((byte) (0xFF & (FormatSpec.MAGIC_NUMBER >> 24)));
-        headerBuffer.write((byte) (0xFF & (FormatSpec.MAGIC_NUMBER >> 16)));
-        headerBuffer.write((byte) (0xFF & (FormatSpec.MAGIC_NUMBER >> 8)));
-        headerBuffer.write((byte) (0xFF & FormatSpec.MAGIC_NUMBER));
-        // Dictionary version.
-        headerBuffer.write((byte) (0xFF & (version >> 8)));
-        headerBuffer.write((byte) (0xFF & version));
-
-        // Options flags
-        final int options = makeOptionsValue(dict, formatOptions);
-        headerBuffer.write((byte) (0xFF & (options >> 8)));
-        headerBuffer.write((byte) (0xFF & options));
-        final int headerSizeOffset = headerBuffer.size();
-        // Placeholder to be written later with header size.
-        for (int i = 0; i < 4; ++i) {
-            headerBuffer.write(0);
-        }
-        // Write out the options.
-        for (final String key : dict.mOptions.mAttributes.keySet()) {
-            final String value = dict.mOptions.mAttributes.get(key);
-            CharEncoding.writeString(headerBuffer, key);
-            CharEncoding.writeString(headerBuffer, value);
-        }
-        final int size = headerBuffer.size();
-        final byte[] bytes = headerBuffer.toByteArray();
-        // Write out the header size.
-        bytes[headerSizeOffset] = (byte) (0xFF & (size >> 24));
-        bytes[headerSizeOffset + 1] = (byte) (0xFF & (size >> 16));
-        bytes[headerSizeOffset + 2] = (byte) (0xFF & (size >> 8));
-        bytes[headerSizeOffset + 3] = (byte) (0xFF & (size >> 0));
-        destination.write(bytes);
-
-        headerBuffer.close();
-        return size;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
deleted file mode 100644
index d5516ef..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * 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.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.utils.ByteArrayDictBuffer;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Stack;
-
-public final class BinaryDictIOUtils {
-    private static final boolean DBG = false;
-
-    private BinaryDictIOUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    private static final class Position {
-        public static final int NOT_READ_PTNODE_COUNT = -1;
-
-        public int mAddress;
-        public int mNumOfPtNode;
-        public int mPosition;
-        public int mLength;
-
-        public Position(int address, int length) {
-            mAddress = address;
-            mLength = length;
-            mNumOfPtNode = NOT_READ_PTNODE_COUNT;
-        }
-    }
-
-    /**
-     * Retrieves all node arrays without recursive call.
-     */
-    private static void readUnigramsAndBigramsBinaryInner(final DictDecoder dictDecoder,
-            final int headerSize, final Map<Integer, String> words,
-            final Map<Integer, Integer> frequencies,
-            final Map<Integer, ArrayList<PendingAttribute>> bigrams,
-            final FormatOptions formatOptions) {
-        int[] pushedChars = new int[FormatSpec.MAX_WORD_LENGTH + 1];
-
-        Stack<Position> stack = new Stack<Position>();
-        int index = 0;
-
-        Position initPos = new Position(headerSize, 0);
-        stack.push(initPos);
-
-        while (!stack.empty()) {
-            Position p = stack.peek();
-
-            if (DBG) {
-                MakedictLog.d("read: address=" + p.mAddress + ", numOfPtNode=" +
-                        p.mNumOfPtNode + ", position=" + p.mPosition + ", length=" + p.mLength);
-            }
-
-            if (dictDecoder.getPosition() != p.mAddress) dictDecoder.setPosition(p.mAddress);
-            if (index != p.mLength) index = p.mLength;
-
-            if (p.mNumOfPtNode == Position.NOT_READ_PTNODE_COUNT) {
-                p.mNumOfPtNode = dictDecoder.readPtNodeCount();
-                p.mAddress += getPtNodeCountSize(p.mNumOfPtNode);
-                p.mPosition = 0;
-            }
-            if (p.mNumOfPtNode == 0) {
-                stack.pop();
-                continue;
-            }
-            PtNodeInfo info = dictDecoder.readPtNode(p.mAddress, formatOptions);
-            for (int i = 0; i < info.mCharacters.length; ++i) {
-                pushedChars[index++] = info.mCharacters[i];
-            }
-            p.mPosition++;
-
-            final boolean isMovedPtNode = isMovedPtNode(info.mFlags,
-                    formatOptions);
-            final boolean isDeletedPtNode = isDeletedPtNode(info.mFlags,
-                    formatOptions);
-            if (!isMovedPtNode && !isDeletedPtNode
-                    && info.mFrequency != FusionDictionary.PtNode.NOT_A_TERMINAL) {// found word
-                words.put(info.mOriginalAddress, new String(pushedChars, 0, index));
-                frequencies.put(info.mOriginalAddress, info.mFrequency);
-                if (info.mBigrams != null) bigrams.put(info.mOriginalAddress, info.mBigrams);
-            }
-
-            if (p.mPosition == p.mNumOfPtNode) {
-                if (formatOptions.mSupportsDynamicUpdate) {
-                    final boolean hasValidForwardLinkAddress =
-                            dictDecoder.readAndFollowForwardLink();
-                    if (hasValidForwardLinkAddress && dictDecoder.hasNextPtNodeArray()) {
-                        // The node array has a forward link.
-                        p.mNumOfPtNode = Position.NOT_READ_PTNODE_COUNT;
-                        p.mAddress = dictDecoder.getPosition();
-                    } else {
-                        stack.pop();
-                    }
-                } else {
-                    stack.pop();
-                }
-            } else {
-                // The Ptnode array has more PtNodes.
-                p.mAddress = dictDecoder.getPosition();
-            }
-
-            if (!isMovedPtNode && hasChildrenAddress(info.mChildrenAddress)) {
-                final Position childrenPos = new Position(info.mChildrenAddress, index);
-                stack.push(childrenPos);
-            }
-        }
-    }
-
-    /**
-     * Reads unigrams and bigrams from the binary file.
-     * Doesn't store a full memory representation of the dictionary.
-     *
-     * @param dictDecoder the dict decoder.
-     * @param words the map to store the address as a key and the word as a value.
-     * @param frequencies the map to store the address as a key and the frequency as a value.
-     * @param bigrams the map to store the address as a key and the list of address as a value.
-     * @throws IOException if the file can't be read.
-     * @throws UnsupportedFormatException if the format of the file is not recognized.
-     */
-    /* package */ static void readUnigramsAndBigramsBinary(final DictDecoder dictDecoder,
-            final Map<Integer, String> words, final Map<Integer, Integer> frequencies,
-            final Map<Integer, ArrayList<PendingAttribute>> bigrams) throws IOException,
-            UnsupportedFormatException {
-        // Read header
-        final FileHeader header = dictDecoder.readHeader();
-        readUnigramsAndBigramsBinaryInner(dictDecoder, header.mHeaderSize, words,
-                frequencies, bigrams, header.mFormatOptions);
-    }
-
-    /**
-     * Gets the address of the last PtNode of the exact matching word in the dictionary.
-     * If no match is found, returns NOT_VALID_WORD.
-     *
-     * @param dictDecoder the dict decoder.
-     * @param word the word we search for.
-     * @return the address of the terminal node.
-     * @throws IOException if the file can't be read.
-     * @throws UnsupportedFormatException if the format of the file is not recognized.
-     */
-    @UsedForTesting
-    /* package */ static int getTerminalPosition(final DictDecoder dictDecoder,
-            final String word) throws IOException, UnsupportedFormatException {
-        if (word == null) return FormatSpec.NOT_VALID_WORD;
-        dictDecoder.setPosition(0);
-
-        final FileHeader header = dictDecoder.readHeader();
-        int wordPos = 0;
-        final int wordLen = word.codePointCount(0, word.length());
-        for (int depth = 0; depth < Constants.DICTIONARY_MAX_WORD_LENGTH; ++depth) {
-            if (wordPos >= wordLen) return FormatSpec.NOT_VALID_WORD;
-
-            do {
-                final int ptNodeCount = dictDecoder.readPtNodeCount();
-                boolean foundNextPtNode = false;
-                for (int i = 0; i < ptNodeCount; ++i) {
-                    final int ptNodePos = dictDecoder.getPosition();
-                    final PtNodeInfo currentInfo = dictDecoder.readPtNode(ptNodePos,
-                            header.mFormatOptions);
-                    final boolean isMovedNode = isMovedPtNode(currentInfo.mFlags,
-                            header.mFormatOptions);
-                    final boolean isDeletedNode = isDeletedPtNode(currentInfo.mFlags,
-                            header.mFormatOptions);
-                    if (isMovedNode) continue;
-                    boolean same = true;
-                    for (int p = 0, j = word.offsetByCodePoints(0, wordPos);
-                            p < currentInfo.mCharacters.length;
-                            ++p, j = word.offsetByCodePoints(j, 1)) {
-                        if (wordPos + p >= wordLen
-                                || word.codePointAt(j) != currentInfo.mCharacters[p]) {
-                            same = false;
-                            break;
-                        }
-                    }
-
-                    if (same) {
-                        // found the PtNode matches the word.
-                        if (wordPos + currentInfo.mCharacters.length == wordLen) {
-                            if (currentInfo.mFrequency == PtNode.NOT_A_TERMINAL
-                                    || isDeletedNode) {
-                                return FormatSpec.NOT_VALID_WORD;
-                            } else {
-                                return ptNodePos;
-                            }
-                        }
-                        wordPos += currentInfo.mCharacters.length;
-                        if (currentInfo.mChildrenAddress == FormatSpec.NO_CHILDREN_ADDRESS) {
-                            return FormatSpec.NOT_VALID_WORD;
-                        }
-                        foundNextPtNode = true;
-                        dictDecoder.setPosition(currentInfo.mChildrenAddress);
-                        break;
-                    }
-                }
-
-                // If we found the next PtNode, it is under the file pointer.
-                // But if not, we are at the end of this node array so we expect to have
-                // a forward link address that we need to consult and possibly resume
-                // search on the next node array in the linked list.
-                if (foundNextPtNode) break;
-                if (!header.mFormatOptions.mSupportsDynamicUpdate) {
-                    return FormatSpec.NOT_VALID_WORD;
-                }
-
-                final boolean hasValidForwardLinkAddress =
-                        dictDecoder.readAndFollowForwardLink();
-                if (!hasValidForwardLinkAddress || !dictDecoder.hasNextPtNodeArray()) {
-                    return FormatSpec.NOT_VALID_WORD;
-                }
-            } while(true);
-        }
-        return FormatSpec.NOT_VALID_WORD;
-    }
-
-    /**
-     * @return the size written, in bytes. Always 3 bytes.
-     */
-    static int writeSInt24ToBuffer(final DictBuffer dictBuffer,
-            final int value) {
-        final int absValue = Math.abs(value);
-        dictBuffer.put((byte)(((value < 0 ? 0x80 : 0) | (absValue >> 16)) & 0xFF));
-        dictBuffer.put((byte)((absValue >> 8) & 0xFF));
-        dictBuffer.put((byte)(absValue & 0xFF));
-        return 3;
-    }
-
-    /**
-     * @return the size written, in bytes. Always 3 bytes.
-     */
-    static int writeSInt24ToStream(final OutputStream destination, final int value)
-            throws IOException {
-        final int absValue = Math.abs(value);
-        destination.write((byte)(((value < 0 ? 0x80 : 0) | (absValue >> 16)) & 0xFF));
-        destination.write((byte)((absValue >> 8) & 0xFF));
-        destination.write((byte)(absValue & 0xFF));
-        return 3;
-    }
-
-    /**
-     * @return the size written, in bytes. 1, 2, or 3 bytes.
-     */
-    private static int writeVariableAddress(final OutputStream destination, final int value)
-            throws IOException {
-        switch (BinaryDictEncoderUtils.getByteSize(value)) {
-        case 1:
-            destination.write((byte)value);
-            break;
-        case 2:
-            destination.write((byte)(0xFF & (value >> 8)));
-            destination.write((byte)(0xFF & value));
-            break;
-        case 3:
-            destination.write((byte)(0xFF & (value >> 16)));
-            destination.write((byte)(0xFF & (value >> 8)));
-            destination.write((byte)(0xFF & value));
-            break;
-        }
-        return BinaryDictEncoderUtils.getByteSize(value);
-    }
-
-    static void skipString(final DictBuffer dictBuffer,
-            final boolean hasMultipleChars) {
-        if (hasMultipleChars) {
-            int character = CharEncoding.readChar(dictBuffer);
-            while (character != FormatSpec.INVALID_CHARACTER) {
-                character = CharEncoding.readChar(dictBuffer);
-            }
-        } else {
-            CharEncoding.readChar(dictBuffer);
-        }
-    }
-
-    /**
-     * Write a string to a stream.
-     *
-     * @param destination the stream to write.
-     * @param word the string to be written.
-     * @return the size written, in bytes.
-     * @throws IOException
-     */
-    private static int writeString(final OutputStream destination, final String word)
-            throws IOException {
-        int size = 0;
-        final int length = word.length();
-        for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
-            final int codePoint = word.codePointAt(i);
-            if (CharEncoding.getCharSize(codePoint) == 1) {
-                destination.write((byte)codePoint);
-                size++;
-            } else {
-                destination.write((byte)(0xFF & (codePoint >> 16)));
-                destination.write((byte)(0xFF & (codePoint >> 8)));
-                destination.write((byte)(0xFF & codePoint));
-                size += 3;
-            }
-        }
-        destination.write((byte)FormatSpec.PTNODE_CHARACTERS_TERMINATOR);
-        size += FormatSpec.PTNODE_TERMINATOR_SIZE;
-        return size;
-    }
-
-    /**
-     * Write a PtNode to an output stream from a PtNodeInfo.
-     * A PtNode is an in-memory representation of a node in the patricia trie.
-     * A PtNode info is a container for low-level information about how the
-     * PtNode is stored in the binary format.
-     *
-     * @param destination the stream to write.
-     * @param info the PtNode info to be written.
-     * @return the size written, in bytes.
-     */
-    private static int writePtNode(final OutputStream destination, final PtNodeInfo info)
-            throws IOException {
-        int size = FormatSpec.PTNODE_FLAGS_SIZE;
-        destination.write((byte)info.mFlags);
-        final int parentOffset = info.mParentAddress == FormatSpec.NO_PARENT_ADDRESS ?
-                FormatSpec.NO_PARENT_ADDRESS : info.mParentAddress - info.mOriginalAddress;
-        size += writeSInt24ToStream(destination, parentOffset);
-
-        for (int i = 0; i < info.mCharacters.length; ++i) {
-            if (CharEncoding.getCharSize(info.mCharacters[i]) == 1) {
-                destination.write((byte)info.mCharacters[i]);
-                size++;
-            } else {
-                size += writeSInt24ToStream(destination, info.mCharacters[i]);
-            }
-        }
-        if (info.mCharacters.length > 1) {
-            destination.write((byte)FormatSpec.PTNODE_CHARACTERS_TERMINATOR);
-            size++;
-        }
-
-        if ((info.mFlags & FormatSpec.FLAG_IS_TERMINAL) != 0) {
-            destination.write((byte)info.mFrequency);
-            size++;
-        }
-
-        if (DBG) {
-            MakedictLog.d("writePtNode origin=" + info.mOriginalAddress + ", size=" + size
-                    + ", child=" + info.mChildrenAddress + ", characters ="
-                    + new String(info.mCharacters, 0, info.mCharacters.length));
-        }
-        final int childrenOffset = info.mChildrenAddress == FormatSpec.NO_CHILDREN_ADDRESS ?
-                0 : info.mChildrenAddress - (info.mOriginalAddress + size);
-        writeSInt24ToStream(destination, childrenOffset);
-        size += FormatSpec.SIGNED_CHILDREN_ADDRESS_SIZE;
-
-        if (info.mShortcutTargets != null && info.mShortcutTargets.size() > 0) {
-            final int shortcutListSize =
-                    BinaryDictEncoderUtils.getShortcutListSize(info.mShortcutTargets);
-            destination.write((byte)(shortcutListSize >> 8));
-            destination.write((byte)(shortcutListSize & 0xFF));
-            size += 2;
-            final Iterator<WeightedString> shortcutIterator = info.mShortcutTargets.iterator();
-            while (shortcutIterator.hasNext()) {
-                final WeightedString target = shortcutIterator.next();
-                destination.write((byte)BinaryDictEncoderUtils.makeShortcutFlags(
-                        shortcutIterator.hasNext(), target.mFrequency));
-                size++;
-                size += writeString(destination, target.mWord);
-            }
-        }
-
-        if (info.mBigrams != null) {
-            // TODO: Consolidate this code with the code that computes the size of the bigram list
-            //        in BinaryDictEncoderUtils#computeActualNodeArraySize
-            for (int i = 0; i < info.mBigrams.size(); ++i) {
-
-                final int bigramFrequency = info.mBigrams.get(i).mFrequency;
-                int bigramFlags = (i < info.mBigrams.size() - 1)
-                        ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0;
-                size++;
-                final int bigramOffset = info.mBigrams.get(i).mAddress - (info.mOriginalAddress
-                        + size);
-                bigramFlags |= (bigramOffset < 0) ? FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE : 0;
-                switch (BinaryDictEncoderUtils.getByteSize(bigramOffset)) {
-                case 1:
-                    bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE;
-                    break;
-                case 2:
-                    bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES;
-                    break;
-                case 3:
-                    bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES;
-                    break;
-                }
-                bigramFlags |= bigramFrequency & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY;
-                destination.write((byte)bigramFlags);
-                size += writeVariableAddress(destination, Math.abs(bigramOffset));
-            }
-        }
-        return size;
-    }
-
-    /**
-     * Compute the size of the PtNode.
-     */
-    static int computePtNodeSize(final PtNodeInfo info, final FormatOptions formatOptions) {
-        int size = FormatSpec.PTNODE_FLAGS_SIZE + FormatSpec.PARENT_ADDRESS_SIZE
-                + BinaryDictEncoderUtils.getPtNodeCharactersSize(info.mCharacters)
-                + getChildrenAddressSize(info.mFlags, formatOptions);
-        if ((info.mFlags & FormatSpec.FLAG_IS_TERMINAL) != 0) {
-            size += FormatSpec.PTNODE_FREQUENCY_SIZE;
-        }
-        if (info.mShortcutTargets != null && !info.mShortcutTargets.isEmpty()) {
-            size += BinaryDictEncoderUtils.getShortcutListSize(info.mShortcutTargets);
-        }
-        if (info.mBigrams != null) {
-            for (final PendingAttribute attr : info.mBigrams) {
-                size += FormatSpec.PTNODE_FLAGS_SIZE;
-                size += BinaryDictEncoderUtils.getByteSize(attr.mAddress);
-            }
-        }
-        return size;
-    }
-
-    /**
-     * Write a node array to the stream.
-     *
-     * @param destination the stream to write.
-     * @param infos an array of PtNodeInfo to be written.
-     * @return the size written, in bytes.
-     * @throws IOException
-     */
-    static int writeNodes(final OutputStream destination, final PtNodeInfo[] infos)
-            throws IOException {
-        int size = getPtNodeCountSize(infos.length);
-        switch (getPtNodeCountSize(infos.length)) {
-            case 1:
-                destination.write((byte)infos.length);
-                break;
-            case 2:
-                final int encodedPtNodeCount =
-                        infos.length | FormatSpec.LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG;
-                destination.write((byte)(encodedPtNodeCount >> 8));
-                destination.write((byte)(encodedPtNodeCount & 0xFF));
-                break;
-            default:
-                throw new RuntimeException("Invalid node count size.");
-        }
-        for (final PtNodeInfo info : infos) size += writePtNode(destination, info);
-        writeSInt24ToStream(destination, FormatSpec.NO_FORWARD_LINK_ADDRESS);
-        return size + FormatSpec.FORWARD_LINK_ADDRESS_SIZE;
-    }
-
-    private static final int HEADER_READING_BUFFER_SIZE = 16384;
-    /**
-     * Convenience method to read the header of a binary file.
-     *
-     * This is quite resource intensive - don't call when performance is critical.
-     *
-     * @param file The file to read.
-     * @param offset The offset in the file where to start reading the data.
-     * @param length The length of the data file.
-     */
-    private static FileHeader getDictionaryFileHeader(
-            final File file, final long offset, final long length)
-            throws FileNotFoundException, IOException, UnsupportedFormatException {
-        final byte[] buffer = new byte[HEADER_READING_BUFFER_SIZE];
-        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file,
-                new DictDecoder.DictionaryBufferFactory() {
-                    @Override
-                    public DictBuffer getDictionaryBuffer(File file)
-                            throws FileNotFoundException, IOException {
-                        final FileInputStream inStream = new FileInputStream(file);
-                        try {
-                            inStream.skip(offset);
-                            inStream.read(buffer);
-                            return new ByteArrayDictBuffer(buffer);
-                        } finally {
-                            inStream.close();
-                        }
-                    }
-                }
-        );
-        return dictDecoder.readHeader();
-    }
-
-    public static FileHeader getDictionaryFileHeaderOrNull(final File file, final long offset,
-            final long length) {
-        try {
-            final FileHeader header = getDictionaryFileHeader(file, offset, length);
-            return header;
-        } catch (UnsupportedFormatException e) {
-            return null;
-        } catch (IOException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Helper method to hide the actual value of the no children address.
-     */
-    public static boolean hasChildrenAddress(final int address) {
-        return FormatSpec.NO_CHILDREN_ADDRESS != address;
-    }
-
-    /**
-     * Helper method to check whether the node is moved.
-     */
-    public static boolean isMovedPtNode(final int flags, final FormatOptions options) {
-        return options.mSupportsDynamicUpdate
-                && ((flags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) == FormatSpec.FLAG_IS_MOVED);
-    }
-
-    /**
-     * Helper method to check whether the dictionary can be updated dynamically.
-     */
-    public static boolean supportsDynamicUpdate(final FormatOptions options) {
-        return options.mVersion >= FormatSpec.FIRST_VERSION_WITH_DYNAMIC_UPDATE
-                && options.mSupportsDynamicUpdate;
-    }
-
-    /**
-     * Helper method to check whether the node is deleted.
-     */
-    public static boolean isDeletedPtNode(final int flags, final FormatOptions formatOptions) {
-        return formatOptions.mSupportsDynamicUpdate
-                && ((flags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) == FormatSpec.FLAG_IS_DELETED);
-    }
-
-    /**
-     * Compute the binary size of the node count
-     * @param count the node count
-     * @return the size of the node count, either 1 or 2 bytes.
-     */
-    public static int getPtNodeCountSize(final int count) {
-        if (FormatSpec.MAX_PTNODES_FOR_ONE_BYTE_PTNODE_COUNT >= count) {
-            return 1;
-        } else if (FormatSpec.MAX_PTNODES_IN_A_PT_NODE_ARRAY >= count) {
-            return 2;
-        } else {
-            throw new RuntimeException("Can't have more than "
-                    + FormatSpec.MAX_PTNODES_IN_A_PT_NODE_ARRAY + " PtNode in a PtNodeArray (found "
-                    + count + ")");
-        }
-    }
-
-    static int getChildrenAddressSize(final int optionFlags,
-            final FormatOptions formatOptions) {
-        if (formatOptions.mSupportsDynamicUpdate) return FormatSpec.SIGNED_CHILDREN_ADDRESS_SIZE;
-        switch (optionFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) {
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE:
-                return 1;
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES:
-                return 2;
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES:
-                return 3;
-            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS:
-            default:
-                return 0;
-        }
-    }
-
-    /**
-     * Calculate bigram frequency from compressed value
-     *
-     * @param unigramFrequency
-     * @param bigramFrequency compressed frequency
-     * @return approximate bigram frequency
-     */
-    public static int reconstructBigramFrequency(final int unigramFrequency,
-            final int bigramFrequency) {
-        final float stepSize = (FormatSpec.MAX_TERMINAL_FREQUENCY - unigramFrequency)
-                / (1.5f + FormatSpec.MAX_BIGRAM_FREQUENCY);
-        final float resultFreqFloat = unigramFrequency + stepSize * (bigramFrequency + 1.0f);
-        return (int)resultFreqFloat;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java
deleted file mode 100644
index 3dbeee0..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/DictDecoder.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.utils.ByteArrayDictBuffer;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.util.ArrayList;
-import java.util.TreeMap;
-
-/**
- * An interface of binary dictionary decoders.
- */
-public interface DictDecoder {
-
-    /**
-     * Reads and returns the file header.
-     */
-    public FileHeader readHeader() throws IOException, UnsupportedFormatException;
-
-    /**
-     * Reads PtNode from nodeAddress.
-     * @param ptNodePos the position of PtNode.
-     * @param formatOptions the format options.
-     * @return PtNodeInfo.
-     */
-    public PtNodeInfo readPtNode(final int ptNodePos, final FormatOptions formatOptions);
-
-    /**
-     * Reads a buffer and returns the memory representation of the dictionary.
-     *
-     * This high-level method takes a buffer and reads its contents, populating a
-     * FusionDictionary structure. The optional dict argument is an existing dictionary to
-     * which words from the buffer should be added. If it is null, a new dictionary is created.
-     *
-     * @param dict an optional dictionary to add words to, or null.
-     * @param deleteDictIfBroken a flag indicating whether this method should remove the broken
-     * dictionary or not.
-     * @return the created (or merged) dictionary.
-     */
-    @UsedForTesting
-    public FusionDictionary readDictionaryBinary(final FusionDictionary dict,
-            final boolean deleteDictIfBroken)
-                    throws FileNotFoundException, IOException, UnsupportedFormatException;
-
-    /**
-     * Gets the address of the last PtNode of the exact matching word in the dictionary.
-     * If no match is found, returns NOT_VALID_WORD.
-     *
-     * @param word the word we search for.
-     * @return the address of the terminal node.
-     * @throws IOException if the file can't be read.
-     * @throws UnsupportedFormatException if the format of the file is not recognized.
-     */
-    @UsedForTesting
-    public int getTerminalPosition(final String word)
-            throws IOException, UnsupportedFormatException;
-
-    /**
-     * Reads unigrams and bigrams from the binary file.
-     * Doesn't store a full memory representation of the dictionary.
-     *
-     * @param words the map to store the address as a key and the word as a value.
-     * @param frequencies the map to store the address as a key and the frequency as a value.
-     * @param bigrams the map to store the address as a key and the list of address as a value.
-     * @throws IOException if the file can't be read.
-     * @throws UnsupportedFormatException if the format of the file is not recognized.
-     */
-    @UsedForTesting
-    public void readUnigramsAndBigramsBinary(final TreeMap<Integer, String> words,
-            final TreeMap<Integer, Integer> frequencies,
-            final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams)
-                throws IOException, UnsupportedFormatException;
-
-    /**
-     * Sets the position of the buffer to the given value.
-     *
-     * @param newPos the new position
-     */
-    public void setPosition(final int newPos);
-
-    /**
-     * Gets the position of the buffer.
-     *
-     * @return the position
-     */
-    public int getPosition();
-
-    /**
-     * Reads and returns the PtNode count out of a buffer and forwards the pointer.
-     */
-    public int readPtNodeCount();
-
-    /**
-     * Reads the forward link and advances the position.
-     *
-     * @return true if this method moves the file pointer, false otherwise.
-     */
-    public boolean readAndFollowForwardLink();
-    public boolean hasNextPtNodeArray();
-
-    /**
-     * Opens the dictionary file and makes DictBuffer.
-     */
-    @UsedForTesting
-    public void openDictBuffer() throws FileNotFoundException, IOException;
-    @UsedForTesting
-    public boolean isDictBufferOpen();
-
-    // Constants for DictionaryBufferFactory.
-    public static final int USE_READONLY_BYTEBUFFER = 0x01000000;
-    public static final int USE_BYTEARRAY = 0x02000000;
-    public static final int USE_WRITABLE_BYTEBUFFER = 0x03000000;
-    public static final int MASK_DICTBUFFER = 0x0F000000;
-
-    public interface DictionaryBufferFactory {
-        public DictBuffer getDictionaryBuffer(final File file)
-                throws FileNotFoundException, IOException;
-    }
-
-    /**
-     * Creates DictionaryBuffer using a ByteBuffer
-     *
-     * This class uses less memory than DictionaryBufferFromByteArrayFactory,
-     * but doesn't perform as fast.
-     * When operating on a big dictionary, this class is preferred.
-     */
-    public static final class DictionaryBufferFromReadOnlyByteBufferFactory
-            implements DictionaryBufferFactory {
-        @Override
-        public DictBuffer getDictionaryBuffer(final File file)
-                throws FileNotFoundException, IOException {
-            FileInputStream inStream = null;
-            ByteBuffer buffer = null;
-            try {
-                inStream = new FileInputStream(file);
-                buffer = inStream.getChannel().map(FileChannel.MapMode.READ_ONLY,
-                        0, file.length());
-            } finally {
-                if (inStream != null) {
-                    inStream.close();
-                }
-            }
-            if (buffer != null) {
-                return new BinaryDictDecoderUtils.ByteBufferDictBuffer(buffer);
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Creates DictionaryBuffer using a byte array
-     *
-     * This class performs faster than other classes, but consumes more memory.
-     * When operating on a small dictionary, this class is preferred.
-     */
-    public static final class DictionaryBufferFromByteArrayFactory
-            implements DictionaryBufferFactory {
-        @Override
-        public DictBuffer getDictionaryBuffer(final File file)
-                throws FileNotFoundException, IOException {
-            FileInputStream inStream = null;
-            try {
-                inStream = new FileInputStream(file);
-                final byte[] array = new byte[(int) file.length()];
-                inStream.read(array);
-                return new ByteArrayDictBuffer(array);
-            } finally {
-                if (inStream != null) {
-                    inStream.close();
-                }
-            }
-        }
-    }
-
-    /**
-     * Creates DictionaryBuffer using a writable ByteBuffer and a RandomAccessFile.
-     *
-     * This class doesn't perform as fast as other classes,
-     * but this class is the only option available for destructive operations (insert or delete)
-     * on a dictionary.
-     */
-    @UsedForTesting
-    public static final class DictionaryBufferFromWritableByteBufferFactory
-            implements DictionaryBufferFactory {
-        @Override
-        public DictBuffer getDictionaryBuffer(final File file)
-                throws FileNotFoundException, IOException {
-            RandomAccessFile raFile = null;
-            ByteBuffer buffer = null;
-            try {
-                raFile = new RandomAccessFile(file, "rw");
-                buffer = raFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, file.length());
-            } finally {
-                if (raFile != null) {
-                    raFile.close();
-                }
-            }
-            if (buffer != null) {
-                return new BinaryDictDecoderUtils.ByteBufferDictBuffer(buffer);
-            }
-            return null;
-        }
-    }
-
-    public void skipPtNode(final FormatOptions formatOptions);
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/DictEncoder.java b/java/src/com/android/inputmethod/latin/makedict/DictEncoder.java
deleted file mode 100644
index ea5d492..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/DictEncoder.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-
-import java.io.IOException;
-
-/**
- * An interface of binary dictionary encoder.
- */
-public interface DictEncoder {
-    public void writeDictionary(final FusionDictionary dict, final FormatOptions formatOptions)
-            throws IOException, UnsupportedFormatException;
-
-    public void setPosition(final int position);
-    public int getPosition();
-    public void writePtNodeCount(final int ptNodeCount);
-    public void writeForwardLinkAddress(final int forwardLinkAddress);
-
-    public void writePtNode(final PtNode ptNode, final int parentPosition,
-            final FormatOptions formatOptions, final FusionDictionary dict);
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/DictUpdater.java b/java/src/com/android/inputmethod/latin/makedict/DictUpdater.java
deleted file mode 100644
index c4f7ec9..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/DictUpdater.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.IOException;
-import java.util.ArrayList;
-
-/**
- * An interface of a binary dictionary updater.
- */
-@UsedForTesting
-public interface DictUpdater extends DictDecoder {
-
-    /**
-     * Deletes the word from the binary dictionary.
-     *
-     * @param word the word to be deleted.
-     */
-    @UsedForTesting
-    public void deleteWord(final String word) throws IOException, UnsupportedFormatException;
-
-    /**
-     * Inserts a word into a binary dictionary.
-     *
-     * @param word the word to be inserted.
-     * @param frequency the frequency of the new word.
-     * @param bigramStrings bigram list, or null if none.
-     * @param shortcuts shortcut list, or null if none.
-     * @param isBlackListEntry whether this should be a blacklist entry.
-     */
-    // TODO: Support batch insertion.
-    @UsedForTesting
-    public void insertWord(final String word, final int frequency,
-            final ArrayList<WeightedString> bigramStrings,
-            final ArrayList<WeightedString> shortcuts, final boolean isNotAWord,
-            final boolean isBlackListEntry) throws IOException, UnsupportedFormatException;
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/DictionaryHeader.java b/java/src/com/android/inputmethod/latin/makedict/DictionaryHeader.java
new file mode 100644
index 0000000..df447fd
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/makedict/DictionaryHeader.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
+import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
+
+/**
+ * Class representing dictionary header.
+ */
+public final class DictionaryHeader {
+    public final int mBodyOffset;
+    public final DictionaryOptions mDictionaryOptions;
+    public final FormatOptions mFormatOptions;
+
+    // Note that these are corresponding definitions in native code in latinime::HeaderPolicy
+    // and latinime::HeaderReadWriteUtils.
+    // TODO: Standardize the key names and bump up the format version, taking care not to
+    // break format version 2 dictionaries.
+    public static final String DICTIONARY_VERSION_KEY = "version";
+    public static final String DICTIONARY_LOCALE_KEY = "locale";
+    public static final String DICTIONARY_ID_KEY = "dictionary";
+    public static final String DICTIONARY_DESCRIPTION_KEY = "description";
+    public static final String DICTIONARY_DATE_KEY = "date";
+    public static final String HAS_HISTORICAL_INFO_KEY = "HAS_HISTORICAL_INFO";
+    public static final String USES_FORGETTING_CURVE_KEY = "USES_FORGETTING_CURVE";
+    public static final String FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP_KEY =
+            "FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP";
+    public static final String FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID_KEY =
+            "FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID";
+    public static final String FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS_KEY =
+            "FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS";
+    public static final String MAX_UNIGRAM_COUNT_KEY = "MAX_UNIGRAM_COUNT";
+    public static final String MAX_BIGRAM_COUNT_KEY = "MAX_BIGRAM_COUNT";
+    public static final String ATTRIBUTE_VALUE_TRUE = "1";
+
+    public DictionaryHeader(final int headerSize, final DictionaryOptions dictionaryOptions,
+            final FormatOptions formatOptions) throws UnsupportedFormatException {
+        mDictionaryOptions = dictionaryOptions;
+        mFormatOptions = formatOptions;
+        mBodyOffset = formatOptions.mVersion < FormatSpec.VERSION4 ? headerSize : 0;
+        if (null == getLocaleString()) {
+            throw new UnsupportedFormatException("Cannot create a FileHeader without a locale");
+        }
+        if (null == getVersion()) {
+            throw new UnsupportedFormatException(
+                    "Cannot create a FileHeader without a version");
+        }
+        if (null == getId()) {
+            throw new UnsupportedFormatException("Cannot create a FileHeader without an ID");
+        }
+    }
+
+    // Helper method to get the locale as a String
+    public String getLocaleString() {
+        return mDictionaryOptions.mAttributes.get(DICTIONARY_LOCALE_KEY);
+    }
+
+    // Helper method to get the version String
+    public String getVersion() {
+        return mDictionaryOptions.mAttributes.get(DICTIONARY_VERSION_KEY);
+    }
+
+    // Helper method to get the dictionary ID as a String
+    public String getId() {
+        return mDictionaryOptions.mAttributes.get(DICTIONARY_ID_KEY);
+    }
+
+    // Helper method to get the description
+    public String getDescription() {
+        // TODO: Right now each dictionary file comes with a description in its own language.
+        // It will display as is no matter the device's locale. It should be internationalized.
+        return mDictionaryOptions.mAttributes.get(DICTIONARY_DESCRIPTION_KEY);
+    }
+}
\ No newline at end of file
diff --git a/java/src/com/android/inputmethod/latin/makedict/DynamicBinaryDictIOUtils.java b/java/src/com/android/inputmethod/latin/makedict/DynamicBinaryDictIOUtils.java
deleted file mode 100644
index 28da9ff..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/DynamicBinaryDictIOUtils.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/**
- * The utility class to help dynamic updates on the binary dictionary.
- *
- * All the methods in this class are static.
- */
-@UsedForTesting
-public final class DynamicBinaryDictIOUtils {
-    private static final boolean DBG = false;
-    private static final int MAX_JUMPS = 10000;
-
-    private DynamicBinaryDictIOUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    /* package */ static int markAsDeleted(final int flags) {
-        return (flags & (~FormatSpec.MASK_CHILDREN_ADDRESS_TYPE)) | FormatSpec.FLAG_IS_DELETED;
-    }
-
-    /**
-     * Update a parent address in a PtNode that is referred to by ptNodeOriginAddress.
-     *
-     * @param dictUpdater the DictUpdater to write.
-     * @param ptNodeOriginAddress the address of the PtNode.
-     * @param newParentAddress the absolute address of the parent.
-     * @param formatOptions file format options.
-     */
-    private static void updateParentAddress(final Ver3DictUpdater dictUpdater,
-            final int ptNodeOriginAddress, final int newParentAddress,
-            final FormatOptions formatOptions) {
-        final DictBuffer dictBuffer = dictUpdater.getDictBuffer();
-        final int originalPosition = dictBuffer.position();
-        dictBuffer.position(ptNodeOriginAddress);
-        if (!formatOptions.mSupportsDynamicUpdate) {
-            throw new RuntimeException("this file format does not support parent addresses");
-        }
-        final int flags = dictBuffer.readUnsignedByte();
-        if (BinaryDictIOUtils.isMovedPtNode(flags, formatOptions)) {
-            // If the node is moved, the parent address is stored in the destination node.
-            // We are guaranteed to process the destination node later, so there is no need to
-            // update anything here.
-            dictBuffer.position(originalPosition);
-            return;
-        }
-        if (DBG) {
-            MakedictLog.d("update parent address flags=" + flags + ", " + ptNodeOriginAddress);
-        }
-        final int parentOffset = newParentAddress - ptNodeOriginAddress;
-        BinaryDictIOUtils.writeSInt24ToBuffer(dictBuffer, parentOffset);
-        dictBuffer.position(originalPosition);
-    }
-
-    /**
-     * Update parent addresses in a node array stored at ptNodeOriginAddress.
-     *
-     * @param dictUpdater the DictUpdater to be modified.
-     * @param ptNodeOriginAddress the address of the node array to update.
-     * @param newParentAddress the address to be written.
-     * @param formatOptions file format options.
-     */
-    private static void updateParentAddresses(final Ver3DictUpdater dictUpdater,
-            final int ptNodeOriginAddress, final int newParentAddress,
-            final FormatOptions formatOptions) {
-        final int originalPosition = dictUpdater.getPosition();
-        dictUpdater.setPosition(ptNodeOriginAddress);
-        do {
-            final int count = dictUpdater.readPtNodeCount();
-            for (int i = 0; i < count; ++i) {
-                updateParentAddress(dictUpdater, dictUpdater.getPosition(), newParentAddress,
-                        formatOptions);
-                dictUpdater.skipPtNode(formatOptions);
-            }
-            if (!dictUpdater.readAndFollowForwardLink()) break;
-            if (dictUpdater.getPosition() == FormatSpec.NO_FORWARD_LINK_ADDRESS) break;
-        } while (formatOptions.mSupportsDynamicUpdate);
-        dictUpdater.setPosition(originalPosition);
-    }
-
-    /**
-     * Update a children address in a PtNode that is addressed by ptNodeOriginAddress.
-     *
-     * @param dictUpdater the DictUpdater to write.
-     * @param ptNodeOriginAddress the address of the PtNode.
-     * @param newChildrenAddress the absolute address of the child.
-     * @param formatOptions file format options.
-     */
-    private static void updateChildrenAddress(final Ver3DictUpdater dictUpdater,
-            final int ptNodeOriginAddress, final int newChildrenAddress,
-            final FormatOptions formatOptions) {
-        final DictBuffer dictBuffer = dictUpdater.getDictBuffer();
-        final int originalPosition = dictBuffer.position();
-        dictBuffer.position(ptNodeOriginAddress);
-        final int flags = dictBuffer.readUnsignedByte();
-        BinaryDictDecoderUtils.readParentAddress(dictBuffer, formatOptions);
-        BinaryDictIOUtils.skipString(dictBuffer, (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS) != 0);
-        if ((flags & FormatSpec.FLAG_IS_TERMINAL) != 0) dictBuffer.readUnsignedByte();
-        final int childrenOffset = newChildrenAddress == FormatSpec.NO_CHILDREN_ADDRESS
-                ? FormatSpec.NO_CHILDREN_ADDRESS : newChildrenAddress - dictBuffer.position();
-        BinaryDictIOUtils.writeSInt24ToBuffer(dictBuffer, childrenOffset);
-        dictBuffer.position(originalPosition);
-    }
-
-    /**
-     * Helper method to move a PtNode to the tail of the file.
-     */
-    private static int movePtNode(final OutputStream destination,
-            final Ver3DictUpdater dictUpdater, final PtNodeInfo info,
-            final int nodeArrayOriginAddress, final int oldNodeAddress,
-            final FormatOptions formatOptions) throws IOException {
-        final DictBuffer dictBuffer = dictUpdater.getDictBuffer();
-        updateParentAddress(dictUpdater, oldNodeAddress, dictBuffer.limit() + 1, formatOptions);
-        dictBuffer.position(oldNodeAddress);
-        final int currentFlags = dictBuffer.readUnsignedByte();
-        dictBuffer.position(oldNodeAddress);
-        dictBuffer.put((byte)(FormatSpec.FLAG_IS_MOVED | (currentFlags
-                & (~FormatSpec.MASK_MOVE_AND_DELETE_FLAG))));
-        int size = FormatSpec.PTNODE_FLAGS_SIZE;
-        updateForwardLink(dictUpdater, nodeArrayOriginAddress, dictBuffer.limit(), formatOptions);
-        size += BinaryDictIOUtils.writeNodes(destination, new PtNodeInfo[] { info });
-        return size;
-    }
-
-    @SuppressWarnings("unused")
-    private static void updateForwardLink(final Ver3DictUpdater dictUpdater,
-            final int nodeArrayOriginAddress, final int newNodeArrayAddress,
-            final FormatOptions formatOptions) {
-        final DictBuffer dictBuffer = dictUpdater.getDictBuffer();
-        dictUpdater.setPosition(nodeArrayOriginAddress);
-        int jumpCount = 0;
-        while (jumpCount++ < MAX_JUMPS) {
-            final int count = dictUpdater.readPtNodeCount();
-            for (int i = 0; i < count; ++i) {
-                dictUpdater.readPtNode(dictUpdater.getPosition(), formatOptions);
-            }
-            final int forwardLinkAddress = dictBuffer.readUnsignedInt24();
-            if (forwardLinkAddress == FormatSpec.NO_FORWARD_LINK_ADDRESS) {
-                dictBuffer.position(dictBuffer.position() - FormatSpec.FORWARD_LINK_ADDRESS_SIZE);
-                BinaryDictIOUtils.writeSInt24ToBuffer(dictBuffer, newNodeArrayAddress);
-                return;
-            }
-            dictBuffer.position(forwardLinkAddress);
-        }
-        if (DBG && jumpCount >= MAX_JUMPS) {
-            throw new RuntimeException("too many jumps, probably a bug.");
-        }
-    }
-
-    /**
-     * Move a PtNode that is referred to by oldPtNodeOrigin to the tail of the file, and set the
-     * children address to the byte after the PtNode.
-     *
-     * @param fileEndAddress the address of the tail of the file.
-     * @param codePoints the characters to put inside the PtNode.
-     * @param length how many code points to read from codePoints.
-     * @param flags the flags for this PtNode.
-     * @param frequency the frequency of this terminal.
-     * @param parentAddress the address of the parent PtNode of this PtNode.
-     * @param shortcutTargets the shortcut targets for this PtNode.
-     * @param bigrams the bigrams for this PtNode.
-     * @param destination the stream representing the tail of the file.
-     * @param dictUpdater the DictUpdater.
-     * @param oldPtNodeArrayOrigin the origin of the old PtNode array this PtNode was a part of.
-     * @param oldPtNodeOrigin the old origin where this PtNode used to be stored.
-     * @param formatOptions format options for this dictionary.
-     * @return the size written, in bytes.
-     * @throws IOException if the file can't be accessed
-     */
-    private static int movePtNode(final int fileEndAddress, final int[] codePoints,
-            final int length, final int flags, final int frequency, final int parentAddress,
-            final ArrayList<WeightedString> shortcutTargets,
-            final ArrayList<PendingAttribute> bigrams, final OutputStream destination,
-            final Ver3DictUpdater dictUpdater, final int oldPtNodeArrayOrigin,
-            final int oldPtNodeOrigin, final FormatOptions formatOptions) throws IOException {
-        int size = 0;
-        final int newPtNodeOrigin = fileEndAddress + 1;
-        final int[] writtenCharacters = Arrays.copyOfRange(codePoints, 0, length);
-        final PtNodeInfo tmpInfo = new PtNodeInfo(newPtNodeOrigin, -1 /* endAddress */,
-                flags, writtenCharacters, frequency, parentAddress, FormatSpec.NO_CHILDREN_ADDRESS,
-                shortcutTargets, bigrams);
-        size = BinaryDictIOUtils.computePtNodeSize(tmpInfo, formatOptions);
-        final PtNodeInfo newInfo = new PtNodeInfo(newPtNodeOrigin, newPtNodeOrigin + size,
-                flags, writtenCharacters, frequency, parentAddress,
-                fileEndAddress + 1 + size + FormatSpec.FORWARD_LINK_ADDRESS_SIZE, shortcutTargets,
-                bigrams);
-        movePtNode(destination, dictUpdater, newInfo, oldPtNodeArrayOrigin, oldPtNodeOrigin,
-                formatOptions);
-        return 1 + size + FormatSpec.FORWARD_LINK_ADDRESS_SIZE;
-    }
-
-    /**
-     * Converts a list of WeightedString to a list of PendingAttribute.
-     */
-    public static ArrayList<PendingAttribute> resolveBigramPositions(final DictUpdater dictUpdater,
-            final ArrayList<WeightedString> bigramStrings)
-                    throws IOException, UnsupportedFormatException {
-        if (bigramStrings == null) return CollectionUtils.newArrayList();
-        final ArrayList<PendingAttribute> bigrams = CollectionUtils.newArrayList();
-        for (final WeightedString bigram : bigramStrings) {
-            final int pos = dictUpdater.getTerminalPosition(bigram.mWord);
-            if (pos == FormatSpec.NOT_VALID_WORD) {
-                // TODO: figure out what is the correct thing to do here.
-            } else {
-                bigrams.add(new PendingAttribute(bigram.mFrequency, pos));
-            }
-        }
-        return bigrams;
-    }
-
-    /**
-     * Insert a word into a binary dictionary.
-     *
-     * @param dictUpdater the dict updater.
-     * @param destination a stream to the underlying file, with the pointer at the end of the file.
-     * @param word the word to insert.
-     * @param frequency the frequency of the new word.
-     * @param bigramStrings bigram list, or null if none.
-     * @param shortcuts shortcut list, or null if none.
-     * @param isBlackListEntry whether this should be a blacklist entry.
-     * @throws IOException if the file can't be accessed.
-     * @throws UnsupportedFormatException if the existing dictionary is in an unexpected format.
-     */
-    // TODO: Support batch insertion.
-    // TODO: Remove @UsedForTesting once UserHistoryDictionary is implemented by BinaryDictionary.
-    @UsedForTesting
-    public static void insertWord(final Ver3DictUpdater dictUpdater,
-            final OutputStream destination, final String word, final int frequency,
-            final ArrayList<WeightedString> bigramStrings,
-            final ArrayList<WeightedString> shortcuts, final boolean isNotAWord,
-            final boolean isBlackListEntry)
-                    throws IOException, UnsupportedFormatException {
-        final ArrayList<PendingAttribute> bigrams = resolveBigramPositions(dictUpdater,
-                bigramStrings);
-        final DictBuffer dictBuffer = dictUpdater.getDictBuffer();
-
-        final boolean isTerminal = true;
-        final boolean hasBigrams = !bigrams.isEmpty();
-        final boolean hasShortcuts = shortcuts != null && !shortcuts.isEmpty();
-
-        // find the insert position of the word.
-        if (dictBuffer.position() != 0) dictBuffer.position(0);
-        final FileHeader fileHeader = dictUpdater.readHeader();
-
-        int wordPos = 0, address = dictBuffer.position(), nodeOriginAddress = dictBuffer.position();
-        final int[] codePoints = FusionDictionary.getCodePoints(word);
-        final int wordLen = codePoints.length;
-
-        for (int depth = 0; depth < Constants.DICTIONARY_MAX_WORD_LENGTH; ++depth) {
-            if (wordPos >= wordLen) break;
-            nodeOriginAddress = dictBuffer.position();
-            int nodeParentAddress = -1;
-            final int ptNodeCount = BinaryDictDecoderUtils.readPtNodeCount(dictBuffer);
-            boolean foundNextNode = false;
-
-            for (int i = 0; i < ptNodeCount; ++i) {
-                address = dictBuffer.position();
-                final PtNodeInfo currentInfo = dictUpdater.readPtNode(address,
-                        fileHeader.mFormatOptions);
-                final boolean isMovedNode = BinaryDictIOUtils.isMovedPtNode(currentInfo.mFlags,
-                        fileHeader.mFormatOptions);
-                if (isMovedNode) continue;
-                nodeParentAddress = (currentInfo.mParentAddress == FormatSpec.NO_PARENT_ADDRESS)
-                        ? FormatSpec.NO_PARENT_ADDRESS : currentInfo.mParentAddress + address;
-                boolean matched = true;
-                for (int p = 0; p < currentInfo.mCharacters.length; ++p) {
-                    if (wordPos + p >= wordLen) {
-                        /*
-                         * splitting
-                         * before
-                         *  abcd - ef
-                         *
-                         * insert "abc"
-                         *
-                         * after
-                         *  abc - d - ef
-                         */
-                        final int newNodeAddress = dictBuffer.limit();
-                        final int flags = BinaryDictEncoderUtils.makePtNodeFlags(p > 1,
-                                isTerminal, 0, hasShortcuts, hasBigrams, false /* isNotAWord */,
-                                false /* isBlackListEntry */, fileHeader.mFormatOptions);
-                        int written = movePtNode(newNodeAddress, currentInfo.mCharacters, p, flags,
-                                frequency, nodeParentAddress, shortcuts, bigrams, destination,
-                                dictUpdater, nodeOriginAddress, address, fileHeader.mFormatOptions);
-
-                        final int[] characters2 = Arrays.copyOfRange(currentInfo.mCharacters, p,
-                                currentInfo.mCharacters.length);
-                        if (currentInfo.mChildrenAddress != FormatSpec.NO_CHILDREN_ADDRESS) {
-                            updateParentAddresses(dictUpdater, currentInfo.mChildrenAddress,
-                                    newNodeAddress + written + 1, fileHeader.mFormatOptions);
-                        }
-                        final PtNodeInfo newInfo2 = new PtNodeInfo(
-                                newNodeAddress + written + 1, -1 /* endAddress */,
-                                currentInfo.mFlags, characters2, currentInfo.mFrequency,
-                                newNodeAddress + 1, currentInfo.mChildrenAddress,
-                                currentInfo.mShortcutTargets, currentInfo.mBigrams);
-                        BinaryDictIOUtils.writeNodes(destination, new PtNodeInfo[] { newInfo2 });
-                        return;
-                    } else if (codePoints[wordPos + p] != currentInfo.mCharacters[p]) {
-                        if (p > 0) {
-                            /*
-                             * splitting
-                             * before
-                             *   ab - cd
-                             *
-                             * insert "ac"
-                             *
-                             * after
-                             *   a - b - cd
-                             *     |
-                             *     - c
-                             */
-
-                            final int newNodeAddress = dictBuffer.limit();
-                            final int childrenAddress = currentInfo.mChildrenAddress;
-
-                            // move prefix
-                            final int prefixFlags = BinaryDictEncoderUtils.makePtNodeFlags(p > 1,
-                                    false /* isTerminal */, 0 /* childrenAddressSize*/,
-                                    false /* hasShortcut */, false /* hasBigrams */,
-                                    false /* isNotAWord */, false /* isBlackListEntry */,
-                                    fileHeader.mFormatOptions);
-                            int written = movePtNode(newNodeAddress, currentInfo.mCharacters, p,
-                                    prefixFlags, -1 /* frequency */, nodeParentAddress, null, null,
-                                    destination, dictUpdater, nodeOriginAddress, address,
-                                    fileHeader.mFormatOptions);
-
-                            final int[] suffixCharacters = Arrays.copyOfRange(
-                                    currentInfo.mCharacters, p, currentInfo.mCharacters.length);
-                            if (currentInfo.mChildrenAddress != FormatSpec.NO_CHILDREN_ADDRESS) {
-                                updateParentAddresses(dictUpdater, currentInfo.mChildrenAddress,
-                                        newNodeAddress + written + 1, fileHeader.mFormatOptions);
-                            }
-                            final int suffixFlags = BinaryDictEncoderUtils.makePtNodeFlags(
-                                    suffixCharacters.length > 1,
-                                    (currentInfo.mFlags & FormatSpec.FLAG_IS_TERMINAL) != 0,
-                                    0 /* childrenAddressSize */,
-                                    (currentInfo.mFlags & FormatSpec.FLAG_HAS_SHORTCUT_TARGETS)
-                                            != 0,
-                                    (currentInfo.mFlags & FormatSpec.FLAG_HAS_BIGRAMS) != 0,
-                                    isNotAWord, isBlackListEntry, fileHeader.mFormatOptions);
-                            final PtNodeInfo suffixInfo = new PtNodeInfo(
-                                    newNodeAddress + written + 1, -1 /* endAddress */, suffixFlags,
-                                    suffixCharacters, currentInfo.mFrequency, newNodeAddress + 1,
-                                    currentInfo.mChildrenAddress, currentInfo.mShortcutTargets,
-                                    currentInfo.mBigrams);
-                            written += BinaryDictIOUtils.computePtNodeSize(suffixInfo,
-                                    fileHeader.mFormatOptions) + 1;
-
-                            final int[] newCharacters = Arrays.copyOfRange(codePoints, wordPos + p,
-                                    codePoints.length);
-                            final int flags = BinaryDictEncoderUtils.makePtNodeFlags(
-                                    newCharacters.length > 1, isTerminal,
-                                    0 /* childrenAddressSize */, hasShortcuts, hasBigrams,
-                                    isNotAWord, isBlackListEntry, fileHeader.mFormatOptions);
-                            final PtNodeInfo newInfo = new PtNodeInfo(
-                                    newNodeAddress + written, -1 /* endAddress */, flags,
-                                    newCharacters, frequency, newNodeAddress + 1,
-                                    FormatSpec.NO_CHILDREN_ADDRESS, shortcuts, bigrams);
-                            BinaryDictIOUtils.writeNodes(destination,
-                                    new PtNodeInfo[] { suffixInfo, newInfo });
-                            return;
-                        }
-                        matched = false;
-                        break;
-                    }
-                }
-
-                if (matched) {
-                    if (wordPos + currentInfo.mCharacters.length == wordLen) {
-                        // the word exists in the dictionary.
-                        // only update the PtNode.
-                        final int newNodeAddress = dictBuffer.limit();
-                        final boolean hasMultipleChars = currentInfo.mCharacters.length > 1;
-                        final int flags = BinaryDictEncoderUtils.makePtNodeFlags(hasMultipleChars,
-                                isTerminal, 0 /* childrenAddressSize */, hasShortcuts, hasBigrams,
-                                isNotAWord, isBlackListEntry, fileHeader.mFormatOptions);
-                        final PtNodeInfo newInfo = new PtNodeInfo(newNodeAddress + 1,
-                                -1 /* endAddress */, flags, currentInfo.mCharacters, frequency,
-                                nodeParentAddress, currentInfo.mChildrenAddress, shortcuts,
-                                bigrams);
-                        movePtNode(destination, dictUpdater, newInfo, nodeOriginAddress, address,
-                                fileHeader.mFormatOptions);
-                        return;
-                    }
-                    wordPos += currentInfo.mCharacters.length;
-                    if (currentInfo.mChildrenAddress == FormatSpec.NO_CHILDREN_ADDRESS) {
-                        /*
-                         * found the prefix of the word.
-                         * make new PtNode and link to the PtNode from this PtNode.
-                         *
-                         * before
-                         * ab - cd
-                         *
-                         * insert "abcde"
-                         *
-                         * after
-                         * ab - cd - e
-                         */
-                        final int newNodeArrayAddress = dictBuffer.limit();
-                        updateChildrenAddress(dictUpdater, address, newNodeArrayAddress,
-                                fileHeader.mFormatOptions);
-                        final int newNodeAddress = newNodeArrayAddress + 1;
-                        final boolean hasMultipleChars = (wordLen - wordPos) > 1;
-                        final int flags = BinaryDictEncoderUtils.makePtNodeFlags(hasMultipleChars,
-                                isTerminal, 0 /* childrenAddressSize */, hasShortcuts, hasBigrams,
-                                isNotAWord, isBlackListEntry, fileHeader.mFormatOptions);
-                        final int[] characters = Arrays.copyOfRange(codePoints, wordPos, wordLen);
-                        final PtNodeInfo newInfo = new PtNodeInfo(newNodeAddress, -1, flags,
-                                characters, frequency, address, FormatSpec.NO_CHILDREN_ADDRESS,
-                                shortcuts, bigrams);
-                        BinaryDictIOUtils.writeNodes(destination, new PtNodeInfo[] { newInfo });
-                        return;
-                    }
-                    dictBuffer.position(currentInfo.mChildrenAddress);
-                    foundNextNode = true;
-                    break;
-                }
-            }
-
-            if (foundNextNode) continue;
-
-            // reached the end of the array.
-            final int linkAddressPosition = dictBuffer.position();
-            int nextLink = dictBuffer.readUnsignedInt24();
-            if ((nextLink & FormatSpec.MSB24) != 0) {
-                nextLink = -(nextLink & FormatSpec.SINT24_MAX);
-            }
-            if (nextLink == FormatSpec.NO_FORWARD_LINK_ADDRESS) {
-                /*
-                 * expand this node.
-                 *
-                 * before
-                 * ab - cd
-                 *
-                 * insert "abef"
-                 *
-                 * after
-                 * ab - cd
-                 *    |
-                 *    - ef
-                 */
-
-                // change the forward link address.
-                final int newNodeAddress = dictBuffer.limit();
-                dictBuffer.position(linkAddressPosition);
-                BinaryDictIOUtils.writeSInt24ToBuffer(dictBuffer, newNodeAddress);
-
-                final int[] characters = Arrays.copyOfRange(codePoints, wordPos, wordLen);
-                final int flags = BinaryDictEncoderUtils.makePtNodeFlags(characters.length > 1,
-                        isTerminal, 0 /* childrenAddressSize */, hasShortcuts, hasBigrams,
-                        isNotAWord, isBlackListEntry, fileHeader.mFormatOptions);
-                final PtNodeInfo newInfo = new PtNodeInfo(newNodeAddress + 1,
-                        -1 /* endAddress */, flags, characters, frequency, nodeParentAddress,
-                        FormatSpec.NO_CHILDREN_ADDRESS, shortcuts, bigrams);
-                BinaryDictIOUtils.writeNodes(destination, new PtNodeInfo[]{ newInfo });
-                return;
-            } else {
-                depth--;
-                dictBuffer.position(nextLink);
-            }
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java b/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
index b56234f..a2ae74b 100644
--- a/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
+++ b/java/src/com/android/inputmethod/latin/makedict/FormatSpec.java
@@ -18,10 +18,9 @@
 
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
 
-import java.io.File;
+import java.util.Date;
+import java.util.HashMap;
 
 /**
  * Dictionary File Format Specification.
@@ -40,12 +39,8 @@
      * p | not used                                3 bits
      * t | each unigram and bigram entry has a time stamp?
      * i |                                         1 bit, 1 = yes, 0 = no : CONTAINS_TIMESTAMP_FLAG
-     * o | has bigrams ?                           1 bit, 1 = yes, 0 = no : CONTAINS_BIGRAMS_FLAG
-     * n | FRENCH_LIGATURE_PROCESSING_FLAG
-     * f | supports dynamic updates ?              1 bit, 1 = yes, 0 = no : SUPPORTS_DYNAMIC_UPDATE
-     * l | GERMAN_UMLAUT_PROCESSING_FLAG
-     * a |
-     * gs
+     * o |
+     * nflags
      *
      * h |
      * e | size of the file header, 4bytes
@@ -82,45 +77,36 @@
      * s
      *
      * f |
-     * o | IF SUPPORTS_DYNAMIC_UPDATE (defined in the file header)
-     * r |     forward link address, 3byte
-     * w | 1 byte = bbbbbbbb match
-     * a |   case 1xxxxxxx => -((xxxxxxx << 16) + (next byte << 8) + next byte)
-     * r |   otherwise => (xxxxxxx << 16) + (next byte << 8) + next byte
-     * d |
-     * linkaddress
+     * o | forward link address, 3byte
+     * r | 1 byte = bbbbbbbb match
+     * w |   case 1xxxxxxx => -((xxxxxxx << 16) + (next byte << 8) + next byte)
+     * a |   otherwise => (xxxxxxx << 16) + (next byte << 8) + next byte
+     * r |
+     * dlinkaddress
      */
 
     /* Node (FusionDictionary.PtNode) layout is as follows:
-     *   | IF !SUPPORTS_DYNAMIC_UPDATE
-     *   |   addressType                    xx               : mask with MASK_CHILDREN_ADDRESS_TYPE
-     *   |                          2 bits, 00 = no children : FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS
-     * f |                                  01 = 1 byte      : FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE
-     * l |                                  10 = 2 bytes     : FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES
-     * a |                                  11 = 3 bytes     : FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES
-     * g | ELSE
-     * s |   is moved ?             2 bits, 11 = no          : FLAG_IS_NOT_MOVED
-     *   |                            This must be the same as FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES
-     *   |                                  01 = yes         : FLAG_IS_MOVED
-     *   |                        the new address is stored in the same place as the parent address
-     *   |   is deleted?                    10 = yes         : FLAG_IS_DELETED
-     *   | has several chars ?         1 bit, 1 = yes, 0 = no   : FLAG_HAS_MULTIPLE_CHARS
-     *   | has a terminal ?            1 bit, 1 = yes, 0 = no   : FLAG_IS_TERMINAL
-     *   | has shortcut targets ?      1 bit, 1 = yes, 0 = no   : FLAG_HAS_SHORTCUT_TARGETS
+     *   | is moved ?             2 bits, 11 = no          : FLAG_IS_NOT_MOVED
+     *   |                          This must be the same as FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES
+     *   |                                01 = yes         : FLAG_IS_MOVED
+     * f |                      the new address is stored in the same place as the parent address
+     * l | is deleted?                    10 = yes         : FLAG_IS_DELETED
+     * a | has several chars ?         1 bit, 1 = yes, 0 = no   : FLAG_HAS_MULTIPLE_CHARS
+     * g | has a terminal ?            1 bit, 1 = yes, 0 = no   : FLAG_IS_TERMINAL
+     * s | has shortcut targets ?      1 bit, 1 = yes, 0 = no   : FLAG_HAS_SHORTCUT_TARGETS
      *   | has bigrams ?               1 bit, 1 = yes, 0 = no   : FLAG_HAS_BIGRAMS
      *   | is not a word ?             1 bit, 1 = yes, 0 = no   : FLAG_IS_NOT_A_WORD
      *   | is blacklisted ?            1 bit, 1 = yes, 0 = no   : FLAG_IS_BLACKLISTED
      *
      * p |
-     * a | IF SUPPORTS_DYNAMIC_UPDATE (defined in the file header)
-     * r |     parent address, 3byte
-     * e | 1 byte = bbbbbbbb match
-     * n |   case 1xxxxxxx => -((0xxxxxxx << 16) + (next byte << 8) + next byte)
-     * t |   otherwise => (bbbbbbbb << 16) + (next byte << 8) + next byte
-     * a | This address is relative to the head of the PtNode.
-     * d | If the node doesn't have a parent, this field is set to 0.
+     * a | parent address, 3byte
+     * r | 1 byte = bbbbbbbb match
+     * e |   case 1xxxxxxx => -((0xxxxxxx << 16) + (next byte << 8) + next byte)
+     * n |   otherwise => (bbbbbbbb << 16) + (next byte << 8) + next byte
+     * t | This address is relative to the head of the PtNode.
+     * a | If the node doesn't have a parent, this field is set to 0.
      * d |
-     * ress
+     * dress
      *
      * c | IF FLAG_HAS_MULTIPLE_CHARS
      * h |   char, char, char, char    n * (1 or 3 bytes) : use PtNodeInfo for i/o helpers
@@ -134,23 +120,16 @@
      * e |   frequency                 1 byte
      * q |
      *
-     * c | IF SUPPORTS_DYNAMIC_UPDATE
-     * h |   children address, 3 bytes
-     * i |   1 byte = bbbbbbbb match
-     * l |     case 1xxxxxxx => -((0xxxxxxx << 16) + (next byte << 8) + next byte)
-     * d |     otherwise => (bbbbbbbb<<16) + (next byte << 8) + next byte
-     * r |   if this node doesn't have children, this field is set to 0.
-     * e |     (see BinaryDictEncoderUtils#writeVariableSignedAddress)
-     * n | ELSIF 00 = FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS == addressType
-     * a |   // nothing
-     * d | ELSIF 01 = FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE == addressType
-     * d |   children address, 1 byte
-     * r | ELSIF 10 = FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES == addressType
-     * e |   children address, 2 bytes
-     * s | ELSE // 11 = FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES = addressType
-     * s |   children address, 3 bytes
-     *   | END
-     *   | This address is relative to the position of this field.
+     * c |
+     * h | children address, 3 bytes
+     * i | 1 byte = bbbbbbbb match
+     * l |   case 1xxxxxxx => -((0xxxxxxx << 16) + (next byte << 8) + next byte)
+     * d |   otherwise => (bbbbbbbb<<16) + (next byte << 8) + next byte
+     * r | if this node doesn't have children, this field is set to 0.
+     * e |   (see BinaryDictEncoderUtils#writeVariableSignedAddress)
+     * n | This address is relative to the position of this field.
+     * a |
+     * ddress
      *
      *   | IF FLAG_IS_TERMINAL && FLAG_HAS_SHORTCUT_TARGETS
      *   | shortcut string list
@@ -199,21 +178,25 @@
      */
 
     public static final int MAGIC_NUMBER = 0x9BC13AFE;
-    static final int MINIMUM_SUPPORTED_VERSION = 2;
-    static final int MAXIMUM_SUPPORTED_VERSION = 4;
     static final int NOT_A_VERSION_NUMBER = -1;
     static final int FIRST_VERSION_WITH_DYNAMIC_UPDATE = 3;
     static final int FIRST_VERSION_WITH_TERMINAL_ID = 4;
-    static final int VERSION3 = 3;
-    static final int VERSION4 = 4;
 
-    // These options need to be the same numeric values as the one in the native reading code.
-    static final int GERMAN_UMLAUT_PROCESSING_FLAG = 0x1;
-    // TODO: Make the native reading code read this variable.
-    static final int SUPPORTS_DYNAMIC_UPDATE = 0x2;
-    static final int FRENCH_LIGATURE_PROCESSING_FLAG = 0x4;
-    static final int CONTAINS_BIGRAMS_FLAG = 0x8;
-    static final int CONTAINS_TIMESTAMP_FLAG = 0x10;
+    // These MUST have the same values as the relevant constants in format_utils.h.
+    // From version 4 on, we use version * 100 + revision as a version number. That allows
+    // us to change the format during development while having testing devices remove
+    // older files with each upgrade, while still having a readable versioning scheme.
+    // When we bump up the dictionary format version, we should update
+    // ExpandableDictionary.needsToMigrateDictionary() and
+    // ExpandableDictionary.matchesExpectedBinaryDictFormatVersionForThisType().
+    public static final int VERSION2 = 2;
+    // Dictionary version used for testing.
+    public static final int VERSION4_ONLY_FOR_TESTING = 399;
+    public static final int VERSION401 = 401;
+    public static final int VERSION4 = 402;
+    public static final int VERSION4_DEV = 403;
+    static final int MINIMUM_SUPPORTED_VERSION = VERSION2;
+    static final int MAXIMUM_SUPPORTED_VERSION = VERSION4_DEV;
 
     // TODO: Make this value adaptative to content data, store it in the header, and
     // use it in the reading code.
@@ -263,29 +246,31 @@
     static final int PTNODE_ATTRIBUTE_MAX_ADDRESS_SIZE = 3;
     static final int PTNODE_SHORTCUT_LIST_SIZE_SIZE = 2;
 
-    // These values are used only by version 4 or later.
+    // These values are used only by version 4 or later. They MUST match the definitions in
+    // ver4_dict_constants.cpp.
     static final String TRIE_FILE_EXTENSION = ".trie";
+    public static final String HEADER_FILE_EXTENSION = ".header";
     static final String FREQ_FILE_EXTENSION = ".freq";
-    static final String UNIGRAM_TIMESTAMP_FILE_EXTENSION = ".timestamp";
     // tat = Terminal Address Table
     static final String TERMINAL_ADDRESS_TABLE_FILE_EXTENSION = ".tat";
     static final String BIGRAM_FILE_EXTENSION = ".bigram";
     static final String SHORTCUT_FILE_EXTENSION = ".shortcut";
     static final String LOOKUP_TABLE_FILE_SUFFIX = "_lookup";
     static final String CONTENT_TABLE_FILE_SUFFIX = "_index";
+    static final int FLAGS_IN_FREQ_FILE_SIZE = 1;
     static final int FREQUENCY_AND_FLAGS_SIZE = 2;
     static final int TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE = 3;
     static final int UNIGRAM_TIMESTAMP_SIZE = 4;
+    static final int UNIGRAM_COUNTER_SIZE = 1;
+    static final int UNIGRAM_LEVEL_SIZE = 1;
 
     // With the English main dictionary as of October 2013, the size of bigram address table is
-    // is 584KB with the block size being 4.
-    // This is 91% of that of full address table.
-    static final int BIGRAM_ADDRESS_TABLE_BLOCK_SIZE = 4;
-    static final int BIGRAM_CONTENT_COUNT = 2;
+    // is 345KB with the block size being 16.
+    // This is 54% of that of full address table.
+    static final int BIGRAM_ADDRESS_TABLE_BLOCK_SIZE = 16;
+    static final int BIGRAM_CONTENT_COUNT = 1;
     static final int BIGRAM_FREQ_CONTENT_INDEX = 0;
-    static final int BIGRAM_TIMESTAMP_CONTENT_INDEX = 1;
     static final String BIGRAM_FREQ_CONTENT_ID = "_freq";
-    static final String BIGRAM_TIMESTAMP_CONTENT_ID = "_timestamp";
     static final int BIGRAM_TIMESTAMP_SIZE = 4;
     static final int BIGRAM_COUNTER_SIZE = 1;
     static final int BIGRAM_LEVEL_SIZE = 1;
@@ -293,7 +278,7 @@
     static final int SHORTCUT_CONTENT_COUNT = 1;
     static final int SHORTCUT_CONTENT_INDEX = 0;
     // With the English main dictionary as of October 2013, the size of shortcut address table is
-    // 29KB with the block size being 64.
+    // 26KB with the block size being 64.
     // This is only 4.4% of that of full address table.
     static final int SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE = 64;
     static final String SHORTCUT_CONTENT_ID = "_shortcut";
@@ -331,107 +316,56 @@
      */
     public static final class FormatOptions {
         public final int mVersion;
-        public final boolean mSupportsDynamicUpdate;
-        public final boolean mHasTerminalId;
         public final boolean mHasTimestamp;
+
         @UsedForTesting
         public FormatOptions(final int version) {
-            this(version, false);
+            this(version, false /* hasTimestamp */);
         }
 
-        @UsedForTesting
-        public FormatOptions(final int version, final boolean supportsDynamicUpdate) {
-            this(version, supportsDynamicUpdate, false /* hasTimestamp */);
-        }
-
-        public FormatOptions(final int version, final boolean supportsDynamicUpdate,
-                final boolean hasTimestamp) {
+        public FormatOptions(final int version, final boolean hasTimestamp) {
             mVersion = version;
-            if (version < FIRST_VERSION_WITH_DYNAMIC_UPDATE && supportsDynamicUpdate) {
-                throw new RuntimeException("Dynamic updates are only supported with versions "
-                        + FIRST_VERSION_WITH_DYNAMIC_UPDATE + " and ulterior.");
-            }
-            mSupportsDynamicUpdate = supportsDynamicUpdate;
-            mHasTerminalId = (version >= FIRST_VERSION_WITH_TERMINAL_ID);
             mHasTimestamp = hasTimestamp;
         }
     }
 
     /**
-     * Class representing file header.
+     * Options global to the dictionary.
      */
-    public static final class FileHeader {
-        public final int mHeaderSize;
-        public final DictionaryOptions mDictionaryOptions;
-        public final FormatOptions mFormatOptions;
-        // Note that these are corresponding definitions in native code in latinime::HeaderPolicy
-        // and latinime::HeaderReadWriteUtils.
-        public static final String SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE = "SUPPORTS_DYNAMIC_UPDATE";
-        public static final String USES_FORGETTING_CURVE_ATTRIBUTE = "USES_FORGETTING_CURVE";
-        public static final String ATTRIBUTE_VALUE_TRUE = "1";
-
-        public static final String DICTIONARY_VERSION_ATTRIBUTE = "version";
-        public static final String DICTIONARY_LOCALE_ATTRIBUTE = "locale";
-        public static final String DICTIONARY_ID_ATTRIBUTE = "dictionary";
-        private static final String DICTIONARY_DESCRIPTION_ATTRIBUTE = "description";
-        public FileHeader(final int headerSize, final DictionaryOptions dictionaryOptions,
-                final FormatOptions formatOptions) {
-            mHeaderSize = headerSize;
-            mDictionaryOptions = dictionaryOptions;
-            mFormatOptions = formatOptions;
+    public static final class DictionaryOptions {
+        public final HashMap<String, String> mAttributes;
+        public DictionaryOptions(final HashMap<String, String> attributes) {
+            mAttributes = attributes;
         }
-
-        // Helper method to get the locale as a String
-        public String getLocaleString() {
-            return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_LOCALE_ATTRIBUTE);
+        @Override
+        public String toString() { // Convenience method
+            return toString(0, false);
         }
-
-        // Helper method to get the version String
-        public String getVersion() {
-            return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_VERSION_ATTRIBUTE);
+        public String toString(final int indentCount, final boolean plumbing) {
+            final StringBuilder indent = new StringBuilder();
+            if (plumbing) {
+                indent.append("H:");
+            } else {
+                for (int i = 0; i < indentCount; ++i) {
+                    indent.append(" ");
+                }
+            }
+            final StringBuilder s = new StringBuilder();
+            for (final String optionKey : mAttributes.keySet()) {
+                s.append(indent);
+                s.append(optionKey);
+                s.append(" = ");
+                if ("date".equals(optionKey) && !plumbing) {
+                    // Date needs a number of milliseconds, but the dictionary contains seconds
+                    s.append(new Date(
+                            1000 * Long.parseLong(mAttributes.get(optionKey))).toString());
+                } else {
+                    s.append(mAttributes.get(optionKey));
+                }
+                s.append("\n");
+            }
+            return s.toString();
         }
-
-        // Helper method to get the dictionary ID as a String
-        public String getId() {
-            return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_ID_ATTRIBUTE);
-        }
-
-        // Helper method to get the description
-        public String getDescription() {
-            // TODO: Right now each dictionary file comes with a description in its own language.
-            // It will display as is no matter the device's locale. It should be internationalized.
-            return mDictionaryOptions.mAttributes.get(FileHeader.DICTIONARY_DESCRIPTION_ATTRIBUTE);
-        }
-    }
-
-    /**
-     * Returns new dictionary decoder.
-     *
-     * @param dictFile the dictionary file.
-     * @param bufferType The type of buffer, as one of USE_* in DictDecoder.
-     * @return new dictionary decoder if the dictionary file exists, otherwise null.
-     */
-    public static DictDecoder getDictDecoder(final File dictFile, final int bufferType) {
-        if (dictFile.isDirectory()) {
-            return new Ver4DictDecoder(dictFile, bufferType);
-        } else if (dictFile.isFile()) {
-            return new Ver3DictDecoder(dictFile, bufferType);
-        }
-        return null;
-    }
-
-    public static DictDecoder getDictDecoder(final File dictFile,
-            final DictionaryBufferFactory factory) {
-        if (dictFile.isDirectory()) {
-            return new Ver4DictDecoder(dictFile, factory);
-        } else if (dictFile.isFile()) {
-            return new Ver3DictDecoder(dictFile, factory);
-        }
-        return null;
-    }
-
-    public static DictDecoder getDictDecoder(final File dictFile) {
-        return getDictDecoder(dictFile, DictDecoder.USE_READONLY_BYTEBUFFER);
     }
 
     private FormatSpec() {
diff --git a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
deleted file mode 100644
index 3bb218b..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
+++ /dev/null
@@ -1,916 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Constants;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-/**
- * A dictionary that can fusion heads and tails of words for more compression.
- */
-@UsedForTesting
-public final class FusionDictionary implements Iterable<Word> {
-    private static final boolean DBG = MakedictLog.DBG;
-
-    private static int CHARACTER_NOT_FOUND_INDEX = -1;
-
-    /**
-     * A node array of the dictionary, containing several PtNodes.
-     *
-     * A PtNodeArray is but an ordered array of PtNodes, which essentially contain all the
-     * real information.
-     * This class also contains fields to cache size and address, to help with binary
-     * generation.
-     */
-    public static final class PtNodeArray {
-        ArrayList<PtNode> mData;
-        // To help with binary generation
-        int mCachedSize = Integer.MIN_VALUE;
-        // mCachedAddressBefore/AfterUpdate are helpers for binary dictionary generation. They
-        // always hold the same value except between dictionary address compression, during which
-        // the update process needs to know about both values at the same time. Updating will
-        // update the AfterUpdate value, and the code will move them to BeforeUpdate before
-        // the next update pass.
-        int mCachedAddressBeforeUpdate = Integer.MIN_VALUE;
-        int mCachedAddressAfterUpdate = Integer.MIN_VALUE;
-        int mCachedParentAddress = 0;
-
-        public PtNodeArray() {
-            mData = new ArrayList<PtNode>();
-        }
-        public PtNodeArray(ArrayList<PtNode> data) {
-            mData = data;
-        }
-    }
-
-    /**
-     * A string with a frequency.
-     *
-     * This represents an "attribute", that is either a bigram or a shortcut.
-     */
-    public static final class WeightedString {
-        public final String mWord;
-        public int mFrequency;
-        public WeightedString(String word, int frequency) {
-            mWord = word;
-            mFrequency = frequency;
-        }
-
-        @Override
-        public int hashCode() {
-            return Arrays.hashCode(new Object[] { mWord, mFrequency });
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (o == this) return true;
-            if (!(o instanceof WeightedString)) return false;
-            WeightedString w = (WeightedString)o;
-            return mWord.equals(w.mWord) && mFrequency == w.mFrequency;
-        }
-    }
-
-    /**
-     * PtNode is a group of characters, with a frequency, shortcut targets, bigrams, and children
-     * (Pt means Patricia Trie).
-     *
-     * This is the central class of the in-memory representation. A PtNode is what can
-     * be seen as a traditional "trie node", except it can hold several characters at the
-     * same time. A PtNode essentially represents one or several characters in the middle
-     * of the trie tree; as such, it can be a terminal, and it can have children.
-     * In this in-memory representation, whether the PtNode is a terminal or not is represented
-     * in the frequency, where NOT_A_TERMINAL (= -1) means this is not a terminal and any other
-     * value is the frequency of this terminal. A terminal may have non-null shortcuts and/or
-     * bigrams, but a non-terminal may not. Moreover, children, if present, are null.
-     */
-    public static final class PtNode {
-        public static final int NOT_A_TERMINAL = -1;
-        final int mChars[];
-        ArrayList<WeightedString> mShortcutTargets;
-        ArrayList<WeightedString> mBigrams;
-        int mFrequency; // NOT_A_TERMINAL == mFrequency indicates this is not a terminal.
-        int mTerminalId; // NOT_A_TERMINAL == mTerminalId indicates this is not a terminal.
-        PtNodeArray mChildren;
-        boolean mIsNotAWord; // Only a shortcut
-        boolean mIsBlacklistEntry;
-        // mCachedSize and mCachedAddressBefore/AfterUpdate are helpers for binary dictionary
-        // generation. Before and After always hold the same value except during dictionary
-        // address compression, where the update process needs to know about both values at the
-        // same time. Updating will update the AfterUpdate value, and the code will move them
-        // to BeforeUpdate before the next update pass.
-        // The update process does not need two versions of mCachedSize.
-        int mCachedSize; // The size, in bytes, of this PtNode.
-        int mCachedAddressBeforeUpdate; // The address of this PtNode (before update)
-        int mCachedAddressAfterUpdate; // The address of this PtNode (after update)
-
-        public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
-                final ArrayList<WeightedString> bigrams, final int frequency,
-                final boolean isNotAWord, final boolean isBlacklistEntry) {
-            mChars = chars;
-            mFrequency = frequency;
-            mTerminalId = frequency;
-            mShortcutTargets = shortcutTargets;
-            mBigrams = bigrams;
-            mChildren = null;
-            mIsNotAWord = isNotAWord;
-            mIsBlacklistEntry = isBlacklistEntry;
-        }
-
-        public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
-                final ArrayList<WeightedString> bigrams, final int frequency,
-                final boolean isNotAWord, final boolean isBlacklistEntry,
-                final PtNodeArray children) {
-            mChars = chars;
-            mFrequency = frequency;
-            mShortcutTargets = shortcutTargets;
-            mBigrams = bigrams;
-            mChildren = children;
-            mIsNotAWord = isNotAWord;
-            mIsBlacklistEntry = isBlacklistEntry;
-        }
-
-        public void addChild(PtNode n) {
-            if (null == mChildren) {
-                mChildren = new PtNodeArray();
-            }
-            mChildren.mData.add(n);
-        }
-
-        public int getTerminalId() {
-            return mTerminalId;
-        }
-
-        public boolean isTerminal() {
-            return NOT_A_TERMINAL != mFrequency;
-        }
-
-        public int getFrequency() {
-            return mFrequency;
-        }
-
-        public boolean getIsNotAWord() {
-            return mIsNotAWord;
-        }
-
-        public boolean getIsBlacklistEntry() {
-            return mIsBlacklistEntry;
-        }
-
-        public ArrayList<WeightedString> getShortcutTargets() {
-            // We don't want write permission to escape outside the package, so we return a copy
-            if (null == mShortcutTargets) return null;
-            final ArrayList<WeightedString> copyOfShortcutTargets =
-                    new ArrayList<WeightedString>(mShortcutTargets);
-            return copyOfShortcutTargets;
-        }
-
-        public ArrayList<WeightedString> getBigrams() {
-            // We don't want write permission to escape outside the package, so we return a copy
-            if (null == mBigrams) return null;
-            final ArrayList<WeightedString> copyOfBigrams = new ArrayList<WeightedString>(mBigrams);
-            return copyOfBigrams;
-        }
-
-        public boolean hasSeveralChars() {
-            assert(mChars.length > 0);
-            return 1 < mChars.length;
-        }
-
-        /**
-         * Adds a word to the bigram list. Updates the frequency if the word already
-         * exists.
-         */
-        public void addBigram(final String word, final int frequency) {
-            if (mBigrams == null) {
-                mBigrams = new ArrayList<WeightedString>();
-            }
-            WeightedString bigram = getBigram(word);
-            if (bigram != null) {
-                bigram.mFrequency = frequency;
-            } else {
-                bigram = new WeightedString(word, frequency);
-                mBigrams.add(bigram);
-            }
-        }
-
-        /**
-         * Gets the shortcut target for the given word. Returns null if the word is not in the
-         * shortcut list.
-         */
-        public WeightedString getShortcut(final String word) {
-            // TODO: Don't do a linear search
-            if (mShortcutTargets != null) {
-                final int size = mShortcutTargets.size();
-                for (int i = 0; i < size; ++i) {
-                    WeightedString shortcut = mShortcutTargets.get(i);
-                    if (shortcut.mWord.equals(word)) {
-                        return shortcut;
-                    }
-                }
-            }
-            return null;
-        }
-
-        /**
-         * Gets the bigram for the given word.
-         * Returns null if the word is not in the bigrams list.
-         */
-        public WeightedString getBigram(final String word) {
-            // TODO: Don't do a linear search
-            if (mBigrams != null) {
-                final int size = mBigrams.size();
-                for (int i = 0; i < size; ++i) {
-                    WeightedString bigram = mBigrams.get(i);
-                    if (bigram.mWord.equals(word)) {
-                        return bigram;
-                    }
-                }
-            }
-            return null;
-        }
-
-        /**
-         * Updates the PtNode with the given properties. Adds the shortcut and bigram lists to
-         * the existing ones if any. Note: unigram, bigram, and shortcut frequencies are only
-         * updated if they are higher than the existing ones.
-         */
-        public void update(final int frequency, final ArrayList<WeightedString> shortcutTargets,
-                final ArrayList<WeightedString> bigrams,
-                final boolean isNotAWord, final boolean isBlacklistEntry) {
-            if (frequency > mFrequency) {
-                mFrequency = frequency;
-            }
-            if (shortcutTargets != null) {
-                if (mShortcutTargets == null) {
-                    mShortcutTargets = shortcutTargets;
-                } else {
-                    final int size = shortcutTargets.size();
-                    for (int i = 0; i < size; ++i) {
-                        final WeightedString shortcut = shortcutTargets.get(i);
-                        final WeightedString existingShortcut = getShortcut(shortcut.mWord);
-                        if (existingShortcut == null) {
-                            mShortcutTargets.add(shortcut);
-                        } else if (existingShortcut.mFrequency < shortcut.mFrequency) {
-                            existingShortcut.mFrequency = shortcut.mFrequency;
-                        }
-                    }
-                }
-            }
-            if (bigrams != null) {
-                if (mBigrams == null) {
-                    mBigrams = bigrams;
-                } else {
-                    final int size = bigrams.size();
-                    for (int i = 0; i < size; ++i) {
-                        final WeightedString bigram = bigrams.get(i);
-                        final WeightedString existingBigram = getBigram(bigram.mWord);
-                        if (existingBigram == null) {
-                            mBigrams.add(bigram);
-                        } else if (existingBigram.mFrequency < bigram.mFrequency) {
-                            existingBigram.mFrequency = bigram.mFrequency;
-                        }
-                    }
-                }
-            }
-            mIsNotAWord = isNotAWord;
-            mIsBlacklistEntry = isBlacklistEntry;
-        }
-    }
-
-    /**
-     * Options global to the dictionary.
-     */
-    public static final class DictionaryOptions {
-        public final boolean mGermanUmlautProcessing;
-        public final boolean mFrenchLigatureProcessing;
-        public final HashMap<String, String> mAttributes;
-        public DictionaryOptions(final HashMap<String, String> attributes,
-                final boolean germanUmlautProcessing, final boolean frenchLigatureProcessing) {
-            mAttributes = attributes;
-            mGermanUmlautProcessing = germanUmlautProcessing;
-            mFrenchLigatureProcessing = frenchLigatureProcessing;
-        }
-        @Override
-        public String toString() { // Convenience method
-            return toString(0, false);
-        }
-        public String toString(final int indentCount, final boolean plumbing) {
-            final StringBuilder indent = new StringBuilder();
-            if (plumbing) {
-                indent.append("H:");
-            } else {
-                for (int i = 0; i < indentCount; ++i) {
-                    indent.append(" ");
-                }
-            }
-            final StringBuilder s = new StringBuilder();
-            for (final String optionKey : mAttributes.keySet()) {
-                s.append(indent);
-                s.append(optionKey);
-                s.append(" = ");
-                if ("date".equals(optionKey) && !plumbing) {
-                    // Date needs a number of milliseconds, but the dictionary contains seconds
-                    s.append(new Date(
-                            1000 * Long.parseLong(mAttributes.get(optionKey))).toString());
-                } else {
-                    s.append(mAttributes.get(optionKey));
-                }
-                s.append("\n");
-            }
-            if (mGermanUmlautProcessing) {
-                s.append(indent);
-                s.append("Needs German umlaut processing\n");
-            }
-            if (mFrenchLigatureProcessing) {
-                s.append(indent);
-                s.append("Needs French ligature processing\n");
-            }
-            return s.toString();
-        }
-    }
-
-    public final DictionaryOptions mOptions;
-    public final PtNodeArray mRootNodeArray;
-
-    public FusionDictionary(final PtNodeArray rootNodeArray, final DictionaryOptions options) {
-        mRootNodeArray = rootNodeArray;
-        mOptions = options;
-    }
-
-    public void addOptionAttribute(final String key, final String value) {
-        mOptions.mAttributes.put(key, value);
-    }
-
-    /**
-     * Helper method to convert a String to an int array.
-     */
-    static int[] getCodePoints(final String word) {
-        // TODO: this is a copy-paste of the old contents of StringUtils.toCodePointArray,
-        // which is not visible from the makedict package. Factor this code.
-        final int length = word.length();
-        if (length <= 0) return new int[] {};
-        final char[] characters = word.toCharArray();
-        final int[] codePoints = new int[Character.codePointCount(characters, 0, length)];
-        int codePoint = Character.codePointAt(characters, 0);
-        int dsti = 0;
-        for (int srci = Character.charCount(codePoint);
-                srci < length; srci += Character.charCount(codePoint), ++dsti) {
-            codePoints[dsti] = codePoint;
-            codePoint = Character.codePointAt(characters, srci);
-        }
-        codePoints[dsti] = codePoint;
-        return codePoints;
-    }
-
-    /**
-     * Helper method to add a word as a string.
-     *
-     * This method adds a word to the dictionary with the given frequency. Optional
-     * lists of bigrams and shortcuts can be passed here. For each word inside,
-     * they will be added to the dictionary as necessary.
-     *
-     * @param word the word to add.
-     * @param frequency the frequency of the word, in the range [0..255].
-     * @param shortcutTargets a list of shortcut targets for this word, or null.
-     * @param isNotAWord true if this should not be considered a word (e.g. shortcut only)
-     */
-    public void add(final String word, final int frequency,
-            final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord) {
-        add(getCodePoints(word), frequency, shortcutTargets, isNotAWord,
-                false /* isBlacklistEntry */);
-    }
-
-    /**
-     * Helper method to add a blacklist entry as a string.
-     *
-     * @param word the word to add as a blacklist entry.
-     * @param shortcutTargets a list of shortcut targets for this word, or null.
-     * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so)
-     */
-    public void addBlacklistEntry(final String word,
-            final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord) {
-        add(getCodePoints(word), 0, shortcutTargets, isNotAWord, true /* isBlacklistEntry */);
-    }
-
-    /**
-     * Sanity check for a PtNode array.
-     *
-     * This method checks that all PtNodes in a node array are ordered as expected.
-     * If they are, nothing happens. If they aren't, an exception is thrown.
-     */
-    private void checkStack(PtNodeArray ptNodeArray) {
-        ArrayList<PtNode> stack = ptNodeArray.mData;
-        int lastValue = -1;
-        for (int i = 0; i < stack.size(); ++i) {
-            int currentValue = stack.get(i).mChars[0];
-            if (currentValue <= lastValue)
-                throw new RuntimeException("Invalid stack");
-            else
-                lastValue = currentValue;
-        }
-    }
-
-    /**
-     * Helper method to add a new bigram to the dictionary.
-     *
-     * @param word1 the previous word of the context
-     * @param word2 the next word of the context
-     * @param frequency the bigram frequency
-     */
-    public void setBigram(final String word1, final String word2, final int frequency) {
-        PtNode ptNode = findWordInTree(mRootNodeArray, word1);
-        if (ptNode != null) {
-            final PtNode ptNode2 = findWordInTree(mRootNodeArray, word2);
-            if (ptNode2 == null) {
-                add(getCodePoints(word2), 0, null, false /* isNotAWord */,
-                        false /* isBlacklistEntry */);
-                // The PtNode for the first word may have moved by the above insertion,
-                // if word1 and word2 share a common stem that happens not to have been
-                // a cutting point until now. In this case, we need to refresh ptNode.
-                ptNode = findWordInTree(mRootNodeArray, word1);
-            }
-            ptNode.addBigram(word2, frequency);
-        } else {
-            throw new RuntimeException("First word of bigram not found");
-        }
-    }
-
-    /**
-     * Add a word to this dictionary.
-     *
-     * The shortcuts, if any, have to be in the dictionary already. If they aren't,
-     * an exception is thrown.
-     *
-     * @param word the word, as an int array.
-     * @param frequency the frequency of the word, in the range [0..255].
-     * @param shortcutTargets an optional list of shortcut targets for this word (null if none).
-     * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so)
-     * @param isBlacklistEntry true if this is a blacklisted word, false otherwise
-     */
-    private void add(final int[] word, final int frequency,
-            final ArrayList<WeightedString> shortcutTargets,
-            final boolean isNotAWord, final boolean isBlacklistEntry) {
-        assert(frequency >= 0 && frequency <= 255);
-        if (word.length >= Constants.DICTIONARY_MAX_WORD_LENGTH) {
-            MakedictLog.w("Ignoring a word that is too long: word.length = " + word.length);
-            return;
-        }
-
-        PtNodeArray currentNodeArray = mRootNodeArray;
-        int charIndex = 0;
-
-        PtNode currentPtNode = null;
-        int differentCharIndex = 0; // Set by the loop to the index of the char that differs
-        int nodeIndex = findIndexOfChar(mRootNodeArray, word[charIndex]);
-        while (CHARACTER_NOT_FOUND_INDEX != nodeIndex) {
-            currentPtNode = currentNodeArray.mData.get(nodeIndex);
-            differentCharIndex = compareCharArrays(currentPtNode.mChars, word, charIndex);
-            if (ARRAYS_ARE_EQUAL != differentCharIndex
-                    && differentCharIndex < currentPtNode.mChars.length) break;
-            if (null == currentPtNode.mChildren) break;
-            charIndex += currentPtNode.mChars.length;
-            if (charIndex >= word.length) break;
-            currentNodeArray = currentPtNode.mChildren;
-            nodeIndex = findIndexOfChar(currentNodeArray, word[charIndex]);
-        }
-
-        if (CHARACTER_NOT_FOUND_INDEX == nodeIndex) {
-            // No node at this point to accept the word. Create one.
-            final int insertionIndex = findInsertionIndex(currentNodeArray, word[charIndex]);
-            final PtNode newPtNode = new PtNode(Arrays.copyOfRange(word, charIndex, word.length),
-                    shortcutTargets, null /* bigrams */, frequency, isNotAWord, isBlacklistEntry);
-            currentNodeArray.mData.add(insertionIndex, newPtNode);
-            if (DBG) checkStack(currentNodeArray);
-        } else {
-            // There is a word with a common prefix.
-            if (differentCharIndex == currentPtNode.mChars.length) {
-                if (charIndex + differentCharIndex >= word.length) {
-                    // The new word is a prefix of an existing word, but the node on which it
-                    // should end already exists as is. Since the old PtNode was not a terminal,
-                    // make it one by filling in its frequency and other attributes
-                    currentPtNode.update(frequency, shortcutTargets, null, isNotAWord,
-                            isBlacklistEntry);
-                } else {
-                    // The new word matches the full old word and extends past it.
-                    // We only have to create a new node and add it to the end of this.
-                    final PtNode newNode = new PtNode(
-                            Arrays.copyOfRange(word, charIndex + differentCharIndex, word.length),
-                                    shortcutTargets, null /* bigrams */, frequency, isNotAWord,
-                                    isBlacklistEntry);
-                    currentPtNode.mChildren = new PtNodeArray();
-                    currentPtNode.mChildren.mData.add(newNode);
-                }
-            } else {
-                if (0 == differentCharIndex) {
-                    // Exact same word. Update the frequency if higher. This will also add the
-                    // new shortcuts to the existing shortcut list if it already exists.
-                    currentPtNode.update(frequency, shortcutTargets, null,
-                            currentPtNode.mIsNotAWord && isNotAWord,
-                            currentPtNode.mIsBlacklistEntry || isBlacklistEntry);
-                } else {
-                    // Partial prefix match only. We have to replace the current node with a node
-                    // containing the current prefix and create two new ones for the tails.
-                    PtNodeArray newChildren = new PtNodeArray();
-                    final PtNode newOldWord = new PtNode(
-                            Arrays.copyOfRange(currentPtNode.mChars, differentCharIndex,
-                                    currentPtNode.mChars.length), currentPtNode.mShortcutTargets,
-                            currentPtNode.mBigrams, currentPtNode.mFrequency,
-                            currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry,
-                            currentPtNode.mChildren);
-                    newChildren.mData.add(newOldWord);
-
-                    final PtNode newParent;
-                    if (charIndex + differentCharIndex >= word.length) {
-                        newParent = new PtNode(
-                                Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
-                                shortcutTargets, null /* bigrams */, frequency,
-                                isNotAWord, isBlacklistEntry, newChildren);
-                    } else {
-                        newParent = new PtNode(
-                                Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
-                                null /* shortcutTargets */, null /* bigrams */, -1,
-                                false /* isNotAWord */, false /* isBlacklistEntry */, newChildren);
-                        final PtNode newWord = new PtNode(Arrays.copyOfRange(word,
-                                charIndex + differentCharIndex, word.length),
-                                shortcutTargets, null /* bigrams */, frequency,
-                                isNotAWord, isBlacklistEntry);
-                        final int addIndex = word[charIndex + differentCharIndex]
-                                > currentPtNode.mChars[differentCharIndex] ? 1 : 0;
-                        newChildren.mData.add(addIndex, newWord);
-                    }
-                    currentNodeArray.mData.set(nodeIndex, newParent);
-                }
-                if (DBG) checkStack(currentNodeArray);
-            }
-        }
-    }
-
-    private static int ARRAYS_ARE_EQUAL = 0;
-
-    /**
-     * Custom comparison of two int arrays taken to contain character codes.
-     *
-     * This method compares the two arrays passed as an argument in a lexicographic way,
-     * with an offset in the dst string.
-     * This method does NOT test for the first character. It is taken to be equal.
-     * I repeat: this method starts the comparison at 1 <> dstOffset + 1.
-     * The index where the strings differ is returned. ARRAYS_ARE_EQUAL = 0 is returned if the
-     * strings are equal. This works BECAUSE we don't look at the first character.
-     *
-     * @param src the left-hand side string of the comparison.
-     * @param dst the right-hand side string of the comparison.
-     * @param dstOffset the offset in the right-hand side string.
-     * @return the index at which the strings differ, or ARRAYS_ARE_EQUAL = 0 if they don't.
-     */
-    private static int compareCharArrays(final int[] src, final int[] dst, int dstOffset) {
-        // We do NOT test the first char, because we come from a method that already
-        // tested it.
-        for (int i = 1; i < src.length; ++i) {
-            if (dstOffset + i >= dst.length) return i;
-            if (src[i] != dst[dstOffset + i]) return i;
-        }
-        if (dst.length > src.length) return src.length;
-        return ARRAYS_ARE_EQUAL;
-    }
-
-    /**
-     * Helper class that compares and sorts two PtNodes according to their
-     * first element only. I repeat: ONLY the first element is considered, the rest
-     * is ignored.
-     * This comparator imposes orderings that are inconsistent with equals.
-     */
-    static private final class PtNodeComparator implements java.util.Comparator<PtNode> {
-        @Override
-        public int compare(PtNode p1, PtNode p2) {
-            if (p1.mChars[0] == p2.mChars[0]) return 0;
-            return p1.mChars[0] < p2.mChars[0] ? -1 : 1;
-        }
-    }
-    final static private PtNodeComparator PTNODE_COMPARATOR = new PtNodeComparator();
-
-    /**
-     * Finds the insertion index of a character within a node array.
-     */
-    private static int findInsertionIndex(final PtNodeArray nodeArray, int character) {
-        final ArrayList<PtNode> data = nodeArray.mData;
-        final PtNode reference = new PtNode(new int[] { character },
-                null /* shortcutTargets */, null /* bigrams */, 0, false /* isNotAWord */,
-                false /* isBlacklistEntry */);
-        int result = Collections.binarySearch(data, reference, PTNODE_COMPARATOR);
-        return result >= 0 ? result : -result - 1;
-    }
-
-    /**
-     * Find the index of a char in a node array, if it exists.
-     *
-     * @param nodeArray the node array to search in.
-     * @param character the character to search for.
-     * @return the position of the character if it's there, or CHARACTER_NOT_FOUND_INDEX = -1 else.
-     */
-    private static int findIndexOfChar(final PtNodeArray nodeArray, int character) {
-        final int insertionIndex = findInsertionIndex(nodeArray, character);
-        if (nodeArray.mData.size() <= insertionIndex) return CHARACTER_NOT_FOUND_INDEX;
-        return character == nodeArray.mData.get(insertionIndex).mChars[0] ? insertionIndex
-                : CHARACTER_NOT_FOUND_INDEX;
-    }
-
-    /**
-     * Helper method to find a word in a given branch.
-     */
-    @SuppressWarnings("unused")
-    public static PtNode findWordInTree(PtNodeArray nodeArray, final String string) {
-        int index = 0;
-        final StringBuilder checker = DBG ? new StringBuilder() : null;
-        final int[] codePoints = getCodePoints(string);
-
-        PtNode currentPtNode;
-        do {
-            int indexOfGroup = findIndexOfChar(nodeArray, codePoints[index]);
-            if (CHARACTER_NOT_FOUND_INDEX == indexOfGroup) return null;
-            currentPtNode = nodeArray.mData.get(indexOfGroup);
-
-            if (codePoints.length - index < currentPtNode.mChars.length) return null;
-            int newIndex = index;
-            while (newIndex < codePoints.length && newIndex - index < currentPtNode.mChars.length) {
-                if (currentPtNode.mChars[newIndex - index] != codePoints[newIndex]) return null;
-                newIndex++;
-            }
-            index = newIndex;
-
-            if (DBG) {
-                checker.append(new String(currentPtNode.mChars, 0, currentPtNode.mChars.length));
-            }
-            if (index < codePoints.length) {
-                nodeArray = currentPtNode.mChildren;
-            }
-        } while (null != nodeArray && index < codePoints.length);
-
-        if (index < codePoints.length) return null;
-        if (!currentPtNode.isTerminal()) return null;
-        if (DBG && !string.equals(checker.toString())) return null;
-        return currentPtNode;
-    }
-
-    /**
-     * Helper method to find out whether a word is in the dict or not.
-     */
-    public boolean hasWord(final String s) {
-        if (null == s || "".equals(s)) {
-            throw new RuntimeException("Can't search for a null or empty string");
-        }
-        return null != findWordInTree(mRootNodeArray, s);
-    }
-
-    /**
-     * Recursively count the number of PtNodes in a given branch of the trie.
-     *
-     * @param nodeArray the parent node.
-     * @return the number of PtNodes in all the branch under this node.
-     */
-    public static int countPtNodes(final PtNodeArray nodeArray) {
-        final int nodeSize = nodeArray.mData.size();
-        int size = nodeSize;
-        for (int i = nodeSize - 1; i >= 0; --i) {
-            PtNode ptNode = nodeArray.mData.get(i);
-            if (null != ptNode.mChildren)
-                size += countPtNodes(ptNode.mChildren);
-        }
-        return size;
-    }
-
-    /**
-     * Recursively count the number of nodes in a given branch of the trie.
-     *
-     * @param nodeArray the node array to count.
-     * @return the number of nodes in this branch.
-     */
-    public static int countNodeArrays(final PtNodeArray nodeArray) {
-        int size = 1;
-        for (int i = nodeArray.mData.size() - 1; i >= 0; --i) {
-            PtNode ptNode = nodeArray.mData.get(i);
-            if (null != ptNode.mChildren)
-                size += countNodeArrays(ptNode.mChildren);
-        }
-        return size;
-    }
-
-    // Recursively find out whether there are any bigrams.
-    // This can be pretty expensive especially if there aren't any (we return as soon
-    // as we find one, so it's much cheaper if there are bigrams)
-    private static boolean hasBigramsInternal(final PtNodeArray nodeArray) {
-        if (null == nodeArray) return false;
-        for (int i = nodeArray.mData.size() - 1; i >= 0; --i) {
-            PtNode ptNode = nodeArray.mData.get(i);
-            if (null != ptNode.mBigrams) return true;
-            if (hasBigramsInternal(ptNode.mChildren)) return true;
-        }
-        return false;
-    }
-
-    /**
-     * Finds out whether there are any bigrams in this dictionary.
-     *
-     * @return true if there is any bigram, false otherwise.
-     */
-    // TODO: this is expensive especially for large dictionaries without any bigram.
-    // The up side is, this is always accurate and correct and uses no memory. We should
-    // find a more efficient way of doing this, without compromising too much on memory
-    // and ease of use.
-    public boolean hasBigrams() {
-        return hasBigramsInternal(mRootNodeArray);
-    }
-
-    // Historically, the tails of the words were going to be merged to save space.
-    // However, that would prevent the code to search for a specific address in log(n)
-    // time so this was abandoned.
-    // The code is still of interest as it does add some compression to any dictionary
-    // that has no need for attributes. Implementations that does not read attributes should be
-    // able to read a dictionary with merged tails.
-    // Also, the following code does support frequencies, as in, it will only merges
-    // tails that share the same frequency. Though it would result in the above loss of
-    // performance while searching by address, it is still technically possible to merge
-    // tails that contain attributes, but this code does not take that into account - it does
-    // not compare attributes and will merge terminals with different attributes regardless.
-    public void mergeTails() {
-        MakedictLog.i("Do not merge tails");
-        return;
-
-//        MakedictLog.i("Merging PtNodes. Number of PtNodes : " + countPtNodes(root));
-//        MakedictLog.i("Number of PtNodes : " + countPtNodes(root));
-//
-//        final HashMap<String, ArrayList<PtNodeArray>> repository =
-//                  new HashMap<String, ArrayList<PtNodeArray>>();
-//        mergeTailsInner(repository, root);
-//
-//        MakedictLog.i("Number of different pseudohashes : " + repository.size());
-//        int size = 0;
-//        for (ArrayList<PtNodeArray> a : repository.values()) {
-//            size += a.size();
-//        }
-//        MakedictLog.i("Number of nodes after merge : " + (1 + size));
-//        MakedictLog.i("Recursively seen nodes : " + countNodes(root));
-    }
-
-    // The following methods are used by the deactivated mergeTails()
-//   private static boolean isEqual(PtNodeArray a, PtNodeArray b) {
-//       if (null == a && null == b) return true;
-//       if (null == a || null == b) return false;
-//       if (a.data.size() != b.data.size()) return false;
-//       final int size = a.data.size();
-//       for (int i = size - 1; i >= 0; --i) {
-//           PtNode aPtNode = a.data.get(i);
-//           PtNode bPtNode = b.data.get(i);
-//           if (aPtNode.frequency != bPtNode.frequency) return false;
-//           if (aPtNode.alternates == null && bPtNode.alternates != null) return false;
-//           if (aPtNode.alternates != null && !aPtNode.equals(bPtNode.alternates)) return false;
-//           if (!Arrays.equals(aPtNode.chars, bPtNode.chars)) return false;
-//           if (!isEqual(aPtNode.children, bPtNode.children)) return false;
-//       }
-//       return true;
-//   }
-
-//   static private HashMap<String, ArrayList<PtNodeArray>> mergeTailsInner(
-//           final HashMap<String, ArrayList<PtNodeArray>> map, final PtNodeArray nodeArray) {
-//       final ArrayList<PtNode> branches = nodeArray.data;
-//       final int nodeSize = branches.size();
-//       for (int i = 0; i < nodeSize; ++i) {
-//           PtNode ptNode = branches.get(i);
-//           if (null != ptNode.children) {
-//               String pseudoHash = getPseudoHash(ptNode.children);
-//               ArrayList<PtNodeArray> similarList = map.get(pseudoHash);
-//               if (null == similarList) {
-//                   similarList = new ArrayList<PtNodeArray>();
-//                   map.put(pseudoHash, similarList);
-//               }
-//               boolean merged = false;
-//               for (PtNodeArray similar : similarList) {
-//                   if (isEqual(ptNode.children, similar)) {
-//                       ptNode.children = similar;
-//                       merged = true;
-//                       break;
-//                   }
-//               }
-//               if (!merged) {
-//                   similarList.add(ptNode.children);
-//               }
-//               mergeTailsInner(map, ptNode.children);
-//           }
-//       }
-//       return map;
-//   }
-
-//  private static String getPseudoHash(final PtNodeArray nodeArray) {
-//      StringBuilder s = new StringBuilder();
-//      for (PtNode ptNode : nodeArray.data) {
-//          s.append(ptNode.frequency);
-//          for (int ch : ptNode.chars) {
-//              s.append(Character.toChars(ch));
-//          }
-//      }
-//      return s.toString();
-//  }
-
-    /**
-     * Iterator to walk through a dictionary.
-     *
-     * This is purely for convenience.
-     */
-    public static final class DictionaryIterator implements Iterator<Word> {
-        private static final class Position {
-            public Iterator<PtNode> pos;
-            public int length;
-            public Position(ArrayList<PtNode> ptNodes) {
-                pos = ptNodes.iterator();
-                length = 0;
-            }
-        }
-        final StringBuilder mCurrentString;
-        final LinkedList<Position> mPositions;
-
-        public DictionaryIterator(ArrayList<PtNode> ptRoot) {
-            mCurrentString = new StringBuilder();
-            mPositions = new LinkedList<Position>();
-            final Position rootPos = new Position(ptRoot);
-            mPositions.add(rootPos);
-        }
-
-        @Override
-        public boolean hasNext() {
-            for (Position p : mPositions) {
-                if (p.pos.hasNext()) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        @Override
-        public Word next() {
-            Position currentPos = mPositions.getLast();
-            mCurrentString.setLength(currentPos.length);
-
-            do {
-                if (currentPos.pos.hasNext()) {
-                    final PtNode currentPtNode = currentPos.pos.next();
-                    currentPos.length = mCurrentString.length();
-                    for (int i : currentPtNode.mChars) {
-                        mCurrentString.append(Character.toChars(i));
-                    }
-                    if (null != currentPtNode.mChildren) {
-                        currentPos = new Position(currentPtNode.mChildren.mData);
-                        currentPos.length = mCurrentString.length();
-                        mPositions.addLast(currentPos);
-                    }
-                    if (currentPtNode.mFrequency >= 0) {
-                        return new Word(mCurrentString.toString(), currentPtNode.mFrequency,
-                                currentPtNode.mShortcutTargets, currentPtNode.mBigrams,
-                                currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry);
-                    }
-                } else {
-                    mPositions.removeLast();
-                    currentPos = mPositions.getLast();
-                    mCurrentString.setLength(mPositions.getLast().length);
-                }
-            } while (true);
-        }
-
-        @Override
-        public void remove() {
-            throw new UnsupportedOperationException("Unsupported yet");
-        }
-
-    }
-
-    /**
-     * Method to return an iterator.
-     *
-     * This method enables Java's enhanced for loop. With this you can have a FusionDictionary x
-     * and say : for (Word w : x) {}
-     */
-    @Override
-    public Iterator<Word> iterator() {
-        return new DictionaryIterator(mRootNodeArray.mData);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/MakedictLog.java b/java/src/com/android/inputmethod/latin/makedict/MakedictLog.java
deleted file mode 100644
index cf07209..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/MakedictLog.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import android.util.Log;
-
-/**
- * Wrapper to redirect log events to the right output medium.
- */
-public final class MakedictLog {
-    public static final boolean DBG = false;
-    private static final String TAG = MakedictLog.class.getSimpleName();
-
-    public static void d(String message) {
-        if (DBG) {
-            Log.d(TAG, message);
-        }
-    }
-
-    public static void i(String message) {
-        if (DBG) {
-            Log.i(TAG, message);
-        }
-    }
-
-    public static void w(String message) {
-        Log.w(TAG, message);
-    }
-
-    public static void e(String message) {
-        Log.e(TAG, message);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java b/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java
new file mode 100644
index 0000000..5fcbb63
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.utils.CombinedFormatUtils;
+
+import java.util.Arrays;
+
+public final class ProbabilityInfo {
+    public final int mProbability;
+    // mTimestamp, mLevel and mCount are historical info. These values are depend on the
+    // implementation in native code; thus, we must not use them and have any assumptions about
+    // them except for tests.
+    public final int mTimestamp;
+    public final int mLevel;
+    public final int mCount;
+
+    @UsedForTesting
+    public static ProbabilityInfo max(final ProbabilityInfo probabilityInfo1,
+            final ProbabilityInfo probabilityInfo2) {
+        if (probabilityInfo1 == null) {
+            return probabilityInfo2;
+        }
+        if (probabilityInfo2 == null) {
+            return probabilityInfo1;
+        }
+        if (probabilityInfo1.mProbability > probabilityInfo2.mProbability) {
+            return probabilityInfo1;
+        } else {
+            return probabilityInfo2;
+        }
+    }
+
+    public ProbabilityInfo(final int probability) {
+        this(probability, BinaryDictionary.NOT_A_VALID_TIMESTAMP, 0, 0);
+    }
+
+    public ProbabilityInfo(final int probability, final int timestamp, final int level,
+            final int count) {
+        mProbability = probability;
+        mTimestamp = timestamp;
+        mLevel = level;
+        mCount = count;
+    }
+
+    public boolean hasHistoricalInfo() {
+        return mTimestamp != BinaryDictionary.NOT_A_VALID_TIMESTAMP;
+    }
+
+    @Override
+    public int hashCode() {
+        if (hasHistoricalInfo()) {
+            return Arrays.hashCode(new Object[] { mProbability, mTimestamp, mLevel, mCount });
+        } else {
+            return Arrays.hashCode(new Object[] { mProbability });
+        }
+    }
+
+    @Override
+    public String toString() {
+        return CombinedFormatUtils.formatProbabilityInfo(this);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == this) return true;
+        if (!(o instanceof ProbabilityInfo)) return false;
+        final ProbabilityInfo p = (ProbabilityInfo)o;
+        if (!hasHistoricalInfo() && !p.hasHistoricalInfo()) {
+            return mProbability == p.mProbability;
+        }
+        return mProbability == p.mProbability && mTimestamp == p.mTimestamp && mLevel == p.mLevel
+                && mCount == p.mCount;
+    }
+}
\ No newline at end of file
diff --git a/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java b/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java
deleted file mode 100644
index 188de7a..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.util.ArrayList;
-
-/**
- * Raw PtNode info straight out of a file. This will contain numbers for addresses.
- */
-public final class PtNodeInfo {
-
-    public final int mOriginalAddress;
-    public final int mEndAddress;
-    public final int mFlags;
-    public final int[] mCharacters;
-    public final int mFrequency;
-    public final int mChildrenAddress;
-    public final int mParentAddress;
-    public final ArrayList<WeightedString> mShortcutTargets;
-    public final ArrayList<PendingAttribute> mBigrams;
-
-    public PtNodeInfo(final int originalAddress, final int endAddress, final int flags,
-            final int[] characters, final int frequency, final int parentAddress,
-            final int childrenAddress, final ArrayList<WeightedString> shortcutTargets,
-            final ArrayList<PendingAttribute> bigrams) {
-        mOriginalAddress = originalAddress;
-        mEndAddress = endAddress;
-        mFlags = flags;
-        mCharacters = characters;
-        mFrequency = frequency;
-        mParentAddress = parentAddress;
-        mChildrenAddress = childrenAddress;
-        mShortcutTargets = shortcutTargets;
-        mBigrams = bigrams;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/SparseTable.java b/java/src/com/android/inputmethod/latin/makedict/SparseTable.java
deleted file mode 100644
index 7592a0c..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/SparseTable.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-
-/**
- * SparseTable is an extensible map from integer to integer.
- * This holds one value for every mBlockSize keys, so it uses 1/mBlockSize'th of the full index
- * memory.
- */
-@UsedForTesting
-public class SparseTable {
-
-    /**
-     * mLookupTable is indexed by terminal ID, containing exactly one entry for every mBlockSize
-     * terminals.
-     * It contains at index i = j / mBlockSize the index in each ArrayList in mContentsTables where
-     * the values for terminals with IDs j to j + mBlockSize - 1 are stored as an mBlockSize-sized
-     * integer array.
-     */
-    private final ArrayList<Integer> mLookupTable;
-    private final ArrayList<ArrayList<Integer>> mContentTables;
-
-    private final int mBlockSize;
-    private final int mContentTableCount;
-    public static final int NOT_EXIST = -1;
-    public static final int SIZE_OF_INT_IN_BYTES = 4;
-
-    @UsedForTesting
-    public SparseTable(final int initialCapacity, final int blockSize,
-            final int contentTableCount) {
-        mBlockSize = blockSize;
-        final int lookupTableSize = initialCapacity / mBlockSize
-                + (initialCapacity % mBlockSize > 0 ? 1 : 0);
-        mLookupTable = new ArrayList<Integer>(Collections.nCopies(lookupTableSize, NOT_EXIST));
-        mContentTableCount = contentTableCount;
-        mContentTables = CollectionUtils.newArrayList();
-        for (int i = 0; i < mContentTableCount; ++i) {
-            mContentTables.add(new ArrayList<Integer>());
-        }
-    }
-
-    @UsedForTesting
-    public SparseTable(final ArrayList<Integer> lookupTable,
-            final ArrayList<ArrayList<Integer>> contentTables, final int blockSize) {
-        mBlockSize = blockSize;
-        mContentTableCount = contentTables.size();
-        mLookupTable = lookupTable;
-        mContentTables = contentTables;
-    }
-
-    /**
-     * Converts an byte array to an int array considering each set of 4 bytes is an int stored in
-     * big-endian.
-     * The length of byteArray must be a multiple of four.
-     * Otherwise, IndexOutOfBoundsException will be raised.
-     */
-    @UsedForTesting
-    private static ArrayList<Integer> convertByteArrayToIntegerArray(final byte[] byteArray) {
-        final ArrayList<Integer> integerArray = new ArrayList<Integer>(byteArray.length / 4);
-        for (int i = 0; i < byteArray.length; i += 4) {
-            int value = 0;
-            for (int j = i; j < i + 4; ++j) {
-                value <<= 8;
-                value |= byteArray[j] & 0xFF;
-             }
-            integerArray.add(value);
-        }
-        return integerArray;
-    }
-
-    @UsedForTesting
-    public int get(final int contentTableIndex, final int index) {
-        if (!contains(index)) {
-            return NOT_EXIST;
-        }
-        return mContentTables.get(contentTableIndex).get(
-                mLookupTable.get(index / mBlockSize) + (index % mBlockSize));
-    }
-
-    @UsedForTesting
-    public ArrayList<Integer> getAll(final int index) {
-        final ArrayList<Integer> ret = CollectionUtils.newArrayList();
-        for (int i = 0; i < mContentTableCount; ++i) {
-            ret.add(get(i, index));
-        }
-        return ret;
-    }
-
-    @UsedForTesting
-    public void set(final int contentTableIndex, final int index, final int value) {
-        if (mLookupTable.get(index / mBlockSize) == NOT_EXIST) {
-            mLookupTable.set(index / mBlockSize, mContentTables.get(contentTableIndex).size());
-            for (int i = 0; i < mContentTableCount; ++i) {
-                for (int j = 0; j < mBlockSize; ++j) {
-                    mContentTables.get(i).add(NOT_EXIST);
-                }
-            }
-        }
-        mContentTables.get(contentTableIndex).set(
-                mLookupTable.get(index / mBlockSize) + (index % mBlockSize), value);
-    }
-
-    public void remove(final int indexOfContent, final int index) {
-        set(indexOfContent, index, NOT_EXIST);
-    }
-
-    @UsedForTesting
-    public int size() {
-        return mLookupTable.size() * mBlockSize;
-    }
-
-    @UsedForTesting
-    /* package */ int getContentTableSize() {
-        // This class always has at least one content table.
-        return mContentTables.get(0).size();
-    }
-
-    @UsedForTesting
-    /* package */ int getLookupTableSize() {
-        return mLookupTable.size();
-    }
-
-    public boolean contains(final int index) {
-        if (index < 0 || index / mBlockSize >= mLookupTable.size()
-                || mLookupTable.get(index / mBlockSize) == NOT_EXIST) {
-            return false;
-        }
-        return true;
-    }
-
-    @UsedForTesting
-    public void write(final OutputStream lookupOutStream, final OutputStream[] contentOutStreams)
-            throws IOException {
-         if (contentOutStreams.length != mContentTableCount) {
-             throw new RuntimeException(contentOutStreams.length + " streams are given, but the"
-                     + " table has " + mContentTableCount + " content tables.");
-         }
-        for (final int index : mLookupTable) {
-          BinaryDictEncoderUtils.writeUIntToStream(lookupOutStream, index, SIZE_OF_INT_IN_BYTES);
-        }
-
-        for (int i = 0; i < contentOutStreams.length; ++i) {
-            for (final int data : mContentTables.get(i)) {
-                BinaryDictEncoderUtils.writeUIntToStream(contentOutStreams[i], data,
-                        SIZE_OF_INT_IN_BYTES);
-            }
-        }
-    }
-
-    @UsedForTesting
-    public void writeToFiles(final File lookupTableFile, final File[] contentFiles)
-            throws IOException {
-        FileOutputStream lookupTableOutStream = null;
-        final FileOutputStream[] contentTableOutStreams = new FileOutputStream[mContentTableCount];
-        try {
-            lookupTableOutStream = new FileOutputStream(lookupTableFile);
-            for (int i = 0; i < contentFiles.length; ++i) {
-                contentTableOutStreams[i] = new FileOutputStream(contentFiles[i]);
-            }
-            write(lookupTableOutStream, contentTableOutStreams);
-        } finally {
-            if (lookupTableOutStream != null) {
-                lookupTableOutStream.close();
-            }
-            for (int i = 0; i < contentTableOutStreams.length; ++i) {
-                if (contentTableOutStreams[i] != null) {
-                    contentTableOutStreams[i].close();
-                }
-            }
-        }
-    }
-
-    private static byte[] readFileToByteArray(final File file) throws IOException {
-        final byte[] contents = new byte[(int) file.length()];
-        FileInputStream inStream = null;
-        try {
-            inStream = new FileInputStream(file);
-            inStream.read(contents);
-        } finally {
-            if (inStream != null) {
-                inStream.close();
-            }
-        }
-        return contents;
-    }
-
-    @UsedForTesting
-    public static SparseTable readFromFiles(final File lookupTableFile, final File[] contentFiles,
-            final int blockSize) throws IOException {
-        final ArrayList<ArrayList<Integer>> contentTables =
-                new ArrayList<ArrayList<Integer>>(contentFiles.length);
-        for (int i = 0; i < contentFiles.length; ++i) {
-            contentTables.add(convertByteArrayToIntegerArray(readFileToByteArray(contentFiles[i])));
-        }
-        return new SparseTable(convertByteArrayToIntegerArray(readFileToByteArray(lookupTableFile)),
-                contentTables, blockSize);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java
deleted file mode 100644
index acab4f8..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.utils.JniUtils;
-
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/**
- * An implementation of DictDecoder for version 3 binary dictionary.
- */
-@UsedForTesting
-public class Ver3DictDecoder extends AbstractDictDecoder {
-    private static final String TAG = Ver3DictDecoder.class.getSimpleName();
-
-    static {
-        JniUtils.loadNativeLibrary();
-    }
-
-    // TODO: implement something sensical instead of just a phony method
-    private static native int doNothing();
-
-    protected static class PtNodeReader extends AbstractDictDecoder.PtNodeReader {
-        private static int readFrequency(final DictBuffer dictBuffer) {
-            return dictBuffer.readUnsignedByte();
-        }
-    }
-
-    protected final File mDictionaryBinaryFile;
-    private final DictionaryBufferFactory mBufferFactory;
-    protected DictBuffer mDictBuffer;
-
-    /* package */ Ver3DictDecoder(final File file, final int factoryFlag) {
-        mDictionaryBinaryFile = file;
-        mDictBuffer = null;
-
-        if ((factoryFlag & MASK_DICTBUFFER) == USE_READONLY_BYTEBUFFER) {
-            mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
-        } else if ((factoryFlag  & MASK_DICTBUFFER) == USE_BYTEARRAY) {
-            mBufferFactory = new DictionaryBufferFromByteArrayFactory();
-        } else if ((factoryFlag & MASK_DICTBUFFER) == USE_WRITABLE_BYTEBUFFER) {
-            mBufferFactory = new DictionaryBufferFromWritableByteBufferFactory();
-        } else {
-            mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
-        }
-    }
-
-    /* package */ Ver3DictDecoder(final File file, final DictionaryBufferFactory factory) {
-        mDictionaryBinaryFile = file;
-        mBufferFactory = factory;
-    }
-
-    @Override
-    public void openDictBuffer() throws FileNotFoundException, IOException {
-        mDictBuffer = mBufferFactory.getDictionaryBuffer(mDictionaryBinaryFile);
-    }
-
-    @Override
-    public boolean isDictBufferOpen() {
-        return mDictBuffer != null;
-    }
-
-    /* package */ DictBuffer getDictBuffer() {
-        return mDictBuffer;
-    }
-
-    @UsedForTesting
-    /* package */ DictBuffer openAndGetDictBuffer() throws FileNotFoundException, IOException {
-        openDictBuffer();
-        return getDictBuffer();
-    }
-
-    @Override
-    public FileHeader readHeader() throws IOException, UnsupportedFormatException {
-        if (mDictBuffer == null) {
-            openDictBuffer();
-        }
-        final FileHeader header = super.readHeader(mDictBuffer);
-        final int version = header.mFormatOptions.mVersion;
-        if (!(version >= 2 && version <= 3)) {
-          throw new UnsupportedFormatException("File header has a wrong version : " + version);
-        }
-        return header;
-    }
-
-    // TODO: Make this buffer multi thread safe.
-    private final int[] mCharacterBuffer = new int[FormatSpec.MAX_WORD_LENGTH];
-    @Override
-    public PtNodeInfo readPtNode(final int ptNodePos, final FormatOptions options) {
-        int addressPointer = ptNodePos;
-        final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer);
-        addressPointer += FormatSpec.PTNODE_FLAGS_SIZE;
-
-        final int parentAddress = PtNodeReader.readParentAddress(mDictBuffer, options);
-        if (BinaryDictIOUtils.supportsDynamicUpdate(options)) {
-            addressPointer += FormatSpec.PARENT_ADDRESS_SIZE;
-        }
-
-        final int characters[];
-        if (0 != (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS)) {
-            int index = 0;
-            int character = CharEncoding.readChar(mDictBuffer);
-            addressPointer += CharEncoding.getCharSize(character);
-            while (FormatSpec.INVALID_CHARACTER != character) {
-                // FusionDictionary is making sure that the length of the word is smaller than
-                // MAX_WORD_LENGTH.
-                // So we'll never write past the end of mCharacterBuffer.
-                mCharacterBuffer[index++] = character;
-                character = CharEncoding.readChar(mDictBuffer);
-                addressPointer += CharEncoding.getCharSize(character);
-            }
-            characters = Arrays.copyOfRange(mCharacterBuffer, 0, index);
-        } else {
-            final int character = CharEncoding.readChar(mDictBuffer);
-            addressPointer += CharEncoding.getCharSize(character);
-            characters = new int[] { character };
-        }
-        final int frequency;
-        if (0 != (FormatSpec.FLAG_IS_TERMINAL & flags)) {
-            frequency = PtNodeReader.readFrequency(mDictBuffer);
-            addressPointer += FormatSpec.PTNODE_FREQUENCY_SIZE;
-        } else {
-            frequency = PtNode.NOT_A_TERMINAL;
-        }
-        int childrenAddress = PtNodeReader.readChildrenAddress(mDictBuffer, flags, options);
-        if (childrenAddress != FormatSpec.NO_CHILDREN_ADDRESS) {
-            childrenAddress += addressPointer;
-        }
-        addressPointer += BinaryDictIOUtils.getChildrenAddressSize(flags, options);
-        final ArrayList<WeightedString> shortcutTargets;
-        if (0 != (flags & FormatSpec.FLAG_HAS_SHORTCUT_TARGETS)) {
-            // readShortcut will add shortcuts to shortcutTargets.
-            shortcutTargets = new ArrayList<WeightedString>();
-            addressPointer += PtNodeReader.readShortcut(mDictBuffer, shortcutTargets);
-        } else {
-            shortcutTargets = null;
-        }
-
-        final ArrayList<PendingAttribute> bigrams;
-        if (0 != (flags & FormatSpec.FLAG_HAS_BIGRAMS)) {
-            bigrams = new ArrayList<PendingAttribute>();
-            addressPointer += PtNodeReader.readBigramAddresses(mDictBuffer, bigrams, 
-                    addressPointer);
-            if (bigrams.size() >= FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
-                throw new RuntimeException("Too many bigrams in a PtNode (" + bigrams.size()
-                        + " but max is " + FormatSpec.MAX_BIGRAMS_IN_A_PTNODE + ")");
-            }
-        } else {
-            bigrams = null;
-        }
-        return new PtNodeInfo(ptNodePos, addressPointer, flags, characters, frequency,
-                parentAddress, childrenAddress, shortcutTargets, bigrams);
-    }
-
-    @Override
-    public FusionDictionary readDictionaryBinary(final FusionDictionary dict,
-            final boolean deleteDictIfBroken)
-            throws FileNotFoundException, IOException, UnsupportedFormatException {
-        if (mDictBuffer == null) {
-            openDictBuffer();
-        }
-        try {
-            return BinaryDictDecoderUtils.readDictionaryBinary(this, dict);
-        } catch (IOException e) {
-            Log.e(TAG, "The dictionary " + mDictionaryBinaryFile.getName() + " is broken.", e);
-            if (deleteDictIfBroken && !mDictionaryBinaryFile.delete()) {
-                Log.e(TAG, "Failed to delete the broken dictionary.");
-            }
-            throw e;
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "The dictionary " + mDictionaryBinaryFile.getName() + " is broken.", e);
-            if (deleteDictIfBroken && !mDictionaryBinaryFile.delete()) {
-                Log.e(TAG, "Failed to delete the broken dictionary.");
-            }
-            throw e;
-        }
-    }
-
-    @Override
-    public void setPosition(int newPos) {
-        mDictBuffer.position(newPos);
-    }
-
-    @Override
-    public int getPosition() {
-        return mDictBuffer.position();
-    }
-
-    @Override
-    public int readPtNodeCount() {
-        return BinaryDictDecoderUtils.readPtNodeCount(mDictBuffer);
-    }
-
-    @Override
-    public boolean readAndFollowForwardLink() {
-        final int nextAddress = mDictBuffer.readUnsignedInt24();
-        if (nextAddress >= 0 && nextAddress < mDictBuffer.limit()) {
-            mDictBuffer.position(nextAddress);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean hasNextPtNodeArray() {
-        return mDictBuffer.position() != FormatSpec.NO_FORWARD_LINK_ADDRESS;
-    }
-
-    @Override
-    public void skipPtNode(final FormatOptions formatOptions) {
-        final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer);
-        PtNodeReader.readParentAddress(mDictBuffer, formatOptions);
-        BinaryDictIOUtils.skipString(mDictBuffer,
-                (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS) != 0);
-        PtNodeReader.readChildrenAddress(mDictBuffer, flags, formatOptions);
-        if ((flags & FormatSpec.FLAG_IS_TERMINAL) != 0) PtNodeReader.readFrequency(mDictBuffer);
-        if ((flags & FormatSpec.FLAG_HAS_SHORTCUT_TARGETS) != 0) {
-            final int shortcutsSize = mDictBuffer.readUnsignedShort();
-            mDictBuffer.position(mDictBuffer.position() + shortcutsSize
-                    - FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE);
-        }
-        if ((flags & FormatSpec.FLAG_HAS_BIGRAMS) != 0) {
-            int bigramCount = 0;
-            while (bigramCount++ < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
-                final int bigramFlags = mDictBuffer.readUnsignedByte();
-                switch (bigramFlags & FormatSpec.MASK_BIGRAM_ATTR_ADDRESS_TYPE) {
-                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE:
-                        mDictBuffer.readUnsignedByte();
-                        break;
-                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES:
-                        mDictBuffer.readUnsignedShort();
-                        break;
-                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES:
-                        mDictBuffer.readUnsignedInt24();
-                        break;
-                }
-                if ((bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT) == 0) break;
-            }
-            if (bigramCount >= FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
-                throw new RuntimeException("Too many bigrams in a PtNode.");
-            }
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java
deleted file mode 100644
index 5da3453..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Ver3DictEncoder.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/**
- * An implementation of DictEncoder for version 3 binary dictionary.
- */
-public class Ver3DictEncoder implements DictEncoder {
-
-    private final File mDictFile;
-    private OutputStream mOutStream;
-    private byte[] mBuffer;
-    private int mPosition;
-
-    public Ver3DictEncoder(final File dictFile) {
-        mDictFile = dictFile;
-        mOutStream = null;
-        mBuffer = null;
-    }
-
-    // This constructor is used only by BinaryDictOffdeviceUtilsTests.
-    // If you want to use this in the production code, you should consider keeping consistency of
-    // the interface of Ver3DictDecoder by using factory.
-    public Ver3DictEncoder(final OutputStream outStream) {
-        mDictFile = null;
-        mOutStream = outStream;
-    }
-
-    private void openStream() throws FileNotFoundException {
-        mOutStream = new FileOutputStream(mDictFile);
-    }
-
-    private void close() throws IOException {
-        if (mOutStream != null) {
-            mOutStream.close();
-            mOutStream = null;
-        }
-    }
-
-    @Override
-    public void writeDictionary(final FusionDictionary dict, final FormatOptions formatOptions)
-            throws IOException, UnsupportedFormatException {
-        if (formatOptions.mVersion > FormatSpec.VERSION3) {
-            throw new UnsupportedFormatException(
-                    "The given format options has wrong version number : "
-                    + formatOptions.mVersion);
-        }
-
-        if (mOutStream == null) {
-            openStream();
-        }
-        BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions);
-
-        // Addresses are limited to 3 bytes, but since addresses can be relative to each node
-        // array, the structure itself is not limited to 16MB. However, if it is over 16MB deciding
-        // the order of the PtNode arrays becomes a quite complicated problem, because though the
-        // dictionary itself does not have a size limit, each node array must still be within 16MB
-        // of all its children and parents. As long as this is ensured, the dictionary file may
-        // grow to any size.
-
-        // Leave the choice of the optimal node order to the flattenTree function.
-        MakedictLog.i("Flattening the tree...");
-        ArrayList<PtNodeArray> flatNodes = BinaryDictEncoderUtils.flattenTree(dict.mRootNodeArray);
-
-        MakedictLog.i("Computing addresses...");
-        BinaryDictEncoderUtils.computeAddresses(dict, flatNodes, formatOptions);
-        MakedictLog.i("Checking PtNode array...");
-        if (MakedictLog.DBG) BinaryDictEncoderUtils.checkFlatPtNodeArrayList(flatNodes);
-
-        // Create a buffer that matches the final dictionary size.
-        final PtNodeArray lastNodeArray = flatNodes.get(flatNodes.size() - 1);
-        final int bufferSize = lastNodeArray.mCachedAddressAfterUpdate + lastNodeArray.mCachedSize;
-        mBuffer = new byte[bufferSize];
-
-        MakedictLog.i("Writing file...");
-
-        for (PtNodeArray nodeArray : flatNodes) {
-            BinaryDictEncoderUtils.writePlacedPtNodeArray(dict, this, nodeArray, formatOptions);
-        }
-        if (MakedictLog.DBG) BinaryDictEncoderUtils.showStatistics(flatNodes);
-        mOutStream.write(mBuffer, 0, mPosition);
-
-        MakedictLog.i("Done");
-        close();
-    }
-
-    @Override
-    public void setPosition(final int position) {
-        if (mBuffer == null || position < 0 || position >= mBuffer.length) return;
-        mPosition = position;
-    }
-
-    @Override
-    public int getPosition() {
-        return mPosition;
-    }
-
-    @Override
-    public void writePtNodeCount(final int ptNodeCount) {
-        final int countSize = BinaryDictIOUtils.getPtNodeCountSize(ptNodeCount);
-        if (countSize != 1 && countSize != 2) {
-            throw new RuntimeException("Strange size from getGroupCountSize : " + countSize);
-        }
-        final int encodedPtNodeCount = (countSize == 2) ?
-                (ptNodeCount | FormatSpec.LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG) : ptNodeCount;
-        mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, encodedPtNodeCount,
-                countSize);
-    }
-
-    private void writePtNodeFlags(final PtNode ptNode, final FormatOptions formatOptions) {
-        final int childrenPos = BinaryDictEncoderUtils.getChildrenPosition(ptNode, formatOptions);
-        mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition,
-                BinaryDictEncoderUtils.makePtNodeFlags(ptNode, childrenPos, formatOptions),
-                FormatSpec.PTNODE_FLAGS_SIZE);
-    }
-
-    private void writeParentPosition(final int parentPosition, final PtNode ptNode,
-            final FormatOptions formatOptions) {
-        if (parentPosition == FormatSpec.NO_PARENT_ADDRESS) {
-            mPosition = BinaryDictEncoderUtils.writeParentAddress(mBuffer, mPosition,
-                    parentPosition, formatOptions);
-        } else {
-            mPosition = BinaryDictEncoderUtils.writeParentAddress(mBuffer, mPosition,
-                    parentPosition - ptNode.mCachedAddressAfterUpdate, formatOptions);
-        }
-    }
-
-    private void writeCharacters(final int[] codePoints, final boolean hasSeveralChars) {
-        mPosition = CharEncoding.writeCharArray(codePoints, mBuffer, mPosition);
-        if (hasSeveralChars) {
-            mBuffer[mPosition++] = FormatSpec.PTNODE_CHARACTERS_TERMINATOR;
-        }
-    }
-
-    private void writeFrequency(final int frequency) {
-        if (frequency >= 0) {
-            mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, frequency,
-                    FormatSpec.PTNODE_FREQUENCY_SIZE);
-        }
-    }
-
-    private void writeChildrenPosition(final PtNode ptNode, final FormatOptions formatOptions) {
-        final int childrenPos = BinaryDictEncoderUtils.getChildrenPosition(ptNode, formatOptions);
-        if (formatOptions.mSupportsDynamicUpdate) {
-            mPosition += BinaryDictEncoderUtils.writeSignedChildrenPosition(mBuffer, mPosition,
-                    childrenPos);
-        } else {
-            mPosition += BinaryDictEncoderUtils.writeChildrenPosition(mBuffer, mPosition,
-                    childrenPos);
-        }
-    }
-
-    /**
-     * Write a shortcut attributes list to mBuffer.
-     *
-     * @param shortcuts the shortcut attributes list.
-     */
-    private void writeShortcuts(final ArrayList<WeightedString> shortcuts) {
-        if (null == shortcuts || shortcuts.isEmpty()) return;
-
-        final int indexOfShortcutByteSize = mPosition;
-        mPosition += FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE;
-        final Iterator<WeightedString> shortcutIterator = shortcuts.iterator();
-        while (shortcutIterator.hasNext()) {
-            final WeightedString target = shortcutIterator.next();
-            final int shortcutFlags = BinaryDictEncoderUtils.makeShortcutFlags(
-                    shortcutIterator.hasNext(),
-                    target.mFrequency);
-            mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, shortcutFlags,
-                    FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
-            final int shortcutShift = CharEncoding.writeString(mBuffer, mPosition, target.mWord);
-            mPosition += shortcutShift;
-        }
-        final int shortcutByteSize = mPosition - indexOfShortcutByteSize;
-        if (shortcutByteSize > FormatSpec.MAX_SHORTCUT_LIST_SIZE_IN_A_PTNODE) {
-            throw new RuntimeException("Shortcut list too large");
-        }
-        BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, indexOfShortcutByteSize, shortcutByteSize,
-                FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE);
-    }
-
-    /**
-     * Write a bigram attributes list to mBuffer.
-     *
-     * @param bigrams the bigram attributes list.
-     * @param dict the dictionary the node array is a part of (for relative offsets).
-     */
-    private void writeBigrams(final ArrayList<WeightedString> bigrams,
-            final FusionDictionary dict) {
-        if (bigrams == null) return;
-
-        final Iterator<WeightedString> bigramIterator = bigrams.iterator();
-        while (bigramIterator.hasNext()) {
-            final WeightedString bigram = bigramIterator.next();
-            final PtNode target =
-                    FusionDictionary.findWordInTree(dict.mRootNodeArray, bigram.mWord);
-            final int addressOfBigram = target.mCachedAddressAfterUpdate;
-            final int unigramFrequencyForThisWord = target.mFrequency;
-            final int offset = addressOfBigram
-                    - (mPosition + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
-            final int bigramFlags = BinaryDictEncoderUtils.makeBigramFlags(bigramIterator.hasNext(),
-                    offset, bigram.mFrequency, unigramFrequencyForThisWord, bigram.mWord);
-            mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, bigramFlags,
-                    FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
-            mPosition += BinaryDictEncoderUtils.writeChildrenPosition(mBuffer, mPosition,
-                    Math.abs(offset));
-        }
-    }
-
-    @Override
-    public void writeForwardLinkAddress(final int forwardLinkAddress) {
-        mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, forwardLinkAddress,
-                FormatSpec.FORWARD_LINK_ADDRESS_SIZE);
-    }
-
-    @Override
-    public void writePtNode(final PtNode ptNode, final int parentPosition,
-            final FormatOptions formatOptions, final FusionDictionary dict) {
-        writePtNodeFlags(ptNode, formatOptions);
-        writeParentPosition(parentPosition, ptNode, formatOptions);
-        writeCharacters(ptNode.mChars, ptNode.hasSeveralChars());
-        writeFrequency(ptNode.mFrequency);
-        writeChildrenPosition(ptNode, formatOptions);
-        writeShortcuts(ptNode.mShortcutTargets);
-        writeBigrams(ptNode.mBigrams, dict);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver3DictUpdater.java b/java/src/com/android/inputmethod/latin/makedict/Ver3DictUpdater.java
deleted file mode 100644
index 07adda6..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Ver3DictUpdater.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-
-/**
- * An implementation of DictUpdater for version 3 binary dictionary.
- */
-@UsedForTesting
-public class Ver3DictUpdater extends Ver3DictDecoder implements DictUpdater {
-    private OutputStream mOutStream;
-
-    @UsedForTesting
-    public Ver3DictUpdater(final File dictFile, final int factoryType) {
-        // DictUpdater must have an updatable DictBuffer.
-        super(dictFile, ((factoryType & MASK_DICTBUFFER) == USE_BYTEARRAY)
-                ? USE_BYTEARRAY : USE_WRITABLE_BYTEBUFFER);
-        mOutStream = null;
-    }
-
-    private void openStreamAndBuffer() throws FileNotFoundException, IOException {
-        super.openDictBuffer();
-        mOutStream = new FileOutputStream(mDictionaryBinaryFile, true /* append */);
-    }
-
-    private void close() throws IOException {
-        if (mOutStream != null) {
-            mOutStream.close();
-            mOutStream = null;
-        }
-    }
-
-    @Override @UsedForTesting
-    public void deleteWord(final String word) throws IOException, UnsupportedFormatException {
-        if (mOutStream == null) openStreamAndBuffer();
-        mDictBuffer.position(0);
-        readHeader();
-        final int wordPos = getTerminalPosition(word);
-        if (wordPos != FormatSpec.NOT_VALID_WORD) {
-            mDictBuffer.position(wordPos);
-            final int flags = mDictBuffer.readUnsignedByte();
-            mDictBuffer.position(wordPos);
-            mDictBuffer.put((byte) DynamicBinaryDictIOUtils.markAsDeleted(flags));
-        }
-        close();
-    }
-
-    @Override @UsedForTesting
-    public void insertWord(final String word, final int frequency,
-            final ArrayList<WeightedString> bigramStrings,
-            final ArrayList<WeightedString> shortcuts,
-            final boolean isNotAWord, final boolean isBlackListEntry)
-                    throws IOException, UnsupportedFormatException {
-        if (mOutStream == null) openStreamAndBuffer();
-        DynamicBinaryDictIOUtils.insertWord(this, mOutStream, word, frequency, bigramStrings,
-                shortcuts, isNotAWord, isBlackListEntry);
-        close();
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
deleted file mode 100644
index 734223e..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/**
- * An implementation of binary dictionary decoder for version 4 binary dictionary.
- */
-@UsedForTesting
-public class Ver4DictDecoder extends AbstractDictDecoder {
-    private static final String TAG = Ver4DictDecoder.class.getSimpleName();
-
-    private static final int FILETYPE_TRIE = 1;
-    private static final int FILETYPE_FREQUENCY = 2;
-    private static final int FILETYPE_TERMINAL_ADDRESS_TABLE = 3;
-    private static final int FILETYPE_BIGRAM_FREQ = 4;
-    private static final int FILETYPE_SHORTCUT = 5;
-
-    private final File mDictDirectory;
-    private final DictionaryBufferFactory mBufferFactory;
-    protected DictBuffer mDictBuffer;
-    private DictBuffer mFrequencyBuffer;
-    private DictBuffer mTerminalAddressTableBuffer;
-    private DictBuffer mBigramBuffer;
-    private DictBuffer mShortcutBuffer;
-    private SparseTable mBigramAddressTable;
-    private SparseTable mShortcutAddressTable;
-
-    @UsedForTesting
-    /* package */ Ver4DictDecoder(final File dictDirectory, final int factoryFlag) {
-        mDictDirectory = dictDirectory;
-        mDictBuffer = mFrequencyBuffer = null;
-
-        if ((factoryFlag & MASK_DICTBUFFER) == USE_READONLY_BYTEBUFFER) {
-            mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
-        } else if ((factoryFlag  & MASK_DICTBUFFER) == USE_BYTEARRAY) {
-            mBufferFactory = new DictionaryBufferFromByteArrayFactory();
-        } else if ((factoryFlag & MASK_DICTBUFFER) == USE_WRITABLE_BYTEBUFFER) {
-            mBufferFactory = new DictionaryBufferFromWritableByteBufferFactory();
-        } else {
-            mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
-        }
-    }
-
-    @UsedForTesting
-    /* package */ Ver4DictDecoder(final File dictDirectory, final DictionaryBufferFactory factory) {
-        mDictDirectory = dictDirectory;
-        mBufferFactory = factory;
-        mDictBuffer = mFrequencyBuffer = null;
-    }
-
-    private File getFile(final int fileType) {
-        if (fileType == FILETYPE_TRIE) {
-            return new File(mDictDirectory,
-                    mDictDirectory.getName() + FormatSpec.TRIE_FILE_EXTENSION);
-        } else if (fileType == FILETYPE_FREQUENCY) {
-            return new File(mDictDirectory,
-                    mDictDirectory.getName() + FormatSpec.FREQ_FILE_EXTENSION);
-        } else if (fileType == FILETYPE_TERMINAL_ADDRESS_TABLE) {
-            return new File(mDictDirectory,
-                    mDictDirectory.getName() + FormatSpec.TERMINAL_ADDRESS_TABLE_FILE_EXTENSION);
-        } else if (fileType == FILETYPE_BIGRAM_FREQ) {
-            return new File(mDictDirectory,
-                    mDictDirectory.getName() + FormatSpec.BIGRAM_FILE_EXTENSION
-                            + FormatSpec.BIGRAM_FREQ_CONTENT_ID);
-        } else if (fileType == FILETYPE_SHORTCUT) {
-            return new File(mDictDirectory,
-                    mDictDirectory.getName() + FormatSpec.SHORTCUT_FILE_EXTENSION
-                            + FormatSpec.SHORTCUT_CONTENT_ID);
-        } else {
-            throw new RuntimeException("Unsupported kind of file : " + fileType);
-        }
-    }
-
-    @Override
-    public void openDictBuffer() throws FileNotFoundException, IOException {
-        mDictBuffer = mBufferFactory.getDictionaryBuffer(getFile(FILETYPE_TRIE));
-        mFrequencyBuffer = mBufferFactory.getDictionaryBuffer(getFile(FILETYPE_FREQUENCY));
-        mTerminalAddressTableBuffer = mBufferFactory.getDictionaryBuffer(
-                getFile(FILETYPE_TERMINAL_ADDRESS_TABLE));
-        mBigramBuffer = mBufferFactory.getDictionaryBuffer(getFile(FILETYPE_BIGRAM_FREQ));
-        loadBigramAddressSparseTable();
-        mShortcutBuffer = mBufferFactory.getDictionaryBuffer(getFile(FILETYPE_SHORTCUT));
-        loadShortcutAddressSparseTable();
-    }
-
-    @Override
-    public boolean isDictBufferOpen() {
-        return mDictBuffer != null;
-    }
-
-    /* package */ DictBuffer getDictBuffer() {
-        return mDictBuffer;
-    }
-
-    @Override
-    public FileHeader readHeader() throws IOException, UnsupportedFormatException {
-        if (mDictBuffer == null) {
-            openDictBuffer();
-        }
-        final FileHeader header = super.readHeader(mDictBuffer);
-        final int version = header.mFormatOptions.mVersion;
-        if (version != 4) {
-            throw new UnsupportedFormatException("File header has a wrong version : " + version);
-        }
-        return header;
-    }
-
-    private void loadBigramAddressSparseTable() throws IOException {
-        final File lookupIndexFile = new File(mDictDirectory, mDictDirectory.getName()
-                + FormatSpec.BIGRAM_FILE_EXTENSION + FormatSpec.LOOKUP_TABLE_FILE_SUFFIX);
-        final File freqsFile = new File(mDictDirectory, mDictDirectory.getName()
-                + FormatSpec.BIGRAM_FILE_EXTENSION + FormatSpec.CONTENT_TABLE_FILE_SUFFIX
-                + FormatSpec.BIGRAM_FREQ_CONTENT_ID);
-        mBigramAddressTable = SparseTable.readFromFiles(lookupIndexFile, new File[] { freqsFile },
-                FormatSpec.BIGRAM_ADDRESS_TABLE_BLOCK_SIZE);
-    }
-
-    // TODO: Let's have something like SparseTableContentsReader in this class.
-    private void loadShortcutAddressSparseTable() throws IOException {
-        final File lookupIndexFile = new File(mDictDirectory, mDictDirectory.getName()
-                + FormatSpec.SHORTCUT_FILE_EXTENSION + FormatSpec.LOOKUP_TABLE_FILE_SUFFIX);
-        final File contentFile = new File(mDictDirectory, mDictDirectory.getName()
-                + FormatSpec.SHORTCUT_FILE_EXTENSION + FormatSpec.CONTENT_TABLE_FILE_SUFFIX
-                + FormatSpec.SHORTCUT_CONTENT_ID);
-        final File timestampsFile = new File(mDictDirectory, mDictDirectory.getName()
-                + FormatSpec.SHORTCUT_FILE_EXTENSION + FormatSpec.CONTENT_TABLE_FILE_SUFFIX
-                + FormatSpec.SHORTCUT_CONTENT_ID);
-        mShortcutAddressTable = SparseTable.readFromFiles(lookupIndexFile,
-                new File[] { contentFile, timestampsFile },
-                FormatSpec.SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE);
-    }
-
-    protected static class PtNodeReader extends AbstractDictDecoder.PtNodeReader {
-        protected static int readFrequency(final DictBuffer frequencyBuffer, final int terminalId) {
-            frequencyBuffer.position(terminalId * FormatSpec.FREQUENCY_AND_FLAGS_SIZE + 1);
-            return frequencyBuffer.readUnsignedByte();
-        }
-
-        protected static int readTerminalId(final DictBuffer dictBuffer) {
-            return dictBuffer.readInt();
-        }
-    }
-
-    private ArrayList<WeightedString> readShortcuts(final int terminalId) {
-        if (mShortcutAddressTable.get(0, terminalId) == SparseTable.NOT_EXIST) return null;
-
-        final ArrayList<WeightedString> ret = CollectionUtils.newArrayList();
-        final int posOfShortcuts = mShortcutAddressTable.get(FormatSpec.SHORTCUT_CONTENT_INDEX,
-                terminalId);
-        mShortcutBuffer.position(posOfShortcuts);
-        while (true) {
-            final int flags = mShortcutBuffer.readUnsignedByte();
-            final String word = CharEncoding.readString(mShortcutBuffer);
-            ret.add(new WeightedString(word,
-                    flags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY));
-            if (0 == (flags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break;
-        }
-        return ret;
-    }
-
-    // TODO: Make this buffer thread safe.
-    // TODO: Support words longer than FormatSpec.MAX_WORD_LENGTH.
-    private final int[] mCharacterBuffer = new int[FormatSpec.MAX_WORD_LENGTH];
-    @Override
-    public PtNodeInfo readPtNode(int ptNodePos, FormatOptions options) {
-        int addressPointer = ptNodePos;
-        final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer);
-        addressPointer += FormatSpec.PTNODE_FLAGS_SIZE;
-
-        final int parentAddress = PtNodeReader.readParentAddress(mDictBuffer, options);
-        if (BinaryDictIOUtils.supportsDynamicUpdate(options)) {
-            addressPointer += FormatSpec.PARENT_ADDRESS_SIZE;
-        }
-
-        final int characters[];
-        if (0 != (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS)) {
-            int index = 0;
-            int character = CharEncoding.readChar(mDictBuffer);
-            addressPointer += CharEncoding.getCharSize(character);
-            while (FormatSpec.INVALID_CHARACTER != character
-                    && index < FormatSpec.MAX_WORD_LENGTH) {
-                mCharacterBuffer[index++] = character;
-                character = CharEncoding.readChar(mDictBuffer);
-                addressPointer += CharEncoding.getCharSize(character);
-            }
-            characters = Arrays.copyOfRange(mCharacterBuffer, 0, index);
-        } else {
-            final int character = CharEncoding.readChar(mDictBuffer);
-            addressPointer += CharEncoding.getCharSize(character);
-            characters = new int[] { character };
-        }
-        final int terminalId;
-        if (0 != (FormatSpec.FLAG_IS_TERMINAL & flags)) {
-            terminalId = PtNodeReader.readTerminalId(mDictBuffer);
-            addressPointer += FormatSpec.PTNODE_TERMINAL_ID_SIZE;
-        } else {
-            terminalId = PtNode.NOT_A_TERMINAL;
-        }
-
-        final int frequency;
-        if (0 != (FormatSpec.FLAG_IS_TERMINAL & flags)) {
-            frequency = PtNodeReader.readFrequency(mFrequencyBuffer, terminalId);
-        } else {
-            frequency = PtNode.NOT_A_TERMINAL;
-        }
-        int childrenAddress = PtNodeReader.readChildrenAddress(mDictBuffer, flags, options);
-        if (childrenAddress != FormatSpec.NO_CHILDREN_ADDRESS) {
-            childrenAddress += addressPointer;
-        }
-        addressPointer += BinaryDictIOUtils.getChildrenAddressSize(flags, options);
-        final ArrayList<WeightedString> shortcutTargets = readShortcuts(terminalId);
-
-        final ArrayList<PendingAttribute> bigrams;
-        if (0 != (flags & FormatSpec.FLAG_HAS_BIGRAMS)) {
-            bigrams = new ArrayList<PendingAttribute>();
-            final int posOfBigrams = mBigramAddressTable.get(0 /* contentTableIndex */, terminalId);
-            mBigramBuffer.position(posOfBigrams);
-            while (bigrams.size() < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
-                // If bigrams.size() reaches FormatSpec.MAX_BIGRAMS_IN_A_PTNODE,
-                // remaining bigram entries are ignored.
-                final int bigramFlags = mBigramBuffer.readUnsignedByte();
-                final int targetTerminalId = mBigramBuffer.readUnsignedInt24();
-                mTerminalAddressTableBuffer.position(
-                        targetTerminalId * FormatSpec.TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE);
-                final int targetAddress = mTerminalAddressTableBuffer.readUnsignedInt24();
-                bigrams.add(new PendingAttribute(
-                        bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY,
-                        targetAddress));
-                if (0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break;
-            }
-            if (bigrams.size() >= FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
-                throw new RuntimeException("Too many bigrams in a PtNode (" + bigrams.size()
-                        + " but max is " + FormatSpec.MAX_BIGRAMS_IN_A_PTNODE + ")");
-            }
-        } else {
-            bigrams = null;
-        }
-        return new PtNodeInfo(ptNodePos, addressPointer, flags, characters, frequency,
-                parentAddress, childrenAddress, shortcutTargets, bigrams);
-    }
-
-    private void deleteDictFiles() {
-        final File[] files = mDictDirectory.listFiles();
-        for (int i = 0; i < files.length; ++i) {
-            files[i].delete();
-        }
-    }
-
-    @Override
-    public FusionDictionary readDictionaryBinary(final FusionDictionary dict,
-            final boolean deleteDictIfBroken)
-            throws FileNotFoundException, IOException, UnsupportedFormatException {
-        if (mDictBuffer == null) {
-            openDictBuffer();
-        }
-        try {
-            return BinaryDictDecoderUtils.readDictionaryBinary(this, dict);
-        } catch (IOException e) {
-            Log.e(TAG, "The dictionary " + mDictDirectory.getName() + " is broken.", e);
-            if (deleteDictIfBroken) {
-                deleteDictFiles();
-            }
-            throw e;
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "The dictionary " + mDictDirectory.getName() + " is broken.", e);
-            if (deleteDictIfBroken) {
-                deleteDictFiles();
-            }
-            throw e;
-        }
-    }
-
-    @Override
-    public void setPosition(int newPos) {
-        mDictBuffer.position(newPos);
-    }
-
-    @Override
-    public int getPosition() {
-        return mDictBuffer.position();
-    }
-
-    @Override
-    public int readPtNodeCount() {
-        return BinaryDictDecoderUtils.readPtNodeCount(mDictBuffer);
-    }
-
-    @Override
-    public boolean readAndFollowForwardLink() {
-        final int nextAddress = mDictBuffer.readUnsignedInt24();
-        if (nextAddress >= 0 && nextAddress < mDictBuffer.limit()) {
-            mDictBuffer.position(nextAddress);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean hasNextPtNodeArray() {
-        return mDictBuffer.position() != FormatSpec.NO_FORWARD_LINK_ADDRESS;
-    }
-
-    @Override
-    public void skipPtNode(final FormatOptions formatOptions) {
-        final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer);
-        PtNodeReader.readParentAddress(mDictBuffer, formatOptions);
-        BinaryDictIOUtils.skipString(mDictBuffer,
-                (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS) != 0);
-        if ((flags & FormatSpec.FLAG_IS_TERMINAL) != 0) PtNodeReader.readTerminalId(mDictBuffer);
-        PtNodeReader.readChildrenAddress(mDictBuffer, flags, formatOptions);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictEncoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictEncoder.java
deleted file mode 100644
index 8d5b48a..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictEncoder.java
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/**
- * An implementation of DictEncoder for version 4 binary dictionary.
- */
-@UsedForTesting
-public class Ver4DictEncoder implements DictEncoder {
-    private final File mDictPlacedDir;
-    private byte[] mTrieBuf;
-    private int mTriePos;
-    private int mHeaderSize;
-    private OutputStream mTrieOutStream;
-    private OutputStream mFreqOutStream;
-    private OutputStream mUnigramTimestampOutStream;
-    private OutputStream mTerminalAddressTableOutStream;
-    private File mDictDir;
-    private String mBaseFilename;
-    private BigramContentWriter mBigramWriter;
-    private ShortcutContentWriter mShortcutWriter;
-
-    @UsedForTesting
-    public Ver4DictEncoder(final File dictPlacedDir) {
-        mDictPlacedDir = dictPlacedDir;
-    }
-
-    private interface SparseTableContentWriterInterface {
-        public void write(final OutputStream outStream) throws IOException;
-    }
-
-    private static class SparseTableContentWriter {
-        private final int mContentCount;
-        private final SparseTable mSparseTable;
-        private final File mLookupTableFile;
-        protected final File mBaseDir;
-        private final File[] mAddressTableFiles;
-        private final File[] mContentFiles;
-        protected final OutputStream[] mContentOutStreams;
-
-        public SparseTableContentWriter(final String name, final int initialCapacity,
-                final int blockSize, final File baseDir, final String[] contentFilenames,
-                final String[] contentIds) {
-            if (contentFilenames.length != contentIds.length) {
-                throw new RuntimeException("The length of contentFilenames and the length of"
-                        + " contentIds are different " + contentFilenames.length + ", "
-                        + contentIds.length);
-            }
-            mContentCount = contentFilenames.length;
-            mSparseTable = new SparseTable(initialCapacity, blockSize, mContentCount);
-            mLookupTableFile = new File(baseDir, name + FormatSpec.LOOKUP_TABLE_FILE_SUFFIX);
-            mAddressTableFiles = new File[mContentCount];
-            mContentFiles = new File[mContentCount];
-            mBaseDir = baseDir;
-            for (int i = 0; i < mContentCount; ++i) {
-                mAddressTableFiles[i] = new File(mBaseDir,
-                        name + FormatSpec.CONTENT_TABLE_FILE_SUFFIX + contentIds[i]);
-                mContentFiles[i] = new File(mBaseDir, contentFilenames[i] + contentIds[i]);
-            }
-            mContentOutStreams = new OutputStream[mContentCount];
-        }
-
-        public void openStreams() throws FileNotFoundException {
-            for (int i = 0; i < mContentCount; ++i) {
-                mContentOutStreams[i] = new FileOutputStream(mContentFiles[i]);
-            }
-        }
-
-        protected void write(final int contentIndex, final int index,
-                final SparseTableContentWriterInterface writer) throws IOException {
-            mSparseTable.set(contentIndex, index, (int) mContentFiles[contentIndex].length());
-            writer.write(mContentOutStreams[contentIndex]);
-            mContentOutStreams[contentIndex].flush();
-        }
-
-        public void closeStreams() throws IOException {
-            mSparseTable.writeToFiles(mLookupTableFile, mAddressTableFiles);
-            for (int i = 0; i < mContentCount; ++i) {
-                mContentOutStreams[i].close();
-            }
-        }
-    }
-
-    private static class BigramContentWriter extends SparseTableContentWriter {
-        private final boolean mWriteTimestamp;
-
-        public BigramContentWriter(final String name, final int initialCapacity,
-                final File baseDir, final boolean writeTimestamp) {
-            super(name + FormatSpec.BIGRAM_FILE_EXTENSION, initialCapacity,
-                    FormatSpec.BIGRAM_ADDRESS_TABLE_BLOCK_SIZE, baseDir,
-                    getContentFilenames(name, writeTimestamp), getContentIds(writeTimestamp));
-            mWriteTimestamp = writeTimestamp;
-        }
-
-        private static String[] getContentFilenames(final String name,
-                final boolean writeTimestamp) {
-            final String[] contentFilenames;
-            if (writeTimestamp) {
-                contentFilenames = new String[] { name + FormatSpec.BIGRAM_FILE_EXTENSION,
-                        name + FormatSpec.BIGRAM_FILE_EXTENSION };
-            } else {
-                contentFilenames = new String[] { name + FormatSpec.BIGRAM_FILE_EXTENSION };
-            }
-            return contentFilenames;
-        }
-
-        private static String[] getContentIds(final boolean writeTimestamp) {
-            final String[] contentIds;
-            if (writeTimestamp) {
-                contentIds = new String[] { FormatSpec.BIGRAM_FREQ_CONTENT_ID,
-                        FormatSpec.BIGRAM_TIMESTAMP_CONTENT_ID };
-            } else {
-                contentIds = new String[] { FormatSpec.BIGRAM_FREQ_CONTENT_ID };
-            }
-            return contentIds;
-        }
-
-        public void writeBigramsForOneWord(final int terminalId, final int bigramCount,
-                final Iterator<WeightedString> bigramIterator, final FusionDictionary dict)
-                        throws IOException {
-            write(FormatSpec.BIGRAM_FREQ_CONTENT_INDEX, terminalId,
-                    new SparseTableContentWriterInterface() {
-                        @Override
-                        public void write(final OutputStream outStream) throws IOException {
-                            writeBigramsForOneWordInternal(outStream, bigramIterator, dict);
-                        }});
-            if (mWriteTimestamp) {
-                write(FormatSpec.BIGRAM_TIMESTAMP_CONTENT_INDEX, terminalId,
-                        new SparseTableContentWriterInterface() {
-                            @Override
-                            public void write(final OutputStream outStream) throws IOException {
-                                initBigramTimestampsCountersAndLevelsForOneWordInternal(outStream,
-                                        bigramCount);
-                            }});
-            }
-        }
-
-        private void writeBigramsForOneWordInternal(final OutputStream outStream,
-                final Iterator<WeightedString> bigramIterator, final FusionDictionary dict)
-                        throws IOException {
-            while (bigramIterator.hasNext()) {
-                final WeightedString bigram = bigramIterator.next();
-                final PtNode target =
-                        FusionDictionary.findWordInTree(dict.mRootNodeArray, bigram.mWord);
-                final int unigramFrequencyForThisWord = target.mFrequency;
-                final int bigramFlags = BinaryDictEncoderUtils.makeBigramFlags(
-                        bigramIterator.hasNext(), 0, bigram.mFrequency,
-                        unigramFrequencyForThisWord, bigram.mWord);
-                BinaryDictEncoderUtils.writeUIntToStream(outStream, bigramFlags,
-                        FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
-                BinaryDictEncoderUtils.writeUIntToStream(outStream, target.mTerminalId,
-                        FormatSpec.PTNODE_ATTRIBUTE_MAX_ADDRESS_SIZE);
-            }
-        }
-
-        private void initBigramTimestampsCountersAndLevelsForOneWordInternal(
-                final OutputStream outStream, final int bigramCount) throws IOException {
-            for (int i = 0; i < bigramCount; ++i) {
-                // TODO: Figure out what initial values should be.
-                BinaryDictEncoderUtils.writeUIntToStream(outStream, 0 /* value */,
-                        FormatSpec.BIGRAM_TIMESTAMP_SIZE);
-                BinaryDictEncoderUtils.writeUIntToStream(outStream, 0 /* value */,
-                        FormatSpec.BIGRAM_COUNTER_SIZE);
-                BinaryDictEncoderUtils.writeUIntToStream(outStream, 0 /* value */,
-                        FormatSpec.BIGRAM_LEVEL_SIZE);
-            }
-        }
-    }
-
-    private static class ShortcutContentWriter extends SparseTableContentWriter {
-        public ShortcutContentWriter(final String name, final int initialCapacity,
-                final File baseDir) {
-            super(name + FormatSpec.SHORTCUT_FILE_EXTENSION, initialCapacity,
-                    FormatSpec.SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE, baseDir,
-                    new String[] { name + FormatSpec.SHORTCUT_FILE_EXTENSION },
-                    new String[] { FormatSpec.SHORTCUT_CONTENT_ID });
-        }
-
-        public void writeShortcutForOneWord(final int terminalId,
-                final Iterator<WeightedString> shortcutIterator) throws IOException {
-            write(FormatSpec.SHORTCUT_CONTENT_INDEX, terminalId,
-                    new SparseTableContentWriterInterface() {
-                        @Override
-                        public void write(final OutputStream outStream) throws IOException {
-                            writeShortcutForOneWordInternal(outStream, shortcutIterator);
-                        }
-                    });
-        }
-
-        private void writeShortcutForOneWordInternal(final OutputStream outStream,
-                final Iterator<WeightedString> shortcutIterator) throws IOException {
-            while (shortcutIterator.hasNext()) {
-                final WeightedString target = shortcutIterator.next();
-                final int shortcutFlags = BinaryDictEncoderUtils.makeShortcutFlags(
-                        shortcutIterator.hasNext(), target.mFrequency);
-                BinaryDictEncoderUtils.writeUIntToStream(outStream, shortcutFlags,
-                        FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
-                CharEncoding.writeString(outStream, target.mWord);
-            }
-        }
-    }
-
-    private void openStreams(final FormatOptions formatOptions, final DictionaryOptions dictOptions)
-            throws FileNotFoundException, IOException {
-        final FileHeader header = new FileHeader(0, dictOptions, formatOptions);
-        mBaseFilename = header.getId() + "." + header.getVersion();
-        mDictDir = new File(mDictPlacedDir, mBaseFilename);
-        final File trieFile = new File(mDictDir, mBaseFilename + FormatSpec.TRIE_FILE_EXTENSION);
-        final File freqFile = new File(mDictDir, mBaseFilename + FormatSpec.FREQ_FILE_EXTENSION);
-        final File timestampFile = new File(mDictDir,
-                mBaseFilename + FormatSpec.UNIGRAM_TIMESTAMP_FILE_EXTENSION);
-        final File terminalAddressTableFile = new File(mDictDir,
-                mBaseFilename + FormatSpec.TERMINAL_ADDRESS_TABLE_FILE_EXTENSION);
-        if (!mDictDir.isDirectory()) {
-            if (mDictDir.exists()) mDictDir.delete();
-            mDictDir.mkdirs();
-        }
-        mTrieOutStream = new FileOutputStream(trieFile);
-        mFreqOutStream = new FileOutputStream(freqFile);
-        mTerminalAddressTableOutStream = new FileOutputStream(terminalAddressTableFile);
-        if (formatOptions.mHasTimestamp) {
-            mUnigramTimestampOutStream = new FileOutputStream(timestampFile);
-        }
-    }
-
-    private void close() throws IOException {
-        try {
-            if (mTrieOutStream != null) {
-                mTrieOutStream.close();
-            }
-            if (mFreqOutStream != null) {
-                mFreqOutStream.close();
-            }
-            if (mTerminalAddressTableOutStream != null) {
-                mTerminalAddressTableOutStream.close();
-            }
-            if (mUnigramTimestampOutStream != null) {
-                mUnigramTimestampOutStream.close();
-            }
-        } finally {
-            mTrieOutStream = null;
-            mFreqOutStream = null;
-            mTerminalAddressTableOutStream = null;
-        }
-    }
-
-    @Override
-    public void writeDictionary(final FusionDictionary dict, final FormatOptions formatOptions)
-            throws IOException, UnsupportedFormatException {
-        if (formatOptions.mVersion != FormatSpec.VERSION4) {
-            throw new UnsupportedFormatException("File header has a wrong version number : "
-                    + formatOptions.mVersion);
-        }
-        if (!mDictPlacedDir.isDirectory()) {
-            throw new UnsupportedFormatException("Given path is not a directory.");
-        }
-
-        if (mTrieOutStream == null) {
-            openStreams(formatOptions, dict.mOptions);
-        }
-
-        mHeaderSize = BinaryDictEncoderUtils.writeDictionaryHeader(mTrieOutStream, dict,
-                formatOptions);
-
-        MakedictLog.i("Flattening the tree...");
-        ArrayList<PtNodeArray> flatNodes = BinaryDictEncoderUtils.flattenTree(dict.mRootNodeArray);
-        int terminalCount = 0;
-        for (final PtNodeArray array : flatNodes) {
-            for (final PtNode node : array.mData) {
-                if (node.isTerminal()) node.mTerminalId = terminalCount++;
-            }
-        }
-
-        MakedictLog.i("Computing addresses...");
-        BinaryDictEncoderUtils.computeAddresses(dict, flatNodes, formatOptions);
-        if (MakedictLog.DBG) BinaryDictEncoderUtils.checkFlatPtNodeArrayList(flatNodes);
-
-        writeTerminalData(flatNodes, terminalCount);
-        if (formatOptions.mHasTimestamp) {
-            initUnigramTimestamps(terminalCount);
-        }
-        mBigramWriter = new BigramContentWriter(mBaseFilename, terminalCount, mDictDir,
-                formatOptions.mHasTimestamp);
-        writeBigrams(flatNodes, dict);
-        mShortcutWriter = new ShortcutContentWriter(mBaseFilename, terminalCount, mDictDir);
-        writeShortcuts(flatNodes);
-
-        final PtNodeArray lastNodeArray = flatNodes.get(flatNodes.size() - 1);
-        final int bufferSize = lastNodeArray.mCachedAddressAfterUpdate + lastNodeArray.mCachedSize;
-        mTrieBuf = new byte[bufferSize];
-
-        MakedictLog.i("Writing file...");
-        for (PtNodeArray nodeArray : flatNodes) {
-            BinaryDictEncoderUtils.writePlacedPtNodeArray(dict, this, nodeArray, formatOptions);
-        }
-        if (MakedictLog.DBG) {
-            BinaryDictEncoderUtils.showStatistics(flatNodes);
-            MakedictLog.i("has " + terminalCount + " terminals.");
-        }
-        mTrieOutStream.write(mTrieBuf);
-
-        MakedictLog.i("Done");
-        close();
-    }
-
-    @Override
-    public void setPosition(int position) {
-        if (mTrieBuf == null || position < 0 || position >- mTrieBuf.length) return;
-        mTriePos = position;
-    }
-
-    @Override
-    public int getPosition() {
-        return mTriePos;
-    }
-
-    @Override
-    public void writePtNodeCount(int ptNodeCount) {
-        final int countSize = BinaryDictIOUtils.getPtNodeCountSize(ptNodeCount);
-        // ptNodeCount must fit on one byte or two bytes.
-        // Please see comments in FormatSpec
-        if (countSize != 1 && countSize != 2) {
-            throw new RuntimeException("Strange size from getPtNodeCountSize : " + countSize);
-        }
-        final int encodedPtNodeCount = (countSize == 2) ?
-                (ptNodeCount | FormatSpec.LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG) : ptNodeCount;
-        mTriePos = BinaryDictEncoderUtils.writeUIntToBuffer(mTrieBuf, mTriePos, encodedPtNodeCount,
-                countSize);
-    }
-
-    private void writePtNodeFlags(final PtNode ptNode, final FormatOptions formatOptions) {
-        final int childrenPos = BinaryDictEncoderUtils.getChildrenPosition(ptNode, formatOptions);
-        mTriePos = BinaryDictEncoderUtils.writeUIntToBuffer(mTrieBuf, mTriePos,
-                BinaryDictEncoderUtils.makePtNodeFlags(ptNode, childrenPos, formatOptions),
-                FormatSpec.PTNODE_FLAGS_SIZE);
-    }
-
-    private void writeParentPosition(int parentPos, final PtNode ptNode,
-            final FormatOptions formatOptions) {
-        if (parentPos != FormatSpec.NO_PARENT_ADDRESS) {
-            parentPos -= ptNode.mCachedAddressAfterUpdate;
-        }
-        mTriePos = BinaryDictEncoderUtils.writeParentAddress(mTrieBuf, mTriePos, parentPos,
-                formatOptions);
-    }
-
-    private void writeCharacters(final int[] characters, final boolean hasSeveralChars) {
-        mTriePos = CharEncoding.writeCharArray(characters, mTrieBuf, mTriePos);
-        if (hasSeveralChars) {
-            mTrieBuf[mTriePos++] = FormatSpec.PTNODE_CHARACTERS_TERMINATOR;
-        }
-    }
-
-    private void writeTerminalId(final int terminalId) {
-        mTriePos = BinaryDictEncoderUtils.writeUIntToBuffer(mTrieBuf, mTriePos, terminalId,
-                FormatSpec.PTNODE_TERMINAL_ID_SIZE);
-    }
-
-    private void writeChildrenPosition(PtNode ptNode, FormatOptions formatOptions) {
-        final int childrenPos = BinaryDictEncoderUtils.getChildrenPosition(ptNode, formatOptions);
-        if (formatOptions.mSupportsDynamicUpdate) {
-            mTriePos += BinaryDictEncoderUtils.writeSignedChildrenPosition(mTrieBuf,
-                    mTriePos, childrenPos);
-        } else {
-            mTriePos += BinaryDictEncoderUtils.writeChildrenPosition(mTrieBuf,
-                    mTriePos, childrenPos);
-        }
-    }
-
-    private void writeBigrams(final ArrayList<PtNodeArray> flatNodes, final FusionDictionary dict)
-            throws IOException {
-        mBigramWriter.openStreams();
-        for (final PtNodeArray nodeArray : flatNodes) {
-            for (final PtNode ptNode : nodeArray.mData) {
-                if (ptNode.mBigrams != null) {
-                    mBigramWriter.writeBigramsForOneWord(ptNode.mTerminalId, ptNode.mBigrams.size(),
-                            ptNode.mBigrams.iterator(), dict);
-                }
-            }
-        }
-        mBigramWriter.closeStreams();
-    }
-
-    private void writeShortcuts(final ArrayList<PtNodeArray> flatNodes) throws IOException {
-        mShortcutWriter.openStreams();
-        for (final PtNodeArray nodeArray : flatNodes) {
-            for (final PtNode ptNode : nodeArray.mData) {
-                if (ptNode.mShortcutTargets != null && !ptNode.mShortcutTargets.isEmpty()) {
-                    mShortcutWriter.writeShortcutForOneWord(ptNode.mTerminalId,
-                            ptNode.mShortcutTargets.iterator());
-                }
-            }
-        }
-        mShortcutWriter.closeStreams();
-    }
-
-    @Override
-    public void writeForwardLinkAddress(int forwardLinkAddress) {
-        mTriePos = BinaryDictEncoderUtils.writeUIntToBuffer(mTrieBuf, mTriePos,
-                forwardLinkAddress, FormatSpec.FORWARD_LINK_ADDRESS_SIZE);
-    }
-
-    @Override
-    public void writePtNode(final PtNode ptNode, final int parentPosition,
-            final FormatOptions formatOptions, final FusionDictionary dict) {
-        writePtNodeFlags(ptNode, formatOptions);
-        writeParentPosition(parentPosition, ptNode, formatOptions);
-        writeCharacters(ptNode.mChars, ptNode.hasSeveralChars());
-        if (ptNode.isTerminal()) {
-            writeTerminalId(ptNode.mTerminalId);
-        }
-        writeChildrenPosition(ptNode, formatOptions);
-    }
-
-    private void writeTerminalData(final ArrayList<PtNodeArray> flatNodes,
-          final int terminalCount) throws IOException {
-        final byte[] freqBuf = new byte[terminalCount * FormatSpec.FREQUENCY_AND_FLAGS_SIZE];
-        final byte[] terminalAddressTableBuf =
-                new byte[terminalCount * FormatSpec.TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE];
-        for (final PtNodeArray nodeArray : flatNodes) {
-            for (final PtNode ptNode : nodeArray.mData) {
-                if (ptNode.isTerminal()) {
-                    BinaryDictEncoderUtils.writeUIntToBuffer(freqBuf,
-                            ptNode.mTerminalId * FormatSpec.FREQUENCY_AND_FLAGS_SIZE,
-                            ptNode.mFrequency, FormatSpec.FREQUENCY_AND_FLAGS_SIZE);
-                    BinaryDictEncoderUtils.writeUIntToBuffer(terminalAddressTableBuf,
-                            ptNode.mTerminalId * FormatSpec.TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE,
-                            ptNode.mCachedAddressAfterUpdate + mHeaderSize,
-                            FormatSpec.TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE);
-                }
-            }
-        }
-        mFreqOutStream.write(freqBuf);
-        mTerminalAddressTableOutStream.write(terminalAddressTableBuf);
-    }
-
-    private void initUnigramTimestamps(final int terminalCount) throws IOException {
-        // Initial value of time stamps for each word is 0.
-        final byte[] unigramTimestampBuf =
-                new byte[terminalCount * FormatSpec.UNIGRAM_TIMESTAMP_SIZE];
-        mUnigramTimestampOutStream.write(unigramTimestampBuf);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictUpdater.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictUpdater.java
deleted file mode 100644
index 3d8f186..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictUpdater.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-
-/**
- * An implementation of DictUpdater for version 4 binary dictionary.
- */
-@UsedForTesting
-public class Ver4DictUpdater extends Ver4DictDecoder implements DictUpdater {
-
-    @UsedForTesting
-    public Ver4DictUpdater(final File dictDirectory, final int factoryType) {
-        // DictUpdater must have an updatable DictBuffer.
-        super(dictDirectory, ((factoryType & MASK_DICTBUFFER) == USE_BYTEARRAY)
-                ? USE_BYTEARRAY : USE_WRITABLE_BYTEBUFFER);
-    }
-
-    @Override
-    public void deleteWord(final String word) throws IOException, UnsupportedFormatException {
-        if (mDictBuffer == null) openDictBuffer();
-        readHeader();
-        final int wordPos = getTerminalPosition(word);
-        if (wordPos != FormatSpec.NOT_VALID_WORD) {
-            mDictBuffer.position(wordPos);
-            final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer);
-            mDictBuffer.position(wordPos);
-            mDictBuffer.put((byte) DynamicBinaryDictIOUtils.markAsDeleted(flags));
-        }
-    }
-
-    @Override
-    public void insertWord(final String word, final int frequency,
-        final ArrayList<WeightedString> bigramStrings, final ArrayList<WeightedString> shortcuts,
-        final boolean isNotAWord, final boolean isBlackListEntry)
-                throws IOException, UnsupportedFormatException {
-        // TODO: Implement this method.
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/WeightedString.java b/java/src/com/android/inputmethod/latin/makedict/WeightedString.java
new file mode 100644
index 0000000..f6782df
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/makedict/WeightedString.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+
+import java.util.Arrays;
+
+/**
+ * A string with a probability.
+ *
+ * This represents an "attribute", that is either a bigram or a shortcut.
+ */
+public final class WeightedString {
+    public final String mWord;
+    public ProbabilityInfo mProbabilityInfo;
+
+    public WeightedString(final String word, final int probability) {
+        this(word, new ProbabilityInfo(probability));
+    }
+
+    public WeightedString(final String word, final ProbabilityInfo probabilityInfo) {
+        mWord = word;
+        mProbabilityInfo = probabilityInfo;
+    }
+
+    @UsedForTesting
+    public int getProbability() {
+        return mProbabilityInfo.mProbability;
+    }
+
+    public void setProbability(final int probability) {
+        mProbabilityInfo = new ProbabilityInfo(probability);
+    }
+
+    @Override
+    public int hashCode() {
+        return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo});
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == this) return true;
+        if (!(o instanceof WeightedString)) return false;
+        final WeightedString w = (WeightedString)o;
+        return mWord.equals(w.mWord) && mProbabilityInfo.equals(w.mProbabilityInfo);
+    }
+}
\ No newline at end of file
diff --git a/java/src/com/android/inputmethod/latin/makedict/Word.java b/java/src/com/android/inputmethod/latin/makedict/Word.java
deleted file mode 100644
index 0eabb7b..0000000
--- a/java/src/com/android/inputmethod/latin/makedict/Word.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/**
- * Utility class for a word with a frequency.
- *
- * This is chiefly used to iterate a dictionary.
- */
-public final class Word implements Comparable<Word> {
-    public final String mWord;
-    public final int mFrequency;
-    public final ArrayList<WeightedString> mShortcutTargets;
-    public final ArrayList<WeightedString> mBigrams;
-    public final boolean mIsNotAWord;
-    public final boolean mIsBlacklistEntry;
-
-    private int mHashCode = 0;
-
-    public Word(final String word, final int frequency,
-            final ArrayList<WeightedString> shortcutTargets,
-            final ArrayList<WeightedString> bigrams,
-            final boolean isNotAWord, final boolean isBlacklistEntry) {
-        mWord = word;
-        mFrequency = frequency;
-        mShortcutTargets = shortcutTargets;
-        mBigrams = bigrams;
-        mIsNotAWord = isNotAWord;
-        mIsBlacklistEntry = isBlacklistEntry;
-    }
-
-    private static int computeHashCode(Word word) {
-        return Arrays.hashCode(new Object[] {
-                word.mWord,
-                word.mFrequency,
-                word.mShortcutTargets.hashCode(),
-                word.mBigrams.hashCode(),
-                word.mIsNotAWord,
-                word.mIsBlacklistEntry
-        });
-    }
-
-    /**
-     * Three-way comparison.
-     *
-     * A Word x is greater than a word y if x has a higher frequency. If they have the same
-     * frequency, they are sorted in lexicographic order.
-     */
-    @Override
-    public int compareTo(Word w) {
-        if (mFrequency < w.mFrequency) return 1;
-        if (mFrequency > w.mFrequency) return -1;
-        return mWord.compareTo(w.mWord);
-    }
-
-    /**
-     * Equality test.
-     *
-     * Words are equal if they have the same frequency, the same spellings, and the same
-     * attributes.
-     */
-    @Override
-    public boolean equals(Object o) {
-        if (o == this) return true;
-        if (!(o instanceof Word)) return false;
-        Word w = (Word)o;
-        return mFrequency == w.mFrequency && mWord.equals(w.mWord)
-                && mShortcutTargets.equals(w.mShortcutTargets)
-                && mBigrams.equals(w.mBigrams)
-                && mIsNotAWord == w.mIsNotAWord
-                && mIsBlacklistEntry == w.mIsBlacklistEntry;
-    }
-
-    @Override
-    public int hashCode() {
-        if (mHashCode == 0) {
-            mHashCode = computeHashCode(this);
-        }
-        return mHashCode;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
new file mode 100644
index 0000000..cd78e22
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.utils.CombinedFormatUtils;
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * Utility class for a word with a probability.
+ *
+ * This is chiefly used to iterate a dictionary.
+ */
+public final class WordProperty implements Comparable<WordProperty> {
+    public final String mWord;
+    public final ProbabilityInfo mProbabilityInfo;
+    public final ArrayList<WeightedString> mShortcutTargets;
+    public final ArrayList<WeightedString> mBigrams;
+    // TODO: Support mIsBeginningOfSentence.
+    public final boolean mIsBeginningOfSentence;
+    public final boolean mIsNotAWord;
+    public final boolean mIsBlacklistEntry;
+    public final boolean mHasShortcuts;
+    public final boolean mHasBigrams;
+
+    private int mHashCode = 0;
+
+    @UsedForTesting
+    public WordProperty(final String word, final ProbabilityInfo probabilityInfo,
+            final ArrayList<WeightedString> shortcutTargets,
+            final ArrayList<WeightedString> bigrams,
+            final boolean isNotAWord, final boolean isBlacklistEntry) {
+        mWord = word;
+        mProbabilityInfo = probabilityInfo;
+        mShortcutTargets = shortcutTargets;
+        mBigrams = bigrams;
+        mIsBeginningOfSentence = false;
+        mIsNotAWord = isNotAWord;
+        mIsBlacklistEntry = isBlacklistEntry;
+        mHasBigrams = bigrams != null && !bigrams.isEmpty();
+        mHasShortcuts = shortcutTargets != null && !shortcutTargets.isEmpty();
+    }
+
+    private static ProbabilityInfo createProbabilityInfoFromArray(final int[] probabilityInfo) {
+      return new ProbabilityInfo(
+              probabilityInfo[BinaryDictionary.FORMAT_WORD_PROPERTY_PROBABILITY_INDEX],
+              probabilityInfo[BinaryDictionary.FORMAT_WORD_PROPERTY_TIMESTAMP_INDEX],
+              probabilityInfo[BinaryDictionary.FORMAT_WORD_PROPERTY_LEVEL_INDEX],
+              probabilityInfo[BinaryDictionary.FORMAT_WORD_PROPERTY_COUNT_INDEX]);
+    }
+
+    // Construct word property using information from native code.
+    // This represents invalid word when the probability is BinaryDictionary.NOT_A_PROBABILITY.
+    public WordProperty(final int[] codePoints, final boolean isNotAWord,
+            final boolean isBlacklisted, final boolean hasBigram, final boolean hasShortcuts,
+            final boolean isBeginningOfSentence, final int[] probabilityInfo,
+            final ArrayList<int[]> bigramTargets, final ArrayList<int[]> bigramProbabilityInfo,
+            final ArrayList<int[]> shortcutTargets,
+            final ArrayList<Integer> shortcutProbabilities) {
+        mWord = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints);
+        mProbabilityInfo = createProbabilityInfoFromArray(probabilityInfo);
+        mShortcutTargets = new ArrayList<>();
+        mBigrams = new ArrayList<>();
+        mIsBeginningOfSentence = isBeginningOfSentence;
+        mIsNotAWord = isNotAWord;
+        mIsBlacklistEntry = isBlacklisted;
+        mHasShortcuts = hasShortcuts;
+        mHasBigrams = hasBigram;
+
+        final int bigramTargetCount = bigramTargets.size();
+        for (int i = 0; i < bigramTargetCount; i++) {
+            final String bigramTargetString =
+                    StringUtils.getStringFromNullTerminatedCodePointArray(bigramTargets.get(i));
+            mBigrams.add(new WeightedString(bigramTargetString,
+                    createProbabilityInfoFromArray(bigramProbabilityInfo.get(i))));
+        }
+
+        final int shortcutTargetCount = shortcutTargets.size();
+        for (int i = 0; i < shortcutTargetCount; i++) {
+            final String shortcutTargetString =
+                    StringUtils.getStringFromNullTerminatedCodePointArray(shortcutTargets.get(i));
+            mShortcutTargets.add(
+                    new WeightedString(shortcutTargetString, shortcutProbabilities.get(i)));
+        }
+    }
+
+    public int getProbability() {
+        return mProbabilityInfo.mProbability;
+    }
+
+    private static int computeHashCode(WordProperty word) {
+        return Arrays.hashCode(new Object[] {
+                word.mWord,
+                word.mProbabilityInfo,
+                word.mShortcutTargets.hashCode(),
+                word.mBigrams.hashCode(),
+                word.mIsNotAWord,
+                word.mIsBlacklistEntry
+        });
+    }
+
+    /**
+     * Three-way comparison.
+     *
+     * A Word x is greater than a word y if x has a higher frequency. If they have the same
+     * frequency, they are sorted in lexicographic order.
+     */
+    @Override
+    public int compareTo(final WordProperty w) {
+        if (getProbability() < w.getProbability()) return 1;
+        if (getProbability() > w.getProbability()) return -1;
+        return mWord.compareTo(w.mWord);
+    }
+
+    /**
+     * Equality test.
+     *
+     * Words are equal if they have the same frequency, the same spellings, and the same
+     * attributes.
+     */
+    @Override
+    public boolean equals(Object o) {
+        if (o == this) return true;
+        if (!(o instanceof WordProperty)) return false;
+        WordProperty w = (WordProperty)o;
+        return mProbabilityInfo.equals(w.mProbabilityInfo) && mWord.equals(w.mWord)
+                && mShortcutTargets.equals(w.mShortcutTargets) && mBigrams.equals(w.mBigrams)
+                && mIsNotAWord == w.mIsNotAWord && mIsBlacklistEntry == w.mIsBlacklistEntry
+                && mHasBigrams == w.mHasBigrams && mHasShortcuts && w.mHasBigrams;
+    }
+
+    @Override
+    public int hashCode() {
+        if (mHashCode == 0) {
+            mHashCode = computeHashCode(this);
+        }
+        return mHashCode;
+    }
+
+    @UsedForTesting
+    public boolean isValid() {
+        return getProbability() != BinaryDictionary.NOT_A_PROBABILITY;
+    }
+
+    @Override
+    public String toString() {
+        return CombinedFormatUtils.formatWordProperty(this);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/personalization/AccountUtils.java b/java/src/com/android/inputmethod/latin/personalization/AccountUtils.java
index a446672..ab3ef96 100644
--- a/java/src/com/android/inputmethod/latin/personalization/AccountUtils.java
+++ b/java/src/com/android/inputmethod/latin/personalization/AccountUtils.java
@@ -35,7 +35,7 @@
     }
 
     public static List<String> getDeviceAccountsEmailAddresses(final Context context) {
-        final ArrayList<String> retval = new ArrayList<String>();
+        final ArrayList<String> retval = new ArrayList<>();
         for (final Account account : getAccounts(context)) {
             final String name = account.name;
             if (Patterns.EMAIL_ADDRESS.matcher(name).matches()) {
@@ -54,7 +54,7 @@
      */
     public static List<String> getDeviceAccountsWithDomain(
             final Context context, final String domain) {
-        final ArrayList<String> retval = new ArrayList<String>();
+        final ArrayList<String> retval = new ArrayList<>();
         final String atDomain = "@" + domain.toLowerCase(Locale.ROOT);
         for (final Account account : getAccounts(context)) {
             if (account.name.toLowerCase(Locale.ROOT).endsWith(atDomain)) {
diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
new file mode 100644
index 0000000..ac55b93
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import android.content.Context;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.ExpandableBinaryDictionary;
+
+import java.io.File;
+import java.util.Locale;
+
+public class ContextualDictionary extends ExpandableBinaryDictionary {
+    /* package */ static final String NAME = ContextualDictionary.class.getSimpleName();
+
+    private ContextualDictionary(final Context context, final Locale locale,
+            final File dictFile) {
+        super(context, getDictName(NAME, locale, dictFile), locale, Dictionary.TYPE_CONTEXTUAL,
+                dictFile);
+        // Always reset the contents.
+        clear();
+    }
+
+    @UsedForTesting
+    public static ContextualDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile, final String dictNamePrefix) {
+        return new ContextualDictionary(context, locale, dictFile);
+    }
+
+    @Override
+    public boolean isValidWord(final String word) {
+        // Strings out of this dictionary should not be considered existing words.
+        return false;
+    }
+
+    @Override
+    protected void loadInitialContentsLocked() {
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java
new file mode 100644
index 0000000..7dc120e
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/personalization/ContextualDictionaryUpdater.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import android.content.Context;
+
+import com.android.inputmethod.latin.DictionaryFacilitator;
+
+public class ContextualDictionaryUpdater {
+    public ContextualDictionaryUpdater(final Context context,
+            final DictionaryFacilitator dictionaryFacilitator,
+            final Runnable onUpdateRunnable) {
+    }
+
+    public void onLoadSettings(final boolean usePersonalizedDicts) {
+    }
+
+    public void onStartInputView(final String  packageName) {
+    }
+
+    public void onDestroy() {
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
index 1de15a3..1ba7b36 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DecayingExpandableBinaryDictionaryBase.java
@@ -17,25 +17,13 @@
 package com.android.inputmethod.latin.personalization;
 
 import android.content.Context;
-import android.content.SharedPreferences;
-import android.util.Log;
 
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.Dictionary;
 import com.android.inputmethod.latin.ExpandableBinaryDictionary;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.makedict.DictDecoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
-import com.android.inputmethod.latin.settings.Settings;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils;
-import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils.OnAddWordListener;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
 
 import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -43,10 +31,7 @@
  * model.
  */
 public abstract class DecayingExpandableBinaryDictionaryBase extends ExpandableBinaryDictionary {
-    private static final String TAG = DecayingExpandableBinaryDictionaryBase.class.getSimpleName();
-    public static final boolean DBG_SAVE_RESTORE = false;
-    private static final boolean DBG_STRESS_TEST = false;
-    private static final boolean PROFILE_SAVE_RESTORE = LatinImeLogger.sDBG;
+    private static final boolean DBG_DUMP_ON_CLOSE = false;
 
     /** Any pair being typed or picked */
     public static final int FREQUENCY_FOR_TYPED = 2;
@@ -54,182 +39,51 @@
     public static final int FREQUENCY_FOR_WORDS_IN_DICTS = FREQUENCY_FOR_TYPED;
     public static final int FREQUENCY_FOR_WORDS_NOT_IN_DICTS = Dictionary.NOT_A_PROBABILITY;
 
-    /** Locale for which this user history dictionary is storing words */
-    private final String mLocale;
+    /** The locale for this dictionary. */
+    public final Locale mLocale;
 
-    private final String mFileName;
-
-    private final SharedPreferences mPrefs;
-
-    private final ArrayList<PersonalizationDictionaryUpdateSession> mSessions =
-            CollectionUtils.newArrayList();
-
-    // Should always be false except when we use this class for test
-    @UsedForTesting boolean mIsTest = false;
-
-    /* package */ DecayingExpandableBinaryDictionaryBase(final Context context,
-            final String locale, final SharedPreferences sp, final String dictionaryType,
-            final String fileName) {
-        super(context, fileName, dictionaryType, true);
+    protected DecayingExpandableBinaryDictionaryBase(final Context context,
+            final String dictName, final Locale locale, final String dictionaryType,
+            final File dictFile) {
+        super(context, dictName, locale, dictionaryType, dictFile);
         mLocale = locale;
-        mFileName = fileName;
-        mPrefs = sp;
-        if (mLocale != null && mLocale.length() > 1) {
-            asyncLoadDictionaryToMemory();
+        if (mLocale != null && mLocale.toString().length() > 1) {
             reloadDictionaryIfRequired();
         }
     }
 
     @Override
     public void close() {
-        if (!ExpandableBinaryDictionary.ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE) {
-            closeBinaryDictionary();
+        if (DBG_DUMP_ON_CLOSE) {
+            dumpAllWordsForDebug();
         }
         // Flush pending writes.
-        // TODO: Remove after this class become to use a dynamic binary dictionary.
-        asyncFlashAllBinaryDictionary();
-        Settings.writeLastUserHistoryWriteTime(mPrefs, mLocale);
+        asyncFlushBinaryDictionary();
+        super.close();
     }
 
     @Override
     protected Map<String, String> getHeaderAttributeMap() {
-        HashMap<String, String> attributeMap = new HashMap<String, String>();
-        attributeMap.put(FormatSpec.FileHeader.SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE,
-                FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
-        attributeMap.put(FormatSpec.FileHeader.USES_FORGETTING_CURVE_ATTRIBUTE,
-                FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
-        attributeMap.put(FormatSpec.FileHeader.DICTIONARY_ID_ATTRIBUTE, mFileName);
-        attributeMap.put(FormatSpec.FileHeader.DICTIONARY_LOCALE_ATTRIBUTE, mLocale);
+        final Map<String, String> attributeMap = super.getHeaderAttributeMap();
+        attributeMap.put(DictionaryHeader.USES_FORGETTING_CURVE_KEY,
+                DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+        attributeMap.put(DictionaryHeader.HAS_HISTORICAL_INFO_KEY,
+                DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
         return attributeMap;
     }
 
     @Override
-    protected boolean hasContentChanged() {
-        return false;
+    protected void loadInitialContentsLocked() {
+        // No initial contents.
     }
 
-    @Override
-    protected boolean needsToReloadBeforeWriting() {
-        return false;
-    }
-
-    /**
-     * Pair will be added to the decaying dictionary.
-     *
-     * The first word may be null. That means we don't know the context, in other words,
-     * it's only a unigram. The first word may also be an empty string : this means start
-     * context, as in beginning of a sentence for example.
-     * The second word may not be null (a NullPointerException would be thrown).
-     */
-    public void addToDictionary(final String word0, final String word1, final boolean isValid) {
-        if (word1.length() >= Constants.DICTIONARY_MAX_WORD_LENGTH ||
-                (word0 != null && word0.length() >= Constants.DICTIONARY_MAX_WORD_LENGTH)) {
-            return;
-        }
-        final int frequency = ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE ?
-                (isValid ? FREQUENCY_FOR_WORDS_IN_DICTS : FREQUENCY_FOR_WORDS_NOT_IN_DICTS) :
-                        FREQUENCY_FOR_TYPED;
-        addWordDynamically(word1, null /* shortcutTarget */, frequency, 0 /* shortcutFreq */,
-                false /* isNotAWord */);
-        // Do not insert a word as a bigram of itself
-        if (word1.equals(word0)) {
-            return;
-        }
-        if (null != word0) {
-            addBigramDynamically(word0, word1, frequency, isValid);
-        }
-    }
-
-    public void cancelAddingUserHistory(final String word0, final String word1) {
-        removeBigramDynamically(word0, word1);
-    }
-
-    @Override
-    protected void loadDictionaryAsync() {
-        final int[] profTotalCount = { 0 };
-        final String locale = getLocale();
-        if (DBG_STRESS_TEST) {
-            try {
-                Log.w(TAG, "Start stress in loading: " + locale);
-                Thread.sleep(15000);
-                Log.w(TAG, "End stress in loading");
-            } catch (InterruptedException e) {
-            }
-        }
-        final long last = Settings.readLastUserHistoryWriteTime(mPrefs, locale);
-        final long now = System.currentTimeMillis();
-        final ExpandableBinaryDictionary dictionary = this;
-        final OnAddWordListener listener = new OnAddWordListener() {
-            @Override
-            public void setUnigram(final String word, final String shortcutTarget,
-                    final int frequency, final int shortcutFreq) {
-                if (DBG_SAVE_RESTORE) {
-                    Log.d(TAG, "load unigram: " + word + "," + frequency);
-                }
-                addWord(word, shortcutTarget, frequency, shortcutFreq, false /* isNotAWord */);
-                ++profTotalCount[0];
-            }
-
-            @Override
-            public void setBigram(final String word0, final String word1, final int frequency) {
-                if (word0.length() < Constants.DICTIONARY_MAX_WORD_LENGTH
-                        && word1.length() < Constants.DICTIONARY_MAX_WORD_LENGTH) {
-                    if (DBG_SAVE_RESTORE) {
-                        Log.d(TAG, "load bigram: " + word0 + "," + word1 + "," + frequency);
-                    }
-                    ++profTotalCount[0];
-                    addBigram(word0, word1, frequency, last);
-                }
-            }
-        };
-
-        // Load the dictionary from binary file
-        final File dictFile = new File(mContext.getFilesDir(), mFileName);
-        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(dictFile,
-                DictDecoder.USE_BYTEARRAY);
-        if (dictDecoder == null) {
-            // This is an expected condition: we don't have a user history dictionary for this
-            // language yet. It will be created sometime later.
-            return;
-        }
-
-        try {
-            dictDecoder.openDictBuffer();
-            UserHistoryDictIOUtils.readDictionaryBinary(dictDecoder, listener);
-        } catch (IOException e) {
-            Log.d(TAG, "IOException on opening a bytebuffer", e);
-        } finally {
-            if (PROFILE_SAVE_RESTORE) {
-                final long diff = System.currentTimeMillis() - now;
-                Log.d(TAG, "PROF: Load UserHistoryDictionary: "
-                        + locale + ", " + diff + "ms. load " + profTotalCount[0] + "entries.");
-            }
-        }
-    }
-
-    protected String getLocale() {
-        return mLocale;
-    }
-
-    public void registerUpdateSession(PersonalizationDictionaryUpdateSession session) {
-        session.setPredictionDictionary(this);
-        mSessions.add(session);
-        session.onDictionaryReady();
-    }
-
-    public void unRegisterUpdateSession(PersonalizationDictionaryUpdateSession session) {
-        mSessions.remove(session);
-    }
-
-    @UsedForTesting
-    public void clearAndFlushDictionary() {
-        // Clear the node structure on memory
-        clear();
-        // Then flush the cleared state of the dictionary on disk.
-        asyncFlashAllBinaryDictionary();
-    }
-
-    /* package */ void decayIfNeeded() {
+    /* package */ void runGCIfRequired() {
         runGCIfRequired(false /* mindsBlockByGC */);
     }
+
+    @Override
+    public boolean isValidWord(final String word) {
+        // Strings out of this dictionary should not be considered existing words.
+        return false;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
index e9ca662..221bb9a 100644
--- a/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
+++ b/java/src/com/android/inputmethod/latin/personalization/DictionaryDecayBroadcastReciever.java
@@ -43,7 +43,7 @@
     /**
      * Interval to update for decaying dictionaries.
      */
-    private static final long DICTIONARY_DECAY_INTERVAL = TimeUnit.MINUTES.toMillis(60);
+    /* package */ static final long DICTIONARY_DECAY_INTERVAL = TimeUnit.MINUTES.toMillis(60);
 
     public static void setUpIntervalAlarmForDictionaryDecaying(Context context) {
         AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
@@ -60,7 +60,8 @@
     public void onReceive(final Context context, final Intent intent) {
         final String action = intent.getAction();
         if (action.equals(DICTIONARY_DECAY_INTENT_ACTION)) {
-            PersonalizationHelper.tryDecayingAllOpeningUserHistoryDictionary();
+            PersonalizationHelper.runGCOnAllOpenedUserHistoryDictionaries();
+            PersonalizationHelper.runGCOnAllOpenedPersonalizationDictionaries();
         }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/DynamicPersonalizationDictionaryWriter.java b/java/src/com/android/inputmethod/latin/personalization/DynamicPersonalizationDictionaryWriter.java
deleted file mode 100644
index 6f152bb..0000000
--- a/java/src/com/android/inputmethod/latin/personalization/DynamicPersonalizationDictionaryWriter.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import android.content.Context;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.compat.ActivityManagerCompatUtils;
-import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.AbstractDictionaryWriter;
-import com.android.inputmethod.latin.ExpandableDictionary;
-import com.android.inputmethod.latin.WordComposer;
-import com.android.inputmethod.latin.ExpandableDictionary.NextWord;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.makedict.DictEncoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
-import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils;
-import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils.BigramDictionaryInterface;
-import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils;
-import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils.ForgettingCurveParams;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Map;
-
-// Currently this class is used to implement dynamic prodiction dictionary.
-// TODO: Move to native code.
-public class DynamicPersonalizationDictionaryWriter extends AbstractDictionaryWriter {
-    private static final String TAG = DynamicPersonalizationDictionaryWriter.class.getSimpleName();
-    /** Maximum number of pairs. Pruning will start when databases goes above this number. */
-    public static final int DEFAULT_MAX_HISTORY_BIGRAMS = 10000;
-    public static final int LOW_MEMORY_MAX_HISTORY_BIGRAMS = 2000;
-
-    /** Any pair being typed or picked */
-    private static final int FREQUENCY_FOR_TYPED = 2;
-
-    private static final int BINARY_DICT_VERSION = 3;
-    private static final FormatSpec.FormatOptions FORMAT_OPTIONS =
-            new FormatSpec.FormatOptions(BINARY_DICT_VERSION, true /* supportsDynamicUpdate */);
-
-    private final UserHistoryDictionaryBigramList mBigramList =
-            new UserHistoryDictionaryBigramList();
-    private final ExpandableDictionary mExpandableDictionary;
-    private final int mMaxHistoryBigrams;
-
-    public DynamicPersonalizationDictionaryWriter(final Context context, final String dictType) {
-        super(context, dictType);
-        mExpandableDictionary = new ExpandableDictionary(dictType);
-        final boolean isLowRamDevice = ActivityManagerCompatUtils.isLowRamDevice(context);
-        mMaxHistoryBigrams = isLowRamDevice ?
-                LOW_MEMORY_MAX_HISTORY_BIGRAMS : DEFAULT_MAX_HISTORY_BIGRAMS;
-    }
-
-    @Override
-    public void clear() {
-        mBigramList.evictAll();
-        mExpandableDictionary.clearDictionary();
-    }
-
-    /**
-     * Adds a word unigram to the fusion dictionary. Call updateBinaryDictionary when all changes
-     * are done to update the binary dictionary.
-     * @param word The word to add.
-     * @param shortcutTarget A shortcut target for this word, or null if none.
-     * @param frequency The frequency for this unigram.
-     * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist). Ignored
-     *   if shortcutTarget is null.
-     * @param isNotAWord true if this is not a word, i.e. shortcut only.
-     */
-    @Override
-    public void addUnigramWord(final String word, final String shortcutTarget, final int frequency,
-            final int shortcutFreq, final boolean isNotAWord) {
-        if (mBigramList.size() > mMaxHistoryBigrams * 2) {
-            // Too many entries: just stop adding new vocabulary and wait next refresh.
-            return;
-        }
-        mExpandableDictionary.addWord(word, shortcutTarget, frequency, shortcutFreq);
-        mBigramList.addBigram(null, word, (byte)frequency);
-    }
-
-    @Override
-    public void addBigramWords(final String word0, final String word1, final int frequency,
-            final boolean isValid, final long lastModifiedTime) {
-        if (mBigramList.size() > mMaxHistoryBigrams * 2) {
-            // Too many entries: just stop adding new vocabulary and wait next refresh.
-            return;
-        }
-        if (lastModifiedTime > 0) {
-            mExpandableDictionary.setBigramAndGetFrequency(word0, word1,
-                    new ForgettingCurveParams(frequency, System.currentTimeMillis(),
-                            lastModifiedTime));
-            mBigramList.addBigram(word0, word1, (byte)frequency);
-        } else {
-            mExpandableDictionary.setBigramAndGetFrequency(word0, word1,
-                    new ForgettingCurveParams(isValid));
-            mBigramList.addBigram(word0, word1, (byte)frequency);
-        }
-    }
-
-    @Override
-    public void removeBigramWords(final String word0, final String word1) {
-        if (mBigramList.removeBigram(word0, word1)) {
-            mExpandableDictionary.removeBigram(word0, word1);
-        }
-    }
-
-    @Override
-    protected void writeDictionary(final DictEncoder dictEncoder,
-            final Map<String, String> attributeMap) throws IOException, UnsupportedFormatException {
-        UserHistoryDictIOUtils.writeDictionary(dictEncoder,
-                new FrequencyProvider(mBigramList, mExpandableDictionary, mMaxHistoryBigrams),
-                mBigramList, FORMAT_OPTIONS);
-    }
-
-    private static class FrequencyProvider implements BigramDictionaryInterface {
-        private final UserHistoryDictionaryBigramList mBigramList;
-        private final ExpandableDictionary mExpandableDictionary;
-        private final int mMaxHistoryBigrams;
-
-        public FrequencyProvider(final UserHistoryDictionaryBigramList bigramList,
-                final ExpandableDictionary expandableDictionary, final int maxHistoryBigrams) {
-            mBigramList = bigramList;
-            mExpandableDictionary = expandableDictionary;
-            mMaxHistoryBigrams = maxHistoryBigrams;
-        }
-
-        @Override
-        public int getFrequency(final String word0, final String word1) {
-            final int freq;
-            if (word0 == null) { // unigram
-                freq = FREQUENCY_FOR_TYPED;
-            } else { // bigram
-                final NextWord nw = mExpandableDictionary.getBigramWord(word0, word1);
-                if (nw != null) {
-                    final ForgettingCurveParams forgettingCurveParams = nw.getFcParams();
-                    final byte prevFc = mBigramList.getBigrams(word0).get(word1);
-                    final byte fc = forgettingCurveParams.getFc();
-                    final boolean isValid = forgettingCurveParams.isValid();
-                    if (prevFc > 0 && prevFc == fc) {
-                        freq = fc & 0xFF;
-                    } else if (UserHistoryForgettingCurveUtils.
-                            needsToSave(fc, isValid, mBigramList.size() <= mMaxHistoryBigrams)) {
-                        freq = fc & 0xFF;
-                    } else {
-                        // Delete this entry
-                        freq = -1;
-                    }
-                } else {
-                    // Delete this entry
-                    freq = -1;
-                }
-            }
-            return freq;
-        }
-    }
-
-    @Override
-    public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-            final String prevWord, final ProximityInfo proximityInfo,
-            boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-        return mExpandableDictionary.getSuggestions(composer, prevWord, proximityInfo,
-                blockOffensiveWords, additionalFeaturesOptions);
-    }
-
-    @Override
-    public boolean isValidWord(final String word) {
-        return mExpandableDictionary.isValidWord(word);
-    }
-
-    @UsedForTesting
-    public boolean isInBigramListForTests(final String word) {
-        // TODO: Use native method to determine whether the word is in dictionary or not
-        return mBigramList.containsKey(word) || mBigramList.getBigrams(null).containsKey(word);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java
new file mode 100644
index 0000000..9d72de8
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDataChunk.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+public class PersonalizationDataChunk {
+    public final boolean mInputByUser;
+    public final List<String> mTokens;
+    public final int mTimestampInSeconds;
+    public final String mPackageName;
+    public final Locale mlocale = null;
+
+    public PersonalizationDataChunk(boolean inputByUser, final List<String> tokens,
+            final int timestampInSeconds, final String packageName) {
+        mInputByUser = inputByUser;
+        mTokens = Collections.unmodifiableList(tokens);
+        mTimestampInSeconds = timestampInSeconds;
+        mPackageName = packageName;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
index f257165..f2ad22a 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionary.java
@@ -16,58 +16,26 @@
 
 package com.android.inputmethod.latin.personalization;
 
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.ExpandableBinaryDictionary;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
 import android.content.Context;
-import android.content.SharedPreferences;
 
-import java.util.ArrayList;
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Dictionary;
 
-/**
- * This class is a dictionary for the personalized language model that uses binary dictionary.
- */
-public class PersonalizationDictionary extends ExpandableBinaryDictionary {
-    private static final String NAME = "personalization";
-    private final ArrayList<PersonalizationDictionaryUpdateSession> mSessions =
-            CollectionUtils.newArrayList();
+import java.io.File;
+import java.util.Locale;
 
-    /** Locale for which this user history dictionary is storing words */
-    private final String mLocale;
+public class PersonalizationDictionary extends DecayingExpandableBinaryDictionaryBase {
+    /* package */ static final String NAME = PersonalizationDictionary.class.getSimpleName();
 
-    public PersonalizationDictionary(final Context context, final String locale,
-            final SharedPreferences prefs) {
-        // TODO: Make isUpdatable true.
-        super(context, getFilenameWithLocale(NAME, locale), Dictionary.TYPE_PERSONALIZATION,
-                false /* isUpdatable */);
-        mLocale = locale;
-        // TODO: Restore last updated time
-        loadDictionary();
+    // TODO: Make this constructor private
+    /* package */ PersonalizationDictionary(final Context context, final Locale locale) {
+        super(context, getDictName(NAME, locale, null /* dictFile */), locale,
+                Dictionary.TYPE_PERSONALIZATION, null /* dictFile */);
     }
 
-    @Override
-    protected void loadDictionaryAsync() {
-        // TODO: Implement
-    }
-
-    @Override
-    protected boolean hasContentChanged() {
-        return false;
-    }
-
-    @Override
-    protected boolean needsToReloadBeforeWriting() {
-        return false;
-    }
-
-    public void registerUpdateSession(PersonalizationDictionaryUpdateSession session) {
-        session.setDictionary(this);
-        mSessions.add(session);
-        session.onDictionaryReady();
-    }
-
-    public void unRegisterUpdateSession(PersonalizationDictionaryUpdateSession session) {
-        mSessions.remove(session);
+    @UsedForTesting
+    public static PersonalizationDictionary getDictionary(final Context context,
+            final Locale locale, final File dictFile, final String dictNamePrefix) {
+        return PersonalizationHelper.getPersonalizationDictionary(context, locale);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegister.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegister.java
deleted file mode 100644
index c1833ff..0000000
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionarySessionRegister.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import android.content.Context;
-import android.content.res.Configuration;
-
-public class PersonalizationDictionarySessionRegister {
-    public static void init(Context context) {
-    }
-
-    public static void onConfigurationChanged(final Context context, final Configuration conf) {
-    }
-
-    public static void onUpdateData(Context context, String type) {
-    }
-
-    public static void onRemoveData(Context context, String type) {
-    }
-
-    public static void onDestroy(Context context) {
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java
deleted file mode 100644
index a86f6e5..0000000
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdateSession.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import android.content.Context;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-
-/**
- * This class is a session where a data provider can communicate with a personalization
- * dictionary.
- */
-public abstract class PersonalizationDictionaryUpdateSession {
-    /**
-     * This class is a parameter for a new unigram or bigram word which will be added
-     * to the personalization dictionary.
-     */
-    public static class PersonalizationLanguageModelParam {
-        public final String mWord0;
-        public final String mWord1;
-        public final boolean mIsValid;
-        public final int mFrequency;
-        public PersonalizationLanguageModelParam(String word0, String word1, boolean isValid,
-                int frequency) {
-            mWord0 = word0;
-            mWord1 = word1;
-            mIsValid = isValid;
-            mFrequency = frequency;
-        }
-    }
-
-    // TODO: Use a dynamic binary dictionary instead
-    public WeakReference<PersonalizationDictionary> mDictionary;
-    public WeakReference<DecayingExpandableBinaryDictionaryBase> mPredictionDictionary;
-    public final String mSystemLocale;
-    public PersonalizationDictionaryUpdateSession(String locale) {
-        mSystemLocale = locale;
-    }
-
-    public abstract void onDictionaryReady();
-
-    public abstract void onDictionaryClosed(Context context);
-
-    public void setDictionary(PersonalizationDictionary dictionary) {
-        mDictionary = new WeakReference<PersonalizationDictionary>(dictionary);
-    }
-
-    public void setPredictionDictionary(DecayingExpandableBinaryDictionaryBase dictionary) {
-        mPredictionDictionary =
-                new WeakReference<DecayingExpandableBinaryDictionaryBase>(dictionary);
-    }
-
-    protected PersonalizationDictionary getDictionary() {
-        return mDictionary == null ? null : mDictionary.get();
-    }
-
-    protected DecayingExpandableBinaryDictionaryBase getPredictionDictionary() {
-        return mPredictionDictionary == null ? null : mPredictionDictionary.get();
-    }
-
-    private void unsetDictionary() {
-        final PersonalizationDictionary dictionary = getDictionary();
-        if (dictionary == null) {
-            return;
-        }
-        dictionary.unRegisterUpdateSession(this);
-    }
-
-    private void unsetPredictionDictionary() {
-        final DecayingExpandableBinaryDictionaryBase dictionary = getPredictionDictionary();
-        if (dictionary == null) {
-            return;
-        }
-        dictionary.unRegisterUpdateSession(this);
-    }
-
-    public void clearAndFlushPredictionDictionary(Context context) {
-        final DecayingExpandableBinaryDictionaryBase dictionary = getPredictionDictionary();
-        if (dictionary == null) {
-            return;
-        }
-        dictionary.clearAndFlushDictionary();
-    }
-
-    public void closeSession(Context context) {
-        unsetDictionary();
-        unsetPredictionDictionary();
-        onDictionaryClosed(context);
-    }
-
-    // TODO: Support multi locale to add bigram
-    public void addBigramToPersonalizationDictionary(String word0, String word1, boolean isValid,
-            int frequency) {
-        final DecayingExpandableBinaryDictionaryBase dictionary = getPredictionDictionary();
-        if (dictionary == null) {
-            return;
-        }
-        dictionary.addToDictionary(word0, word1, isValid);
-    }
-
-    // Bulk import
-    // TODO: Support multi locale to add bigram
-    public void addBigramsToPersonalizationDictionary(
-            final ArrayList<PersonalizationLanguageModelParam> lmParams) {
-        final DecayingExpandableBinaryDictionaryBase dictionary = getPredictionDictionary();
-        if (dictionary == null) {
-            return;
-        }
-        for (final PersonalizationLanguageModelParam lmParam : lmParams) {
-            dictionary.addToDictionary(lmParam.mWord0, lmParam.mWord1, lmParam.mIsValid);
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java
new file mode 100644
index 0000000..c97a0d2
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryUpdater.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import java.util.Locale;
+
+import android.content.Context;
+
+import com.android.inputmethod.latin.DictionaryFacilitator;
+
+public class PersonalizationDictionaryUpdater {
+    final Context mContext;
+    final DictionaryFacilitator mDictionaryFacilitator;
+    boolean mDictCleared = false;
+
+    public PersonalizationDictionaryUpdater(final Context context,
+            final DictionaryFacilitator dictionaryFacilitator) {
+        mContext = context;
+        mDictionaryFacilitator = dictionaryFacilitator;
+    }
+
+    public Locale getLocale() {
+        return null;
+    }
+
+    public void onLoadSettings(final boolean usePersonalizedDicts,
+            final boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes) {
+        if (!mDictCleared) {
+            // Clear and never update the personalization dictionary.
+            PersonalizationHelper.removeAllPersonalizationDictionaries(mContext);
+            mDictionaryFacilitator.clearPersonalizationDictionary();
+            mDictCleared = true;
+        }
+    }
+
+    public void onDestroy() {
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index 221ddee..aac4094 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -16,36 +16,33 @@
 
 package com.android.inputmethod.latin.personalization;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
 import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
 import android.util.Log;
 
+import com.android.inputmethod.latin.utils.FileUtils;
+
+import java.io.File;
+import java.io.FilenameFilter;
 import java.lang.ref.SoftReference;
+import java.util.Locale;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
 
 public class PersonalizationHelper {
     private static final String TAG = PersonalizationHelper.class.getSimpleName();
     private static final boolean DEBUG = false;
     private static final ConcurrentHashMap<String, SoftReference<UserHistoryDictionary>>
-            sLangUserHistoryDictCache = CollectionUtils.newConcurrentHashMap();
-
+            sLangUserHistoryDictCache = new ConcurrentHashMap<>();
     private static final ConcurrentHashMap<String, SoftReference<PersonalizationDictionary>>
-            sLangPersonalizationDictCache = CollectionUtils.newConcurrentHashMap();
-
-    private static final ConcurrentHashMap<String,
-            SoftReference<PersonalizationPredictionDictionary>>
-                    sLangPersonalizationPredictionDictCache =
-                            CollectionUtils.newConcurrentHashMap();
+            sLangPersonalizationDictCache = new ConcurrentHashMap<>();
 
     public static UserHistoryDictionary getUserHistoryDictionary(
-            final Context context, final String locale, final SharedPreferences sp) {
+            final Context context, final Locale locale) {
+        final String localeStr = locale.toString();
         synchronized (sLangUserHistoryDictCache) {
-            if (sLangUserHistoryDictCache.containsKey(locale)) {
+            if (sLangUserHistoryDictCache.containsKey(localeStr)) {
                 final SoftReference<UserHistoryDictionary> ref =
-                        sLangUserHistoryDictCache.get(locale);
+                        sLangUserHistoryDictCache.get(localeStr);
                 final UserHistoryDictionary dict = ref == null ? null : ref.get();
                 if (dict != null) {
                     if (DEBUG) {
@@ -55,77 +52,110 @@
                     return dict;
                 }
             }
-            final UserHistoryDictionary dict = new UserHistoryDictionary(context, locale, sp);
-            sLangUserHistoryDictCache.put(locale, new SoftReference<UserHistoryDictionary>(dict));
+            final UserHistoryDictionary dict = new UserHistoryDictionary(context, locale);
+            sLangUserHistoryDictCache.put(localeStr, new SoftReference<>(dict));
             return dict;
         }
     }
 
-    public static void tryDecayingAllOpeningUserHistoryDictionary() {
-        for (final ConcurrentHashMap.Entry<String, SoftReference<UserHistoryDictionary>> entry
-                : sLangUserHistoryDictCache.entrySet()) {
-            if (entry.getValue() != null) {
-                final UserHistoryDictionary dict = entry.getValue().get();
-                if (dict != null) {
-                    dict.decayIfNeeded();
-                }
-            }
+    private static int sCurrentTimestampForTesting = 0;
+    public static void currentTimeChangedForTesting(final int currentTimestamp) {
+        if (TimeUnit.MILLISECONDS.toSeconds(
+                DictionaryDecayBroadcastReciever.DICTIONARY_DECAY_INTERVAL)
+                        < currentTimestamp - sCurrentTimestampForTesting) {
+            runGCOnAllOpenedUserHistoryDictionaries();
+            runGCOnAllOpenedPersonalizationDictionaries();
         }
     }
 
-    public static void registerPersonalizationDictionaryUpdateSession(final Context context,
-            final PersonalizationDictionaryUpdateSession session, String locale) {
-        final PersonalizationPredictionDictionary predictionDictionary =
-                getPersonalizationPredictionDictionary(context, locale,
-                        PreferenceManager.getDefaultSharedPreferences(context));
-        predictionDictionary.registerUpdateSession(session);
-        final PersonalizationDictionary dictionary =
-                getPersonalizationDictionary(context, locale,
-                        PreferenceManager.getDefaultSharedPreferences(context));
-        dictionary.registerUpdateSession(session);
+    public static void runGCOnAllOpenedUserHistoryDictionaries() {
+        runGCOnAllDictionariesIfRequired(sLangUserHistoryDictCache);
+    }
+
+    public static void runGCOnAllOpenedPersonalizationDictionaries() {
+        runGCOnAllDictionariesIfRequired(sLangPersonalizationDictCache);
+    }
+
+    private static <T extends DecayingExpandableBinaryDictionaryBase>
+            void runGCOnAllDictionariesIfRequired(
+                    final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap) {
+        for (final ConcurrentHashMap.Entry<String, SoftReference<T>> entry
+                : dictionaryMap.entrySet()) {
+            final DecayingExpandableBinaryDictionaryBase dict = entry.getValue().get();
+            if (dict != null) {
+                dict.runGCIfRequired();
+            } else {
+                dictionaryMap.remove(entry.getKey());
+            }
+        }
     }
 
     public static PersonalizationDictionary getPersonalizationDictionary(
-            final Context context, final String locale, final SharedPreferences sp) {
+            final Context context, final Locale locale) {
+        final String localeStr = locale.toString();
         synchronized (sLangPersonalizationDictCache) {
-            if (sLangPersonalizationDictCache.containsKey(locale)) {
+            if (sLangPersonalizationDictCache.containsKey(localeStr)) {
                 final SoftReference<PersonalizationDictionary> ref =
-                        sLangPersonalizationDictCache.get(locale);
+                        sLangPersonalizationDictCache.get(localeStr);
                 final PersonalizationDictionary dict = ref == null ? null : ref.get();
                 if (dict != null) {
                     if (DEBUG) {
-                        Log.w(TAG, "Use cached PersonalizationDictCache for " + locale);
+                        Log.w(TAG, "Use cached PersonalizationDictionary for " + locale);
                     }
                     return dict;
                 }
             }
-            final PersonalizationDictionary dict =
-                    new PersonalizationDictionary(context, locale, sp);
-            sLangPersonalizationDictCache.put(
-                    locale, new SoftReference<PersonalizationDictionary>(dict));
+            final PersonalizationDictionary dict = new PersonalizationDictionary(context, locale);
+            sLangPersonalizationDictCache.put(localeStr, new SoftReference<>(dict));
             return dict;
         }
     }
 
-    public static PersonalizationPredictionDictionary getPersonalizationPredictionDictionary(
-            final Context context, final String locale, final SharedPreferences sp) {
-        synchronized (sLangPersonalizationPredictionDictCache) {
-            if (sLangPersonalizationPredictionDictCache.containsKey(locale)) {
-                final SoftReference<PersonalizationPredictionDictionary> ref =
-                        sLangPersonalizationPredictionDictCache.get(locale);
-                final PersonalizationPredictionDictionary dict = ref == null ? null : ref.get();
-                if (dict != null) {
-                    if (DEBUG) {
-                        Log.w(TAG, "Use cached PersonalizationPredictionDictionary for " + locale);
+    public static void removeAllPersonalizationDictionaries(final Context context) {
+        removeAllDictionaries(context, sLangPersonalizationDictCache,
+                PersonalizationDictionary.NAME);
+    }
+
+    public static void removeAllUserHistoryDictionaries(final Context context) {
+        removeAllDictionaries(context, sLangUserHistoryDictCache,
+                UserHistoryDictionary.NAME);
+    }
+
+    private static <T extends DecayingExpandableBinaryDictionaryBase> void removeAllDictionaries(
+            final Context context, final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap,
+            final String dictNamePrefix) {
+        synchronized (dictionaryMap) {
+            for (final ConcurrentHashMap.Entry<String, SoftReference<T>> entry
+                    : dictionaryMap.entrySet()) {
+                if (entry.getValue() != null) {
+                    final DecayingExpandableBinaryDictionaryBase dict = entry.getValue().get();
+                    if (dict != null) {
+                        dict.clear();
                     }
-                    return dict;
                 }
             }
-            final PersonalizationPredictionDictionary dict =
-                    new PersonalizationPredictionDictionary(context, locale, sp);
-            sLangPersonalizationPredictionDictCache.put(
-                    locale, new SoftReference<PersonalizationPredictionDictionary>(dict));
-            return dict;
+            dictionaryMap.clear();
+            final File filesDir = context.getFilesDir();
+            if (filesDir == null) {
+                Log.e(TAG, "context.getFilesDir() returned null.");
+            }
+            if (!FileUtils.deleteFilteredFiles(filesDir, new DictFilter(dictNamePrefix))) {
+                Log.e(TAG, "Cannot remove all existing dictionary files. filesDir: "
+                        + filesDir.getAbsolutePath() + ", dictNamePrefix: " + dictNamePrefix);
+            }
+        }
+    }
+
+    private static class DictFilter implements FilenameFilter {
+        private final String mName;
+
+        DictFilter(final String name) {
+            mName = name;
+        }
+
+        @Override
+        public boolean accept(final File dir, final String name) {
+            return name.startsWith(mName);
         }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationPredictionDictionary.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationPredictionDictionary.java
deleted file mode 100644
index 4329544..0000000
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationPredictionDictionary.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.personalization;
-
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.ExpandableBinaryDictionary;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-public class PersonalizationPredictionDictionary extends DecayingExpandableBinaryDictionaryBase {
-    private static final String NAME = PersonalizationPredictionDictionary.class.getSimpleName();
-
-    /* package */ PersonalizationPredictionDictionary(final Context context, final String locale,
-            final SharedPreferences sp) {
-        super(context, locale, sp, Dictionary.TYPE_PERSONALIZATION_PREDICTION_IN_JAVA,
-                getDictionaryFileName(locale));
-    }
-
-    private static String getDictionaryFileName(final String locale) {
-        return NAME + "." + locale + ExpandableBinaryDictionary.DICT_FILE_EXTENSION;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
index a60226d..8e027e4 100644
--- a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionary.java
@@ -16,25 +16,73 @@
 
 package com.android.inputmethod.latin.personalization;
 
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.Dictionary;
 import com.android.inputmethod.latin.ExpandableBinaryDictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.utils.DistracterFilter;
 
-import android.content.Context;
-import android.content.SharedPreferences;
+import java.io.File;
+import java.util.Locale;
 
 /**
  * Locally gathers stats about the words user types and various other signals like auto-correction
  * cancellation or manual picks. This allows the keyboard to adapt to the typist over time.
  */
 public class UserHistoryDictionary extends DecayingExpandableBinaryDictionaryBase {
-    /* package for tests */ static final String NAME =
-            UserHistoryDictionary.class.getSimpleName();
-    /* package */ UserHistoryDictionary(final Context context, final String locale,
-            final SharedPreferences sp) {
-        super(context, locale, sp, Dictionary.TYPE_USER_HISTORY, getDictionaryFileName(locale));
+    /* package */ static final String NAME = UserHistoryDictionary.class.getSimpleName();
+
+    // TODO: Make this constructor private
+    /* package */ UserHistoryDictionary(final Context context, final Locale locale) {
+        super(context, getDictName(NAME, locale, null /* dictFile */), locale,
+                Dictionary.TYPE_USER_HISTORY, null /* dictFile */);
     }
 
-    private static String getDictionaryFileName(final String locale) {
-        return NAME + "." + locale + ExpandableBinaryDictionary.DICT_FILE_EXTENSION;
+    @UsedForTesting
+    public static UserHistoryDictionary getDictionary(final Context context, final Locale locale,
+            final File dictFile, final String dictNamePrefix) {
+        return PersonalizationHelper.getUserHistoryDictionary(context, locale);
+    }
+
+    /**
+     * Add a word to the user history dictionary.
+     *
+     * @param userHistoryDictionary the user history dictionary
+     * @param prevWordsInfo the information of previous words
+     * @param word the word the user inputted
+     * @param isValid whether the word is valid or not
+     * @param timestamp the timestamp when the word has been inputted
+     * @param distracterFilter the filter to check whether the word is a distracter
+     */
+    public static void addToDictionary(final ExpandableBinaryDictionary userHistoryDictionary,
+            final PrevWordsInfo prevWordsInfo, final String word, final boolean isValid,
+            final int timestamp, final DistracterFilter distracterFilter) {
+        final CharSequence prevWord = prevWordsInfo.mPrevWordsInfo[0].mWord;
+        if (word.length() >= Constants.DICTIONARY_MAX_WORD_LENGTH ||
+                (prevWord != null && prevWord.length() >= Constants.DICTIONARY_MAX_WORD_LENGTH)) {
+            return;
+        }
+        final int frequency = isValid ?
+                FREQUENCY_FOR_WORDS_IN_DICTS : FREQUENCY_FOR_WORDS_NOT_IN_DICTS;
+        userHistoryDictionary.addUnigramEntryWithCheckingDistracter(word, frequency,
+                null /* shortcutTarget */, 0 /* shortcutFreq */, false /* isNotAWord */,
+                false /* isBlacklisted */, timestamp, distracterFilter);
+        // Do not insert a word as a bigram of itself
+        if (TextUtils.equals(word, prevWord)) {
+            return;
+        }
+        if (null != prevWord) {
+            if (prevWordsInfo.mPrevWordsInfo[0].mIsBeginningOfSentence) {
+                // Beginning-of-Sentence n-gram entry is treated as a n-gram entry of invalid word.
+                userHistoryDictionary.addNgramEntry(prevWordsInfo, word,
+                        FREQUENCY_FOR_WORDS_NOT_IN_DICTS, timestamp);
+            } else {
+                userHistoryDictionary.addNgramEntry(prevWordsInfo, word, frequency, timestamp);
+            }
+        }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryBigramList.java b/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryBigramList.java
deleted file mode 100644
index 55a90ee..0000000
--- a/java/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryBigramList.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.personalization;
-
-import android.util.Log;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.util.HashMap;
-import java.util.Set;
-
-/**
- * A store of bigrams which will be updated when the user history dictionary is closed
- * All bigrams including stale ones in SQL DB should be stored in this class to avoid adding stale
- * bigrams when we write to the SQL DB.
- */
-@UsedForTesting
-public final class UserHistoryDictionaryBigramList {
-    public static final byte FORGETTING_CURVE_INITIAL_VALUE = 0;
-    private static final String TAG = UserHistoryDictionaryBigramList.class.getSimpleName();
-    private static final HashMap<String, Byte> EMPTY_BIGRAM_MAP = CollectionUtils.newHashMap();
-    private final HashMap<String, HashMap<String, Byte>> mBigramMap = CollectionUtils.newHashMap();
-    private int mSize = 0;
-
-    public void evictAll() {
-        mSize = 0;
-        mBigramMap.clear();
-    }
-
-    /**
-     * Called when the user typed a word.
-     */
-    @UsedForTesting
-    public void addBigram(String word1, String word2) {
-        addBigram(word1, word2, FORGETTING_CURVE_INITIAL_VALUE);
-    }
-
-    /**
-     * Called when loaded from the SQL DB.
-     */
-    public void addBigram(String word1, String word2, byte fcValue) {
-        if (DecayingExpandableBinaryDictionaryBase.DBG_SAVE_RESTORE) {
-            Log.d(TAG, "--- add bigram: " + word1 + ", " + word2 + ", " + fcValue);
-        }
-        final HashMap<String, Byte> map;
-        if (mBigramMap.containsKey(word1)) {
-            map = mBigramMap.get(word1);
-        } else {
-            map = CollectionUtils.newHashMap();
-            mBigramMap.put(word1, map);
-        }
-        if (!map.containsKey(word2)) {
-            ++mSize;
-            map.put(word2, fcValue);
-        }
-    }
-
-    /**
-     * Called when inserted to the SQL DB.
-     */
-    public void updateBigram(String word1, String word2, byte fcValue) {
-        if (DecayingExpandableBinaryDictionaryBase.DBG_SAVE_RESTORE) {
-            Log.d(TAG, "--- update bigram: " + word1 + ", " + word2 + ", " + fcValue);
-        }
-        final HashMap<String, Byte> map;
-        if (mBigramMap.containsKey(word1)) {
-            map = mBigramMap.get(word1);
-        } else {
-            return;
-        }
-        if (!map.containsKey(word2)) {
-            return;
-        }
-        map.put(word2, fcValue);
-    }
-
-    public int size() {
-        return mSize;
-    }
-
-    public boolean isEmpty() {
-        return mBigramMap.isEmpty();
-    }
-
-    public boolean containsKey(String word) {
-        return mBigramMap.containsKey(word);
-    }
-
-    public Set<String> keySet() {
-        return mBigramMap.keySet();
-    }
-
-    public HashMap<String, Byte> getBigrams(String word1) {
-        if (mBigramMap.containsKey(word1)) return mBigramMap.get(word1);
-        // TODO: lower case according to locale
-        final String lowerWord1 = word1.toLowerCase();
-        if (mBigramMap.containsKey(lowerWord1)) return mBigramMap.get(lowerWord1);
-        return EMPTY_BIGRAM_MAP;
-    }
-
-    public boolean removeBigram(String word1, String word2) {
-        final HashMap<String, Byte> set = getBigrams(word1);
-        if (set.isEmpty()) {
-            return false;
-        }
-        if (set.containsKey(word2)) {
-            set.remove(word2);
-            --mSize;
-            return true;
-        }
-        return false;
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/settings/AdditionalSubtypeSettings.java b/java/src/com/android/inputmethod/latin/settings/AdditionalSubtypeSettings.java
index 4bf524c..ad411f9 100644
--- a/java/src/com/android/inputmethod/latin/settings/AdditionalSubtypeSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/AdditionalSubtypeSettings.java
@@ -16,8 +16,6 @@
 
 package com.android.inputmethod.latin.settings;
 
-import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.ASCII_CAPABLE;
-
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
@@ -44,10 +42,12 @@
 import android.widget.SpinnerAdapter;
 import android.widget.Toast;
 
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.RichInputMethodManager;
 import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.DialogUtils;
 import com.android.inputmethod.latin.utils.IntentUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
@@ -100,7 +100,7 @@
             super(context, android.R.layout.simple_spinner_item);
             setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 
-            final TreeSet<SubtypeLocaleItem> items = CollectionUtils.newTreeSet();
+            final TreeSet<SubtypeLocaleItem> items = new TreeSet<>();
             final InputMethodInfo imi = RichInputMethodManager.getInstance()
                     .getInputMethodInfoOfThisIme();
             final int count = imi.getSubtypeCount();
@@ -111,7 +111,7 @@
                             subtype.getLocale(), subtype.hashCode(), subtype.hashCode(),
                             SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype)));
                 }
-                if (subtype.containsExtraValueKey(ASCII_CAPABLE)) {
+                if (InputMethodSubtypeCompatUtils.isAsciiCapable(subtype)) {
                     items.add(createItem(context, subtype.getLocale()));
                 }
             }
@@ -150,8 +150,9 @@
             // TODO: Should filter out already existing combinations of locale and layout.
             for (final String layout : SubtypeLocaleUtils.getPredefinedKeyboardLayoutSet()) {
                 // This is a dummy subtype with NO_LANGUAGE, only for display.
-                final InputMethodSubtype subtype = AdditionalSubtypeUtils.createAdditionalSubtype(
-                        SubtypeLocaleUtils.NO_LANGUAGE, layout, null);
+                final InputMethodSubtype subtype =
+                        AdditionalSubtypeUtils.createDummyAdditionalSubtype(
+                                SubtypeLocaleUtils.NO_LANGUAGE, layout);
                 add(new KeyboardLayoutSetItem(subtype));
             }
         }
@@ -286,8 +287,9 @@
                         (SubtypeLocaleItem) mSubtypeLocaleSpinner.getSelectedItem();
                 final KeyboardLayoutSetItem layout =
                         (KeyboardLayoutSetItem) mKeyboardLayoutSetSpinner.getSelectedItem();
-                final InputMethodSubtype subtype = AdditionalSubtypeUtils.createAdditionalSubtype(
-                        locale.first, layout.first, ASCII_CAPABLE);
+                final InputMethodSubtype subtype =
+                        AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                                locale.first, layout.first);
                 setSubtype(subtype);
                 notifyChanged();
                 if (isEditing) {
@@ -368,7 +370,6 @@
                 mSubtype = (InputMethodSubtype)source.readParcelable(null);
             }
 
-            @SuppressWarnings("hiding")
             public static final Parcelable.Creator<SavedState> CREATOR =
                     new Parcelable.Creator<SavedState>() {
                         @Override
@@ -515,9 +516,9 @@
                 localeString, keyboardLayoutSetName);
     }
 
-    private AlertDialog createDialog(
-            @SuppressWarnings("unused") final SubtypePreference subtypePref) {
-        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    private AlertDialog createDialog(final SubtypePreference subtypePref) {
+        final AlertDialog.Builder builder = new AlertDialog.Builder(
+                DialogUtils.getPlatformDialogThemeContext(getActivity()));
         builder.setTitle(R.string.custom_input_styles_title)
                 .setMessage(R.string.custom_input_style_note_message)
                 .setNegativeButton(R.string.not_now, null)
@@ -553,7 +554,7 @@
 
     private InputMethodSubtype[] getSubtypes() {
         final PreferenceGroup group = getPreferenceScreen();
-        final ArrayList<InputMethodSubtype> subtypes = CollectionUtils.newArrayList();
+        final ArrayList<InputMethodSubtype> subtypes = new ArrayList<>();
         final int count = group.getPreferenceCount();
         for (int i = 0; i < count; i++) {
             final Preference pref = group.getPreference(i);
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
index da1fb73..e4271ad 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
@@ -16,60 +16,57 @@
 
 package com.android.inputmethod.latin.settings;
 
+import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.res.Resources;
 import android.os.Bundle;
 import android.os.Process;
-import android.preference.CheckBoxPreference;
 import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceFragment;
+import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
+import android.preference.TwoStatePreference;
 
-import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.DictionaryDumpBroadcastReceiver;
+import com.android.inputmethod.latin.DictionaryFacilitator;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.debug.ExternalDictionaryGetterForDebug;
 import com.android.inputmethod.latin.utils.ApplicationUtils;
+import com.android.inputmethod.latin.utils.ResourceUtils;
 
 public final class DebugSettings extends PreferenceFragment
         implements SharedPreferences.OnSharedPreferenceChangeListener {
 
     public static final String PREF_DEBUG_MODE = "debug_mode";
     public static final String PREF_FORCE_NON_DISTINCT_MULTITOUCH = "force_non_distinct_multitouch";
-    public static final String PREF_USABILITY_STUDY_MODE = "usability_study_mode";
-    public static final String PREF_STATISTICS_LOGGING = "enable_logging";
-    public static final String PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG =
-            "use_only_personalization_dictionary_for_debug";
-    public static final String PREF_BOOST_PERSONALIZATION_DICTIONARY_FOR_DEBUG =
-            "boost_personalization_dictionary_for_debug";
+    public static final String PREF_KEY_PREVIEW_SHOW_UP_START_SCALE =
+            "pref_key_preview_show_up_start_scale";
+    public static final String PREF_KEY_PREVIEW_DISMISS_END_SCALE =
+            "pref_key_preview_dismiss_end_scale";
+    public static final String PREF_KEY_PREVIEW_SHOW_UP_DURATION =
+            "pref_key_preview_show_up_duration";
+    public static final String PREF_KEY_PREVIEW_DISMISS_DURATION =
+            "pref_key_preview_dismiss_duration";
     private static final String PREF_READ_EXTERNAL_DICTIONARY = "read_external_dictionary";
-    private static final boolean SHOW_STATISTICS_LOGGING = false;
+    private static final String PREF_KEY_DUMP_DICTS = "pref_key_dump_dictionaries";
+    private static final String PREF_KEY_DUMP_DICT_PREFIX = "pref_key_dump_dictionaries";
+    private static final String DICT_NAME_KEY_FOR_EXTRAS = "dict_name";
+    public static final String PREF_SLIDING_KEY_INPUT_PREVIEW = "pref_sliding_key_input_preview";
+    public static final String PREF_KEY_LONGPRESS_TIMEOUT = "pref_key_longpress_timeout";
 
     private boolean mServiceNeedsRestart = false;
-    private CheckBoxPreference mDebugMode;
-    private CheckBoxPreference mStatisticsLoggingPref;
+    private TwoStatePreference mDebugMode;
 
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        addPreferencesFromResource(R.xml.prefs_for_debug);
+        addPreferencesFromResource(R.xml.prefs_screen_debug);
+        TwoStatePreferenceHelper.replaceCheckBoxPreferencesBySwitchPreferences(
+                getPreferenceScreen());
         SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
         prefs.registerOnSharedPreferenceChangeListener(this);
 
-        final Preference usabilityStudyPref = findPreference(PREF_USABILITY_STUDY_MODE);
-        if (usabilityStudyPref instanceof CheckBoxPreference) {
-            final CheckBoxPreference checkbox = (CheckBoxPreference)usabilityStudyPref;
-            checkbox.setChecked(prefs.getBoolean(PREF_USABILITY_STUDY_MODE,
-                    LatinImeLogger.getUsabilityStudyMode(prefs)));
-            checkbox.setSummary(R.string.settings_warning_researcher_mode);
-        }
-        final Preference statisticsLoggingPref = findPreference(PREF_STATISTICS_LOGGING);
-        if (statisticsLoggingPref instanceof CheckBoxPreference) {
-            mStatisticsLoggingPref = (CheckBoxPreference) statisticsLoggingPref;
-            if (!SHOW_STATISTICS_LOGGING) {
-                getPreferenceScreen().removePreference(statisticsLoggingPref);
-            }
-        }
-
         final PreferenceScreen readExternalDictionary =
                 (PreferenceScreen) findPreference(PREF_READ_EXTERNAL_DICTIONARY);
         if (null != readExternalDictionary) {
@@ -85,36 +82,75 @@
                     });
         }
 
+        final PreferenceGroup dictDumpPreferenceGroup =
+                (PreferenceGroup)findPreference(PREF_KEY_DUMP_DICTS);
+        final OnPreferenceClickListener dictDumpPrefClickListener =
+                new DictDumpPrefClickListener(this);
+        for (final String dictName : DictionaryFacilitator.DICT_TYPE_TO_CLASS.keySet()) {
+            final Preference preference = new Preference(getActivity());
+            preference.setKey(PREF_KEY_DUMP_DICT_PREFIX + dictName);
+            preference.setTitle("Dump " + dictName + " dictionary");
+            preference.setOnPreferenceClickListener(dictDumpPrefClickListener);
+            preference.getExtras().putString(DICT_NAME_KEY_FOR_EXTRAS, dictName);
+            dictDumpPreferenceGroup.addPreference(preference);
+        }
+        final Resources res = getResources();
+        setupKeyLongpressTimeoutSettings(prefs, res);
+        setupKeyPreviewAnimationDuration(prefs, res, PREF_KEY_PREVIEW_SHOW_UP_DURATION,
+                res.getInteger(R.integer.config_key_preview_show_up_duration));
+        setupKeyPreviewAnimationDuration(prefs, res, PREF_KEY_PREVIEW_DISMISS_DURATION,
+                res.getInteger(R.integer.config_key_preview_dismiss_duration));
+        setupKeyPreviewAnimationScale(prefs, res, PREF_KEY_PREVIEW_SHOW_UP_START_SCALE,
+                ResourceUtils.getFloatFromFraction(
+                        res, R.fraction.config_key_preview_show_up_start_scale));
+        setupKeyPreviewAnimationScale(prefs, res, PREF_KEY_PREVIEW_DISMISS_END_SCALE,
+                ResourceUtils.getFloatFromFraction(
+                        res, R.fraction.config_key_preview_dismiss_end_scale));
+
         mServiceNeedsRestart = false;
-        mDebugMode = (CheckBoxPreference) findPreference(PREF_DEBUG_MODE);
+        mDebugMode = (TwoStatePreference) findPreference(PREF_DEBUG_MODE);
         updateDebugMode();
     }
 
+    private static class DictDumpPrefClickListener implements OnPreferenceClickListener {
+        final PreferenceFragment mPreferenceFragment;
+
+        public DictDumpPrefClickListener(final PreferenceFragment preferenceFragment) {
+            mPreferenceFragment = preferenceFragment;
+        }
+
+        @Override
+        public boolean onPreferenceClick(final Preference arg0) {
+            final String dictName = arg0.getExtras().getString(DICT_NAME_KEY_FOR_EXTRAS);
+            if (dictName != null) {
+                final Intent intent =
+                        new Intent(DictionaryDumpBroadcastReceiver.DICTIONARY_DUMP_INTENT_ACTION);
+                intent.putExtra(DictionaryDumpBroadcastReceiver.DICTIONARY_NAME_KEY, dictName);
+                mPreferenceFragment.getActivity().sendBroadcast(intent);
+            }
+            return true;
+        }
+    }
+
     @Override
     public void onStop() {
         super.onStop();
-        if (mServiceNeedsRestart) Process.killProcess(Process.myPid());
+        if (mServiceNeedsRestart) {
+            Process.killProcess(Process.myPid());
+        }
     }
 
     @Override
     public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
-        if (key.equals(PREF_DEBUG_MODE)) {
-            if (mDebugMode != null) {
-                mDebugMode.setChecked(prefs.getBoolean(PREF_DEBUG_MODE, false));
-                final boolean checked = mDebugMode.isChecked();
-                if (mStatisticsLoggingPref != null) {
-                    if (checked) {
-                        getPreferenceScreen().addPreference(mStatisticsLoggingPref);
-                    } else {
-                        getPreferenceScreen().removePreference(mStatisticsLoggingPref);
-                    }
-                }
-                updateDebugMode();
-                mServiceNeedsRestart = true;
-            }
-        } else if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH)
-                || key.equals(PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG)) {
+        if (key.equals(PREF_DEBUG_MODE) && mDebugMode != null) {
+            mDebugMode.setChecked(prefs.getBoolean(PREF_DEBUG_MODE, false));
+            updateDebugMode();
             mServiceNeedsRestart = true;
+            return;
+        }
+        if (key.equals(PREF_FORCE_NON_DISTINCT_MULTITOUCH)) {
+            mServiceNeedsRestart = true;
+            return;
         }
     }
 
@@ -133,4 +169,130 @@
             mDebugMode.setSummary(version);
         }
     }
+
+    private void setupKeyLongpressTimeoutSettings(final SharedPreferences sp,
+            final Resources res) {
+        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(
+                PREF_KEY_LONGPRESS_TIMEOUT);
+        if (pref == null) {
+            return;
+        }
+        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
+            @Override
+            public void writeValue(final int value, final String key) {
+                sp.edit().putInt(key, value).apply();
+            }
+
+            @Override
+            public void writeDefaultValue(final String key) {
+                sp.edit().remove(key).apply();
+            }
+
+            @Override
+            public int readValue(final String key) {
+                return Settings.readKeyLongpressTimeout(sp, res);
+            }
+
+            @Override
+            public int readDefaultValue(final String key) {
+                return Settings.readDefaultKeyLongpressTimeout(res);
+            }
+
+            @Override
+            public String getValueText(final int value) {
+                return res.getString(R.string.abbreviation_unit_milliseconds, value);
+            }
+
+            @Override
+            public void feedbackValue(final int value) {}
+        });
+    }
+
+    private void setupKeyPreviewAnimationScale(final SharedPreferences sp, final Resources res,
+            final String prefKey, final float defaultValue) {
+        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
+        if (pref == null) {
+            return;
+        }
+        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
+            private static final float PERCENTAGE_FLOAT = 100.0f;
+
+            private float getValueFromPercentage(final int percentage) {
+                return percentage / PERCENTAGE_FLOAT;
+            }
+
+            private int getPercentageFromValue(final float floatValue) {
+                return (int)(floatValue * PERCENTAGE_FLOAT);
+            }
+
+            @Override
+            public void writeValue(final int value, final String key) {
+                sp.edit().putFloat(key, getValueFromPercentage(value)).apply();
+            }
+
+            @Override
+            public void writeDefaultValue(final String key) {
+                sp.edit().remove(key).apply();
+            }
+
+            @Override
+            public int readValue(final String key) {
+                return getPercentageFromValue(
+                        Settings.readKeyPreviewAnimationScale(sp, key, defaultValue));
+            }
+
+            @Override
+            public int readDefaultValue(final String key) {
+                return getPercentageFromValue(defaultValue);
+            }
+
+            @Override
+            public String getValueText(final int value) {
+                if (value < 0) {
+                    return res.getString(R.string.settings_system_default);
+                }
+                return String.format("%d%%", value);
+            }
+
+            @Override
+            public void feedbackValue(final int value) {}
+        });
+    }
+
+    private void setupKeyPreviewAnimationDuration(final SharedPreferences sp, final Resources res,
+            final String prefKey, final int defaultValue) {
+        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(prefKey);
+        if (pref == null) {
+            return;
+        }
+        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
+            @Override
+            public void writeValue(final int value, final String key) {
+                sp.edit().putInt(key, value).apply();
+            }
+
+            @Override
+            public void writeDefaultValue(final String key) {
+                sp.edit().remove(key).apply();
+            }
+
+            @Override
+            public int readValue(final String key) {
+                return Settings.readKeyPreviewAnimationDuration(sp, key, defaultValue);
+            }
+
+            @Override
+            public int readDefaultValue(final String key) {
+                return defaultValue;
+            }
+
+            @Override
+            public String getValueText(final int value) {
+                return res.getString(R.string.abbreviation_unit_milliseconds, value);
+            }
+
+            @Override
+            public void feedbackValue(final int value) {}
+        });
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java b/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java
deleted file mode 100644
index a23e377..0000000
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettingsActivity.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.settings;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.FragmentUtils;
-
-public final class DebugSettingsActivity extends PreferenceActivity {
-    private static final String DEFAULT_FRAGMENT = DebugSettings.class.getName();
-
-    @Override
-    public Intent getIntent() {
-        final Intent intent = super.getIntent();
-        intent.putExtra(EXTRA_SHOW_FRAGMENT, DEFAULT_FRAGMENT);
-        intent.putExtra(EXTRA_NO_HEADERS, true);
-        return intent;
-    }
-
-    @Override
-    protected void onCreate(final Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setTitle(R.string.english_ime_debug_settings);
-    }
-
-    // TODO: Uncomment the override annotation once we start using SDK version 19.
-    // @Override
-    public boolean isValidFragment(String fragmentName) {
-        return FragmentUtils.isValidFragment(fragmentName);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java b/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
index cd726c9..31a20c4 100644
--- a/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
+++ b/java/src/com/android/inputmethod/latin/settings/NativeSuggestOptions.java
@@ -20,7 +20,9 @@
     // Need to update suggest_options.h when you add, remove or reorder options.
     private static final int IS_GESTURE = 0;
     private static final int USE_FULL_EDIT_DISTANCE = 1;
-    private static final int OPTIONS_SIZE = 2;
+    private static final int BLOCK_OFFENSIVE_WORDS = 2;
+    private static final int SPACE_AWARE_GESTURE_ENABLED = 3;
+    private static final int OPTIONS_SIZE = 4;
 
     private final int[] mOptions = new int[OPTIONS_SIZE
             + AdditionalFeaturesSettingUtils.ADDITIONAL_FEATURES_SETTINGS_SIZE];
@@ -33,6 +35,14 @@
         setBooleanOption(USE_FULL_EDIT_DISTANCE, value);
     }
 
+    public void setBlockOffensiveWords(final boolean value) {
+        setBooleanOption(BLOCK_OFFENSIVE_WORDS, value);
+    }
+
+    public void setSpaceAwareGestureEnabled(final boolean value) {
+        setBooleanOption(SPACE_AWARE_GESTURE_ENABLED, value);
+    }
+
     public void setAdditionalFeaturesOptions(final int[] additionalOptions) {
         if (additionalOptions == null) {
             return;
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index df2c690..fb1a210 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -20,6 +20,7 @@
 import android.content.SharedPreferences;
 import android.content.pm.ApplicationInfo;
 import android.content.res.Resources;
+import android.os.Build;
 import android.preference.PreferenceManager;
 import android.util.Log;
 
@@ -27,19 +28,25 @@
 import com.android.inputmethod.latin.InputAttributes;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
-import com.android.inputmethod.latin.utils.LocaleUtils;
 import com.android.inputmethod.latin.utils.ResourceUtils;
 import com.android.inputmethod.latin.utils.RunInLocale;
 import com.android.inputmethod.latin.utils.StringUtils;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Locale;
+import java.util.Set;
 import java.util.concurrent.locks.ReentrantLock;
 
 public final class Settings implements SharedPreferences.OnSharedPreferenceChangeListener {
     private static final String TAG = Settings.class.getSimpleName();
+    // Settings screens
+    public static final String SCREEN_INPUT = "screen_input";
+    public static final String SCREEN_MULTI_LINGUAL = "screen_multi_lingual";
+    public static final String SCREEN_GESTURE = "screen_gesture";
+    public static final String SCREEN_CORRECTION = "screen_correction";
+    public static final String SCREEN_ADVANCED = "screen_advanced";
+    public static final String SCREEN_DEBUG = "screen_debug";
     // In the same order as xml/prefs.xml
-    public static final String PREF_GENERAL_SETTINGS = "general_settings";
     public static final String PREF_AUTO_CAP = "auto_cap";
     public static final String PREF_VIBRATE_ON = "vibrate_on";
     public static final String PREF_SOUND_ON = "sound_on";
@@ -47,33 +54,31 @@
     // PREF_VOICE_MODE_OBSOLETE is obsolete. Use PREF_VOICE_INPUT_KEY instead.
     public static final String PREF_VOICE_MODE_OBSOLETE = "voice_mode";
     public static final String PREF_VOICE_INPUT_KEY = "pref_voice_input_key";
-    public static final String PREF_CORRECTION_SETTINGS = "correction_settings";
     public static final String PREF_EDIT_PERSONAL_DICTIONARY = "edit_personal_dictionary";
     public static final String PREF_CONFIGURE_DICTIONARIES_KEY = "configure_dictionaries_key";
     public static final String PREF_AUTO_CORRECTION_THRESHOLD = "auto_correction_threshold";
     public static final String PREF_SHOW_SUGGESTIONS_SETTING = "show_suggestions_setting";
-    public static final String PREF_MISC_SETTINGS = "misc_settings";
-    public static final String PREF_LAST_USER_DICTIONARY_WRITE_TIME =
-            "last_user_dictionary_write_time";
-    public static final String PREF_ADVANCED_SETTINGS = "pref_advanced_settings";
     public static final String PREF_KEY_USE_CONTACTS_DICT = "pref_key_use_contacts_dict";
+    public static final String PREF_KEY_USE_PERSONALIZED_DICTS = "pref_key_use_personalized_dicts";
     public static final String PREF_KEY_USE_DOUBLE_SPACE_PERIOD =
             "pref_key_use_double_space_period";
     public static final String PREF_BLOCK_POTENTIALLY_OFFENSIVE =
             "pref_key_block_potentially_offensive";
+    public static final boolean ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS =
+            (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
+            || (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT
+                    && Build.VERSION.CODENAME.equals("REL"));
     public static final String PREF_SHOW_LANGUAGE_SWITCH_KEY =
             "pref_show_language_switch_key";
     public static final String PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST =
             "pref_include_other_imes_in_language_switch_list";
-    public static final String PREF_KEYBOARD_LAYOUT = "pref_keyboard_layout_20110916";
+    public static final String PREF_KEYBOARD_THEME = "pref_keyboard_theme";
     public static final String PREF_CUSTOM_INPUT_STYLES = "custom_input_styles";
+    // TODO: consolidate key preview dismiss delay with the key preview animation parameters.
     public static final String PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY =
             "pref_key_preview_popup_dismiss_delay";
     public static final String PREF_BIGRAM_PREDICTIONS = "next_word_prediction";
-    public static final String PREF_GESTURE_SETTINGS = "gesture_typing_settings";
     public static final String PREF_GESTURE_INPUT = "gesture_input";
-    public static final String PREF_SLIDING_KEY_INPUT_PREVIEW = "pref_sliding_key_input_preview";
-    public static final String PREF_KEY_LONGPRESS_TIMEOUT = "pref_key_longpress_timeout";
     public static final String PREF_VIBRATION_DURATION_SETTINGS =
             "pref_vibration_duration_settings";
     public static final String PREF_KEYPRESS_SOUND_VOLUME =
@@ -86,9 +91,10 @@
 
     public static final String PREF_INPUT_LANGUAGE = "input_language";
     public static final String PREF_SELECTED_LANGUAGES = "selected_languages";
-    public static final String PREF_DEBUG_SETTINGS = "debug_settings";
     public static final String PREF_KEY_IS_INTERNAL = "pref_key_is_internal";
 
+    public static final String PREF_ENABLE_METRICS_LOGGING = "pref_enable_metrics_logging";
+
     // This preference key is deprecated. Use {@link #PREF_SHOW_LANGUAGE_SWITCH_KEY} instead.
     // This is being used only for the backward compatibility.
     private static final String PREF_SUPPRESS_LANGUAGE_SWITCH_KEY =
@@ -96,14 +102,20 @@
 
     private static final String PREF_LAST_USED_PERSONALIZATION_TOKEN =
             "pref_last_used_personalization_token";
-    public static final String PREF_SEND_FEEDBACK = "send_feedback";
-    public static final String PREF_ABOUT_KEYBOARD = "about_keyboard";
+    private static final String PREF_LAST_PERSONALIZATION_DICT_WIPED_TIME =
+            "pref_last_used_personalization_dict_wiped_time";
+    private static final String PREF_CORPUS_HANDLES_FOR_PERSONALIZATION =
+            "pref_corpus_handles_for_personalization";
 
     // Emoji
     public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys";
     public static final String PREF_EMOJI_CATEGORY_LAST_TYPED_ID = "emoji_category_last_typed_id";
     public static final String PREF_LAST_SHOWN_EMOJI_CATEGORY_ID = "last_shown_emoji_category_id";
 
+    private static final float UNDEFINED_PREFERENCE_VALUE_FLOAT = -1.0f;
+    private static final int UNDEFINED_PREFERENCE_VALUE_INT = -1;
+
+    private Context mContext;
     private Resources mRes;
     private SharedPreferences mPrefs;
     private SettingsValues mSettingsValues;
@@ -124,6 +136,7 @@
     }
 
     private void onCreate(final Context context) {
+        mContext = context;
         mRes = context.getResources();
         mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
         mPrefs.registerOnSharedPreferenceChangeListener(this);
@@ -143,20 +156,22 @@
                 Log.w(TAG, "onSharedPreferenceChanged called before loadSettings.");
                 return;
             }
-            loadSettings(mSettingsValues.mLocale, mSettingsValues.mInputAttributes);
+            loadSettings(mContext, mSettingsValues.mLocale, mSettingsValues.mInputAttributes);
         } finally {
             mSettingsValuesLock.unlock();
         }
     }
 
-    public void loadSettings(final Locale locale, final InputAttributes inputAttributes) {
+    public void loadSettings(final Context context, final Locale locale,
+            final InputAttributes inputAttributes) {
         mSettingsValuesLock.lock();
+        mContext = context;
         try {
             final SharedPreferences prefs = mPrefs;
             final RunInLocale<SettingsValues> job = new RunInLocale<SettingsValues>() {
                 @Override
                 protected SettingsValues job(final Resources res) {
-                    return new SettingsValues(prefs, locale, res, inputAttributes);
+                    return new SettingsValues(context, prefs, res, inputAttributes);
                 }
             };
             mSettingsValues = job.runInLocale(mRes, locale);
@@ -174,10 +189,6 @@
         return mSettingsValues.mIsInternal;
     }
 
-    public String getWordSeparators() {
-        return mSettingsValues.mWordSeparators;
-    }
-
     public boolean isWordSeparator(final int code) {
         return mSettingsValues.isWordSeparator(code);
     }
@@ -189,7 +200,7 @@
     // Accessed from the settings interface, hence public
     public static boolean readKeypressSoundEnabled(final SharedPreferences prefs,
             final Resources res) {
-        return prefs.getBoolean(Settings.PREF_SOUND_ON,
+        return prefs.getBoolean(PREF_SOUND_ON,
                 res.getBoolean(R.bool.config_default_sound_enabled));
     }
 
@@ -209,7 +220,7 @@
 
     public static boolean readBlockPotentiallyOffensive(final SharedPreferences prefs,
             final Resources res) {
-        return prefs.getBoolean(Settings.PREF_BLOCK_POTENTIALLY_OFFENSIVE,
+        return prefs.getBoolean(PREF_BLOCK_POTENTIALLY_OFFENSIVE,
                 res.getBoolean(R.bool.config_block_potentially_offensive));
     }
 
@@ -220,25 +231,24 @@
     public static boolean readGestureInputEnabled(final SharedPreferences prefs,
             final Resources res) {
         return readFromBuildConfigIfGestureInputEnabled(res)
-                && prefs.getBoolean(Settings.PREF_GESTURE_INPUT, true);
+                && prefs.getBoolean(PREF_GESTURE_INPUT, true);
     }
 
     public static boolean readPhraseGestureEnabled(final SharedPreferences prefs,
             final Resources res) {
-        return prefs.getBoolean(Settings.PREF_PHRASE_GESTURE_ENABLED,
+        return prefs.getBoolean(PREF_PHRASE_GESTURE_ENABLED,
                 res.getBoolean(R.bool.config_default_phrase_gesture_enabled));
     }
 
-    public static boolean readFromBuildConfigIfToShowKeyPreviewPopupSettingsOption(
-            final Resources res) {
-        return res.getBoolean(R.bool.config_enable_show_option_of_key_preview_popup);
+    public static boolean readFromBuildConfigIfToShowKeyPreviewPopupOption(final Resources res) {
+        return res.getBoolean(R.bool.config_enable_show_key_preview_popup_option);
     }
 
     public static boolean readKeyPreviewPopupEnabled(final SharedPreferences prefs,
             final Resources res) {
         final boolean defaultKeyPreviewPopup = res.getBoolean(
                 R.bool.config_default_key_preview_popup);
-        if (!readFromBuildConfigIfToShowKeyPreviewPopupSettingsOption(res)) {
+        if (!readFromBuildConfigIfToShowKeyPreviewPopupOption(res)) {
             return defaultKeyPreviewPopup;
         }
         return prefs.getBoolean(PREF_POPUP_ON, defaultKeyPreviewPopup);
@@ -263,28 +273,6 @@
         return prefs.getBoolean(PREF_SHOW_LANGUAGE_SWITCH_KEY, true);
     }
 
-    public static int readKeyboardThemeIndex(final SharedPreferences prefs, final Resources res) {
-        final String defaultThemeIndex = res.getString(
-                R.string.config_default_keyboard_theme_index);
-        final String themeIndex = prefs.getString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex);
-        try {
-            return Integer.valueOf(themeIndex);
-        } catch (final NumberFormatException e) {
-            // Format error, returns default keyboard theme index.
-            Log.e(TAG, "Illegal keyboard theme in preference: " + themeIndex + ", default to "
-                    + defaultThemeIndex, e);
-            return Integer.valueOf(defaultThemeIndex);
-        }
-    }
-
-    public static int resetAndGetDefaultKeyboardThemeIndex(final SharedPreferences prefs,
-            final Resources res) {
-        final String defaultThemeIndex = res.getString(
-                R.string.config_default_keyboard_theme_index);
-        prefs.edit().putString(PREF_KEYBOARD_LAYOUT, defaultThemeIndex).apply();
-        return Integer.valueOf(defaultThemeIndex);
-    }
-
     public static String readPrefAdditionalSubtypes(final SharedPreferences prefs,
             final Resources res) {
         final String predefinedPrefSubtypes = AdditionalSubtypeUtils.createPrefSubtypes(
@@ -294,24 +282,32 @@
 
     public static void writePrefAdditionalSubtypes(final SharedPreferences prefs,
             final String prefSubtypes) {
-        prefs.edit().putString(Settings.PREF_CUSTOM_INPUT_STYLES, prefSubtypes).apply();
+        prefs.edit().putString(PREF_CUSTOM_INPUT_STYLES, prefSubtypes).apply();
     }
 
     public static float readKeypressSoundVolume(final SharedPreferences prefs,
             final Resources res) {
-        final float volume = prefs.getFloat(PREF_KEYPRESS_SOUND_VOLUME, -1.0f);
-        return (volume >= 0) ? volume : readDefaultKeypressSoundVolume(res);
+        final float volume = prefs.getFloat(
+                PREF_KEYPRESS_SOUND_VOLUME, UNDEFINED_PREFERENCE_VALUE_FLOAT);
+        return (volume != UNDEFINED_PREFERENCE_VALUE_FLOAT) ? volume
+                : readDefaultKeypressSoundVolume(res);
     }
 
+    // Default keypress sound volume for unknown devices.
+    // The negative value means system default.
+    private static final String DEFAULT_KEYPRESS_SOUND_VOLUME = Float.toString(-1.0f);
+
     public static float readDefaultKeypressSoundVolume(final Resources res) {
-        return Float.parseFloat(
-                ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_volumes));
+        return Float.parseFloat(ResourceUtils.getDeviceOverrideValue(res,
+                R.array.keypress_volumes, DEFAULT_KEYPRESS_SOUND_VOLUME));
     }
 
     public static int readKeyLongpressTimeout(final SharedPreferences prefs,
             final Resources res) {
-        final int ms = prefs.getInt(PREF_KEY_LONGPRESS_TIMEOUT, -1);
-        return (ms >= 0) ? ms : readDefaultKeyLongpressTimeout(res);
+        final int milliseconds = prefs.getInt(
+                DebugSettings.PREF_KEY_LONGPRESS_TIMEOUT, UNDEFINED_PREFERENCE_VALUE_INT);
+        return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds
+                : readDefaultKeyLongpressTimeout(res);
     }
 
     public static int readDefaultKeyLongpressTimeout(final Resources res) {
@@ -320,36 +316,31 @@
 
     public static int readKeypressVibrationDuration(final SharedPreferences prefs,
             final Resources res) {
-        final int ms = prefs.getInt(PREF_VIBRATION_DURATION_SETTINGS, -1);
-        return (ms >= 0) ? ms : readDefaultKeypressVibrationDuration(res);
+        final int milliseconds = prefs.getInt(
+                PREF_VIBRATION_DURATION_SETTINGS, UNDEFINED_PREFERENCE_VALUE_INT);
+        return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds
+                : readDefaultKeypressVibrationDuration(res);
     }
 
+    // Default keypress vibration duration for unknown devices.
+    // The negative value means system default.
+    private static final String DEFAULT_KEYPRESS_VIBRATION_DURATION = Integer.toString(-1);
+
     public static int readDefaultKeypressVibrationDuration(final Resources res) {
-        return Integer.parseInt(
-                ResourceUtils.getDeviceOverrideValue(res, R.array.keypress_vibration_durations));
+        return Integer.parseInt(ResourceUtils.getDeviceOverrideValue(res,
+                R.array.keypress_vibration_durations, DEFAULT_KEYPRESS_VIBRATION_DURATION));
     }
 
-    public static boolean readUsabilityStudyMode(final SharedPreferences prefs) {
-        return prefs.getBoolean(DebugSettings.PREF_USABILITY_STUDY_MODE, true);
+    public static float readKeyPreviewAnimationScale(final SharedPreferences prefs,
+            final String prefKey, final float defaultValue) {
+        final float fraction = prefs.getFloat(prefKey, UNDEFINED_PREFERENCE_VALUE_FLOAT);
+        return (fraction != UNDEFINED_PREFERENCE_VALUE_FLOAT) ? fraction : defaultValue;
     }
 
-    public static long readLastUserHistoryWriteTime(final SharedPreferences prefs,
-            final String locale) {
-        final String str = prefs.getString(PREF_LAST_USER_DICTIONARY_WRITE_TIME, "");
-        final HashMap<String, Long> map = LocaleUtils.localeAndTimeStrToHashMap(str);
-        if (map.containsKey(locale)) {
-            return map.get(locale);
-        }
-        return 0;
-    }
-
-    public static void writeLastUserHistoryWriteTime(final SharedPreferences prefs,
-            final String locale) {
-        final String oldStr = prefs.getString(PREF_LAST_USER_DICTIONARY_WRITE_TIME, "");
-        final HashMap<String, Long> map = LocaleUtils.localeAndTimeStrToHashMap(oldStr);
-        map.put(locale, System.currentTimeMillis());
-        final String newStr = LocaleUtils.localeAndTimeHashMapToStr(map);
-        prefs.edit().putString(PREF_LAST_USER_DICTIONARY_WRITE_TIME, newStr).apply();
+    public static int readKeyPreviewAnimationDuration(final SharedPreferences prefs,
+            final String prefKey, final int defaultValue) {
+        final int milliseconds = prefs.getInt(prefKey, UNDEFINED_PREFERENCE_VALUE_INT);
+        return (milliseconds != UNDEFINED_PREFERENCE_VALUE_INT) ? milliseconds : defaultValue;
     }
 
     public static boolean readUseFullscreenMode(final Resources res) {
@@ -363,35 +354,27 @@
         if (!enableSetupWizardByConfig) {
             return false;
         }
-        if (!prefs.contains(Settings.PREF_SHOW_SETUP_WIZARD_ICON)) {
+        if (!prefs.contains(PREF_SHOW_SETUP_WIZARD_ICON)) {
             final ApplicationInfo appInfo = context.getApplicationInfo();
             final boolean isApplicationInSystemImage =
                     (appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
             // Default value
             return !isApplicationInSystemImage;
         }
-        return prefs.getBoolean(Settings.PREF_SHOW_SETUP_WIZARD_ICON, false);
+        return prefs.getBoolean(PREF_SHOW_SETUP_WIZARD_ICON, false);
     }
 
     public static boolean isInternal(final SharedPreferences prefs) {
-        return prefs.getBoolean(Settings.PREF_KEY_IS_INTERNAL, false);
-    }
-
-    public static boolean readUseOnlyPersonalizationDictionaryForDebug(
-            final SharedPreferences prefs) {
-        return prefs.getBoolean(
-                DebugSettings.PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG, false);
-    }
-
-    public static boolean readBoostPersonalizationDictionaryForDebug(
-            final SharedPreferences prefs) {
-        return prefs.getBoolean(
-                DebugSettings.PREF_BOOST_PERSONALIZATION_DICTIONARY_FOR_DEBUG, false);
+        return prefs.getBoolean(PREF_KEY_IS_INTERNAL, false);
     }
 
     public void writeLastUsedPersonalizationToken(byte[] token) {
-        final String tokenStr = StringUtils.byteArrayToHexString(token);
-        mPrefs.edit().putString(PREF_LAST_USED_PERSONALIZATION_TOKEN, tokenStr).apply();
+        if (token == null) {
+            mPrefs.edit().remove(PREF_LAST_USED_PERSONALIZATION_TOKEN).apply();
+        } else {
+            final String tokenStr = StringUtils.byteArrayToHexString(token);
+            mPrefs.edit().putString(PREF_LAST_USED_PERSONALIZATION_TOKEN, tokenStr).apply();
+        }
     }
 
     public byte[] readLastUsedPersonalizationToken() {
@@ -399,6 +382,23 @@
         return StringUtils.hexStringToByteArray(tokenStr);
     }
 
+    public void writeLastPersonalizationDictWipedTime(final long timestamp) {
+        mPrefs.edit().putLong(PREF_LAST_PERSONALIZATION_DICT_WIPED_TIME, timestamp).apply();
+    }
+
+    public long readLastPersonalizationDictGeneratedTime() {
+        return mPrefs.getLong(PREF_LAST_PERSONALIZATION_DICT_WIPED_TIME, 0);
+    }
+
+    public void writeCorpusHandlesForPersonalization(final Set<String> corpusHandles) {
+        mPrefs.edit().putStringSet(PREF_CORPUS_HANDLES_FOR_PERSONALIZATION, corpusHandles).apply();
+    }
+
+    public Set<String> readCorpusHandlesForPersonalization() {
+        final Set<String> emptySet = Collections.emptySet();
+        return mPrefs.getStringSet(PREF_CORPUS_HANDLES_FOR_PERSONALIZATION, emptySet);
+    }
+
     public static void writeEmojiRecentKeys(final SharedPreferences prefs, String str) {
         prefs.edit().putString(PREF_EMOJI_RECENT_KEYS, str).apply();
     }
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
index 5c60a73..ac5d71c 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -27,20 +27,23 @@
 import android.media.AudioManager;
 import android.os.Build;
 import android.os.Bundle;
-import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
+import android.preference.TwoStatePreference;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.inputmethod.dictionarypack.DictionarySettingsActivity;
+import com.android.inputmethod.keyboard.KeyboardTheme;
 import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SubtypeSwitcher;
-import com.android.inputmethod.latin.define.ProductionFlag;
+import com.android.inputmethod.latin.define.ProductionFlags;
 import com.android.inputmethod.latin.setup.LauncherIconVisibilityManager;
 import com.android.inputmethod.latin.userdictionary.UserDictionaryList;
 import com.android.inputmethod.latin.userdictionary.UserDictionarySettings;
@@ -48,7 +51,6 @@
 import com.android.inputmethod.latin.utils.ApplicationUtils;
 import com.android.inputmethod.latin.utils.FeedbackUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
-import com.android.inputmethod.research.ResearchLogger;
 import com.android.inputmethodcommon.InputMethodSettingsFragment;
 
 import java.util.TreeSet;
@@ -59,14 +61,11 @@
     private static final boolean DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = false;
     private static final boolean USE_INTERNAL_PERSONAL_DICTIONARY_SETTIGS =
             DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS
-                    || Build.VERSION.SDK_INT <= 18 /* Build.VERSION.JELLY_BEAN_MR2 */;
+            || Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2;
 
-    private CheckBoxPreference mVoiceInputKeyPreference;
-    private ListPreference mShowCorrectionSuggestionsPreference;
-    private ListPreference mAutoCorrectionThresholdPreference;
-    private ListPreference mKeyPreviewPopupDismissDelay;
-    // Use bigrams to predict the next word when there is no input for it yet
-    private CheckBoxPreference mBigramPrediction;
+    private static final int NO_MENU_GROUP = Menu.NONE; // We don't care about menu grouping.
+    private static final int MENU_FEEDBACK = Menu.FIRST; // The first menu item id and order.
+    private static final int MENU_ABOUT = Menu.FIRST + 1; // The second menu item id and order.
 
     private void setPreferenceEnabled(final String preferenceKey, final boolean enabled) {
         final Preference preference = findPreference(preferenceKey);
@@ -75,6 +74,18 @@
         }
     }
 
+    private void updateListPreferenceSummaryToCurrentValue(final String prefKey) {
+        // Because the "%s" summary trick of {@link ListPreference} doesn't work properly before
+        // KitKat, we need to update the summary programmatically.
+        final ListPreference listPreference = (ListPreference)findPreference(prefKey);
+        if (listPreference == null) {
+            return;
+        }
+        final CharSequence entries[] = listPreference.getEntries();
+        final int entryIndex = listPreference.findIndexOfValue(listPreference.getValue());
+        listPreference.setSummary(entryIndex < 0 ? null : entries[entryIndex]);
+    }
+
     private static void removePreference(final String preferenceKey, final PreferenceGroup parent) {
         if (parent == null) {
             return;
@@ -88,14 +99,14 @@
     @Override
     public void onCreate(final Bundle icicle) {
         super.onCreate(icicle);
+        setHasOptionsMenu(true);
         setInputMethodSettingsCategoryTitle(R.string.language_selection_title);
         setSubtypeEnablerTitle(R.string.select_language);
         addPreferencesFromResource(R.xml.prefs);
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
-        if (preferenceScreen != null) {
-            preferenceScreen.setTitle(
-                    ApplicationUtils.getAcitivityTitleResId(getActivity(), SettingsActivity.class));
-        }
+        TwoStatePreferenceHelper.replaceCheckBoxPreferencesBySwitchPreferences(preferenceScreen);
+        preferenceScreen.setTitle(
+                ApplicationUtils.getActivityTitleResId(getActivity(), SettingsActivity.class));
 
         final Resources res = getResources();
         final Context context = getActivity();
@@ -107,115 +118,94 @@
         SubtypeLocaleUtils.init(context);
         AudioAndHapticFeedbackManager.init(context);
 
-        mVoiceInputKeyPreference =
-                (CheckBoxPreference) findPreference(Settings.PREF_VOICE_INPUT_KEY);
-        mShowCorrectionSuggestionsPreference =
-                (ListPreference) findPreference(Settings.PREF_SHOW_SUGGESTIONS_SETTING);
         final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
         prefs.registerOnSharedPreferenceChangeListener(this);
 
-        mAutoCorrectionThresholdPreference =
-                (ListPreference) findPreference(Settings.PREF_AUTO_CORRECTION_THRESHOLD);
-        mBigramPrediction = (CheckBoxPreference) findPreference(Settings.PREF_BIGRAM_PREDICTIONS);
         ensureConsistencyOfAutoCorrectionSettings();
 
-        final PreferenceGroup generalSettings =
-                (PreferenceGroup) findPreference(Settings.PREF_GENERAL_SETTINGS);
-        final PreferenceGroup miscSettings =
-                (PreferenceGroup) findPreference(Settings.PREF_MISC_SETTINGS);
+        final PreferenceScreen inputScreen =
+                (PreferenceScreen) findPreference(Settings.SCREEN_INPUT);
+        final PreferenceScreen multiLingualScreen =
+                (PreferenceScreen) findPreference(Settings.SCREEN_MULTI_LINGUAL);
+        final PreferenceScreen gestureScreen =
+                (PreferenceScreen) findPreference(Settings.SCREEN_GESTURE);
+        final PreferenceScreen correctionScreen =
+                (PreferenceScreen) findPreference(Settings.SCREEN_CORRECTION);
+        final PreferenceScreen advancedScreen =
+                (PreferenceScreen) findPreference(Settings.SCREEN_ADVANCED);
+        final PreferenceScreen debugScreen =
+                (PreferenceScreen) findPreference(Settings.SCREEN_DEBUG);
 
-        final Preference debugSettings = findPreference(Settings.PREF_DEBUG_SETTINGS);
-        if (debugSettings != null) {
-            if (Settings.isInternal(prefs)) {
-                final Intent debugSettingsIntent = new Intent(Intent.ACTION_MAIN);
-                debugSettingsIntent.setClassName(
-                        context.getPackageName(), DebugSettingsActivity.class.getName());
-                debugSettings.setIntent(debugSettingsIntent);
-            } else {
-                miscSettings.removePreference(debugSettings);
-            }
-        }
-
-        final Preference feedbackSettings = findPreference(Settings.PREF_SEND_FEEDBACK);
-        final Preference aboutSettings = findPreference(Settings.PREF_ABOUT_KEYBOARD);
-        if (feedbackSettings != null) {
-            if (FeedbackUtils.isFeedbackFormSupported()) {
-                feedbackSettings.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-                    @Override
-                    public boolean onPreferenceClick(final Preference pref) {
-                        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-                            // Use development-only feedback mechanism
-                            ResearchLogger.getInstance().presentFeedbackDialogFromSettings();
-                        } else {
-                            FeedbackUtils.showFeedbackForm(getActivity());
-                        }
-                        return true;
-                    }
-                });
-                aboutSettings.setTitle(FeedbackUtils.getAboutKeyboardTitleResId());
-                aboutSettings.setIntent(FeedbackUtils.getAboutKeyboardIntent(getActivity()));
-            } else {
-                miscSettings.removePreference(feedbackSettings);
-                miscSettings.removePreference(aboutSettings);
-            }
-        }
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            // The about screen contains items that may be confusing in development-only versions.
-            miscSettings.removePreference(aboutSettings);
+        if (!Settings.isInternal(prefs)) {
+            advancedScreen.removePreference(debugScreen);
         }
 
         final boolean showVoiceKeyOption = res.getBoolean(
                 R.bool.config_enable_show_voice_key_option);
         if (!showVoiceKeyOption) {
-            generalSettings.removePreference(mVoiceInputKeyPreference);
+            removePreference(Settings.PREF_VOICE_INPUT_KEY, inputScreen);
         }
 
-        final PreferenceGroup advancedSettings =
-                (PreferenceGroup) findPreference(Settings.PREF_ADVANCED_SETTINGS);
         if (!AudioAndHapticFeedbackManager.getInstance().hasVibrator()) {
-            removePreference(Settings.PREF_VIBRATE_ON, generalSettings);
-            removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS, advancedSettings);
+            removePreference(Settings.PREF_VIBRATE_ON, inputScreen);
+            removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS, advancedScreen);
+        }
+        if (!Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS) {
+            removePreference(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY, multiLingualScreen);
+            removePreference(
+                    Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, multiLingualScreen);
         }
 
-        mKeyPreviewPopupDismissDelay =
-                (ListPreference) findPreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
-        if (!Settings.readFromBuildConfigIfToShowKeyPreviewPopupSettingsOption(res)) {
-            removePreference(Settings.PREF_POPUP_ON, generalSettings);
-            removePreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY, advancedSettings);
+        // TODO: consolidate key preview dismiss delay with the key preview animation parameters.
+        if (!Settings.readFromBuildConfigIfToShowKeyPreviewPopupOption(res)) {
+            removePreference(Settings.PREF_POPUP_ON, inputScreen);
+            removePreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY, advancedScreen);
         } else {
+            // TODO: Cleanup this setup.
+            final ListPreference keyPreviewPopupDismissDelay =
+                    (ListPreference) findPreference(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
             final String popupDismissDelayDefaultValue = Integer.toString(res.getInteger(
                     R.integer.config_key_preview_linger_timeout));
-            mKeyPreviewPopupDismissDelay.setEntries(new String[] {
+            keyPreviewPopupDismissDelay.setEntries(new String[] {
                     res.getString(R.string.key_preview_popup_dismiss_no_delay),
                     res.getString(R.string.key_preview_popup_dismiss_default_delay),
             });
-            mKeyPreviewPopupDismissDelay.setEntryValues(new String[] {
+            keyPreviewPopupDismissDelay.setEntryValues(new String[] {
                     "0",
                     popupDismissDelayDefaultValue
             });
-            if (null == mKeyPreviewPopupDismissDelay.getValue()) {
-                mKeyPreviewPopupDismissDelay.setValue(popupDismissDelayDefaultValue);
+            if (null == keyPreviewPopupDismissDelay.getValue()) {
+                keyPreviewPopupDismissDelay.setValue(popupDismissDelayDefaultValue);
             }
-            mKeyPreviewPopupDismissDelay.setEnabled(
+            keyPreviewPopupDismissDelay.setEnabled(
                     Settings.readKeyPreviewPopupEnabled(prefs, res));
         }
 
         if (!res.getBoolean(R.bool.config_setup_wizard_available)) {
-            removePreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON, advancedSettings);
+            removePreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON, advancedScreen);
         }
 
-        setPreferenceEnabled(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST,
-                Settings.readShowsLanguageSwitchKey(prefs));
-
-        final PreferenceGroup textCorrectionGroup =
-                (PreferenceGroup) findPreference(Settings.PREF_CORRECTION_SETTINGS);
         final PreferenceScreen dictionaryLink =
                 (PreferenceScreen) findPreference(Settings.PREF_CONFIGURE_DICTIONARIES_KEY);
         final Intent intent = dictionaryLink.getIntent();
         intent.setClassName(context.getPackageName(), DictionarySettingsActivity.class.getName());
         final int number = context.getPackageManager().queryIntentActivities(intent, 0).size();
         if (0 >= number) {
-            textCorrectionGroup.removePreference(dictionaryLink);
+            correctionScreen.removePreference(dictionaryLink);
+        }
+
+        if (ProductionFlags.IS_METRICS_LOGGING_SUPPORTED) {
+            final Preference enableMetricsLogging =
+                    findPreference(Settings.PREF_ENABLE_METRICS_LOGGING);
+            if (enableMetricsLogging != null) {
+                final int applicationLabelRes = context.getApplicationInfo().labelRes;
+                final String applicationName = res.getString(applicationLabelRes);
+                final String enableMetricsLoggingTitle = res.getString(
+                        R.string.enable_metrics_logging, applicationName);
+                enableMetricsLogging.setTitle(enableMetricsLoggingTitle);
+            }
+        } else {
+            removePreference(Settings.PREF_ENABLE_METRICS_LOGGING, advancedScreen);
         }
 
         final Preference editPersonalDictionary =
@@ -229,12 +219,11 @@
         }
 
         if (!Settings.readFromBuildConfigIfGestureInputEnabled(res)) {
-            removePreference(Settings.PREF_GESTURE_SETTINGS, getPreferenceScreen());
+            getPreferenceScreen().removePreference(gestureScreen);
         }
 
         AdditionalFeaturesSettingUtils.addAdditionalFeaturesPreferences(context, this);
 
-        setupKeyLongpressTimeoutSettings(prefs, res);
         setupKeypressVibrationDurationSettings(prefs, res);
         setupKeypressSoundVolumeSettings(prefs, res);
         refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, res);
@@ -243,20 +232,45 @@
     @Override
     public void onResume() {
         super.onResume();
-        final boolean isShortcutImeEnabled = SubtypeSwitcher.getInstance().isShortcutImeEnabled();
-        if (!isShortcutImeEnabled) {
-            getPreferenceScreen().removePreference(mVoiceInputKeyPreference);
-        }
         final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
-        final CheckBoxPreference showSetupWizardIcon =
-                (CheckBoxPreference)findPreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON);
+        final Resources res = getResources();
+        final Preference voiceInputKeyOption = findPreference(Settings.PREF_VOICE_INPUT_KEY);
+        if (voiceInputKeyOption != null) {
+            final boolean isShortcutImeEnabled = SubtypeSwitcher.getInstance()
+                    .isShortcutImeEnabled();
+            voiceInputKeyOption.setEnabled(isShortcutImeEnabled);
+            voiceInputKeyOption.setSummary(isShortcutImeEnabled ? null
+                    : res.getText(R.string.voice_input_disabled_summary));
+        }
+        final TwoStatePreference showSetupWizardIcon =
+                (TwoStatePreference)findPreference(Settings.PREF_SHOW_SETUP_WIZARD_ICON);
         if (showSetupWizardIcon != null) {
             showSetupWizardIcon.setChecked(Settings.readShowSetupWizardIcon(prefs, getActivity()));
         }
-        updateShowCorrectionSuggestionsSummary();
-        updateKeyPreviewPopupDelaySummary();
-        updateColorSchemeSummary(prefs, getResources());
-        updateCustomInputStylesSummary();
+        updateListPreferenceSummaryToCurrentValue(Settings.PREF_SHOW_SUGGESTIONS_SETTING);
+        updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
+        final ListPreference keyboardThemePref = (ListPreference)findPreference(
+                Settings.PREF_KEYBOARD_THEME);
+        if (keyboardThemePref != null) {
+            final KeyboardTheme keyboardTheme = KeyboardTheme.getKeyboardTheme(prefs);
+            final String value = Integer.toString(keyboardTheme.mThemeId);
+            final CharSequence entries[] = keyboardThemePref.getEntries();
+            final int entryIndex = keyboardThemePref.findIndexOfValue(value);
+            keyboardThemePref.setSummary(entryIndex < 0 ? null : entries[entryIndex]);
+            keyboardThemePref.setValue(value);
+        }
+        updateCustomInputStylesSummary(prefs, res);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
+        final ListPreference keyboardThemePref = (ListPreference)findPreference(
+                Settings.PREF_KEYBOARD_THEME);
+        if (keyboardThemePref != null) {
+            KeyboardTheme.saveKeyboardThemeId(keyboardThemePref.getValue(), prefs);
+        }
     }
 
     @Override
@@ -280,57 +294,30 @@
         if (key.equals(Settings.PREF_POPUP_ON)) {
             setPreferenceEnabled(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY,
                     Settings.readKeyPreviewPopupEnabled(prefs, res));
-        } else if (key.equals(Settings.PREF_SHOW_LANGUAGE_SWITCH_KEY)) {
-            setPreferenceEnabled(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST,
-                    Settings.readShowsLanguageSwitchKey(prefs));
         } else if (key.equals(Settings.PREF_SHOW_SETUP_WIZARD_ICON)) {
             LauncherIconVisibilityManager.updateSetupWizardIconVisibility(getActivity());
         }
         ensureConsistencyOfAutoCorrectionSettings();
-        updateShowCorrectionSuggestionsSummary();
-        updateKeyPreviewPopupDelaySummary();
-        updateColorSchemeSummary(prefs, res);
+        updateListPreferenceSummaryToCurrentValue(Settings.PREF_SHOW_SUGGESTIONS_SETTING);
+        updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEY_PREVIEW_POPUP_DISMISS_DELAY);
+        updateListPreferenceSummaryToCurrentValue(Settings.PREF_KEYBOARD_THEME);
         refreshEnablingsOfKeypressSoundAndVibrationSettings(prefs, getResources());
     }
 
     private void ensureConsistencyOfAutoCorrectionSettings() {
         final String autoCorrectionOff = getResources().getString(
                 R.string.auto_correction_threshold_mode_index_off);
-        final String currentSetting = mAutoCorrectionThresholdPreference.getValue();
-        mBigramPrediction.setEnabled(!currentSetting.equals(autoCorrectionOff));
+        final ListPreference autoCorrectionThresholdPref = (ListPreference)findPreference(
+                Settings.PREF_AUTO_CORRECTION_THRESHOLD);
+        final String currentSetting = autoCorrectionThresholdPref.getValue();
+        setPreferenceEnabled(
+                Settings.PREF_BIGRAM_PREDICTIONS, !currentSetting.equals(autoCorrectionOff));
     }
 
-    private void updateShowCorrectionSuggestionsSummary() {
-        mShowCorrectionSuggestionsPreference.setSummary(
-                getResources().getStringArray(R.array.prefs_suggestion_visibilities)
-                [mShowCorrectionSuggestionsPreference.findIndexOfValue(
-                        mShowCorrectionSuggestionsPreference.getValue())]);
-    }
-
-    private void updateColorSchemeSummary(final SharedPreferences prefs, final Resources res) {
-        // Because the "%s" summary trick of {@link ListPreference} doesn't work properly before
-        // KitKat, we need to update the summary by code.
-        final Preference preference = findPreference(Settings.PREF_KEYBOARD_LAYOUT);
-        if (!(preference instanceof ListPreference)) {
-            Log.w(TAG, "Can't find Keyboard Color Scheme preference");
-            return;
-        }
-        final ListPreference colorSchemePreference = (ListPreference)preference;
-        final int themeIndex = Settings.readKeyboardThemeIndex(prefs, res);
-        int entryIndex = colorSchemePreference.findIndexOfValue(Integer.toString(themeIndex));
-        if (entryIndex < 0) {
-            final int defaultThemeIndex = Settings.resetAndGetDefaultKeyboardThemeIndex(prefs, res);
-            entryIndex = colorSchemePreference.findIndexOfValue(
-                    Integer.toString(defaultThemeIndex));
-        }
-        colorSchemePreference.setSummary(colorSchemePreference.getEntries()[entryIndex]);
-    }
-
-    private void updateCustomInputStylesSummary() {
+    private void updateCustomInputStylesSummary(final SharedPreferences prefs,
+            final Resources res) {
         final PreferenceScreen customInputStyles =
                 (PreferenceScreen)findPreference(Settings.PREF_CUSTOM_INPUT_STYLES);
-        final SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
-        final Resources res = getResources();
         final String prefSubtype = Settings.readPrefAdditionalSubtypes(prefs, res);
         final InputMethodSubtype[] subtypes =
                 AdditionalSubtypeUtils.createAdditionalSubtypesArray(prefSubtype);
@@ -342,13 +329,6 @@
         customInputStyles.setSummary(styles);
     }
 
-    private void updateKeyPreviewPopupDelaySummary() {
-        final ListPreference lp = mKeyPreviewPopupDismissDelay;
-        final CharSequence[] entries = lp.getEntries();
-        if (entries == null || entries.length <= 0) return;
-        lp.setSummary(entries[lp.findIndexOfValue(lp.getValue())]);
-    }
-
     private void refreshEnablingsOfKeypressSoundAndVibrationSettings(
             final SharedPreferences sp, final Resources res) {
         setPreferenceEnabled(Settings.PREF_VIBRATION_DURATION_SETTINGS,
@@ -400,44 +380,6 @@
         });
     }
 
-    private void setupKeyLongpressTimeoutSettings(final SharedPreferences sp,
-            final Resources res) {
-        final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(
-                Settings.PREF_KEY_LONGPRESS_TIMEOUT);
-        if (pref == null) {
-            return;
-        }
-        pref.setInterface(new SeekBarDialogPreference.ValueProxy() {
-            @Override
-            public void writeValue(final int value, final String key) {
-                sp.edit().putInt(key, value).apply();
-            }
-
-            @Override
-            public void writeDefaultValue(final String key) {
-                sp.edit().remove(key).apply();
-            }
-
-            @Override
-            public int readValue(final String key) {
-                return Settings.readKeyLongpressTimeout(sp, res);
-            }
-
-            @Override
-            public int readDefaultValue(final String key) {
-                return Settings.readDefaultKeyLongpressTimeout(res);
-            }
-
-            @Override
-            public String getValueText(final int value) {
-                return res.getString(R.string.abbreviation_unit_milliseconds, value);
-            }
-
-            @Override
-            public void feedbackValue(final int value) {}
-        });
-    }
-
     private void setupKeypressSoundVolumeSettings(final SharedPreferences sp, final Resources res) {
         final SeekBarDialogPreference pref = (SeekBarDialogPreference)findPreference(
                 Settings.PREF_KEYPRESS_SOUND_VOLUME);
@@ -515,4 +457,33 @@
             userDictionaryPreference.setFragment(UserDictionaryList.class.getName());
         }
     }
+
+    @Override
+    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
+        if (FeedbackUtils.isFeedbackFormSupported()) {
+            menu.add(NO_MENU_GROUP, MENU_FEEDBACK /* itemId */, MENU_FEEDBACK /* order */,
+                    R.string.send_feedback);
+        }
+        final int aboutResId = FeedbackUtils.getAboutKeyboardTitleResId();
+        if (aboutResId != 0) {
+            menu.add(NO_MENU_GROUP, MENU_ABOUT /* itemId */, MENU_ABOUT /* order */, aboutResId);
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(final MenuItem item) {
+        final int itemId = item.getItemId();
+        if (itemId == MENU_FEEDBACK) {
+            FeedbackUtils.showFeedbackForm(getActivity());
+            return true;
+        }
+        if (itemId == MENU_ABOUT) {
+            final Intent aboutIntent = FeedbackUtils.getAboutKeyboardIntent(getActivity());
+            if (aboutIntent != null) {
+                startActivity(aboutIntent);
+                return true;
+            }
+        }
+        return super.onOptionsItemSelected(item);
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index f331c78..8de5fed 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -16,27 +16,23 @@
 
 package com.android.inputmethod.latin.settings;
 
+import android.content.Context;
 import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.util.Log;
 import android.view.inputmethod.EditorInfo;
 
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.keyboard.internal.KeySpecParser;
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.compat.AppWorkaroundsUtils;
 import com.android.inputmethod.latin.InputAttributes;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.RichInputMethodManager;
 import com.android.inputmethod.latin.SubtypeSwitcher;
-import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.InputTypeUtils;
-import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.AsyncResultHolder;
+import com.android.inputmethod.latin.utils.ResourceUtils;
+import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Locale;
 
@@ -50,27 +46,23 @@
     // Float.NEGATIVE_INFINITE and Float.MAX_VALUE. Currently used for auto-correction settings.
     private static final String FLOAT_MAX_VALUE_MARKER_STRING = "floatMaxValue";
     private static final String FLOAT_NEGATIVE_INFINITY_MARKER_STRING = "floatNegativeInfinity";
+    private static final int TIMEOUT_TO_GET_TARGET_PACKAGE = 5; // seconds
 
     // From resources:
+    public final SpacingAndPunctuations mSpacingAndPunctuations;
     public final int mDelayUpdateOldSuggestions;
-    public final int[] mSymbolsPrecededBySpace;
-    public final int[] mSymbolsFollowedBySpace;
-    public final int[] mWordConnectors;
-    public final SuggestedWords mSuggestPuncList;
-    public final String mWordSeparators;
-    public final int mSentenceSeparator;
-    public final CharSequence mHintToSaveText;
-    public final boolean mCurrentLanguageHasSpaces;
+    public final long mDoubleSpacePeriodTimeout;
 
     // From preferences, in the same order as xml/prefs.xml:
     public final boolean mAutoCap;
     public final boolean mVibrateOn;
     public final boolean mSoundOn;
     public final boolean mKeyPreviewPopupOn;
-    private final boolean mShowsVoiceInputKey;
+    public final boolean mShowsVoiceInputKey;
     public final boolean mIncludesOtherImesInLanguageSwitchList;
     public final boolean mShowsLanguageSwitchKey;
     public final boolean mUseContactsDict;
+    public final boolean mUsePersonalizedDicts;
     public final boolean mUseDoubleSpacePeriod;
     public final boolean mBlockPotentiallyOffensive;
     // Use bigrams to predict the next word when there is no input for it yet
@@ -82,6 +74,7 @@
     public final boolean mPhraseGestureEnabled;
     public final int mKeyLongpressTimeout;
     public final Locale mLocale;
+    public final boolean mEnableMetricsLogging;
 
     // From the input box
     public final InputAttributes mInputAttributes;
@@ -92,10 +85,11 @@
     public final int mKeyPreviewPopupDismissDelay;
     private final boolean mAutoCorrectEnabled;
     public final float mAutoCorrectionThreshold;
-    public final boolean mCorrectionEnabled;
+    // TODO: Rename this to mAutoCorrectionEnabledPerUserSettings.
+    public final boolean mAutoCorrectionEnabled;
     public final int mSuggestionVisibility;
-    public final boolean mBoostPersonalizationDictionaryForDebug;
-    public final boolean mUseOnlyPersonalizationDictionaryForDebug;
+    public final int mDisplayOrientation;
+    private final AsyncResultHolder<AppWorkaroundsUtils> mAppWorkarounds;
 
     // Setting values for additional features
     public final int[] mAdditionalFeaturesSettingValues =
@@ -103,32 +97,22 @@
 
     // Debug settings
     public final boolean mIsInternal;
+    public final int mKeyPreviewShowUpDuration;
+    public final int mKeyPreviewDismissDuration;
+    public final float mKeyPreviewShowUpStartScale;
+    public final float mKeyPreviewDismissEndScale;
 
-    public SettingsValues(final SharedPreferences prefs, final Locale locale, final Resources res,
+    public SettingsValues(final Context context, final SharedPreferences prefs, final Resources res,
             final InputAttributes inputAttributes) {
-        mLocale = locale;
+        mLocale = res.getConfiguration().locale;
         // Get the resources
         mDelayUpdateOldSuggestions = res.getInteger(R.integer.config_delay_update_old_suggestions);
-        mSymbolsPrecededBySpace =
-                StringUtils.toCodePointArray(res.getString(R.string.symbols_preceded_by_space));
-        Arrays.sort(mSymbolsPrecededBySpace);
-        mSymbolsFollowedBySpace =
-                StringUtils.toCodePointArray(res.getString(R.string.symbols_followed_by_space));
-        Arrays.sort(mSymbolsFollowedBySpace);
-        mWordConnectors =
-                StringUtils.toCodePointArray(res.getString(R.string.symbols_word_connectors));
-        Arrays.sort(mWordConnectors);
-        final String[] suggestPuncsSpec = KeySpecParser.splitKeySpecs(res.getString(
-                R.string.suggested_punctuations));
-        mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
-        mWordSeparators = res.getString(R.string.symbols_word_separators);
-        mSentenceSeparator = res.getInteger(R.integer.sentence_separator);
-        mHintToSaveText = res.getText(R.string.hint_add_to_dictionary);
-        mCurrentLanguageHasSpaces = res.getBoolean(R.bool.current_language_has_spaces);
+        mSpacingAndPunctuations = new SpacingAndPunctuations(res);
 
         // Store the input attributes
         if (null == inputAttributes) {
-            mInputAttributes = new InputAttributes(null, false /* isFullscreenMode */);
+            mInputAttributes = new InputAttributes(
+                    null, false /* isFullscreenMode */, context.getPackageName());
         } else {
             mInputAttributes = inputAttributes;
         }
@@ -139,20 +123,26 @@
         mSoundOn = Settings.readKeypressSoundEnabled(prefs, res);
         mKeyPreviewPopupOn = Settings.readKeyPreviewPopupEnabled(prefs, res);
         mSlidingKeyInputPreviewEnabled = prefs.getBoolean(
-                Settings.PREF_SLIDING_KEY_INPUT_PREVIEW, true);
-        mShowsVoiceInputKey = needsToShowVoiceInputKey(prefs, res);
+                DebugSettings.PREF_SLIDING_KEY_INPUT_PREVIEW, true);
+        mShowsVoiceInputKey = needsToShowVoiceInputKey(prefs, res)
+                && mInputAttributes.mShouldShowVoiceInputKey
+                && SubtypeSwitcher.getInstance().isShortcutImeEnabled();
         final String autoCorrectionThresholdRawValue = prefs.getString(
                 Settings.PREF_AUTO_CORRECTION_THRESHOLD,
                 res.getString(R.string.auto_correction_threshold_mode_index_modest));
-        mIncludesOtherImesInLanguageSwitchList = prefs.getBoolean(
-                Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, false);
-        mShowsLanguageSwitchKey = Settings.readShowsLanguageSwitchKey(prefs);
+        mIncludesOtherImesInLanguageSwitchList = Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS
+                ? prefs.getBoolean(Settings.PREF_INCLUDE_OTHER_IMES_IN_LANGUAGE_SWITCH_LIST, false)
+                : true /* forcibly */;
+        mShowsLanguageSwitchKey = Settings.ENABLE_SHOW_LANGUAGE_SWITCH_KEY_SETTINGS
+                ? Settings.readShowsLanguageSwitchKey(prefs) : true /* forcibly */;
         mUseContactsDict = prefs.getBoolean(Settings.PREF_KEY_USE_CONTACTS_DICT, true);
+        mUsePersonalizedDicts = prefs.getBoolean(Settings.PREF_KEY_USE_PERSONALIZED_DICTS, true);
         mUseDoubleSpacePeriod = prefs.getBoolean(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true);
         mBlockPotentiallyOffensive = Settings.readBlockPotentiallyOffensive(prefs, res);
         mAutoCorrectEnabled = Settings.readAutoCorrectEnabled(autoCorrectionThresholdRawValue, res);
         mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res);
-
+        mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout);
+        mEnableMetricsLogging = prefs.getBoolean(Settings.PREF_ENABLE_METRICS_LOGGING, true);
         // Compute other readable settings
         mKeyLongpressTimeout = Settings.readKeyLongpressTimeout(prefs, res);
         mKeypressVibrationDuration = Settings.readKeypressVibrationDuration(prefs, res);
@@ -165,7 +155,7 @@
         mGestureFloatingPreviewTextEnabled = prefs.getBoolean(
                 Settings.PREF_GESTURE_FLOATING_PREVIEW_TEXT, true);
         mPhraseGestureEnabled = Settings.readPhraseGestureEnabled(prefs, res);
-        mCorrectionEnabled = mAutoCorrectEnabled && !mInputAttributes.mInputTypeNoAutoCorrect;
+        mAutoCorrectionEnabled = mAutoCorrectEnabled && !mInputAttributes.mInputTypeNoAutoCorrect;
         final String showSuggestionsSetting = prefs.getString(
                 Settings.PREF_SHOW_SUGGESTIONS_SETTING,
                 res.getString(R.string.prefs_suggestion_visibility_default_value));
@@ -173,111 +163,74 @@
         AdditionalFeaturesSettingUtils.readAdditionalFeaturesPreferencesIntoArray(
                 prefs, mAdditionalFeaturesSettingValues);
         mIsInternal = Settings.isInternal(prefs);
-        mBoostPersonalizationDictionaryForDebug =
-                Settings.readBoostPersonalizationDictionaryForDebug(prefs);
-        mUseOnlyPersonalizationDictionaryForDebug =
-                Settings.readUseOnlyPersonalizationDictionaryForDebug(prefs);
-    }
-
-    // Only for tests
-    private SettingsValues(final Locale locale) {
-        // TODO: locale is saved, but not used yet. May have to change this if tests require.
-        mLocale = locale;
-        mDelayUpdateOldSuggestions = 0;
-        mSymbolsPrecededBySpace = new int[] { '(', '[', '{', '&' };
-        Arrays.sort(mSymbolsPrecededBySpace);
-        mSymbolsFollowedBySpace = new int[] { '.', ',', ';', ':', '!', '?', ')', ']', '}', '&' };
-        Arrays.sort(mSymbolsFollowedBySpace);
-        mWordConnectors = new int[] { '\'', '-' };
-        Arrays.sort(mWordConnectors);
-        mSentenceSeparator = Constants.CODE_PERIOD;
-        final String[] suggestPuncsSpec = new String[] { "!", "?", ",", ":", ";" };
-        mSuggestPuncList = createSuggestPuncList(suggestPuncsSpec);
-        mWordSeparators = "&\t \n()[]{}*&<>+=|.,;:!?/_\"";
-        mHintToSaveText = "Touch again to save";
-        mCurrentLanguageHasSpaces = true;
-        mInputAttributes = new InputAttributes(null, false /* isFullscreenMode */);
-        mAutoCap = true;
-        mVibrateOn = true;
-        mSoundOn = true;
-        mKeyPreviewPopupOn = true;
-        mSlidingKeyInputPreviewEnabled = true;
-        mShowsVoiceInputKey = true;
-        mIncludesOtherImesInLanguageSwitchList = false;
-        mShowsLanguageSwitchKey = true;
-        mUseContactsDict = true;
-        mUseDoubleSpacePeriod = true;
-        mBlockPotentiallyOffensive = true;
-        mAutoCorrectEnabled = true;
-        mBigramPredictionEnabled = true;
-        mKeyLongpressTimeout = 300;
-        mKeypressVibrationDuration = 5;
-        mKeypressSoundVolume = 1;
-        mKeyPreviewPopupDismissDelay = 70;
-        mAutoCorrectionThreshold = 1;
-        mGestureInputEnabled = true;
-        mGestureTrailEnabled = true;
-        mGestureFloatingPreviewTextEnabled = true;
-        mPhraseGestureEnabled = true;
-        mCorrectionEnabled = mAutoCorrectEnabled && !mInputAttributes.mInputTypeNoAutoCorrect;
-        mSuggestionVisibility = 0;
-        mIsInternal = false;
-        mBoostPersonalizationDictionaryForDebug = false;
-        mUseOnlyPersonalizationDictionaryForDebug = false;
-    }
-
-    @UsedForTesting
-    public static SettingsValues makeDummySettingsValuesForTest(final Locale locale) {
-        return new SettingsValues(locale);
+        mKeyPreviewShowUpDuration = Settings.readKeyPreviewAnimationDuration(
+                prefs, DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_DURATION,
+                res.getInteger(R.integer.config_key_preview_show_up_duration));
+        mKeyPreviewDismissDuration = Settings.readKeyPreviewAnimationDuration(
+                prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_DURATION,
+                res.getInteger(R.integer.config_key_preview_dismiss_duration));
+        mKeyPreviewShowUpStartScale = Settings.readKeyPreviewAnimationScale(
+                prefs, DebugSettings.PREF_KEY_PREVIEW_SHOW_UP_START_SCALE,
+                ResourceUtils.getFloatFromFraction(
+                        res, R.fraction.config_key_preview_show_up_start_scale));
+        mKeyPreviewDismissEndScale = Settings.readKeyPreviewAnimationScale(
+                prefs, DebugSettings.PREF_KEY_PREVIEW_DISMISS_END_SCALE,
+                ResourceUtils.getFloatFromFraction(
+                        res, R.fraction.config_key_preview_dismiss_end_scale));
+        mDisplayOrientation = res.getConfiguration().orientation;
+        mAppWorkarounds = new AsyncResultHolder<>();
+        final PackageInfo packageInfo = TargetPackageInfoGetterTask.getCachedPackageInfo(
+                mInputAttributes.mTargetApplicationPackageName);
+        if (null != packageInfo) {
+            mAppWorkarounds.set(new AppWorkaroundsUtils(packageInfo));
+        } else {
+            new TargetPackageInfoGetterTask(context, mAppWorkarounds)
+                    .execute(mInputAttributes.mTargetApplicationPackageName);
+        }
     }
 
     public boolean isApplicationSpecifiedCompletionsOn() {
         return mInputAttributes.mApplicationSpecifiedCompletionOn;
     }
 
-    public boolean isSuggestionsRequested(final int displayOrientation) {
-        return mInputAttributes.mIsSettingsSuggestionStripOn
-                && (mCorrectionEnabled
-                        || isSuggestionStripVisibleInOrientation(displayOrientation));
+    // TODO: Rename this to needsToLookupSuggestions().
+    public boolean isSuggestionsRequested() {
+        return mInputAttributes.mShouldShowSuggestions
+                && (mAutoCorrectionEnabled
+                        || isCurrentOrientationAllowingSuggestionsPerUserSettings());
     }
 
-    public boolean isSuggestionStripVisibleInOrientation(final int orientation) {
+    public boolean isCurrentOrientationAllowingSuggestionsPerUserSettings() {
         return (mSuggestionVisibility == SUGGESTION_VISIBILITY_SHOW_VALUE)
                 || (mSuggestionVisibility == SUGGESTION_VISIBILITY_SHOW_ONLY_PORTRAIT_VALUE
-                        && orientation == Configuration.ORIENTATION_PORTRAIT);
+                        && mDisplayOrientation == Configuration.ORIENTATION_PORTRAIT);
     }
 
     public boolean isWordSeparator(final int code) {
-        return mWordSeparators.contains(String.valueOf((char)code));
+        return mSpacingAndPunctuations.isWordSeparator(code);
     }
 
     public boolean isWordConnector(final int code) {
-        return Arrays.binarySearch(mWordConnectors, code) >= 0;
+        return mSpacingAndPunctuations.isWordConnector(code);
     }
 
     public boolean isWordCodePoint(final int code) {
-        return Character.isLetter(code) || isWordConnector(code);
+        return Character.isLetter(code) || isWordConnector(code)
+                || Character.COMBINING_SPACING_MARK == Character.getType(code);
     }
 
     public boolean isUsuallyPrecededBySpace(final int code) {
-        return Arrays.binarySearch(mSymbolsPrecededBySpace, code) >= 0;
+        return mSpacingAndPunctuations.isUsuallyPrecededBySpace(code);
     }
 
     public boolean isUsuallyFollowedBySpace(final int code) {
-        return Arrays.binarySearch(mSymbolsFollowedBySpace, code) >= 0;
+        return mSpacingAndPunctuations.isUsuallyFollowedBySpace(code);
     }
 
     public boolean shouldInsertSpacesAutomatically() {
         return mInputAttributes.mShouldInsertSpacesAutomatically;
     }
 
-    public boolean isVoiceKeyEnabled(final EditorInfo editorInfo) {
-        final boolean shortcutImeEnabled = SubtypeSwitcher.getInstance().isShortcutImeEnabled();
-        final int inputType = (editorInfo != null) ? editorInfo.inputType : 0;
-        return shortcutImeEnabled && mShowsVoiceInputKey
-                && !InputTypeUtils.isPasswordInputType(inputType);
-    }
-
     public boolean isLanguageSwitchKeyEnabled() {
         if (!mShowsLanguageSwitchKey) {
             return false;
@@ -294,25 +247,20 @@
         return mInputAttributes.isSameInputType(editorInfo);
     }
 
-    // Helper functions to create member values.
-    private static SuggestedWords createSuggestPuncList(final String[] puncs) {
-        final ArrayList<SuggestedWordInfo> puncList = CollectionUtils.newArrayList();
-        if (puncs != null) {
-            for (final String puncSpec : puncs) {
-                // TODO: Stop using KeySpceParser.getLabel().
-                puncList.add(new SuggestedWordInfo(KeySpecParser.getLabel(puncSpec),
-                        SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_HARDCODED,
-                        Dictionary.DICTIONARY_HARDCODED,
-                        SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                        SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
-            }
-        }
-        return new SuggestedWords(puncList,
-                false /* typedWordValid */,
-                false /* hasAutoCorrectionCandidate */,
-                true /* isPunctuationSuggestions */,
-                false /* isObsoleteSuggestions */,
-                false /* isPrediction */);
+    public boolean hasSameOrientation(final Configuration configuration) {
+        return mDisplayOrientation == configuration.orientation;
+    }
+
+    public boolean isBeforeJellyBean() {
+        final AppWorkaroundsUtils appWorkaroundUtils
+                = mAppWorkarounds.get(null, TIMEOUT_TO_GET_TARGET_PACKAGE);
+        return null == appWorkaroundUtils ? false : appWorkaroundUtils.isBeforeJellyBean();
+    }
+
+    public boolean isBrokenByRecorrection() {
+        final AppWorkaroundsUtils appWorkaroundUtils
+                = mAppWorkarounds.get(null, TIMEOUT_TO_GET_TARGET_PACKAGE);
+        return null == appWorkaroundUtils ? false : appWorkaroundUtils.isBrokenByRecorrection();
     }
 
     private static final int SUGGESTION_VISIBILITY_SHOW_VALUE =
@@ -350,7 +298,7 @@
         // When autoCorrectionThreshold is greater than 1.0, it's like auto correction is off.
         final float autoCorrectionThreshold;
         try {
-            final int arrayIndex = Integer.valueOf(currentAutoCorrectionSetting);
+            final int arrayIndex = Integer.parseInt(currentAutoCorrectionSetting);
             if (arrayIndex >= 0 && arrayIndex < autoCorrectionThresholdValues.length) {
                 final String val = autoCorrectionThresholdValues[arrayIndex];
                 if (FLOAT_MAX_VALUE_MARKER_STRING.equals(val)) {
@@ -374,17 +322,101 @@
         return autoCorrectionThreshold;
     }
 
-    private static boolean needsToShowVoiceInputKey(SharedPreferences prefs, Resources res) {
-        final String voiceModeMain = res.getString(R.string.voice_mode_main);
-        final String voiceMode = prefs.getString(Settings.PREF_VOICE_MODE_OBSOLETE, voiceModeMain);
-        final boolean showsVoiceInputKey = voiceMode == null || voiceMode.equals(voiceModeMain);
-        if (!showsVoiceInputKey) {
-            // Migrate settings from PREF_VOICE_MODE_OBSOLETE to PREF_VOICE_INPUT_KEY
-            // Set voiceModeMain as a value of obsolete voice mode settings.
-            prefs.edit().putString(Settings.PREF_VOICE_MODE_OBSOLETE, voiceModeMain).apply();
-            // Disable voice input key.
-            prefs.edit().putBoolean(Settings.PREF_VOICE_INPUT_KEY, false).apply();
+    private static boolean needsToShowVoiceInputKey(final SharedPreferences prefs,
+            final Resources res) {
+        // Migrate preference from {@link Settings#PREF_VOICE_MODE_OBSOLETE} to
+        // {@link Settings#PREF_VOICE_INPUT_KEY}.
+        if (prefs.contains(Settings.PREF_VOICE_MODE_OBSOLETE)) {
+            final String voiceModeMain = res.getString(R.string.voice_mode_main);
+            final String voiceMode = prefs.getString(
+                    Settings.PREF_VOICE_MODE_OBSOLETE, voiceModeMain);
+            final boolean shouldShowVoiceInputKey = voiceModeMain.equals(voiceMode);
+            prefs.edit()
+                    .putBoolean(Settings.PREF_VOICE_INPUT_KEY, shouldShowVoiceInputKey)
+                    // Remove the obsolete preference if exists.
+                    .remove(Settings.PREF_VOICE_MODE_OBSOLETE)
+                    .apply();
         }
         return prefs.getBoolean(Settings.PREF_VOICE_INPUT_KEY, true);
     }
+
+    public String dump() {
+        final StringBuilder sb = new StringBuilder("Current settings :");
+        sb.append("\n   mSpacingAndPunctuations = ");
+        sb.append("" + mSpacingAndPunctuations.dump());
+        sb.append("\n   mDelayUpdateOldSuggestions = ");
+        sb.append("" + mDelayUpdateOldSuggestions);
+        sb.append("\n   mAutoCap = ");
+        sb.append("" + mAutoCap);
+        sb.append("\n   mVibrateOn = ");
+        sb.append("" + mVibrateOn);
+        sb.append("\n   mSoundOn = ");
+        sb.append("" + mSoundOn);
+        sb.append("\n   mKeyPreviewPopupOn = ");
+        sb.append("" + mKeyPreviewPopupOn);
+        sb.append("\n   mShowsVoiceInputKey = ");
+        sb.append("" + mShowsVoiceInputKey);
+        sb.append("\n   mIncludesOtherImesInLanguageSwitchList = ");
+        sb.append("" + mIncludesOtherImesInLanguageSwitchList);
+        sb.append("\n   mShowsLanguageSwitchKey = ");
+        sb.append("" + mShowsLanguageSwitchKey);
+        sb.append("\n   mUseContactsDict = ");
+        sb.append("" + mUseContactsDict);
+        sb.append("\n   mUsePersonalizedDicts = ");
+        sb.append("" + mUsePersonalizedDicts);
+        sb.append("\n   mUseDoubleSpacePeriod = ");
+        sb.append("" + mUseDoubleSpacePeriod);
+        sb.append("\n   mBlockPotentiallyOffensive = ");
+        sb.append("" + mBlockPotentiallyOffensive);
+        sb.append("\n   mBigramPredictionEnabled = ");
+        sb.append("" + mBigramPredictionEnabled);
+        sb.append("\n   mGestureInputEnabled = ");
+        sb.append("" + mGestureInputEnabled);
+        sb.append("\n   mGestureTrailEnabled = ");
+        sb.append("" + mGestureTrailEnabled);
+        sb.append("\n   mGestureFloatingPreviewTextEnabled = ");
+        sb.append("" + mGestureFloatingPreviewTextEnabled);
+        sb.append("\n   mSlidingKeyInputPreviewEnabled = ");
+        sb.append("" + mSlidingKeyInputPreviewEnabled);
+        sb.append("\n   mPhraseGestureEnabled = ");
+        sb.append("" + mPhraseGestureEnabled);
+        sb.append("\n   mKeyLongpressTimeout = ");
+        sb.append("" + mKeyLongpressTimeout);
+        sb.append("\n   mLocale = ");
+        sb.append("" + mLocale);
+        sb.append("\n   mInputAttributes = ");
+        sb.append("" + mInputAttributes);
+        sb.append("\n   mKeypressVibrationDuration = ");
+        sb.append("" + mKeypressVibrationDuration);
+        sb.append("\n   mKeypressSoundVolume = ");
+        sb.append("" + mKeypressSoundVolume);
+        sb.append("\n   mKeyPreviewPopupDismissDelay = ");
+        sb.append("" + mKeyPreviewPopupDismissDelay);
+        sb.append("\n   mAutoCorrectEnabled = ");
+        sb.append("" + mAutoCorrectEnabled);
+        sb.append("\n   mAutoCorrectionThreshold = ");
+        sb.append("" + mAutoCorrectionThreshold);
+        sb.append("\n   mAutoCorrectionEnabled = ");
+        sb.append("" + mAutoCorrectionEnabled);
+        sb.append("\n   mSuggestionVisibility = ");
+        sb.append("" + mSuggestionVisibility);
+        sb.append("\n   mDisplayOrientation = ");
+        sb.append("" + mDisplayOrientation);
+        sb.append("\n   mAppWorkarounds = ");
+        final AppWorkaroundsUtils awu = mAppWorkarounds.get(null, 0);
+        sb.append("" + (null == awu ? "null" : awu.toString()));
+        sb.append("\n   mAdditionalFeaturesSettingValues = ");
+        sb.append("" + Arrays.toString(mAdditionalFeaturesSettingValues));
+        sb.append("\n   mIsInternal = ");
+        sb.append("" + mIsInternal);
+        sb.append("\n   mKeyPreviewShowUpDuration = ");
+        sb.append("" + mKeyPreviewShowUpDuration);
+        sb.append("\n   mKeyPreviewDismissDuration = ");
+        sb.append("" + mKeyPreviewDismissDuration);
+        sb.append("\n   mKeyPreviewShowUpStartScale = ");
+        sb.append("" + mKeyPreviewShowUpStartScale);
+        sb.append("\n   mKeyPreviewDismissEndScale = ");
+        sb.append("" + mKeyPreviewDismissEndScale);
+        return sb.toString();
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValuesForSuggestion.java b/java/src/com/android/inputmethod/latin/settings/SettingsValuesForSuggestion.java
new file mode 100644
index 0000000..d80af4b
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValuesForSuggestion.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.settings;
+
+public class SettingsValuesForSuggestion {
+    public final boolean mBlockPotentiallyOffensive;
+    public final boolean mSpaceAwareGestureEnabled;
+    public final int[] mAdditionalFeaturesSettingValues;
+
+    public SettingsValuesForSuggestion(final boolean blockPotentiallyOffensive,
+            final boolean spaceAwareGestureEnabled, final int[] additionalFeaturesSettingValues) {
+        mBlockPotentiallyOffensive = blockPotentiallyOffensive;
+        mSpaceAwareGestureEnabled = spaceAwareGestureEnabled;
+        mAdditionalFeaturesSettingValues = additionalFeaturesSettingValues;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
new file mode 100644
index 0000000..b8d2a22
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.settings;
+
+import android.content.res.Resources;
+
+import com.android.inputmethod.keyboard.internal.MoreKeySpec;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.PunctuationSuggestions;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.Arrays;
+import java.util.Locale;
+
+public final class SpacingAndPunctuations {
+    private final int[] mSortedSymbolsPrecededBySpace;
+    private final int[] mSortedSymbolsFollowedBySpace;
+    private final int[] mSortedSymbolsClusteringTogether;
+    private final int[] mSortedWordConnectors;
+    public final int[] mSortedWordSeparators;
+    public final PunctuationSuggestions mSuggestPuncList;
+    private final int mSentenceSeparator;
+    public final String mSentenceSeparatorAndSpace;
+    public final boolean mCurrentLanguageHasSpaces;
+    public final boolean mUsesAmericanTypography;
+    public final boolean mUsesGermanRules;
+
+    public SpacingAndPunctuations(final Resources res) {
+        // To be able to binary search the code point. See {@link #isUsuallyPrecededBySpace(int)}.
+        mSortedSymbolsPrecededBySpace = StringUtils.toSortedCodePointArray(
+                res.getString(R.string.symbols_preceded_by_space));
+        // To be able to binary search the code point. See {@link #isUsuallyFollowedBySpace(int)}.
+        mSortedSymbolsFollowedBySpace = StringUtils.toSortedCodePointArray(
+                res.getString(R.string.symbols_followed_by_space));
+        mSortedSymbolsClusteringTogether = StringUtils.toSortedCodePointArray(
+                res.getString(R.string.symbols_clustering_together));
+        // To be able to binary search the code point. See {@link #isWordConnector(int)}.
+        mSortedWordConnectors = StringUtils.toSortedCodePointArray(
+                res.getString(R.string.symbols_word_connectors));
+        mSortedWordSeparators = StringUtils.toSortedCodePointArray(
+                res.getString(R.string.symbols_word_separators));
+        mSentenceSeparator = res.getInteger(R.integer.sentence_separator);
+        mSentenceSeparatorAndSpace = new String(new int[] {
+                mSentenceSeparator, Constants.CODE_SPACE }, 0, 2);
+        mCurrentLanguageHasSpaces = res.getBoolean(R.bool.current_language_has_spaces);
+        final Locale locale = res.getConfiguration().locale;
+        // Heuristic: we use American Typography rules because it's the most common rules for all
+        // English variants. German rules (not "German typography") also have small gotchas.
+        mUsesAmericanTypography = Locale.ENGLISH.getLanguage().equals(locale.getLanguage());
+        mUsesGermanRules = Locale.GERMAN.getLanguage().equals(locale.getLanguage());
+        final String[] suggestPuncsSpec = MoreKeySpec.splitKeySpecs(
+                res.getString(R.string.suggested_punctuations));
+        mSuggestPuncList = PunctuationSuggestions.newPunctuationSuggestions(suggestPuncsSpec);
+    }
+
+    public boolean isWordSeparator(final int code) {
+        return Arrays.binarySearch(mSortedWordSeparators, code) >= 0;
+    }
+
+    public boolean isWordConnector(final int code) {
+        return Arrays.binarySearch(mSortedWordConnectors, code) >= 0;
+    }
+
+    public boolean isWordCodePoint(final int code) {
+        return Character.isLetter(code) || isWordConnector(code);
+    }
+
+    public boolean isUsuallyPrecededBySpace(final int code) {
+        return Arrays.binarySearch(mSortedSymbolsPrecededBySpace, code) >= 0;
+    }
+
+    public boolean isUsuallyFollowedBySpace(final int code) {
+        return Arrays.binarySearch(mSortedSymbolsFollowedBySpace, code) >= 0;
+    }
+
+    public boolean isClusteringSymbol(final int code) {
+        return Arrays.binarySearch(mSortedSymbolsClusteringTogether, code) >= 0;
+    }
+
+    public boolean isSentenceSeparator(final int code) {
+        return code == mSentenceSeparator;
+    }
+
+    public String dump() {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("mSortedSymbolsPrecededBySpace = ");
+        sb.append("" + Arrays.toString(mSortedSymbolsPrecededBySpace));
+        sb.append("\n   mSortedSymbolsFollowedBySpace = ");
+        sb.append("" + Arrays.toString(mSortedSymbolsFollowedBySpace));
+        sb.append("\n   mSortedWordConnectors = ");
+        sb.append("" + Arrays.toString(mSortedWordConnectors));
+        sb.append("\n   mSortedWordSeparators = ");
+        sb.append("" + Arrays.toString(mSortedWordSeparators));
+        sb.append("\n   mSuggestPuncList = ");
+        sb.append("" + mSuggestPuncList);
+        sb.append("\n   mSentenceSeparator = ");
+        sb.append("" + mSentenceSeparator);
+        sb.append("\n   mSentenceSeparatorAndSpace = ");
+        sb.append("" + mSentenceSeparatorAndSpace);
+        sb.append("\n   mCurrentLanguageHasSpaces = ");
+        sb.append("" + mCurrentLanguageHasSpaces);
+        sb.append("\n   mUsesAmericanTypography = ");
+        sb.append("" + mUsesAmericanTypography);
+        sb.append("\n   mUsesGermanRules = ");
+        sb.append("" + mUsesGermanRules);
+        return sb.toString();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/settings/TwoStatePreferenceHelper.java b/java/src/com/android/inputmethod/latin/settings/TwoStatePreferenceHelper.java
new file mode 100644
index 0000000..07a871c
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/settings/TwoStatePreferenceHelper.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.settings;
+
+import android.os.Build;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceGroup;
+import android.preference.SwitchPreference;
+
+import java.util.ArrayList;
+
+public class TwoStatePreferenceHelper {
+    private static final String EMPTY_TEXT = "";
+
+    private TwoStatePreferenceHelper() {
+        // This utility class is not publicly instantiable.
+    }
+
+    public static void replaceCheckBoxPreferencesBySwitchPreferences(final PreferenceGroup group) {
+        // The keyboard settings keeps using a CheckBoxPreference on KitKat or previous.
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
+            return;
+        }
+        // The keyboard settings starts using a SwitchPreference without switch on/off text on
+        // API versions newer than KitKat.
+        replaceAllCheckBoxPreferencesBySwitchPreferences(group);
+    }
+
+    private static void replaceAllCheckBoxPreferencesBySwitchPreferences(
+            final PreferenceGroup group) {
+        final ArrayList<Preference> preferences = new ArrayList<>();
+        final int count = group.getPreferenceCount();
+        for (int index = 0; index < count; index++) {
+            preferences.add(group.getPreference(index));
+        }
+        group.removeAll();
+        for (int index = 0; index < count; index++) {
+            final Preference preference = preferences.get(index);
+            if (preference instanceof CheckBoxPreference) {
+                addSwitchPreferenceBasedOnCheckBoxPreference((CheckBoxPreference)preference, group);
+            } else {
+                group.addPreference(preference);
+                if (preference instanceof PreferenceGroup) {
+                    replaceAllCheckBoxPreferencesBySwitchPreferences((PreferenceGroup)preference);
+                }
+            }
+        }
+    }
+
+    static void addSwitchPreferenceBasedOnCheckBoxPreference(final CheckBoxPreference checkBox,
+            final PreferenceGroup group) {
+        final SwitchPreference switchPref = new SwitchPreference(checkBox.getContext());
+        switchPref.setTitle(checkBox.getTitle());
+        switchPref.setKey(checkBox.getKey());
+        switchPref.setOrder(checkBox.getOrder());
+        switchPref.setPersistent(checkBox.isPersistent());
+        switchPref.setEnabled(checkBox.isEnabled());
+        switchPref.setChecked(checkBox.isChecked());
+        switchPref.setSummary(checkBox.getSummary());
+        switchPref.setSummaryOn(checkBox.getSummaryOn());
+        switchPref.setSummaryOff(checkBox.getSummaryOff());
+        switchPref.setSwitchTextOn(EMPTY_TEXT);
+        switchPref.setSwitchTextOff(EMPTY_TEXT);
+        group.addPreference(switchPref);
+        switchPref.setDependency(checkBox.getDependency());
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java b/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
index 050d8d2..9585736 100644
--- a/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
+++ b/java/src/com/android/inputmethod/latin/setup/LauncherIconVisibilityManager.java
@@ -16,85 +16,51 @@
 
 package com.android.inputmethod.latin.setup;
 
-import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
-import android.os.Process;
 import android.preference.PreferenceManager;
 import android.util.Log;
-import android.view.inputmethod.InputMethodManager;
 
 import com.android.inputmethod.compat.IntentCompatUtils;
 import com.android.inputmethod.latin.settings.Settings;
 
 /**
- * This class detects the {@link Intent#ACTION_MY_PACKAGE_REPLACED} broadcast intent when this IME
- * package has been replaced by a newer version of the same package. This class also detects
+ * This class handles the {@link Intent#ACTION_MY_PACKAGE_REPLACED} broadcast intent when this IME
+ * package has been replaced by a newer version of the same package. This class also handles
  * {@link Intent#ACTION_BOOT_COMPLETED} and {@link Intent#ACTION_USER_INITIALIZE} broadcast intent.
  *
  * If this IME has already been installed in the system image and a new version of this IME has
- * been installed, {@link Intent#ACTION_MY_PACKAGE_REPLACED} is received by this receiver and it
- * will hide the setup wizard's icon.
+ * been installed, {@link Intent#ACTION_MY_PACKAGE_REPLACED} is received to this class to hide the
+ * setup wizard's icon.
  *
  * If this IME has already been installed in the data partition and a new version of this IME has
- * been installed, {@link Intent#ACTION_MY_PACKAGE_REPLACED} is received by this receiver but it
+ * been installed, {@link Intent#ACTION_MY_PACKAGE_REPLACED} is forwarded to this class but it
  * will not hide the setup wizard's icon, and the icon will appear on the launcher.
  *
  * If this IME hasn't been installed yet and has been newly installed, no
  * {@link Intent#ACTION_MY_PACKAGE_REPLACED} will be sent and the setup wizard's icon will appear
  * on the launcher.
  *
- * When the device has been booted, {@link Intent#ACTION_BOOT_COMPLETED} is received by this
- * receiver and it checks whether the setup wizard's icon should be appeared or not on the launcher
+ * When the device has been booted, {@link Intent#ACTION_BOOT_COMPLETED} is forwarded to this class
+ * to check whether the setup wizard's icon should be appeared or not on the launcher
  * depending on which partition this IME is installed.
  *
- * When a multiuser account has been created, {@link Intent#ACTION_USER_INITIALIZE} is received
- * by this receiver and it checks the whether the setup wizard's icon should be appeared or not on
- * the launcher depending on which partition this IME is installed.
+ * When a multiuser account has been created, {@link Intent#ACTION_USER_INITIALIZE} is forwarded to
+ * this class to check whether the setup wizard's icon should be appeared or not on the launcher
+ * depending on which partition this IME is installed.
  */
-public final class LauncherIconVisibilityManager extends BroadcastReceiver {
+public final class LauncherIconVisibilityManager {
     private static final String TAG = LauncherIconVisibilityManager.class.getSimpleName();
 
-    @Override
-    public void onReceive(final Context context, final Intent intent) {
-        if (shouldHandleThisIntent(intent, context)) {
+    public static void onReceiveGlobalIntent(final String action, final Context context) {
+        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(action) ||
+                Intent.ACTION_BOOT_COMPLETED.equals(action) ||
+                IntentCompatUtils.is_ACTION_USER_INITIALIZE(action)) {
             updateSetupWizardIconVisibility(context);
         }
-
-        // The process that hosts this broadcast receiver is invoked and remains alive even after
-        // 1) the package has been re-installed, 2) the device has just booted,
-        // 3) a new user has been created.
-        // There is no good reason to keep the process alive if this IME isn't a current IME.
-        final InputMethodManager imm =
-                (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
-        // Called to check whether this IME has been triggered by the current user or not
-        final boolean isInputMethodManagerValidForUserOfThisProcess =
-                !imm.getInputMethodList().isEmpty();
-        final boolean isCurrentImeOfCurrentUser = isInputMethodManagerValidForUserOfThisProcess
-                && SetupActivity.isThisImeCurrent(context, imm);
-        if (!isCurrentImeOfCurrentUser) {
-            final int myPid = Process.myPid();
-            Log.i(TAG, "Killing my process: pid=" + myPid);
-            Process.killProcess(myPid);
-        }
-    }
-
-    private static boolean shouldHandleThisIntent(final Intent intent, final Context context) {
-        final String action = intent.getAction();
-        if (Intent.ACTION_MY_PACKAGE_REPLACED.equals(action)) {
-            Log.i(TAG, "Package has been replaced: " + context.getPackageName());
-            return true;
-        } else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
-            Log.i(TAG, "Boot has been completed");
-            return true;
-        } else if (IntentCompatUtils.is_ACTION_USER_INITIALIZE(action)) {
-            Log.i(TAG, "User initialize");
-            return true;
-        }
-        return false;
     }
 
     public static void updateSetupWizardIconVisibility(final Context context) {
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupActivity.java b/java/src/com/android/inputmethod/latin/setup/SetupActivity.java
index a68f98f..b770ea5 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupActivity.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupActivity.java
@@ -37,65 +37,4 @@
             finish();
         }
     }
-
-    /*
-     * We may not be able to get our own {@link InputMethodInfo} just after this IME is installed
-     * because {@link InputMethodManagerService} may not be aware of this IME yet.
-     * Note: {@link RichInputMethodManager} has similar methods. Here in setup wizard, we can't
-     * use it for the reason above.
-     */
-
-    /**
-     * Check if the IME specified by the context is enabled.
-     * CAVEAT: This may cause a round trip IPC.
-     *
-     * @param context package context of the IME to be checked.
-     * @param imm the {@link InputMethodManager}.
-     * @return true if this IME is enabled.
-     */
-    /* package */ static boolean isThisImeEnabled(final Context context,
-            final InputMethodManager imm) {
-        final String packageName = context.getPackageName();
-        for (final InputMethodInfo imi : imm.getEnabledInputMethodList()) {
-            if (packageName.equals(imi.getPackageName())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Check if the IME specified by the context is the current IME.
-     * CAVEAT: This may cause a round trip IPC.
-     *
-     * @param context package context of the IME to be checked.
-     * @param imm the {@link InputMethodManager}.
-     * @return true if this IME is the current IME.
-     */
-    /* package */ static boolean isThisImeCurrent(final Context context,
-            final InputMethodManager imm) {
-        final InputMethodInfo imi = getInputMethodInfoOf(context.getPackageName(), imm);
-        final String currentImeId = Settings.Secure.getString(
-                context.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
-        return imi != null && imi.getId().equals(currentImeId);
-    }
-
-    /**
-     * Get {@link InputMethodInfo} of the IME specified by the package name.
-     * CAVEAT: This may cause a round trip IPC.
-     *
-     * @param packageName package name of the IME.
-     * @param imm the {@link InputMethodManager}.
-     * @return the {@link InputMethodInfo} of the IME specified by the <code>packageName</code>,
-     * or null if not found.
-     */
-    /* package */ static InputMethodInfo getInputMethodInfoOf(final String packageName,
-            final InputMethodManager imm) {
-        for (final InputMethodInfo imi : imm.getInputMethodList()) {
-            if (packageName.equals(imi.getPackageName())) {
-                return imi;
-            }
-        }
-        return null;
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java b/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
index 974dfdd..73d25f6 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
@@ -21,13 +21,13 @@
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Path;
+import android.support.v4.view.ViewCompat;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import com.android.inputmethod.compat.ViewCompatUtils;
 import com.android.inputmethod.latin.R;
 
 public final class SetupStartIndicatorView extends LinearLayout {
@@ -96,13 +96,13 @@
         @Override
         protected void onDraw(final Canvas canvas) {
             super.onDraw(canvas);
-            final int layoutDirection = ViewCompatUtils.getLayoutDirection(this);
+            final int layoutDirection = ViewCompat.getLayoutDirection(this);
             final int width = getWidth();
             final int height = getHeight();
             final float halfHeight = height / 2.0f;
             final Path path = mIndicatorPath;
             path.rewind();
-            if (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) {
+            if (layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL) {
                 // Left arrow
                 path.moveTo(width, 0.0f);
                 path.lineTo(0.0f, halfHeight);
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java b/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java
index c909507..6734e61 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupStepIndicatorView.java
@@ -20,10 +20,10 @@
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Path;
+import android.support.v4.view.ViewCompat;
 import android.util.AttributeSet;
 import android.view.View;
 
-import com.android.inputmethod.compat.ViewCompatUtils;
 import com.android.inputmethod.latin.R;
 
 public final class SetupStepIndicatorView extends View {
@@ -38,12 +38,12 @@
     }
 
     public void setIndicatorPosition(final int stepPos, final int totalStepNum) {
-        final int layoutDirection = ViewCompatUtils.getLayoutDirection(this);
+        final int layoutDirection = ViewCompat.getLayoutDirection(this);
         // The indicator position is the center of the partition that is equally divided into
         // the total step number.
         final float partionWidth = 1.0f / totalStepNum;
         final float pos = stepPos * partionWidth + partionWidth / 2.0f;
-        mXRatio = (layoutDirection == ViewCompatUtils.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos;
+        mXRatio = (layoutDirection == ViewCompat.LAYOUT_DIRECTION_RTL) ? 1.0f - pos : pos;
         invalidate();
     }
 
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java b/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java
index c4a813c..e455e53 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java
@@ -37,8 +37,8 @@
 import com.android.inputmethod.compat.ViewCompatUtils;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.settings.SettingsActivity;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper;
+import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
+import com.android.inputmethod.latin.utils.UncachedInputMethodManagerUtils;
 
 import java.util.ArrayList;
 
@@ -74,27 +74,28 @@
     private SettingsPoolingHandler mHandler;
 
     private static final class SettingsPoolingHandler
-            extends StaticInnerHandlerWrapper<SetupWizardActivity> {
+            extends LeakGuardHandlerWrapper<SetupWizardActivity> {
         private static final int MSG_POLLING_IME_SETTINGS = 0;
         private static final long IME_SETTINGS_POLLING_INTERVAL = 200;
 
         private final InputMethodManager mImmInHandler;
 
-        public SettingsPoolingHandler(final SetupWizardActivity outerInstance,
+        public SettingsPoolingHandler(final SetupWizardActivity ownerInstance,
                 final InputMethodManager imm) {
-            super(outerInstance);
+            super(ownerInstance);
             mImmInHandler = imm;
         }
 
         @Override
         public void handleMessage(final Message msg) {
-            final SetupWizardActivity setupWizardActivity = getOuterInstance();
+            final SetupWizardActivity setupWizardActivity = getOwnerInstance();
             if (setupWizardActivity == null) {
                 return;
             }
             switch (msg.what) {
             case MSG_POLLING_IME_SETTINGS:
-                if (SetupActivity.isThisImeEnabled(setupWizardActivity, mImmInHandler)) {
+                if (UncachedInputMethodManagerUtils.isThisImeEnabled(setupWizardActivity,
+                        mImmInHandler)) {
                     setupWizardActivity.invokeSetupWizardOfThisIme();
                     return;
                 }
@@ -278,7 +279,8 @@
     }
 
     void invokeSubtypeEnablerOfThisIme() {
-        final InputMethodInfo imi = SetupActivity.getInputMethodInfoOf(getPackageName(), mImm);
+        final InputMethodInfo imi =
+                UncachedInputMethodManagerUtils.getInputMethodInfoOf(getPackageName(), mImm);
         if (imi == null) {
             return;
         }
@@ -302,10 +304,10 @@
 
     private int determineSetupStepNumber() {
         mHandler.cancelPollingImeSettings();
-        if (!SetupActivity.isThisImeEnabled(this, mImm)) {
+        if (!UncachedInputMethodManagerUtils.isThisImeEnabled(this, mImm)) {
             return STEP_1;
         }
-        if (!SetupActivity.isThisImeCurrent(this, mImm)) {
+        if (!UncachedInputMethodManagerUtils.isThisImeCurrent(this, mImm)) {
             return STEP_2;
         }
         return STEP_3;
@@ -482,7 +484,7 @@
 
     static final class SetupStepGroup {
         private final SetupStepIndicatorView mIndicatorView;
-        private final ArrayList<SetupStep> mGroup = CollectionUtils.newArrayList();
+        private final ArrayList<SetupStep> mGroup = new ArrayList<>();
 
         public SetupStepGroup(final SetupStepIndicatorView indicatorView) {
             mIndicatorView = indicatorView;
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index 503b18b..90398de 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -16,40 +16,55 @@
 
 package com.android.inputmethod.latin.spellcheck;
 
+import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.preference.PreferenceManager;
 import android.service.textservice.SpellCheckerService;
 import android.text.InputType;
 import android.util.Log;
+import android.util.LruCache;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodSubtype;
 import android.view.textservice.SuggestionsInfo;
 
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardId;
 import com.android.inputmethod.keyboard.KeyboardLayoutSet;
-import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.ContactsBinaryDictionary;
 import com.android.inputmethod.latin.Dictionary;
 import com.android.inputmethod.latin.DictionaryCollection;
+import com.android.inputmethod.latin.DictionaryFacilitator;
 import com.android.inputmethod.latin.DictionaryFactory;
+import com.android.inputmethod.latin.PrevWordsInfo;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.SynchronouslyLoadedContactsBinaryDictionary;
-import com.android.inputmethod.latin.SynchronouslyLoadedUserBinaryDictionary;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.settings.SettingsValuesForSuggestion;
 import com.android.inputmethod.latin.UserBinaryDictionary;
 import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
 import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.LocaleUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.SuggestionResults;
+import com.android.inputmethod.latin.WordComposer;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 import java.util.TreeMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Service for spell checking, using LatinIME's dictionaries and mechanisms.
@@ -58,61 +73,77 @@
         implements SharedPreferences.OnSharedPreferenceChangeListener {
     private static final String TAG = AndroidSpellCheckerService.class.getSimpleName();
     private static final boolean DBG = false;
-    private static final int POOL_SIZE = 2;
 
     public static final String PREF_USE_CONTACTS_KEY = "pref_spellcheck_use_contacts";
 
     private static final int SPELLCHECKER_DUMMY_KEYBOARD_WIDTH = 480;
     private static final int SPELLCHECKER_DUMMY_KEYBOARD_HEIGHT = 368;
 
-    private final static String[] EMPTY_STRING_ARRAY = new String[0];
-    private Map<String, DictionaryPool> mDictionaryPools = CollectionUtils.newSynchronizedTreeMap();
-    private Map<String, UserBinaryDictionary> mUserDictionaries =
-            CollectionUtils.newSynchronizedTreeMap();
-    private ContactsBinaryDictionary mContactsDictionary;
+    private static final String DICTIONARY_NAME_PREFIX = "spellcheck_";
+    private static final int WAIT_FOR_LOADING_MAIN_DICT_IN_MILLISECONDS = 1000;
+    private static final int MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT = 5;
+
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+    private final HashSet<Locale> mCachedLocales = new HashSet<>();
+
+    private final int MAX_NUM_OF_THREADS_READ_DICTIONARY = 2;
+    private final Semaphore mSemaphore = new Semaphore(MAX_NUM_OF_THREADS_READ_DICTIONARY,
+            true /* fair */);
+    // TODO: Make each spell checker session has its own session id.
+    private final ConcurrentLinkedQueue<Integer> mSessionIdPool = new ConcurrentLinkedQueue<>();
+
+    private static class DictionaryFacilitatorLruCache extends
+            LruCache<Locale, DictionaryFacilitator> {
+        private final HashSet<Locale> mCachedLocales;
+        public DictionaryFacilitatorLruCache(final HashSet<Locale> cachedLocales, int maxSize) {
+            super(maxSize);
+            mCachedLocales = cachedLocales;
+        }
+
+        @Override
+        protected void entryRemoved(boolean evicted, Locale key,
+                DictionaryFacilitator oldValue, DictionaryFacilitator newValue) {
+            if (oldValue != null && oldValue != newValue) {
+                oldValue.closeDictionaries();
+            }
+            if (key != null && newValue == null) {
+                // Remove locale from the cache when the dictionary facilitator for the locale is
+                // evicted and new facilitator is not set for the locale.
+                mCachedLocales.remove(key);
+                if (size() >= maxSize()) {
+                    Log.w(TAG, "DictionaryFacilitator for " + key.toString()
+                            + " has been evicted due to cache size limit."
+                            + " size: " + size() + ", maxSize: " + maxSize());
+                }
+            }
+        }
+    }
+
+    private static final int MAX_DICTIONARY_FACILITATOR_COUNT = 3;
+    private final LruCache<Locale, DictionaryFacilitator> mDictionaryFacilitatorCache =
+            new DictionaryFacilitatorLruCache(mCachedLocales, MAX_DICTIONARY_FACILITATOR_COUNT);
+    private final ConcurrentHashMap<Locale, Keyboard> mKeyboardCache = new ConcurrentHashMap<>();
 
     // The threshold for a suggestion to be considered "recommended".
     private float mRecommendedThreshold;
     // Whether to use the contacts dictionary
     private boolean mUseContactsDictionary;
-    private final Object mUseContactsLock = new Object();
+    // TODO: make a spell checker option to block offensive words or not
+    private final SettingsValuesForSuggestion mSettingsValuesForSuggestion =
+            new SettingsValuesForSuggestion(true /* blockPotentiallyOffensive */,
+                    true /* spaceAwareGestureEnabled */,
+                    null /* additionalFeaturesSettingValues */);
+    private final Object mDictionaryLock = new Object();
 
-    private final HashSet<WeakReference<DictionaryCollection>> mDictionaryCollectionsList =
-            CollectionUtils.newHashSet();
-
-    public static final int SCRIPT_LATIN = 0;
-    public static final int SCRIPT_CYRILLIC = 1;
-    public static final int SCRIPT_GREEK = 2;
     public static final String SINGLE_QUOTE = "\u0027";
     public static final String APOSTROPHE = "\u2019";
-    private static final TreeMap<String, Integer> mLanguageToScript;
-    static {
-        // List of the supported languages and their associated script. We won't check
-        // words written in another script than the selected script, because we know we
-        // don't have those in our dictionary so we will underline everything and we
-        // will never have any suggestions, so it makes no sense checking them, and this
-        // is done in {@link #shouldFilterOut}. Also, the script is used to choose which
-        // proximity to pass to the dictionary descent algorithm.
-        // IMPORTANT: this only contains languages - do not write countries in there.
-        // Only the language is searched from the map.
-        mLanguageToScript = CollectionUtils.newTreeMap();
-        mLanguageToScript.put("cs", SCRIPT_LATIN);
-        mLanguageToScript.put("da", SCRIPT_LATIN);
-        mLanguageToScript.put("de", SCRIPT_LATIN);
-        mLanguageToScript.put("el", SCRIPT_GREEK);
-        mLanguageToScript.put("en", SCRIPT_LATIN);
-        mLanguageToScript.put("es", SCRIPT_LATIN);
-        mLanguageToScript.put("fi", SCRIPT_LATIN);
-        mLanguageToScript.put("fr", SCRIPT_LATIN);
-        mLanguageToScript.put("hr", SCRIPT_LATIN);
-        mLanguageToScript.put("it", SCRIPT_LATIN);
-        mLanguageToScript.put("lt", SCRIPT_LATIN);
-        mLanguageToScript.put("lv", SCRIPT_LATIN);
-        mLanguageToScript.put("nb", SCRIPT_LATIN);
-        mLanguageToScript.put("nl", SCRIPT_LATIN);
-        mLanguageToScript.put("pt", SCRIPT_LATIN);
-        mLanguageToScript.put("sl", SCRIPT_LATIN);
-        mLanguageToScript.put("ru", SCRIPT_CYRILLIC);
+
+    public AndroidSpellCheckerService() {
+        super();
+        for (int i = 0; i < MAX_NUM_OF_THREADS_READ_DICTIONARY; i++) {
+            mSessionIdPool.add(i);
+        }
     }
 
     @Override public void onCreate() {
@@ -124,22 +155,17 @@
         onSharedPreferenceChanged(prefs, PREF_USE_CONTACTS_KEY);
     }
 
-    public static int getScriptFromLocale(final Locale locale) {
-        final Integer script = mLanguageToScript.get(locale.getLanguage());
-        if (null == script) {
-            throw new RuntimeException("We have been called with an unsupported language: \""
-                    + locale.getLanguage() + "\". Framework bug?");
-        }
-        return script;
+    public float getRecommendedThreshold() {
+        return mRecommendedThreshold;
     }
 
     private static String getKeyboardLayoutNameForScript(final int script) {
         switch (script) {
-        case AndroidSpellCheckerService.SCRIPT_LATIN:
+        case ScriptUtils.SCRIPT_LATIN:
             return "qwerty";
-        case AndroidSpellCheckerService.SCRIPT_CYRILLIC:
+        case ScriptUtils.SCRIPT_CYRILLIC:
             return "east_slavic";
-        case AndroidSpellCheckerService.SCRIPT_GREEK:
+        case ScriptUtils.SCRIPT_GREEK:
             return "greek";
         default:
             throw new RuntimeException("Wrong script supplied: " + script);
@@ -149,52 +175,21 @@
     @Override
     public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) {
         if (!PREF_USE_CONTACTS_KEY.equals(key)) return;
-        synchronized(mUseContactsLock) {
-            mUseContactsDictionary = prefs.getBoolean(PREF_USE_CONTACTS_KEY, true);
-            if (mUseContactsDictionary) {
-                startUsingContactsDictionaryLocked();
-            } else {
-                stopUsingContactsDictionaryLocked();
+            final boolean useContactsDictionary = prefs.getBoolean(PREF_USE_CONTACTS_KEY, true);
+            if (useContactsDictionary != mUseContactsDictionary) {
+                mSemaphore.acquireUninterruptibly(MAX_NUM_OF_THREADS_READ_DICTIONARY);
+                try {
+                    mUseContactsDictionary = useContactsDictionary;
+                    for (final Locale locale : mCachedLocales) {
+                        final DictionaryFacilitator dictionaryFacilitator =
+                                mDictionaryFacilitatorCache.get(locale);
+                        resetDictionariesForLocale(this /* context  */,
+                                dictionaryFacilitator, locale, mUseContactsDictionary);
+                    }
+                } finally {
+                    mSemaphore.release(MAX_NUM_OF_THREADS_READ_DICTIONARY);
+                }
             }
-        }
-    }
-
-    private void startUsingContactsDictionaryLocked() {
-        if (null == mContactsDictionary) {
-            // TODO: use the right locale for each session
-            mContactsDictionary =
-                    new SynchronouslyLoadedContactsBinaryDictionary(this, Locale.getDefault());
-        }
-        final Iterator<WeakReference<DictionaryCollection>> iterator =
-                mDictionaryCollectionsList.iterator();
-        while (iterator.hasNext()) {
-            final WeakReference<DictionaryCollection> dictRef = iterator.next();
-            final DictionaryCollection dict = dictRef.get();
-            if (null == dict) {
-                iterator.remove();
-            } else {
-                dict.addDictionary(mContactsDictionary);
-            }
-        }
-    }
-
-    private void stopUsingContactsDictionaryLocked() {
-        if (null == mContactsDictionary) return;
-        final Dictionary contactsDict = mContactsDictionary;
-        // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY is no longer needed
-        mContactsDictionary = null;
-        final Iterator<WeakReference<DictionaryCollection>> iterator =
-                mDictionaryCollectionsList.iterator();
-        while (iterator.hasNext()) {
-            final WeakReference<DictionaryCollection> dictRef = iterator.next();
-            final DictionaryCollection dict = dictRef.get();
-            if (null == dict) {
-                iterator.remove();
-            } else {
-                dict.removeDictionary(contactsDict);
-            }
-        }
-        contactsDict.close();
     }
 
     @Override
@@ -223,230 +218,114 @@
                 EMPTY_STRING_ARRAY);
     }
 
-    public SuggestionsGatherer newSuggestionsGatherer(final String text, int maxLength) {
-        return new SuggestionsGatherer(text, mRecommendedThreshold, maxLength);
+    public boolean isValidWord(final Locale locale, final String word) {
+        mSemaphore.acquireUninterruptibly();
+        try {
+            DictionaryFacilitator dictionaryFacilitatorForLocale =
+                    getDictionaryFacilitatorForLocaleLocked(locale);
+            return dictionaryFacilitatorForLocale.isValidWord(word, false /* igroreCase */);
+        } finally {
+            mSemaphore.release();
+        }
     }
 
-    // TODO: remove this class and replace it by storage local to the session.
-    public static final class SuggestionsGatherer {
-        public static final class Result {
-            public final String[] mSuggestions;
-            public final boolean mHasRecommendedSuggestions;
-            public Result(final String[] gatheredSuggestions,
-                    final boolean hasRecommendedSuggestions) {
-                mSuggestions = gatheredSuggestions;
-                mHasRecommendedSuggestions = hasRecommendedSuggestions;
+    public SuggestionResults getSuggestionResults(final Locale locale, final WordComposer composer,
+            final PrevWordsInfo prevWordsInfo, final ProximityInfo proximityInfo) {
+        Integer sessionId = null;
+        mSemaphore.acquireUninterruptibly();
+        try {
+            sessionId = mSessionIdPool.poll();
+            DictionaryFacilitator dictionaryFacilitatorForLocale =
+                    getDictionaryFacilitatorForLocaleLocked(locale);
+            return dictionaryFacilitatorForLocale.getSuggestionResults(composer, prevWordsInfo,
+                    proximityInfo, mSettingsValuesForSuggestion, sessionId);
+        } finally {
+            if (sessionId != null) {
+                mSessionIdPool.add(sessionId);
             }
+            mSemaphore.release();
         }
+    }
 
-        private final ArrayList<String> mSuggestions;
-        private final int[] mScores;
-        private final String mOriginalText;
-        private final float mRecommendedThreshold;
-        private final int mMaxLength;
-        private int mLength = 0;
-
-        // The two following attributes are only ever filled if the requested max length
-        // is 0 (or less, which is treated the same).
-        private String mBestSuggestion = null;
-        private int mBestScore = Integer.MIN_VALUE; // As small as possible
-
-        SuggestionsGatherer(final String originalText, final float recommendedThreshold,
-                final int maxLength) {
-            mOriginalText = originalText;
-            mRecommendedThreshold = recommendedThreshold;
-            mMaxLength = maxLength;
-            mSuggestions = CollectionUtils.newArrayList(maxLength + 1);
-            mScores = new int[mMaxLength];
+    public boolean hasMainDictionaryForLocale(final Locale locale) {
+        mSemaphore.acquireUninterruptibly();
+        try {
+            final DictionaryFacilitator dictionaryFacilitator =
+                    getDictionaryFacilitatorForLocaleLocked(locale);
+            return dictionaryFacilitator.hasInitializedMainDictionary();
+        } finally {
+            mSemaphore.release();
         }
+    }
 
-        synchronized public boolean addWord(char[] word, int[] spaceIndices, int wordOffset,
-                int wordLength, int score) {
-            final int positionIndex = Arrays.binarySearch(mScores, 0, mLength, score);
-            // binarySearch returns the index if the element exists, and -<insertion index> - 1
-            // if it doesn't. See documentation for binarySearch.
-            final int insertIndex = positionIndex >= 0 ? positionIndex : -positionIndex - 1;
-
-            if (insertIndex == 0 && mLength >= mMaxLength) {
-                // In the future, we may want to keep track of the best suggestion score even if
-                // we are asked for 0 suggestions. In this case, we can use the following
-                // (tested) code to keep it:
-                // If the maxLength is 0 (should never be less, but if it is, it's treated as 0)
-                // then we need to keep track of the best suggestion in mBestScore and
-                // mBestSuggestion. This is so that we know whether the best suggestion makes
-                // the score cutoff, since we need to know that to return a meaningful
-                // looksLikeTypo.
-                // if (0 >= mMaxLength) {
-                //     if (score > mBestScore) {
-                //         mBestScore = score;
-                //         mBestSuggestion = new String(word, wordOffset, wordLength);
-                //     }
-                // }
-                return true;
-            }
-            if (insertIndex >= mMaxLength) {
-                // We found a suggestion, but its score is too weak to be kept considering
-                // the suggestion limit.
-                return true;
-            }
-
-            final String wordString = new String(word, wordOffset, wordLength);
-            if (mLength < mMaxLength) {
-                final int copyLen = mLength - insertIndex;
-                ++mLength;
-                System.arraycopy(mScores, insertIndex, mScores, insertIndex + 1, copyLen);
-                mSuggestions.add(insertIndex, wordString);
-            } else {
-                System.arraycopy(mScores, 1, mScores, 0, insertIndex);
-                mSuggestions.add(insertIndex, wordString);
-                mSuggestions.remove(0);
-            }
-            mScores[insertIndex] = score;
-
-            return true;
+    private DictionaryFacilitator getDictionaryFacilitatorForLocaleLocked(final Locale locale) {
+        DictionaryFacilitator dictionaryFacilitatorForLocale =
+                mDictionaryFacilitatorCache.get(locale);
+        if (dictionaryFacilitatorForLocale == null) {
+            dictionaryFacilitatorForLocale = new DictionaryFacilitator();
+            mDictionaryFacilitatorCache.put(locale, dictionaryFacilitatorForLocale);
+            mCachedLocales.add(locale);
+            resetDictionariesForLocale(this /* context */, dictionaryFacilitatorForLocale,
+                    locale, mUseContactsDictionary);
         }
+        return dictionaryFacilitatorForLocale;
+    }
 
-        public Result getResults(final int capitalizeType, final Locale locale) {
-            final String[] gatheredSuggestions;
-            final boolean hasRecommendedSuggestions;
-            if (0 == mLength) {
-                // TODO: the comment below describes what is intended, but in the practice
-                // mBestSuggestion is only ever set to null so it doesn't work. Fix this.
-                // Either we found no suggestions, or we found some BUT the max length was 0.
-                // If we found some mBestSuggestion will not be null. If it is null, then
-                // we found none, regardless of the max length.
-                if (null == mBestSuggestion) {
-                    gatheredSuggestions = null;
-                    hasRecommendedSuggestions = false;
+    private static void resetDictionariesForLocale(final Context context,
+            final DictionaryFacilitator dictionaryFacilitator, final Locale locale,
+            final boolean useContactsDictionary) {
+        dictionaryFacilitator.resetDictionariesWithDictNamePrefix(context, locale,
+                useContactsDictionary, false /* usePersonalizedDicts */,
+                false /* forceReloadMainDictionary */, null /* listener */,
+                DICTIONARY_NAME_PREFIX);
+        for (int i = 0; i < MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT; i++) {
+            try {
+                dictionaryFacilitator.waitForLoadingMainDictionary(
+                        WAIT_FOR_LOADING_MAIN_DICT_IN_MILLISECONDS, TimeUnit.MILLISECONDS);
+                return;
+            } catch (final InterruptedException e) {
+                Log.i(TAG, "Interrupted during waiting for loading main dictionary.", e);
+                if (i < MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT - 1) {
+                    Log.i(TAG, "Retry", e);
                 } else {
-                    gatheredSuggestions = EMPTY_STRING_ARRAY;
-                    final float normalizedScore = BinaryDictionary.calcNormalizedScore(
-                            mOriginalText, mBestSuggestion, mBestScore);
-                    hasRecommendedSuggestions = (normalizedScore > mRecommendedThreshold);
-                }
-            } else {
-                if (DBG) {
-                    if (mLength != mSuggestions.size()) {
-                        Log.e(TAG, "Suggestion size is not the same as stored mLength");
-                    }
-                    for (int i = mLength - 1; i >= 0; --i) {
-                        Log.i(TAG, "" + mScores[i] + " " + mSuggestions.get(i));
-                    }
-                }
-                Collections.reverse(mSuggestions);
-                StringUtils.removeDupes(mSuggestions);
-                if (StringUtils.CAPITALIZE_ALL == capitalizeType) {
-                    for (int i = 0; i < mSuggestions.size(); ++i) {
-                        // get(i) returns a CharSequence which is actually a String so .toString()
-                        // should return the same object.
-                        mSuggestions.set(i, mSuggestions.get(i).toString().toUpperCase(locale));
-                    }
-                } else if (StringUtils.CAPITALIZE_FIRST == capitalizeType) {
-                    for (int i = 0; i < mSuggestions.size(); ++i) {
-                        // Likewise
-                        mSuggestions.set(i, StringUtils.capitalizeFirstCodePoint(
-                                mSuggestions.get(i).toString(), locale));
-                    }
-                }
-                // This returns a String[], while toArray() returns an Object[] which cannot be cast
-                // into a String[].
-                gatheredSuggestions = mSuggestions.toArray(EMPTY_STRING_ARRAY);
-
-                final int bestScore = mScores[mLength - 1];
-                final String bestSuggestion = mSuggestions.get(0);
-                final float normalizedScore =
-                        BinaryDictionary.calcNormalizedScore(
-                                mOriginalText, bestSuggestion.toString(), bestScore);
-                hasRecommendedSuggestions = (normalizedScore > mRecommendedThreshold);
-                if (DBG) {
-                    Log.i(TAG, "Best suggestion : " + bestSuggestion + ", score " + bestScore);
-                    Log.i(TAG, "Normalized score = " + normalizedScore
-                            + " (threshold " + mRecommendedThreshold
-                            + ") => hasRecommendedSuggestions = " + hasRecommendedSuggestions);
+                    Log.w(TAG, "Give up retrying. Retried "
+                            + MAX_RETRY_COUNT_FOR_WAITING_FOR_LOADING_DICT + " times.", e);
                 }
             }
-            return new Result(gatheredSuggestions, hasRecommendedSuggestions);
         }
     }
 
     @Override
     public boolean onUnbind(final Intent intent) {
-        closeAllDictionaries();
+        mSemaphore.acquireUninterruptibly(MAX_NUM_OF_THREADS_READ_DICTIONARY);
+        try {
+            mDictionaryFacilitatorCache.evictAll();
+            mCachedLocales.clear();
+        } finally {
+            mSemaphore.release(MAX_NUM_OF_THREADS_READ_DICTIONARY);
+        }
+        mKeyboardCache.clear();
         return false;
     }
 
-    private void closeAllDictionaries() {
-        final Map<String, DictionaryPool> oldPools = mDictionaryPools;
-        mDictionaryPools = CollectionUtils.newSynchronizedTreeMap();
-        final Map<String, UserBinaryDictionary> oldUserDictionaries = mUserDictionaries;
-        mUserDictionaries = CollectionUtils.newSynchronizedTreeMap();
-        new Thread("spellchecker_close_dicts") {
-            @Override
-            public void run() {
-                for (DictionaryPool pool : oldPools.values()) {
-                    pool.close();
-                }
-                for (Dictionary dict : oldUserDictionaries.values()) {
-                    dict.close();
-                }
-                synchronized (mUseContactsLock) {
-                    if (null != mContactsDictionary) {
-                        // The synchronously loaded contacts dictionary should have been in one
-                        // or several pools, but it is shielded against multiple closing and it's
-                        // safe to call it several times.
-                        final ContactsBinaryDictionary dictToClose = mContactsDictionary;
-                        // TODO: revert to the concrete type when USE_BINARY_CONTACTS_DICTIONARY
-                        // is no longer needed
-                        mContactsDictionary = null;
-                        dictToClose.close();
-                    }
-                }
+    public Keyboard getKeyboardForLocale(final Locale locale) {
+        Keyboard keyboard = mKeyboardCache.get(locale);
+        if (keyboard == null) {
+            keyboard = createKeyboardForLocale(locale);
+            if (keyboard != null) {
+                mKeyboardCache.put(locale, keyboard);
             }
-        }.start();
-    }
-
-    public DictionaryPool getDictionaryPool(final String locale) {
-        DictionaryPool pool = mDictionaryPools.get(locale);
-        if (null == pool) {
-            final Locale localeObject = LocaleUtils.constructLocaleFromString(locale);
-            pool = new DictionaryPool(POOL_SIZE, this, localeObject);
-            mDictionaryPools.put(locale, pool);
         }
-        return pool;
+        return keyboard;
     }
 
-    public DictAndKeyboard createDictAndKeyboard(final Locale locale) {
-        final int script = getScriptFromLocale(locale);
+    private Keyboard createKeyboardForLocale(final Locale locale) {
+        final int script = ScriptUtils.getScriptFromSpellCheckerLocale(locale);
         final String keyboardLayoutName = getKeyboardLayoutNameForScript(script);
-        final InputMethodSubtype subtype = AdditionalSubtypeUtils.createAdditionalSubtype(
-                locale.toString(), keyboardLayoutName, null);
+        final InputMethodSubtype subtype = AdditionalSubtypeUtils.createDummyAdditionalSubtype(
+                locale.toString(), keyboardLayoutName);
         final KeyboardLayoutSet keyboardLayoutSet = createKeyboardSetForSpellChecker(subtype);
-
-        final DictionaryCollection dictionaryCollection =
-                DictionaryFactory.createMainDictionaryFromManager(this, locale,
-                        true /* useFullEditDistance */);
-        final String localeStr = locale.toString();
-        UserBinaryDictionary userDictionary = mUserDictionaries.get(localeStr);
-        if (null == userDictionary) {
-            userDictionary = new SynchronouslyLoadedUserBinaryDictionary(this, localeStr, true);
-            mUserDictionaries.put(localeStr, userDictionary);
-        }
-        dictionaryCollection.addDictionary(userDictionary);
-        synchronized (mUseContactsLock) {
-            if (mUseContactsDictionary) {
-                if (null == mContactsDictionary) {
-                    // TODO: use the right locale. We can't do it right now because the
-                    // spell checker is reusing the contacts dictionary across sessions
-                    // without regard for their locale, so we need to fix that first.
-                    mContactsDictionary = new SynchronouslyLoadedContactsBinaryDictionary(this,
-                            Locale.getDefault());
-                }
-            }
-            dictionaryCollection.addDictionary(mContactsDictionary);
-            mDictionaryCollectionsList.add(
-                    new WeakReference<DictionaryCollection>(dictionaryCollection));
-        }
-        return new DictAndKeyboard(dictionaryCollection, keyboardLayoutSet);
+        return keyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET);
     }
 
     private KeyboardLayoutSet createKeyboardSetForSpellChecker(final InputMethodSubtype subtype) {
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
index ddda52d..14ab2db 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerSession.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.latin.spellcheck;
 
+import android.content.res.Resources;
 import android.os.Binder;
 import android.text.TextUtils;
 import android.util.Log;
@@ -23,31 +24,35 @@
 import android.view.textservice.SuggestionsInfo;
 import android.view.textservice.TextInfo;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.compat.TextInfoCompatUtils;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.utils.StringUtils;
 
 import java.util.ArrayList;
+import java.util.Locale;
 
 public final class AndroidSpellCheckerSession extends AndroidWordLevelSpellCheckerSession {
     private static final String TAG = AndroidSpellCheckerSession.class.getSimpleName();
     private static final boolean DBG = false;
-    private final static String[] EMPTY_STRING_ARRAY = new String[0];
+    private final Resources mResources;
+    private SentenceLevelAdapter mSentenceLevelAdapter;
 
     public AndroidSpellCheckerSession(AndroidSpellCheckerService service) {
         super(service);
+        mResources = service.getResources();
     }
 
     private SentenceSuggestionsInfo fixWronglyInvalidatedWordWithSingleQuote(TextInfo ti,
             SentenceSuggestionsInfo ssi) {
-        final String typedText = ti.getText();
-        if (!typedText.contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
+        final CharSequence typedText = TextInfoCompatUtils.getCharSequenceOrString(ti);
+        if (!typedText.toString().contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
             return null;
         }
         final int N = ssi.getSuggestionsCount();
-        final ArrayList<Integer> additionalOffsets = CollectionUtils.newArrayList();
-        final ArrayList<Integer> additionalLengths = CollectionUtils.newArrayList();
-        final ArrayList<SuggestionsInfo> additionalSuggestionsInfos =
-                CollectionUtils.newArrayList();
-        String currentWord = null;
+        final ArrayList<Integer> additionalOffsets = new ArrayList<>();
+        final ArrayList<Integer> additionalLengths = new ArrayList<>();
+        final ArrayList<SuggestionsInfo> additionalSuggestionsInfos = new ArrayList<>();
+        CharSequence currentWord = null;
         for (int i = 0; i < N; ++i) {
             final SuggestionsInfo si = ssi.getSuggestionsInfoAt(i);
             final int flags = si.getSuggestionsAttributes();
@@ -56,31 +61,33 @@
             }
             final int offset = ssi.getOffsetAt(i);
             final int length = ssi.getLengthAt(i);
-            final String subText = typedText.substring(offset, offset + length);
-            final String prevWord = currentWord;
+            final CharSequence subText = typedText.subSequence(offset, offset + length);
+            final PrevWordsInfo prevWordsInfo =
+                    new PrevWordsInfo(new PrevWordsInfo.WordInfo(currentWord));
             currentWord = subText;
-            if (!subText.contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
+            if (!subText.toString().contains(AndroidSpellCheckerService.SINGLE_QUOTE)) {
                 continue;
             }
-            final String[] splitTexts =
-                    subText.split(AndroidSpellCheckerService.SINGLE_QUOTE, -1);
+            final CharSequence[] splitTexts = StringUtils.split(subText,
+                    AndroidSpellCheckerService.SINGLE_QUOTE,
+                    true /* preserveTrailingEmptySegments */ );
             if (splitTexts == null || splitTexts.length <= 1) {
                 continue;
             }
             final int splitNum = splitTexts.length;
             for (int j = 0; j < splitNum; ++j) {
-                final String splitText = splitTexts[j];
+                final CharSequence splitText = splitTexts[j];
                 if (TextUtils.isEmpty(splitText)) {
                     continue;
                 }
-                if (mSuggestionsCache.getSuggestionsFromCache(splitText, prevWord) == null) {
+                if (mSuggestionsCache.getSuggestionsFromCache(splitText.toString(), prevWordsInfo)
+                        == null) {
                     continue;
                 }
                 final int newLength = splitText.length();
                 // Neither RESULT_ATTR_IN_THE_DICTIONARY nor RESULT_ATTR_LOOKS_LIKE_TYPO
                 final int newFlags = 0;
-                final SuggestionsInfo newSi =
-                        new SuggestionsInfo(newFlags, EMPTY_STRING_ARRAY);
+                final SuggestionsInfo newSi = new SuggestionsInfo(newFlags, EMPTY_STRING_ARRAY);
                 newSi.setCookieAndSequence(si.getCookie(), si.getSequence());
                 if (DBG) {
                     Log.d(TAG, "Override and remove old span over: " + splitText + ", "
@@ -116,8 +123,7 @@
     @Override
     public SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(TextInfo[] textInfos,
             int suggestionsLimit) {
-        final SentenceSuggestionsInfo[] retval =
-                super.onGetSentenceSuggestionsMultiple(textInfos, suggestionsLimit);
+        final SentenceSuggestionsInfo[] retval = splitAndSuggest(textInfos, suggestionsLimit);
         if (retval == null || retval.length != textInfos.length) {
             return retval;
         }
@@ -131,6 +137,58 @@
         return retval;
     }
 
+    /**
+     * Get sentence suggestions for specified texts in an array of TextInfo. This is taken from
+     * SpellCheckerService#onGetSentenceSuggestionsMultiple that we can't use because it's
+     * using private variables.
+     * The default implementation splits the input text to words and returns
+     * {@link SentenceSuggestionsInfo} which contains suggestions for each word.
+     * This function will run on the incoming IPC thread.
+     * So, this is not called on the main thread,
+     * but will be called in series on another thread.
+     * @param textInfos an array of the text metadata
+     * @param suggestionsLimit the maximum number of suggestions to be returned
+     * @return an array of {@link SentenceSuggestionsInfo} returned by
+     * {@link SpellCheckerService.Session#onGetSuggestions(TextInfo, int)}
+     */
+    private SentenceSuggestionsInfo[] splitAndSuggest(TextInfo[] textInfos, int suggestionsLimit) {
+        if (textInfos == null || textInfos.length == 0) {
+            return SentenceLevelAdapter.EMPTY_SENTENCE_SUGGESTIONS_INFOS;
+        }
+        SentenceLevelAdapter sentenceLevelAdapter;
+        synchronized(this) {
+            sentenceLevelAdapter = mSentenceLevelAdapter;
+            if (sentenceLevelAdapter == null) {
+                final String localeStr = getLocale();
+                if (!TextUtils.isEmpty(localeStr)) {
+                    sentenceLevelAdapter = new SentenceLevelAdapter(mResources,
+                            new Locale(localeStr));
+                    mSentenceLevelAdapter = sentenceLevelAdapter;
+                }
+            }
+        }
+        if (sentenceLevelAdapter == null) {
+            return SentenceLevelAdapter.EMPTY_SENTENCE_SUGGESTIONS_INFOS;
+        }
+        final int infosSize = textInfos.length;
+        final SentenceSuggestionsInfo[] retval = new SentenceSuggestionsInfo[infosSize];
+        for (int i = 0; i < infosSize; ++i) {
+            final SentenceLevelAdapter.SentenceTextInfoParams textInfoParams =
+                    sentenceLevelAdapter.getSplitWords(textInfos[i]);
+            final ArrayList<SentenceLevelAdapter.SentenceWordItem> mItems =
+                    textInfoParams.mItems;
+            final int itemsSize = mItems.size();
+            final TextInfo[] splitTextInfos = new TextInfo[itemsSize];
+            for (int j = 0; j < itemsSize; ++j) {
+                splitTextInfos[j] = mItems.get(j).mTextInfo;
+            }
+            retval[i] = SentenceLevelAdapter.reconstructSuggestions(
+                    textInfoParams, onGetSuggestionsMultiple(
+                            splitTextInfos, suggestionsLimit, true));
+        }
+        return retval;
+    }
+
     @Override
     public SuggestionsInfo[] onGetSuggestionsMultiple(TextInfo[] textInfos,
             int suggestionsLimit, boolean sequentialWords) {
@@ -139,18 +197,22 @@
             final int length = textInfos.length;
             final SuggestionsInfo[] retval = new SuggestionsInfo[length];
             for (int i = 0; i < length; ++i) {
-                final String prevWord;
+                final CharSequence prevWord;
                 if (sequentialWords && i > 0) {
-                final String prevWordCandidate = textInfos[i - 1].getText();
-                // Note that an empty string would be used to indicate the initial word
-                // in the future.
-                prevWord = TextUtils.isEmpty(prevWordCandidate) ? null : prevWordCandidate;
+                    final TextInfo prevTextInfo = textInfos[i - 1];
+                    final CharSequence prevWordCandidate =
+                            TextInfoCompatUtils.getCharSequenceOrString(prevTextInfo);
+                    // Note that an empty string would be used to indicate the initial word
+                    // in the future.
+                    prevWord = TextUtils.isEmpty(prevWordCandidate) ? null : prevWordCandidate;
                 } else {
                     prevWord = null;
                 }
-                retval[i] = onGetSuggestionsInternal(textInfos[i], prevWord, suggestionsLimit);
-                retval[i].setCookieAndSequence(textInfos[i].getCookie(),
-                        textInfos[i].getSequence());
+                final PrevWordsInfo prevWordsInfo =
+                        new PrevWordsInfo(new PrevWordsInfo.WordInfo(prevWord));
+                final TextInfo textInfo = textInfos[i];
+                retval[i] = onGetSuggestionsInternal(textInfo, prevWordsInfo, suggestionsLimit);
+                retval[i].setCookieAndSequence(textInfo.getCookie(), textInfo.getSequence());
             }
             return retval;
         } finally {
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
index d6e5b75..d668672 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidWordLevelSpellCheckerSession.java
@@ -28,13 +28,18 @@
 import android.view.textservice.TextInfo;
 
 import com.android.inputmethod.compat.SuggestionsInfoCompatUtils;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.ProximityInfo;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 import com.android.inputmethod.latin.WordComposer;
-import com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService.SuggestionsGatherer;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
+import com.android.inputmethod.latin.utils.CoordinateUtils;
 import com.android.inputmethod.latin.utils.LocaleUtils;
+import com.android.inputmethod.latin.utils.ScriptUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.SuggestionResults;
 
 import java.util.ArrayList;
 import java.util.Locale;
@@ -43,9 +48,9 @@
     private static final String TAG = AndroidWordLevelSpellCheckerSession.class.getSimpleName();
     private static final boolean DBG = false;
 
-    // Immutable, but need the locale which is not available in the constructor yet
-    private DictionaryPool mDictionaryPool;
-    // Likewise
+    public final static String[] EMPTY_STRING_ARRAY = new String[0];
+
+    // Immutable, but not available in the constructor.
     private Locale mLocale;
     // Cache this for performance
     private int mScript; // One of SCRIPT_LATIN or SCRIPT_CYRILLIC for now.
@@ -66,29 +71,29 @@
         private static final char CHAR_DELIMITER = '\uFFFC';
         private static final int MAX_CACHE_SIZE = 50;
         private final LruCache<String, SuggestionsParams> mUnigramSuggestionsInfoCache =
-                new LruCache<String, SuggestionsParams>(MAX_CACHE_SIZE);
+                new LruCache<>(MAX_CACHE_SIZE);
 
         // TODO: Support n-gram input
-        private static String generateKey(String query, String prevWord) {
-            if (TextUtils.isEmpty(query) || TextUtils.isEmpty(prevWord)) {
+        private static String generateKey(final String query, final PrevWordsInfo prevWordsInfo) {
+            if (TextUtils.isEmpty(query) || !prevWordsInfo.isValid()) {
                 return query;
             }
-            return query + CHAR_DELIMITER + prevWord;
+            return query + CHAR_DELIMITER + prevWordsInfo;
         }
 
-        // TODO: Support n-gram input
-        public SuggestionsParams getSuggestionsFromCache(String query, String prevWord) {
-            return mUnigramSuggestionsInfoCache.get(generateKey(query, prevWord));
+        public SuggestionsParams getSuggestionsFromCache(String query,
+                final PrevWordsInfo prevWordsInfo) {
+            return mUnigramSuggestionsInfoCache.get(generateKey(query, prevWordsInfo));
         }
 
-        // TODO: Support n-gram input
         public void putSuggestionsToCache(
-                String query, String prevWord, String[] suggestions, int flags) {
+                final String query, final PrevWordsInfo prevWordsInfo,
+                final String[] suggestions, final int flags) {
             if (suggestions == null || TextUtils.isEmpty(query)) {
                 return;
             }
             mUnigramSuggestionsInfoCache.put(
-                    generateKey(query, prevWord), new SuggestionsParams(suggestions, flags));
+                    generateKey(query, prevWordsInfo), new SuggestionsParams(suggestions, flags));
         }
 
         public void clearCache() {
@@ -112,9 +117,8 @@
     @Override
     public void onCreate() {
         final String localeString = getLocale();
-        mDictionaryPool = mService.getDictionaryPool(localeString);
         mLocale = LocaleUtils.constructLocaleFromString(localeString);
-        mScript = AndroidSpellCheckerService.getScriptFromLocale(mLocale);
+        mScript = ScriptUtils.getScriptFromSpellCheckerLocale(mLocale);
     }
 
     @Override
@@ -123,44 +127,6 @@
         cres.unregisterContentObserver(mObserver);
     }
 
-    /*
-     * Returns whether the code point is a letter that makes sense for the specified
-     * locale for this spell checker.
-     * The dictionaries supported by Latin IME are described in res/xml/spellchecker.xml
-     * and is limited to EFIGS languages and Russian.
-     * Hence at the moment this explicitly tests for Cyrillic characters or Latin characters
-     * as appropriate, and explicitly excludes CJK, Arabic and Hebrew characters.
-     */
-    private static boolean isLetterCheckableByLanguage(final int codePoint,
-            final int script) {
-        switch (script) {
-        case AndroidSpellCheckerService.SCRIPT_LATIN:
-            // Our supported latin script dictionaries (EFIGS) at the moment only include
-            // characters in the C0, C1, Latin Extended A and B, IPA extensions unicode
-            // blocks. As it happens, those are back-to-back in the code range 0x40 to 0x2AF,
-            // so the below is a very efficient way to test for it. As for the 0-0x3F, it's
-            // excluded from isLetter anyway.
-            return codePoint <= 0x2AF && Character.isLetter(codePoint);
-        case AndroidSpellCheckerService.SCRIPT_CYRILLIC:
-            // All Cyrillic characters are in the 400~52F block. There are some in the upper
-            // Unicode range, but they are archaic characters that are not used in modern
-            // Russian and are not used by our dictionary.
-            return codePoint >= 0x400 && codePoint <= 0x52F && Character.isLetter(codePoint);
-        case AndroidSpellCheckerService.SCRIPT_GREEK:
-            // Greek letters are either in the 370~3FF range (Greek & Coptic), or in the
-            // 1F00~1FFF range (Greek extended). Our dictionary contains both sort of characters.
-            // Our dictionary also contains a few words with 0xF2; it would be best to check
-            // if that's correct, but a web search does return results for these words so
-            // they are probably okay.
-            return (codePoint >= 0x370 && codePoint <= 0x3FF)
-                    || (codePoint >= 0x1F00 && codePoint <= 0x1FFF)
-                    || codePoint == 0xF2;
-        default:
-            // Should never come here
-            throw new RuntimeException("Impossible value of script: " + script);
-        }
-    }
-
     private static final int CHECKABILITY_CHECKABLE = 0;
     private static final int CHECKABILITY_TOO_MANY_NON_LETTERS = 1;
     private static final int CHECKABILITY_CONTAINS_PERIOD = 2;
@@ -187,7 +153,7 @@
         // Filter by first letter
         final int firstCodePoint = text.codePointAt(0);
         // Filter out words that don't start with a letter or an apostrophe
-        if (!isLetterCheckableByLanguage(firstCodePoint, script)
+        if (!ScriptUtils.isLetterPartOfScript(firstCodePoint, script)
                 && '\'' != firstCodePoint) return CHECKABILITY_FIRST_LETTER_UNCHECKABLE;
 
         // Filter contents
@@ -208,7 +174,7 @@
             if (Constants.CODE_PERIOD == codePoint) {
                 return CHECKABILITY_CONTAINS_PERIOD;
             }
-            if (isLetterCheckableByLanguage(codePoint, script)) ++letterCount;
+            if (ScriptUtils.isLetterPartOfScript(codePoint, script)) ++letterCount;
         }
         // Guestimate heuristic: perform spell checking if at least 3/4 of the characters
         // in this word are letters
@@ -225,24 +191,24 @@
      * If the "TEXT" is fully upper case, we test the exact string "TEXT", the lower-cased
      *  version of it "text" and the capitalized version of it "Text".
      */
-    private boolean isInDictForAnyCapitalization(final Dictionary dict, final String text,
-            final int capitalizeType) {
+    private boolean isInDictForAnyCapitalization(final String text, final int capitalizeType) {
         // If the word is in there as is, then it's in the dictionary. If not, we'll test lower
         // case versions, but only if the word is not already all-lower case or mixed case.
-        if (dict.isValidWord(text)) return true;
+        if (mService.isValidWord(mLocale, text)) return true;
         if (StringUtils.CAPITALIZE_NONE == capitalizeType) return false;
 
         // If we come here, we have a capitalized word (either First- or All-).
         // Downcase the word and look it up again. If the word is only capitalized, we
         // tested all possibilities, so if it's still negative we can return false.
         final String lowerCaseText = text.toLowerCase(mLocale);
-        if (dict.isValidWord(lowerCaseText)) return true;
+        if (mService.isValidWord(mLocale, lowerCaseText)) return true;
         if (StringUtils.CAPITALIZE_FIRST == capitalizeType) return false;
 
         // If the lower case version is not in the dictionary, it's still possible
         // that we have an all-caps version of a word that needs to be capitalized
         // according to the dictionary. E.g. "GERMANS" only exists in the dictionary as "Germans".
-        return dict.isValidWord(StringUtils.capitalizeFirstAndDowncaseRest(lowerCaseText, mLocale));
+        return mService.isValidWord(mLocale,
+                StringUtils.capitalizeFirstAndDowncaseRest(lowerCaseText, mLocale));
     }
 
     // Note : this must be reentrant
@@ -257,11 +223,12 @@
     }
 
     protected SuggestionsInfo onGetSuggestionsInternal(
-            final TextInfo textInfo, final String prevWord, final int suggestionsLimit) {
+            final TextInfo textInfo, final PrevWordsInfo prevWordsInfo,
+            final int suggestionsLimit) {
         try {
             final String inText = textInfo.getText();
             final SuggestionsParams cachedSuggestionsParams =
-                    mSuggestionsCache.getSuggestionsFromCache(inText, prevWord);
+                    mSuggestionsCache.getSuggestionsFromCache(inText, prevWordsInfo);
             if (cachedSuggestionsParams != null) {
                 if (DBG) {
                     Log.d(TAG, "Cache hit: " + inText + ", " + cachedSuggestionsParams.mFlags);
@@ -269,78 +236,57 @@
                 return new SuggestionsInfo(
                         cachedSuggestionsParams.mFlags, cachedSuggestionsParams.mSuggestions);
             }
-
             final int checkability = getCheckabilityInScript(inText, mScript);
             if (CHECKABILITY_CHECKABLE != checkability) {
-                DictAndKeyboard dictInfo = null;
-                try {
-                    dictInfo = mDictionaryPool.pollWithDefaultTimeout();
-                    if (!DictionaryPool.isAValidDictionary(dictInfo)) {
-                        return AndroidSpellCheckerService.getNotInDictEmptySuggestions(
-                                false /* reportAsTypo */);
-                    }
-                    return dictInfo.mDictionary.isValidWord(inText)
-                            ? AndroidSpellCheckerService.getInDictEmptySuggestions()
-                            : AndroidSpellCheckerService.getNotInDictEmptySuggestions(
-                                    CHECKABILITY_CONTAINS_PERIOD == checkability
-                                    /* reportAsTypo */);
-                } finally {
-                    if (null != dictInfo) {
-                        if (!mDictionaryPool.offer(dictInfo)) {
-                            Log.e(TAG, "Can't re-insert a dictionary into its pool");
+                if (CHECKABILITY_CONTAINS_PERIOD == checkability) {
+                    final String[] splitText = inText.split(Constants.REGEXP_PERIOD);
+                    boolean allWordsAreValid = true;
+                    for (final String word : splitText) {
+                        if (!mService.isValidWord(mLocale, word)) {
+                            allWordsAreValid = false;
+                            break;
                         }
                     }
+                    if (allWordsAreValid) {
+                        return new SuggestionsInfo(SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO
+                                | SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS,
+                                new String[] {
+                                        TextUtils.join(Constants.STRING_SPACE, splitText) });
+                    }
                 }
+                return mService.isValidWord(mLocale, inText) ?
+                        AndroidSpellCheckerService.getInDictEmptySuggestions() :
+                        AndroidSpellCheckerService.getNotInDictEmptySuggestions(
+                                CHECKABILITY_CONTAINS_PERIOD == checkability /* reportAsTypo */);
             }
             final String text = inText.replaceAll(
                     AndroidSpellCheckerService.APOSTROPHE, AndroidSpellCheckerService.SINGLE_QUOTE);
-
-            // TODO: Don't gather suggestions if the limit is <= 0 unless necessary
-            //final SuggestionsGatherer suggestionsGatherer = new SuggestionsGatherer(text,
-            //mService.mSuggestionThreshold, mService.mRecommendedThreshold,
-            //suggestionsLimit);
-            final SuggestionsGatherer suggestionsGatherer = mService.newSuggestionsGatherer(
-                    text, suggestionsLimit);
-
             final int capitalizeType = StringUtils.getCapitalizationType(text);
             boolean isInDict = true;
-            DictAndKeyboard dictInfo = null;
-            try {
-                dictInfo = mDictionaryPool.pollWithDefaultTimeout();
-                if (!DictionaryPool.isAValidDictionary(dictInfo)) {
-                    return AndroidSpellCheckerService.getNotInDictEmptySuggestions(
-                            false /* reportAsTypo */);
-                }
-                final WordComposer composer = new WordComposer();
-                final int length = text.length();
-                for (int i = 0; i < length; i = text.offsetByCodePoints(i, 1)) {
-                    final int codePoint = text.codePointAt(i);
-                    composer.addKeyInfo(codePoint, dictInfo.getKeyboard(codePoint));
-                }
-                // TODO: make a spell checker option to block offensive words or not
-                final ArrayList<SuggestedWordInfo> suggestions =
-                        dictInfo.mDictionary.getSuggestions(composer, prevWord,
-                                dictInfo.getProximityInfo(), true /* blockOffensiveWords */,
-                                null /* additionalFeaturesOptions */);
-                if (suggestions != null) {
-                    for (final SuggestedWordInfo suggestion : suggestions) {
-                        final String suggestionStr = suggestion.mWord;
-                        suggestionsGatherer.addWord(suggestionStr.toCharArray(), null, 0,
-                                suggestionStr.length(), suggestion.mScore);
-                    }
-                }
-                isInDict = isInDictForAnyCapitalization(dictInfo.mDictionary, text, capitalizeType);
-            } finally {
-                if (null != dictInfo) {
-                    if (!mDictionaryPool.offer(dictInfo)) {
-                        Log.e(TAG, "Can't re-insert a dictionary into its pool");
-                    }
-                }
+            if (!mService.hasMainDictionaryForLocale(mLocale)) {
+                return AndroidSpellCheckerService.getNotInDictEmptySuggestions(
+                        false /* reportAsTypo */);
             }
-
-            final SuggestionsGatherer.Result result = suggestionsGatherer.getResults(
-                    capitalizeType, mLocale);
-
+            final Keyboard keyboard = mService.getKeyboardForLocale(mLocale);
+            final WordComposer composer = new WordComposer();
+            final int[] codePoints = StringUtils.toCodePointArray(text);
+            final int[] coordinates;
+            final ProximityInfo proximityInfo;
+            if (null == keyboard) {
+                coordinates = CoordinateUtils.newCoordinateArray(codePoints.length,
+                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+                proximityInfo = null;
+            } else {
+                coordinates = keyboard.getCoordinates(codePoints);
+                proximityInfo = keyboard.getProximityInfo();
+            }
+            composer.setComposingWord(codePoints, coordinates);
+            // TODO: Don't gather suggestions if the limit is <= 0 unless necessary
+            final SuggestionResults suggestionResults = mService.getSuggestionResults(
+                    mLocale, composer, prevWordsInfo, proximityInfo);
+            final Result result = getResult(capitalizeType, mLocale, suggestionsLimit,
+                    mService.getRecommendedThreshold(), text, suggestionResults);
+            isInDict = isInDictForAnyCapitalization(text, capitalizeType);
             if (DBG) {
                 Log.i(TAG, "Spell checking results for " + text + " with suggestion limit "
                         + suggestionsLimit);
@@ -362,7 +308,8 @@
                                     .getValueOf_RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS()
                             : 0);
             final SuggestionsInfo retval = new SuggestionsInfo(flags, result.mSuggestions);
-            mSuggestionsCache.putSuggestionsToCache(text, prevWord, result.mSuggestions, flags);
+            mSuggestionsCache.putSuggestionsToCache(text, prevWordsInfo, result.mSuggestions,
+                    flags);
             return retval;
         } catch (RuntimeException e) {
             // Don't kill the keyboard if there is a bug in the spell checker
@@ -376,6 +323,62 @@
         }
     }
 
+    private static final class Result {
+        public final String[] mSuggestions;
+        public final boolean mHasRecommendedSuggestions;
+        public Result(final String[] gatheredSuggestions,
+                final boolean hasRecommendedSuggestions) {
+            mSuggestions = gatheredSuggestions;
+            mHasRecommendedSuggestions = hasRecommendedSuggestions;
+        }
+    }
+
+    private static Result getResult(final int capitalizeType, final Locale locale,
+            final int suggestionsLimit, final float recommendedThreshold, final String originalText,
+            final SuggestionResults suggestionResults) {
+        if (suggestionResults.isEmpty() || suggestionsLimit <= 0) {
+            return new Result(null /* gatheredSuggestions */,
+                    false /* hasRecommendedSuggestions */);
+        }
+        if (DBG) {
+            for (final SuggestedWordInfo suggestedWordInfo : suggestionResults) {
+                Log.i(TAG, "" + suggestedWordInfo.mScore + " " + suggestedWordInfo.mWord);
+            }
+        }
+        final ArrayList<String> suggestions = new ArrayList<>();
+        for (final SuggestedWordInfo suggestedWordInfo : suggestionResults) {
+            final String suggestion;
+            if (StringUtils.CAPITALIZE_ALL == capitalizeType) {
+                suggestion = suggestedWordInfo.mWord.toUpperCase(locale);
+            } else if (StringUtils.CAPITALIZE_FIRST == capitalizeType) {
+                suggestion = StringUtils.capitalizeFirstCodePoint(
+                        suggestedWordInfo.mWord, locale);
+            } else {
+                suggestion = suggestedWordInfo.mWord;
+            }
+            suggestions.add(suggestion);
+        }
+        StringUtils.removeDupes(suggestions);
+        // This returns a String[], while toArray() returns an Object[] which cannot be cast
+        // into a String[].
+        final String[] gatheredSuggestions =
+                suggestions.subList(0, Math.min(suggestions.size(), suggestionsLimit))
+                        .toArray(EMPTY_STRING_ARRAY);
+
+        final int bestScore = suggestionResults.first().mScore;
+        final String bestSuggestion = suggestions.get(0);
+        final float normalizedScore = BinaryDictionaryUtils.calcNormalizedScore(
+                originalText, bestSuggestion.toString(), bestScore);
+        final boolean hasRecommendedSuggestions = (normalizedScore > recommendedThreshold);
+        if (DBG) {
+            Log.i(TAG, "Best suggestion : " + bestSuggestion + ", score " + bestScore);
+            Log.i(TAG, "Normalized score = " + normalizedScore
+                    + " (threshold " + recommendedThreshold
+                    + ") => hasRecommendedSuggestions = " + hasRecommendedSuggestions);
+        }
+        return new Result(gatheredSuggestions, hasRecommendedSuggestions);
+    }
+
     /*
      * The spell checker acts on its own behalf. That is needed, in particular, to be able to
      * access the dictionary files, which the provider restricts to the identity of Latin IME.
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java b/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java
deleted file mode 100644
index b77f3e2..0000000
--- a/java/src/com/android/inputmethod/latin/spellcheck/DictAndKeyboard.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.spellcheck;
-
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardId;
-import com.android.inputmethod.keyboard.KeyboardLayoutSet;
-import com.android.inputmethod.keyboard.ProximityInfo;
-
-/**
- * A container for a Dictionary and a Keyboard.
- */
-public final class DictAndKeyboard {
-    public final Dictionary mDictionary;
-    private final Keyboard mKeyboard;
-    private final Keyboard mManualShiftedKeyboard;
-
-    public DictAndKeyboard(
-            final Dictionary dictionary, final KeyboardLayoutSet keyboardLayoutSet) {
-        mDictionary = dictionary;
-        if (keyboardLayoutSet == null) {
-            mKeyboard = null;
-            mManualShiftedKeyboard = null;
-            return;
-        }
-        mKeyboard = keyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET);
-        mManualShiftedKeyboard =
-                keyboardLayoutSet.getKeyboard(KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED);
-    }
-
-    public Keyboard getKeyboard(final int codePoint) {
-        if (mKeyboard == null) {
-            return null;
-        }
-        return mKeyboard.getKey(codePoint) != null ? mKeyboard : mManualShiftedKeyboard;
-    }
-
-    public ProximityInfo getProximityInfo() {
-        return mKeyboard == null ? null : mKeyboard.getProximityInfo();
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java b/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
deleted file mode 100644
index a0aed28..0000000
--- a/java/src/com/android/inputmethod/latin/spellcheck/DictionaryPool.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.spellcheck;
-
-import android.util.Log;
-
-import com.android.inputmethod.keyboard.ProximityInfo;
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.WordComposer;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-/**
- * A blocking queue that creates dictionaries up to a certain limit as necessary.
- * As a deadlock-detecting device, if waiting for more than TIMEOUT = 3 seconds, we
- * will clear the queue and generate its contents again. This is transparent for
- * the client code, but may help with sloppy clients.
- */
-@SuppressWarnings("serial")
-public final class DictionaryPool extends LinkedBlockingQueue<DictAndKeyboard> {
-    private final static String TAG = DictionaryPool.class.getSimpleName();
-    // How many seconds we wait for a dictionary to become available. Past this delay, we give up in
-    // fear some bug caused a deadlock, and reset the whole pool.
-    private final static int TIMEOUT = 3;
-    private final AndroidSpellCheckerService mService;
-    private final int mMaxSize;
-    private final Locale mLocale;
-    private int mSize;
-    private volatile boolean mClosed;
-    final static ArrayList<SuggestedWordInfo> noSuggestions = CollectionUtils.newArrayList();
-    private final static DictAndKeyboard dummyDict = new DictAndKeyboard(
-            new Dictionary(Dictionary.TYPE_MAIN) {
-                @Override
-                public ArrayList<SuggestedWordInfo> getSuggestions(final WordComposer composer,
-                        final String prevWord, final ProximityInfo proximityInfo,
-                        final boolean blockOffensiveWords, final int[] additionalFeaturesOptions) {
-                    return noSuggestions;
-                }
-                @Override
-                public boolean isValidWord(final String word) {
-                    // This is never called. However if for some strange reason it ever gets
-                    // called, returning true is less destructive (it will not underline the
-                    // word in red).
-                    return true;
-                }
-            }, null);
-
-    static public boolean isAValidDictionary(final DictAndKeyboard dictInfo) {
-        return null != dictInfo && dummyDict != dictInfo;
-    }
-
-    public DictionaryPool(final int maxSize, final AndroidSpellCheckerService service,
-            final Locale locale) {
-        super();
-        mMaxSize = maxSize;
-        mService = service;
-        mLocale = locale;
-        mSize = 0;
-        mClosed = false;
-    }
-
-    @Override
-    public DictAndKeyboard poll(final long timeout, final TimeUnit unit)
-            throws InterruptedException {
-        final DictAndKeyboard dict = poll();
-        if (null != dict) return dict;
-        synchronized(this) {
-            if (mSize >= mMaxSize) {
-                // Our pool is already full. Wait until some dictionary is ready, or TIMEOUT
-                // expires to avoid a deadlock.
-                final DictAndKeyboard result = super.poll(timeout, unit);
-                if (null == result) {
-                    Log.e(TAG, "Deadlock detected ! Resetting dictionary pool");
-                    clear();
-                    mSize = 1;
-                    return mService.createDictAndKeyboard(mLocale);
-                } else {
-                    return result;
-                }
-            } else {
-                ++mSize;
-                return mService.createDictAndKeyboard(mLocale);
-            }
-        }
-    }
-
-    // Convenience method
-    public DictAndKeyboard pollWithDefaultTimeout() {
-        try {
-            return poll(TIMEOUT, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-            return null;
-        }
-    }
-
-    public void close() {
-        synchronized(this) {
-            mClosed = true;
-            for (DictAndKeyboard dict : this) {
-                dict.mDictionary.close();
-            }
-            clear();
-        }
-    }
-
-    @Override
-    public boolean offer(final DictAndKeyboard dict) {
-        if (mClosed) {
-            dict.mDictionary.close();
-            return super.offer(dummyDict);
-        } else {
-            return super.offer(dict);
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SentenceLevelAdapter.java b/java/src/com/android/inputmethod/latin/spellcheck/SentenceLevelAdapter.java
new file mode 100644
index 0000000..ae582ea
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SentenceLevelAdapter.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.spellcheck;
+
+import android.content.res.Resources;
+import android.view.textservice.SentenceSuggestionsInfo;
+import android.view.textservice.SuggestionsInfo;
+import android.view.textservice.TextInfo;
+
+import com.android.inputmethod.compat.TextInfoCompatUtils;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+import com.android.inputmethod.latin.utils.RunInLocale;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+/**
+ * This code is mostly lifted directly from android.service.textservice.SpellCheckerService in
+ * the framework; maybe that should be protected instead, so that implementers don't have to
+ * rewrite everything for any small change.
+ */
+public class SentenceLevelAdapter {
+    public static final SentenceSuggestionsInfo[] EMPTY_SENTENCE_SUGGESTIONS_INFOS =
+            new SentenceSuggestionsInfo[] {};
+    private static final SuggestionsInfo EMPTY_SUGGESTIONS_INFO = new SuggestionsInfo(0, null);
+    /**
+     * Container for split TextInfo parameters
+     */
+    public static class SentenceWordItem {
+        public final TextInfo mTextInfo;
+        public final int mStart;
+        public final int mLength;
+        public SentenceWordItem(TextInfo ti, int start, int end) {
+            mTextInfo = ti;
+            mStart = start;
+            mLength = end - start;
+        }
+    }
+
+    /**
+     * Container for originally queried TextInfo and parameters
+     */
+    public static class SentenceTextInfoParams {
+        final TextInfo mOriginalTextInfo;
+        final ArrayList<SentenceWordItem> mItems;
+        final int mSize;
+        public SentenceTextInfoParams(TextInfo ti, ArrayList<SentenceWordItem> items) {
+            mOriginalTextInfo = ti;
+            mItems = items;
+            mSize = items.size();
+        }
+    }
+
+    private static class WordIterator {
+        private final SpacingAndPunctuations mSpacingAndPunctuations;
+        public WordIterator(final Resources res, final Locale locale) {
+            final RunInLocale<SpacingAndPunctuations> job
+                    = new RunInLocale<SpacingAndPunctuations>() {
+                @Override
+                protected SpacingAndPunctuations job(final Resources res) {
+                    return new SpacingAndPunctuations(res);
+                }
+            };
+            mSpacingAndPunctuations = job.runInLocale(res, locale);
+        }
+
+        public int getEndOfWord(final CharSequence sequence, int index) {
+            final int length = sequence.length();
+            index = index < 0 ? 0 : Character.offsetByCodePoints(sequence, index, 1);
+            while (index < length) {
+                final int codePoint = Character.codePointAt(sequence, index);
+                if (mSpacingAndPunctuations.isWordSeparator(codePoint)) {
+                    // If it's a period, we want to stop here only if it's followed by another
+                    // word separator. In all other cases we stop here.
+                    if (Constants.CODE_PERIOD == codePoint) {
+                        final int indexOfNextCodePoint =
+                                index + Character.charCount(Constants.CODE_PERIOD);
+                        if (indexOfNextCodePoint < length
+                                && mSpacingAndPunctuations.isWordSeparator(
+                                        Character.codePointAt(sequence, indexOfNextCodePoint))) {
+                            return index;
+                        }
+                    } else {
+                        return index;
+                    }
+                }
+                index += Character.charCount(codePoint);
+            }
+            return index;
+        }
+
+        public int getBeginningOfNextWord(final CharSequence sequence, int index) {
+            final int length = sequence.length();
+            if (index >= length) {
+                return -1;
+            }
+            index = index < 0 ? 0 : Character.offsetByCodePoints(sequence, index, 1);
+            while (index < length) {
+                final int codePoint = Character.codePointAt(sequence, index);
+                if (!mSpacingAndPunctuations.isWordSeparator(codePoint)) {
+                    return index;
+                }
+                index += Character.charCount(codePoint);
+            }
+            return -1;
+        }
+    }
+
+    private final WordIterator mWordIterator;
+    public SentenceLevelAdapter(final Resources res, final Locale locale) {
+        mWordIterator = new WordIterator(res, locale);
+    }
+
+    public SentenceTextInfoParams getSplitWords(TextInfo originalTextInfo) {
+        final WordIterator wordIterator = mWordIterator;
+        final CharSequence originalText =
+                TextInfoCompatUtils.getCharSequenceOrString(originalTextInfo);
+        final int cookie = originalTextInfo.getCookie();
+        final int start = -1;
+        final int end = originalText.length();
+        final ArrayList<SentenceWordItem> wordItems = new ArrayList<SentenceWordItem>();
+        int wordStart = wordIterator.getBeginningOfNextWord(originalText, start);
+        int wordEnd = wordIterator.getEndOfWord(originalText, wordStart);
+        while (wordStart <= end && wordEnd != -1 && wordStart != -1) {
+            if (wordEnd >= start && wordEnd > wordStart) {
+                CharSequence subSequence = originalText.subSequence(wordStart, wordEnd).toString();
+                final TextInfo ti = TextInfoCompatUtils.newInstance(subSequence, 0,
+                        subSequence.length(), cookie, subSequence.hashCode());
+                wordItems.add(new SentenceWordItem(ti, wordStart, wordEnd));
+            }
+            wordStart = wordIterator.getBeginningOfNextWord(originalText, wordEnd);
+            if (wordStart == -1) {
+                break;
+            }
+            wordEnd = wordIterator.getEndOfWord(originalText, wordStart);
+        }
+        return new SentenceTextInfoParams(originalTextInfo, wordItems);
+    }
+
+    public static SentenceSuggestionsInfo reconstructSuggestions(
+            SentenceTextInfoParams originalTextInfoParams, SuggestionsInfo[] results) {
+        if (results == null || results.length == 0) {
+            return null;
+        }
+        if (originalTextInfoParams == null) {
+            return null;
+        }
+        final int originalCookie = originalTextInfoParams.mOriginalTextInfo.getCookie();
+        final int originalSequence =
+                originalTextInfoParams.mOriginalTextInfo.getSequence();
+
+        final int querySize = originalTextInfoParams.mSize;
+        final int[] offsets = new int[querySize];
+        final int[] lengths = new int[querySize];
+        final SuggestionsInfo[] reconstructedSuggestions = new SuggestionsInfo[querySize];
+        for (int i = 0; i < querySize; ++i) {
+            final SentenceWordItem item = originalTextInfoParams.mItems.get(i);
+            SuggestionsInfo result = null;
+            for (int j = 0; j < results.length; ++j) {
+                final SuggestionsInfo cur = results[j];
+                if (cur != null && cur.getSequence() == item.mTextInfo.getSequence()) {
+                    result = cur;
+                    result.setCookieAndSequence(originalCookie, originalSequence);
+                    break;
+                }
+            }
+            offsets[i] = item.mStart;
+            lengths[i] = item.mLength;
+            reconstructedSuggestions[i] = result != null ? result : EMPTY_SUGGESTIONS_INFO;
+        }
+        return new SentenceSuggestionsInfo(reconstructedSuggestions, offsets, lengths);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java
index 999ca77..6850e9b 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/SpellCheckerSettingsFragment.java
@@ -21,26 +21,20 @@
 import android.preference.PreferenceScreen;
 
 import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.settings.TwoStatePreferenceHelper;
 import com.android.inputmethod.latin.utils.ApplicationUtils;
 
 /**
  * Preference screen.
  */
 public final class SpellCheckerSettingsFragment extends PreferenceFragment {
-    /**
-     * Empty constructor for fragment generation.
-     */
-    public SpellCheckerSettingsFragment() {
-    }
-
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
+    public void onActivityCreated(final Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         addPreferencesFromResource(R.xml.spell_checker_settings);
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
-        if (preferenceScreen != null) {
-            preferenceScreen.setTitle(ApplicationUtils.getAcitivityTitleResId(
-                    getActivity(), SpellCheckerSettingsActivity.class));
-        }
+        preferenceScreen.setTitle(ApplicationUtils.getActivityTitleResId(
+                getActivity(), SpellCheckerSettingsActivity.class));
+        TwoStatePreferenceHelper.replaceCheckBoxPreferencesBySwitchPreferences(preferenceScreen);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
index acd4745..346aea3 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
@@ -23,34 +23,27 @@
 
 import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardActionListener;
 import com.android.inputmethod.keyboard.internal.KeyboardBuilder;
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
 import com.android.inputmethod.keyboard.internal.KeyboardParams;
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 import com.android.inputmethod.latin.utils.TypefaceUtils;
 
 public final class MoreSuggestions extends Keyboard {
-    public static final int SUGGESTION_CODE_BASE = 1024;
-
     public final SuggestedWords mSuggestedWords;
 
-    public static abstract class MoreSuggestionsListener extends KeyboardActionListener.Adapter {
-        public abstract void onSuggestionSelected(final int index, final SuggestedWordInfo info);
-    }
-
     MoreSuggestions(final MoreSuggestionsParam params, final SuggestedWords suggestedWords) {
         super(params);
         mSuggestedWords = suggestedWords;
     }
 
     private static final class MoreSuggestionsParam extends KeyboardParams {
-        private final int[] mWidths = new int[SuggestionStripView.MAX_SUGGESTIONS];
-        private final int[] mRowNumbers = new int[SuggestionStripView.MAX_SUGGESTIONS];
-        private final int[] mColumnOrders = new int[SuggestionStripView.MAX_SUGGESTIONS];
-        private final int[] mNumColumnsInRow = new int[SuggestionStripView.MAX_SUGGESTIONS];
+        private final int[] mWidths = new int[SuggestedWords.MAX_SUGGESTIONS];
+        private final int[] mRowNumbers = new int[SuggestedWords.MAX_SUGGESTIONS];
+        private final int[] mColumnOrders = new int[SuggestedWords.MAX_SUGGESTIONS];
+        private final int[] mNumColumnsInRow = new int[SuggestedWords.MAX_SUGGESTIONS];
         private static final int MAX_COLUMNS_IN_ROW = 3;
         private int mNumRows;
         public Drawable mDivider;
@@ -66,16 +59,23 @@
             clearKeys();
             mDivider = res.getDrawable(R.drawable.more_suggestions_divider);
             mDividerWidth = mDivider.getIntrinsicWidth();
-            final float padding = res.getDimension(R.dimen.more_suggestions_key_horizontal_padding);
+            final float padding = res.getDimension(
+                    R.dimen.config_more_suggestions_key_horizontal_padding);
 
             int row = 0;
             int index = fromIndex;
             int rowStartIndex = fromIndex;
-            final int size = Math.min(suggestedWords.size(), SuggestionStripView.MAX_SUGGESTIONS);
+            final int size = Math.min(suggestedWords.size(), SuggestedWords.MAX_SUGGESTIONS);
             while (index < size) {
-                final String word = suggestedWords.getWord(index);
+                final String word;
+                if (isIndexSubjectToAutoCorrection(suggestedWords, index)) {
+                    // INDEX_OF_AUTO_CORRECTION and INDEX_OF_TYPED_WORD got swapped.
+                    word = suggestedWords.getLabel(SuggestedWords.INDEX_OF_TYPED_WORD);
+                } else {
+                    word = suggestedWords.getLabel(index);
+                }
                 // TODO: Should take care of text x-scaling.
-                mWidths[index] = (int)(TypefaceUtils.getLabelWidth(word, paint) + padding);
+                mWidths[index] = (int)(TypefaceUtils.getStringWidth(word, paint) + padding);
                 final int numColumn = index - rowStartIndex + 1;
                 final int columnWidth =
                         (maxWidth - mDividerWidth * (numColumn - 1)) / numColumn;
@@ -171,6 +171,11 @@
         }
     }
 
+    static boolean isIndexSubjectToAutoCorrection(final SuggestedWords suggestedWords,
+            final int index) {
+        return suggestedWords.mWillAutoCorrect && index == SuggestedWords.INDEX_OF_AUTO_CORRECTION;
+    }
+
     public static final class Builder extends KeyboardBuilder<MoreSuggestionsParam> {
         private final MoreSuggestionsView mPaneView;
         private SuggestedWords mSuggestedWords;
@@ -188,7 +193,6 @@
             final int xmlId = R.xml.kbd_suggestions_pane_template;
             load(xmlId, parentKeyboard.mId);
             mParams.mVerticalGap = mParams.mTopPadding = parentKeyboard.mVerticalGap / 2;
-
             mPaneView.updateKeyboardGeometry(mParams.mDefaultRowHeight);
             final int count = mParams.layout(suggestedWords, fromIndex, maxWidth, minWidth, maxRow,
                     mPaneView.newLabelPaint(null /* key */), mResources);
@@ -205,13 +209,17 @@
                 final int x = params.getX(index);
                 final int y = params.getY(index);
                 final int width = params.getWidth(index);
-                final String word = mSuggestedWords.getWord(index);
-                final String info = mSuggestedWords.getDebugString(index);
-                final int indexInMoreSuggestions = index + SUGGESTION_CODE_BASE;
-                final Key key = new Key(
-                        params, word, info, KeyboardIconsSet.ICON_UNDEFINED, indexInMoreSuggestions,
-                        null /* outputText */, x, y, width, params.mDefaultRowHeight,
-                        0 /* labelFlags */, Key.BACKGROUND_TYPE_NORMAL);
+                final String word;
+                final String info;
+                if (isIndexSubjectToAutoCorrection(mSuggestedWords, index)) {
+                    // INDEX_OF_AUTO_CORRECTION and INDEX_OF_TYPED_WORD got swapped.
+                    word = mSuggestedWords.getLabel(SuggestedWords.INDEX_OF_TYPED_WORD);
+                    info = mSuggestedWords.getDebugString(SuggestedWords.INDEX_OF_TYPED_WORD);
+                } else {
+                    word = mSuggestedWords.getLabel(index);
+                    info = mSuggestedWords.getDebugString(index);
+                }
+                final Key key = new MoreSuggestionKey(word, info, index, params);
                 params.markAsEdgeKey(key, index);
                 params.onAddKey(key);
                 final int columnNumber = params.getColumnNumber(index);
@@ -226,6 +234,19 @@
         }
     }
 
+    static final class MoreSuggestionKey extends Key {
+        public final int mSuggestedWordIndex;
+
+        public MoreSuggestionKey(final String word, final String info, final int index,
+                final MoreSuggestionsParam params) {
+            super(word /* label */, KeyboardIconsSet.ICON_UNDEFINED, Constants.CODE_OUTPUT_TEXT,
+                    word /* outputText */, info, 0 /* labelFlags */, Key.BACKGROUND_TYPE_NORMAL,
+                    params.getX(index), params.getY(index), params.getWidth(index),
+                    params.mDefaultRowHeight, params.mHorizontalGap, params.mVerticalGap);
+            mSuggestedWordIndex = index;
+        }
+    }
+
     private static final class Divider extends Key.Spacer {
         private final Drawable mIcon;
 
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index 0ebe377..f7b6f91 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -20,11 +20,14 @@
 import android.util.AttributeSet;
 import android.util.Log;
 
+import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardActionListener;
 import com.android.inputmethod.keyboard.MoreKeysKeyboardView;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.suggestions.MoreSuggestions.MoreSuggestionsListener;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.suggestions.MoreSuggestions.MoreSuggestionKey;
 
 /**
  * A view that renders a virtual {@link MoreSuggestions}. It handles rendering of keys and detecting
@@ -33,6 +36,10 @@
 public final class MoreSuggestionsView extends MoreKeysKeyboardView {
     private static final String TAG = MoreSuggestionsView.class.getSimpleName();
 
+    public static abstract class MoreSuggestionsListener extends KeyboardActionListener.Adapter {
+        public abstract void onSuggestionSelected(final SuggestedWordInfo info);
+    }
+
     public MoreSuggestionsView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.moreKeysKeyboardViewStyle);
     }
@@ -42,6 +49,21 @@
         super(context, attrs, defStyle);
     }
 
+    // TODO: Remove redundant override method.
+    @Override
+    public void setKeyboard(final Keyboard keyboard) {
+        super.setKeyboard(keyboard);
+        // With accessibility mode off, {@link #mAccessibilityDelegate} is set to null at the
+        // above {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call.
+        // With accessibility mode on, {@link #mAccessibilityDelegate} is set to a
+        // {@link MoreKeysKeyboardAccessibilityDelegate} object at the above
+        // {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call.
+        if (mAccessibilityDelegate != null) {
+            mAccessibilityDelegate.setOpenAnnounce(R.string.spoken_open_more_suggestions);
+            mAccessibilityDelegate.setCloseAnnounce(R.string.spoken_close_more_suggestions);
+        }
+    }
+
     @Override
     protected int getDefaultCoordX() {
         final MoreSuggestions pane = (MoreSuggestions)getKeyboard();
@@ -54,12 +76,17 @@
 
     public void adjustVerticalCorrectionForModalMode() {
         // Set vertical correction to zero (Reset more keys keyboard sliding allowance
-        // {@link R#dimen.more_keys_keyboard_slide_allowance}).
+        // {@link R#dimen.config_more_keys_keyboard_slide_allowance}).
         mKeyDetector.setKeyboard(getKeyboard(), -getPaddingLeft(), -getPaddingTop());
     }
 
     @Override
-    public void onCodeInput(final int code, final int x, final int y) {
+    protected void onKeyInput(final Key key, final int x, final int y) {
+        if (!(key instanceof MoreSuggestionKey)) {
+            Log.e(TAG, "Expected key is MoreSuggestionKey, but found "
+                    + key.getClass().getName());
+            return;
+        }
         final Keyboard keyboard = getKeyboard();
         if (!(keyboard instanceof MoreSuggestions)) {
             Log.e(TAG, "Expected keyboard is MoreSuggestions, but found "
@@ -67,7 +94,7 @@
             return;
         }
         final SuggestedWords suggestedWords = ((MoreSuggestions)keyboard).mSuggestedWords;
-        final int index = code - MoreSuggestions.SUGGESTION_CODE_BASE;
+        final int index = ((MoreSuggestionKey)key).mSuggestedWordIndex;
         if (index < 0 || index >= suggestedWords.size()) {
             Log.e(TAG, "Selected suggestion has an illegal index: " + index);
             return;
@@ -77,7 +104,6 @@
                     + mListener.getClass().getName());
             return;
         }
-        ((MoreSuggestionsListener)mListener).onSuggestionSelected(
-                index, suggestedWords.getInfo(index));
+        ((MoreSuggestionsListener)mListener).onSuggestionSelected(suggestedWords.getInfo(index));
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
index faa5560..c5f062d 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
@@ -28,6 +28,7 @@
 import android.graphics.Typeface;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.support.v4.view.ViewCompat;
 import android.text.Spannable;
 import android.text.SpannableString;
 import android.text.Spanned;
@@ -38,18 +39,20 @@
 import android.text.style.UnderlineSpan;
 import android.util.AttributeSet;
 import android.view.Gravity;
-import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.accessibility.AccessibilityUtils;
+import com.android.inputmethod.latin.PunctuationSuggestions;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.define.DebugFlags;
 import com.android.inputmethod.latin.utils.AutoCorrectionUtils;
 import com.android.inputmethod.latin.utils.ResourceUtils;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 import com.android.inputmethod.latin.utils.ViewLayoutUtils;
 
 import java.util.ArrayList;
@@ -64,7 +67,7 @@
     public final int mPadding;
     public final int mDividerWidth;
     public final int mSuggestionsStripHeight;
-    public final int mSuggestionsCountInStrip;
+    private final int mSuggestionsCountInStrip;
     public final int mMoreSuggestionsRowHeight;
     private int mMaxMoreSuggestionsRow;
     public final float mMinMoreSuggestionsWidth;
@@ -89,21 +92,18 @@
     private final Drawable mMoreSuggestionsHint;
     private static final String MORE_SUGGESTIONS_HINT = "\u2026";
     private static final String LEFTWARDS_ARROW = "\u2190";
+    private static final String RIGHTWARDS_ARROW = "\u2192";
 
     private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD);
     private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan();
 
-    private final int mSuggestionStripOption;
+    private final int mSuggestionStripOptions;
     // These constants are the flag values of
-    // {@link R.styleable#SuggestionStripView_suggestionStripOption} attribute.
+    // {@link R.styleable#SuggestionStripView_suggestionStripOptions} attribute.
     private static final int AUTO_CORRECT_BOLD = 0x01;
     private static final int AUTO_CORRECT_UNDERLINE = 0x02;
     private static final int VALID_TYPED_WORD_BOLD = 0x04;
 
-    private final TextView mWordToSaveView;
-    private final TextView mLeftwardsArrowView;
-    private final TextView mHintToSaveView;
-
     public SuggestionStripLayoutHelper(final Context context, final AttributeSet attrs,
             final int defStyle, final ArrayList<TextView> wordViews,
             final ArrayList<View> dividerViews, final ArrayList<TextView> debugInfoViews) {
@@ -119,12 +119,13 @@
         mDividerWidth = dividerView.getMeasuredWidth();
 
         final Resources res = wordView.getResources();
-        mSuggestionsStripHeight = res.getDimensionPixelSize(R.dimen.suggestions_strip_height);
+        mSuggestionsStripHeight = res.getDimensionPixelSize(
+                R.dimen.config_suggestions_strip_height);
 
         final TypedArray a = context.obtainStyledAttributes(attrs,
                 R.styleable.SuggestionStripView, defStyle, R.style.SuggestionStripView);
-        mSuggestionStripOption = a.getInt(
-                R.styleable.SuggestionStripView_suggestionStripOption, 0);
+        mSuggestionStripOptions = a.getInt(
+                R.styleable.SuggestionStripView_suggestionStripOptions, 0);
         mAlphaObsoleted = ResourceUtils.getFraction(a,
                 R.styleable.SuggestionStripView_alphaObsoleted, 1.0f);
         mColorValidTypedWord = a.getColor(R.styleable.SuggestionStripView_colorValidTypedWord, 0);
@@ -145,20 +146,17 @@
         a.recycle();
 
         mMoreSuggestionsHint = getMoreSuggestionsHint(res,
-                res.getDimension(R.dimen.more_suggestions_hint_text_size), mColorAutoCorrect);
+                res.getDimension(R.dimen.config_more_suggestions_hint_text_size),
+                mColorAutoCorrect);
         mCenterPositionInStrip = mSuggestionsCountInStrip / 2;
         // Assuming there are at least three suggestions. Also, note that the suggestions are
         // laid out according to script direction, so this is left of the center for LTR scripts
         // and right of the center for RTL scripts.
         mTypedWordPositionWhenAutocorrect = mCenterPositionInStrip - 1;
         mMoreSuggestionsBottomGap = res.getDimensionPixelOffset(
-                R.dimen.more_suggestions_bottom_gap);
-        mMoreSuggestionsRowHeight = res.getDimensionPixelSize(R.dimen.more_suggestions_row_height);
-
-        final LayoutInflater inflater = LayoutInflater.from(context);
-        mWordToSaveView = (TextView)inflater.inflate(R.layout.suggestion_word, null);
-        mLeftwardsArrowView = (TextView)inflater.inflate(R.layout.hint_add_to_dictionary, null);
-        mHintToSaveView = (TextView)inflater.inflate(R.layout.hint_add_to_dictionary, null);
+                R.dimen.config_more_suggestions_bottom_gap);
+        mMoreSuggestionsRowHeight = res.getDimensionPixelSize(
+                R.dimen.config_more_suggestions_row_height);
     }
 
     public int getMaxMoreSuggestionsRow() {
@@ -203,23 +201,25 @@
         if (indexInSuggestedWords >= suggestedWords.size()) {
             return null;
         }
-        final String word = suggestedWords.getWord(indexInSuggestedWords);
-        final boolean isAutoCorrect = indexInSuggestedWords == 1
-                && suggestedWords.willAutoCorrect();
-        final boolean isTypedWordValid = indexInSuggestedWords == 0
-                && suggestedWords.mTypedWordValid;
-        if (!isAutoCorrect && !isTypedWordValid) {
+        final String word = suggestedWords.getLabel(indexInSuggestedWords);
+        // TODO: don't use the index to decide whether this is the auto-correction/typed word, as
+        // this is brittle
+        final boolean isAutoCorrection = suggestedWords.mWillAutoCorrect
+                && indexInSuggestedWords == SuggestedWords.INDEX_OF_AUTO_CORRECTION;
+        final boolean isTypedWordValid = suggestedWords.mTypedWordValid
+                && indexInSuggestedWords == SuggestedWords.INDEX_OF_TYPED_WORD;
+        if (!isAutoCorrection && !isTypedWordValid) {
             return word;
         }
 
         final int len = word.length();
         final Spannable spannedWord = new SpannableString(word);
-        final int option = mSuggestionStripOption;
-        if ((isAutoCorrect && (option & AUTO_CORRECT_BOLD) != 0)
-                || (isTypedWordValid && (option & VALID_TYPED_WORD_BOLD) != 0)) {
+        final int options = mSuggestionStripOptions;
+        if ((isAutoCorrection && (options & AUTO_CORRECT_BOLD) != 0)
+                || (isTypedWordValid && (options & VALID_TYPED_WORD_BOLD) != 0)) {
             spannedWord.setSpan(BOLD_SPAN, 0, len, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         }
-        if (isAutoCorrect && (option & AUTO_CORRECT_UNDERLINE) != 0) {
+        if (isAutoCorrection && (options & AUTO_CORRECT_UNDERLINE) != 0) {
             spannedWord.setSpan(UNDERLINE_SPAN, 0, len, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
         }
         return spannedWord;
@@ -229,7 +229,7 @@
             final SuggestedWords suggestedWords) {
         final int indexToDisplayMostImportantSuggestion;
         final int indexToDisplaySecondMostImportantSuggestion;
-        if (suggestedWords.willAutoCorrect()) {
+        if (suggestedWords.mWillAutoCorrect) {
             indexToDisplayMostImportantSuggestion = SuggestedWords.INDEX_OF_AUTO_CORRECTION;
             indexToDisplaySecondMostImportantSuggestion = SuggestedWords.INDEX_OF_TYPED_WORD;
         } else {
@@ -246,35 +246,36 @@
         return indexInSuggestedWords;
     }
 
-    private int getSuggestionTextColor(final int indexInSuggestedWords,
-            final SuggestedWords suggestedWords) {
+    private int getSuggestionTextColor(final SuggestedWords suggestedWords,
+            final int indexInSuggestedWords) {
         final int positionInStrip =
                 getPositionInSuggestionStrip(indexInSuggestedWords, suggestedWords);
-        // TODO: Need to revisit this logic with bigram suggestions
-        final boolean isSuggested = (indexInSuggestedWords != SuggestedWords.INDEX_OF_TYPED_WORD);
+        // Use identity for strings, not #equals : it's the typed word if it's the same object
+        final boolean isTypedWord = suggestedWords.getInfo(indexInSuggestedWords).isKindOf(
+                SuggestedWordInfo.KIND_TYPED);
 
         final int color;
-        if (positionInStrip == mCenterPositionInStrip && suggestedWords.willAutoCorrect()) {
+        if (positionInStrip == mCenterPositionInStrip && suggestedWords.mWillAutoCorrect) {
             color = mColorAutoCorrect;
-        } else if (positionInStrip == mCenterPositionInStrip && suggestedWords.mTypedWordValid) {
+        } else if (isTypedWord && suggestedWords.mTypedWordValid) {
             color = mColorValidTypedWord;
-        } else if (isSuggested) {
-            color = mColorSuggested;
-        } else {
+        } else if (isTypedWord) {
             color = mColorTypedWord;
+        } else {
+            color = mColorSuggested;
         }
-        if (LatinImeLogger.sDBG && suggestedWords.size() > 1) {
+        if (DebugFlags.DEBUG_ENABLED && suggestedWords.size() > 1) {
             // If we auto-correct, then the autocorrection is in slot 0 and the typed word
             // is in slot 1.
             if (positionInStrip == mCenterPositionInStrip
                     && AutoCorrectionUtils.shouldBlockAutoCorrectionBySafetyNet(
-                            suggestedWords.getWord(SuggestedWords.INDEX_OF_AUTO_CORRECTION),
-                            suggestedWords.getWord(SuggestedWords.INDEX_OF_TYPED_WORD))) {
+                            suggestedWords.getLabel(SuggestedWords.INDEX_OF_AUTO_CORRECTION),
+                            suggestedWords.getLabel(SuggestedWords.INDEX_OF_TYPED_WORD))) {
                 return 0xFFFF0000;
             }
         }
 
-        if (suggestedWords.mIsObsoleteSuggestions && isSuggested) {
+        if (suggestedWords.mIsObsoleteSuggestions && !isTypedWord) {
             return applyAlpha(color, mAlphaObsoleted);
         }
         return color;
@@ -292,54 +293,64 @@
         params.gravity = Gravity.CENTER;
     }
 
-    public void layout(final SuggestedWords suggestedWords, final ViewGroup stripView,
-            final ViewGroup placerView) {
-        if (suggestedWords.mIsPunctuationSuggestions) {
-            layoutPunctuationSuggestions(suggestedWords, stripView);
-            return;
+    /**
+     * Layout suggestions to the suggestions strip. And returns the number of suggestions displayed
+     * in the suggestions strip.
+     *
+     * @param suggestedWords suggestions to be shown in the suggestions strip.
+     * @param stripView the suggestions strip view.
+     * @param placerView the view where the debug info will be placed.
+     * @return the number of suggestions displayed in the suggestions strip
+     */
+    public int layoutAndReturnSuggestionCountInStrip(final SuggestedWords suggestedWords,
+            final ViewGroup stripView, final ViewGroup placerView) {
+        if (suggestedWords.isPunctuationSuggestions()) {
+            return layoutPunctuationSuggestionsAndReturnSuggestionCountInStrip(
+                    (PunctuationSuggestions)suggestedWords, stripView);
         }
 
-        final int countInStrip = mSuggestionsCountInStrip;
-        setupWordViewsTextAndColor(suggestedWords, countInStrip);
+        setupWordViewsTextAndColor(suggestedWords, mSuggestionsCountInStrip);
         final TextView centerWordView = mWordViews.get(mCenterPositionInStrip);
-        final int availableStripWidth = placerView.getWidth()
-                - placerView.getPaddingRight() - placerView.getPaddingLeft();
-        final int centerWidth = getSuggestionWidth(mCenterPositionInStrip, availableStripWidth);
-        if (getTextScaleX(centerWordView.getText(), centerWidth, centerWordView.getPaint())
-                < MIN_TEXT_XSCALE) {
+        final int stripWidth = stripView.getWidth();
+        final int centerWidth = getSuggestionWidth(mCenterPositionInStrip, stripWidth);
+        final int countInStrip;
+        if (suggestedWords.size() == 1 || getTextScaleX(centerWordView.getText(), centerWidth,
+                centerWordView.getPaint()) < MIN_TEXT_XSCALE) {
             // Layout only the most relevant suggested word at the center of the suggestion strip
             // by consolidating all slots in the strip.
-            mMoreSuggestionsAvailable = (suggestedWords.size() > 1);
-            layoutWord(mCenterPositionInStrip, availableStripWidth - mPadding);
+            countInStrip = 1;
+            mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
+            layoutWord(mCenterPositionInStrip, stripWidth - mPadding);
             stripView.addView(centerWordView);
             setLayoutWeight(centerWordView, 1.0f, ViewGroup.LayoutParams.MATCH_PARENT);
             if (SuggestionStripView.DBG) {
-                layoutDebugInfo(mCenterPositionInStrip, placerView, availableStripWidth);
+                layoutDebugInfo(mCenterPositionInStrip, placerView, stripWidth);
             }
-            return;
-        }
+        } else {
+            countInStrip = mSuggestionsCountInStrip;
+            mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
+            int x = 0;
+            for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) {
+                if (positionInStrip != 0) {
+                    final View divider = mDividerViews.get(positionInStrip);
+                    // Add divider if this isn't the left most suggestion in suggestions strip.
+                    addDivider(stripView, divider);
+                    x += divider.getMeasuredWidth();
+                }
 
-        mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
-        int x = 0;
-        for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) {
-            if (positionInStrip != 0) {
-                final View divider = mDividerViews.get(positionInStrip);
-                // Add divider if this isn't the left most suggestion in suggestions strip.
-                addDivider(stripView, divider);
-                x += divider.getMeasuredWidth();
-            }
+                final int width = getSuggestionWidth(positionInStrip, stripWidth);
+                final TextView wordView = layoutWord(positionInStrip, width);
+                stripView.addView(wordView);
+                setLayoutWeight(wordView, getSuggestionWeight(positionInStrip),
+                        ViewGroup.LayoutParams.MATCH_PARENT);
+                x += wordView.getMeasuredWidth();
 
-            final int width = getSuggestionWidth(positionInStrip, availableStripWidth);
-            final TextView wordView = layoutWord(positionInStrip, width);
-            stripView.addView(wordView);
-            setLayoutWeight(wordView, getSuggestionWeight(positionInStrip),
-                    ViewGroup.LayoutParams.MATCH_PARENT);
-            x += wordView.getMeasuredWidth();
-
-            if (SuggestionStripView.DBG) {
-                layoutDebugInfo(positionInStrip, placerView, x);
+                if (SuggestionStripView.DBG) {
+                    layoutDebugInfo(positionInStrip, placerView, x);
+                }
             }
         }
+        return countInStrip;
     }
 
     /**
@@ -370,13 +381,19 @@
         } else {
             wordView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
         }
-
-        // Disable this suggestion if the suggestion is null or empty.
-        wordView.setEnabled(!TextUtils.isEmpty(word));
+        // {@link StyleSpan} in a content description may cause an issue of TTS/TalkBack.
+        // Use a simple {@link String} to avoid the issue.
+        wordView.setContentDescription(TextUtils.isEmpty(word) ? null : word.toString());
         final CharSequence text = getEllipsizedText(word, width, wordView.getPaint());
         final float scaleX = getTextScaleX(word, width, wordView.getPaint());
         wordView.setText(text); // TextView.setText() resets text scale x to 1.0.
         wordView.setTextScaleX(Math.max(scaleX, MIN_TEXT_XSCALE));
+        // A <code>wordView</code> should be disabled when <code>word</code> is empty in order to
+        // make it unclickable.
+        // With accessibility touch exploration on, <code>wordView</code> should be enabled even
+        // when it is empty to avoid announcing as "disabled".
+        wordView.setEnabled(!TextUtils.isEmpty(word)
+                || AccessibilityUtils.getInstance().isTouchExplorationEnabled());
         return wordView;
     }
 
@@ -415,7 +432,9 @@
             final int countInStrip) {
         // Clear all suggestions first
         for (int positionInStrip = 0; positionInStrip < countInStrip; ++positionInStrip) {
-            mWordViews.get(positionInStrip).setText(null);
+            final TextView wordView = mWordViews.get(positionInStrip);
+            wordView.setText(null);
+            wordView.setTag(null);
             // Make this inactive for touches in {@link #layoutWord(int,int)}.
             if (SuggestionStripView.DBG) {
                 mDebugInfoViews.get(positionInStrip).setText(null);
@@ -431,7 +450,7 @@
             // {@link SuggestionStripView#onClick(View)}.
             wordView.setTag(indexInSuggestedWords);
             wordView.setText(getStyledSuggestedWord(suggestedWords, indexInSuggestedWords));
-            wordView.setTextColor(getSuggestionTextColor(positionInStrip, suggestedWords));
+            wordView.setTextColor(getSuggestionTextColor(suggestedWords, indexInSuggestedWords));
             if (SuggestionStripView.DBG) {
                 mDebugInfoViews.get(positionInStrip).setText(
                         suggestedWords.getDebugString(indexInSuggestedWords));
@@ -439,9 +458,9 @@
         }
     }
 
-    private void layoutPunctuationSuggestions(final SuggestedWords suggestedWords,
-            final ViewGroup stripView) {
-        final int countInStrip = Math.min(suggestedWords.size(), PUNCTUATIONS_IN_STRIP);
+    private int layoutPunctuationSuggestionsAndReturnSuggestionCountInStrip(
+            final PunctuationSuggestions punctuationSuggestions, final ViewGroup stripView) {
+        final int countInStrip = Math.min(punctuationSuggestions.size(), PUNCTUATIONS_IN_STRIP);
         for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) {
             if (positionInStrip != 0) {
                 // Add divider if this isn't the left most suggestion in suggestions strip.
@@ -449,71 +468,69 @@
             }
 
             final TextView wordView = mWordViews.get(positionInStrip);
-            wordView.setEnabled(true);
-            wordView.setTextColor(mColorAutoCorrect);
+            final String punctuation = punctuationSuggestions.getLabel(positionInStrip);
             // {@link TextView#getTag()} is used to get the index in suggestedWords at
             // {@link SuggestionStripView#onClick(View)}.
             wordView.setTag(positionInStrip);
-            wordView.setText(suggestedWords.getWord(positionInStrip));
+            wordView.setText(punctuation);
+            wordView.setContentDescription(punctuation);
             wordView.setTextScaleX(1.0f);
             wordView.setCompoundDrawables(null, null, null, null);
+            wordView.setTextColor(mColorAutoCorrect);
             stripView.addView(wordView);
             setLayoutWeight(wordView, 1.0f, mSuggestionsStripHeight);
         }
-        mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
+        mMoreSuggestionsAvailable = (punctuationSuggestions.size() > countInStrip);
+        return countInStrip;
     }
 
-    public void layoutAddToDictionaryHint(final String word, final ViewGroup stripView,
-            final int stripWidth, final CharSequence hintText, final OnClickListener listener) {
+    public void layoutAddToDictionaryHint(final String word, final ViewGroup addToDictionaryStrip) {
+        final int stripWidth = addToDictionaryStrip.getWidth();
         final int width = stripWidth - mDividerWidth - mPadding * 2;
 
-        final TextView wordView = mWordToSaveView;
+        final TextView wordView = (TextView)addToDictionaryStrip.findViewById(R.id.word_to_save);
         wordView.setTextColor(mColorTypedWord);
         final int wordWidth = (int)(width * mCenterSuggestionWeight);
-        final CharSequence text = getEllipsizedText(word, wordWidth, wordView.getPaint());
+        final CharSequence wordToSave = getEllipsizedText(word, wordWidth, wordView.getPaint());
         final float wordScaleX = wordView.getTextScaleX();
-        // {@link TextView#setTag()} is used to hold the word to be added to dictionary. The word
-        // will be extracted at {@link #getAddToDictionaryWord()}.
-        wordView.setTag(word);
-        wordView.setText(text);
+        wordView.setText(wordToSave);
         wordView.setTextScaleX(wordScaleX);
-        stripView.addView(wordView);
         setLayoutWeight(wordView, mCenterSuggestionWeight, ViewGroup.LayoutParams.MATCH_PARENT);
 
-        stripView.addView(mDividerViews.get(0));
-
-        final TextView leftArrowView = mLeftwardsArrowView;
-        leftArrowView.setTextColor(mColorAutoCorrect);
-        leftArrowView.setText(LEFTWARDS_ARROW);
-        stripView.addView(leftArrowView);
-
-        final TextView hintView = mHintToSaveView;
-        hintView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
+        final TextView hintView = (TextView)addToDictionaryStrip.findViewById(
+                R.id.hint_add_to_dictionary);
         hintView.setTextColor(mColorAutoCorrect);
-        final int hintWidth = width - wordWidth - leftArrowView.getWidth();
-        final float hintScaleX = getTextScaleX(hintText, hintWidth, hintView.getPaint());
-        hintView.setText(hintText);
+        final boolean isRtlLanguage = (ViewCompat.getLayoutDirection(addToDictionaryStrip)
+                == ViewCompat.LAYOUT_DIRECTION_RTL);
+        final String arrow = isRtlLanguage ? RIGHTWARDS_ARROW : LEFTWARDS_ARROW;
+        final Resources res = addToDictionaryStrip.getResources();
+        final boolean isRtlSystem = SubtypeLocaleUtils.isRtlLanguage(res.getConfiguration().locale);
+        final CharSequence hintText = res.getText(R.string.hint_add_to_dictionary);
+        final String hintWithArrow = (isRtlLanguage == isRtlSystem)
+                ? (arrow + hintText) : (hintText + arrow);
+        final int hintWidth = width - wordWidth;
+        hintView.setTextScaleX(1.0f); // Reset textScaleX.
+        final float hintScaleX = getTextScaleX(hintWithArrow, hintWidth, hintView.getPaint());
+        hintView.setText(hintWithArrow);
         hintView.setTextScaleX(hintScaleX);
-        stripView.addView(hintView);
         setLayoutWeight(
                 hintView, 1.0f - mCenterSuggestionWeight, ViewGroup.LayoutParams.MATCH_PARENT);
-
-        wordView.setOnClickListener(listener);
-        leftArrowView.setOnClickListener(listener);
-        hintView.setOnClickListener(listener);
     }
 
-    public String getAddToDictionaryWord() {
-        // String tag is set at
-        // {@link #layoutAddToDictionaryHint(String,ViewGroup,int,CharSequence,OnClickListener}.
-        return (String)mWordToSaveView.getTag();
+    public void layoutImportantNotice(final View importantNoticeStrip,
+            final String importantNoticeTitle) {
+        final TextView titleView = (TextView)importantNoticeStrip.findViewById(
+                R.id.important_notice_title);
+        final int width = titleView.getWidth() - titleView.getPaddingLeft()
+                - titleView.getPaddingRight();
+        titleView.setTextColor(mColorAutoCorrect);
+        titleView.setText(importantNoticeTitle);
+        titleView.setTextScaleX(1.0f); // Reset textScaleX.
+        final float titleScaleX = getTextScaleX(importantNoticeTitle, width, titleView.getPaint());
+        titleView.setTextScaleX(titleScaleX);
     }
 
-    public boolean isAddToDictionaryShowing(final View v) {
-        return v == mWordToSaveView || v == mHintToSaveView || v == mLeftwardsArrowView;
-    }
-
-    private static void setLayoutWeight(final View v, final float weight, final int height) {
+    static void setLayoutWeight(final View v, final float weight, final int height) {
         final ViewGroup.LayoutParams lp = v.getLayoutParams();
         if (lp instanceof LinearLayout.LayoutParams) {
             final LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams)lp;
@@ -527,7 +544,7 @@
             final TextPaint paint) {
         paint.setTextScaleX(1.0f);
         final int width = getTextWidth(text, paint);
-        if (width <= maxWidth) {
+        if (width <= maxWidth || maxWidth <= 0) {
             return 1.0f;
         }
         return maxWidth / (float)width;
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
index 75f17c5..d151e40 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -18,7 +18,13 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.support.v4.view.ViewCompat;
+import android.text.TextUtils;
 import android.util.AttributeSet;
+import android.util.TypedValue;
 import android.view.GestureDetector;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -26,23 +32,25 @@
 import android.view.View.OnClickListener;
 import android.view.View.OnLongClickListener;
 import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.view.accessibility.AccessibilityEvent;
+import android.widget.ImageButton;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardSwitcher;
 import com.android.inputmethod.keyboard.MainKeyboardView;
 import com.android.inputmethod.keyboard.MoreKeysPanel;
 import com.android.inputmethod.latin.AudioAndHapticFeedbackManager;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.SuggestedWords;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.define.ProductionFlag;
-import com.android.inputmethod.latin.suggestions.MoreSuggestions.MoreSuggestionsListener;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.research.ResearchLogger;
+import com.android.inputmethod.latin.define.DebugFlags;
+import com.android.inputmethod.latin.settings.Settings;
+import com.android.inputmethod.latin.settings.SettingsValues;
+import com.android.inputmethod.latin.suggestions.MoreSuggestionsView.MoreSuggestionsListener;
+import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
 
 import java.util.ArrayList;
 
@@ -50,29 +58,82 @@
         OnLongClickListener {
     public interface Listener {
         public void addWordToUserDictionary(String word);
-        public void pickSuggestionManually(int index, SuggestedWordInfo word);
+        public void showImportantNoticeContents();
+        public void pickSuggestionManually(SuggestedWordInfo word);
+        public void onCodeInput(int primaryCode, int x, int y, boolean isKeyRepeat);
     }
 
-    // The maximum number of suggestions available. See {@link Suggest#mPrefMaxSuggestions}.
-    public static final int MAX_SUGGESTIONS = 18;
-
-    static final boolean DBG = LatinImeLogger.sDBG;
+    static final boolean DBG = DebugFlags.DEBUG_ENABLED;
+    private static final float DEBUG_INFO_TEXT_SIZE_IN_DIP = 6.0f;
 
     private final ViewGroup mSuggestionsStrip;
+    private final ImageButton mVoiceKey;
+    private final ViewGroup mAddToDictionaryStrip;
+    private final View mImportantNoticeStrip;
     MainKeyboardView mMainKeyboardView;
 
     private final View mMoreSuggestionsContainer;
     private final MoreSuggestionsView mMoreSuggestionsView;
     private final MoreSuggestions.Builder mMoreSuggestionsBuilder;
 
-    private final ArrayList<TextView> mWordViews = CollectionUtils.newArrayList();
-    private final ArrayList<TextView> mDebugInfoViews = CollectionUtils.newArrayList();
-    private final ArrayList<View> mDividerViews = CollectionUtils.newArrayList();
+    private final ArrayList<TextView> mWordViews = new ArrayList<>();
+    private final ArrayList<TextView> mDebugInfoViews = new ArrayList<>();
+    private final ArrayList<View> mDividerViews = new ArrayList<>();
 
     Listener mListener;
     private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
+    private int mSuggestionsCountInStrip;
 
     private final SuggestionStripLayoutHelper mLayoutHelper;
+    private final StripVisibilityGroup mStripVisibilityGroup;
+
+    private static class StripVisibilityGroup {
+        private final View mSuggestionStripView;
+        private final View mSuggestionsStrip;
+        private final View mAddToDictionaryStrip;
+        private final View mImportantNoticeStrip;
+
+        public StripVisibilityGroup(final View suggestionStripView,
+                final ViewGroup suggestionsStrip, final ViewGroup addToDictionaryStrip,
+                final View importantNoticeStrip) {
+            mSuggestionStripView = suggestionStripView;
+            mSuggestionsStrip = suggestionsStrip;
+            mAddToDictionaryStrip = addToDictionaryStrip;
+            mImportantNoticeStrip = importantNoticeStrip;
+            showSuggestionsStrip();
+        }
+
+        public void setLayoutDirection(final boolean isRtlLanguage) {
+            final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL
+                    : ViewCompat.LAYOUT_DIRECTION_LTR;
+            ViewCompat.setLayoutDirection(mSuggestionStripView, layoutDirection);
+            ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection);
+            ViewCompat.setLayoutDirection(mAddToDictionaryStrip, layoutDirection);
+            ViewCompat.setLayoutDirection(mImportantNoticeStrip, layoutDirection);
+        }
+
+        public void showSuggestionsStrip() {
+            mSuggestionsStrip.setVisibility(VISIBLE);
+            mAddToDictionaryStrip.setVisibility(INVISIBLE);
+            mImportantNoticeStrip.setVisibility(INVISIBLE);
+        }
+
+        public void showAddToDictionaryStrip() {
+            mSuggestionsStrip.setVisibility(INVISIBLE);
+            mAddToDictionaryStrip.setVisibility(VISIBLE);
+            mImportantNoticeStrip.setVisibility(INVISIBLE);
+        }
+
+        public void showImportantNoticeStrip() {
+            mSuggestionsStrip.setVisibility(INVISIBLE);
+            mAddToDictionaryStrip.setVisibility(INVISIBLE);
+            mImportantNoticeStrip.setVisibility(VISIBLE);
+        }
+
+        public boolean isShowingAddToDictionaryStrip() {
+            return mAddToDictionaryStrip.getVisibility() == VISIBLE;
+        }
+    }
 
     /**
      * Construct a {@link SuggestionStripView} for showing suggestions to be picked by the user.
@@ -91,15 +152,23 @@
         inflater.inflate(R.layout.suggestions_strip, this);
 
         mSuggestionsStrip = (ViewGroup)findViewById(R.id.suggestions_strip);
-        for (int pos = 0; pos < MAX_SUGGESTIONS; pos++) {
-            final TextView word = (TextView)inflater.inflate(R.layout.suggestion_word, null);
+        mVoiceKey = (ImageButton)findViewById(R.id.suggestions_strip_voice_key);
+        mAddToDictionaryStrip = (ViewGroup)findViewById(R.id.add_to_dictionary_strip);
+        mImportantNoticeStrip = findViewById(R.id.important_notice_strip);
+        mStripVisibilityGroup = new StripVisibilityGroup(this, mSuggestionsStrip,
+                mAddToDictionaryStrip, mImportantNoticeStrip);
+
+        for (int pos = 0; pos < SuggestedWords.MAX_SUGGESTIONS; pos++) {
+            final TextView word = new TextView(context, null, R.attr.suggestionWordStyle);
             word.setOnClickListener(this);
             word.setOnLongClickListener(this);
             mWordViews.add(word);
             final View divider = inflater.inflate(R.layout.suggestion_divider, null);
-            divider.setOnClickListener(this);
             mDividerViews.add(divider);
-            mDebugInfoViews.add((TextView)inflater.inflate(R.layout.suggestion_info, null));
+            final TextView info = new TextView(context, null, R.attr.suggestionWordStyle);
+            info.setTextColor(Color.WHITE);
+            info.setTextSize(TypedValue.COMPLEX_UNIT_DIP, DEBUG_INFO_TEXT_SIZE_IN_DIP);
+            mDebugInfoViews.add(info);
         }
 
         mLayoutHelper = new SuggestionStripLayoutHelper(
@@ -112,9 +181,16 @@
 
         final Resources res = context.getResources();
         mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset(
-                R.dimen.more_suggestions_modal_tolerance);
+                R.dimen.config_more_suggestions_modal_tolerance);
         mMoreSuggestionsSlidingDetector = new GestureDetector(
                 context, mMoreSuggestionsSlidingListener);
+
+        final TypedArray keyboardAttr = context.obtainStyledAttributes(attrs,
+                R.styleable.Keyboard, defStyle, R.style.SuggestionStripView);
+        final Drawable iconVoice = keyboardAttr.getDrawable(R.styleable.Keyboard_iconShortcutKey);
+        keyboardAttr.recycle();
+        mVoiceKey.setImageDrawable(iconVoice);
+        mVoiceKey.setOnClickListener(this);
     }
 
     /**
@@ -126,13 +202,20 @@
         mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view);
     }
 
-    public void setSuggestions(final SuggestedWords suggestedWords) {
+    public void updateVisibility(final boolean shouldBeVisible, final boolean isFullscreenMode) {
+        final int visibility = shouldBeVisible ? VISIBLE : (isFullscreenMode ? GONE : INVISIBLE);
+        setVisibility(visibility);
+        final SettingsValues currentSettingsValues = Settings.getInstance().getCurrent();
+        mVoiceKey.setVisibility(currentSettingsValues.mShowsVoiceInputKey ? VISIBLE : INVISIBLE);
+    }
+
+    public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
         clear();
+        mStripVisibilityGroup.setLayoutDirection(isRtlLanguage);
         mSuggestedWords = suggestedWords;
-        mLayoutHelper.layout(mSuggestedWords, mSuggestionsStrip, this);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            ResearchLogger.suggestionStripView_setSuggestions(mSuggestedWords);
-        }
+        mSuggestionsCountInStrip = mLayoutHelper.layoutAndReturnSuggestionCountInStrip(
+                mSuggestedWords, mSuggestionsStrip, this);
+        mStripVisibilityGroup.showSuggestionsStrip();
     }
 
     public int setMoreSuggestionsHeight(final int remainingHeight) {
@@ -140,14 +223,16 @@
     }
 
     public boolean isShowingAddToDictionaryHint() {
-        return mSuggestionsStrip.getChildCount() > 0
-                && mLayoutHelper.isAddToDictionaryShowing(mSuggestionsStrip.getChildAt(0));
+        return mStripVisibilityGroup.isShowingAddToDictionaryStrip();
     }
 
-    public void showAddToDictionaryHint(final String word, final CharSequence hintText) {
-        clear();
-        mLayoutHelper.layoutAddToDictionaryHint(
-                word, mSuggestionsStrip, getWidth(), hintText, this);
+    public void showAddToDictionaryHint(final String word) {
+        mLayoutHelper.layoutAddToDictionaryHint(word, mAddToDictionaryStrip);
+        // {@link TextView#setTag()} is used to hold the word to be added to dictionary. The word
+        // will be extracted at {@link #onClick(View)}.
+        mAddToDictionaryStrip.setTag(word);
+        mAddToDictionaryStrip.setOnClickListener(this);
+        mStripVisibilityGroup.showAddToDictionaryStrip();
     }
 
     public boolean dismissAddToDictionaryHint() {
@@ -158,31 +243,65 @@
         return false;
     }
 
+    // This method checks if we should show the important notice (checks on permanent storage if
+    // it has been shown once already or not, and if in the setup wizard). If applicable, it shows
+    // the notice. In all cases, it returns true if it was shown, false otherwise.
+    public boolean maybeShowImportantNoticeTitle() {
+        if (!ImportantNoticeUtils.shouldShowImportantNotice(getContext())) {
+            return false;
+        }
+        if (getWidth() <= 0) {
+            return false;
+        }
+        final String importantNoticeTitle = ImportantNoticeUtils.getNextImportantNoticeTitle(
+                getContext());
+        if (TextUtils.isEmpty(importantNoticeTitle)) {
+            return false;
+        }
+        if (isShowingMoreSuggestionPanel()) {
+            dismissMoreSuggestionsPanel();
+        }
+        mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, importantNoticeTitle);
+        mStripVisibilityGroup.showImportantNoticeStrip();
+        mImportantNoticeStrip.setOnClickListener(this);
+        return true;
+    }
+
     public void clear() {
         mSuggestionsStrip.removeAllViews();
-        removeAllViews();
-        addView(mSuggestionsStrip);
-        mMoreSuggestionsView.dismissMoreKeysPanel();
+        removeAllDebugInfoViews();
+        mStripVisibilityGroup.showSuggestionsStrip();
+        dismissMoreSuggestionsPanel();
+    }
+
+    private void removeAllDebugInfoViews() {
+        // The debug info views may be placed as children views of this {@link SuggestionStripView}.
+        for (final View debugInfoView : mDebugInfoViews) {
+            final ViewParent parent = debugInfoView.getParent();
+            if (parent instanceof ViewGroup) {
+                ((ViewGroup)parent).removeView(debugInfoView);
+            }
+        }
     }
 
     private final MoreSuggestionsListener mMoreSuggestionsListener = new MoreSuggestionsListener() {
         @Override
-        public void onSuggestionSelected(final int index, final SuggestedWordInfo wordInfo) {
-            mListener.pickSuggestionManually(index, wordInfo);
-            mMoreSuggestionsView.dismissMoreKeysPanel();
+        public void onSuggestionSelected(final SuggestedWordInfo wordInfo) {
+            mListener.pickSuggestionManually(wordInfo);
+            dismissMoreSuggestionsPanel();
         }
 
         @Override
         public void onCancelInput() {
-            mMoreSuggestionsView.dismissMoreKeysPanel();
+            dismissMoreSuggestionsPanel();
         }
     };
 
     private final MoreKeysPanel.Controller mMoreSuggestionsController =
             new MoreKeysPanel.Controller() {
         @Override
-        public void onDismissMoreKeysPanel(final MoreKeysPanel panel) {
-            mMainKeyboardView.onDismissMoreKeysPanel(panel);
+        public void onDismissMoreKeysPanel() {
+            mMainKeyboardView.onDismissMoreKeysPanel();
         }
 
         @Override
@@ -191,11 +310,19 @@
         }
 
         @Override
-        public void onCancelMoreKeysPanel(final MoreKeysPanel panel) {
-            mMoreSuggestionsView.dismissMoreKeysPanel();
+        public void onCancelMoreKeysPanel() {
+            dismissMoreSuggestionsPanel();
         }
     };
 
+    public boolean isShowingMoreSuggestionPanel() {
+        return mMoreSuggestionsView.isShowingInParent();
+    }
+
+    public void dismissMoreSuggestionsPanel() {
+        mMoreSuggestionsView.dismissMoreKeysPanel();
+    }
+
     @Override
     public boolean onLongClick(final View view) {
         AudioAndHapticFeedbackManager.getInstance().performHapticAndAudioFeedback(
@@ -204,7 +331,7 @@
     }
 
     boolean showMoreSuggestions() {
-        final Keyboard parentKeyboard = KeyboardSwitcher.getInstance().getKeyboard();
+        final Keyboard parentKeyboard = mMainKeyboardView.getKeyboard();
         if (parentKeyboard == null) {
             return false;
         }
@@ -212,11 +339,17 @@
         if (!layoutHelper.mMoreSuggestionsAvailable) {
             return false;
         }
+        // Dismiss another {@link MoreKeysPanel} that may be being showed, for example
+        // {@link MoreKeysKeyboardView}.
+        mMainKeyboardView.onDismissMoreKeysPanel();
+        // Dismiss all key previews and sliding key input preview that may be being showed.
+        mMainKeyboardView.dismissAllKeyPreviews();
+        mMainKeyboardView.dismissSlidingKeyInputPreview();
         final int stripWidth = getWidth();
         final View container = mMoreSuggestionsContainer;
         final int maxWidth = stripWidth - container.getPaddingLeft() - container.getPaddingRight();
         final MoreSuggestions.Builder builder = mMoreSuggestionsBuilder;
-        builder.layout(mSuggestedWords, layoutHelper.mSuggestionsCountInStrip, maxWidth,
+        builder.layout(mSuggestedWords, mSuggestionsCountInStrip, maxWidth,
                 (int)(maxWidth * layoutHelper.mMinMoreSuggestionsWidth),
                 layoutHelper.getMaxMoreSuggestionsRow(), parentKeyboard);
         mMoreSuggestionsView.setKeyboard(builder.build());
@@ -227,20 +360,16 @@
         final int pointY = -layoutHelper.mMoreSuggestionsBottomGap;
         moreKeysPanel.showMoreKeysPanel(this, mMoreSuggestionsController, pointX, pointY,
                 mMoreSuggestionsListener);
-        mMoreSuggestionsMode = MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING;
         mOriginX = mLastX;
         mOriginY = mLastY;
-        for (int i = 0; i < layoutHelper.mSuggestionsCountInStrip; i++) {
+        for (int i = 0; i < mSuggestionsCountInStrip; i++) {
             mWordViews.get(i).setPressed(false);
         }
         return true;
     }
 
-    // Working variables for onLongClick and dispatchTouchEvent.
-    private int mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_MODAL_MODE;
-    private static final int MORE_SUGGESTIONS_IN_MODAL_MODE = 0;
-    private static final int MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING = 1;
-    private static final int MORE_SUGGESTIONS_IN_SLIDING_MODE = 2;
+    // Working variables for {@link #onLongClick(View)} and
+    // {@link onInterceptTouchEvent(MotionEvent)}.
     private int mLastX;
     private int mLastY;
     private int mOriginX;
@@ -260,36 +389,45 @@
     };
 
     @Override
-    public boolean dispatchTouchEvent(final MotionEvent me) {
+    public boolean onInterceptTouchEvent(final MotionEvent me) {
         if (!mMoreSuggestionsView.isShowingInParent()) {
             mLastX = (int)me.getX();
             mLastY = (int)me.getY();
-            if (mMoreSuggestionsSlidingDetector.onTouchEvent(me)) {
-                return true;
-            }
-            return super.dispatchTouchEvent(me);
+            return mMoreSuggestionsSlidingDetector.onTouchEvent(me);
         }
 
         final int action = me.getAction();
         final int index = me.getActionIndex();
         final int x = (int)me.getX(index);
         final int y = (int)me.getY(index);
-
-        if (mMoreSuggestionsMode == MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING) {
-            if (Math.abs(x - mOriginX) >= mMoreSuggestionsModalTolerance
-                    || mOriginY - y >= mMoreSuggestionsModalTolerance) {
-                // Decided to be in the sliding input mode only when the touch point has been moved
-                // upward.
-                mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_SLIDING_MODE;
-            } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
-                // Decided to be in the modal input mode
-                mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_MODAL_MODE;
-                mMoreSuggestionsView.adjustVerticalCorrectionForModalMode();
-            }
+        if (Math.abs(x - mOriginX) >= mMoreSuggestionsModalTolerance
+                || mOriginY - y >= mMoreSuggestionsModalTolerance) {
+            // Decided to be in the sliding input mode only when the touch point has been moved
+            // upward. Further {@link MotionEvent}s will be delivered to
+            // {@link #onTouchEvent(MotionEvent)}.
             return true;
         }
 
-        // MORE_SUGGESTIONS_IN_SLIDING_MODE
+        if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
+            // Decided to be in the modal input mode.
+            mMoreSuggestionsView.adjustVerticalCorrectionForModalMode();
+        }
+        return false;
+    }
+
+    @Override
+    public boolean dispatchPopulateAccessibilityEvent(final AccessibilityEvent event) {
+        // Don't populate accessibility event with suggested words and voice key.
+        return true;
+    }
+
+    @Override
+    public boolean onTouchEvent(final MotionEvent me) {
+        // In the sliding input mode. {@link MotionEvent} should be forwarded to
+        // {@link MoreSuggestionsView}.
+        final int index = me.getActionIndex();
+        final int x = (int)me.getX(index);
+        final int y = (int)me.getY(index);
         me.setLocation(mMoreSuggestionsView.translateX(x), mMoreSuggestionsView.translateY(y));
         mMoreSuggestionsView.onTouchEvent(me);
         return true;
@@ -297,31 +435,52 @@
 
     @Override
     public void onClick(final View view) {
-        if (mLayoutHelper.isAddToDictionaryShowing(view)) {
-            mListener.addWordToUserDictionary(mLayoutHelper.getAddToDictionaryWord());
+        AudioAndHapticFeedbackManager.getInstance().performHapticAndAudioFeedback(
+                Constants.CODE_UNSPECIFIED, this);
+        if (view == mImportantNoticeStrip) {
+            mListener.showImportantNoticeContents();
+            return;
+        }
+        if (view == mVoiceKey) {
+            mListener.onCodeInput(Constants.CODE_SHORTCUT,
+                    Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE,
+                    false /* isKeyRepeat */);
+            return;
+        }
+        final Object tag = view.getTag();
+        // {@link String} tag is set at {@link #showAddToDictionaryHint(String,CharSequence)}.
+        if (tag instanceof String) {
+            final String wordToSave = (String)tag;
+            mListener.addWordToUserDictionary(wordToSave);
             clear();
             return;
         }
 
-        final Object tag = view.getTag();
-        // Integer tag is set at
+        // {@link Integer} tag is set at
         // {@link SuggestionStripLayoutHelper#setupWordViewsTextAndColor(SuggestedWords,int)} and
         // {@link SuggestionStripLayoutHelper#layoutPunctuationSuggestions(SuggestedWords,ViewGroup}
-        if (!(tag instanceof Integer)) {
-            return;
+        if (tag instanceof Integer) {
+            final int index = (Integer) tag;
+            if (index >= mSuggestedWords.size()) {
+                return;
+            }
+            final SuggestedWordInfo wordInfo = mSuggestedWords.getInfo(index);
+            mListener.pickSuggestionManually(wordInfo);
         }
-        final int index = (Integer) tag;
-        if (index >= mSuggestedWords.size()) {
-            return;
-        }
-
-        final SuggestedWordInfo wordInfo = mSuggestedWords.getInfo(index);
-        mListener.pickSuggestionManually(index, wordInfo);
     }
 
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
-        mMoreSuggestionsView.dismissMoreKeysPanel();
+        dismissMoreSuggestionsPanel();
+    }
+
+    @Override
+    protected void onSizeChanged(final int w, final int h, final int oldw, final int oldh) {
+        // Called by the framework when the size is known. Show the important notice if applicable.
+        // This may be overriden by showing suggestions later, if applicable.
+        if (oldw <= 0 && w > 0) {
+            maybeShowImportantNoticeTitle();
+        }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripViewAccessor.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripViewAccessor.java
new file mode 100644
index 0000000..5270845
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripViewAccessor.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.suggestions;
+
+import com.android.inputmethod.latin.SuggestedWords;
+
+/**
+ * An object that gives basic control of a suggestion strip and some info on it.
+ */
+public interface SuggestionStripViewAccessor {
+    public void showAddToDictionaryHint(final String word);
+    public boolean isShowingAddToDictionaryHint();
+    public void dismissAddToDictionaryHint();
+    public void setNeutralSuggestionStrip();
+    public void showSuggestionStrip(final SuggestedWords suggestedWords);
+}
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java
index 21426d1..eda8194 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordContents.java
@@ -167,7 +167,9 @@
         // should not insert, because either A. the word exists with no shortcut, in which
         // case the exact same thing we want to insert is already there, or B. the word
         // exists with at least one shortcut, in which case it has priority on our word.
-        if (hasWord(newWord, context)) return CODE_ALREADY_PRESENT;
+        if (TextUtils.isEmpty(newShortcut) && hasWord(newWord, context)) {
+            return CODE_ALREADY_PRESENT;
+        }
 
         // Disallow duplicates. If the same word with no shortcut is defined, remove it; if
         // the same word with the same shortcut is defined, remove it; but we don't mind if
@@ -256,7 +258,7 @@
         // The system locale should be inside. We want it at the 2nd spot.
         locales.remove(systemLocale); // system locale may not be null
         locales.remove(""); // Remove the empty string if it's there
-        final ArrayList<LocaleRenderer> localesList = new ArrayList<LocaleRenderer>();
+        final ArrayList<LocaleRenderer> localesList = new ArrayList<>();
         // Add the passed locale, then the system locale at the top of the list. Add an
         // "all languages" entry at the bottom of the list.
         addLocaleDisplayNameToList(activity, localesList, mLocale);
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java
index 4fc132f..1634430 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryAddWordFragment.java
@@ -134,8 +134,8 @@
 
         final Spinner localeSpinner =
                 (Spinner)mRootView.findViewById(R.id.user_dictionary_add_locale);
-        final ArrayAdapter<LocaleRenderer> adapter = new ArrayAdapter<LocaleRenderer>(getActivity(),
-                android.R.layout.simple_spinner_item, localesList);
+        final ArrayAdapter<LocaleRenderer> adapter = new ArrayAdapter<>(
+                getActivity(), android.R.layout.simple_spinner_item, localesList);
         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         localeSpinner.setAdapter(adapter);
         localeSpinner.setOnItemSelectedListener(this);
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
index 32c4950..624783a 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
@@ -53,20 +53,24 @@
     }
 
     public static TreeSet<String> getUserDictionaryLocalesSet(Activity activity) {
-        @SuppressWarnings("deprecation")
-        final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI,
+        final Cursor cursor = activity.getContentResolver().query(UserDictionary.Words.CONTENT_URI,
                 new String[] { UserDictionary.Words.LOCALE },
                 null, null, null);
-        final TreeSet<String> localeSet = new TreeSet<String>();
+        final TreeSet<String> localeSet = new TreeSet<>();
         if (null == cursor) {
             // The user dictionary service is not present or disabled. Return null.
             return null;
-        } else if (cursor.moveToFirst()) {
-            final int columnIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE);
-            do {
-                final String locale = cursor.getString(columnIndex);
-                localeSet.add(null != locale ? locale : "");
-            } while (cursor.moveToNext());
+        }
+        try {
+            if (cursor.moveToFirst()) {
+                final int columnIndex = cursor.getColumnIndex(UserDictionary.Words.LOCALE);
+                do {
+                    final String locale = cursor.getString(columnIndex);
+                    localeSet.add(null != locale ? locale : "");
+                } while (cursor.moveToNext());
+            }
+        } finally {
+            cursor.close();
         }
         if (!UserDictionarySettings.IS_SHORTCUT_API_SUPPORTED) {
             // For ICS, we need to show "For all languages" in case that the keyboard locale
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
index 7571e87..cf2014a 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
@@ -140,6 +140,11 @@
         }
 
         mLocale = locale;
+        // WARNING: The following cursor is never closed! TODO: don't put that in a member, and
+        // make sure all cursors are correctly closed. Also, this comes from a call to
+        // Activity#managedQuery, which has been deprecated for a long time (and which FORBIDS
+        // closing the cursor, so take care when resolving this TODO). We should either use a
+        // regular query and close the cursor, or switch to a LoaderManager and a CursorLoader.
         mCursor = createCursor(locale);
         TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
         emptyView.setText(R.string.user_dict_settings_empty_text);
diff --git a/java/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtils.java b/java/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtils.java
index d87f6f3..db7f2a5 100644
--- a/java/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtils.java
@@ -17,53 +17,73 @@
 package com.android.inputmethod.latin.utils;
 
 import static com.android.inputmethod.latin.Constants.Subtype.KEYBOARD_MODE;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.ASCII_CAPABLE;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.EMOJI_CAPABLE;
 import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.IS_ADDITIONAL_SUBTYPE;
 import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET;
 import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME;
 
 import android.os.Build;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.inputmethod.InputMethodSubtype;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
-import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 
 public final class AdditionalSubtypeUtils {
+    private static final String TAG = AdditionalSubtypeUtils.class.getSimpleName();
+
     private static final InputMethodSubtype[] EMPTY_SUBTYPE_ARRAY = new InputMethodSubtype[0];
 
     private AdditionalSubtypeUtils() {
         // This utility class is not publicly instantiable.
     }
 
+    @UsedForTesting
     public static boolean isAdditionalSubtype(final InputMethodSubtype subtype) {
         return subtype.containsExtraValueKey(IS_ADDITIONAL_SUBTYPE);
     }
 
     private static final String LOCALE_AND_LAYOUT_SEPARATOR = ":";
+    private static final int INDEX_OF_LOCALE = 0;
+    private static final int INDEX_OF_KEYBOARD_LAYOUT = 1;
+    private static final int INDEX_OF_EXTRA_VALUE = 2;
+    private static final int LENGTH_WITHOUT_EXTRA_VALUE = (INDEX_OF_KEYBOARD_LAYOUT + 1);
+    private static final int LENGTH_WITH_EXTRA_VALUE = (INDEX_OF_EXTRA_VALUE + 1);
     private static final String PREF_SUBTYPE_SEPARATOR = ";";
 
-    public static InputMethodSubtype createAdditionalSubtype(final String localeString,
-            final String keyboardLayoutSetName, final String extraValue) {
-        final String layoutExtraValue = KEYBOARD_LAYOUT_SET + "=" + keyboardLayoutSetName;
-        final String layoutDisplayNameExtraValue;
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
-                && SubtypeLocaleUtils.isExceptionalLocale(localeString)) {
-            final String layoutDisplayName = SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(
-                    keyboardLayoutSetName);
-            layoutDisplayNameExtraValue = StringUtils.appendToCommaSplittableTextIfNotExists(
-                    UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME + "=" + layoutDisplayName, extraValue);
-        } else {
-            layoutDisplayNameExtraValue = extraValue;
-        }
-        final String additionalSubtypeExtraValue =
-                StringUtils.appendToCommaSplittableTextIfNotExists(
-                        IS_ADDITIONAL_SUBTYPE, layoutDisplayNameExtraValue);
+    private static InputMethodSubtype createAdditionalSubtypeInternal(
+            final String localeString, final String keyboardLayoutSetName,
+            final boolean isAsciiCapable, final boolean isEmojiCapable) {
         final int nameId = SubtypeLocaleUtils.getSubtypeNameId(localeString, keyboardLayoutSetName);
-        return buildInputMethodSubtype(
-                nameId, localeString, layoutExtraValue, additionalSubtypeExtraValue);
+        final String platformVersionDependentExtraValues = getPlatformVersionDependentExtraValue(
+                localeString, keyboardLayoutSetName, isAsciiCapable, isEmojiCapable);
+        final int platformVersionIndependentSubtypeId =
+                getPlatformVersionIndependentSubtypeId(localeString, keyboardLayoutSetName);
+        // NOTE: In KitKat and later, InputMethodSubtypeBuilder#setIsAsciiCapable is also available.
+        // TODO: Use InputMethodSubtypeBuilder#setIsAsciiCapable when appropriate.
+        return InputMethodSubtypeCompatUtils.newInputMethodSubtype(nameId,
+                R.drawable.ic_ime_switcher_dark, localeString, KEYBOARD_MODE,
+                platformVersionDependentExtraValues,
+                false /* isAuxiliary */, false /* overrideImplicitlyEnabledSubtype */,
+                platformVersionIndependentSubtypeId);
+    }
+
+    public static InputMethodSubtype createDummyAdditionalSubtype(
+            final String localeString, final String keyboardLayoutSetName) {
+        return createAdditionalSubtypeInternal(localeString, keyboardLayoutSetName,
+                false /* isAsciiCapable */, false /* isEmojiCapable */);
+    }
+
+    public static InputMethodSubtype createAsciiEmojiCapableAdditionalSubtype(
+            final String localeString, final String keyboardLayoutSetName) {
+        return createAdditionalSubtypeInternal(localeString, keyboardLayoutSetName,
+                true /* isAsciiCapable */, true /* isEmojiCapable */);
     }
 
     public static String getPrefSubtype(final InputMethodSubtype subtype) {
@@ -79,26 +99,26 @@
                 : basePrefSubtype + LOCALE_AND_LAYOUT_SEPARATOR + extraValue;
     }
 
-    public static InputMethodSubtype createAdditionalSubtype(final String prefSubtype) {
-        final String elems[] = prefSubtype.split(LOCALE_AND_LAYOUT_SEPARATOR);
-        if (elems.length < 2 || elems.length > 3) {
-            throw new RuntimeException("Unknown additional subtype specified: " + prefSubtype);
-        }
-        final String localeString = elems[0];
-        final String keyboardLayoutSetName = elems[1];
-        final String extraValue = (elems.length == 3) ? elems[2] : null;
-        return createAdditionalSubtype(localeString, keyboardLayoutSetName, extraValue);
-    }
-
     public static InputMethodSubtype[] createAdditionalSubtypesArray(final String prefSubtypes) {
         if (TextUtils.isEmpty(prefSubtypes)) {
             return EMPTY_SUBTYPE_ARRAY;
         }
         final String[] prefSubtypeArray = prefSubtypes.split(PREF_SUBTYPE_SEPARATOR);
-        final ArrayList<InputMethodSubtype> subtypesList =
-                CollectionUtils.newArrayList(prefSubtypeArray.length);
+        final ArrayList<InputMethodSubtype> subtypesList = new ArrayList<>(prefSubtypeArray.length);
         for (final String prefSubtype : prefSubtypeArray) {
-            final InputMethodSubtype subtype = createAdditionalSubtype(prefSubtype);
+            final String elems[] = prefSubtype.split(LOCALE_AND_LAYOUT_SEPARATOR);
+            if (elems.length != LENGTH_WITHOUT_EXTRA_VALUE
+                    && elems.length != LENGTH_WITH_EXTRA_VALUE) {
+                Log.w(TAG, "Unknown additional subtype specified: " + prefSubtype + " in "
+                        + prefSubtypes);
+                continue;
+            }
+            final String localeString = elems[INDEX_OF_LOCALE];
+            final String keyboardLayoutSetName = elems[INDEX_OF_KEYBOARD_LAYOUT];
+            // Here we assume that all the additional subtypes have AsciiCapable and EmojiCapable.
+            // This is actually what the setting dialog for additional subtype is doing.
+            final InputMethodSubtype subtype = createAsciiEmojiCapableAdditionalSubtype(
+                    localeString, keyboardLayoutSetName);
             if (subtype.getNameResId() == SubtypeLocaleUtils.UNKNOWN_KEYBOARD_LAYOUT) {
                 // Skip unknown keyboard layout subtype. This may happen when predefined keyboard
                 // layout has been removed.
@@ -137,31 +157,81 @@
         return sb.toString();
     }
 
-    private static InputMethodSubtype buildInputMethodSubtype(int nameId, String localeString,
-            String layoutExtraValue, String additionalSubtypeExtraValue) {
-        // CAVEAT! If you want to change subtypeId after changing the extra values,
-        // you must change "getInputMethodSubtypeId". But it will remove the additional keyboard
-        // from the current users. So, you should be really careful to change it.
-        final int subtypeId = getInputMethodSubtypeId(nameId, localeString, layoutExtraValue,
-                additionalSubtypeExtraValue);
-        final String extraValue;
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
-            extraValue = layoutExtraValue + "," + additionalSubtypeExtraValue
-                    + "," + Constants.Subtype.ExtraValue.ASCII_CAPABLE
-                    + "," + Constants.Subtype.ExtraValue.EMOJI_CAPABLE;
-        } else {
-            extraValue = layoutExtraValue + "," + additionalSubtypeExtraValue;
+    /**
+     * Returns the extra value that is optimized for the running OS.
+     * <p>
+     * Historically the extra value has been used as the last resort to annotate various kinds of
+     * attributes. Some of these attributes are valid only on some platform versions. Thus we cannot
+     * assume that the extra values stored in a persistent storage are always valid. We need to
+     * regenerate the extra value on the fly instead.
+     * </p>
+     * @param localeString the locale string (e.g., "en_US").
+     * @param keyboardLayoutSetName the keyboard layout set name (e.g., "dvorak").
+     * @param isAsciiCapable true when ASCII characters are supported with this layout.
+     * @param isEmojiCapable true when Unicode Emoji characters are supported with this layout.
+     * @return extra value that is optimized for the running OS.
+     * @see #getPlatformVersionIndependentSubtypeId(String, String)
+     */
+    private static String getPlatformVersionDependentExtraValue(final String localeString,
+            final String keyboardLayoutSetName, final boolean isAsciiCapable,
+            final boolean isEmojiCapable) {
+        final ArrayList<String> extraValueItems = new ArrayList<>();
+        extraValueItems.add(KEYBOARD_LAYOUT_SET + "=" + keyboardLayoutSetName);
+        if (isAsciiCapable) {
+            extraValueItems.add(ASCII_CAPABLE);
         }
-        return InputMethodSubtypeCompatUtils.newInputMethodSubtype(nameId,
-                R.drawable.ic_ime_switcher_dark, localeString, KEYBOARD_MODE, extraValue,
-                false, false, subtypeId);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN &&
+                SubtypeLocaleUtils.isExceptionalLocale(localeString)) {
+            extraValueItems.add(UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME + "=" +
+                    SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(keyboardLayoutSetName));
+        }
+        if (isEmojiCapable && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            extraValueItems.add(EMOJI_CAPABLE);
+        }
+        extraValueItems.add(IS_ADDITIONAL_SUBTYPE);
+        return TextUtils.join(",", extraValueItems);
     }
 
-    private static int getInputMethodSubtypeId(int nameId, String localeString,
-            String layoutExtraValue, String additionalSubtypeExtraValue) {
-        // TODO: Use InputMethodSubtypeBuilder once we use SDK version 19.
-        return (new InputMethodSubtype(nameId, R.drawable.ic_ime_switcher_dark,
-                localeString, KEYBOARD_MODE, layoutExtraValue + "," + additionalSubtypeExtraValue,
-                        false, false)).hashCode();
+    /**
+     * Returns the subtype ID that is supposed to be compatible between different version of OSes.
+     * <p>
+     * From the compatibility point of view, it is important to keep subtype id predictable and
+     * stable between different OSes. For this purpose, the calculation code in this method is
+     * carefully chosen and then fixed. Treat the following code as no more or less than a
+     * hash function. Each component to be hashed can be different from the corresponding value
+     * that is used to instantiate {@link InputMethodSubtype} actually.
+     * For example, you don't need to update <code>compatibilityExtraValueItems</code> in this
+     * method even when we need to add some new extra values for the actual instance of
+     * {@link InputMethodSubtype}.
+     * </p>
+     * @param localeString the locale string (e.g., "en_US").
+     * @param keyboardLayoutSetName the keyboard layout set name (e.g., "dvorak").
+     * @return a platform-version independent subtype ID.
+     * @see #getPlatformVersionDependentExtraValue(String, String, boolean, boolean)
+     */
+    private static int getPlatformVersionIndependentSubtypeId(final String localeString,
+            final String keyboardLayoutSetName) {
+        // For compatibility reasons, we concatenate the extra values in the following order.
+        // - KeyboardLayoutSet
+        // - AsciiCapable
+        // - UntranslatableReplacementStringInSubtypeName
+        // - EmojiCapable
+        // - isAdditionalSubtype
+        final ArrayList<String> compatibilityExtraValueItems = new ArrayList<>();
+        compatibilityExtraValueItems.add(KEYBOARD_LAYOUT_SET + "=" + keyboardLayoutSetName);
+        compatibilityExtraValueItems.add(ASCII_CAPABLE);
+        if (SubtypeLocaleUtils.isExceptionalLocale(localeString)) {
+            compatibilityExtraValueItems.add(UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME + "=" +
+                    SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(keyboardLayoutSetName));
+        }
+        compatibilityExtraValueItems.add(EMOJI_CAPABLE);
+        compatibilityExtraValueItems.add(IS_ADDITIONAL_SUBTYPE);
+        final String compatibilityExtraValues = TextUtils.join(",", compatibilityExtraValueItems);
+        return Arrays.hashCode(new Object[] {
+                localeString,
+                KEYBOARD_MODE,
+                compatibilityExtraValues,
+                false /* isAuxiliary */,
+                false /* overrideImplicitlyEnabledSubtype */ });
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/ApplicationUtils.java b/java/src/com/android/inputmethod/latin/utils/ApplicationUtils.java
index 08a2a8c..7a4150d 100644
--- a/java/src/com/android/inputmethod/latin/utils/ApplicationUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ApplicationUtils.java
@@ -31,7 +31,7 @@
         // This utility class is not publicly instantiable.
     }
 
-    public static int getAcitivityTitleResId(final Context context,
+    public static int getActivityTitleResId(final Context context,
             final Class<? extends Activity> cls) {
         final ComponentName cn = new ComponentName(context, cls);
         try {
@@ -62,4 +62,22 @@
         }
         return "";
     }
+
+    /**
+     * A utility method to get the application's PackageInfo.versionCode
+     * @return the application's PackageInfo.versionCode
+     */
+    public static int getVersionCode(final Context context) {
+        try {
+            if (context == null) {
+                return 0;
+            }
+            final String packageName = context.getPackageName();
+            final PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0);
+            return info.versionCode;
+        } catch (final NameNotFoundException e) {
+            Log.e(TAG, "Could not find version info.", e);
+        }
+        return 0;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java b/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java
index c2e97a3..d12aad6 100644
--- a/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java
+++ b/java/src/com/android/inputmethod/latin/utils/AsyncResultHolder.java
@@ -20,7 +20,7 @@
 import java.util.concurrent.TimeUnit;
 
 /**
- * This class is a holder of a result of asynchronous computation.
+ * This class is a holder of the result of an asynchronous computation.
  *
  * @param <E> the type of the result.
  */
@@ -36,9 +36,9 @@
     }
 
     /**
-     * Sets the result value to this holder.
+     * Sets the result value of this holder.
      *
-     * @param result the value which is set.
+     * @param result the value to set.
      */
     public void set(final E result) {
         synchronized(mLock) {
@@ -54,12 +54,12 @@
      * Causes the current thread to wait unless the value is set or the specified time is elapsed.
      *
      * @param defaultValue the default value.
-     * @param timeOut the time to wait.
-     * @return if the result is set until the time limit then the result, otherwise defaultValue.
+     * @param timeOut the maximum time to wait.
+     * @return if the result is set before the time limit then the result, otherwise defaultValue.
      */
     public E get(final E defaultValue, final long timeOut) {
         try {
-            if(mLatch.await(timeOut, TimeUnit.MILLISECONDS)) {
+            if (mLatch.await(timeOut, TimeUnit.MILLISECONDS)) {
                 return mResult;
             } else {
                 return defaultValue;
diff --git a/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java b/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java
index 066c5fd..156fcf5 100644
--- a/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/AutoCorrectionUtils.java
@@ -16,19 +16,13 @@
 
 package com.android.inputmethod.latin.utils;
 
-import com.android.inputmethod.latin.BinaryDictionary;
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.Suggest;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
-import android.text.TextUtils;
 import android.util.Log;
 
-import java.util.concurrent.ConcurrentHashMap;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.define.DebugFlags;
 
 public final class AutoCorrectionUtils {
-    private static final boolean DBG = LatinImeLogger.sDBG;
+    private static final boolean DBG = DebugFlags.DEBUG_ENABLED;
     private static final String TAG = AutoCorrectionUtils.class.getSimpleName();
     private static final int MINIMUM_SAFETY_NET_CHAR_LENGTH = 4;
 
@@ -36,58 +30,18 @@
         // Purely static class: can't instantiate.
     }
 
-    public static boolean isValidWord(final Suggest suggest, final String word,
-            final boolean ignoreCase) {
-        if (TextUtils.isEmpty(word)) {
-            return false;
-        }
-        final ConcurrentHashMap<String, Dictionary> dictionaries = suggest.getUnigramDictionaries();
-        final String lowerCasedWord = word.toLowerCase(suggest.mLocale);
-        for (final String key : dictionaries.keySet()) {
-            final Dictionary dictionary = dictionaries.get(key);
-            // It's unclear how realistically 'dictionary' can be null, but the monkey is somehow
-            // managing to get null in here. Presumably the language is changing to a language with
-            // no main dictionary and the monkey manages to type a whole word before the thread
-            // that reads the dictionary is started or something?
-            // Ideally the passed map would come out of a {@link java.util.concurrent.Future} and
-            // would be immutable once it's finished initializing, but concretely a null test is
-            // probably good enough for the time being.
-            if (null == dictionary) continue;
-            if (dictionary.isValidWord(word)
-                    || (ignoreCase && dictionary.isValidWord(lowerCasedWord))) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static int getMaxFrequency(final ConcurrentHashMap<String, Dictionary> dictionaries,
-            final String word) {
-        if (TextUtils.isEmpty(word)) {
-            return Dictionary.NOT_A_PROBABILITY;
-        }
-        int maxFreq = -1;
-        for (final String key : dictionaries.keySet()) {
-            final Dictionary dictionary = dictionaries.get(key);
-            if (null == dictionary) continue;
-            final int tempFreq = dictionary.getFrequency(word);
-            if (tempFreq >= maxFreq) {
-                maxFreq = tempFreq;
-            }
-        }
-        return maxFreq;
-    }
-
     public static boolean suggestionExceedsAutoCorrectionThreshold(
             final SuggestedWordInfo suggestion, final String consideredWord,
             final float autoCorrectionThreshold) {
         if (null != suggestion) {
             // Shortlist a whitelisted word
-            if (suggestion.mKind == SuggestedWordInfo.KIND_WHITELIST) return true;
+            if (suggestion.isKindOf(SuggestedWordInfo.KIND_WHITELIST)) {
+                return true;
+            }
             final int autoCorrectionSuggestionScore = suggestion.mScore;
             // TODO: when the normalized score of the first suggestion is nearly equals to
             //       the normalized score of the second suggestion, behave less aggressive.
-            final float normalizedScore = BinaryDictionary.calcNormalizedScore(
+            final float normalizedScore = BinaryDictionaryUtils.calcNormalizedScore(
                     consideredWord, suggestion.mWord, autoCorrectionSuggestionScore);
             if (DBG) {
                 Log.d(TAG, "Normalized " + consideredWord + "," + suggestion + ","
@@ -118,9 +72,8 @@
         if (typedWordLength < MINIMUM_SAFETY_NET_CHAR_LENGTH) {
             return false;
         }
-        final int maxEditDistanceOfNativeDictionary =
-                (typedWordLength < 5 ? 2 : typedWordLength / 2) + 1;
-        final int distance = BinaryDictionary.editDistance(typedWord, suggestion);
+        final int maxEditDistanceOfNativeDictionary = (typedWordLength / 2) + 1;
+        final int distance = BinaryDictionaryUtils.editDistance(typedWord, suggestion);
         if (DBG) {
             Log.d(TAG, "Autocorrected edit distance = " + distance
                     + ", " + maxEditDistanceOfNativeDictionary);
diff --git a/java/src/com/android/inputmethod/latin/utils/Base64Reader.java b/java/src/com/android/inputmethod/latin/utils/Base64Reader.java
deleted file mode 100644
index 3eca6e7..0000000
--- a/java/src/com/android/inputmethod/latin/utils/Base64Reader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.LineNumberReader;
-
-@UsedForTesting
-public class Base64Reader {
-    private final LineNumberReader mReader;
-
-    private String mLine;
-    private int mCharPos;
-    private int mByteCount;
-
-    @UsedForTesting
-    public Base64Reader(final LineNumberReader reader) {
-        mReader = reader;
-        reset();
-    }
-
-    @UsedForTesting
-    public void reset() {
-        mLine = null;
-        mCharPos = 0;
-        mByteCount = 0;
-    }
-
-    @UsedForTesting
-    public int getLineNumber() {
-        return mReader.getLineNumber();
-    }
-
-    @UsedForTesting
-    public int getByteCount() {
-        return mByteCount;
-    }
-
-    private void fillBuffer() throws IOException {
-        if (mLine == null || mCharPos >= mLine.length()) {
-            mLine = mReader.readLine();
-            mCharPos = 0;
-        }
-        if (mLine == null) {
-            throw new EOFException();
-        }
-    }
-
-    private int peekUint8() throws IOException {
-        fillBuffer();
-        final char c = mLine.charAt(mCharPos);
-        if (c >= 'A' && c <= 'Z')
-            return c - 'A' + 0;
-        if (c >= 'a' && c <= 'z')
-            return c - 'a' + 26;
-        if (c >= '0' && c <= '9')
-            return c - '0' + 52;
-        if (c == '+')
-            return 62;
-        if (c == '/')
-            return 63;
-        if (c == '=')
-            return 0;
-        throw new RuntimeException("Unknown character '" + c + "' in base64 at line "
-                + mReader.getLineNumber());
-    }
-
-    private int getUint8() throws IOException {
-        final int value = peekUint8();
-        mCharPos++;
-        return value;
-    }
-
-    @UsedForTesting
-    public int readUint8() throws IOException {
-        final int value1, value2;
-        switch (mByteCount % 3) {
-        case 0:
-            value1 = getUint8() << 2;
-            value2 = value1 | (peekUint8() >> 4);
-            break;
-        case 1:
-            value1 = (getUint8() & 0x0f) << 4;
-            value2 = value1 | (peekUint8() >> 2);
-            break;
-        default:
-            value1 = (getUint8() & 0x03) << 6;
-            value2 = value1 | getUint8();
-            break;
-        }
-        mByteCount++;
-        return value2;
-    }
-
-    @UsedForTesting
-    public short readInt16() throws IOException {
-        final int data = readUint8() << 8;
-        return (short)(data | readUint8());
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtils.java b/java/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtils.java
new file mode 100644
index 0000000..5d7deba
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtils.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+import com.android.inputmethod.latin.personalization.PersonalizationHelper;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public final class BinaryDictionaryUtils {
+    private static final String TAG = BinaryDictionaryUtils.class.getSimpleName();
+
+    private BinaryDictionaryUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    static {
+        JniUtils.loadNativeLibrary();
+    }
+
+    private static native boolean createEmptyDictFileNative(String filePath, long dictVersion,
+            String locale, String[] attributeKeyStringArray, String[] attributeValueStringArray);
+    private static native float calcNormalizedScoreNative(int[] before, int[] after, int score);
+    private static native int editDistanceNative(int[] before, int[] after);
+    private static native int setCurrentTimeForTestNative(int currentTime);
+
+    public static DictionaryHeader getHeader(final File dictFile)
+            throws IOException, UnsupportedFormatException {
+        return getHeaderWithOffsetAndLength(dictFile, 0 /* offset */, dictFile.length());
+    }
+
+    public static DictionaryHeader getHeaderWithOffsetAndLength(final File dictFile,
+            final long offset, final long length) throws IOException, UnsupportedFormatException {
+        // dictType is never used for reading the header. Passing an empty string.
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(
+                dictFile.getAbsolutePath(), offset, length,
+                true /* useFullEditDistance */, null /* locale */, "" /* dictType */,
+                false /* isUpdatable */);
+        final DictionaryHeader header = binaryDictionary.getHeader();
+        binaryDictionary.close();
+        if (header == null) {
+            throw new IOException();
+        }
+        return header;
+    }
+
+    public static boolean renameDict(final File dictFile, final File newDictFile) {
+        if (dictFile.isFile()) {
+            return dictFile.renameTo(newDictFile);
+        } else if (dictFile.isDirectory()) {
+            final String dictName = dictFile.getName();
+            final String newDictName = newDictFile.getName();
+            if (newDictFile.exists()) {
+                return false;
+            }
+            for (final File file : dictFile.listFiles()) {
+                if (!file.isFile()) {
+                    continue;
+                }
+                final String fileName = file.getName();
+                final String newFileName = fileName.replaceFirst(
+                        Pattern.quote(dictName), Matcher.quoteReplacement(newDictName));
+                if (!file.renameTo(new File(dictFile, newFileName))) {
+                    return false;
+                }
+            }
+            return dictFile.renameTo(newDictFile);
+        }
+        return false;
+    }
+
+    @UsedForTesting
+    public static boolean createEmptyDictFile(final String filePath, final long dictVersion,
+            final Locale locale, final Map<String, String> attributeMap) {
+        final String[] keyArray = new String[attributeMap.size()];
+        final String[] valueArray = new String[attributeMap.size()];
+        int index = 0;
+        for (final String key : attributeMap.keySet()) {
+            keyArray[index] = key;
+            valueArray[index] = attributeMap.get(key);
+            index++;
+        }
+        return createEmptyDictFileNative(filePath, dictVersion, locale.toString(), keyArray,
+                valueArray);
+    }
+
+    public static float calcNormalizedScore(final String before, final String after,
+            final int score) {
+        return calcNormalizedScoreNative(StringUtils.toCodePointArray(before),
+                StringUtils.toCodePointArray(after), score);
+    }
+
+    public static int editDistance(final String before, final String after) {
+        if (before == null || after == null) {
+            throw new IllegalArgumentException();
+        }
+        return editDistanceNative(StringUtils.toCodePointArray(before),
+                StringUtils.toCodePointArray(after));
+    }
+
+    /**
+     * Control the current time to be used in the native code. If currentTime >= 0, this method sets
+     * the current time and gets into test mode.
+     * In test mode, set timestamp is used as the current time in the native code.
+     * If currentTime < 0, quit the test mode and returns to using time() to get the current time.
+     *
+     * @param currentTime seconds since the unix epoch
+     * @return current time got in the native code.
+     */
+    @UsedForTesting
+    public static int setCurrentTimeForTest(final int currentTime) {
+        final int currentNativeTimestamp = setCurrentTimeForTestNative(currentTime);
+        PersonalizationHelper.currentTimeChangedForTesting(currentNativeTimestamp);
+        return currentNativeTimestamp;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/BoundedTreeSet.java b/java/src/com/android/inputmethod/latin/utils/BoundedTreeSet.java
deleted file mode 100644
index ae1fd3f..0000000
--- a/java/src/com/android/inputmethod/latin/utils/BoundedTreeSet.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.utils;
-
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.TreeSet;
-
-/**
- * A TreeSet that is bounded in size and throws everything that's smaller than its limit
- */
-public final class BoundedTreeSet extends TreeSet<SuggestedWordInfo> {
-    private final int mCapacity;
-    public BoundedTreeSet(final Comparator<SuggestedWordInfo> comparator, final int capacity) {
-        super(comparator);
-        mCapacity = capacity;
-    }
-
-    @Override
-    public boolean add(final SuggestedWordInfo e) {
-        if (size() < mCapacity) return super.add(e);
-        if (comparator().compare(e, last()) > 0) return false;
-        super.add(e);
-        pollLast(); // removes the last element
-        return true;
-    }
-
-    @Override
-    public boolean addAll(final Collection<? extends SuggestedWordInfo> e) {
-        if (null == e) return false;
-        return super.addAll(e);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java b/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java
index 3d4404a..9362193 100644
--- a/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CapsModeUtils.java
@@ -21,7 +21,7 @@
 
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.WordComposer;
-import com.android.inputmethod.latin.settings.SettingsValues;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
 
 import java.util.Locale;
 
@@ -62,6 +62,22 @@
     }
 
     /**
+     * Helper method to find out if a code point is starting punctuation.
+     *
+     * This include the Unicode START_PUNCTUATION category, but also some other symbols that are
+     * starting, like the inverted question mark or the double quote.
+     *
+     * @param codePoint the code point
+     * @return true if it's starting punctuation, false otherwise.
+     */
+    private static boolean isStartPunctuation(final int codePoint) {
+        return (codePoint == Constants.CODE_DOUBLE_QUOTE || codePoint == Constants.CODE_SINGLE_QUOTE
+                || codePoint == Constants.CODE_INVERTED_QUESTION_MARK
+                || codePoint == Constants.CODE_INVERTED_EXCLAMATION_MARK
+                || Character.getType(codePoint) == Character.START_PUNCTUATION);
+    }
+
+    /**
      * Determine what caps mode should be in effect at the current offset in
      * the text. Only the mode bits set in <var>reqModes</var> will be
      * checked. Note that the caps mode flags here are explicitly defined
@@ -74,7 +90,7 @@
      * @param reqModes The modes to be checked: may be any combination of
      * {@link TextUtils#CAP_MODE_CHARACTERS}, {@link TextUtils#CAP_MODE_WORDS}, and
      * {@link TextUtils#CAP_MODE_SENTENCES}.
-     * @param settingsValues The current settings values.
+     * @param spacingAndPunctuations The current spacing and punctuations settings.
      * @param hasSpaceBefore Whether we should consider there is a space inserted at the end of cs
      *
      * @return Returns the actual capitalization modes that can be in effect
@@ -83,7 +99,7 @@
      * {@link TextUtils#CAP_MODE_SENTENCES}.
      */
     public static int getCapsMode(final CharSequence cs, final int reqModes,
-            final SettingsValues settingsValues, final boolean hasSpaceBefore) {
+            final SpacingAndPunctuations spacingAndPunctuations, final boolean hasSpaceBefore) {
         // Quick description of what we want to do:
         // CAP_MODE_CHARACTERS is always on.
         // CAP_MODE_WORDS is on if there is some whitespace before the cursor.
@@ -115,8 +131,7 @@
         } else {
             for (i = cs.length(); i > 0; i--) {
                 final char c = cs.charAt(i - 1);
-                if (c != Constants.CODE_DOUBLE_QUOTE && c != Constants.CODE_SINGLE_QUOTE
-                        && Character.getType(c) != Character.START_PUNCTUATION) {
+                if (!isStartPunctuation(c)) {
                     break;
                 }
             }
@@ -139,6 +154,20 @@
             j--;
         }
         if (j <= 0 || Character.isWhitespace(prevChar)) {
+            if (spacingAndPunctuations.mUsesGermanRules) {
+                // In German typography rules, there is a specific case that the first character
+                // of a new line should not be capitalized if the previous line ends in a comma.
+                boolean hasNewLine = false;
+                while (--j >= 0 && Character.isWhitespace(prevChar)) {
+                    if (Constants.CODE_ENTER == prevChar) {
+                        hasNewLine = true;
+                    }
+                    prevChar = cs.charAt(j);
+                }
+                if (Constants.CODE_COMMA == prevChar && hasNewLine) {
+                    return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS) & reqModes;
+                }
+            }
             // There are only spacing chars between the start of the paragraph and the cursor,
             // defined as a isWhitespace() char that is neither a isSpaceChar() nor a tab. Both
             // MODE_WORDS and MODE_SENTENCES should be active.
@@ -167,8 +196,7 @@
         // No other language has such a rule as far as I know, instead putting inside the quotation
         // mark as the exact thing quoted and handling the surrounding punctuation independently,
         // e.g. <<Did he say, "let's go home"?>>
-        // Hence, specifically for English, we treat this special case here.
-        if (Locale.ENGLISH.getLanguage().equals(settingsValues.mLocale.getLanguage())) {
+        if (spacingAndPunctuations.mUsesAmericanTypography) {
             for (; j > 0; j--) {
                 // Here we look to go over any closing punctuation. This is because in dominant
                 // variants of English, the final period is placed within double quotes and maybe
@@ -191,17 +219,20 @@
         if (c == Constants.CODE_QUESTION_MARK || c == Constants.CODE_EXCLAMATION_MARK) {
             return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_SENTENCES) & reqModes;
         }
-        if (settingsValues.mSentenceSeparator != c || j <= 0) {
+        if (!spacingAndPunctuations.isSentenceSeparator(c) || j <= 0) {
             return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS) & reqModes;
         }
 
         // We found out that we have a period. We need to determine if this is a full stop or
         // otherwise sentence-ending period, or an abbreviation like "e.g.". An abbreviation
-        // looks like (\w\.){2,}
+        // looks like (\w\.){2,}. Moreover, in German, you put periods after digits for dates
+        // and some other things, and in German specifically we need to not go into autocaps after
+        // a whitespace-digits-period sequence.
         // To find out, we will have a simple state machine with the following states :
-        // START, WORD, PERIOD, ABBREVIATION
+        // START, WORD, PERIOD, ABBREVIATION, NUMBER
         // On START : (just before the first period)
         //           letter => WORD
+        //           digit => NUMBER if German; end with caps otherwise
         //           whitespace => end with no caps (it was a stand-alone period)
         //           otherwise => end with caps (several periods/symbols in a row)
         // On WORD : (within the word just before the first period)
@@ -215,6 +246,11 @@
         //           letter => LETTER
         //           period => PERIOD
         //           otherwise => end with no caps (it was an abbreviation)
+        // On NUMBER : (period immediately preceded by one or more digits)
+        //           digit => NUMBER
+        //           letter => LETTER (promote to word)
+        //           otherwise => end with no caps (it was a whitespace-digits-period sequence,
+        //            or a punctuation-digits-period sequence like "11.11.")
         // "Not an abbreviation" in the above chart essentially covers cases like "...yes.". This
         // should capitalize.
 
@@ -222,6 +258,7 @@
         final int WORD = 1;
         final int PERIOD = 2;
         final int LETTER = 3;
+        final int NUMBER = 4;
         final int caps = (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS
                 | TextUtils.CAP_MODE_SENTENCES) & reqModes;
         final int noCaps = (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS) & reqModes;
@@ -234,6 +271,8 @@
                     state = WORD;
                 } else if (Character.isWhitespace(c)) {
                     return noCaps;
+                } else if (Character.isDigit(c) && spacingAndPunctuations.mUsesGermanRules) {
+                    state = NUMBER;
                 } else {
                     return caps;
                 }
@@ -241,7 +280,7 @@
             case WORD:
                 if (Character.isLetter(c)) {
                     state = WORD;
-                } else if (settingsValues.mSentenceSeparator == c) {
+                } else if (spacingAndPunctuations.isSentenceSeparator(c)) {
                     state = PERIOD;
                 } else {
                     return caps;
@@ -257,11 +296,20 @@
             case LETTER:
                 if (Character.isLetter(c)) {
                     state = LETTER;
-                } else if (settingsValues.mSentenceSeparator == c) {
+                } else if (spacingAndPunctuations.isSentenceSeparator(c)) {
                     state = PERIOD;
                 } else {
                     return noCaps;
                 }
+                break;
+            case NUMBER:
+                if (Character.isLetter(c)) {
+                    state = WORD;
+                } else if (Character.isDigit(c)) {
+                    state = NUMBER;
+                } else {
+                    return noCaps;
+                }
             }
         }
         // Here we arrived at the start of the line. This should behave exactly like whitespace.
diff --git a/java/src/com/android/inputmethod/latin/utils/CollectionUtils.java b/java/src/com/android/inputmethod/latin/utils/CollectionUtils.java
index cc25102..61292fc 100644
--- a/java/src/com/android/inputmethod/latin/utils/CollectionUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CollectionUtils.java
@@ -16,90 +16,28 @@
 
 package com.android.inputmethod.latin.utils;
 
-import android.util.SparseArray;
-
-import java.util.ArrayDeque;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
 import java.util.Map;
 import java.util.TreeMap;
-import java.util.TreeSet;
-import java.util.WeakHashMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 
 public final class CollectionUtils {
     private CollectionUtils() {
         // This utility class is not publicly instantiable.
     }
 
-    public static <K,V> HashMap<K,V> newHashMap() {
-        return new HashMap<K,V>();
-    }
+    public static <E> ArrayList<E> arrayAsList(final E[] array, final int start, final int end) {
+        if (array == null) {
+            throw new NullPointerException();
+        }
+        if (start < 0 || start > end || end > array.length) {
+            throw new IllegalArgumentException();
+        }
 
-    public static <K, V> WeakHashMap<K, V> newWeakHashMap() {
-        return new WeakHashMap<K, V>();
-    }
-
-    public static <K,V> TreeMap<K,V> newTreeMap() {
-        return new TreeMap<K,V>();
-    }
-
-    public static <K, V> Map<K,V> newSynchronizedTreeMap() {
-        final TreeMap<K,V> treeMap = newTreeMap();
-        return Collections.synchronizedMap(treeMap);
-    }
-
-    public static <K,V> ConcurrentHashMap<K,V> newConcurrentHashMap() {
-        return new ConcurrentHashMap<K,V>();
-    }
-
-    public static <E> HashSet<E> newHashSet() {
-        return new HashSet<E>();
-    }
-
-    public static <E> TreeSet<E> newTreeSet() {
-        return new TreeSet<E>();
-    }
-
-    public static <E> ArrayList<E> newArrayList() {
-        return new ArrayList<E>();
-    }
-
-    public static <E> ArrayList<E> newArrayList(final int initialCapacity) {
-        return new ArrayList<E>(initialCapacity);
-    }
-
-    public static <E> ArrayList<E> newArrayList(final Collection<E> collection) {
-        return new ArrayList<E>(collection);
-    }
-
-    public static <E> LinkedList<E> newLinkedList() {
-        return new LinkedList<E>();
-    }
-
-    public static <E> CopyOnWriteArrayList<E> newCopyOnWriteArrayList() {
-        return new CopyOnWriteArrayList<E>();
-    }
-
-    public static <E> CopyOnWriteArrayList<E> newCopyOnWriteArrayList(
-            final Collection<E> collection) {
-        return new CopyOnWriteArrayList<E>(collection);
-    }
-
-    public static <E> CopyOnWriteArrayList<E> newCopyOnWriteArrayList(final E[] array) {
-        return new CopyOnWriteArrayList<E>(array);
-    }
-
-    public static <E> ArrayDeque<E> newArrayDeque() {
-        return new ArrayDeque<E>();
-    }
-
-    public static <E> SparseArray<E> newSparseArray() {
-        return new SparseArray<E>();
+        final ArrayList<E> list = new ArrayList<>(end - start);
+        for (int i = start; i < end; i++) {
+            list.add(array[i]);
+        }
+        return list;
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java b/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
new file mode 100644
index 0000000..34f59e8
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/CombinedFormatUtils.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.makedict.ProbabilityInfo;
+import com.android.inputmethod.latin.makedict.WeightedString;
+import com.android.inputmethod.latin.makedict.WordProperty;
+
+import java.util.HashMap;
+
+public class CombinedFormatUtils {
+    public static final String DICTIONARY_TAG = "dictionary";
+    public static final String BIGRAM_TAG = "bigram";
+    public static final String SHORTCUT_TAG = "shortcut";
+    public static final String PROBABILITY_TAG = "f";
+    public static final String HISTORICAL_INFO_TAG = "historicalInfo";
+    public static final String HISTORICAL_INFO_SEPARATOR = ":";
+    public static final String WORD_TAG = "word";
+    public static final String BEGINNING_OF_SENTENCE_TAG = "beginning_of_sentence";
+    public static final String NOT_A_WORD_TAG = "not_a_word";
+    public static final String BLACKLISTED_TAG = "blacklisted";
+
+    public static String formatAttributeMap(final HashMap<String, String> attributeMap) {
+        final StringBuilder builder = new StringBuilder();
+        builder.append(DICTIONARY_TAG + "=");
+        if (attributeMap.containsKey(DictionaryHeader.DICTIONARY_ID_KEY)) {
+            builder.append(attributeMap.get(DictionaryHeader.DICTIONARY_ID_KEY));
+        }
+        for (final String key : attributeMap.keySet()) {
+            if (key.equals(DictionaryHeader.DICTIONARY_ID_KEY)) {
+                continue;
+            }
+            final String value = attributeMap.get(key);
+            builder.append("," + key + "=" + value);
+        }
+        builder.append("\n");
+        return builder.toString();
+    }
+
+    public static String formatWordProperty(final WordProperty wordProperty) {
+        final StringBuilder builder = new StringBuilder();
+        builder.append(" " + WORD_TAG + "=" + wordProperty.mWord);
+        builder.append(",");
+        builder.append(formatProbabilityInfo(wordProperty.mProbabilityInfo));
+        if (wordProperty.mIsBeginningOfSentence) {
+            builder.append("," + BEGINNING_OF_SENTENCE_TAG + "=true");
+        }
+        if (wordProperty.mIsNotAWord) {
+            builder.append("," + NOT_A_WORD_TAG + "=true");
+        }
+        if (wordProperty.mIsBlacklistEntry) {
+            builder.append("," + BLACKLISTED_TAG + "=true");
+        }
+        builder.append("\n");
+        if (wordProperty.mShortcutTargets != null) {
+            for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                builder.append("  " + SHORTCUT_TAG + "=" + shortcutTarget.mWord);
+                builder.append(",");
+                builder.append(formatProbabilityInfo(shortcutTarget.mProbabilityInfo));
+                builder.append("\n");
+            }
+        }
+        if (wordProperty.mBigrams != null) {
+            for (final WeightedString bigram : wordProperty.mBigrams) {
+                builder.append("  " + BIGRAM_TAG + "=" + bigram.mWord);
+                builder.append(",");
+                builder.append(formatProbabilityInfo(bigram.mProbabilityInfo));
+                builder.append("\n");
+            }
+        }
+        return builder.toString();
+    }
+
+    public static String formatProbabilityInfo(final ProbabilityInfo probabilityInfo) {
+        final StringBuilder builder = new StringBuilder();
+        builder.append(PROBABILITY_TAG + "=" + probabilityInfo.mProbability);
+        if (probabilityInfo.hasHistoricalInfo()) {
+            builder.append(",");
+            builder.append(HISTORICAL_INFO_TAG + "=");
+            builder.append(probabilityInfo.mTimestamp);
+            builder.append(HISTORICAL_INFO_SEPARATOR);
+            builder.append(probabilityInfo.mLevel);
+            builder.append(HISTORICAL_INFO_SEPARATOR);
+            builder.append(probabilityInfo.mCount);
+        }
+        return builder.toString();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/CoordinateUtils.java b/java/src/com/android/inputmethod/latin/utils/CoordinateUtils.java
index 72f2cd2..87df013 100644
--- a/java/src/com/android/inputmethod/latin/utils/CoordinateUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/CoordinateUtils.java
@@ -16,17 +16,19 @@
 
 package com.android.inputmethod.latin.utils;
 
+import java.util.Arrays;
+
 public final class CoordinateUtils {
     private static final int INDEX_X = 0;
     private static final int INDEX_Y = 1;
-    private static final int ARRAY_SIZE = INDEX_Y + 1;
+    private static final int ELEMENT_SIZE = INDEX_Y + 1;
 
     private CoordinateUtils() {
         // This utility class is not publicly instantiable.
     }
 
     public static int[] newInstance() {
-        return new int[ARRAY_SIZE];
+        return new int[ELEMENT_SIZE];
     }
 
     public static int x(final int[] coords) {
@@ -46,4 +48,44 @@
         destination[INDEX_X] = source[INDEX_X];
         destination[INDEX_Y] = source[INDEX_Y];
     }
+
+    public static int[] newCoordinateArray(final int arraySize) {
+        return new int[ELEMENT_SIZE * arraySize];
+    }
+
+    public static int[] newCoordinateArray(final int arraySize,
+            final int defaultX, final int defaultY) {
+        final int[] result = new int[ELEMENT_SIZE * arraySize];
+        for (int i = 0; i < arraySize; ++i) {
+            setXYInArray(result, i, defaultX, defaultY);
+        }
+        return result;
+    }
+
+    public static int xFromArray(final int[] coordsArray, final int index) {
+        return coordsArray[ELEMENT_SIZE * index + INDEX_X];
+    }
+
+    public static int yFromArray(final int[] coordsArray, final int index) {
+        return coordsArray[ELEMENT_SIZE * index + INDEX_Y];
+    }
+
+    public static int[] coordinateFromArray(final int[] coordsArray, final int index) {
+        final int baseIndex = ELEMENT_SIZE * index;
+        return Arrays.copyOfRange(coordsArray, baseIndex, baseIndex + ELEMENT_SIZE);
+    }
+
+    public static void setXYInArray(final int[] coordsArray, final int index,
+            final int x, final int y) {
+        final int baseIndex = ELEMENT_SIZE * index;
+        coordsArray[baseIndex + INDEX_X] = x;
+        coordsArray[baseIndex + INDEX_Y] = y;
+    }
+
+    public static void setCoordinateInArray(final int[] coordsArray, final int index,
+            final int[] coords) {
+        final int baseIndex = ELEMENT_SIZE * index;
+        coordsArray[baseIndex + INDEX_X] = coords[INDEX_X];
+        coordsArray[baseIndex + INDEX_Y] = coords[INDEX_Y];
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/CsvUtils.java b/java/src/com/android/inputmethod/latin/utils/CsvUtils.java
deleted file mode 100644
index 36b927e..0000000
--- a/java/src/com/android/inputmethod/latin/utils/CsvUtils.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-
-import java.util.ArrayList;
-
-/**
- * Utility methods for parsing and serializing Comma-Separated Values. The public APIs of this
- * utility class are {@link #split(String)}, {@link #split(int,String)}, {@link #join(String...)},
- * {@link #join(int,String...)}, and {@link #join(int,int[],String...)}.
- *
- * This class implements CSV parsing and serializing methods conforming to RFC 4180 with an
- * exception:
- *  These methods can't handle new line code escaped in double quotes.
- */
-@UsedForTesting
-public final class CsvUtils {
-    private CsvUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    public static final int SPLIT_FLAGS_NONE = 0x0;
-    /**
-     * A flag for {@link #split(int,String)}. If this flag is specified, the method will trim
-     * spaces around fields before splitting. Note that this behavior doesn't conform to RFC 4180.
-     */
-    public static final int SPLIT_FLAGS_TRIM_SPACES  = 0x1;
-
-    public static final int JOIN_FLAGS_NONE = 0x0;
-    /**
-     * A flag for {@link #join(int,String...)} and {@link #join(int,int[],String...)}. If this
-     * flag is specified, these methods surround each field with double quotes before joining.
-     */
-    public static final int JOIN_FLAGS_ALWAYS_QUOTED = 0x1;
-    /**
-     * A flag for {@link #join(int,String...)} and {@link #join(int,int[],String...)}. If this
-     * flag is specified, these methods add an extra space just after the comma separator. Note that
-     * this behavior doesn't conform to RFC 4180.
-     */
-    public static final int JOIN_FLAGS_EXTRA_SPACE   = 0x2;
-
-    // Note that none of these characters match high or low surrogate characters, so we need not
-    // take care of matching by code point.
-    private static final char COMMA = ',';
-    private static final char SPACE = ' ';
-    private static final char QUOTE = '"';
-
-    @SuppressWarnings("serial")
-    public static class CsvParseException extends RuntimeException {
-        public CsvParseException(final String message) {
-            super(message);
-        }
-    }
-
-    /**
-     * Find the first non-space character in the text.
-     *
-     * @param text the text to be searched.
-     * @param fromIndex the index to start the search from, inclusive.
-     * @return the index of the first occurrence of the non-space character in the
-     * <code>text</code> that is greater than or equal to <code>fromIndex</code>, or the length of
-     * the <code>text</code> if the character does not occur.
-     */
-    private static int indexOfNonSpace(final String text, final int fromIndex) {
-        final int length = text.length();
-        if (fromIndex < 0 || fromIndex > length) {
-            throw new IllegalArgumentException("text=" + text + " fromIndex=" + fromIndex);
-        }
-        int index = fromIndex;
-        while (index < length && text.charAt(index) == SPACE) {
-            index++;
-        }
-        return index;
-    }
-
-    /**
-     * Find the last non-space character in the text.
-     *
-     * @param text the text to be searched.
-     * @param fromIndex the index to start the search from, exclusive.
-     * @param toIndex the index to end the search at, inclusive. Usually <code>toIndex</code>
-     * points a non-space character.
-     * @return the index of the last occurrence of the non-space character in the
-     * <code>text</code>, exclusive. It is less than <code>fromIndex</code> and greater than
-     * <code>toIndex</code>, or <code>toIndex</code> if the character does not occur.
-     */
-    private static int lastIndexOfNonSpace(final String text, final int fromIndex,
-            final int toIndex) {
-        if (toIndex < 0 || fromIndex > text.length() || fromIndex < toIndex) {
-            throw new IllegalArgumentException(
-                    "text=" + text + " fromIndex=" + fromIndex + " toIndex=" + toIndex);
-        }
-        int index = fromIndex;
-        while (index > toIndex && text.charAt(index - 1) == SPACE) {
-            index--;
-        }
-        return index;
-    }
-
-    /**
-     * Find the index of a comma separator. The search takes account of quoted fields and escape
-     * quotes.
-     *
-     * @param text the text to be searched.
-     * @param fromIndex the index to start the search from, inclusive.
-     * @return the index of the comma separator, exclusive.
-     */
-    private static int indexOfSeparatorComma(final String text, final int fromIndex) {
-        final int length = text.length();
-        if (fromIndex < 0 || fromIndex > length) {
-            throw new IllegalArgumentException("text=" + text + " fromIndex=" + fromIndex);
-        }
-        final boolean isQuoted = (length - fromIndex > 0 && text.charAt(fromIndex) == QUOTE);
-        for (int index = fromIndex + (isQuoted ? 1 : 0); index < length; index++) {
-            final char c = text.charAt(index);
-            if (c == COMMA && !isQuoted) {
-                return index;
-            }
-            if (c == QUOTE) {
-                final int nextIndex = index + 1;
-                if (nextIndex < length && text.charAt(nextIndex) == QUOTE) {
-                    // Quoted quote.
-                    index = nextIndex;
-                    continue;
-                }
-                // Closing quote.
-                final int endIndex = text.indexOf(COMMA, nextIndex);
-                return endIndex < 0 ? length : endIndex;
-            }
-        }
-        return length;
-    }
-
-    /**
-     * Removing any enclosing QUOTEs (U+0022), and convert any two consecutive QUOTEs into
-     * one QUOTE.
-     *
-     * @param text the CSV field text that may have enclosing QUOTEs and escaped QUOTE character.
-     * @return the text that has been removed enclosing quotes and converted two consecutive QUOTEs
-     * into one QUOTE.
-     */
-    @UsedForTesting
-    /* private */ static String unescapeField(final String text) {
-        StringBuilder sb = null;
-        final int length = text.length();
-        final boolean isQuoted = (length > 0 && text.charAt(0) == QUOTE);
-        int start = isQuoted ? 1 : 0;
-        int end = start;
-        while (start <= length && (end = text.indexOf(QUOTE, start)) >= start) {
-            final int nextIndex = end + 1;
-            if (nextIndex == length && isQuoted) {
-                // Closing quote.
-                break;
-            }
-            if (nextIndex < length && text.charAt(nextIndex) == QUOTE) {
-                if (!isQuoted) {
-                    throw new CsvParseException("Escaped quote in text");
-                }
-                // Quoted quote.
-                if (sb == null) {
-                    sb = new StringBuilder();
-                }
-                sb.append(text.substring(start, nextIndex));
-                start = nextIndex + 1;
-            } else {
-                throw new CsvParseException(
-                        isQuoted ? "Raw quote in quoted text" : "Raw quote in text");
-            }
-        }
-        if (end < 0 && isQuoted) {
-            throw new CsvParseException("Unterminated quote");
-        }
-        if (end < 0) {
-            end = length;
-        }
-        if (sb != null && start < length) {
-            sb.append(text.substring(start, end));
-        }
-        return sb == null ? text.substring(start, end) : sb.toString();
-    }
-
-    /**
-     * Split the CSV text into fields. The leading and trailing spaces of the each field can be
-     * trimmed optionally.
-     *
-     * @param splitFlags flags for split behavior. {@link #SPLIT_FLAGS_TRIM_SPACES} will trim
-     * spaces around each fields.
-     * @param line the text of CSV fields.
-     * @return the array of unescaped CVS fields.
-     * @throws CsvParseException
-     */
-    @UsedForTesting
-    public static String[] split(final int splitFlags, final String line) throws CsvParseException {
-        final boolean trimSpaces = (splitFlags & SPLIT_FLAGS_TRIM_SPACES) != 0;
-        final ArrayList<String> fields = CollectionUtils.newArrayList();
-        final int length = line.length();
-        int start = 0;
-        do {
-            final int csvStart = trimSpaces ? indexOfNonSpace(line, start) : start;
-            final int end = indexOfSeparatorComma(line, csvStart);
-            final int csvEnd = trimSpaces ? lastIndexOfNonSpace(line, end, csvStart) : end;
-            final String csvText = unescapeField(line.substring(csvStart, csvEnd));
-            fields.add(csvText);
-            start = end + 1;
-        } while (start <= length);
-        return fields.toArray(new String[fields.size()]);
-    }
-
-    @UsedForTesting
-    public static String[] split(final String line) throws CsvParseException {
-        return split(SPLIT_FLAGS_NONE, line);
-    }
-
-    /**
-     * Convert the raw CSV field text to the escaped text. It adds enclosing QUOTEs (U+0022) if the
-     * raw value contains any QUOTE or comma. Also it converts any QUOTE character into two
-     * consecutive QUOTE characters.
-     *
-     * @param text the raw CSV field text to be escaped.
-     * @param alwaysQuoted true if the escaped text should always be enclosed by QUOTEs.
-     * @return the escaped text.
-     */
-    @UsedForTesting
-    /* private */ static String escapeField(final String text, final boolean alwaysQuoted) {
-        StringBuilder sb = null;
-        boolean needsQuoted = alwaysQuoted;
-        final int length = text.length();
-        int indexToBeAppended = 0;
-        for (int index = indexToBeAppended; index < length; index++) {
-            final char c = text.charAt(index);
-            if (c == COMMA) {
-                needsQuoted = true;
-            } else if (c == QUOTE) {
-                needsQuoted = true;
-                if (sb == null) {
-                    sb = new StringBuilder();
-                }
-                sb.append(text.substring(indexToBeAppended, index));
-                indexToBeAppended = index + 1;
-                sb.append(QUOTE); // escaping quote.
-                sb.append(QUOTE); // escaped quote.
-            }
-        }
-        if (sb != null && indexToBeAppended < length) {
-            sb.append(text.substring(indexToBeAppended));
-        }
-        final String escapedText = (sb == null) ? text : sb.toString();
-        return needsQuoted ? QUOTE + escapedText + QUOTE : escapedText;
-    }
-
-    private static final String SPACES = "                    ";
-
-    private static void padToColumn(final StringBuilder sb, final int column) {
-        int padding;
-        while ((padding = column - sb.length()) > 0) {
-            final String spaces = SPACES.substring(0, Math.min(padding, SPACES.length()));
-            sb.append(spaces);
-        }
-    }
-
-    /**
-     * Join CSV text fields with comma. The column positions of the fields can be specified
-     * optionally. Surround each fields with double quotes before joining.
-     *
-     * @param joinFlags flags for join behavior. {@link #JOIN_FLAGS_EXTRA_SPACE} will add an extra
-     * space after each comma separator. {@link #JOIN_FLAGS_ALWAYS_QUOTED} will always add
-     * surrounding quotes to each element.
-     * @param columnPositions the array of column positions of the fields. It can be shorter than
-     * <code>fields</code> or null. Note that specifying the array column positions of the fields
-     * doesn't conform to RFC 4180.
-     * @param fields the CSV text fields.
-     * @return the string of the joined and escaped <code>fields</code>.
-     */
-    @UsedForTesting
-    public static String join(final int joinFlags, final int columnPositions[],
-            final String... fields) {
-        final boolean alwaysQuoted = (joinFlags & JOIN_FLAGS_ALWAYS_QUOTED) != 0;
-        final String separator = COMMA + ((joinFlags & JOIN_FLAGS_EXTRA_SPACE) != 0 ? " " : "");
-        final StringBuilder sb = new StringBuilder();
-        for (int index = 0; index < fields.length; index++) {
-            if (index > 0) {
-                sb.append(separator);
-            }
-            if (columnPositions != null && index < columnPositions.length) {
-                padToColumn(sb, columnPositions[index]);
-            }
-            final String escapedText = escapeField(fields[index], alwaysQuoted);
-            sb.append(escapedText);
-        }
-        return sb.toString();
-    }
-
-    @UsedForTesting
-    public static String join(final int joinFlags, final String... fields) {
-        return join(joinFlags, null, fields);
-    }
-
-    @UsedForTesting
-    public static String join(final String... fields) {
-        return join(JOIN_FLAGS_NONE, null, fields);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/DebugLogUtils.java b/java/src/com/android/inputmethod/latin/utils/DebugLogUtils.java
index ac654fa..1ab834f 100644
--- a/java/src/com/android/inputmethod/latin/utils/DebugLogUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/DebugLogUtils.java
@@ -18,14 +18,14 @@
 
 import android.util.Log;
 
-import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.define.DebugFlags;
 
 /**
  * A class for logging and debugging utility methods.
  */
 public final class DebugLogUtils {
     private final static String TAG = DebugLogUtils.class.getSimpleName();
-    private final static boolean sDBG = LatinImeLogger.sDBG;
+    private final static boolean sDBG = DebugFlags.DEBUG_ENABLED;
 
     /**
      * Calls .toString() on its non-null argument or returns "null"
diff --git a/java/src/com/android/inputmethod/latin/utils/DialogUtils.java b/java/src/com/android/inputmethod/latin/utils/DialogUtils.java
new file mode 100644
index 0000000..a05c932
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/DialogUtils.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.Context;
+import android.view.ContextThemeWrapper;
+
+import com.android.inputmethod.latin.R;
+
+public final class DialogUtils {
+    private DialogUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    public static Context getPlatformDialogThemeContext(final Context context) {
+        // Because {@link AlertDialog.Builder.create()} doesn't honor the specified theme with
+        // createThemeContextWrapper=false, the result dialog box has unneeded paddings around it.
+        return new ContextThemeWrapper(context, R.style.platformDialogTheme);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java b/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
index 021bf08..d76ea10 100644
--- a/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
@@ -20,15 +20,19 @@
 import android.content.Context;
 import android.content.res.AssetManager;
 import android.content.res.Resources;
+import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.inputmethod.latin.AssetFileAddress;
 import com.android.inputmethod.latin.BinaryDictionaryGetter;
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Locale;
@@ -278,14 +282,36 @@
                 BinaryDictionaryGetter.ID_CATEGORY_SEPARATOR + locale.getLanguage().toString();
     }
 
-    public static FileHeader getDictionaryFileHeaderOrNull(final File file) {
-        return BinaryDictIOUtils.getDictionaryFileHeaderOrNull(file, 0, file.length());
+    public static DictionaryHeader getDictionaryFileHeaderOrNull(final File file) {
+        return getDictionaryFileHeaderOrNull(file, 0, file.length());
     }
 
+    private static DictionaryHeader getDictionaryFileHeaderOrNull(final File file,
+            final long offset, final long length) {
+        try {
+            final DictionaryHeader header =
+                    BinaryDictionaryUtils.getHeaderWithOffsetAndLength(file, offset, length);
+            return header;
+        } catch (UnsupportedFormatException e) {
+            return null;
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Returns information of the dictionary.
+     *
+     * @param fileAddress the asset dictionary file address.
+     * @return information of the specified dictionary.
+     */
     private static DictionaryInfo createDictionaryInfoFromFileAddress(
             final AssetFileAddress fileAddress) {
-        final FileHeader header = BinaryDictIOUtils.getDictionaryFileHeaderOrNull(
+        final DictionaryHeader header = getDictionaryFileHeaderOrNull(
                 new File(fileAddress.mFilename), fileAddress.mOffset, fileAddress.mLength);
+        if (header == null) {
+            return null;
+        }
         final String id = header.getId();
         final Locale locale = LocaleUtils.constructLocaleFromString(header.getLocaleString());
         final String description = header.getDescription();
@@ -310,7 +336,7 @@
 
     public static ArrayList<DictionaryInfo> getCurrentDictionaryFileNameAndVersionInfo(
             final Context context) {
-        final ArrayList<DictionaryInfo> dictList = CollectionUtils.newArrayList();
+        final ArrayList<DictionaryInfo> dictList = new ArrayList<>();
 
         // Retrieve downloaded dictionaries
         final File[] directoryList = getCachedDirectoryList(context);
@@ -328,7 +354,7 @@
                     // Protect against cases of a less-specific dictionary being found, like an
                     // en dictionary being used for an en_US locale. In this case, the en dictionary
                     // should be used for en_US but discounted for listing purposes.
-                    if (!dictionaryInfo.mLocale.equals(locale)) continue;
+                    if (dictionaryInfo == null || !dictionaryInfo.mLocale.equals(locale)) continue;
                     addOrUpdateDictInfo(dictList, dictionaryInfo);
                 }
             }
@@ -355,4 +381,32 @@
 
         return dictList;
     }
+
+    public static boolean looksValidForDictionaryInsertion(final CharSequence text,
+            final SpacingAndPunctuations spacingAndPunctuations) {
+        if (TextUtils.isEmpty(text)) return false;
+        final int length = text.length();
+        // TODO: Make this test "length > Constants.DICTIONARY_MAX_WORD_LENGTH".
+        if (length >= Constants.DICTIONARY_MAX_WORD_LENGTH) {
+            return false;
+        }
+        int i = 0;
+        int digitCount = 0;
+        while (i < length) {
+            final int codePoint = Character.codePointAt(text, i);
+            final int charCount = Character.charCount(codePoint);
+            i += charCount;
+            if (Character.isDigit(codePoint)) {
+                // Count digits: see below
+                digitCount += charCount;
+                continue;
+            }
+            if (!spacingAndPunctuations.isWordCodePoint(codePoint)) return false;
+        }
+        // We reject strings entirely comprised of digits to avoid using PIN codes or credit
+        // card numbers. It would come in handy for word prediction though; a good example is
+        // when writing one's address where the street number is usually quite discriminative,
+        // as well as the postal code.
+        return digitCount < length;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
new file mode 100644
index 0000000..787e4a5
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.PrevWordsInfo;
+
+public interface DistracterFilter {
+    /**
+     * Determine whether a word is a distracter to words in dictionaries.
+     *
+     * @param prevWordsInfo the information of previous words.
+     * @param testedWord the word that will be tested to see whether it is a distracter to words
+     *                   in dictionaries.
+     * @param locale the locale of word.
+     * @return true if testedWord is a distracter, otherwise false.
+     */
+    public boolean isDistracterToWordsInDictionaries(final PrevWordsInfo prevWordsInfo,
+            final String testedWord, final Locale locale);
+
+    public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes);
+
+    public void close();
+
+    public static final DistracterFilter EMPTY_DISTRACTER_FILTER = new DistracterFilter() {
+        @Override
+        public boolean isDistracterToWordsInDictionaries(PrevWordsInfo prevWordsInfo,
+                String testedWord, Locale locale) {
+            return false;
+        }
+
+        @Override
+        public void close() {
+        }
+
+        @Override
+        public void updateEnabledSubtypes(List<InputMethodSubtype> enabledSubtypes) {
+        }
+    };
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilterCheckingExactMatches.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilterCheckingExactMatches.java
new file mode 100644
index 0000000..0ee6236
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilterCheckingExactMatches.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.concurrent.TimeUnit;
+
+import android.content.Context;
+import android.util.Log;
+import android.util.LruCache;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.DictionaryFacilitator;
+import com.android.inputmethod.latin.PrevWordsInfo;
+
+/**
+ * This class is used to prevent distracters being added to personalization
+ * or user history dictionaries
+ */
+public class DistracterFilterCheckingExactMatches implements DistracterFilter {
+    private static final String TAG = DistracterFilterCheckingExactMatches.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    private static final long TIMEOUT_TO_WAIT_LOADING_DICTIONARIES_IN_SECONDS = 120;
+    private static final int MAX_DISTRACTERS_CACHE_SIZE = 512;
+
+    private final Context mContext;
+    private final DictionaryFacilitator mDictionaryFacilitator;
+    private final LruCache<String, Boolean> mDistractersCache;
+    private final Object mLock = new Object();
+
+    /**
+     * Create a DistracterFilter instance.
+     *
+     * @param context the context.
+     */
+    public DistracterFilterCheckingExactMatches(final Context context) {
+        mContext = context;
+        mDictionaryFacilitator = new DictionaryFacilitator();
+        mDistractersCache = new LruCache<>(MAX_DISTRACTERS_CACHE_SIZE);
+    }
+
+    @Override
+    public void close() {
+        mDictionaryFacilitator.closeDictionaries();
+    }
+
+    @Override
+    public void updateEnabledSubtypes(final List<InputMethodSubtype> enabledSubtypes) {
+    }
+
+    private void loadDictionariesForLocale(final Locale newlocale) throws InterruptedException {
+        mDictionaryFacilitator.resetDictionaries(mContext, newlocale,
+                false /* useContactsDict */, false /* usePersonalizedDicts */,
+                false /* forceReloadMainDictionary */, null /* listener */);
+        mDictionaryFacilitator.waitForLoadingMainDictionary(
+                TIMEOUT_TO_WAIT_LOADING_DICTIONARIES_IN_SECONDS, TimeUnit.SECONDS);
+    }
+
+    /**
+     * Determine whether a word is a distracter to words in dictionaries.
+     *
+     * @param prevWordsInfo the information of previous words. Not used for now.
+     * @param testedWord the word that will be tested to see whether it is a distracter to words
+     *                   in dictionaries.
+     * @param locale the locale of word.
+     * @return true if testedWord is a distracter, otherwise false.
+     */
+    @Override
+    public boolean isDistracterToWordsInDictionaries(final PrevWordsInfo prevWordsInfo,
+            final String testedWord, final Locale locale) {
+        if (locale == null) {
+            return false;
+        }
+        if (!locale.equals(mDictionaryFacilitator.getLocale())) {
+            synchronized (mLock) {
+                // Reset dictionaries for the locale.
+                try {
+                    mDistractersCache.evictAll();
+                    loadDictionariesForLocale(locale);
+                } catch (final InterruptedException e) {
+                    Log.e(TAG, "Interrupted while waiting for loading dicts in DistracterFilter",
+                            e);
+                    return false;
+                }
+            }
+        }
+
+        final Boolean isCachedDistracter = mDistractersCache.get(testedWord);
+        if (isCachedDistracter != null && isCachedDistracter) {
+            if (DEBUG) {
+                Log.d(TAG, "testedWord: " + testedWord);
+                Log.d(TAG, "isDistracter: true (cache hit)");
+            }
+            return true;
+        }
+        // The tested word is a distracter when there is a word that is exact matched to the tested
+        // word and its probability is higher than the tested word's probability.
+        final int perfectMatchFreq = mDictionaryFacilitator.getFrequency(testedWord);
+        final int exactMatchFreq = mDictionaryFacilitator.getMaxFrequencyOfExactMatches(testedWord);
+        final boolean isDistracter = perfectMatchFreq < exactMatchFreq;
+        if (DEBUG) {
+            Log.d(TAG, "testedWord: " + testedWord);
+            Log.d(TAG, "perfectMatchFreq: " + perfectMatchFreq);
+            Log.d(TAG, "exactMatchFreq: " + exactMatchFreq);
+            Log.d(TAG, "isDistracter: " + isDistracter);
+        }
+        if (isDistracter) {
+            // Add the word to the cache.
+            mDistractersCache.put(testedWord, Boolean.TRUE);
+        }
+        return isDistracter;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilterCheckingIsInDictionary.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilterCheckingIsInDictionary.java
new file mode 100644
index 0000000..4ad4ba7
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilterCheckingIsInDictionary.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import java.util.List;
+import java.util.Locale;
+
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
+
+public class DistracterFilterCheckingIsInDictionary implements DistracterFilter {
+    private final DistracterFilter mDistracterFilter;
+    private final Dictionary mDictionary;
+
+    public DistracterFilterCheckingIsInDictionary(final DistracterFilter distracterFilter,
+            final Dictionary dictionary) {
+        mDistracterFilter = distracterFilter;
+        mDictionary = dictionary;
+    }
+
+    @Override
+    public boolean isDistracterToWordsInDictionaries(PrevWordsInfo prevWordsInfo,
+            String testedWord, Locale locale) {
+        if (mDictionary.isInDictionary(testedWord)) {
+            // This filter treats entries that are already in the dictionary as non-distracters
+            // because they have passed the filtering in the past.
+            return false;
+        } else {
+            return mDistracterFilter.isDistracterToWordsInDictionaries(
+                    prevWordsInfo, testedWord, locale);
+        }
+    }
+
+    @Override
+    public void updateEnabledSubtypes(List<InputMethodSubtype> enabledSubtypes) {
+        // Do nothing.
+    }
+
+    @Override
+    public void close() {
+        // Do nothing.
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java b/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
new file mode 100644
index 0000000..61da1b7
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
+/**
+ * Utilities to manage executors.
+ */
+public class ExecutorUtils {
+    private static final ConcurrentHashMap<String, ExecutorService> sExecutorMap =
+            new ConcurrentHashMap<>();
+
+    private static class ThreadFactoryWithId implements ThreadFactory {
+        private final String mId;
+
+        public ThreadFactoryWithId(final String id) {
+            mId = id;
+        }
+
+        @Override
+        public Thread newThread(final Runnable r) {
+            return new Thread(r, "Executor - " + mId);
+        }
+    }
+
+    /**
+     * Gets the executor for the given id.
+     */
+    public static ExecutorService getExecutor(final String id) {
+        ExecutorService executor = sExecutorMap.get(id);
+        if (executor == null) {
+            synchronized(sExecutorMap) {
+                executor = sExecutorMap.get(id);
+                if (executor == null) {
+                    executor = Executors.newSingleThreadExecutor(new ThreadFactoryWithId(id));
+                    sExecutorMap.put(id, executor);
+                }
+            }
+        }
+        return executor;
+    }
+
+    /**
+     * Shutdowns all executors and removes all executors from the executor map for testing.
+     */
+    @UsedForTesting
+    public static void shutdownAllExecutors() {
+        synchronized(sExecutorMap) {
+            for (final ExecutorService executor : sExecutorMap.values()) {
+                executor.execute(new Runnable() {
+                    @Override
+                    public void run() {
+                        executor.shutdown();
+                        sExecutorMap.remove(executor);
+                    }
+                });
+            }
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/FileUtils.java b/java/src/com/android/inputmethod/latin/utils/FileUtils.java
new file mode 100644
index 0000000..f1106a6
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/FileUtils.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+/**
+ * A simple class to help with removing directories recursively.
+ */
+public class FileUtils {
+    public static boolean deleteRecursively(final File path) {
+        if (path.isDirectory()) {
+            final File[] files = path.listFiles();
+            if (files != null) {
+                for (final File child : files) {
+                    deleteRecursively(child);
+                }
+            }
+        }
+        return path.delete();
+    }
+
+    public static boolean deleteFilteredFiles(final File dir, final FilenameFilter fileNameFilter) {
+        if (!dir.isDirectory()) {
+            return false;
+        }
+        final File[] files = dir.listFiles(fileNameFilter);
+        if (files == null) {
+            return false;
+        }
+        boolean hasDeletedAllFiles = true;
+        for (final File file : files) {
+            if (!deleteRecursively(file)) {
+                hasDeletedAllFiles = false;
+            }
+        }
+        return hasDeletedAllFiles;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java b/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java
index ee2b97b..e300bd1 100644
--- a/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/FragmentUtils.java
@@ -26,12 +26,11 @@
 import com.android.inputmethod.latin.userdictionary.UserDictionaryList;
 import com.android.inputmethod.latin.userdictionary.UserDictionaryLocalePicker;
 import com.android.inputmethod.latin.userdictionary.UserDictionarySettings;
-import com.android.inputmethod.research.FeedbackFragment;
 
 import java.util.HashSet;
 
 public class FragmentUtils {
-    private static final HashSet<String> sLatinImeFragments = new HashSet<String>();
+    private static final HashSet<String> sLatinImeFragments = new HashSet<>();
     static {
         sLatinImeFragments.add(DictionarySettingsFragment.class.getName());
         sLatinImeFragments.add(AboutPreferences.class.getName());
@@ -43,7 +42,6 @@
         sLatinImeFragments.add(UserDictionaryList.class.getName());
         sLatinImeFragments.add(UserDictionaryLocalePicker.class.getName());
         sLatinImeFragments.add(UserDictionarySettings.class.getName());
-        sLatinImeFragments.add(FeedbackFragment.class.getName());
     }
 
     public static boolean isValidFragment(String fragmentName) {
diff --git a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
new file mode 100644
index 0000000..8b70778
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.inputmethod.latin.R;
+
+public final class ImportantNoticeUtils {
+    private static final String TAG = ImportantNoticeUtils.class.getSimpleName();
+
+    // {@link SharedPreferences} name to save the last important notice version that has been
+    // displayed to users.
+    private static final String PREFERENCE_NAME = "important_notice_pref";
+    private static final String KEY_IMPORTANT_NOTICE_VERSION = "important_notice_version";
+    public static final int VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS = 1;
+
+    // Copy of the hidden {@link Settings.Secure#USER_SETUP_COMPLETE} settings key.
+    // The value is zero until each multiuser completes system setup wizard.
+    // Caveat: This is a hidden API.
+    private static final String Settings_Secure_USER_SETUP_COMPLETE = "user_setup_complete";
+    private static final int USER_SETUP_IS_NOT_COMPLETE = 0;
+
+    private ImportantNoticeUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    private static boolean isInSystemSetupWizard(final Context context) {
+        try {
+            final int userSetupComplete = Settings.Secure.getInt(
+                    context.getContentResolver(), Settings_Secure_USER_SETUP_COMPLETE);
+            return userSetupComplete == USER_SETUP_IS_NOT_COMPLETE;
+        } catch (final SettingNotFoundException e) {
+            Log.w(TAG, "Can't find settings in Settings.Secure: key="
+                    + Settings_Secure_USER_SETUP_COMPLETE);
+            return false;
+        }
+    }
+
+    private static SharedPreferences getImportantNoticePreferences(final Context context) {
+        return context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
+    }
+
+    private static int getCurrentImportantNoticeVersion(final Context context) {
+        return context.getResources().getInteger(R.integer.config_important_notice_version);
+    }
+
+    private static int getLastImportantNoticeVersion(final Context context) {
+        return getImportantNoticePreferences(context).getInt(KEY_IMPORTANT_NOTICE_VERSION, 0);
+    }
+
+    public static int getNextImportantNoticeVersion(final Context context) {
+        return getLastImportantNoticeVersion(context) + 1;
+    }
+
+    private static boolean hasNewImportantNotice(final Context context) {
+        final int lastVersion = getLastImportantNoticeVersion(context);
+        return getCurrentImportantNoticeVersion(context) > lastVersion;
+    }
+
+    public static boolean shouldShowImportantNotice(final Context context) {
+        if (!hasNewImportantNotice(context)) {
+            return false;
+        }
+        final String importantNoticeTitle = getNextImportantNoticeTitle(context);
+        if (TextUtils.isEmpty(importantNoticeTitle)) {
+            return false;
+        }
+        if (isInSystemSetupWizard(context)) {
+            return false;
+        }
+        return true;
+    }
+
+    public static void updateLastImportantNoticeVersion(final Context context) {
+        getImportantNoticePreferences(context)
+                .edit()
+                .putInt(KEY_IMPORTANT_NOTICE_VERSION, getNextImportantNoticeVersion(context))
+                .apply();
+    }
+
+    public static String getNextImportantNoticeTitle(final Context context) {
+        final int nextVersion = getCurrentImportantNoticeVersion(context);
+        final String[] importantNoticeTitleArray = context.getResources().getStringArray(
+                R.array.important_notice_title_array);
+        if (nextVersion > 0 && nextVersion < importantNoticeTitleArray.length) {
+            return importantNoticeTitleArray[nextVersion];
+        }
+        return null;
+    }
+
+    public static String getNextImportantNoticeContents(final Context context) {
+        final int nextVersion = getNextImportantNoticeVersion(context);
+        final String[] importantNoticeContentsArray = context.getResources().getStringArray(
+                R.array.important_notice_contents_array);
+        if (nextVersion > 0 && nextVersion < importantNoticeContentsArray.length) {
+            return importantNoticeContentsArray[nextVersion];
+        }
+        return null;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/JsonUtils.java b/java/src/com/android/inputmethod/latin/utils/JsonUtils.java
new file mode 100644
index 0000000..6dd8d97
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/JsonUtils.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.util.JsonReader;
+import android.util.JsonWriter;
+import android.util.Log;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public final class JsonUtils {
+    private static final String TAG = JsonUtils.class.getSimpleName();
+
+    private static final String INTEGER_CLASS_NAME = Integer.class.getSimpleName();
+    private static final String STRING_CLASS_NAME = String.class.getSimpleName();
+
+    private static final String EMPTY_STRING = "";
+
+    public static List<Object> jsonStrToList(final String s) {
+        final ArrayList<Object> list = new ArrayList<>();
+        final JsonReader reader = new JsonReader(new StringReader(s));
+        try {
+            reader.beginArray();
+            while (reader.hasNext()) {
+                reader.beginObject();
+                while (reader.hasNext()) {
+                    final String name = reader.nextName();
+                    if (name.equals(INTEGER_CLASS_NAME)) {
+                        list.add(reader.nextInt());
+                    } else if (name.equals(STRING_CLASS_NAME)) {
+                        list.add(reader.nextString());
+                    } else {
+                        Log.w(TAG, "Invalid name: " + name);
+                        reader.skipValue();
+                    }
+                }
+                reader.endObject();
+            }
+            reader.endArray();
+            return list;
+        } catch (final IOException e) {
+        } finally {
+            close(reader);
+        }
+        return Collections.<Object>emptyList();
+    }
+
+    public static String listToJsonStr(final List<Object> list) {
+        if (list == null || list.isEmpty()) {
+            return EMPTY_STRING;
+        }
+        final StringWriter sw = new StringWriter();
+        final JsonWriter writer = new JsonWriter(sw);
+        try {
+            writer.beginArray();
+            for (final Object o : list) {
+                writer.beginObject();
+                if (o instanceof Integer) {
+                    writer.name(INTEGER_CLASS_NAME).value((Integer)o);
+                } else if (o instanceof String) {
+                    writer.name(STRING_CLASS_NAME).value((String)o);
+                }
+                writer.endObject();
+            }
+            writer.endArray();
+            return sw.toString();
+        } catch (final IOException e) {
+        } finally {
+            close(writer);
+        }
+        return EMPTY_STRING;
+    }
+
+    private static void close(final Closeable closeable) {
+        try {
+            if (closeable != null) {
+                closeable.close();
+            }
+        } catch (final IOException e) {
+            // Ignore
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
new file mode 100644
index 0000000..fbce3f2
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/LanguageModelParam.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.util.Log;
+
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.DictionaryFacilitator;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+// Note: this class is used as a parameter type of a native method. You should be careful when you
+// rename this class or field name. See BinaryDictionary#addMultipleDictionaryEntriesNative().
+public final class LanguageModelParam {
+    private static final String TAG = LanguageModelParam.class.getSimpleName();
+    private static final boolean DEBUG = false;
+    private static final boolean DEBUG_TOKEN = false;
+
+    // For now, these probability values are being referred to only when we add new entries to
+    // decaying dynamic binary dictionaries. When these are referred to, what matters is 0 or
+    // non-0. Thus, it's not meaningful to compare 10, 100, and so on.
+    // TODO: Revise the logic in ForgettingCurveUtils in native code.
+    private static final int UNIGRAM_PROBABILITY_FOR_VALID_WORD = 100;
+    private static final int UNIGRAM_PROBABILITY_FOR_OOV_WORD = Dictionary.NOT_A_PROBABILITY;
+    private static final int BIGRAM_PROBABILITY_FOR_VALID_WORD = 10;
+    private static final int BIGRAM_PROBABILITY_FOR_OOV_WORD = Dictionary.NOT_A_PROBABILITY;
+
+    public final CharSequence mTargetWord;
+    public final int[] mWord0;
+    public final int[] mWord1;
+    // TODO: this needs to be a list of shortcuts
+    public final int[] mShortcutTarget;
+    public final int mUnigramProbability;
+    public final int mBigramProbability;
+    public final int mShortcutProbability;
+    public final boolean mIsNotAWord;
+    public final boolean mIsBlacklisted;
+    // Time stamp in seconds.
+    public final int mTimestamp;
+
+    // Constructor for unigram. TODO: support shortcuts
+    public LanguageModelParam(final CharSequence word, final int unigramProbability,
+            final int timestamp) {
+        this(null /* word0 */, word, unigramProbability, Dictionary.NOT_A_PROBABILITY, timestamp);
+    }
+
+    // Constructor for unigram and bigram.
+    public LanguageModelParam(final CharSequence word0, final CharSequence word1,
+            final int unigramProbability, final int bigramProbability,
+            final int timestamp) {
+        mTargetWord = word1;
+        mWord0 = (word0 == null) ? null : StringUtils.toCodePointArray(word0);
+        mWord1 = StringUtils.toCodePointArray(word1);
+        mShortcutTarget = null;
+        mUnigramProbability = unigramProbability;
+        mBigramProbability = bigramProbability;
+        mShortcutProbability = Dictionary.NOT_A_PROBABILITY;
+        mIsNotAWord = false;
+        mIsBlacklisted = false;
+        mTimestamp = timestamp;
+    }
+
+    // Process a list of words and return a list of {@link LanguageModelParam} objects.
+    public static ArrayList<LanguageModelParam> createLanguageModelParamsFrom(
+            final List<String> tokens, final int timestamp,
+            final DictionaryFacilitator dictionaryFacilitator,
+            final SpacingAndPunctuations spacingAndPunctuations,
+            final DistracterFilter distracterFilter) {
+        final ArrayList<LanguageModelParam> languageModelParams = new ArrayList<>();
+        final int N = tokens.size();
+        PrevWordsInfo prevWordsInfo = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+        for (int i = 0; i < N; ++i) {
+            final String tempWord = tokens.get(i);
+            if (StringUtils.isEmptyStringOrWhiteSpaces(tempWord)) {
+                // just skip this token
+                if (DEBUG_TOKEN) {
+                    Log.d(TAG, "--- isEmptyStringOrWhiteSpaces: \"" + tempWord + "\"");
+                }
+                continue;
+            }
+            if (!DictionaryInfoUtils.looksValidForDictionaryInsertion(
+                    tempWord, spacingAndPunctuations)) {
+                if (DEBUG_TOKEN) {
+                    Log.d(TAG, "--- not looksValidForDictionaryInsertion: \""
+                            + tempWord + "\"");
+                }
+                // Sentence terminator found. Split.
+                prevWordsInfo = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+                continue;
+            }
+            if (DEBUG_TOKEN) {
+                Log.d(TAG, "--- word: \"" + tempWord + "\"");
+            }
+            final LanguageModelParam languageModelParam =
+                    detectWhetherVaildWordOrNotAndGetLanguageModelParam(
+                            prevWordsInfo, tempWord, timestamp, dictionaryFacilitator,
+                            distracterFilter);
+            if (languageModelParam == null) {
+                continue;
+            }
+            languageModelParams.add(languageModelParam);
+            prevWordsInfo = prevWordsInfo.getNextPrevWordsInfo(
+                    new PrevWordsInfo.WordInfo(tempWord));
+        }
+        return languageModelParams;
+    }
+
+    private static LanguageModelParam detectWhetherVaildWordOrNotAndGetLanguageModelParam(
+            final PrevWordsInfo prevWordsInfo, final String targetWord, final int timestamp,
+            final DictionaryFacilitator dictionaryFacilitator,
+            final DistracterFilter distracterFilter) {
+        final Locale locale = dictionaryFacilitator.getLocale();
+        if (locale == null) {
+            return null;
+        }
+        if (dictionaryFacilitator.isValidWord(targetWord, false /* ignoreCase */)) {
+            return createAndGetLanguageModelParamOfWord(prevWordsInfo, targetWord, timestamp,
+                    true /* isValidWord */, locale, distracterFilter);
+        }
+
+        final String lowerCaseTargetWord = targetWord.toLowerCase(locale);
+        if (dictionaryFacilitator.isValidWord(lowerCaseTargetWord, false /* ignoreCase */)) {
+            // Add the lower-cased word.
+            return createAndGetLanguageModelParamOfWord(prevWordsInfo, lowerCaseTargetWord,
+                    timestamp, true /* isValidWord */, locale, distracterFilter);
+        }
+
+        // Treat the word as an OOV word.
+        return createAndGetLanguageModelParamOfWord(prevWordsInfo, targetWord, timestamp,
+                false /* isValidWord */, locale, distracterFilter);
+    }
+
+    private static LanguageModelParam createAndGetLanguageModelParamOfWord(
+            final PrevWordsInfo prevWordsInfo, final String targetWord, final int timestamp,
+            final boolean isValidWord, final Locale locale,
+            final DistracterFilter distracterFilter) {
+        final String word;
+        if (StringUtils.getCapitalizationType(targetWord) == StringUtils.CAPITALIZE_FIRST
+                && !prevWordsInfo.isValid() && !isValidWord) {
+            word = targetWord.toLowerCase(locale);
+        } else {
+            word = targetWord;
+        }
+        // Check whether the word is a distracter to words in the dictionaries.
+        if (distracterFilter.isDistracterToWordsInDictionaries(prevWordsInfo, word, locale)) {
+            if (DEBUG) {
+                Log.d(TAG, "The word (" + word + ") is a distracter. Skip this word.");
+            }
+            return null;
+        }
+        final int unigramProbability = isValidWord ?
+                UNIGRAM_PROBABILITY_FOR_VALID_WORD : UNIGRAM_PROBABILITY_FOR_OOV_WORD;
+        if (!prevWordsInfo.isValid()) {
+            if (DEBUG) {
+                Log.d(TAG, "--- add unigram: current("
+                        + (isValidWord ? "Valid" : "OOV") + ") = " + word);
+            }
+            return new LanguageModelParam(word, unigramProbability, timestamp);
+        }
+        if (DEBUG) {
+            Log.d(TAG, "--- add bigram: prev = " + prevWordsInfo + ", current("
+                    + (isValidWord ? "Valid" : "OOV") + ") = " + word);
+        }
+        final int bigramProbability = isValidWord ?
+                BIGRAM_PROBABILITY_FOR_VALID_WORD : BIGRAM_PROBABILITY_FOR_OOV_WORD;
+        return new LanguageModelParam(prevWordsInfo.mPrevWordsInfo[0].mWord, word,
+                unigramProbability, bigramProbability, timestamp);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/LatinImeLoggerUtils.java b/java/src/com/android/inputmethod/latin/utils/LatinImeLoggerUtils.java
deleted file mode 100644
index e958a7e..0000000
--- a/java/src/com/android/inputmethod/latin/utils/LatinImeLoggerUtils.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import android.text.TextUtils;
-
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.WordComposer;
-
-public final class LatinImeLoggerUtils {
-    private LatinImeLoggerUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    public static void onNonSeparator(final char code, final int x, final int y) {
-        UserLogRingCharBuffer.getInstance().push(code, x, y);
-        LatinImeLogger.logOnInputChar();
-    }
-
-    public static void onSeparator(final int code, final int x, final int y) {
-        // Helper method to log a single code point separator
-        // TODO: cache this mapping of a code point to a string in a sparse array in StringUtils
-        onSeparator(new String(new int[]{code}, 0, 1), x, y);
-    }
-
-    public static void onSeparator(final String separator, final int x, final int y) {
-        final int length = separator.length();
-        for (int i = 0; i < length; i = Character.offsetByCodePoints(separator, i, 1)) {
-            int codePoint = Character.codePointAt(separator, i);
-            // TODO: accept code points
-            UserLogRingCharBuffer.getInstance().push((char)codePoint, x, y);
-        }
-        LatinImeLogger.logOnInputSeparator();
-    }
-
-    public static void onAutoCorrection(final String typedWord, final String correctedWord,
-            final String separatorString, final WordComposer wordComposer) {
-        final boolean isBatchMode = wordComposer.isBatchMode();
-        if (!isBatchMode && TextUtils.isEmpty(typedWord)) {
-            return;
-        }
-        // TODO: this fails when the separator is more than 1 code point long, but
-        // the backend can't handle it yet. The only case when this happens is with
-        // smileys and other multi-character keys.
-        final int codePoint = TextUtils.isEmpty(separatorString) ? Constants.NOT_A_CODE
-                : separatorString.codePointAt(0);
-        if (!isBatchMode) {
-            LatinImeLogger.logOnAutoCorrectionForTyping(typedWord, correctedWord, codePoint);
-        } else {
-            if (!TextUtils.isEmpty(correctedWord)) {
-                // We must make sure that InputPointer contains only the relative timestamps,
-                // not actual timestamps.
-                LatinImeLogger.logOnAutoCorrectionForGeometric(
-                        "", correctedWord, codePoint, wordComposer.getInputPointers());
-            }
-        }
-    }
-
-    public static void onAutoCorrectionCancellation() {
-        LatinImeLogger.logOnAutoCorrectionCancelled();
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/LeakGuardHandlerWrapper.java b/java/src/com/android/inputmethod/latin/utils/LeakGuardHandlerWrapper.java
new file mode 100644
index 0000000..dd6fac6
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/LeakGuardHandlerWrapper.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.os.Handler;
+import android.os.Looper;
+
+import java.lang.ref.WeakReference;
+
+public class LeakGuardHandlerWrapper<T> extends Handler {
+    private final WeakReference<T> mOwnerInstanceRef;
+
+    public LeakGuardHandlerWrapper(final T ownerInstance) {
+        this(ownerInstance, Looper.myLooper());
+    }
+
+    public LeakGuardHandlerWrapper(final T ownerInstance, final Looper looper) {
+        super(looper);
+        if (ownerInstance == null) {
+            throw new NullPointerException("ownerInstance is null");
+        }
+        mOwnerInstanceRef = new WeakReference<>(ownerInstance);
+    }
+
+    public T getOwnerInstance() {
+        return mOwnerInstanceRef.get();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/LocaleUtils.java b/java/src/com/android/inputmethod/latin/utils/LocaleUtils.java
index 22045aa..c519a0d 100644
--- a/java/src/com/android/inputmethod/latin/utils/LocaleUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/LocaleUtils.java
@@ -30,9 +30,6 @@
  * dictionary pack.
  */
 public final class LocaleUtils {
-    private static final HashMap<String, Long> EMPTY_LT_HASH_MAP = CollectionUtils.newHashMap();
-    private static final String LOCALE_AND_TIME_STR_SEPARATER = ",";
-
     private LocaleUtils() {
         // Intentional empty constructor for utility class.
     }
@@ -162,18 +159,20 @@
         return LOCALE_MATCH <= level;
     }
 
-    private static final HashMap<String, Locale> sLocaleCache = CollectionUtils.newHashMap();
+    private static final HashMap<String, Locale> sLocaleCache = new HashMap<>();
 
     /**
      * Creates a locale from a string specification.
      */
     public static Locale constructLocaleFromString(final String localeStr) {
-        if (localeStr == null)
+        if (localeStr == null) {
             return null;
+        }
         synchronized (sLocaleCache) {
-            if (sLocaleCache.containsKey(localeStr))
-                return sLocaleCache.get(localeStr);
-            Locale retval = null;
+            Locale retval = sLocaleCache.get(localeStr);
+            if (retval != null) {
+                return retval;
+            }
             String[] localeParams = localeStr.split("_", 3);
             if (localeParams.length == 1) {
                 retval = new Locale(localeParams[0]);
@@ -188,38 +187,4 @@
             return retval;
         }
     }
-
-    public static HashMap<String, Long> localeAndTimeStrToHashMap(String str) {
-        if (TextUtils.isEmpty(str)) {
-            return EMPTY_LT_HASH_MAP;
-        }
-        final String[] ss = str.split(LOCALE_AND_TIME_STR_SEPARATER);
-        final int N = ss.length;
-        if (N < 2 || N % 2 != 0) {
-            return EMPTY_LT_HASH_MAP;
-        }
-        final HashMap<String, Long> retval = CollectionUtils.newHashMap();
-        for (int i = 0; i < N / 2; ++i) {
-            final String localeStr = ss[i * 2];
-            final long time = Long.valueOf(ss[i * 2 + 1]);
-            retval.put(localeStr, time);
-        }
-        return retval;
-    }
-
-    public static String localeAndTimeHashMapToStr(HashMap<String, Long> map) {
-        if (map == null || map.isEmpty()) {
-            return "";
-        }
-        final StringBuilder builder = new StringBuilder();
-        for (String localeStr : map.keySet()) {
-            if (builder.length() > 0) {
-                builder.append(LOCALE_AND_TIME_STR_SEPARATER);
-            }
-            final Long time = map.get(localeStr);
-            builder.append(localeStr).append(LOCALE_AND_TIME_STR_SEPARATER);
-            builder.append(String.valueOf(time));
-        }
-        return builder.toString();
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/PrevWordsInfoUtils.java b/java/src/com/android/inputmethod/latin/utils/PrevWordsInfoUtils.java
new file mode 100644
index 0000000..3cd6361
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/PrevWordsInfoUtils.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import java.util.regex.Pattern;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+
+public final class PrevWordsInfoUtils {
+    private PrevWordsInfoUtils() {
+        // Intentional empty constructor for utility class.
+    }
+
+    private static final Pattern SPACE_REGEX = Pattern.compile("\\s+");
+    // Get context information from nth word before the cursor. n = 1 retrieves the words
+    // immediately before the cursor, n = 2 retrieves the words before that, and so on. This splits
+    // on whitespace only.
+    // Also, it won't return words that end in a separator (if the nth word before the cursor
+    // ends in a separator, it returns information representing beginning-of-sentence).
+    // Example (when Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM is 2):
+    // (n = 1) "abc def|" -> abc, def
+    // (n = 1) "abc def |" -> abc, def
+    // (n = 1) "abc 'def|" -> empty, 'def
+    // (n = 1) "abc def. |" -> beginning-of-sentence
+    // (n = 1) "abc def . |" -> beginning-of-sentence
+    // (n = 2) "abc def|" -> beginning-of-sentence, abc
+    // (n = 2) "abc def |" -> beginning-of-sentence, abc
+    // (n = 2) "abc 'def|" -> empty. The context is different from "abc def", but we cannot
+    // represent this situation using PrevWordsInfo. See TODO in the method.
+    // TODO: The next example's result should be "abc, def". This have to be fixed before we
+    // retrieve the prior context of Beginning-of-Sentence.
+    // (n = 2) "abc def. |" -> beginning-of-sentence, abc
+    // (n = 2) "abc def . |" -> abc, def
+    // (n = 2) "abc|" -> beginning-of-sentence
+    // (n = 2) "abc |" -> beginning-of-sentence
+    // (n = 2) "abc. def|" -> beginning-of-sentence
+    public static PrevWordsInfo getPrevWordsInfoFromNthPreviousWord(final CharSequence prev,
+            final SpacingAndPunctuations spacingAndPunctuations, final int n) {
+        if (prev == null) return PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+        final String[] w = SPACE_REGEX.split(prev);
+        final WordInfo[] prevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        for (int i = 0; i < prevWordsInfo.length; i++) {
+            final int focusedWordIndex = w.length - n - i;
+            // Referring to the word after the focused word.
+            if ((focusedWordIndex + 1) >= 0 && (focusedWordIndex + 1) < w.length) {
+                final String wordFollowingTheNthPrevWord = w[focusedWordIndex + 1];
+                if (!wordFollowingTheNthPrevWord.isEmpty()) {
+                    final char firstChar = wordFollowingTheNthPrevWord.charAt(0);
+                    if (spacingAndPunctuations.isWordConnector(firstChar)) {
+                        // The word following the focused word is starting with a word connector.
+                        // TODO: Return meaningful context for this case.
+                        prevWordsInfo[i] = WordInfo.EMPTY_WORD_INFO;
+                        break;
+                    }
+                }
+            }
+            // If we can't find (n + i) words, the context is beginning-of-sentence.
+            if (focusedWordIndex < 0) {
+                prevWordsInfo[i] = WordInfo.BEGINNING_OF_SENTENCE;
+                break;
+            }
+            final String focusedWord = w[focusedWordIndex];
+            // If the word is, the context is beginning-of-sentence.
+            final int length = focusedWord.length();
+            if (length <= 0) {
+                prevWordsInfo[i] = WordInfo.BEGINNING_OF_SENTENCE;
+                break;
+            }
+            // If ends in a sentence separator, the context is beginning-of-sentence.
+            final char lastChar = focusedWord.charAt(length - 1);
+            if (spacingAndPunctuations.isSentenceSeparator(lastChar)) {
+                prevWordsInfo[i] = WordInfo.BEGINNING_OF_SENTENCE;
+                break;
+            }
+            // If ends in a word separator or connector, the context is unclear.
+            // TODO: Return meaningful context for this case.
+            if (spacingAndPunctuations.isWordSeparator(lastChar)
+                    || spacingAndPunctuations.isWordConnector(lastChar)) {
+                prevWordsInfo[i] = WordInfo.EMPTY_WORD_INFO;
+                break;
+            }
+            prevWordsInfo[i] = new WordInfo(focusedWord);
+        }
+        return new PrevWordsInfo(prevWordsInfo);
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java b/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java
deleted file mode 100644
index 201a70d..0000000
--- a/java/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutor.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import java.util.Queue;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * An object that executes submitted tasks using a thread.
- */
-public class PrioritizedSerialExecutor {
-    public static final String TAG = PrioritizedSerialExecutor.class.getSimpleName();
-
-    private final Object mLock = new Object();
-
-    private final Queue<Runnable> mTasks;
-    private final Queue<Runnable> mPrioritizedTasks;
-    private boolean mIsShutdown;
-    private final ThreadPoolExecutor mThreadPoolExecutor;
-
-    // The task which is running now.
-    private Runnable mActive;
-
-    public PrioritizedSerialExecutor() {
-        mTasks = new ConcurrentLinkedQueue<Runnable>();
-        mPrioritizedTasks = new ConcurrentLinkedQueue<Runnable>();
-        mIsShutdown = false;
-        mThreadPoolExecutor = new ThreadPoolExecutor(1 /* corePoolSize */, 1 /* maximumPoolSize */,
-                0 /* keepAliveTime */, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
-    }
-
-    /**
-     * Clears all queued tasks.
-     */
-    public void clearAllTasks() {
-        synchronized(mLock) {
-            mTasks.clear();
-            mPrioritizedTasks.clear();
-        }
-    }
-
-    /**
-     * Enqueues the given task into the task queue.
-     * @param r the enqueued task
-     */
-    public void execute(final Runnable r) {
-        synchronized(mLock) {
-            if (!mIsShutdown) {
-                mTasks.offer(new Runnable() {
-                    @Override
-                    public void run() {
-                        try {
-                            r.run();
-                        } finally {
-                            scheduleNext();
-                        }
-                    }
-                });
-                if (mActive == null) {
-                    scheduleNext();
-                }
-            }
-        }
-    }
-
-    /**
-     * Enqueues the given task into the prioritized task queue.
-     * @param r the enqueued task
-     */
-    public void executePrioritized(final Runnable r) {
-        synchronized(mLock) {
-            if (!mIsShutdown) {
-                mPrioritizedTasks.offer(new Runnable() {
-                    @Override
-                    public void run() {
-                        try {
-                            r.run();
-                        } finally {
-                            scheduleNext();
-                        }
-                    }
-                });
-                if (mActive == null) {
-                    scheduleNext();
-                }
-            }
-        }
-    }
-
-    private boolean fetchNextTasksLocked() {
-        mActive = mPrioritizedTasks.poll();
-        if (mActive == null) {
-            mActive = mTasks.poll();
-        }
-        return mActive != null;
-    }
-
-    private void scheduleNext() {
-        synchronized(mLock) {
-            if (fetchNextTasksLocked()) {
-                mThreadPoolExecutor.execute(mActive);
-            }
-        }
-    }
-
-    public void remove(final Runnable r) {
-        synchronized(mLock) {
-            mTasks.remove(r);
-            mPrioritizedTasks.remove(r);
-        }
-    }
-
-    public void replaceAndExecute(final Runnable oldTask, final Runnable newTask) {
-        synchronized(mLock) {
-            if (oldTask != null) remove(oldTask);
-            execute(newTask);
-        }
-    }
-
-    public void shutdown() {
-        synchronized(mLock) {
-            mIsShutdown = true;
-        }
-    }
-
-    public boolean isTerminated() {
-        synchronized(mLock) {
-            if (!mIsShutdown) {
-                return false;
-            }
-            return mPrioritizedTasks.isEmpty() && mTasks.isEmpty() && mActive == null;
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java b/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java
index 0f5cd80..e3cac97 100644
--- a/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java
+++ b/java/src/com/android/inputmethod/latin/utils/RecapitalizeStatus.java
@@ -37,12 +37,12 @@
         CAPS_MODE_ALL_UPPER
     };
 
-    private static final int getStringMode(final String string, final String separators) {
+    private static final int getStringMode(final String string, final int[] sortedSeparators) {
         if (StringUtils.isIdenticalAfterUpcase(string)) {
             return CAPS_MODE_ALL_UPPER;
         } else if (StringUtils.isIdenticalAfterDowncase(string)) {
             return CAPS_MODE_ALL_LOWER;
-        } else if (StringUtils.isIdenticalAfterCapitalizeEachWord(string, separators)) {
+        } else if (StringUtils.isIdenticalAfterCapitalizeEachWord(string, sortedSeparators)) {
             return CAPS_MODE_FIRST_WORD_UPPER;
         } else {
             return CAPS_MODE_ORIGINAL_MIXED_CASE;
@@ -60,26 +60,32 @@
     private int mRotationStyleCurrentIndex;
     private boolean mSkipOriginalMixedCaseMode;
     private Locale mLocale;
-    private String mSeparators;
+    private int[] mSortedSeparators;
     private String mStringAfter;
-    private boolean mIsActive;
+    private boolean mIsStarted;
+    private boolean mIsEnabled = true;
+
+    private static final int[] EMPTY_STORTED_SEPARATORS = {};
 
     public RecapitalizeStatus() {
         // By default, initialize with dummy values that won't match any real recapitalize.
-        initialize(-1, -1, "", Locale.getDefault(), "");
-        deactivate();
+        start(-1, -1, "", Locale.getDefault(), EMPTY_STORTED_SEPARATORS);
+        stop();
     }
 
-    public void initialize(final int cursorStart, final int cursorEnd, final String string,
-            final Locale locale, final String separators) {
+    public void start(final int cursorStart, final int cursorEnd, final String string,
+            final Locale locale, final int[] sortedSeparators) {
+        if (!mIsEnabled) {
+            return;
+        }
         mCursorStartBefore = cursorStart;
         mStringBefore = string;
         mCursorStartAfter = cursorStart;
         mCursorEndAfter = cursorEnd;
         mStringAfter = string;
-        final int initialMode = getStringMode(mStringBefore, separators);
+        final int initialMode = getStringMode(mStringBefore, sortedSeparators);
         mLocale = locale;
-        mSeparators = separators;
+        mSortedSeparators = sortedSeparators;
         if (CAPS_MODE_ORIGINAL_MIXED_CASE == initialMode) {
             mRotationStyleCurrentIndex = 0;
             mSkipOriginalMixedCaseMode = false;
@@ -94,15 +100,27 @@
             mRotationStyleCurrentIndex = currentMode;
             mSkipOriginalMixedCaseMode = true;
         }
-        mIsActive = true;
+        mIsStarted = true;
     }
 
-    public void deactivate() {
-        mIsActive = false;
+    public void stop() {
+        mIsStarted = false;
     }
 
-    public boolean isActive() {
-        return mIsActive;
+    public boolean isStarted() {
+        return mIsStarted;
+    }
+
+    public void enable() {
+        mIsEnabled = true;
+    }
+
+    public void disable() {
+        mIsEnabled = false;
+    }
+
+    public boolean mIsEnabled() {
+        return mIsEnabled;
     }
 
     public boolean isSetAt(final int cursorStart, final int cursorEnd) {
@@ -131,7 +149,7 @@
                 mStringAfter = mStringBefore.toLowerCase(mLocale);
                 break;
             case CAPS_MODE_FIRST_WORD_UPPER:
-                mStringAfter = StringUtils.capitalizeEachWord(mStringBefore, mSeparators,
+                mStringAfter = StringUtils.capitalizeEachWord(mStringBefore, mSortedSeparators,
                         mLocale);
                 break;
             case CAPS_MODE_ALL_UPPER:
diff --git a/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java b/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java
index 7c6fe93..64c9e2c 100644
--- a/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java
+++ b/java/src/com/android/inputmethod/latin/utils/ResizableIntArray.java
@@ -34,7 +34,7 @@
         throw new ArrayIndexOutOfBoundsException("length=" + mLength + "; index=" + index);
     }
 
-    public void add(final int index, final int val) {
+    public void addAt(final int index, final int val) {
         if (index < mLength) {
             mArray[index] = val;
         } else {
diff --git a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
index 22c9244..093c5a6 100644
--- a/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ResourceUtils.java
@@ -41,8 +41,7 @@
         // This utility class is not publicly instantiable.
     }
 
-    private static final HashMap<String, String> sDeviceOverrideValueMap =
-            CollectionUtils.newHashMap();
+    private static final HashMap<String, String> sDeviceOverrideValueMap = new HashMap<>();
 
     private static final String[] BUILD_KEYS_AND_VALUES = {
         "HARDWARE", Build.HARDWARE,
@@ -54,8 +53,8 @@
     private static final String sBuildKeyValuesDebugString;
 
     static {
-        sBuildKeyValues = CollectionUtils.newHashMap();
-        final ArrayList<String> keyValuePairs = CollectionUtils.newArrayList();
+        sBuildKeyValues = new HashMap<>();
+        final ArrayList<String> keyValuePairs = new ArrayList<>();
         final int keyCount = BUILD_KEYS_AND_VALUES.length / 2;
         for (int i = 0; i < keyCount; i++) {
             final int index = i * 2;
@@ -67,7 +66,8 @@
         sBuildKeyValuesDebugString = "[" + TextUtils.join(" ", keyValuePairs) + "]";
     }
 
-    public static String getDeviceOverrideValue(final Resources res, final int overrideResId) {
+    public static String getDeviceOverrideValue(final Resources res, final int overrideResId,
+            final String defaultValue) {
         final int orientation = res.getConfiguration().orientation;
         final String key = overrideResId + "-" + orientation;
         if (sDeviceOverrideValueMap.containsKey(key)) {
@@ -86,23 +86,6 @@
             return overrideValue;
         }
 
-        String defaultValue = null;
-        try {
-            defaultValue = findDefaultConstant(overrideArray);
-            // The defaultValue might be an empty string.
-            if (defaultValue == null) {
-                Log.w(TAG, "Couldn't find override value nor default value:"
-                        + " resource="+ res.getResourceEntryName(overrideResId)
-                        + " build=" + sBuildKeyValuesDebugString);
-            } else {
-                Log.i(TAG, "Found default value:"
-                        + " resource="+ res.getResourceEntryName(overrideResId)
-                        + " build=" + sBuildKeyValuesDebugString
-                        + " default=" + defaultValue);
-            }
-        } catch (final DeviceOverridePatternSyntaxError e) {
-            Log.w(TAG, "Syntax error, ignored", e);
-        }
         sDeviceOverrideValueMap.put(key, defaultValue);
         return defaultValue;
     }
@@ -152,8 +135,7 @@
             }
             final String condition = conditionConstant.substring(0, posComma);
             if (condition.isEmpty()) {
-                // Default condition. The default condition should be searched by
-                // {@link #findConstantForDefault(String[])}.
+                Log.w(TAG, "Array element has no condition: " + conditionConstant);
                 continue;
             }
             try {
@@ -199,24 +181,6 @@
         return matchedAll;
     }
 
-    @UsedForTesting
-    static String findDefaultConstant(final String[] conditionConstantArray)
-            throws DeviceOverridePatternSyntaxError {
-        if (conditionConstantArray == null) {
-            return null;
-        }
-        for (final String condition : conditionConstantArray) {
-            final int posComma = condition.indexOf(',');
-            if (posComma < 0) {
-                throw new DeviceOverridePatternSyntaxError("Array element has no comma", condition);
-            }
-            if (posComma == 0) { // condition is empty.
-                return condition.substring(posComma + 1);
-            }
-        }
-        return null;
-    }
-
     public static int getDefaultKeyboardWidth(final Resources res) {
         final DisplayMetrics dm = res.getDisplayMetrics();
         return dm.widthPixels;
@@ -224,22 +188,23 @@
 
     public static int getDefaultKeyboardHeight(final Resources res) {
         final DisplayMetrics dm = res.getDisplayMetrics();
-        final String keyboardHeightString = getDeviceOverrideValue(res, R.array.keyboard_heights);
+        final String keyboardHeightInDp = getDeviceOverrideValue(
+                res, R.array.keyboard_heights, null /* defaultValue */);
         final float keyboardHeight;
-        if (TextUtils.isEmpty(keyboardHeightString)) {
-            keyboardHeight = res.getDimension(R.dimen.keyboardHeight);
+        if (TextUtils.isEmpty(keyboardHeightInDp)) {
+            keyboardHeight = res.getDimension(R.dimen.config_default_keyboard_height);
         } else {
-            keyboardHeight = Float.parseFloat(keyboardHeightString) * dm.density;
+            keyboardHeight = Float.parseFloat(keyboardHeightInDp) * dm.density;
         }
         final float maxKeyboardHeight = res.getFraction(
-                R.fraction.maxKeyboardHeight, dm.heightPixels, dm.heightPixels);
+                R.fraction.config_max_keyboard_height, dm.heightPixels, dm.heightPixels);
         float minKeyboardHeight = res.getFraction(
-                R.fraction.minKeyboardHeight, dm.heightPixels, dm.heightPixels);
+                R.fraction.config_min_keyboard_height, dm.heightPixels, dm.heightPixels);
         if (minKeyboardHeight < 0.0f) {
             // Specified fraction was negative, so it should be calculated against display
             // width.
             minKeyboardHeight = -res.getFraction(
-                    R.fraction.minKeyboardHeight, dm.widthPixels, dm.widthPixels);
+                    R.fraction.config_min_keyboard_height, dm.widthPixels, dm.widthPixels);
         }
         // Keyboard height will not exceed maxKeyboardHeight and will not be less than
         // minKeyboardHeight.
@@ -260,6 +225,10 @@
         return dimension >= 0;
     }
 
+    public static float getFloatFromFraction(final Resources res, final int fractionResId) {
+        return res.getFraction(fractionResId, 1, 1);
+    }
+
     public static float getFraction(final TypedArray a, final int index, final float defValue) {
         final TypedValue value = a.peekValue(index);
         if (value == null || !isFractionValue(value)) {
diff --git a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
index 2c9e3b1..1ea16e6 100644
--- a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
+++ b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java
@@ -30,25 +30,23 @@
      * Execute {@link #job(Resources)} method in specified system locale exclusively.
      *
      * @param res the resources to use.
-     * @param newLocale the locale to change to.
+     * @param newLocale the locale to change to. Run in system locale if null.
      * @return the value returned from {@link #job(Resources)}.
      */
     public T runInLocale(final Resources res, final Locale newLocale) {
         synchronized (sLockForRunInLocale) {
             final Configuration conf = res.getConfiguration();
-            final Locale oldLocale = conf.locale;
-            final boolean needsChange = (newLocale != null && !newLocale.equals(oldLocale));
+            if (newLocale == null || newLocale.equals(conf.locale)) {
+                return job(res);
+            }
+            final Locale savedLocale = conf.locale;
             try {
-                if (needsChange) {
-                    conf.locale = newLocale;
-                    res.updateConfiguration(conf, null);
-                }
+                conf.locale = newLocale;
+                res.updateConfiguration(conf, null);
                 return job(res);
             } finally {
-                if (needsChange) {
-                    conf.locale = oldLocale;
-                    res.updateConfiguration(conf, null);
-                }
+                conf.locale = savedLocale;
+                res.updateConfiguration(conf, null);
             }
         }
     }
diff --git a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
new file mode 100644
index 0000000..a76a6df
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
@@ -0,0 +1,141 @@
+/*
+ * 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.utils;
+
+import java.util.Locale;
+import java.util.TreeMap;
+
+/**
+ * A class to help with handling different writing scripts.
+ */
+public class ScriptUtils {
+    // Used for hardware keyboards
+    public static final int SCRIPT_UNKNOWN = -1;
+    // TODO: should we use ISO 15924 identifiers instead?
+    public static final int SCRIPT_LATIN = 0;
+    public static final int SCRIPT_CYRILLIC = 1;
+    public static final int SCRIPT_GREEK = 2;
+    public static final int SCRIPT_ARABIC = 3;
+    public static final int SCRIPT_HEBREW = 4;
+    public static final int SCRIPT_ARMENIAN = 5;
+    public static final int SCRIPT_GEORGIAN = 6;
+    public static final TreeMap<String, Integer> mSpellCheckerLanguageToScript;
+    static {
+        // List of the supported languages and their associated script. We won't check
+        // words written in another script than the selected script, because we know we
+        // don't have those in our dictionary so we will underline everything and we
+        // will never have any suggestions, so it makes no sense checking them, and this
+        // is done in {@link #shouldFilterOut}. Also, the script is used to choose which
+        // proximity to pass to the dictionary descent algorithm.
+        // IMPORTANT: this only contains languages - do not write countries in there.
+        // Only the language is searched from the map.
+        mSpellCheckerLanguageToScript = new TreeMap<>();
+        mSpellCheckerLanguageToScript.put("cs", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("da", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("de", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("el", SCRIPT_GREEK);
+        mSpellCheckerLanguageToScript.put("en", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("es", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("fi", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("fr", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("hr", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("it", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("lt", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("lv", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("nb", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("nl", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("pt", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("sl", SCRIPT_LATIN);
+        mSpellCheckerLanguageToScript.put("ru", SCRIPT_CYRILLIC);
+    }
+    /*
+     * Returns whether the code point is a letter that makes sense for the specified
+     * locale for this spell checker.
+     * The dictionaries supported by Latin IME are described in res/xml/spellchecker.xml
+     * and is limited to EFIGS languages and Russian.
+     * Hence at the moment this explicitly tests for Cyrillic characters or Latin characters
+     * as appropriate, and explicitly excludes CJK, Arabic and Hebrew characters.
+     */
+    public static boolean isLetterPartOfScript(final int codePoint, final int scriptId) {
+        switch (scriptId) {
+        case SCRIPT_LATIN:
+            // Our supported latin script dictionaries (EFIGS) at the moment only include
+            // characters in the C0, C1, Latin Extended A and B, IPA extensions unicode
+            // blocks. As it happens, those are back-to-back in the code range 0x40 to 0x2AF,
+            // so the below is a very efficient way to test for it. As for the 0-0x3F, it's
+            // excluded from isLetter anyway.
+            return codePoint <= 0x2AF && Character.isLetter(codePoint);
+        case SCRIPT_CYRILLIC:
+            // All Cyrillic characters are in the 400~52F block. There are some in the upper
+            // Unicode range, but they are archaic characters that are not used in modern
+            // Russian and are not used by our dictionary.
+            return codePoint >= 0x400 && codePoint <= 0x52F && Character.isLetter(codePoint);
+        case SCRIPT_GREEK:
+            // Greek letters are either in the 370~3FF range (Greek & Coptic), or in the
+            // 1F00~1FFF range (Greek extended). Our dictionary contains both sort of characters.
+            // Our dictionary also contains a few words with 0xF2; it would be best to check
+            // if that's correct, but a web search does return results for these words so
+            // they are probably okay.
+            return (codePoint >= 0x370 && codePoint <= 0x3FF)
+                    || (codePoint >= 0x1F00 && codePoint <= 0x1FFF)
+                    || codePoint == 0xF2;
+        case SCRIPT_ARABIC:
+            // Arabic letters can be in any of the following blocks:
+            // Arabic U+0600..U+06FF
+            // Arabic Supplement U+0750..U+077F
+            // Arabic Extended-A U+08A0..U+08FF
+            // Arabic Presentation Forms-A U+FB50..U+FDFF
+            // Arabic Presentation Forms-B U+FE70..U+FEFF
+            return (codePoint >= 0x600 && codePoint <= 0x6FF)
+                    || (codePoint >= 0x750 && codePoint <= 0x77F)
+                    || (codePoint >= 0x8A0 && codePoint <= 0x8FF)
+                    || (codePoint >= 0xFB50 && codePoint <= 0xFDFF)
+                    || (codePoint >= 0xFE70 && codePoint <= 0xFEFF);
+        case SCRIPT_HEBREW:
+            // Hebrew letters are in the Hebrew unicode block, which spans from U+0590 to U+05FF,
+            // or in the Alphabetic Presentation Forms block, U+FB00..U+FB4F, but only in the
+            // Hebrew part of that block, which is U+FB1D..U+FB4F.
+            return (codePoint >= 0x590 && codePoint <= 0x5FF
+                    || codePoint >= 0xFB1D && codePoint <= 0xFB4F);
+        case SCRIPT_ARMENIAN:
+            // Armenian letters are in the Armenian unicode block, U+0530..U+058F and
+            // Alphabetic Presentation Forms block, U+FB00..U+FB4F, but only in the Armenian part
+            // of that block, which is U+FB13..U+FB17.
+            return (codePoint >= 0x530 && codePoint <= 0x58F
+                    || codePoint >= 0xFB13 && codePoint <= 0xFB17);
+        case SCRIPT_GEORGIAN:
+            // Georgian letters are in the Georgian unicode block, U+10A0..U+10FF,
+            // or Georgian supplement block, U+2D00..U+2D2F
+            return (codePoint >= 0x10A0 && codePoint <= 0x10FF
+                    || codePoint >= 0x2D00 && codePoint <= 0x2D2F);
+        case SCRIPT_UNKNOWN:
+            return true;
+        default:
+            // Should never come here
+            throw new RuntimeException("Impossible value of script: " + scriptId);
+        }
+    }
+
+    public static int getScriptFromSpellCheckerLocale(final Locale locale) {
+        final Integer script = mSpellCheckerLanguageToScript.get(locale.getLanguage());
+        if (null == script) {
+            throw new RuntimeException("We have been called with an unsupported language: \""
+                    + locale.getLanguage() + "\". Framework bug?");
+        }
+        return script;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java b/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java
new file mode 100644
index 0000000..1ca895f
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/SpacebarLanguageUtils.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.view.inputmethod.InputMethodSubtype;
+
+public final class SpacebarLanguageUtils {
+    private SpacebarLanguageUtils() {
+        // Intentional empty constructor for utility class.
+    }
+
+    // InputMethodSubtype's display name for spacebar text in its locale.
+    //        isAdditionalSubtype (T=true, F=false)
+    // locale layout  |  Middle      Full
+    // ------ ------- - --------- ----------------------
+    //  en_US qwerty  F  English   English (US)           exception
+    //  en_GB qwerty  F  English   English (UK)           exception
+    //  es_US spanish F  Español   Español (EE.UU.)       exception
+    //  fr    azerty  F  Français  Français
+    //  fr_CA qwerty  F  Français  Français (Canada)
+    //  fr_CH swiss   F  Français  Français (Suisse)
+    //  de    qwertz  F  Deutsch   Deutsch
+    //  de_CH swiss   T  Deutsch   Deutsch (Schweiz)
+    //  zz    qwerty  F  QWERTY    QWERTY
+    //  fr    qwertz  T  Français  Français
+    //  de    qwerty  T  Deutsch   Deutsch
+    //  en_US azerty  T  English   English (US)
+    //  zz    azerty  T  AZERTY    AZERTY
+    // Get InputMethodSubtype's full display name in its locale.
+    public static String getFullDisplayName(final InputMethodSubtype subtype) {
+        if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
+            return SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(subtype);
+        }
+        return SubtypeLocaleUtils.getSubtypeLocaleDisplayName(subtype.getLocale());
+    }
+
+    // Get InputMethodSubtype's middle display name in its locale.
+    public static String getMiddleDisplayName(final InputMethodSubtype subtype) {
+        if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
+            return SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(subtype);
+        }
+        return SubtypeLocaleUtils.getSubtypeLanguageDisplayName(subtype.getLocale());
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/SpannableStringUtils.java b/java/src/com/android/inputmethod/latin/utils/SpannableStringUtils.java
index b51fd93..38164cb 100644
--- a/java/src/com/android/inputmethod/latin/utils/SpannableStringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/SpannableStringUtils.java
@@ -22,6 +22,7 @@
 import android.text.SpannedString;
 import android.text.TextUtils;
 import android.text.style.SuggestionSpan;
+import android.text.style.URLSpan;
 
 public final class SpannableStringUtils {
     /**
@@ -40,12 +41,17 @@
      * are out of range in <code>dest</code>.
      */
     public static void copyNonParagraphSuggestionSpansFrom(Spanned source, int start, int end,
-                                     Spannable dest, int destoff) {
+            Spannable dest, int destoff) {
         Object[] spans = source.getSpans(start, end, SuggestionSpan.class);
 
         for (int i = 0; i < spans.length; i++) {
             int fl = source.getSpanFlags(spans[i]);
-            if (0 != (fl & Spannable.SPAN_PARAGRAPH)) continue;
+            // We don't care about the PARAGRAPH flag in LatinIME code. However, if this flag
+            // is set, Spannable#setSpan will throw an exception unless the span is on the edge
+            // of a word. But the spans have been split into two by the getText{Before,After}Cursor
+            // methods, so after concatenation they may end in the middle of a word.
+            // Since we don't use them, we can just remove them and avoid crashing.
+            fl &= ~Spannable.SPAN_PARAGRAPH;
 
             int st = source.getSpanStart(spans[i]);
             int en = source.getSpanEnd(spans[i]);
@@ -107,4 +113,16 @@
 
         return new SpannedString(ss);
     }
+
+    public static boolean hasUrlSpans(final CharSequence text,
+            final int startIndex, final int endIndex) {
+        if (!(text instanceof Spanned)) {
+            return false; // Not spanned, so no link
+        }
+        final Spanned spanned = (Spanned)text;
+        // getSpans(x, y) does not return spans that start on x or end on y. x-1, y+1 does the
+        // trick, and works in all cases even if startIndex <= 0 or endIndex >= text.length().
+        final URLSpan[] spans = spanned.getSpans(startIndex - 1, endIndex + 1, URLSpan.class);
+        return null != spans && spans.length > 0;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/StaticInnerHandlerWrapper.java b/java/src/com/android/inputmethod/latin/utils/StaticInnerHandlerWrapper.java
deleted file mode 100644
index 44e5d17..0000000
--- a/java/src/com/android/inputmethod/latin/utils/StaticInnerHandlerWrapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import android.os.Handler;
-import android.os.Looper;
-
-import java.lang.ref.WeakReference;
-
-public class StaticInnerHandlerWrapper<T> extends Handler {
-    private final WeakReference<T> mOuterInstanceRef;
-
-    public StaticInnerHandlerWrapper(final T outerInstance) {
-        this(outerInstance, Looper.myLooper());
-    }
-
-    public StaticInnerHandlerWrapper(final T outerInstance, final Looper looper) {
-        super(looper);
-        if (outerInstance == null) {
-            throw new NullPointerException("outerInstance is null");
-        }
-        mOuterInstanceRef = new WeakReference<T>(outerInstance);
-    }
-
-    public T getOuterInstance() {
-        return mOuterInstanceRef.get();
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/StatsUtils.java b/java/src/com/android/inputmethod/latin/utils/StatsUtils.java
new file mode 100644
index 0000000..79c19d0
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/StatsUtils.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.Context;
+import com.android.inputmethod.latin.settings.SettingsValues;
+
+public final class StatsUtils {
+    public static void init(final Context context) {
+    }
+
+    public static void onCreate(final SettingsValues settingsValues) {
+    }
+
+    public static void onLoadSettings(final SettingsValues settingsValues) {
+    }
+
+    public static void onDestroy() {
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
index a365483..38f0b3f 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -16,29 +16,27 @@
 
 package com.android.inputmethod.latin.utils;
 
+import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
+
+import android.text.Spanned;
+import android.text.TextUtils;
+
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.settings.SettingsValues;
 
-import android.text.TextUtils;
-import android.util.JsonReader;
-import android.util.JsonWriter;
-import android.util.Log;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.Arrays;
 import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public final class StringUtils {
-    private static final String TAG = StringUtils.class.getSimpleName();
     public static final int CAPITALIZE_NONE = 0;  // No caps, or mixed case
     public static final int CAPITALIZE_FIRST = 1; // First only
     public static final int CAPITALIZE_ALL = 2;   // All caps
 
+    private static final String EMPTY_STRING = "";
+
     private StringUtils() {
         // This utility class is not publicly instantiable.
     }
@@ -50,7 +48,7 @@
 
     public static String newSingleCodePointString(int codePoint) {
         if (Character.charCount(codePoint) == 1) {
-            // Optimization: avoid creating an temporary array for characters that are
+            // Optimization: avoid creating a temporary array for characters that are
             // represented by a single char value
             return String.valueOf((char) codePoint);
         }
@@ -80,27 +78,16 @@
         return containsInArray(text, extraValues.split(SEPARATOR_FOR_COMMA_SPLITTABLE_TEXT));
     }
 
-    public static String appendToCommaSplittableTextIfNotExists(final String text,
-            final String extraValues) {
-        if (TextUtils.isEmpty(extraValues)) {
-            return text;
-        }
-        if (containsInCommaSplittableText(text, extraValues)) {
-            return extraValues;
-        }
-        return extraValues + SEPARATOR_FOR_COMMA_SPLITTABLE_TEXT + text;
-    }
-
     public static String removeFromCommaSplittableTextIfExists(final String text,
             final String extraValues) {
         if (TextUtils.isEmpty(extraValues)) {
-            return "";
+            return EMPTY_STRING;
         }
         final String[] elements = extraValues.split(SEPARATOR_FOR_COMMA_SPLITTABLE_TEXT);
         if (!containsInArray(text, elements)) {
             return extraValues;
         }
-        final ArrayList<String> result = CollectionUtils.newArrayList(elements.length - 1);
+        final ArrayList<String> result = new ArrayList<>(elements.length - 1);
         for (final String element : elements) {
             if (!text.equals(element)) {
                 result.add(element);
@@ -162,20 +149,87 @@
 
     private static final int[] EMPTY_CODEPOINTS = {};
 
-    public static int[] toCodePointArray(final String string) {
-        final int length = string.length();
+    public static int[] toCodePointArray(final CharSequence charSequence) {
+        return toCodePointArray(charSequence, 0, charSequence.length());
+    }
+
+    /**
+     * Converts a range of a string to an array of code points.
+     * @param charSequence the source string.
+     * @param startIndex the start index inside the string in java chars, inclusive.
+     * @param endIndex the end index inside the string in java chars, exclusive.
+     * @return a new array of code points. At most endIndex - startIndex, but possibly less.
+     */
+    public static int[] toCodePointArray(final CharSequence charSequence,
+            final int startIndex, final int endIndex) {
+        final int length = charSequence.length();
         if (length <= 0) {
             return EMPTY_CODEPOINTS;
         }
-        final int[] codePoints = new int[string.codePointCount(0, length)];
+        final int[] codePoints =
+                new int[Character.codePointCount(charSequence, startIndex, endIndex)];
+        copyCodePointsAndReturnCodePointCount(codePoints, charSequence, startIndex, endIndex,
+                false /* downCase */);
+        return codePoints;
+    }
+
+    /**
+     * Copies the codepoints in a CharSequence to an int array.
+     *
+     * This method assumes there is enough space in the array to store the code points. The size
+     * can be measured with Character#codePointCount(CharSequence, int, int) before passing to this
+     * method. If the int array is too small, an ArrayIndexOutOfBoundsException will be thrown.
+     * Also, this method makes no effort to be thread-safe. Do not modify the CharSequence while
+     * this method is running, or the behavior is undefined.
+     * This method can optionally downcase code points before copying them, but it pays no attention
+     * to locale while doing so.
+     *
+     * @param destination the int array.
+     * @param charSequence the CharSequence.
+     * @param startIndex the start index inside the string in java chars, inclusive.
+     * @param endIndex the end index inside the string in java chars, exclusive.
+     * @param downCase if this is true, code points will be downcased before being copied.
+     * @return the number of copied code points.
+     */
+    public static int copyCodePointsAndReturnCodePointCount(final int[] destination,
+            final CharSequence charSequence, final int startIndex, final int endIndex,
+            final boolean downCase) {
         int destIndex = 0;
-        for (int index = 0; index < length; index = string.offsetByCodePoints(index, 1)) {
-            codePoints[destIndex] = string.codePointAt(index);
+        for (int index = startIndex; index < endIndex;
+                index = Character.offsetByCodePoints(charSequence, index, 1)) {
+            final int codePoint = Character.codePointAt(charSequence, index);
+            // TODO: stop using this, as it's not aware of the locale and does not always do
+            // the right thing.
+            destination[destIndex] = downCase ? Character.toLowerCase(codePoint) : codePoint;
             destIndex++;
         }
+        return destIndex;
+    }
+
+    public static int[] toSortedCodePointArray(final String string) {
+        final int[] codePoints = toCodePointArray(string);
+        Arrays.sort(codePoints);
         return codePoints;
     }
 
+    /**
+     * Construct a String from a code point array
+     *
+     * @param codePoints a code point array that is null terminated when its logical length is
+     * shorter than the array length.
+     * @return a string constructed from the code point array.
+     */
+    public static String getStringFromNullTerminatedCodePointArray(final int[] codePoints) {
+        int stringLength = codePoints.length;
+        for (int i = 0; i < codePoints.length; i++) {
+            if (codePoints[i] == 0) {
+                stringLength = i;
+                break;
+            }
+        }
+        return new String(codePoints, 0 /* offset */, stringLength);
+    }
+
     // This method assumes the text is not null. For the empty string, it returns CAPITALIZE_NONE.
     public static int getCapitalizationType(final String text) {
         // If the first char is not uppercase, then the word is either all lower case or
@@ -239,65 +293,40 @@
         return true;
     }
 
-    @UsedForTesting
-    public static boolean looksValidForDictionaryInsertion(final CharSequence text,
-            final SettingsValues settings) {
-        if (TextUtils.isEmpty(text)) return false;
-        final int length = text.length();
-        int i = 0;
-        int digitCount = 0;
-        while (i < length) {
-            final int codePoint = Character.codePointAt(text, i);
-            final int charCount = Character.charCount(codePoint);
-            i += charCount;
-            if (Character.isDigit(codePoint)) {
-                // Count digits: see below
-                digitCount += charCount;
-                continue;
-            }
-            if (!settings.isWordCodePoint(codePoint)) return false;
-        }
-        // We reject strings entirely comprised of digits to avoid using PIN codes or credit
-        // card numbers. It would come in handy for word prediction though; a good example is
-        // when writing one's address where the street number is usually quite discriminative,
-        // as well as the postal code.
-        return digitCount < length;
-    }
-
     public static boolean isIdenticalAfterCapitalizeEachWord(final String text,
-            final String separators) {
-        boolean needCapsNext = true;
+            final int[] sortedSeparators) {
+        boolean needsCapsNext = true;
         final int len = text.length();
         for (int i = 0; i < len; i = text.offsetByCodePoints(i, 1)) {
             final int codePoint = text.codePointAt(i);
             if (Character.isLetter(codePoint)) {
-                if ((needCapsNext && !Character.isUpperCase(codePoint))
-                        || (!needCapsNext && !Character.isLowerCase(codePoint))) {
+                if ((needsCapsNext && !Character.isUpperCase(codePoint))
+                        || (!needsCapsNext && !Character.isLowerCase(codePoint))) {
                     return false;
                 }
             }
             // We need a capital letter next if this is a separator.
-            needCapsNext = (-1 != separators.indexOf(codePoint));
+            needsCapsNext = (Arrays.binarySearch(sortedSeparators, codePoint) >= 0);
         }
         return true;
     }
 
     // TODO: like capitalizeFirst*, this does not work perfectly for Dutch because of the IJ digraph
     // which should be capitalized together in *some* cases.
-    public static String capitalizeEachWord(final String text, final String separators,
+    public static String capitalizeEachWord(final String text, final int[] sortedSeparators,
             final Locale locale) {
         final StringBuilder builder = new StringBuilder();
-        boolean needCapsNext = true;
+        boolean needsCapsNext = true;
         final int len = text.length();
         for (int i = 0; i < len; i = text.offsetByCodePoints(i, 1)) {
             final String nextChar = text.substring(i, text.offsetByCodePoints(i, 1));
-            if (needCapsNext) {
+            if (needsCapsNext) {
                 builder.append(nextChar.toUpperCase(locale));
             } else {
                 builder.append(nextChar.toLowerCase(locale));
             }
             // We need a capital letter next if this is a separator.
-            needCapsNext = (-1 != separators.indexOf(nextChar.codePointAt(0)));
+            needsCapsNext = (Arrays.binarySearch(sortedSeparators, nextChar.codePointAt(0)) >= 0);
         }
         return builder.toString();
     }
@@ -328,7 +357,7 @@
         boolean hasPeriod = false;
         int codePoint = 0;
         while (i > 0) {
-            codePoint =  Character.codePointBefore(text, i);
+            codePoint = Character.codePointBefore(text, i);
             if (codePoint < Constants.CODE_PERIOD || codePoint > 'z') {
                 // Handwavy heuristic to see if that's a URL character. Anything between period
                 // and z. This includes all lower- and upper-case ascii letters, period,
@@ -367,7 +396,49 @@
         return false;
     }
 
-    public static boolean isEmptyStringOrWhiteSpaces(String s) {
+    /**
+     * Examines the string and returns whether we're inside a double quote.
+     *
+     * This is used to decide whether we should put an automatic space before or after a double
+     * quote character. If we're inside a quotation, then we want to close it, so we want a space
+     * after and not before. Otherwise, we want to open the quotation, so we want a space before
+     * and not after. Exception: after a digit, we never want a space because the "inch" or
+     * "minutes" use cases is dominant after digits.
+     * In the practice, we determine whether we are in a quotation or not by finding the previous
+     * double quote character, and looking at whether it's followed by whitespace. If so, that
+     * was a closing quotation mark, so we're not inside a double quote. If it's not followed
+     * by whitespace, then it was an opening quotation mark, and we're inside a quotation.
+     *
+     * @param text the text to examine.
+     * @return whether we're inside a double quote.
+     */
+    public static boolean isInsideDoubleQuoteOrAfterDigit(final CharSequence text) {
+        int i = text.length();
+        if (0 == i) return false;
+        int codePoint = Character.codePointBefore(text, i);
+        if (Character.isDigit(codePoint)) return true;
+        int prevCodePoint = 0;
+        while (i > 0) {
+            codePoint = Character.codePointBefore(text, i);
+            if (Constants.CODE_DOUBLE_QUOTE == codePoint) {
+                // If we see a double quote followed by whitespace, then that
+                // was a closing quote.
+                if (Character.isWhitespace(prevCodePoint)) return false;
+            }
+            if (Character.isWhitespace(codePoint) && Constants.CODE_DOUBLE_QUOTE == prevCodePoint) {
+                // If we see a double quote preceded by whitespace, then that
+                // was an opening quote. No need to continue seeking.
+                return true;
+            }
+            i -= Character.charCount(codePoint);
+            prevCodePoint = codePoint;
+        }
+        // We reached the start of text. If the first char is a double quote, then we're inside
+        // a double quote. Otherwise we're not.
+        return Constants.CODE_DOUBLE_QUOTE == codePoint;
+    }
+
+    public static boolean isEmptyStringOrWhiteSpaces(final String s) {
         final int N = codePointCount(s);
         for (int i = 0; i < N; ++i) {
             if (!Character.isWhitespace(s.codePointAt(i))) {
@@ -378,9 +449,9 @@
     }
 
     @UsedForTesting
-    public static String byteArrayToHexString(byte[] bytes) {
+    public static String byteArrayToHexString(final byte[] bytes) {
         if (bytes == null || bytes.length == 0) {
-            return "";
+            return EMPTY_STRING;
         }
         final StringBuilder sb = new StringBuilder();
         for (byte b : bytes) {
@@ -393,7 +464,7 @@
      * Convert hex string to byte array. The string length must be an even number.
      */
     @UsedForTesting
-    public static byte[] hexStringToByteArray(String hexString) {
+    public static byte[] hexStringToByteArray(final String hexString) {
         if (TextUtils.isEmpty(hexString)) {
             return null;
         }
@@ -410,66 +481,117 @@
         return bytes;
     }
 
-    public static List<Object> jsonStrToList(String s) {
-        final ArrayList<Object> retval = CollectionUtils.newArrayList();
-        final JsonReader reader = new JsonReader(new StringReader(s));
-        try {
-            reader.beginArray();
-            while(reader.hasNext()) {
-                reader.beginObject();
-                while (reader.hasNext()) {
-                    final String name = reader.nextName();
-                    if (name.equals(Integer.class.getSimpleName())) {
-                        retval.add(reader.nextInt());
-                    } else if (name.equals(String.class.getSimpleName())) {
-                        retval.add(reader.nextString());
-                    } else {
-                        Log.w(TAG, "Invalid name: " + name);
-                        reader.skipValue();
-                    }
-                }
-                reader.endObject();
-            }
-            reader.endArray();
-            return retval;
-        } catch (IOException e) {
-        } finally {
-            try {
-                reader.close();
-            } catch (IOException e) {
-            }
-        }
-        return Collections.<Object>emptyList();
+    public static String toUpperCaseOfStringForLocale(final String text,
+            final boolean needsToUpperCase, final Locale locale) {
+        if (text == null || !needsToUpperCase) return text;
+        return text.toUpperCase(locale);
     }
 
-    public static String listToJsonStr(List<Object> list) {
-        if (list == null || list.isEmpty()) {
-            return "";
+    public static int toUpperCaseOfCodeForLocale(final int code, final boolean needsToUpperCase,
+            final Locale locale) {
+        if (!Constants.isLetterCode(code) || !needsToUpperCase) return code;
+        final String text = newSingleCodePointString(code);
+        final String casedText = toUpperCaseOfStringForLocale(
+                text, needsToUpperCase, locale);
+        return codePointCount(casedText) == 1
+                ? casedText.codePointAt(0) : CODE_UNSPECIFIED;
+    }
+
+    public static int getTrailingSingleQuotesCount(final CharSequence charSequence) {
+        final int lastIndex = charSequence.length() - 1;
+        int i = lastIndex;
+        while (i >= 0 && charSequence.charAt(i) == Constants.CODE_SINGLE_QUOTE) {
+            --i;
         }
-        final StringWriter sw = new StringWriter();
-        final JsonWriter writer = new JsonWriter(sw);
-        try {
-            writer.beginArray();
-            for (final Object o : list) {
-                writer.beginObject();
-                if (o instanceof Integer) {
-                    writer.name(Integer.class.getSimpleName()).value((Integer)o);
-                } else if (o instanceof String) {
-                    writer.name(String.class.getSimpleName()).value((String)o);
+        return lastIndex - i;
+    }
+
+    /**
+     * Splits the given {@code charSequence} with at occurrences of the given {@code regex}.
+     * <p>
+     * This is equivalent to
+     * {@code charSequence.toString().split(regex, preserveTrailingEmptySegments ? -1 : 0)}
+     * except that the spans are preserved in the result array.
+     * </p>
+     * @param input the character sequence to be split.
+     * @param regex the regex pattern to be used as the separator.
+     * @param preserveTrailingEmptySegments {@code true} to preserve the trailing empty
+     * segments. Otherwise, trailing empty segments will be removed before being returned.
+     * @return the array which contains the result. All the spans in the {@param input} is
+     * preserved.
+     */
+    @UsedForTesting
+    public static CharSequence[] split(final CharSequence charSequence, final String regex,
+            final boolean preserveTrailingEmptySegments) {
+        // A short-cut for non-spanned strings.
+        if (!(charSequence instanceof Spanned)) {
+            // -1 means that trailing empty segments will be preserved.
+            return charSequence.toString().split(regex, preserveTrailingEmptySegments ? -1 : 0);
+        }
+
+        // Hereafter, emulate String.split for CharSequence.
+        final ArrayList<CharSequence> sequences = new ArrayList<>();
+        final Matcher matcher = Pattern.compile(regex).matcher(charSequence);
+        int nextStart = 0;
+        boolean matched = false;
+        while (matcher.find()) {
+            sequences.add(charSequence.subSequence(nextStart, matcher.start()));
+            nextStart = matcher.end();
+            matched = true;
+        }
+        if (!matched) {
+            // never matched. preserveTrailingEmptySegments is ignored in this case.
+            return new CharSequence[] { charSequence };
+        }
+        sequences.add(charSequence.subSequence(nextStart, charSequence.length()));
+        if (!preserveTrailingEmptySegments) {
+            for (int i = sequences.size() - 1; i >= 0; --i) {
+                if (!TextUtils.isEmpty(sequences.get(i))) {
+                    break;
                 }
-                writer.endObject();
-            }
-            writer.endArray();
-            return sw.toString();
-        } catch (IOException e) {
-        } finally {
-            try {
-                if (writer != null) {
-                    writer.close();
-                }
-            } catch (IOException e) {
+                sequences.remove(i);
             }
         }
-        return "";
+        return sequences.toArray(new CharSequence[sequences.size()]);
+    }
+
+    @UsedForTesting
+    public static class Stringizer<E> {
+        public String stringize(final E element) {
+            return element != null ? element.toString() : "null";
+        }
+
+        @UsedForTesting
+        public final String join(final E[] array) {
+            return joinStringArray(toStringArray(array), null /* delimiter */);
+        }
+
+        @UsedForTesting
+        public final String join(final E[] array, final String delimiter) {
+            return joinStringArray(toStringArray(array), delimiter);
+        }
+
+        protected String[] toStringArray(final E[] array) {
+            final String[] stringArray = new String[array.length];
+            for (int index = 0; index < array.length; index++) {
+                stringArray[index] = stringize(array[index]);
+            }
+            return stringArray;
+        }
+
+        protected String joinStringArray(final String[] stringArray, final String delimiter) {
+            if (stringArray == null) {
+                return "null";
+            }
+            if (delimiter == null) {
+                return Arrays.toString(stringArray);
+            }
+            final StringBuilder sb = new StringBuilder();
+            for (int index = 0; index < stringArray.length; index++) {
+                sb.append(index == 0 ? "[" : delimiter);
+                sb.append(stringArray[index]);
+            }
+            return sb + "]";
+        }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
index 102a41b..351d014 100644
--- a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
@@ -25,17 +25,18 @@
 import android.util.Log;
 import android.view.inputmethod.InputMethodSubtype;
 
-import com.android.inputmethod.latin.DictionaryFactory;
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.R;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Locale;
 
 public final class SubtypeLocaleUtils {
-    static final String TAG = SubtypeLocaleUtils.class.getSimpleName();
-    // This class must be located in the same package as LatinIME.java.
-    private static final String RESOURCE_PACKAGE_NAME =
-            DictionaryFactory.class.getPackage().getName();
+    private static final String TAG = SubtypeLocaleUtils.class.getSimpleName();
+
+    // This reference class {@link Constants} must be located in the same package as LatinIME.java.
+    private static final String RESOURCE_PACKAGE_NAME = Constants.class.getPackage().getName();
 
     // Special language code to represent "no language".
     public static final String NO_LANGUAGE = "zz";
@@ -43,21 +44,19 @@
     public static final String EMOJI = "emoji";
     public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic;
 
-    private static boolean sInitialized = false;
+    private static volatile boolean sInitialized = false;
+    private static final Object sInitializeLock = new Object();
     private static Resources sResources;
     private static String[] sPredefinedKeyboardLayoutSet;
     // Keyboard layout to its display name map.
-    private static final HashMap<String, String> sKeyboardLayoutToDisplayNameMap =
-            CollectionUtils.newHashMap();
+    private static final HashMap<String, String> sKeyboardLayoutToDisplayNameMap = new HashMap<>();
     // Keyboard layout to subtype name resource id map.
-    private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap =
-            CollectionUtils.newHashMap();
+    private static final HashMap<String, Integer> sKeyboardLayoutToNameIdsMap = new HashMap<>();
     // Exceptional locale to subtype name resource id map.
-    private static final HashMap<String, Integer> sExceptionalLocaleToNameIdsMap =
-            CollectionUtils.newHashMap();
+    private static final HashMap<String, Integer> sExceptionalLocaleToNameIdsMap = new HashMap<>();
     // Exceptional locale to subtype name with layout resource id map.
     private static final HashMap<String, Integer> sExceptionalLocaleToWithLayoutNameIdsMap =
-            CollectionUtils.newHashMap();
+            new HashMap<>();
     private static final String SUBTYPE_NAME_RESOURCE_PREFIX =
             "string/subtype_";
     private static final String SUBTYPE_NAME_RESOURCE_GENERIC_PREFIX =
@@ -69,16 +68,23 @@
     // Keyboard layout set name for the subtypes that don't have a keyboardLayoutSet extra value.
     // This is for compatibility to keep the same subtype ids as pre-JellyBean.
     private static final HashMap<String, String> sLocaleAndExtraValueToKeyboardLayoutSetMap =
-            CollectionUtils.newHashMap();
+            new HashMap<>();
 
     private SubtypeLocaleUtils() {
         // Intentional empty constructor for utility class.
     }
 
     // Note that this initialization method can be called multiple times.
-    public static synchronized void init(final Context context) {
-        if (sInitialized) return;
+    public static void init(final Context context) {
+        synchronized (sInitializeLock) {
+            if (sInitialized == false) {
+                initLocked(context);
+                sInitialized = true;
+            }
+        }
+    }
 
+    private static void initLocked(final Context context) {
         final Resources res = context.getResources();
         sResources = res;
 
@@ -121,8 +127,6 @@
             final String keyboardLayoutSet = keyboardLayoutSetMap[i + 1];
             sLocaleAndExtraValueToKeyboardLayoutSetMap.put(key, keyboardLayoutSet);
         }
-
-        sInitialized = true;
     }
 
     public static String[] getPredefinedKeyboardLayoutSet() {
@@ -166,8 +170,18 @@
         return getSubtypeLocaleDisplayNameInternal(localeString, displayLocale);
     }
 
+    public static String getSubtypeLanguageDisplayName(final String localeString) {
+        final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
+        final Locale displayLocale = getDisplayLocaleOfSubtypeLocale(localeString);
+        return getSubtypeLocaleDisplayNameInternal(locale.getLanguage(), displayLocale);
+    }
+
     private static String getSubtypeLocaleDisplayNameInternal(final String localeString,
             final Locale displayLocale) {
+        if (NO_LANGUAGE.equals(localeString)) {
+            // No language subtype should be displayed in system locale.
+            return sResources.getString(R.string.subtype_no_language);
+        }
         final Integer exceptionalNameResId = sExceptionalLocaleToNameIdsMap.get(localeString);
         final String displayName;
         if (exceptionalNameResId != null) {
@@ -178,9 +192,6 @@
                 }
             };
             displayName = getExceptionalName.runInLocale(sResources, displayLocale);
-        } else if (NO_LANGUAGE.equals(localeString)) {
-            // No language subtype should be displayed in system locale.
-            return sResources.getString(R.string.subtype_no_language);
         } else {
             final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
             displayName = locale.getDisplayName(displayLocale);
@@ -197,12 +208,14 @@
     //  es_US spanish F  Español (EE.UU.)        exception
     //  fr    azerty  F  Français
     //  fr_CA qwerty  F  Français (Canada)
+    //  fr_CH swiss   F  Français (Suisse)
     //  de    qwertz  F  Deutsch
-    //  zz    qwerty  F  No language (QWERTY)    in system locale
+    //  de_CH swiss   T  Deutsch (Schweiz)
+    //  zz    qwerty  F  Alphabet (QWERTY)       in system locale
     //  fr    qwertz  T  Français (QWERTZ)
     //  de    qwerty  T  Deutsch (QWERTY)
     //  en_US azerty  T  English (US) (AZERTY)   exception
-    //  zz    azerty  T  No language (AZERTY)    in system locale
+    //  zz    azerty  T  Alphabet (AZERTY)       in system locale
 
     private static String getReplacementString(final InputMethodSubtype subtype,
             final Locale displayLocale) {
@@ -289,45 +302,27 @@
         return keyboardLayoutSet;
     }
 
-    // InputMethodSubtype's display name for spacebar text in its locale.
-    //        isAdditionalSubtype (T=true, F=false)
-    // locale layout  | Short  Middle      Full
-    // ------ ------- - ---- --------- ----------------------
-    //  en_US qwerty  F  En  English   English (US)           exception
-    //  en_GB qwerty  F  En  English   English (UK)           exception
-    //  es_US spanish F  Es  Español   Español (EE.UU.)       exception
-    //  fr    azerty  F  Fr  Français  Français
-    //  fr_CA qwerty  F  Fr  Français  Français (Canada)
-    //  de    qwertz  F  De  Deutsch   Deutsch
-    //  zz    qwerty  F      QWERTY    QWERTY
-    //  fr    qwertz  T  Fr  Français  Français
-    //  de    qwerty  T  De  Deutsch   Deutsch
-    //  en_US azerty  T  En  English   English (US)
-    //  zz    azerty  T      AZERTY    AZERTY
-
-    // Get InputMethodSubtype's full display name in its locale.
-    public static String getFullDisplayName(final InputMethodSubtype subtype) {
-        if (isNoLanguage(subtype)) {
-            return getKeyboardLayoutSetDisplayName(subtype);
-        }
-        return getSubtypeLocaleDisplayName(subtype.getLocale());
+    // TODO: Get this information from the framework instead of maintaining here by ourselves.
+    // Sorted list of known Right-To-Left language codes.
+    private static final String[] SORTED_RTL_LANGUAGES = {
+        "ar", // Arabic
+        "fa", // Persian
+        "iw", // Hebrew
+    };
+    static {
+        Arrays.sort(SORTED_RTL_LANGUAGES);
     }
 
-    // Get InputMethodSubtype's middle display name in its locale.
-    public static String getMiddleDisplayName(final InputMethodSubtype subtype) {
-        if (isNoLanguage(subtype)) {
-            return getKeyboardLayoutSetDisplayName(subtype);
-        }
-        final Locale locale = getSubtypeLocale(subtype);
-        return getSubtypeLocaleDisplayName(locale.getLanguage());
+    public static boolean isRtlLanguage(final Locale locale) {
+        final String language = locale.getLanguage();
+        return Arrays.binarySearch(SORTED_RTL_LANGUAGES, language) >= 0;
     }
 
-    // Get InputMethodSubtype's short display name in its locale.
-    public static String getShortDisplayName(final InputMethodSubtype subtype) {
-        if (isNoLanguage(subtype)) {
-            return "";
-        }
-        final Locale locale = getSubtypeLocale(subtype);
-        return StringUtils.capitalizeFirstCodePoint(locale.getLanguage(), locale);
+    public static boolean isRtlLanguage(final InputMethodSubtype subtype) {
+        return isRtlLanguage(getSubtypeLocale(subtype));
+    }
+
+    public static String getCombiningRulesExtraValue(final InputMethodSubtype subtype) {
+        return subtype.getExtraValueOf(Constants.Subtype.ExtraValue.COMBINING_RULES);
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/SuggestionResults.java b/java/src/com/android/inputmethod/latin/utils/SuggestionResults.java
new file mode 100644
index 0000000..7170bd7
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/SuggestionResults.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.define.ProductionFlags;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Locale;
+import java.util.TreeSet;
+
+/**
+ * A TreeSet of SuggestedWordInfo that is bounded in size and throws everything that's smaller
+ * than its limit
+ */
+public final class SuggestionResults extends TreeSet<SuggestedWordInfo> {
+    public final Locale mLocale;
+    public final ArrayList<SuggestedWordInfo> mRawSuggestions;
+    private final int mCapacity;
+
+    public SuggestionResults(final Locale locale, final int capacity) {
+        this(locale, sSuggestedWordInfoComparator, capacity);
+    }
+
+    public SuggestionResults(final Locale locale, final Comparator<SuggestedWordInfo> comparator,
+            final int capacity) {
+        super(comparator);
+        mLocale = locale;
+        mCapacity = capacity;
+        if (ProductionFlags.INCLUDE_RAW_SUGGESTIONS) {
+            mRawSuggestions = new ArrayList<>();
+        } else {
+            mRawSuggestions = null;
+        }
+    }
+
+    @Override
+    public boolean add(final SuggestedWordInfo e) {
+        if (size() < mCapacity) return super.add(e);
+        if (comparator().compare(e, last()) > 0) return false;
+        super.add(e);
+        pollLast(); // removes the last element
+        return true;
+    }
+
+    @Override
+    public boolean addAll(final Collection<? extends SuggestedWordInfo> e) {
+        if (null == e) return false;
+        return super.addAll(e);
+    }
+
+    private static final class SuggestedWordInfoComparator
+            implements Comparator<SuggestedWordInfo> {
+        // This comparator ranks the word info with the higher frequency first. That's because
+        // that's the order we want our elements in.
+        @Override
+        public int compare(final SuggestedWordInfo o1, final SuggestedWordInfo o2) {
+            if (o1.mScore > o2.mScore) return -1;
+            if (o1.mScore < o2.mScore) return 1;
+            if (o1.mCodePointCount < o2.mCodePointCount) return -1;
+            if (o1.mCodePointCount > o2.mCodePointCount) return 1;
+            return o1.mWord.compareTo(o2.mWord);
+        }
+    }
+
+    private static final SuggestedWordInfoComparator sSuggestedWordInfoComparator =
+            new SuggestedWordInfoComparator();
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/TargetPackageInfoGetterTask.java b/java/src/com/android/inputmethod/latin/utils/TargetPackageInfoGetterTask.java
index afbe2ec..ab2b00e 100644
--- a/java/src/com/android/inputmethod/latin/utils/TargetPackageInfoGetterTask.java
+++ b/java/src/com/android/inputmethod/latin/utils/TargetPackageInfoGetterTask.java
@@ -22,11 +22,12 @@
 import android.os.AsyncTask;
 import android.util.LruCache;
 
+import com.android.inputmethod.compat.AppWorkaroundsUtils;
+
 public final class TargetPackageInfoGetterTask extends
         AsyncTask<String, Void, PackageInfo> {
     private static final int MAX_CACHE_ENTRIES = 64; // arbitrary
-    private static final LruCache<String, PackageInfo> sCache =
-            new LruCache<String, PackageInfo>(MAX_CACHE_ENTRIES);
+    private static final LruCache<String, PackageInfo> sCache = new LruCache<>(MAX_CACHE_ENTRIES);
 
     public static PackageInfo getCachedPackageInfo(final String packageName) {
         if (null == packageName) return null;
@@ -37,17 +38,13 @@
         sCache.remove(packageName);
     }
 
-    public interface OnTargetPackageInfoKnownListener {
-        public void onTargetPackageInfoKnown(final PackageInfo info);
-    }
-
     private Context mContext;
-    private final OnTargetPackageInfoKnownListener mListener;
+    private final AsyncResultHolder<AppWorkaroundsUtils> mResult;
 
     public TargetPackageInfoGetterTask(final Context context,
-            final OnTargetPackageInfoKnownListener listener) {
+            final AsyncResultHolder<AppWorkaroundsUtils> result) {
         mContext = context;
-        mListener = listener;
+        mResult = result;
     }
 
     @Override
@@ -65,6 +62,6 @@
 
     @Override
     protected void onPostExecute(final PackageInfo info) {
-        mListener.onTargetPackageInfoKnown(info);
+        mResult.set(new AppWorkaroundsUtils(info));
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/TextRange.java b/java/src/com/android/inputmethod/latin/utils/TextRange.java
index 48b443d..dbf3b50 100644
--- a/java/src/com/android/inputmethod/latin/utils/TextRange.java
+++ b/java/src/com/android/inputmethod/latin/utils/TextRange.java
@@ -31,6 +31,7 @@
     private final int mCursorIndex;
 
     public final CharSequence mWord;
+    public final boolean mHasUrlSpans;
 
     public int getNumberOfCharsInWordBeforeCursor() {
         return mCursorIndex - mWordAtCursorStartIndex;
@@ -95,7 +96,7 @@
                 }
             }
             if (spanStart == mWordAtCursorStartIndex && spanEnd == mWordAtCursorEndIndex) {
-                // If the span does not start and stop here, we ignore it. It probably extends
+                // If the span does not start and stop here, ignore it. It probably extends
                 // past the start or end of the word, as happens in missing space correction
                 // or EasyEditSpans put by voice input.
                 spans[writeIndex++] = spans[readIndex];
@@ -105,7 +106,7 @@
     }
 
     public TextRange(final CharSequence textAtCursor, final int wordAtCursorStartIndex,
-            final int wordAtCursorEndIndex, final int cursorIndex) {
+            final int wordAtCursorEndIndex, final int cursorIndex, final boolean hasUrlSpans) {
         if (wordAtCursorStartIndex < 0 || cursorIndex < wordAtCursorStartIndex
                 || cursorIndex > wordAtCursorEndIndex
                 || wordAtCursorEndIndex > textAtCursor.length()) {
@@ -115,6 +116,7 @@
         mWordAtCursorStartIndex = wordAtCursorStartIndex;
         mWordAtCursorEndIndex = wordAtCursorEndIndex;
         mCursorIndex = cursorIndex;
+        mHasUrlSpans = hasUrlSpans;
         mWord = mTextAtCursor.subSequence(mWordAtCursorStartIndex, mWordAtCursorEndIndex);
     }
 }
\ No newline at end of file
diff --git a/java/src/com/android/inputmethod/latin/utils/TypefaceUtils.java b/java/src/com/android/inputmethod/latin/utils/TypefaceUtils.java
index 47ea1ea..fafba79 100644
--- a/java/src/com/android/inputmethod/latin/utils/TypefaceUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/TypefaceUtils.java
@@ -22,16 +22,19 @@
 import android.util.SparseArray;
 
 public final class TypefaceUtils {
+    private static final char[] KEY_LABEL_REFERENCE_CHAR = { 'M' };
+    private static final char[] KEY_NUMERIC_HINT_LABEL_REFERENCE_CHAR = { '8' };
+
     private TypefaceUtils() {
         // This utility class is not publicly instantiable.
     }
 
     // This sparse array caches key label text height in pixel indexed by key label text size.
-    private static final SparseArray<Float> sTextHeightCache = CollectionUtils.newSparseArray();
+    private static final SparseArray<Float> sTextHeightCache = new SparseArray<>();
     // Working variable for the following method.
     private static final Rect sTextHeightBounds = new Rect();
 
-    public static float getCharHeight(final char[] referenceChar, final Paint paint) {
+    private static float getCharHeight(final char[] referenceChar, final Paint paint) {
         final int key = getCharGeometryCacheKey(referenceChar[0], paint);
         synchronized (sTextHeightCache) {
             final Float cachedValue = sTextHeightCache.get(key);
@@ -47,11 +50,11 @@
     }
 
     // This sparse array caches key label text width in pixel indexed by key label text size.
-    private static final SparseArray<Float> sTextWidthCache = CollectionUtils.newSparseArray();
+    private static final SparseArray<Float> sTextWidthCache = new SparseArray<>();
     // Working variable for the following method.
     private static final Rect sTextWidthBounds = new Rect();
 
-    public static float getCharWidth(final char[] referenceChar, final Paint paint) {
+    private static float getCharWidth(final char[] referenceChar, final Paint paint) {
         final int key = getCharGeometryCacheKey(referenceChar[0], paint);
         synchronized (sTextWidthCache) {
             final Float cachedValue = sTextWidthCache.get(key);
@@ -66,11 +69,6 @@
         }
     }
 
-    public static float getStringWidth(final String string, final Paint paint) {
-        paint.getTextBounds(string, 0, string.length(), sTextWidthBounds);
-        return sTextWidthBounds.width();
-    }
-
     private static int getCharGeometryCacheKey(final char referenceChar, final Paint paint) {
         final int labelSize = (int)paint.getTextSize();
         final Typeface face = paint.getTypeface();
@@ -86,9 +84,25 @@
         }
     }
 
-    public static float getLabelWidth(final String label, final Paint paint) {
-        final Rect textBounds = new Rect();
-        paint.getTextBounds(label, 0, label.length(), textBounds);
-        return textBounds.width();
+    public static float getReferenceCharHeight(final Paint paint) {
+        return getCharHeight(KEY_LABEL_REFERENCE_CHAR, paint);
+    }
+
+    public static float getReferenceCharWidth(final Paint paint) {
+        return getCharWidth(KEY_LABEL_REFERENCE_CHAR, paint);
+    }
+
+    public static float getReferenceDigitWidth(final Paint paint) {
+        return getCharWidth(KEY_NUMERIC_HINT_LABEL_REFERENCE_CHAR, paint);
+    }
+
+    // Working variable for the following method.
+    private static final Rect sStringWidthBounds = new Rect();
+
+    public static float getStringWidth(final String string, final Paint paint) {
+        synchronized (sStringWidthBounds) {
+            paint.getTextBounds(string, 0, string.length(), sStringWidthBounds);
+            return sStringWidthBounds.width();
+        }
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/utils/UncachedInputMethodManagerUtils.java b/java/src/com/android/inputmethod/latin/utils/UncachedInputMethodManagerUtils.java
new file mode 100644
index 0000000..5df00ef
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/UncachedInputMethodManagerUtils.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodManager;
+
+/*
+ * A utility class for {@link InputMethodManager}. Unlike {@link RichInputMethodManager}, this
+ * class provides synchronous, non-cached access to {@link InputMethodManager}. The setup activity
+ * is a good example to use this class because {@link InputMethodManagerService} may not be aware of
+ * this IME immediately after this IME is installed.
+ */
+public final class UncachedInputMethodManagerUtils {
+    /**
+     * Check if the IME specified by the context is enabled.
+     * CAVEAT: This may cause a round trip IPC.
+     *
+     * @param context package context of the IME to be checked.
+     * @param imm the {@link InputMethodManager}.
+     * @return true if this IME is enabled.
+     */
+    public static boolean isThisImeEnabled(final Context context,
+            final InputMethodManager imm) {
+        final String packageName = context.getPackageName();
+        for (final InputMethodInfo imi : imm.getEnabledInputMethodList()) {
+            if (packageName.equals(imi.getPackageName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if the IME specified by the context is the current IME.
+     * CAVEAT: This may cause a round trip IPC.
+     *
+     * @param context package context of the IME to be checked.
+     * @param imm the {@link InputMethodManager}.
+     * @return true if this IME is the current IME.
+     */
+    public static boolean isThisImeCurrent(final Context context,
+            final InputMethodManager imm) {
+        final InputMethodInfo imi = getInputMethodInfoOf(context.getPackageName(), imm);
+        final String currentImeId = Settings.Secure.getString(
+                context.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
+        return imi != null && imi.getId().equals(currentImeId);
+    }
+
+    /**
+     * Get {@link InputMethodInfo} of the IME specified by the package name.
+     * CAVEAT: This may cause a round trip IPC.
+     *
+     * @param packageName package name of the IME.
+     * @param imm the {@link InputMethodManager}.
+     * @return the {@link InputMethodInfo} of the IME specified by the <code>packageName</code>,
+     * or null if not found.
+     */
+    public static InputMethodInfo getInputMethodInfoOf(final String packageName,
+            final InputMethodManager imm) {
+        for (final InputMethodInfo imi : imm.getInputMethodList()) {
+            if (packageName.equals(imi.getPackageName())) {
+                return imi;
+            }
+        }
+        return null;
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/UsabilityStudyLogUtils.java b/java/src/com/android/inputmethod/latin/utils/UsabilityStudyLogUtils.java
deleted file mode 100644
index 06826da..0000000
--- a/java/src/com/android/inputmethod/latin/utils/UsabilityStudyLogUtils.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright (C) 2016 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.utils;
-
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.inputmethodservice.InputMethodService;
-import android.net.Uri;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Process;
-import android.util.Log;
-import android.view.MotionEvent;
-
-import com.android.inputmethod.latin.LatinImeLogger;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.nio.channels.FileChannel;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-public final class UsabilityStudyLogUtils {
-    // TODO: remove code duplication with ResearchLog class
-    private static final String USABILITY_TAG = UsabilityStudyLogUtils.class.getSimpleName();
-    private static final String FILENAME = "log.txt";
-    private final Handler mLoggingHandler;
-    private File mFile;
-    private File mDirectory;
-    private InputMethodService mIms;
-    private PrintWriter mWriter;
-    private final Date mDate;
-    private final SimpleDateFormat mDateFormat;
-
-    private UsabilityStudyLogUtils() {
-        mDate = new Date();
-        mDateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss.SSSZ", Locale.US);
-
-        HandlerThread handlerThread = new HandlerThread("UsabilityStudyLogUtils logging task",
-                Process.THREAD_PRIORITY_BACKGROUND);
-        handlerThread.start();
-        mLoggingHandler = new Handler(handlerThread.getLooper());
-    }
-
-    // Initialization-on-demand holder
-    private static final class OnDemandInitializationHolder {
-        public static final UsabilityStudyLogUtils sInstance = new UsabilityStudyLogUtils();
-    }
-
-    public static UsabilityStudyLogUtils getInstance() {
-        return OnDemandInitializationHolder.sInstance;
-    }
-
-    public void init(final InputMethodService ims) {
-        mIms = ims;
-        mDirectory = ims.getFilesDir();
-    }
-
-    private void createLogFileIfNotExist() {
-        if ((mFile == null || !mFile.exists())
-                && (mDirectory != null && mDirectory.exists())) {
-            try {
-                mWriter = getPrintWriter(mDirectory, FILENAME, false);
-            } catch (final IOException e) {
-                Log.e(USABILITY_TAG, "Can't create log file.");
-            }
-        }
-    }
-
-    public static void writeBackSpace(final int x, final int y) {
-        UsabilityStudyLogUtils.getInstance().write("<backspace>\t" + x + "\t" + y);
-    }
-
-    public static void writeChar(final char c, final int x, final int y) {
-        String inputChar = String.valueOf(c);
-        switch (c) {
-            case '\n':
-                inputChar = "<enter>";
-                break;
-            case '\t':
-                inputChar = "<tab>";
-                break;
-            case ' ':
-                inputChar = "<space>";
-                break;
-        }
-        UsabilityStudyLogUtils.getInstance().write(inputChar + "\t" + x + "\t" + y);
-        LatinImeLogger.onPrintAllUsabilityStudyLogs();
-    }
-
-    public static void writeMotionEvent(final MotionEvent me) {
-        final int action = me.getActionMasked();
-        final long eventTime = me.getEventTime();
-        final int pointerCount = me.getPointerCount();
-        for (int index = 0; index < pointerCount; index++) {
-            final int id = me.getPointerId(index);
-            final int x = (int)me.getX(index);
-            final int y = (int)me.getY(index);
-            final float size = me.getSize(index);
-            final float pressure = me.getPressure(index);
-
-            final String eventTag;
-            switch (action) {
-            case MotionEvent.ACTION_UP:
-                eventTag = "[Up]";
-                break;
-            case MotionEvent.ACTION_DOWN:
-                eventTag = "[Down]";
-                break;
-            case MotionEvent.ACTION_POINTER_UP:
-                eventTag = "[PointerUp]";
-                break;
-            case MotionEvent.ACTION_POINTER_DOWN:
-                eventTag = "[PointerDown]";
-                break;
-            case MotionEvent.ACTION_MOVE:
-                eventTag = "[Move]";
-                break;
-            default:
-                eventTag = "[Action" + action + "]";
-                break;
-            }
-            getInstance().write(eventTag + eventTime + "," + id + "," + x + "," + y + "," + size
-                    + "," + pressure);
-        }
-    }
-
-    public void write(final String log) {
-        mLoggingHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                createLogFileIfNotExist();
-                final long currentTime = System.currentTimeMillis();
-                mDate.setTime(currentTime);
-
-                final String printString = String.format(Locale.US, "%s\t%d\t%s\n",
-                        mDateFormat.format(mDate), currentTime, log);
-                if (LatinImeLogger.sDBG) {
-                    Log.d(USABILITY_TAG, "Write: " + log);
-                }
-                mWriter.print(printString);
-            }
-        });
-    }
-
-    private synchronized String getBufferedLogs() {
-        mWriter.flush();
-        final StringBuilder sb = new StringBuilder();
-        final BufferedReader br = getBufferedReader();
-        String line;
-        try {
-            while ((line = br.readLine()) != null) {
-                sb.append('\n');
-                sb.append(line);
-            }
-        } catch (final IOException e) {
-            Log.e(USABILITY_TAG, "Can't read log file.");
-        } finally {
-            if (LatinImeLogger.sDBG) {
-                Log.d(USABILITY_TAG, "Got all buffered logs\n" + sb.toString());
-            }
-            try {
-                br.close();
-            } catch (final IOException e) {
-                // ignore.
-            }
-        }
-        return sb.toString();
-    }
-
-    public void emailResearcherLogsAll() {
-        mLoggingHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                final Date date = new Date();
-                date.setTime(System.currentTimeMillis());
-                final String currentDateTimeString =
-                        new SimpleDateFormat("yyyyMMdd-HHmmssZ", Locale.US).format(date);
-                if (mFile == null) {
-                    Log.w(USABILITY_TAG, "No internal log file found.");
-                    return;
-                }
-                if (mIms.checkCallingOrSelfPermission(
-                            android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
-                                    != PackageManager.PERMISSION_GRANTED) {
-                    Log.w(USABILITY_TAG, "Doesn't have the permission WRITE_EXTERNAL_STORAGE");
-                    return;
-                }
-                mWriter.flush();
-                final String destPath = Environment.getExternalStorageDirectory()
-                        + "/research-" + currentDateTimeString + ".log";
-                final File destFile = new File(destPath);
-                try {
-                    final FileInputStream srcStream = new FileInputStream(mFile);
-                    final FileOutputStream destStream = new FileOutputStream(destFile);
-                    final FileChannel src = srcStream.getChannel();
-                    final FileChannel dest = destStream.getChannel();
-                    src.transferTo(0, src.size(), dest);
-                    src.close();
-                    srcStream.close();
-                    dest.close();
-                    destStream.close();
-                } catch (final FileNotFoundException e1) {
-                    Log.w(USABILITY_TAG, e1);
-                    return;
-                } catch (final IOException e2) {
-                    Log.w(USABILITY_TAG, e2);
-                    return;
-                }
-                if (!destFile.exists()) {
-                    Log.w(USABILITY_TAG, "Dest file doesn't exist.");
-                    return;
-                }
-                final Intent intent = new Intent(Intent.ACTION_SEND);
-                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                if (LatinImeLogger.sDBG) {
-                    Log.d(USABILITY_TAG, "Destination file URI is " + destFile.toURI());
-                }
-                intent.setType("text/plain");
-                intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + destPath));
-                intent.putExtra(Intent.EXTRA_SUBJECT,
-                        "[Research Logs] " + currentDateTimeString);
-                mIms.startActivity(intent);
-            }
-        });
-    }
-
-    public void printAll() {
-        mLoggingHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                mIms.getCurrentInputConnection().commitText(getBufferedLogs(), 0);
-            }
-        });
-    }
-
-    public void clearAll() {
-        mLoggingHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                if (mFile != null && mFile.exists()) {
-                    if (LatinImeLogger.sDBG) {
-                        Log.d(USABILITY_TAG, "Delete log file.");
-                    }
-                    mFile.delete();
-                    mWriter.close();
-                }
-            }
-        });
-    }
-
-    private BufferedReader getBufferedReader() {
-        createLogFileIfNotExist();
-        try {
-            return new BufferedReader(new FileReader(mFile));
-        } catch (final FileNotFoundException e) {
-            return null;
-        }
-    }
-
-    private PrintWriter getPrintWriter(final File dir, final String filename,
-            final boolean renew) throws IOException {
-        mFile = new File(dir, filename);
-        if (mFile.exists()) {
-            if (renew) {
-                mFile.delete();
-            }
-        }
-        return new PrintWriter(new FileOutputStream(mFile), true /* autoFlush */);
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/UserHistoryDictIOUtils.java b/java/src/com/android/inputmethod/latin/utils/UserHistoryDictIOUtils.java
deleted file mode 100644
index 635afe7..0000000
--- a/java/src/com/android/inputmethod/latin/utils/UserHistoryDictIOUtils.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * 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.utils;
-
-import android.util.Log;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
-import com.android.inputmethod.latin.makedict.DictDecoder;
-import com.android.inputmethod.latin.makedict.DictEncoder;
-import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.PendingAttribute;
-import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.personalization.UserHistoryDictionaryBigramList;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map.Entry;
-import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Reads and writes Binary files for a UserHistoryDictionary.
- *
- * All the methods in this class are static.
- */
-public final class UserHistoryDictIOUtils {
-    private static final String TAG = UserHistoryDictIOUtils.class.getSimpleName();
-    private static final boolean DEBUG = false;
-    private static final String USES_FORGETTING_CURVE_KEY = "USES_FORGETTING_CURVE";
-    private static final String USES_FORGETTING_CURVE_VALUE = "1";
-    private static final String LAST_UPDATED_TIME_KEY = "date";
-
-    public interface OnAddWordListener {
-        /**
-         * Callback to be notified when a word is added to the dictionary.
-         * @param word The added word.
-         * @param shortcutTarget A shortcut target for this word, or null if none.
-         * @param frequency The frequency for this word.
-         * @param shortcutFreq The frequency of the shortcut (0~15, with 15 = whitelist).
-         *   Unspecified if shortcutTarget is null - do not rely on its value.
-         */
-        public void setUnigram(final String word, final String shortcutTarget, final int frequency,
-                final int shortcutFreq);
-        public void setBigram(final String word1, final String word2, final int frequency);
-    }
-
-    @UsedForTesting
-    public interface BigramDictionaryInterface {
-        public int getFrequency(final String word1, final String word2);
-    }
-
-    /**
-     * Writes dictionary to file.
-     */
-    public static void writeDictionary(final DictEncoder dictEncoder,
-            final BigramDictionaryInterface dict, final UserHistoryDictionaryBigramList bigrams,
-            final FormatOptions formatOptions) {
-        final FusionDictionary fusionDict = constructFusionDictionary(dict, bigrams);
-        fusionDict.addOptionAttribute(USES_FORGETTING_CURVE_KEY, USES_FORGETTING_CURVE_VALUE);
-        fusionDict.addOptionAttribute(LAST_UPDATED_TIME_KEY,
-                String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
-        try {
-            dictEncoder.writeDictionary(fusionDict, formatOptions);
-            Log.d(TAG, "end writing");
-        } catch (IOException e) {
-            Log.e(TAG, "IO exception while writing file", e);
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "Unsupported format", e);
-        }
-    }
-
-    /**
-     * Constructs a new FusionDictionary from BigramDictionaryInterface.
-     */
-    @UsedForTesting
-    static FusionDictionary constructFusionDictionary(
-            final BigramDictionaryInterface dict, final UserHistoryDictionaryBigramList bigrams) {
-        final FusionDictionary fusionDict = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(new HashMap<String, String>(), false,
-                        false));
-        int profTotal = 0;
-        for (final String word1 : bigrams.keySet()) {
-            final HashMap<String, Byte> word1Bigrams = bigrams.getBigrams(word1);
-            for (final String word2 : word1Bigrams.keySet()) {
-                final int freq = dict.getFrequency(word1, word2);
-                if (freq == -1) {
-                    // don't add this bigram.
-                    continue;
-                }
-                if (DEBUG) {
-                    if (word1 == null) {
-                        Log.d(TAG, "add unigram: " + word2 + "," + Integer.toString(freq));
-                    } else {
-                        Log.d(TAG, "add bigram: " + word1
-                                + "," + word2 + "," + Integer.toString(freq));
-                    }
-                    profTotal++;
-                }
-                if (word1 == null) { // unigram
-                    fusionDict.add(word2, freq, null, false /* isNotAWord */);
-                } else { // bigram
-                    if (FusionDictionary.findWordInTree(fusionDict.mRootNodeArray, word1) == null) {
-                        fusionDict.add(word1, 2, null, false /* isNotAWord */);
-                    }
-                    fusionDict.setBigram(word1, word2, freq);
-                }
-                bigrams.updateBigram(word1, word2, (byte)freq);
-            }
-        }
-        if (DEBUG) {
-            Log.d(TAG, "add " + profTotal + "words");
-        }
-        return fusionDict;
-    }
-
-    /**
-     * Reads dictionary from file.
-     */
-    public static void readDictionaryBinary(final DictDecoder dictDecoder,
-            final OnAddWordListener dict) {
-        final TreeMap<Integer, String> unigrams = CollectionUtils.newTreeMap();
-        final TreeMap<Integer, Integer> frequencies = CollectionUtils.newTreeMap();
-        final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams = CollectionUtils.newTreeMap();
-        try {
-            dictDecoder.readUnigramsAndBigramsBinary(unigrams, frequencies, bigrams);
-        } catch (IOException e) {
-            Log.e(TAG, "IO exception while reading file", e);
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "Unsupported format", e);
-        } catch (ArrayIndexOutOfBoundsException e) {
-            Log.e(TAG, "ArrayIndexOutOfBoundsException while reading file", e);
-        }
-        addWordsFromWordMap(unigrams, frequencies, bigrams, dict);
-    }
-
-    /**
-     * Adds all unigrams and bigrams in maps to OnAddWordListener.
-     */
-    @UsedForTesting
-    static void addWordsFromWordMap(final TreeMap<Integer, String> unigrams,
-            final TreeMap<Integer, Integer> frequencies,
-            final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams,
-            final OnAddWordListener to) {
-        for (Entry<Integer, String> entry : unigrams.entrySet()) {
-            final String word1 = entry.getValue();
-            final int unigramFrequency = frequencies.get(entry.getKey());
-            to.setUnigram(word1, null /* shortcutTarget */, unigramFrequency, 0 /* shortcutFreq */);
-            final ArrayList<PendingAttribute> attrList = bigrams.get(entry.getKey());
-            if (attrList != null) {
-                for (final PendingAttribute attr : attrList) {
-                    final String word2 = unigrams.get(attr.mAddress);
-                    if (word1 == null || word2 == null) {
-                        Log.e(TAG, "Invalid bigram pair detected: " + word1 + ", " + word2);
-                        continue;
-                    }
-                    to.setBigram(word1, word2,
-                            BinaryDictIOUtils.reconstructBigramFrequency(unigramFrequency,
-                                    attr.mFrequency));
-                }
-            }
-        }
-
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java b/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java
deleted file mode 100644
index 1992b2f..0000000
--- a/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * 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.utils;
-
-import android.util.Log;
-
-import java.util.concurrent.TimeUnit;
-
-public final class UserHistoryForgettingCurveUtils {
-    private static final String TAG = UserHistoryForgettingCurveUtils.class.getSimpleName();
-    private static final boolean DEBUG = false;
-    private static final int DEFAULT_FC_FREQ = 127;
-    private static final int BOOSTED_FC_FREQ = 200;
-    private static int FC_FREQ_MAX = DEFAULT_FC_FREQ;
-    /* package */ static final int COUNT_MAX = 3;
-    private static final int FC_LEVEL_MAX = 3;
-    /* package */ static final int ELAPSED_TIME_MAX = 15;
-    private static final int ELAPSED_TIME_INTERVAL_HOURS = 6;
-    private static final long ELAPSED_TIME_INTERVAL_MILLIS =
-            TimeUnit.HOURS.toMillis(ELAPSED_TIME_INTERVAL_HOURS);
-    private static final int HALF_LIFE_HOURS = 48;
-    private static final int MAX_PUSH_ELAPSED = (FC_LEVEL_MAX + 1) * (ELAPSED_TIME_MAX + 1);
-
-    public static void boostMaxFreqForDebug() {
-        FC_FREQ_MAX = BOOSTED_FC_FREQ;
-    }
-
-    public static void resetMaxFreqForDebug() {
-        FC_FREQ_MAX = DEFAULT_FC_FREQ;
-    }
-
-    private UserHistoryForgettingCurveUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    public static final class ForgettingCurveParams {
-        private byte mFc;
-        long mLastTouchedTime = 0;
-        private final boolean mIsValid;
-
-        private void updateLastTouchedTime() {
-            mLastTouchedTime = System.currentTimeMillis();
-        }
-
-        public ForgettingCurveParams(boolean isValid) {
-            this(System.currentTimeMillis(), isValid);
-        }
-
-        private ForgettingCurveParams(long now, boolean isValid) {
-            this(pushCount((byte)0, isValid), now, now, isValid);
-        }
-
-        /** This constructor is called when the user history bigram dictionary is being restored. */
-        public ForgettingCurveParams(int fc, long now, long last) {
-            // All words with level >= 1 had been saved.
-            // Invalid words with level == 0 had been saved.
-            // Valid words words with level == 0 had *not* been saved.
-            this(fc, now, last, fcToLevel((byte)fc) > 0);
-        }
-
-        private ForgettingCurveParams(int fc, long now, long last, boolean isValid) {
-            mIsValid = isValid;
-            mFc = (byte)fc;
-            mLastTouchedTime = last;
-            updateElapsedTime(now);
-        }
-
-        public boolean isValid() {
-            return mIsValid;
-        }
-
-        public byte getFc() {
-            updateElapsedTime(System.currentTimeMillis());
-            return mFc;
-        }
-
-        public int getFrequency() {
-            updateElapsedTime(System.currentTimeMillis());
-            return UserHistoryForgettingCurveUtils.fcToFreq(mFc);
-        }
-
-        public int notifyTypedAgainAndGetFrequency() {
-            updateLastTouchedTime();
-            // TODO: Check whether this word is valid or not
-            mFc = pushCount(mFc, false);
-            return UserHistoryForgettingCurveUtils.fcToFreq(mFc);
-        }
-
-        private void updateElapsedTime(long now) {
-            final int elapsedTimeCount =
-                    (int)((now - mLastTouchedTime) / ELAPSED_TIME_INTERVAL_MILLIS);
-            if (elapsedTimeCount <= 0) {
-                return;
-            }
-            if (elapsedTimeCount >= MAX_PUSH_ELAPSED) {
-                mLastTouchedTime = now;
-                mFc = 0;
-                return;
-            }
-            for (int i = 0; i < elapsedTimeCount; ++i) {
-                mLastTouchedTime += ELAPSED_TIME_INTERVAL_MILLIS;
-                mFc = pushElapsedTime(mFc);
-            }
-        }
-    }
-
-    /* package */ static  int fcToElapsedTime(byte fc) {
-        return fc & 0x0F;
-    }
-
-    /* package */ static int fcToCount(byte fc) {
-        return (fc >> 4) & 0x03;
-    }
-
-    /* package */ static int fcToLevel(byte fc) {
-        return (fc >> 6) & 0x03;
-    }
-
-    private static int calcFreq(int elapsedTime, int count, int level) {
-        if (level <= 0) {
-            // Reserved words, just return -1
-            return -1;
-        }
-        if (count == COUNT_MAX) {
-            // Temporary promote because it's frequently typed recently
-            ++level;
-        }
-        final int et = Math.min(FC_FREQ_MAX, Math.max(0, elapsedTime));
-        final int l = Math.min(FC_LEVEL_MAX, Math.max(0, level));
-        return MathUtils.SCORE_TABLE[l - 1][et];
-    }
-
-    /* pakcage */ static byte calcFc(int elapsedTime, int count, int level) {
-        final int et = Math.min(FC_FREQ_MAX, Math.max(0, elapsedTime));
-        final int c = Math.min(COUNT_MAX, Math.max(0, count));
-        final int l = Math.min(FC_LEVEL_MAX, Math.max(0, level));
-        return (byte)(et | (c << 4) | (l << 6));
-    }
-
-    public static int fcToFreq(byte fc) {
-        final int elapsedTime = fcToElapsedTime(fc);
-        final int count = fcToCount(fc);
-        final int level = fcToLevel(fc);
-        return calcFreq(elapsedTime, count, level);
-    }
-
-    public static byte pushElapsedTime(byte fc) {
-        int elapsedTime = fcToElapsedTime(fc);
-        int count = fcToCount(fc);
-        int level = fcToLevel(fc);
-        if (elapsedTime >= ELAPSED_TIME_MAX) {
-            // Downgrade level
-            elapsedTime = 0;
-            count = COUNT_MAX;
-            --level;
-        } else {
-            ++elapsedTime;
-        }
-        return calcFc(elapsedTime, count, level);
-    }
-
-    public static byte pushCount(byte fc, boolean isValid) {
-        final int elapsedTime = fcToElapsedTime(fc);
-        int count = fcToCount(fc);
-        int level = fcToLevel(fc);
-        if ((elapsedTime == 0 && count >= COUNT_MAX) || (isValid && level == 0)) {
-            // Upgrade level
-            ++level;
-            count = 0;
-            if (DEBUG) {
-                Log.d(TAG, "Upgrade level.");
-            }
-        } else {
-            ++count;
-        }
-        return calcFc(0, count, level);
-    }
-
-    // TODO: isValid should be false for a word whose frequency is 0,
-    // or that is not in the dictionary.
-    /**
-     * Check wheather we should save the bigram to the SQL DB or not
-     */
-    public static boolean needsToSave(byte fc, boolean isValid, boolean addLevel0Bigram) {
-        int level = fcToLevel(fc);
-        if (level == 0) {
-            if (isValid || !addLevel0Bigram) {
-                return false;
-            }
-        }
-        final int elapsedTime = fcToElapsedTime(fc);
-        return (elapsedTime < ELAPSED_TIME_MAX - 1 || level > 0);
-    }
-
-    private static final class MathUtils {
-        public static final int[][] SCORE_TABLE = new int[FC_LEVEL_MAX][ELAPSED_TIME_MAX + 1];
-        static {
-            for (int i = 0; i < FC_LEVEL_MAX; ++i) {
-                final float initialFreq;
-                if (i >= 2) {
-                    initialFreq = FC_FREQ_MAX;
-                } else if (i == 1) {
-                    initialFreq = FC_FREQ_MAX / 2;
-                } else if (i == 0) {
-                    initialFreq = FC_FREQ_MAX / 4;
-                } else {
-                    continue;
-                }
-                for (int j = 0; j < ELAPSED_TIME_MAX; ++j) {
-                    final float elapsedHours = j * ELAPSED_TIME_INTERVAL_HOURS;
-                    final float freq = initialFreq
-                            * (float)Math.pow(initialFreq, elapsedHours / HALF_LIFE_HOURS);
-                    final int intFreq = Math.min(FC_FREQ_MAX, Math.max(0, (int)freq));
-                    SCORE_TABLE[i][j] = intFreq;
-                }
-            }
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/latin/utils/UserLogRingCharBuffer.java b/java/src/com/android/inputmethod/latin/utils/UserLogRingCharBuffer.java
deleted file mode 100644
index a75d353..0000000
--- a/java/src/com/android/inputmethod/latin/utils/UserLogRingCharBuffer.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import android.inputmethodservice.InputMethodService;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.LatinImeLogger;
-import com.android.inputmethod.latin.settings.Settings;
-
-public final class UserLogRingCharBuffer {
-    public /* for test */ static final int BUFSIZE = 20;
-    public /* for test */ int mLength = 0;
-
-    private static UserLogRingCharBuffer sUserLogRingCharBuffer = new UserLogRingCharBuffer();
-    private static final char PLACEHOLDER_DELIMITER_CHAR = '\uFFFC';
-    private static final int INVALID_COORDINATE = -2;
-    private boolean mEnabled = false;
-    private int mEnd = 0;
-    private char[] mCharBuf = new char[BUFSIZE];
-    private int[] mXBuf = new int[BUFSIZE];
-    private int[] mYBuf = new int[BUFSIZE];
-
-    private UserLogRingCharBuffer() {
-        // Intentional empty constructor for singleton.
-    }
-
-    @UsedForTesting
-    public static UserLogRingCharBuffer getInstance() {
-        return sUserLogRingCharBuffer;
-    }
-
-    public static UserLogRingCharBuffer init(final InputMethodService context,
-            final boolean enabled, final boolean usabilityStudy) {
-        if (!(enabled || usabilityStudy)) {
-            return null;
-        }
-        sUserLogRingCharBuffer.mEnabled = true;
-        UsabilityStudyLogUtils.getInstance().init(context);
-        return sUserLogRingCharBuffer;
-    }
-
-    private static int normalize(final int in) {
-        int ret = in % BUFSIZE;
-        return ret < 0 ? ret + BUFSIZE : ret;
-    }
-
-    // TODO: accept code points
-    @UsedForTesting
-    public void push(final char c, final int x, final int y) {
-        if (!mEnabled) {
-            return;
-        }
-        if (LatinImeLogger.sUsabilityStudy) {
-            UsabilityStudyLogUtils.getInstance().writeChar(c, x, y);
-        }
-        mCharBuf[mEnd] = c;
-        mXBuf[mEnd] = x;
-        mYBuf[mEnd] = y;
-        mEnd = normalize(mEnd + 1);
-        if (mLength < BUFSIZE) {
-            ++mLength;
-        }
-    }
-
-    public char pop() {
-        if (mLength < 1) {
-            return PLACEHOLDER_DELIMITER_CHAR;
-        }
-        mEnd = normalize(mEnd - 1);
-        --mLength;
-        return mCharBuf[mEnd];
-    }
-
-    public char getBackwardNthChar(final int n) {
-        if (mLength <= n || n < 0) {
-            return PLACEHOLDER_DELIMITER_CHAR;
-        }
-        return mCharBuf[normalize(mEnd - n - 1)];
-    }
-
-    public int getPreviousX(final char c, final int back) {
-        final int index = normalize(mEnd - 2 - back);
-        if (mLength <= back
-                || Character.toLowerCase(c) != Character.toLowerCase(mCharBuf[index])) {
-            return INVALID_COORDINATE;
-        }
-        return mXBuf[index];
-    }
-
-    public int getPreviousY(final char c, final int back) {
-        int index = normalize(mEnd - 2 - back);
-        if (mLength <= back
-                || Character.toLowerCase(c) != Character.toLowerCase(mCharBuf[index])) {
-            return INVALID_COORDINATE;
-        }
-        return mYBuf[index];
-    }
-
-    public String getLastWord(final int ignoreCharCount) {
-        final StringBuilder sb = new StringBuilder();
-        int i = ignoreCharCount;
-        for (; i < mLength; ++i) {
-            final char c = mCharBuf[normalize(mEnd - 1 - i)];
-            if (!Settings.getInstance().isWordSeparator(c)) {
-                break;
-            }
-        }
-        for (; i < mLength; ++i) {
-            char c = mCharBuf[normalize(mEnd - 1 - i)];
-            if (!Settings.getInstance().isWordSeparator(c)) {
-                sb.append(c);
-            } else {
-                break;
-            }
-        }
-        return sb.reverse().toString();
-    }
-
-    public void reset() {
-        mLength = 0;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/BootBroadcastReceiver.java b/java/src/com/android/inputmethod/research/BootBroadcastReceiver.java
deleted file mode 100644
index 4f86526..0000000
--- a/java/src/com/android/inputmethod/research/BootBroadcastReceiver.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.research;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-/**
- * Arrange for the uploading service to be run on regular intervals.
- */
-public final class BootBroadcastReceiver extends BroadcastReceiver {
-    @Override
-    public void onReceive(final Context context, final Intent intent) {
-        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
-            UploaderService.cancelAndRescheduleUploadingService(context,
-                    true /* needsRescheduling */);
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/FeedbackActivity.java b/java/src/com/android/inputmethod/research/FeedbackActivity.java
deleted file mode 100644
index 520b88d..0000000
--- a/java/src/com/android/inputmethod/research/FeedbackActivity.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.research;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-import com.android.inputmethod.latin.R;
-
-public class FeedbackActivity extends Activity {
-    @Override
-    protected void onCreate(final Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.research_feedback_activity);
-        final FeedbackLayout layout = (FeedbackLayout) findViewById(R.id.research_feedback_layout);
-        layout.setActivity(this);
-    }
-
-    @Override
-    public void onBackPressed() {
-        ResearchLogger.getInstance().onLeavingSendFeedbackDialog();
-        super.onBackPressed();
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/FeedbackFragment.java b/java/src/com/android/inputmethod/research/FeedbackFragment.java
deleted file mode 100644
index 75fbbf1..0000000
--- a/java/src/com/android/inputmethod/research/FeedbackFragment.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.research;
-
-import android.app.Fragment;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.Toast;
-
-import com.android.inputmethod.latin.R;
-
-public class FeedbackFragment extends Fragment implements OnClickListener {
-    private static final String TAG = FeedbackFragment.class.getSimpleName();
-
-    public static final String KEY_FEEDBACK_STRING = "FeedbackString";
-    public static final String KEY_INCLUDE_ACCOUNT_NAME = "IncludeAccountName";
-    public static final String KEY_HAS_USER_RECORDING = "HasRecording";
-
-    private EditText mEditText;
-    private CheckBox mIncludingAccountNameCheckBox;
-    private CheckBox mIncludingUserRecordingCheckBox;
-    private Button mSendButton;
-    private Button mCancelButton;
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        final View view = inflater.inflate(R.layout.research_feedback_fragment_layout, container,
-                false);
-        mEditText = (EditText) view.findViewById(R.id.research_feedback_contents);
-        mEditText.requestFocus();
-        mIncludingAccountNameCheckBox = (CheckBox) view.findViewById(
-                R.id.research_feedback_include_account_name);
-        mIncludingUserRecordingCheckBox = (CheckBox) view.findViewById(
-                R.id.research_feedback_include_recording_checkbox);
-        mIncludingUserRecordingCheckBox.setOnClickListener(this);
-
-        mSendButton = (Button) view.findViewById(R.id.research_feedback_send_button);
-        mSendButton.setOnClickListener(this);
-        mCancelButton = (Button) view.findViewById(R.id.research_feedback_cancel_button);
-        mCancelButton.setOnClickListener(this);
-
-        if (savedInstanceState != null) {
-            restoreState(savedInstanceState);
-        } else {
-            final Bundle bundle = getActivity().getIntent().getExtras();
-            if (bundle != null) {
-                restoreState(bundle);
-            }
-        }
-        return view;
-    }
-
-    @Override
-    public void onClick(final View view) {
-        final ResearchLogger researchLogger = ResearchLogger.getInstance();
-        if (view == mIncludingUserRecordingCheckBox) {
-            if (mIncludingUserRecordingCheckBox.isChecked()) {
-                final Bundle bundle = new Bundle();
-                onSaveInstanceState(bundle);
-
-                // Let the user make a recording
-                getActivity().finish();
-
-                researchLogger.setFeedbackDialogBundle(bundle);
-                researchLogger.onLeavingSendFeedbackDialog();
-                researchLogger.startRecording();
-            }
-        } else if (view == mSendButton) {
-            final Editable editable = mEditText.getText();
-            final String feedbackContents = editable.toString();
-            if (TextUtils.isEmpty(feedbackContents)) {
-                Toast.makeText(getActivity(),
-                        R.string.research_feedback_empty_feedback_error_message,
-                        Toast.LENGTH_LONG).show();
-            } else {
-                final boolean isIncludingAccountName = mIncludingAccountNameCheckBox.isChecked();
-                researchLogger.sendFeedback(feedbackContents, false /* isIncludingHistory */,
-                        isIncludingAccountName, mIncludingUserRecordingCheckBox.isChecked());
-                getActivity().finish();
-                researchLogger.setFeedbackDialogBundle(null);
-                researchLogger.onLeavingSendFeedbackDialog();
-            }
-        } else if (view == mCancelButton) {
-            Log.d(TAG, "Finishing");
-            getActivity().finish();
-            researchLogger.setFeedbackDialogBundle(null);
-            researchLogger.onLeavingSendFeedbackDialog();
-        } else {
-            Log.e(TAG, "Unknown view passed to FeedbackFragment.onClick()");
-        }
-    }
-
-    @Override
-    public void onSaveInstanceState(final Bundle bundle) {
-        final String savedFeedbackString = mEditText.getText().toString();
-
-        bundle.putString(KEY_FEEDBACK_STRING, savedFeedbackString);
-        bundle.putBoolean(KEY_INCLUDE_ACCOUNT_NAME, mIncludingAccountNameCheckBox.isChecked());
-        bundle.putBoolean(KEY_HAS_USER_RECORDING, mIncludingUserRecordingCheckBox.isChecked());
-    }
-
-    private void restoreState(final Bundle bundle) {
-        mEditText.setText(bundle.getString(KEY_FEEDBACK_STRING));
-        mIncludingAccountNameCheckBox.setChecked(bundle.getBoolean(KEY_INCLUDE_ACCOUNT_NAME));
-        mIncludingUserRecordingCheckBox.setChecked(bundle.getBoolean(KEY_HAS_USER_RECORDING));
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/FeedbackLayout.java b/java/src/com/android/inputmethod/research/FeedbackLayout.java
deleted file mode 100644
index d283d14..0000000
--- a/java/src/com/android/inputmethod/research/FeedbackLayout.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.research;
-
-import android.app.Activity;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.widget.LinearLayout;
-
-public class FeedbackLayout extends LinearLayout {
-    private Activity mActivity;
-
-    public FeedbackLayout(Context context) {
-        super(context);
-    }
-
-    public FeedbackLayout(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public FeedbackLayout(Context context, AttributeSet attrs, int defstyle) {
-        super(context, attrs, defstyle);
-    }
-
-    public void setActivity(Activity activity) {
-        mActivity = activity;
-    }
-
-    @Override
-    public boolean dispatchKeyEventPreIme(KeyEvent event) {
-        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
-            KeyEvent.DispatcherState state = getKeyDispatcherState();
-            if (state != null) {
-                if (event.getAction() == KeyEvent.ACTION_DOWN
-                        && event.getRepeatCount() == 0) {
-                    state.startTracking(event, this);
-                    return true;
-                } else if (event.getAction() == KeyEvent.ACTION_UP
-                        && !event.isCanceled() && state.isTracking(event)) {
-                    mActivity.onBackPressed();
-                    return true;
-                }
-            }
-        }
-        return super.dispatchKeyEventPreIme(event);
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/FeedbackLog.java b/java/src/com/android/inputmethod/research/FeedbackLog.java
deleted file mode 100644
index 5af194c..0000000
--- a/java/src/com/android/inputmethod/research/FeedbackLog.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.content.Context;
-
-import java.io.File;
-
-public class FeedbackLog extends ResearchLog {
-    public FeedbackLog(final File outputFile, final Context context) {
-        super(outputFile, context);
-    }
-
-    @Override
-    public boolean isFeedbackLog() {
-        return true;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/FixedLogBuffer.java b/java/src/com/android/inputmethod/research/FixedLogBuffer.java
deleted file mode 100644
index 8b64de8..0000000
--- a/java/src/com/android/inputmethod/research/FixedLogBuffer.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * 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.research;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-
-/**
- * A buffer that holds a fixed number of LogUnits.
- *
- * LogUnits are added in and shifted out in temporal order.  Only a subset of the LogUnits are
- * actual words; the other LogUnits do not count toward the word limit.  Once the buffer reaches
- * capacity, adding another LogUnit that is a word evicts the oldest LogUnits out one at a time to
- * stay under the capacity limit.
- *
- * This variant of a LogBuffer has a limited memory footprint because of its limited size.  This
- * makes it useful, for example, for recording a window of the user's most recent actions in case
- * they want to report an observed error that they do not know how to reproduce.
- */
-public class FixedLogBuffer extends LogBuffer {
-    /* package for test */ int mWordCapacity;
-    // The number of members of mLogUnits that are actual words.
-    private int mNumActualWords;
-
-    /**
-     * Create a new LogBuffer that can hold a fixed number of LogUnits that are words (and
-     * unlimited number of non-word LogUnits), and that outputs its result to a researchLog.
-     *
-     * @param wordCapacity maximum number of words
-     */
-    public FixedLogBuffer(final int wordCapacity) {
-        super();
-        if (wordCapacity <= 0) {
-            throw new IllegalArgumentException("wordCapacity must be 1 or greater.");
-        }
-        mWordCapacity = wordCapacity;
-        mNumActualWords = 0;
-    }
-
-    /**
-     * Adds a new LogUnit to the front of the LIFO queue, evicting existing LogUnit's
-     * (oldest first) if word capacity is reached.
-     */
-    @Override
-    public void shiftIn(final LogUnit newLogUnit) {
-        if (!newLogUnit.hasOneOrMoreWords()) {
-            // This LogUnit doesn't contain any word, so it doesn't count toward the word-limit.
-            super.shiftIn(newLogUnit);
-            return;
-        }
-        final int numWordsIncoming = newLogUnit.getNumWords();
-        if (mNumActualWords >= mWordCapacity) {
-            // Give subclass a chance to handle the buffer full condition by shifting out logUnits.
-            // TODO: Tell onBufferFull() how much space it needs to make to avoid forced eviction.
-            onBufferFull();
-            // If still full, evict.
-            if (mNumActualWords >= mWordCapacity) {
-                shiftOutWords(numWordsIncoming);
-            }
-        }
-        super.shiftIn(newLogUnit);
-        mNumActualWords += numWordsIncoming;
-    }
-
-    @Override
-    public LogUnit unshiftIn() {
-        final LogUnit logUnit = super.unshiftIn();
-        if (logUnit != null && logUnit.hasOneOrMoreWords()) {
-            mNumActualWords -= logUnit.getNumWords();
-        }
-        return logUnit;
-    }
-
-    public int getNumWords() {
-        return mNumActualWords;
-    }
-
-    /**
-     * Removes all LogUnits from the buffer without calling onShiftOut().
-     */
-    @Override
-    public void clear() {
-        super.clear();
-        mNumActualWords = 0;
-    }
-
-    /**
-     * Called when the buffer has just shifted in one more word than its maximum, and its about to
-     * shift out LogUnits to bring it back down to the maximum.
-     *
-     * Base class does nothing; subclasses may override if they want to record non-privacy sensitive
-     * events that fall off the end.
-     */
-    protected void onBufferFull() {
-    }
-
-    @Override
-    public LogUnit shiftOut() {
-        final LogUnit logUnit = super.shiftOut();
-        if (logUnit != null && logUnit.hasOneOrMoreWords()) {
-            mNumActualWords -= logUnit.getNumWords();
-        }
-        return logUnit;
-    }
-
-    /**
-     * Remove LogUnits from the front of the LogBuffer until {@code numWords} have been removed.
-     *
-     * If there are less than {@code numWords} in the buffer, shifts out all {@code LogUnit}s.
-     *
-     * @param numWords the minimum number of words in {@link LogUnit}s to shift out
-     * @return the number of actual words LogUnit}s shifted out
-     */
-    protected int shiftOutWords(final int numWords) {
-        int numWordsShiftedOut = 0;
-        do {
-            final LogUnit logUnit = shiftOut();
-            if (logUnit == null) break;
-            numWordsShiftedOut += logUnit.getNumWords();
-        } while (numWordsShiftedOut < numWords);
-        return numWordsShiftedOut;
-    }
-
-    public void shiftOutAll() {
-        final LinkedList<LogUnit> logUnits = getLogUnits();
-        while (!logUnits.isEmpty()) {
-            shiftOut();
-        }
-        mNumActualWords = 0;
-    }
-
-    /**
-     * Returns a list of {@link LogUnit}s at the front of the buffer that have words associated with
-     * them.
-     *
-     * There will be no more than {@code n} words in the returned list.  So if 2 words are
-     * requested, and the first LogUnit has 3 words, it is not returned.  If 2 words are requested,
-     * and the first LogUnit has only 1 word, and the next LogUnit 2 words, only the first LogUnit
-     * is returned.  If the first LogUnit has no words associated with it, and the second LogUnit
-     * has three words, then only the first LogUnit (which has no associated words) is returned.  If
-     * there are not enough LogUnits in the buffer to meet the word requirement, then all LogUnits
-     * will be returned.
-     *
-     * @param n The maximum number of {@link LogUnit}s with words to return.
-     * @return The list of the {@link LogUnit}s containing the first n words
-     */
-    public ArrayList<LogUnit> peekAtFirstNWords(int n) {
-        final LinkedList<LogUnit> logUnits = getLogUnits();
-        // Allocate space for n*2 logUnits.  There will be at least n, one for each word, and
-        // there may be additional for punctuation, between-word commands, etc.  This should be
-        // enough that reallocation won't be necessary.
-        final ArrayList<LogUnit> resultList = new ArrayList<LogUnit>(n * 2);
-        for (final LogUnit logUnit : logUnits) {
-            n -= logUnit.getNumWords();
-            if (n < 0) break;
-            resultList.add(logUnit);
-        }
-        return resultList;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/JsonUtils.java b/java/src/com/android/inputmethod/research/JsonUtils.java
deleted file mode 100644
index 2beebdf..0000000
--- a/java/src/com/android/inputmethod/research/JsonUtils.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * 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.research;
-
-import android.content.SharedPreferences;
-import android.util.JsonWriter;
-import android.view.MotionEvent;
-import android.view.inputmethod.CompletionInfo;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * Routines for mapping classes and variables to JSON representations for logging.
- */
-/* package */ class JsonUtils {
-    private JsonUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    /* package */ static void writeJson(final CompletionInfo[] ci, final JsonWriter jsonWriter)
-            throws IOException {
-        jsonWriter.beginArray();
-        for (int j = 0; j < ci.length; j++) {
-            jsonWriter.value(ci[j].toString());
-        }
-        jsonWriter.endArray();
-    }
-
-    /* package */ static void writeJson(final SharedPreferences prefs, final JsonWriter jsonWriter)
-            throws IOException {
-        jsonWriter.beginObject();
-        for (Map.Entry<String,?> entry : prefs.getAll().entrySet()) {
-            jsonWriter.name(entry.getKey());
-            final Object innerValue = entry.getValue();
-            if (innerValue == null) {
-                jsonWriter.nullValue();
-            } else if (innerValue instanceof Boolean) {
-                jsonWriter.value((Boolean) innerValue);
-            } else if (innerValue instanceof Number) {
-                jsonWriter.value((Number) innerValue);
-            } else {
-                jsonWriter.value(innerValue.toString());
-            }
-        }
-        jsonWriter.endObject();
-    }
-
-    /* package */ static void writeJson(final Key[] keys, final JsonWriter jsonWriter)
-            throws IOException {
-        jsonWriter.beginArray();
-        for (Key key : keys) {
-            writeJson(key, jsonWriter);
-        }
-        jsonWriter.endArray();
-    }
-
-    private static void writeJson(final Key key, final JsonWriter jsonWriter) throws IOException {
-        jsonWriter.beginObject();
-        jsonWriter.name("code").value(key.getCode());
-        jsonWriter.name("altCode").value(key.getAltCode());
-        jsonWriter.name("x").value(key.getX());
-        jsonWriter.name("y").value(key.getY());
-        jsonWriter.name("w").value(key.getWidth());
-        jsonWriter.name("h").value(key.getHeight());
-        jsonWriter.endObject();
-    }
-
-    /* package */ static void writeJson(final SuggestedWords words, final JsonWriter jsonWriter)
-            throws IOException {
-        jsonWriter.beginObject();
-        jsonWriter.name("typedWordValid").value(words.mTypedWordValid);
-        jsonWriter.name("willAutoCorrect")
-                .value(words.mWillAutoCorrect);
-        jsonWriter.name("isPunctuationSuggestions")
-                .value(words.mIsPunctuationSuggestions);
-        jsonWriter.name("isObsoleteSuggestions").value(words.mIsObsoleteSuggestions);
-        jsonWriter.name("isPrediction").value(words.mIsPrediction);
-        jsonWriter.name("suggestedWords");
-        jsonWriter.beginArray();
-        final int size = words.size();
-        for (int j = 0; j < size; j++) {
-            final SuggestedWordInfo wordInfo = words.getInfo(j);
-            jsonWriter.beginObject();
-            jsonWriter.name("word").value(wordInfo.toString());
-            jsonWriter.name("score").value(wordInfo.mScore);
-            jsonWriter.name("kind").value(wordInfo.mKind);
-            jsonWriter.name("sourceDict").value(wordInfo.mSourceDict.mDictType);
-            jsonWriter.endObject();
-        }
-        jsonWriter.endArray();
-        jsonWriter.endObject();
-    }
-
-    /* package */ static void writeJson(final MotionEvent me, final JsonWriter jsonWriter)
-            throws IOException {
-        jsonWriter.beginObject();
-        jsonWriter.name("pointerIds");
-        jsonWriter.beginArray();
-        final int pointerCount = me.getPointerCount();
-        for (int index = 0; index < pointerCount; index++) {
-            jsonWriter.value(me.getPointerId(index));
-        }
-        jsonWriter.endArray();
-
-        jsonWriter.name("xyt");
-        jsonWriter.beginArray();
-        final int historicalSize = me.getHistorySize();
-        for (int index = 0; index < historicalSize; index++) {
-            jsonWriter.beginObject();
-            jsonWriter.name("t");
-            jsonWriter.value(me.getHistoricalEventTime(index));
-            jsonWriter.name("d");
-            jsonWriter.beginArray();
-            for (int pointerIndex = 0; pointerIndex < pointerCount; pointerIndex++) {
-                jsonWriter.beginObject();
-                jsonWriter.name("x");
-                jsonWriter.value(me.getHistoricalX(pointerIndex, index));
-                jsonWriter.name("y");
-                jsonWriter.value(me.getHistoricalY(pointerIndex, index));
-                jsonWriter.endObject();
-            }
-            jsonWriter.endArray();
-            jsonWriter.endObject();
-        }
-        jsonWriter.beginObject();
-        jsonWriter.name("t");
-        jsonWriter.value(me.getEventTime());
-        jsonWriter.name("d");
-        jsonWriter.beginArray();
-        for (int pointerIndex = 0; pointerIndex < pointerCount; pointerIndex++) {
-            jsonWriter.beginObject();
-            jsonWriter.name("x");
-            jsonWriter.value(me.getX(pointerIndex));
-            jsonWriter.name("y");
-            jsonWriter.value(me.getY(pointerIndex));
-            jsonWriter.endObject();
-        }
-        jsonWriter.endArray();
-        jsonWriter.endObject();
-        jsonWriter.endArray();
-        jsonWriter.endObject();
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/LogBuffer.java b/java/src/com/android/inputmethod/research/LogBuffer.java
deleted file mode 100644
index b07b761..0000000
--- a/java/src/com/android/inputmethod/research/LogBuffer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.research;
-
-import java.util.LinkedList;
-
-/**
- * Maintain a FIFO queue of LogUnits.
- *
- * This class provides an unbounded queue.  This is useful when the user is aware that their actions
- * are being recorded, such as when they are trying to reproduce a bug.  In this case, there should
- * not be artificial restrictions on how many events that can be saved.
- */
-public class LogBuffer {
-    // TODO: Gracefully handle situations in which this LogBuffer is consuming too much memory.
-    // This may happen, for example, if the user has forgotten that data is being logged.
-    private final LinkedList<LogUnit> mLogUnits;
-
-    public LogBuffer() {
-        mLogUnits = new LinkedList<LogUnit>();
-    }
-
-    protected LinkedList<LogUnit> getLogUnits() {
-        return mLogUnits;
-    }
-
-    public void clear() {
-        mLogUnits.clear();
-    }
-
-    public void shiftIn(final LogUnit logUnit) {
-        mLogUnits.add(logUnit);
-    }
-
-    public LogUnit unshiftIn() {
-        if (mLogUnits.isEmpty()) {
-            return null;
-        }
-        return mLogUnits.removeLast();
-    }
-
-    public LogUnit peekLastLogUnit() {
-        if (mLogUnits.isEmpty()) {
-            return null;
-        }
-        return mLogUnits.peekLast();
-    }
-
-    public boolean isEmpty() {
-        return mLogUnits.isEmpty();
-    }
-
-    public LogUnit shiftOut() {
-        if (isEmpty()) {
-            return null;
-        }
-        return mLogUnits.removeFirst();
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/LogStatement.java b/java/src/com/android/inputmethod/research/LogStatement.java
deleted file mode 100644
index 06b918a..0000000
--- a/java/src/com/android/inputmethod/research/LogStatement.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.content.SharedPreferences;
-import android.util.JsonWriter;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.inputmethod.CompletionInfo;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.io.IOException;
-
-/**
- * A template for typed information stored in the logs.
- *
- * A LogStatement contains a name, keys, and flags about whether the {@code Object[] values}
- * associated with the {@code String[] keys} are likely to reveal information about the user.  The
- * actual values are stored separately.
- */
-public class LogStatement {
-    private static final String TAG = LogStatement.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-
-    // Constants for particular statements
-    public static final String TYPE_POINTER_TRACKER_CALL_LISTENER_ON_CODE_INPUT =
-            "PointerTrackerCallListenerOnCodeInput";
-    public static final String KEY_CODE = "code";
-    public static final String VALUE_RESEARCH = "research";
-    public static final String TYPE_MAIN_KEYBOARD_VIEW_ON_LONG_PRESS =
-            "MainKeyboardViewOnLongPress";
-    public static final String ACTION = "action";
-    public static final String VALUE_DOWN = "DOWN";
-    public static final String TYPE_MOTION_EVENT = "MotionEvent";
-    public static final String KEY_IS_LOGGING_RELATED = "isLoggingRelated";
-
-    // Keys for internal key/value pairs
-    private static final String CURRENT_TIME_KEY = "_ct";
-    private static final String UPTIME_KEY = "_ut";
-    private static final String EVENT_TYPE_KEY = "_ty";
-
-    // Name specifying the LogStatement type.
-    private final String mType;
-
-    // mIsPotentiallyPrivate indicates that event contains potentially private information.  If
-    // the word that this event is a part of is determined to be privacy-sensitive, then this
-    // event should not be included in the output log.  The system waits to output until the
-    // containing word is known.
-    private final boolean mIsPotentiallyPrivate;
-
-    // mIsPotentiallyRevealing indicates that this statement may disclose details about other
-    // words typed in other LogUnits.  This can happen if the user is not inserting spaces, and
-    // data from Suggestions and/or Composing text reveals the entire "megaword".  For example,
-    // say the user is typing "for the win", and the system wants to record the bigram "the
-    // win".  If the user types "forthe", omitting the space, the system will give "for the" as
-    // a suggestion.  If the user accepts the autocorrection, the suggestion for "for the" is
-    // included in the log for the word "the", disclosing that the previous word had been "for".
-    // For now, we simply do not include this data when logging part of a "megaword".
-    private final boolean mIsPotentiallyRevealing;
-
-    // mKeys stores the names that are the attributes in the output json objects
-    private final String[] mKeys;
-    private static final String[] NULL_KEYS = new String[0];
-
-    LogStatement(final String name, final boolean isPotentiallyPrivate,
-            final boolean isPotentiallyRevealing, final String... keys) {
-        mType = name;
-        mIsPotentiallyPrivate = isPotentiallyPrivate;
-        mIsPotentiallyRevealing = isPotentiallyRevealing;
-        mKeys = (keys == null) ? NULL_KEYS : keys;
-    }
-
-    public String getType() {
-        return mType;
-    }
-
-    public boolean isPotentiallyPrivate() {
-        return mIsPotentiallyPrivate;
-    }
-
-    public boolean isPotentiallyRevealing() {
-        return mIsPotentiallyRevealing;
-    }
-
-    public String[] getKeys() {
-        return mKeys;
-    }
-
-    /**
-     * Utility function to test whether a key-value pair exists in a LogStatement.
-     *
-     * A LogStatement is really just a template -- it does not contain the values, only the
-     * keys.  So the values must be passed in as an argument.
-     *
-     * @param queryKey the String that is tested by {@code String.equals()} to the keys in the
-     * LogStatement
-     * @param queryValue an Object that must be {@code Object.equals()} to the key's corresponding
-     * value in the {@code values} array
-     * @param values the values corresponding to mKeys
-     *
-     * @returns {@true} if {@code queryKey} exists in the keys for this LogStatement, and {@code
-     * queryValue} matches the corresponding value in {@code values}
-     *
-     * @throws IllegalArgumentException if {@code values.length} is not equal to keys().length()
-     */
-    public boolean containsKeyValuePair(final String queryKey, final Object queryValue,
-            final Object[] values) {
-        if (mKeys.length != values.length) {
-            throw new IllegalArgumentException("Mismatched number of keys and values.");
-        }
-        final int length = mKeys.length;
-        for (int i = 0; i < length; i++) {
-            if (mKeys[i].equals(queryKey) && values[i].equals(queryValue)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Utility function to set a value in a LogStatement.
-     *
-     * A LogStatement is really just a template -- it does not contain the values, only the
-     * keys.  So the values must be passed in as an argument.
-     *
-     * @param queryKey the String that is tested by {@code String.equals()} to the keys in the
-     * LogStatement
-     * @param values the array of values corresponding to mKeys
-     * @param newValue the replacement value to go into the {@code values} array
-     *
-     * @returns {@true} if the key exists and the value was successfully set, {@false} otherwise
-     *
-     * @throws IllegalArgumentException if {@code values.length} is not equal to keys().length()
-     */
-    public boolean setValue(final String queryKey, final Object[] values, final Object newValue) {
-        if (mKeys.length != values.length) {
-            throw new IllegalArgumentException("Mismatched number of keys and values.");
-        }
-        final int length = mKeys.length;
-        for (int i = 0; i < length; i++) {
-            if (mKeys[i].equals(queryKey)) {
-                values[i] = newValue;
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Write the contents out through jsonWriter.
-     *
-     * The JsonWriter class must have already had {@code JsonWriter.beginArray} called on it.
-     *
-     * Note that this method is not thread safe for the same jsonWriter.  Callers must ensure
-     * thread safety.
-     */
-    public boolean outputToLocked(final JsonWriter jsonWriter, final Long time,
-            final Object... values) {
-        if (DEBUG) {
-            if (mKeys.length != values.length) {
-                Log.d(TAG, "Key and Value list sizes do not match. " + mType);
-            }
-        }
-        try {
-            jsonWriter.beginObject();
-            jsonWriter.name(CURRENT_TIME_KEY).value(System.currentTimeMillis());
-            jsonWriter.name(UPTIME_KEY).value(time);
-            jsonWriter.name(EVENT_TYPE_KEY).value(mType);
-            final int length = values.length;
-            for (int i = 0; i < length; i++) {
-                jsonWriter.name(mKeys[i]);
-                final Object value = values[i];
-                if (value instanceof CharSequence) {
-                    jsonWriter.value(value.toString());
-                } else if (value instanceof Number) {
-                    jsonWriter.value((Number) value);
-                } else if (value instanceof Boolean) {
-                    jsonWriter.value((Boolean) value);
-                } else if (value instanceof CompletionInfo[]) {
-                    JsonUtils.writeJson((CompletionInfo[]) value, jsonWriter);
-                } else if (value instanceof SharedPreferences) {
-                    JsonUtils.writeJson((SharedPreferences) value, jsonWriter);
-                } else if (value instanceof Key[]) {
-                    JsonUtils.writeJson((Key[]) value, jsonWriter);
-                } else if (value instanceof SuggestedWords) {
-                    JsonUtils.writeJson((SuggestedWords) value, jsonWriter);
-                } else if (value instanceof MotionEvent) {
-                    JsonUtils.writeJson((MotionEvent) value, jsonWriter);
-                } else if (value == null) {
-                    jsonWriter.nullValue();
-                } else {
-                    if (DEBUG) {
-                        Log.w(TAG, "Unrecognized type to be logged: "
-                                + (value == null ? "<null>" : value.getClass().getName()));
-                    }
-                    jsonWriter.nullValue();
-                }
-            }
-            jsonWriter.endObject();
-        } catch (IOException e) {
-            e.printStackTrace();
-            Log.w(TAG, "Error in JsonWriter; skipping LogStatement");
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/LogUnit.java b/java/src/com/android/inputmethod/research/LogUnit.java
deleted file mode 100644
index 3366df1..0000000
--- a/java/src/com/android/inputmethod/research/LogUnit.java
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- * 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.research;
-
-import android.os.SystemClock;
-import android.text.TextUtils;
-import android.util.JsonWriter;
-import android.util.Log;
-
-import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * A group of log statements related to each other.
- *
- * A LogUnit is collection of LogStatements, each of which is generated by at a particular point
- * in the code.  (There is no LogStatement class; the data is stored across the instance variables
- * here.)  A single LogUnit's statements can correspond to all the calls made while in the same
- * composing region, or all the calls between committing the last composing region, and the first
- * character of the next composing region.
- *
- * Individual statements in a log may be marked as potentially private.  If so, then they are only
- * published to a ResearchLog if the ResearchLogger determines that publishing the entire LogUnit
- * will not violate the user's privacy.  Checks for this may include whether other LogUnits have
- * been published recently, or whether the LogUnit contains numbers, etc.
- */
-public class LogUnit {
-    private static final String TAG = LogUnit.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-
-    private static final Pattern WHITESPACE_PATTERN = Pattern.compile("\\s+");
-    private static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    private final ArrayList<LogStatement> mLogStatementList;
-    private final ArrayList<Object[]> mValuesList;
-    // Assume that mTimeList is sorted in increasing order.  Do not insert null values into
-    // mTimeList.
-    private final ArrayList<Long> mTimeList;
-    // Words that this LogUnit generates.  Should be null if the data in the LogUnit does not
-    // generate a genuine word (i.e. separators alone do not count as a word).  Should never be
-    // empty.  Note that if the user types spaces explicitly, then normally mWords should contain
-    // only a single word; it will only contain space-separate multiple words if the user does not
-    // enter a space, and the system enters one automatically.
-    private String mWords;
-    private String[] mWordArray = EMPTY_STRING_ARRAY;
-    private boolean mMayContainDigit;
-    private boolean mIsPartOfMegaword;
-    private boolean mContainsUserDeletions;
-
-    // mCorrectionType indicates whether the word was corrected at all, and if so, the nature of the
-    // correction.
-    private int mCorrectionType;
-    // LogUnits start in this state.  If a word is entered without being corrected, it will have
-    // this CorrectiontType.
-    public static final int CORRECTIONTYPE_NO_CORRECTION = 0;
-    // The LogUnit was corrected manually by the user in an unspecified way.
-    public static final int CORRECTIONTYPE_CORRECTION = 1;
-    // The LogUnit was corrected manually by the user to a word not in the list of suggestions of
-    // the first word typed here.  (Note: this is a heuristic value, it may be incorrect, for
-    // example, if the user repositions the cursor).
-    public static final int CORRECTIONTYPE_DIFFERENT_WORD = 2;
-    // The LogUnit was corrected manually by the user to a word that was in the list of suggestions
-    // of the first word typed here.  (Again, a heuristic).  It is probably a typo correction.
-    public static final int CORRECTIONTYPE_TYPO = 3;
-    // TODO: Rather than just tracking the current state, keep a historical record of the LogUnit's
-    // state and statistics.  This should include how many times it has been corrected, whether
-    // other LogUnit edits were done between edits to this LogUnit, etc.  Also track when a LogUnit
-    // previously contained a word, but was corrected to empty (because it was deleted, and there is
-    // no known replacement).
-
-    private SuggestedWords mSuggestedWords;
-
-    public LogUnit() {
-        mLogStatementList = new ArrayList<LogStatement>();
-        mValuesList = new ArrayList<Object[]>();
-        mTimeList = new ArrayList<Long>();
-        mIsPartOfMegaword = false;
-        mCorrectionType = CORRECTIONTYPE_NO_CORRECTION;
-        mSuggestedWords = null;
-    }
-
-    private LogUnit(final ArrayList<LogStatement> logStatementList,
-            final ArrayList<Object[]> valuesList,
-            final ArrayList<Long> timeList,
-            final boolean isPartOfMegaword) {
-        mLogStatementList = logStatementList;
-        mValuesList = valuesList;
-        mTimeList = timeList;
-        mIsPartOfMegaword = isPartOfMegaword;
-        mCorrectionType = CORRECTIONTYPE_NO_CORRECTION;
-        mSuggestedWords = null;
-    }
-
-    private static final Object[] NULL_VALUES = new Object[0];
-    /**
-     * Adds a new log statement.  The time parameter in successive calls to this method must be
-     * monotonically increasing, or splitByTime() will not work.
-     */
-    public void addLogStatement(final LogStatement logStatement, final long time,
-            Object... values) {
-        if (values == null) {
-            values = NULL_VALUES;
-        }
-        mLogStatementList.add(logStatement);
-        mValuesList.add(values);
-        mTimeList.add(time);
-    }
-
-    /**
-     * Publish the contents of this LogUnit to {@code researchLog}.
-     *
-     * For each publishable {@code LogStatement}, invoke {@link LogStatement#outputToLocked}.
-     *
-     * @param researchLog where to publish the contents of this {@code LogUnit}
-     * @param canIncludePrivateData whether the private data in this {@code LogUnit} should be
-     * included
-     *
-     * @throws IOException if publication to the log file is not possible
-     */
-    public synchronized void publishTo(final ResearchLog researchLog,
-            final boolean canIncludePrivateData) throws IOException {
-        // Write out any logStatement that passes the privacy filter.
-        final int size = mLogStatementList.size();
-        if (size != 0) {
-            // Note that jsonWriter is only set to a non-null value if the logUnit start text is
-            // output and at least one logStatement is output.
-            JsonWriter jsonWriter = researchLog.getInitializedJsonWriterLocked();
-            outputLogUnitStart(jsonWriter, canIncludePrivateData);
-            for (int i = 0; i < size; i++) {
-                final LogStatement logStatement = mLogStatementList.get(i);
-                if (!canIncludePrivateData && logStatement.isPotentiallyPrivate()) {
-                    continue;
-                }
-                if (mIsPartOfMegaword && logStatement.isPotentiallyRevealing()) {
-                    continue;
-                }
-                logStatement.outputToLocked(jsonWriter, mTimeList.get(i), mValuesList.get(i));
-            }
-            outputLogUnitStop(jsonWriter);
-        }
-    }
-
-    private static final String WORD_KEY = "_wo";
-    private static final String NUM_WORDS_KEY = "_nw";
-    private static final String CORRECTION_TYPE_KEY = "_corType";
-    private static final String LOG_UNIT_BEGIN_KEY = "logUnitStart";
-    private static final String LOG_UNIT_END_KEY = "logUnitEnd";
-
-    final LogStatement LOGSTATEMENT_LOG_UNIT_BEGIN_WITH_PRIVATE_DATA =
-            new LogStatement(LOG_UNIT_BEGIN_KEY, false /* isPotentiallyPrivate */,
-                    false /* isPotentiallyRevealing */, WORD_KEY, CORRECTION_TYPE_KEY,
-                    NUM_WORDS_KEY);
-    final LogStatement LOGSTATEMENT_LOG_UNIT_BEGIN_WITHOUT_PRIVATE_DATA =
-            new LogStatement(LOG_UNIT_BEGIN_KEY, false /* isPotentiallyPrivate */,
-                    false /* isPotentiallyRevealing */, NUM_WORDS_KEY);
-    private void outputLogUnitStart(final JsonWriter jsonWriter,
-            final boolean canIncludePrivateData) {
-        final LogStatement logStatement;
-        if (canIncludePrivateData) {
-            LOGSTATEMENT_LOG_UNIT_BEGIN_WITH_PRIVATE_DATA.outputToLocked(jsonWriter,
-                    SystemClock.uptimeMillis(), getWordsAsString(), getCorrectionType(),
-                    getNumWords());
-        } else {
-            LOGSTATEMENT_LOG_UNIT_BEGIN_WITHOUT_PRIVATE_DATA.outputToLocked(jsonWriter,
-                    SystemClock.uptimeMillis(), getNumWords());
-        }
-    }
-
-    final LogStatement LOGSTATEMENT_LOG_UNIT_END =
-            new LogStatement(LOG_UNIT_END_KEY, false /* isPotentiallyPrivate */,
-                    false /* isPotentiallyRevealing */);
-    private void outputLogUnitStop(final JsonWriter jsonWriter) {
-        LOGSTATEMENT_LOG_UNIT_END.outputToLocked(jsonWriter, SystemClock.uptimeMillis());
-    }
-
-    /**
-     * Mark the current logUnit as containing data to generate {@code newWords}.
-     *
-     * If {@code setWord()} was previously called for this LogUnit, then the method will try to
-     * determine what kind of correction it is, and update its internal state of the correctionType
-     * accordingly.
-     *
-     * @param newWords The words this LogUnit generates.  Caller should not pass null or the empty
-     * string.
-     */
-    public void setWords(final String newWords) {
-        if (hasOneOrMoreWords()) {
-            // The word was already set once, and it is now being changed.  See if the new word
-            // is close to the old word.  If so, then the change is probably a typo correction.
-            // If not, the user may have decided to enter a different word, so flag it.
-            if (mSuggestedWords != null) {
-                if (isInSuggestedWords(newWords, mSuggestedWords)) {
-                    mCorrectionType = CORRECTIONTYPE_TYPO;
-                } else {
-                    mCorrectionType = CORRECTIONTYPE_DIFFERENT_WORD;
-                }
-            } else {
-                // No suggested words, so it's not clear whether it's a typo or different word.
-                // Mark it as a generic correction.
-                mCorrectionType = CORRECTIONTYPE_CORRECTION;
-            }
-        } else {
-            mCorrectionType = CORRECTIONTYPE_NO_CORRECTION;
-        }
-        mWords = newWords;
-
-        // Update mWordArray
-        mWordArray = (TextUtils.isEmpty(mWords)) ? EMPTY_STRING_ARRAY
-                : WHITESPACE_PATTERN.split(mWords);
-        if (mWordArray.length > 0 && TextUtils.isEmpty(mWordArray[0])) {
-            // Empty string at beginning of array.  Must have been whitespace at the start of the
-            // word.  Remove the empty string.
-            mWordArray = Arrays.copyOfRange(mWordArray, 1, mWordArray.length);
-        }
-    }
-
-    public String getWordsAsString() {
-        return mWords;
-    }
-
-    /**
-     * Retuns the words generated by the data in this LogUnit.
-     *
-     * The first word may be an empty string, if the data in the LogUnit started by generating
-     * whitespace.
-     *
-     * @return the array of words. an empty list of there are no words associated with this LogUnit.
-     */
-    public String[] getWordsAsStringArray() {
-        return mWordArray;
-    }
-
-    public boolean hasOneOrMoreWords() {
-        return mWordArray.length >= 1;
-    }
-
-    public int getNumWords() {
-        return mWordArray.length;
-    }
-
-    // TODO: Refactor to eliminate getter/setters
-    public void setMayContainDigit() {
-        mMayContainDigit = true;
-    }
-
-    // TODO: Refactor to eliminate getter/setters
-    public boolean mayContainDigit() {
-        return mMayContainDigit;
-    }
-
-    // TODO: Refactor to eliminate getter/setters
-    public void setContainsUserDeletions() {
-        mContainsUserDeletions = true;
-    }
-
-    // TODO: Refactor to eliminate getter/setters
-    public boolean containsUserDeletions() {
-        return mContainsUserDeletions;
-    }
-
-    // TODO: Refactor to eliminate getter/setters
-    public void setCorrectionType(final int correctionType) {
-        mCorrectionType = correctionType;
-    }
-
-    // TODO: Refactor to eliminate getter/setters
-    public int getCorrectionType() {
-        return mCorrectionType;
-    }
-
-    public boolean isEmpty() {
-        return mLogStatementList.isEmpty();
-    }
-
-    /**
-     * Split this logUnit, with all events before maxTime staying in the current logUnit, and all
-     * events after maxTime going into a new LogUnit that is returned.
-     */
-    public LogUnit splitByTime(final long maxTime) {
-        // Assume that mTimeList is in sorted order.
-        final int length = mTimeList.size();
-        // TODO: find time by binary search, e.g. using Collections#binarySearch()
-        for (int index = 0; index < length; index++) {
-            if (mTimeList.get(index) > maxTime) {
-                final List<LogStatement> laterLogStatements =
-                        mLogStatementList.subList(index, length);
-                final List<Object[]> laterValues = mValuesList.subList(index, length);
-                final List<Long> laterTimes = mTimeList.subList(index, length);
-
-                // Create the LogUnit containing the later logStatements and associated data.
-                final LogUnit newLogUnit = new LogUnit(
-                        new ArrayList<LogStatement>(laterLogStatements),
-                        new ArrayList<Object[]>(laterValues),
-                        new ArrayList<Long>(laterTimes),
-                        true /* isPartOfMegaword */);
-                newLogUnit.mWords = null;
-                newLogUnit.mMayContainDigit = mMayContainDigit;
-                newLogUnit.mContainsUserDeletions = mContainsUserDeletions;
-
-                // Purge the logStatements and associated data from this LogUnit.
-                laterLogStatements.clear();
-                laterValues.clear();
-                laterTimes.clear();
-                mIsPartOfMegaword = true;
-
-                return newLogUnit;
-            }
-        }
-        return new LogUnit();
-    }
-
-    public void append(final LogUnit logUnit) {
-        mLogStatementList.addAll(logUnit.mLogStatementList);
-        mValuesList.addAll(logUnit.mValuesList);
-        mTimeList.addAll(logUnit.mTimeList);
-        mWords = null;
-        if (logUnit.mWords != null) {
-            setWords(logUnit.mWords);
-        }
-        mMayContainDigit = mMayContainDigit || logUnit.mMayContainDigit;
-        mContainsUserDeletions = mContainsUserDeletions || logUnit.mContainsUserDeletions;
-        mIsPartOfMegaword = false;
-    }
-
-    public SuggestedWords getSuggestions() {
-        return mSuggestedWords;
-    }
-
-    /**
-     * Initialize the suggestions.
-     *
-     * Once set to a non-null value, the suggestions may not be changed again.  This is to keep
-     * track of the list of words that are close to the user's initial effort to type the word.
-     * Only words that are close to the initial effort are considered typo corrections.
-     */
-    public void initializeSuggestions(final SuggestedWords suggestedWords) {
-        if (mSuggestedWords == null) {
-            mSuggestedWords = suggestedWords;
-        }
-    }
-
-    private static boolean isInSuggestedWords(final String queryWord,
-            final SuggestedWords suggestedWords) {
-        if (TextUtils.isEmpty(queryWord)) {
-            return false;
-        }
-        final int size = suggestedWords.size();
-        for (int i = 0; i < size; i++) {
-            final SuggestedWordInfo wordInfo = suggestedWords.getInfo(i);
-            if (queryWord.equals(wordInfo.mWord)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Remove data associated with selecting the Research button.
-     *
-     * A LogUnit will capture all user interactions with the IME, including the "meta-interactions"
-     * of using the Research button to control the logging (e.g. by starting and stopping recording
-     * of a test case).  Because meta-interactions should not be part of the normal log, calling
-     * this method will set a field in the LogStatements of the motion events to indiciate that
-     * they should be disregarded.
-     *
-     * This implementation assumes that the data recorded by the meta-interaction takes the
-     * form of all events following the first MotionEvent.ACTION_DOWN before the first long-press
-     * before the last onCodeEvent containing a code matching {@code LogStatement.VALUE_RESEARCH}.
-     *
-     * @returns true if data was removed
-     */
-    public boolean removeResearchButtonInvocation() {
-        // This method is designed to be idempotent.
-
-        // First, find last invocation of "research" key
-        final int indexOfLastResearchKey = findLastIndexContainingKeyValue(
-                LogStatement.TYPE_POINTER_TRACKER_CALL_LISTENER_ON_CODE_INPUT,
-                LogStatement.KEY_CODE, LogStatement.VALUE_RESEARCH);
-        if (indexOfLastResearchKey < 0) {
-            // Could not find invocation of "research" key.  Leave log as is.
-            if (DEBUG) {
-                Log.d(TAG, "Could not find research key");
-            }
-            return false;
-        }
-
-        // Look for the long press that started the invocation of the research key code input.
-        final int indexOfLastLongPressBeforeResearchKey =
-                findLastIndexBefore(LogStatement.TYPE_MAIN_KEYBOARD_VIEW_ON_LONG_PRESS,
-                        indexOfLastResearchKey);
-
-        // Look for DOWN event preceding the long press
-        final int indexOfLastDownEventBeforeLongPress =
-                findLastIndexContainingKeyValueBefore(LogStatement.TYPE_MOTION_EVENT,
-                        LogStatement.ACTION, LogStatement.VALUE_DOWN,
-                        indexOfLastLongPressBeforeResearchKey);
-
-        // Flag all LatinKeyboardViewProcessMotionEvents from the DOWN event to the research key as
-        // logging-related
-        final int startingIndex = indexOfLastDownEventBeforeLongPress == -1 ? 0
-                : indexOfLastDownEventBeforeLongPress;
-        for (int index = startingIndex; index < indexOfLastResearchKey; index++) {
-            final LogStatement logStatement = mLogStatementList.get(index);
-            final String type = logStatement.getType();
-            final Object[] values = mValuesList.get(index);
-            if (type.equals(LogStatement.TYPE_MOTION_EVENT)) {
-                logStatement.setValue(LogStatement.KEY_IS_LOGGING_RELATED, values, true);
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Find the index of the last LogStatement before {@code startingIndex} of type {@code type}.
-     *
-     * @param queryType a String that must be {@code String.equals()} to the LogStatement type
-     * @param startingIndex the index to start the backward search from.  Must be less than the
-     * length of mLogStatementList, or an IndexOutOfBoundsException is thrown.  Can be negative,
-     * in which case -1 is returned.
-     *
-     * @return The index of the last LogStatement, -1 if none exists.
-     */
-    private int findLastIndexBefore(final String queryType, final int startingIndex) {
-        return findLastIndexContainingKeyValueBefore(queryType, null, null, startingIndex);
-    }
-
-    /**
-     * Find the index of the last LogStatement before {@code startingIndex} of type {@code type}
-     * containing the given key-value pair.
-     *
-     * @param queryType a String that must be {@code String.equals()} to the LogStatement type
-     * @param queryKey a String that must be {@code String.equals()} to a key in the LogStatement
-     * @param queryValue an Object that must be {@code String.equals()} to the key's corresponding
-     * value
-     *
-     * @return The index of the last LogStatement, -1 if none exists.
-     */
-    private int findLastIndexContainingKeyValue(final String queryType, final String queryKey,
-            final Object queryValue) {
-        return findLastIndexContainingKeyValueBefore(queryType, queryKey, queryValue,
-                mLogStatementList.size() - 1);
-    }
-
-    /**
-     * Find the index of the last LogStatement before {@code startingIndex} of type {@code type}
-     * containing the given key-value pair.
-     *
-     * @param queryType a String that must be {@code String.equals()} to the LogStatement type
-     * @param queryKey a String that must be {@code String.equals()} to a key in the LogStatement
-     * @param queryValue an Object that must be {@code String.equals()} to the key's corresponding
-     * value
-     * @param startingIndex the index to start the backward search from.  Must be less than the
-     * length of mLogStatementList, or an IndexOutOfBoundsException is thrown.  Can be negative,
-     * in which case -1 is returned.
-     *
-     * @return The index of the last LogStatement, -1 if none exists.
-     */
-    private int findLastIndexContainingKeyValueBefore(final String queryType, final String queryKey,
-            final Object queryValue, final int startingIndex) {
-        if (startingIndex < 0) {
-            return -1;
-        }
-        for (int index = startingIndex; index >= 0; index--) {
-            final LogStatement logStatement = mLogStatementList.get(index);
-            final String type = logStatement.getType();
-            if (type.equals(queryType) && (queryKey == null
-                    || logStatement.containsKeyValuePair(queryKey, queryValue,
-                            mValuesList.get(index)))) {
-                return index;
-            }
-        }
-        return -1;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/LoggingUtils.java b/java/src/com/android/inputmethod/research/LoggingUtils.java
deleted file mode 100644
index 1261d67..0000000
--- a/java/src/com/android/inputmethod/research/LoggingUtils.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.view.MotionEvent;
-
-/* package */ class LoggingUtils {
-    private LoggingUtils() {
-        // This utility class is not publicly instantiable.
-    }
-
-    /* package */ static String getMotionEventActionTypeString(final int actionType) {
-        switch (actionType) {
-        case MotionEvent.ACTION_CANCEL: return "CANCEL";
-        case MotionEvent.ACTION_UP: return "UP";
-        case MotionEvent.ACTION_DOWN: return "DOWN";
-        case MotionEvent.ACTION_POINTER_UP: return "POINTER_UP";
-        case MotionEvent.ACTION_POINTER_DOWN: return "POINTER_DOWN";
-        case MotionEvent.ACTION_MOVE: return "MOVE";
-        case MotionEvent.ACTION_OUTSIDE: return "OUTSIDE";
-        default: return "ACTION_" + actionType;
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/MainLogBuffer.java b/java/src/com/android/inputmethod/research/MainLogBuffer.java
deleted file mode 100644
index 6df7c17..0000000
--- a/java/src/com/android/inputmethod/research/MainLogBuffer.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * 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.research;
-
-import android.util.Log;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.Suggest;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.LinkedList;
-
-/**
- * MainLogBuffer is a FixedLogBuffer that tracks the state of LogUnits to make privacy guarantees.
- *
- * There are three forms of privacy protection: 1) only words in the main dictionary are allowed to
- * be logged in enough detail to determine their contents, 2) only a subset of words are logged
- * in detail, such as 10%, and 3) no numbers are logged.
- *
- * This class maintains a list of LogUnits, each corresponding to a word.  As the user completes
- * words, they are added here.  But if the user backs up over their current word to edit a word
- * entered earlier, then it is pulled out of this LogBuffer, changes are then added to the end of
- * the LogUnit, and it is pushed back in here when the user is done.  Because words may be pulled
- * back out even after they are pushed in, we must not publish the contents of this LogBuffer too
- * quickly.  However, we cannot let the contents pile up either, or it will limit the editing that
- * a user can perform.
- *
- * To balance these requirements (keep history so user can edit, flush history so it does not pile
- * up), the LogBuffer is considered "complete" when the user has entered enough words to form an
- * n-gram, followed by enough additional non-detailed words (that are in the 90%, as per above).
- * Once complete, the n-gram may be published to flash storage (via the ResearchLog class).
- * However, the additional non-detailed words are retained, in case the user backspaces to edit
- * them.  The MainLogBuffer then continues to add words, publishing individual non-detailed words
- * as new words arrive.  After enough non-detailed words have been pushed out to account for the
- * 90% between words, the words at the front of the LogBuffer can be published as an n-gram again.
- *
- * If the words that would form the valid n-gram are not in the dictionary, then words are pushed
- * through the LogBuffer one at a time until an n-gram is found that is entirely composed of
- * dictionary words.
- *
- * If the user closes a session, then the entire LogBuffer is flushed, publishing any embedded
- * n-gram containing dictionary words.
- */
-public abstract class MainLogBuffer extends FixedLogBuffer {
-    private static final String TAG = MainLogBuffer.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-
-    // Keep consistent with switch statement in Statistics.recordPublishabilityResultCode()
-    public static final int PUBLISHABILITY_PUBLISHABLE = 0;
-    public static final int PUBLISHABILITY_UNPUBLISHABLE_STOPPING = 1;
-    public static final int PUBLISHABILITY_UNPUBLISHABLE_INCORRECT_WORD_COUNT = 2;
-    public static final int PUBLISHABILITY_UNPUBLISHABLE_SAMPLED_TOO_RECENTLY = 3;
-    public static final int PUBLISHABILITY_UNPUBLISHABLE_DICTIONARY_UNAVAILABLE = 4;
-    public static final int PUBLISHABILITY_UNPUBLISHABLE_MAY_CONTAIN_DIGIT = 5;
-    public static final int PUBLISHABILITY_UNPUBLISHABLE_NOT_IN_DICTIONARY = 6;
-
-    // The size of the n-grams logged.  E.g. N_GRAM_SIZE = 2 means to sample bigrams.
-    public static final int N_GRAM_SIZE = 2;
-
-    // TODO: Remove dependence on Suggest, and pass in Dictionary as a parameter to an appropriate
-    // method.
-    private final Suggest mSuggest;
-    @UsedForTesting
-    private Dictionary mDictionaryForTesting;
-    private boolean mIsStopping = false;
-
-    /* package for test */ int mNumWordsBetweenNGrams;
-
-    // Counter for words left to suppress before an n-gram can be sampled.  Reset to mMinWordPeriod
-    // after a sample is taken.
-    /* package for test */ int mNumWordsUntilSafeToSample;
-
-    public MainLogBuffer(final int wordsBetweenSamples, final int numInitialWordsToIgnore,
-            final Suggest suggest) {
-        super(N_GRAM_SIZE + wordsBetweenSamples);
-        mNumWordsBetweenNGrams = wordsBetweenSamples;
-        mNumWordsUntilSafeToSample = DEBUG ? 0 : numInitialWordsToIgnore;
-        mSuggest = suggest;
-    }
-
-    @UsedForTesting
-    /* package for test */ void setDictionaryForTesting(final Dictionary dictionary) {
-        mDictionaryForTesting = dictionary;
-    }
-
-    private Dictionary getDictionary() {
-        if (mDictionaryForTesting != null) {
-            return mDictionaryForTesting;
-        }
-        if (mSuggest == null || !mSuggest.hasMainDictionary()) return null;
-        return mSuggest.getMainDictionary();
-    }
-
-    public void setIsStopping() {
-        mIsStopping = true;
-    }
-
-    /**
-     * Determines whether the string determined by a series of LogUnits will not violate user
-     * privacy if published.
-     *
-     * @param logUnits a LogUnit list to check for publishability
-     * @param nGramSize the smallest n-gram acceptable to be published.  if
-     * {@link ResearchLogger#IS_LOGGING_EVERYTHING} is true, then publish if there are more than
-     * {@code minNGramSize} words in the logUnits, otherwise wait.  if {@link
-     * ResearchLogger#IS_LOGGING_EVERYTHING} is false, then ensure that there are exactly nGramSize
-     * words in the LogUnits.
-     *
-     * @return one of the {@code PUBLISHABILITY_*} result codes defined in this class.
-     */
-    private int getPublishabilityResultCode(final ArrayList<LogUnit> logUnits,
-            final int nGramSize) {
-        // Bypass privacy checks when debugging.
-        if (ResearchLogger.IS_LOGGING_EVERYTHING) {
-            if (mIsStopping) {
-                return PUBLISHABILITY_UNPUBLISHABLE_STOPPING;
-            }
-            // Only check that it is the right length.  If not, wait for later words to make
-            // complete n-grams.
-            int numWordsInLogUnitList = 0;
-            final int length = logUnits.size();
-            for (int i = 0; i < length; i++) {
-                final LogUnit logUnit = logUnits.get(i);
-                numWordsInLogUnitList += logUnit.getNumWords();
-            }
-            if (numWordsInLogUnitList >= nGramSize) {
-                return PUBLISHABILITY_PUBLISHABLE;
-            } else {
-                return PUBLISHABILITY_UNPUBLISHABLE_INCORRECT_WORD_COUNT;
-            }
-        }
-
-        // Check that we are not sampling too frequently.  Having sampled recently might disclose
-        // too much of the user's intended meaning.
-        if (mNumWordsUntilSafeToSample > 0) {
-            return PUBLISHABILITY_UNPUBLISHABLE_SAMPLED_TOO_RECENTLY;
-        }
-        // Reload the dictionary in case it has changed (e.g., because the user has changed
-        // languages).
-        final Dictionary dictionary = getDictionary();
-        if (dictionary == null) {
-            // Main dictionary is unavailable.  Since we cannot check it, we cannot tell if a
-            // word is out-of-vocabulary or not.  Therefore, we must judge the entire buffer
-            // contents to potentially pose a privacy risk.
-            return PUBLISHABILITY_UNPUBLISHABLE_DICTIONARY_UNAVAILABLE;
-        }
-
-        // Check each word in the buffer.  If any word poses a privacy threat, we cannot upload
-        // the complete buffer contents in detail.
-        int numWordsInLogUnitList = 0;
-        final int length = logUnits.size();
-        for (final LogUnit logUnit : logUnits) {
-            if (!logUnit.hasOneOrMoreWords()) {
-                // Digits outside words are a privacy threat.
-                if (logUnit.mayContainDigit()) {
-                    return PUBLISHABILITY_UNPUBLISHABLE_MAY_CONTAIN_DIGIT;
-                }
-            } else {
-                numWordsInLogUnitList += logUnit.getNumWords();
-                final String[] words = logUnit.getWordsAsStringArray();
-                for (final String word : words) {
-                    // Words not in the dictionary are a privacy threat.
-                    if (ResearchLogger.hasLetters(word) && !(dictionary.isValidWord(word))) {
-                        if (DEBUG) {
-                            Log.d(TAG, "\"" + word + "\" NOT SAFE!: hasLetters: "
-                                    + ResearchLogger.hasLetters(word)
-                                    + ", isValid: " + (dictionary.isValidWord(word)));
-                        }
-                        return PUBLISHABILITY_UNPUBLISHABLE_NOT_IN_DICTIONARY;
-                    }
-                }
-            }
-        }
-
-        // Finally, only return true if the ngram is the right size.
-        if (numWordsInLogUnitList == nGramSize) {
-            return PUBLISHABILITY_PUBLISHABLE;
-        } else {
-            return PUBLISHABILITY_UNPUBLISHABLE_INCORRECT_WORD_COUNT;
-        }
-    }
-
-    public void shiftAndPublishAll() throws IOException {
-        final LinkedList<LogUnit> logUnits = getLogUnits();
-        while (!logUnits.isEmpty()) {
-            publishLogUnitsAtFrontOfBuffer();
-        }
-    }
-
-    @Override
-    protected final void onBufferFull() {
-        try {
-            publishLogUnitsAtFrontOfBuffer();
-        } catch (final IOException e) {
-            if (DEBUG) {
-                Log.w(TAG, "IOException when publishing front of LogBuffer", e);
-            }
-        }
-    }
-
-    /**
-     * If there is a safe n-gram at the front of this log buffer, publish it with all details, and
-     * remove the LogUnits that constitute it.
-     *
-     * An n-gram might not be "safe" if it violates privacy controls.  E.g., it might contain
-     * numbers, an out-of-vocabulary word, or another n-gram may have been published recently.  If
-     * there is no safe n-gram, then the LogUnits up through the first word-containing LogUnit are
-     * published, but without disclosing any privacy-related details, such as the word the LogUnit
-     * generated, motion data, etc.
-     *
-     * Note that a LogUnit can hold more than one word if the user types without explicit spaces.
-     * In this case, the words may be grouped together in such a way that pulling an n-gram off the
-     * front would require splitting a LogUnit.  Splitting a LogUnit is not possible, so this case
-     * is treated just as the unsafe n-gram case.  This may cause n-grams to be sampled at slightly
-     * less than the target frequency.
-     */
-    protected final void publishLogUnitsAtFrontOfBuffer() throws IOException {
-        // TODO: Refactor this method to require fewer passes through the LogUnits.  Should really
-        // require only one pass.
-        ArrayList<LogUnit> logUnits = peekAtFirstNWords(N_GRAM_SIZE);
-        final int publishabilityResultCode = getPublishabilityResultCode(logUnits, N_GRAM_SIZE);
-        ResearchLogger.recordPublishabilityResultCode(publishabilityResultCode);
-        if (publishabilityResultCode == MainLogBuffer.PUBLISHABILITY_PUBLISHABLE) {
-            // Good n-gram at the front of the buffer.  Publish it, disclosing details.
-            publish(logUnits, true /* canIncludePrivateData */);
-            shiftOutWords(N_GRAM_SIZE);
-            mNumWordsUntilSafeToSample = mNumWordsBetweenNGrams;
-            return;
-        }
-        // No good n-gram at front, and buffer is full.  Shift out up through the first logUnit
-        // with associated words (or if there is none, all the existing logUnits).
-        logUnits.clear();
-        LogUnit logUnit = shiftOut();
-        while (logUnit != null) {
-            logUnits.add(logUnit);
-            final int numWords = logUnit.getNumWords();
-            if (numWords > 0) {
-                mNumWordsUntilSafeToSample = Math.max(0, mNumWordsUntilSafeToSample - numWords);
-                break;
-            }
-            logUnit = shiftOut();
-        }
-        publish(logUnits, false /* canIncludePrivateData */);
-    }
-
-    /**
-     * Called when a list of logUnits should be published.
-     *
-     * It is the subclass's responsibility to implement the publication.
-     *
-     * @param logUnits The list of logUnits to be published.
-     * @param canIncludePrivateData Whether the private data in the logUnits can be included in
-     * publication.
-     *
-     * @throws IOException if publication to the log file is not possible
-     */
-    protected abstract void publish(final ArrayList<LogUnit> logUnits,
-            final boolean canIncludePrivateData) throws IOException;
-
-    @Override
-    protected int shiftOutWords(final int numWords) {
-        final int numWordsShiftedOut = super.shiftOutWords(numWords);
-        mNumWordsUntilSafeToSample = Math.max(0, mNumWordsUntilSafeToSample - numWordsShiftedOut);
-        if (DEBUG) {
-            Log.d(TAG, "wordsUntilSafeToSample now at " + mNumWordsUntilSafeToSample);
-        }
-        return numWordsShiftedOut;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/MotionEventReader.java b/java/src/com/android/inputmethod/research/MotionEventReader.java
deleted file mode 100644
index 3388645..0000000
--- a/java/src/com/android/inputmethod/research/MotionEventReader.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.util.JsonReader;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.MotionEvent.PointerCoords;
-import android.view.MotionEvent.PointerProperties;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-public class MotionEventReader {
-    private static final String TAG = MotionEventReader.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    // Assumes that MotionEvent.ACTION_MASK does not have all bits set.`
-    private static final int UNINITIALIZED_ACTION = ~MotionEvent.ACTION_MASK;
-    // No legitimate int is negative
-    private static final int UNINITIALIZED_INT = -1;
-    // No legitimate long is negative
-    private static final long UNINITIALIZED_LONG = -1L;
-    // No legitimate float is negative
-    private static final float UNINITIALIZED_FLOAT = -1.0f;
-
-    public ReplayData readMotionEventData(final File file) {
-        final ReplayData replayData = new ReplayData();
-        try {
-            // Read file
-            final JsonReader jsonReader = new JsonReader(new BufferedReader(new InputStreamReader(
-                    new FileInputStream(file))));
-            jsonReader.beginArray();
-            while (jsonReader.hasNext()) {
-                readLogStatement(jsonReader, replayData);
-            }
-            jsonReader.endArray();
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return replayData;
-    }
-
-    @UsedForTesting
-    static class ReplayData {
-        final ArrayList<Integer> mActions = new ArrayList<Integer>();
-        final ArrayList<PointerProperties[]> mPointerPropertiesArrays
-                = new ArrayList<PointerProperties[]>();
-        final ArrayList<PointerCoords[]> mPointerCoordsArrays = new ArrayList<PointerCoords[]>();
-        final ArrayList<Long> mTimes = new ArrayList<Long>();
-    }
-
-    /**
-     * Read motion data from a logStatement and store it in {@code replayData}.
-     *
-     * Two kinds of logStatements can be read.  In the first variant, the MotionEvent data is
-     * represented as attributes at the top level like so:
-     *
-     * <pre>
-     * {
-     *   "_ct": 1359590400000,
-     *   "_ut": 4381933,
-     *   "_ty": "MotionEvent",
-     *   "action": "UP",
-     *   "isLoggingRelated": false,
-     *   "x": 100,
-     *   "y": 200
-     * }
-     * </pre>
-     *
-     * In the second variant, there is a separate attribute for the MotionEvent that includes
-     * historical data if present:
-     *
-     * <pre>
-     * {
-     *   "_ct": 135959040000,
-     *   "_ut": 4382702,
-     *   "_ty": "MotionEvent",
-     *   "action": "MOVE",
-     *   "isLoggingRelated": false,
-     *   "motionEvent": {
-     *     "pointerIds": [
-     *       0
-     *     ],
-     *     "xyt": [
-     *       {
-     *         "t": 4382551,
-     *         "d": [
-     *           {
-     *             "x": 141.25,
-     *             "y": 151.8485107421875,
-     *             "toma": 101.82337188720703,
-     *             "tomi": 101.82337188720703,
-     *             "o": 0.0
-     *           }
-     *         ]
-     *       },
-     *       {
-     *         "t": 4382559,
-     *         "d": [
-     *           {
-     *             "x": 140.7266082763672,
-     *             "y": 151.8485107421875,
-     *             "toma": 101.82337188720703,
-     *             "tomi": 101.82337188720703,
-     *             "o": 0.0
-     *           }
-     *         ]
-     *       }
-     *     ]
-     *   }
-     * },
-     * </pre>
-     */
-    @UsedForTesting
-    /* package for test */ void readLogStatement(final JsonReader jsonReader,
-            final ReplayData replayData) throws IOException {
-        String logStatementType = null;
-        int actionType = UNINITIALIZED_ACTION;
-        int x = UNINITIALIZED_INT;
-        int y = UNINITIALIZED_INT;
-        long time = UNINITIALIZED_LONG;
-        boolean isLoggingRelated = false;
-
-        jsonReader.beginObject();
-        while (jsonReader.hasNext()) {
-            final String key = jsonReader.nextName();
-            if (key.equals("_ty")) {
-                logStatementType = jsonReader.nextString();
-            } else if (key.equals("_ut")) {
-                time = jsonReader.nextLong();
-            } else if (key.equals("x")) {
-                x = jsonReader.nextInt();
-            } else if (key.equals("y")) {
-                y = jsonReader.nextInt();
-            } else if (key.equals("action")) {
-                final String s = jsonReader.nextString();
-                if (s.equals("UP")) {
-                    actionType = MotionEvent.ACTION_UP;
-                } else if (s.equals("DOWN")) {
-                    actionType = MotionEvent.ACTION_DOWN;
-                } else if (s.equals("MOVE")) {
-                    actionType = MotionEvent.ACTION_MOVE;
-                }
-            } else if (key.equals("loggingRelated")) {
-                isLoggingRelated = jsonReader.nextBoolean();
-            } else if (logStatementType != null && logStatementType.equals("MotionEvent")
-                    && key.equals("motionEvent")) {
-                if (actionType == UNINITIALIZED_ACTION) {
-                    Log.e(TAG, "no actionType assigned in MotionEvent json");
-                }
-                // Second variant of LogStatement.
-                if (isLoggingRelated) {
-                    jsonReader.skipValue();
-                } else {
-                    readEmbeddedMotionEvent(jsonReader, replayData, actionType);
-                }
-            } else {
-                if (DEBUG) {
-                    Log.w(TAG, "Unknown JSON key in LogStatement: " + key);
-                }
-                jsonReader.skipValue();
-            }
-        }
-        jsonReader.endObject();
-
-        if (logStatementType != null && time != UNINITIALIZED_LONG && x != UNINITIALIZED_INT
-                && y != UNINITIALIZED_INT && actionType != UNINITIALIZED_ACTION
-                && logStatementType.equals("MotionEvent") && !isLoggingRelated) {
-            // First variant of LogStatement.
-            final PointerProperties pointerProperties = new PointerProperties();
-            pointerProperties.id = 0;
-            pointerProperties.toolType = MotionEvent.TOOL_TYPE_UNKNOWN;
-            final PointerProperties[] pointerPropertiesArray = {
-                pointerProperties
-            };
-            final PointerCoords pointerCoords = new PointerCoords();
-            pointerCoords.x = x;
-            pointerCoords.y = y;
-            pointerCoords.pressure = 1.0f;
-            pointerCoords.size = 1.0f;
-            final PointerCoords[] pointerCoordsArray = {
-                pointerCoords
-            };
-            addMotionEventData(replayData, actionType, time, pointerPropertiesArray,
-                    pointerCoordsArray);
-        }
-    }
-
-    private void readEmbeddedMotionEvent(final JsonReader jsonReader, final ReplayData replayData,
-            final int actionType) throws IOException {
-        jsonReader.beginObject();
-        PointerProperties[] pointerPropertiesArray = null;
-        while (jsonReader.hasNext()) {  // pointerIds/xyt
-            final String name = jsonReader.nextName();
-            if (name.equals("pointerIds")) {
-                pointerPropertiesArray = readPointerProperties(jsonReader);
-            } else if (name.equals("xyt")) {
-                readPointerData(jsonReader, replayData, actionType, pointerPropertiesArray);
-            }
-        }
-        jsonReader.endObject();
-    }
-
-    private PointerProperties[] readPointerProperties(final JsonReader jsonReader)
-            throws IOException {
-        final ArrayList<PointerProperties> pointerPropertiesArrayList =
-                new ArrayList<PointerProperties>();
-        jsonReader.beginArray();
-        while (jsonReader.hasNext()) {
-            final PointerProperties pointerProperties = new PointerProperties();
-            pointerProperties.id = jsonReader.nextInt();
-            pointerProperties.toolType = MotionEvent.TOOL_TYPE_UNKNOWN;
-            pointerPropertiesArrayList.add(pointerProperties);
-        }
-        jsonReader.endArray();
-        return pointerPropertiesArrayList.toArray(
-                new PointerProperties[pointerPropertiesArrayList.size()]);
-    }
-
-    private void readPointerData(final JsonReader jsonReader, final ReplayData replayData,
-            final int actionType, final PointerProperties[] pointerPropertiesArray)
-            throws IOException {
-        if (pointerPropertiesArray == null) {
-            Log.e(TAG, "PointerIDs must be given before xyt data in json for MotionEvent");
-            jsonReader.skipValue();
-            return;
-        }
-        long time = UNINITIALIZED_LONG;
-        jsonReader.beginArray();
-        while (jsonReader.hasNext()) {  // Array of historical data
-            jsonReader.beginObject();
-            final ArrayList<PointerCoords> pointerCoordsArrayList = new ArrayList<PointerCoords>();
-            while (jsonReader.hasNext()) {  // Time/data object
-                final String name = jsonReader.nextName();
-                if (name.equals("t")) {
-                    time = jsonReader.nextLong();
-                } else if (name.equals("d")) {
-                    jsonReader.beginArray();
-                    while (jsonReader.hasNext()) {  // array of data per pointer
-                        final PointerCoords pointerCoords = readPointerCoords(jsonReader);
-                        if (pointerCoords != null) {
-                            pointerCoordsArrayList.add(pointerCoords);
-                        }
-                    }
-                    jsonReader.endArray();
-                } else {
-                    jsonReader.skipValue();
-                }
-            }
-            jsonReader.endObject();
-            // Data was recorded as historical events, but must be split apart into
-            // separate MotionEvents for replaying
-            if (time != UNINITIALIZED_LONG) {
-                addMotionEventData(replayData, actionType, time, pointerPropertiesArray,
-                        pointerCoordsArrayList.toArray(
-                                new PointerCoords[pointerCoordsArrayList.size()]));
-            } else {
-                Log.e(TAG, "Time not assigned in json for MotionEvent");
-            }
-        }
-        jsonReader.endArray();
-    }
-
-    private PointerCoords readPointerCoords(final JsonReader jsonReader) throws IOException {
-        jsonReader.beginObject();
-        float x = UNINITIALIZED_FLOAT;
-        float y = UNINITIALIZED_FLOAT;
-        while (jsonReader.hasNext()) {  // x,y
-            final String name = jsonReader.nextName();
-            if (name.equals("x")) {
-                x = (float) jsonReader.nextDouble();
-            } else if (name.equals("y")) {
-                y = (float) jsonReader.nextDouble();
-            } else {
-                jsonReader.skipValue();
-            }
-        }
-        jsonReader.endObject();
-
-        if (Float.compare(x, UNINITIALIZED_FLOAT) == 0
-                || Float.compare(y, UNINITIALIZED_FLOAT) == 0) {
-            Log.w(TAG, "missing x or y value in MotionEvent json");
-            return null;
-        }
-        final PointerCoords pointerCoords = new PointerCoords();
-        pointerCoords.x = x;
-        pointerCoords.y = y;
-        pointerCoords.pressure = 1.0f;
-        pointerCoords.size = 1.0f;
-        return pointerCoords;
-    }
-
-    private void addMotionEventData(final ReplayData replayData, final int actionType,
-            final long time, final PointerProperties[] pointerProperties,
-            final PointerCoords[] pointerCoords) {
-        replayData.mActions.add(actionType);
-        replayData.mTimes.add(time);
-        replayData.mPointerPropertiesArrays.add(pointerProperties);
-        replayData.mPointerCoordsArrays.add(pointerCoords);
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/Replayer.java b/java/src/com/android/inputmethod/research/Replayer.java
deleted file mode 100644
index 903875f..0000000
--- a/java/src/com/android/inputmethod/research/Replayer.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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.research;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.SystemClock;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.MotionEvent.PointerCoords;
-import android.view.MotionEvent.PointerProperties;
-
-import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.keyboard.MainKeyboardView;
-import com.android.inputmethod.latin.define.ProductionFlag;
-import com.android.inputmethod.research.MotionEventReader.ReplayData;
-
-/**
- * Replays a sequence of motion events in realtime on the screen.
- *
- * Useful for user inspection of logged data.
- */
-public class Replayer {
-    private static final String TAG = Replayer.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    private static final long START_TIME_DELAY_MS = 500;
-
-    private boolean mIsReplaying = false;
-    private KeyboardSwitcher mKeyboardSwitcher;
-
-    private Replayer() {
-    }
-
-    private static final Replayer sInstance = new Replayer();
-    public static Replayer getInstance() {
-        return sInstance;
-    }
-
-    public void setKeyboardSwitcher(final KeyboardSwitcher keyboardSwitcher) {
-        mKeyboardSwitcher = keyboardSwitcher;
-    }
-
-    private static final int MSG_MOTION_EVENT = 0;
-    private static final int MSG_DONE = 1;
-    private static final int COMPLETION_TIME_MS = 500;
-
-    // TODO: Support historical events and multi-touch.
-    public void replay(final ReplayData replayData, final Runnable callback) {
-        if (mIsReplaying) {
-            return;
-        }
-        mIsReplaying = true;
-        final int numActions = replayData.mActions.size();
-        if (DEBUG) {
-            Log.d(TAG, "replaying " + numActions + " actions");
-        }
-        if (numActions == 0) {
-            mIsReplaying = false;
-            return;
-        }
-        final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
-
-        // The reference time relative to the times stored in events.
-        final long origStartTime = replayData.mTimes.get(0);
-        // The reference time relative to which events are replayed in the present.
-        final long currentStartTime = SystemClock.uptimeMillis() + START_TIME_DELAY_MS;
-        // The adjustment needed to translate times from the original recorded time to the current
-        // time.
-        final long timeAdjustment = currentStartTime - origStartTime;
-        final Handler handler = new Handler(Looper.getMainLooper()) {
-            // Track the time of the most recent DOWN event, to be passed as a parameter when
-            // constructing a MotionEvent.  It's initialized here to the origStartTime, but this is
-            // only a precaution.  The value should be overwritten by the first ACTION_DOWN event
-            // before the first use of the variable.  Note that this may cause the first few events
-            // to have incorrect {@code downTime}s.
-            private long mOrigDownTime = origStartTime;
-
-            @Override
-            public void handleMessage(final Message msg) {
-                switch (msg.what) {
-                case MSG_MOTION_EVENT:
-                    final int index = msg.arg1;
-                    final int action = replayData.mActions.get(index);
-                    final PointerProperties[] pointerPropertiesArray =
-                            replayData.mPointerPropertiesArrays.get(index);
-                    final PointerCoords[] pointerCoordsArray =
-                            replayData.mPointerCoordsArrays.get(index);
-                    final long origTime = replayData.mTimes.get(index);
-                    if (action == MotionEvent.ACTION_DOWN) {
-                        mOrigDownTime = origTime;
-                    }
-
-                    final MotionEvent me = MotionEvent.obtain(mOrigDownTime + timeAdjustment,
-                            origTime + timeAdjustment, action,
-                            pointerPropertiesArray.length, pointerPropertiesArray,
-                            pointerCoordsArray, 0, 0, 1.0f, 1.0f, 0, 0, 0, 0);
-                    mainKeyboardView.processMotionEvent(me);
-                    me.recycle();
-                    break;
-                case MSG_DONE:
-                    mIsReplaying = false;
-                    ResearchLogger.getInstance().requestIndicatorRedraw();
-                    break;
-                }
-            }
-        };
-
-        handler.post(new Runnable() {
-            @Override
-            public void run() {
-                ResearchLogger.getInstance().requestIndicatorRedraw();
-            }
-        });
-        for (int i = 0; i < numActions; i++) {
-            final Message msg = Message.obtain(handler, MSG_MOTION_EVENT, i, 0);
-            final long msgTime = replayData.mTimes.get(i) + timeAdjustment;
-            handler.sendMessageAtTime(msg, msgTime);
-            if (DEBUG) {
-                Log.d(TAG, "queuing event at " + msgTime);
-            }
-        }
-
-        final long presentDoneTime = replayData.mTimes.get(numActions - 1) + timeAdjustment
-                + COMPLETION_TIME_MS;
-        handler.sendMessageAtTime(Message.obtain(handler, MSG_DONE), presentDoneTime);
-        if (callback != null) {
-            handler.postAtTime(callback, presentDoneTime + 1);
-        }
-    }
-
-    public boolean isReplaying() {
-        return mIsReplaying;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/ReplayerService.java b/java/src/com/android/inputmethod/research/ReplayerService.java
deleted file mode 100644
index 88d9033..0000000
--- a/java/src/com/android/inputmethod/research/ReplayerService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.research;
-
-import android.app.IntentService;
-import android.content.Intent;
-import android.util.Log;
-
-import com.android.inputmethod.research.MotionEventReader.ReplayData;
-
-import java.io.File;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Provide a mechanism to invoke the replayer from outside.
- *
- * In particular, makes access from a host possible through {@code adb am startservice}.
- */
-public class ReplayerService extends IntentService {
-    private static final String TAG = ReplayerService.class.getSimpleName();
-    private static final String EXTRA_FILENAME = "com.android.inputmethod.research.extra.FILENAME";
-    private static final long MAX_REPLAY_TIME = TimeUnit.SECONDS.toMillis(60);
-
-    public ReplayerService() {
-        super(ReplayerService.class.getSimpleName());
-    }
-
-    @Override
-    protected void onHandleIntent(final Intent intent) {
-        final String filename = intent.getStringExtra(EXTRA_FILENAME);
-        if (filename == null) return;
-
-        final ReplayData replayData = new MotionEventReader().readMotionEventData(
-                new File(filename));
-        synchronized (this) {
-            Replayer.getInstance().replay(replayData, new Runnable() {
-                @Override
-                public void run() {
-                    synchronized (ReplayerService.this) {
-                        ReplayerService.this.notify();
-                    }
-                }
-            });
-            try {
-                wait(MAX_REPLAY_TIME);
-            } catch (InterruptedException e) {
-                Log.e(TAG, "Timeout while replaying.", e);
-            }
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/ResearchLog.java b/java/src/com/android/inputmethod/research/ResearchLog.java
deleted file mode 100644
index 46e620a..0000000
--- a/java/src/com/android/inputmethod/research/ResearchLog.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * 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.research;
-
-import android.content.Context;
-import android.util.JsonWriter;
-import android.util.Log;
-
-import com.android.inputmethod.annotations.UsedForTesting;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.util.concurrent.Callable;
-import java.util.concurrent.Executors;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Logs the use of the LatinIME keyboard.
- *
- * This class logs operations on the IME keyboard, including what the user has typed.  Data is
- * written to a {@link JsonWriter}, which will write to a local file.
- *
- * The JsonWriter is created on-demand by calling {@link #getInitializedJsonWriterLocked}.
- *
- * This class uses an executor to perform file-writing operations on a separate thread.  It also
- * tries to avoid creating unnecessary files if there is nothing to write.  It also handles
- * flushing, making sure it happens, but not too frequently.
- *
- * This functionality is off by default. See
- * {@link ProductionFlag#USES_DEVELOPMENT_ONLY_DIAGNOSTICS}.
- */
-public class ResearchLog {
-    // TODO: Automatically initialize the JsonWriter rather than requiring the caller to manage it.
-    private static final String TAG = ResearchLog.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    private static final long FLUSH_DELAY_IN_MS = TimeUnit.SECONDS.toMillis(5);
-
-    /* package */ final ScheduledExecutorService mExecutor;
-    /* package */ final File mFile;
-    private final Context mContext;
-
-    // Earlier implementations used a dummy JsonWriter that just swallowed what it was given, but
-    // this was tricky to do well, because JsonWriter throws an exception if it is passed more than
-    // one top-level object.
-    private JsonWriter mJsonWriter = null;
-
-    // true if at least one byte of data has been written out to the log file.  This must be
-    // remembered because JsonWriter requires that calls matching calls to beginObject and
-    // endObject, as well as beginArray and endArray, and the file is opened lazily, only when
-    // it is certain that data will be written.  Alternatively, the matching call exceptions
-    // could be caught, but this might suppress other errors.
-    private boolean mHasWrittenData = false;
-
-    public ResearchLog(final File outputFile, final Context context) {
-        mExecutor = Executors.newSingleThreadScheduledExecutor();
-        mFile = outputFile;
-        mContext = context;
-    }
-
-    /**
-     * Returns true if this is a FeedbackLog.
-     *
-     * FeedbackLogs record only the data associated with a Feedback dialog. Instead of normal
-     * logging, they contain a LogStatement with the complete feedback string and optionally a
-     * recording of the user's supplied demo of the problem.
-     */
-    public boolean isFeedbackLog() {
-        return false;
-    }
-
-    /**
-     * Waits for any publication requests to finish and closes the {@link JsonWriter} used for
-     * output.
-     *
-     * See class comment for details about {@code JsonWriter} construction.
-     *
-     * @param onClosed run after the close() operation has completed asynchronously
-     */
-    private synchronized void close(final Runnable onClosed) {
-        mExecutor.submit(new Callable<Object>() {
-            @Override
-            public Object call() throws Exception {
-                try {
-                    if (mJsonWriter == null) return null;
-                    // TODO: This is necessary to avoid an exception.  Better would be to not even
-                    // open the JsonWriter if the file is not even opened unless there is valid data
-                    // to write.
-                    if (!mHasWrittenData) {
-                        mJsonWriter.beginArray();
-                    }
-                    mJsonWriter.endArray();
-                    mHasWrittenData = false;
-                    mJsonWriter.flush();
-                    mJsonWriter.close();
-                    if (DEBUG) {
-                        Log.d(TAG, "closed " + mFile);
-                    }
-                } catch (final Exception e) {
-                    Log.d(TAG, "error when closing ResearchLog:", e);
-                } finally {
-                    // Marking the file as read-only signals that this log file is ready to be
-                    // uploaded.
-                    if (mFile != null && mFile.exists()) {
-                        mFile.setWritable(false, false);
-                    }
-                    if (onClosed != null) {
-                        onClosed.run();
-                    }
-                }
-                return null;
-            }
-        });
-        removeAnyScheduledFlush();
-        mExecutor.shutdown();
-    }
-
-    /**
-     * Block until the research log has shut down and spooled out all output or {@code timeout}
-     * occurs.
-     *
-     * @param timeout time to wait for close in milliseconds
-     */
-    public void blockingClose(final long timeout) {
-        close(null);
-        awaitTermination(timeout, TimeUnit.MILLISECONDS);
-    }
-
-    /**
-     * Waits for publication requests to finish, closes the JsonWriter, but then deletes the backing
-     * output file.
-     *
-     * @param onAbort run after the abort() operation has completed asynchronously
-     */
-    private synchronized void abort(final Runnable onAbort) {
-        mExecutor.submit(new Callable<Object>() {
-            @Override
-            public Object call() throws Exception {
-                try {
-                    if (mJsonWriter == null) return null;
-                    if (mHasWrittenData) {
-                        // TODO: This is necessary to avoid an exception.  Better would be to not
-                        // even open the JsonWriter if the file is not even opened unless there is
-                        // valid data to write.
-                        if (!mHasWrittenData) {
-                            mJsonWriter.beginArray();
-                        }
-                        mJsonWriter.endArray();
-                        mJsonWriter.close();
-                        mHasWrittenData = false;
-                    }
-                } finally {
-                    if (mFile != null) {
-                        mFile.delete();
-                    }
-                    if (onAbort != null) {
-                        onAbort.run();
-                    }
-                }
-                return null;
-            }
-        });
-        removeAnyScheduledFlush();
-        mExecutor.shutdown();
-    }
-
-    /**
-     * Block until the research log has aborted or {@code timeout} occurs.
-     *
-     * @param timeout time to wait for close in milliseconds
-     */
-    public void blockingAbort(final long timeout) {
-        abort(null);
-        awaitTermination(timeout, TimeUnit.MILLISECONDS);
-    }
-
-    @UsedForTesting
-    public void awaitTermination(final long delay, final TimeUnit timeUnit) {
-        try {
-            if (!mExecutor.awaitTermination(delay, timeUnit)) {
-                Log.e(TAG, "ResearchLog executor timed out while awaiting terminaion");
-            }
-        } catch (final InterruptedException e) {
-            Log.e(TAG, "ResearchLog executor interrupted while awaiting terminaion", e);
-        }
-    }
-
-    /* package */ synchronized void flush() {
-        removeAnyScheduledFlush();
-        mExecutor.submit(mFlushCallable);
-    }
-
-    private final Callable<Object> mFlushCallable = new Callable<Object>() {
-        @Override
-        public Object call() throws Exception {
-            if (mJsonWriter != null) mJsonWriter.flush();
-            return null;
-        }
-    };
-
-    private ScheduledFuture<Object> mFlushFuture;
-
-    private void removeAnyScheduledFlush() {
-        if (mFlushFuture != null) {
-            mFlushFuture.cancel(false);
-            mFlushFuture = null;
-        }
-    }
-
-    private void scheduleFlush() {
-        removeAnyScheduledFlush();
-        mFlushFuture = mExecutor.schedule(mFlushCallable, FLUSH_DELAY_IN_MS, TimeUnit.MILLISECONDS);
-    }
-
-    /**
-     * Queues up {@code logUnit} to be published in the background.
-     *
-     * @param logUnit the {@link LogUnit} to be published
-     * @param canIncludePrivateData whether private data in the LogUnit should be included
-     */
-    public synchronized void publish(final LogUnit logUnit, final boolean canIncludePrivateData) {
-        try {
-            mExecutor.submit(new Callable<Object>() {
-                @Override
-                public Object call() throws Exception {
-                    logUnit.publishTo(ResearchLog.this, canIncludePrivateData);
-                    scheduleFlush();
-                    return null;
-                }
-            });
-        } catch (final RejectedExecutionException e) {
-            // TODO: Add code to record loss of data, and report.
-            if (DEBUG) {
-                Log.d(TAG, "ResearchLog.publish() rejecting scheduled execution", e);
-            }
-        }
-    }
-
-    /**
-     * Return a JsonWriter for this ResearchLog.  It is initialized the first time this method is
-     * called.  The cached value is returned in future calls.
-     *
-     * @throws IOException if opening the JsonWriter is not possible
-     */
-    public JsonWriter getInitializedJsonWriterLocked() throws IOException {
-        if (mJsonWriter != null) return mJsonWriter;
-        if (mFile == null) throw new FileNotFoundException();
-        try {
-            final JsonWriter jsonWriter = createJsonWriter(mContext, mFile);
-            if (jsonWriter == null) throw new IOException("Could not create JsonWriter");
-
-            jsonWriter.beginArray();
-            mJsonWriter = jsonWriter;
-            mHasWrittenData = true;
-            return mJsonWriter;
-        } catch (final IOException e) {
-            if (DEBUG) {
-                Log.w(TAG, "Exception when creating JsonWriter", e);
-                Log.w(TAG, "Closing JsonWriter");
-            }
-            if (mJsonWriter != null) mJsonWriter.close();
-            mJsonWriter = null;
-            throw e;
-        }
-    }
-
-    /**
-     * Create the JsonWriter to write the ResearchLog to.
-     *
-     * This method may be overriden in testing to redirect the output.
-     */
-    /* package for test */ JsonWriter createJsonWriter(final Context context, final File file)
-            throws IOException {
-        return new JsonWriter(new BufferedWriter(new OutputStreamWriter(
-                context.openFileOutput(file.getName(), Context.MODE_PRIVATE))));
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/ResearchLogDirectory.java b/java/src/com/android/inputmethod/research/ResearchLogDirectory.java
deleted file mode 100644
index d156068..0000000
--- a/java/src/com/android/inputmethod/research/ResearchLogDirectory.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.content.Context;
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileFilter;
-
-/**
- * Manages log files.
- *
- * This class handles all aspects where and how research log data is stored.  This includes
- * generating log filenames in the correct place with the correct names, and cleaning up log files
- * under this directory.
- */
-public class ResearchLogDirectory {
-    public static final String TAG = ResearchLogDirectory.class.getSimpleName();
-    /* package */ static final String LOG_FILENAME_PREFIX = "researchLog";
-    private static final String FILENAME_SUFFIX = ".txt";
-    private static final String USER_RECORDING_FILENAME_PREFIX = "recording";
-
-    private static final ReadOnlyLogFileFilter sUploadableLogFileFilter =
-            new ReadOnlyLogFileFilter();
-
-    private final File mFilesDir;
-
-    static class ReadOnlyLogFileFilter implements FileFilter {
-        @Override
-        public boolean accept(final File pathname) {
-            return pathname.getName().startsWith(ResearchLogDirectory.LOG_FILENAME_PREFIX)
-                    && !pathname.canWrite();
-        }
-    }
-
-    /**
-     * Creates a new ResearchLogDirectory, creating the storage directory if it does not exist.
-     */
-    public ResearchLogDirectory(final Context context) {
-        mFilesDir = getLoggingDirectory(context);
-        if (mFilesDir == null) {
-            throw new NullPointerException("No files directory specified");
-        }
-        if (!mFilesDir.exists()) {
-            mFilesDir.mkdirs();
-        }
-    }
-
-    private File getLoggingDirectory(final Context context) {
-        // TODO: Switch to using a subdirectory of getFilesDir().
-        return context.getFilesDir();
-    }
-
-    /**
-     * Get an array of log files that are ready for uploading.
-     *
-     * A file is ready for uploading if it is marked as read-only.
-     *
-     * @return the array of uploadable files
-     */
-    public File[] getUploadableLogFiles() {
-        try {
-            return mFilesDir.listFiles(sUploadableLogFileFilter);
-        } catch (final SecurityException e) {
-            Log.e(TAG, "Could not cleanup log directory, permission denied", e);
-            return new File[0];
-        }
-    }
-
-    public void cleanupLogFilesOlderThan(final long time) {
-        try {
-            for (final File file : mFilesDir.listFiles()) {
-                final String filename = file.getName();
-                if ((filename.startsWith(LOG_FILENAME_PREFIX)
-                        || filename.startsWith(USER_RECORDING_FILENAME_PREFIX))
-                        && (file.lastModified() < time)) {
-                    file.delete();
-                }
-            }
-        } catch (final SecurityException e) {
-            Log.e(TAG, "Could not cleanup log directory, permission denied", e);
-        }
-    }
-
-    public File getLogFilePath(final long time, final long nanoTime) {
-        return new File(mFilesDir, getUniqueFilename(LOG_FILENAME_PREFIX, time, nanoTime));
-    }
-
-    public File getUserRecordingFilePath(final long time, final long nanoTime) {
-        return new File(mFilesDir, getUniqueFilename(USER_RECORDING_FILENAME_PREFIX, time,
-                nanoTime));
-    }
-
-    private static String getUniqueFilename(final String prefix, final long time,
-            final long nanoTime) {
-        return prefix + "-" + time + "-" + nanoTime + FILENAME_SUFFIX;
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java
deleted file mode 100644
index da9c611..0000000
--- a/java/src/com/android/inputmethod/research/ResearchLogger.java
+++ /dev/null
@@ -1,1950 +0,0 @@
-/*
- * 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.research;
-
-import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Paint.Style;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.SystemClock;
-import android.preference.PreferenceManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.inputmethod.CompletionInfo;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputConnection;
-import android.widget.Toast;
-
-import com.android.inputmethod.keyboard.Key;
-import com.android.inputmethod.keyboard.Keyboard;
-import com.android.inputmethod.keyboard.KeyboardId;
-import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.keyboard.KeyboardView;
-import com.android.inputmethod.keyboard.MainKeyboardView;
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.Dictionary;
-import com.android.inputmethod.latin.LatinIME;
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.RichInputConnection;
-import com.android.inputmethod.latin.Suggest;
-import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.define.ProductionFlag;
-import com.android.inputmethod.latin.utils.InputTypeUtils;
-import com.android.inputmethod.latin.utils.TextRange;
-import com.android.inputmethod.research.MotionEventReader.ReplayData;
-import com.android.inputmethod.research.ui.SplashScreen;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.FileChannel;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
-
-// TODO: Add a unit test for every "logging" method (i.e. that is called from the IME and calls
-// enqueueEvent to record a LogStatement).
-/**
- * Logs the use of the LatinIME keyboard.
- *
- * This class logs operations on the IME keyboard, including what the user has typed.
- * Data is stored locally in a file in app-specific storage.
- *
- * This functionality is off by default. See
- * {@link ProductionFlag#USES_DEVELOPMENT_ONLY_DIAGNOSTICS}.
- */
-public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChangeListener,
-        SplashScreen.UserConsentListener {
-    // TODO: This class has grown quite large and combines several concerns that should be
-    // separated.  The following refactorings will be applied as soon as possible after adding
-    // support for replaying historical events, fixing some replay bugs, adding some ui constraints
-    // on the feedback dialog, and adding the survey dialog.
-    // TODO: Refactor.  Move feedback screen code into separate class.
-    // TODO: Refactor.  Move logging invocations into their own class.
-    // TODO: Refactor.  Move currentLogUnit management into separate class.
-    private static final String TAG = ResearchLogger.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    private static final boolean DEBUG_REPLAY_AFTER_FEEDBACK = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    // Whether the TextView contents are logged at the end of the session.  true will disclose
-    // private info.
-    private static final boolean LOG_FULL_TEXTVIEW_CONTENTS = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    // Whether the feedback dialog preserves the editable text across invocations.  Should be false
-    // for normal research builds so users do not have to delete the same feedback string they
-    // entered earlier.  Should be true for builds internal to a development team so when the text
-    // field holds a channel name, the developer does not have to re-enter it when using the
-    // feedback mechanism to generate multiple tests.
-    private static final boolean FEEDBACK_DIALOG_SHOULD_PRESERVE_TEXT_FIELD = false;
-    /* package */ static boolean sIsLogging = false;
-    private static final int OUTPUT_FORMAT_VERSION = 5;
-    // Whether all words should be recorded, leaving unsampled word between bigrams.  Useful for
-    // testing.
-    /* package for test */ static final boolean IS_LOGGING_EVERYTHING = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    // The number of words between n-grams to omit from the log.
-    private static final int NUMBER_OF_WORDS_BETWEEN_SAMPLES =
-            IS_LOGGING_EVERYTHING ? 0 : (DEBUG ? 2 : 18);
-
-    // Whether to show an indicator on the screen that logging is on.  Currently a very small red
-    // dot in the lower right hand corner.  Most users should not notice it.
-    private static final boolean IS_SHOWING_INDICATOR = true;
-    // Change the default indicator to something very visible.  Currently two red vertical bars on
-    // either side of they keyboard.
-    private static final boolean IS_SHOWING_INDICATOR_CLEARLY = false ||
-            (IS_LOGGING_EVERYTHING && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG);
-    // FEEDBACK_WORD_BUFFER_SIZE should add 1 because it must also hold the feedback LogUnit itself.
-    public static final int FEEDBACK_WORD_BUFFER_SIZE = (Integer.MAX_VALUE - 1) + 1;
-
-    // The special output text to invoke a research feedback dialog.
-    public static final String RESEARCH_KEY_OUTPUT_TEXT = ".research.";
-
-    // constants related to specific log points
-    private static final String WHITESPACE_SEPARATORS = " \t\n\r";
-    private static final int MAX_INPUTVIEW_LENGTH_TO_CAPTURE = 8192; // must be >=1
-    private static final String PREF_RESEARCH_SAVED_CHANNEL = "pref_research_saved_channel";
-
-    private static final long RESEARCHLOG_CLOSE_TIMEOUT_IN_MS = TimeUnit.SECONDS.toMillis(5);
-    private static final long RESEARCHLOG_ABORT_TIMEOUT_IN_MS = TimeUnit.SECONDS.toMillis(5);
-    private static final long DURATION_BETWEEN_DIR_CLEANUP_IN_MS = TimeUnit.DAYS.toMillis(1);
-    private static final long MAX_LOGFILE_AGE_IN_MS = TimeUnit.DAYS.toMillis(4);
-
-    private static final ResearchLogger sInstance = new ResearchLogger();
-    private static String sAccountType = null;
-    private static String sAllowedAccountDomain = null;
-    private ResearchLog mMainResearchLog; // always non-null after init() is called
-    // mFeedbackLog records all events for the session, private or not (excepting
-    // passwords).  It is written to permanent storage only if the user explicitly commands
-    // the system to do so.
-    // LogUnits are queued in the LogBuffers and published to the ResearchLogs when words are
-    // complete.
-    /* package for test */ MainLogBuffer mMainLogBuffer; // always non-null after init() is called
-    /* package */ ResearchLog mUserRecordingLog;
-    /* package */ LogBuffer mUserRecordingLogBuffer;
-    private File mUserRecordingFile = null;
-
-    private boolean mIsPasswordView = false;
-    private SharedPreferences mPrefs;
-
-    // digits entered by the user are replaced with this codepoint.
-    /* package for test */ static final int DIGIT_REPLACEMENT_CODEPOINT =
-            Character.codePointAt("\uE000", 0);  // U+E000 is in the "private-use area"
-    // U+E001 is in the "private-use area"
-    /* package for test */ static final String WORD_REPLACEMENT_STRING = "\uE001";
-    protected static final int SUSPEND_DURATION_IN_MINUTES = 1;
-    // set when LatinIME should ignore an onUpdateSelection() callback that
-    // arises from operations in this class
-    private static boolean sLatinIMEExpectingUpdateSelection = false;
-
-    // used to check whether words are not unique
-    private Suggest mSuggest;
-    private MainKeyboardView mMainKeyboardView;
-    // TODO: Check whether a superclass can be used instead of LatinIME.
-    /* package for test */ LatinIME mLatinIME;
-    private final Statistics mStatistics;
-    private final MotionEventReader mMotionEventReader = new MotionEventReader();
-    private final Replayer mReplayer = Replayer.getInstance();
-    private ResearchLogDirectory mResearchLogDirectory;
-    private SplashScreen mSplashScreen;
-
-    private Intent mUploadNowIntent;
-
-    /* package for test */ LogUnit mCurrentLogUnit = new LogUnit();
-
-    // Gestured or tapped words may be committed after the gesture of the next word has started.
-    // To ensure that the gesture data of the next word is not associated with the previous word,
-    // thereby leaking private data, we store the time of the down event that started the second
-    // gesture, and when committing the earlier word, split the LogUnit.
-    private long mSavedDownEventTime;
-    private Bundle mFeedbackDialogBundle = null;
-    // Whether the feedback dialog is visible, and the user is typing into it.  Normal logging is
-    // not performed on text that the user types into the feedback dialog.
-    private boolean mInFeedbackDialog = false;
-    private Handler mUserRecordingTimeoutHandler;
-    private static final long USER_RECORDING_TIMEOUT_MS = TimeUnit.SECONDS.toMillis(30);
-
-    // Stores a temporary LogUnit while generating a phantom space.  Needed because phantom spaces
-    // are issued out-of-order, immediately before the characters generated by other operations that
-    // have already outputted LogStatements.
-    private LogUnit mPhantomSpaceLogUnit = null;
-
-    private ResearchLogger() {
-        mStatistics = Statistics.getInstance();
-    }
-
-    public static ResearchLogger getInstance() {
-        return sInstance;
-    }
-
-    public void init(final LatinIME latinIME, final KeyboardSwitcher keyboardSwitcher,
-            final Suggest suggest) {
-        assert latinIME != null;
-        mLatinIME = latinIME;
-        mPrefs = PreferenceManager.getDefaultSharedPreferences(latinIME);
-        mPrefs.registerOnSharedPreferenceChangeListener(this);
-
-        // Initialize fields from preferences
-        sIsLogging = ResearchSettings.readResearchLoggerEnabledFlag(mPrefs);
-
-        // Initialize fields from resources
-        final Resources res = latinIME.getResources();
-        sAccountType = res.getString(R.string.research_account_type);
-        sAllowedAccountDomain = res.getString(R.string.research_allowed_account_domain);
-
-        // Initialize directory manager
-        mResearchLogDirectory = new ResearchLogDirectory(mLatinIME);
-        cleanLogDirectoryIfNeeded(mResearchLogDirectory, System.currentTimeMillis());
-
-        // Initialize log buffers
-        resetLogBuffers();
-
-        // Initialize external services
-        mUploadNowIntent = new Intent(mLatinIME, UploaderService.class);
-        mUploadNowIntent.putExtra(UploaderService.EXTRA_UPLOAD_UNCONDITIONALLY, true);
-        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
-            UploaderService.cancelAndRescheduleUploadingService(mLatinIME,
-                    true /* needsRescheduling */);
-        }
-        mReplayer.setKeyboardSwitcher(keyboardSwitcher);
-    }
-
-    private void resetLogBuffers() {
-        mMainResearchLog = new ResearchLog(mResearchLogDirectory.getLogFilePath(
-                System.currentTimeMillis(), System.nanoTime()), mLatinIME);
-        final int numWordsToIgnore = new Random().nextInt(NUMBER_OF_WORDS_BETWEEN_SAMPLES + 1);
-        mMainLogBuffer = new MainLogBuffer(NUMBER_OF_WORDS_BETWEEN_SAMPLES, numWordsToIgnore,
-                mSuggest) {
-            @Override
-            protected void publish(final ArrayList<LogUnit> logUnits,
-                    boolean canIncludePrivateData) {
-                canIncludePrivateData |= IS_LOGGING_EVERYTHING;
-                for (final LogUnit logUnit : logUnits) {
-                    if (DEBUG) {
-                        final String wordsString = logUnit.getWordsAsString();
-                        Log.d(TAG, "onPublish: '" + wordsString
-                                + "', hc: " + logUnit.containsUserDeletions()
-                                + ", cipd: " + canIncludePrivateData);
-                    }
-                    for (final String word : logUnit.getWordsAsStringArray()) {
-                        final Dictionary dictionary = getDictionary();
-                        mStatistics.recordWordEntered(
-                                dictionary != null && dictionary.isValidWord(word),
-                                logUnit.containsUserDeletions());
-                    }
-                }
-                publishLogUnits(logUnits, mMainResearchLog, canIncludePrivateData);
-            }
-        };
-    }
-
-    private void cleanLogDirectoryIfNeeded(final ResearchLogDirectory researchLogDirectory,
-            final long now) {
-        final long lastCleanupTime = ResearchSettings.readResearchLastDirCleanupTime(mPrefs);
-        if (now - lastCleanupTime < DURATION_BETWEEN_DIR_CLEANUP_IN_MS) return;
-        final long oldestAllowedFileTime = now - MAX_LOGFILE_AGE_IN_MS;
-        mResearchLogDirectory.cleanupLogFilesOlderThan(oldestAllowedFileTime);
-        ResearchSettings.writeResearchLastDirCleanupTime(mPrefs, now);
-    }
-
-    public void mainKeyboardView_onAttachedToWindow(final MainKeyboardView mainKeyboardView) {
-        mMainKeyboardView = mainKeyboardView;
-        maybeShowSplashScreen();
-    }
-
-    public void mainKeyboardView_onDetachedFromWindow() {
-        mMainKeyboardView = null;
-    }
-
-    public void onDestroy() {
-        if (mPrefs != null) {
-            mPrefs.unregisterOnSharedPreferenceChangeListener(this);
-        }
-    }
-
-    private void maybeShowSplashScreen() {
-        if (ResearchSettings.readHasSeenSplash(mPrefs)) return;
-        if (mSplashScreen != null && mSplashScreen.isShowing()) return;
-        if (mMainKeyboardView == null) return;
-        final IBinder windowToken = mMainKeyboardView.getWindowToken();
-        if (windowToken == null) return;
-
-        mSplashScreen = new SplashScreen(mLatinIME, this);
-        mSplashScreen.showSplashScreen(windowToken);
-    }
-
-    @Override
-    public void onSplashScreenUserClickedOk() {
-        if (mPrefs == null) {
-            mPrefs = PreferenceManager.getDefaultSharedPreferences(mLatinIME);
-            if (mPrefs == null) return;
-        }
-        sIsLogging = true;
-        ResearchSettings.writeResearchLoggerEnabledFlag(mPrefs, true);
-        ResearchSettings.writeHasSeenSplash(mPrefs, true);
-        restart();
-    }
-
-    private void checkForEmptyEditor() {
-        if (mLatinIME == null) {
-            return;
-        }
-        final InputConnection ic = mLatinIME.getCurrentInputConnection();
-        if (ic == null) {
-            return;
-        }
-        final CharSequence textBefore = ic.getTextBeforeCursor(1, 0);
-        if (!TextUtils.isEmpty(textBefore)) {
-            mStatistics.setIsEmptyUponStarting(false);
-            return;
-        }
-        final CharSequence textAfter = ic.getTextAfterCursor(1, 0);
-        if (!TextUtils.isEmpty(textAfter)) {
-            mStatistics.setIsEmptyUponStarting(false);
-            return;
-        }
-        if (textBefore != null && textAfter != null) {
-            mStatistics.setIsEmptyUponStarting(true);
-        }
-    }
-
-    private void start() {
-        if (DEBUG) {
-            Log.d(TAG, "start called");
-        }
-        maybeShowSplashScreen();
-        requestIndicatorRedraw();
-        mStatistics.reset();
-        checkForEmptyEditor();
-    }
-
-    /* package */ void stop() {
-        if (DEBUG) {
-            Log.d(TAG, "stop called");
-        }
-        // Commit mCurrentLogUnit before closing.
-        commitCurrentLogUnit();
-
-        try {
-            mMainLogBuffer.shiftAndPublishAll();
-        } catch (final IOException e) {
-            Log.w(TAG, "IOException when publishing LogBuffer", e);
-        }
-        logStatistics();
-        commitCurrentLogUnit();
-        mMainLogBuffer.setIsStopping();
-        try {
-            mMainLogBuffer.shiftAndPublishAll();
-        } catch (final IOException e) {
-            Log.w(TAG, "IOException when publishing LogBuffer", e);
-        }
-        mMainResearchLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS);
-
-        resetLogBuffers();
-        cancelFeedbackDialog();
-    }
-
-    public void abort() {
-        if (DEBUG) {
-            Log.d(TAG, "abort called");
-        }
-        mMainLogBuffer.clear();
-        mMainResearchLog.blockingAbort(RESEARCHLOG_ABORT_TIMEOUT_IN_MS);
-
-        resetLogBuffers();
-    }
-
-    private void restart() {
-        stop();
-        start();
-    }
-
-    @Override
-    public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) {
-        if (key == null || prefs == null) {
-            return;
-        }
-        requestIndicatorRedraw();
-        mPrefs = prefs;
-        prefsChanged(prefs);
-    }
-
-    public void onResearchKeySelected(final LatinIME latinIME) {
-        mCurrentLogUnit.removeResearchButtonInvocation();
-        if (mInFeedbackDialog) {
-            Toast.makeText(latinIME, R.string.research_please_exit_feedback_form,
-                    Toast.LENGTH_LONG).show();
-            return;
-        }
-        presentFeedbackDialog(latinIME);
-    }
-
-    public void presentFeedbackDialogFromSettings() {
-        if (mLatinIME != null) {
-            presentFeedbackDialog(mLatinIME);
-        }
-    }
-
-    public void presentFeedbackDialog(final LatinIME latinIME) {
-        if (isMakingUserRecording()) {
-            saveRecording();
-        }
-        mInFeedbackDialog = true;
-
-        final Intent intent = new Intent();
-        intent.setClass(mLatinIME, FeedbackActivity.class);
-        if (mFeedbackDialogBundle == null) {
-            // Restore feedback field with channel name
-            final Bundle bundle = new Bundle();
-            bundle.putBoolean(FeedbackFragment.KEY_INCLUDE_ACCOUNT_NAME, true);
-            bundle.putBoolean(FeedbackFragment.KEY_HAS_USER_RECORDING, false);
-            if (FEEDBACK_DIALOG_SHOULD_PRESERVE_TEXT_FIELD) {
-                final String savedChannelName = mPrefs.getString(PREF_RESEARCH_SAVED_CHANNEL, "");
-                bundle.putString(FeedbackFragment.KEY_FEEDBACK_STRING, savedChannelName);
-            }
-            mFeedbackDialogBundle = bundle;
-        }
-        intent.putExtras(mFeedbackDialogBundle);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        latinIME.startActivity(intent);
-    }
-
-    public void setFeedbackDialogBundle(final Bundle bundle) {
-        mFeedbackDialogBundle = bundle;
-    }
-
-    public void startRecording() {
-        final Resources res = mLatinIME.getResources();
-        Toast.makeText(mLatinIME,
-                res.getString(R.string.research_feedback_demonstration_instructions),
-                Toast.LENGTH_LONG).show();
-        startRecordingInternal();
-    }
-
-    private void startRecordingInternal() {
-        if (mUserRecordingLog != null) {
-            mUserRecordingLog.blockingAbort(RESEARCHLOG_ABORT_TIMEOUT_IN_MS);
-        }
-        mUserRecordingFile = mResearchLogDirectory.getUserRecordingFilePath(
-                System.currentTimeMillis(), System.nanoTime());
-        mUserRecordingLog = new ResearchLog(mUserRecordingFile, mLatinIME);
-        mUserRecordingLogBuffer = new LogBuffer();
-        resetRecordingTimer();
-    }
-
-    private boolean isMakingUserRecording() {
-        return mUserRecordingLog != null;
-    }
-
-    private void resetRecordingTimer() {
-        if (mUserRecordingTimeoutHandler == null) {
-            mUserRecordingTimeoutHandler = new Handler();
-        }
-        clearRecordingTimer();
-        mUserRecordingTimeoutHandler.postDelayed(mRecordingHandlerTimeoutRunnable,
-                USER_RECORDING_TIMEOUT_MS);
-    }
-
-    private void clearRecordingTimer() {
-        mUserRecordingTimeoutHandler.removeCallbacks(mRecordingHandlerTimeoutRunnable);
-    }
-
-    private Runnable mRecordingHandlerTimeoutRunnable = new Runnable() {
-        @Override
-        public void run() {
-            cancelRecording();
-            requestIndicatorRedraw();
-            final Resources res = mLatinIME.getResources();
-            Toast.makeText(mLatinIME, res.getString(R.string.research_feedback_recording_failure),
-                    Toast.LENGTH_LONG).show();
-        }
-    };
-
-    private void cancelRecording() {
-        if (mUserRecordingLog != null) {
-            mUserRecordingLog.blockingAbort(RESEARCHLOG_ABORT_TIMEOUT_IN_MS);
-        }
-        mUserRecordingLog = null;
-        mUserRecordingLogBuffer = null;
-        if (mFeedbackDialogBundle != null) {
-            mFeedbackDialogBundle.putBoolean("HasRecording", false);
-        }
-    }
-
-    private void saveRecording() {
-        commitCurrentLogUnit();
-        publishLogBuffer(mUserRecordingLogBuffer, mUserRecordingLog, true);
-        mUserRecordingLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS);
-        mUserRecordingLog = null;
-        mUserRecordingLogBuffer = null;
-
-        if (mFeedbackDialogBundle != null) {
-            mFeedbackDialogBundle.putBoolean(FeedbackFragment.KEY_HAS_USER_RECORDING, true);
-        }
-        clearRecordingTimer();
-    }
-
-    // TODO: currently unreachable.  Remove after being sure enable/disable is
-    // not needed.
-    /*
-    public void enableOrDisable(final boolean showEnable, final LatinIME latinIME) {
-        if (showEnable) {
-            if (!sIsLogging) {
-                setLoggingAllowed(true);
-            }
-            resumeLogging();
-            Toast.makeText(latinIME,
-                    R.string.research_notify_session_logging_enabled,
-                    Toast.LENGTH_LONG).show();
-        } else {
-            Toast toast = Toast.makeText(latinIME,
-                    R.string.research_notify_session_log_deleting,
-                    Toast.LENGTH_LONG);
-            toast.show();
-            boolean isLogDeleted = abort();
-            final long currentTime = System.currentTimeMillis();
-            final long resumeTime = currentTime
-                    + TimeUnit.MINUTES.toMillis(SUSPEND_DURATION_IN_MINUTES);
-            suspendLoggingUntil(resumeTime);
-            toast.cancel();
-            Toast.makeText(latinIME, R.string.research_notify_logging_suspended,
-                    Toast.LENGTH_LONG).show();
-        }
-    }
-    */
-
-    /**
-     * Get the name of the first allowed account on the device.
-     *
-     * Allowed accounts must be in the domain given by ALLOWED_ACCOUNT_DOMAIN.
-     *
-     * @return The user's account name.
-     */
-    public String getAccountName() {
-        if (sAccountType == null || sAccountType.isEmpty()) {
-            return null;
-        }
-        if (sAllowedAccountDomain == null || sAllowedAccountDomain.isEmpty()) {
-            return null;
-        }
-        final AccountManager manager = AccountManager.get(mLatinIME);
-        // Filter first by account type.
-        final Account[] accounts = manager.getAccountsByType(sAccountType);
-
-        for (final Account account : accounts) {
-            if (DEBUG) {
-                Log.d(TAG, account.name);
-            }
-            final String[] parts = account.name.split("@");
-            if (parts.length > 1 && parts[1].equals(sAllowedAccountDomain)) {
-                return parts[0];
-            }
-        }
-        return null;
-    }
-
-    private static final LogStatement LOGSTATEMENT_FEEDBACK =
-            new LogStatement("UserFeedback", false, false, "contents", "accountName", "recording");
-    public void sendFeedback(final String feedbackContents, final boolean includeHistory,
-            final boolean isIncludingAccountName, final boolean isIncludingRecording) {
-        String recording = "";
-        if (isIncludingRecording) {
-            // Try to read recording from recently written json file
-            if (mUserRecordingFile != null) {
-                FileChannel channel = null;
-                try {
-                    channel = new FileInputStream(mUserRecordingFile).getChannel();
-                    final MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0,
-                            channel.size());
-                    // Android's openFileOutput() creates the file, so we use Android's default
-                    // Charset (UTF-8) here to read it.
-                    recording = Charset.defaultCharset().decode(buffer).toString();
-                } catch (FileNotFoundException e) {
-                    Log.e(TAG, "Could not find recording file", e);
-                } catch (IOException e) {
-                    Log.e(TAG, "Error reading recording file", e);
-                } finally {
-                    if (channel != null) {
-                        try {
-                            channel.close();
-                        } catch (IOException e) {
-                            Log.e(TAG, "Error closing recording file", e);
-                        }
-                    }
-                }
-            }
-        }
-        final LogUnit feedbackLogUnit = new LogUnit();
-        final String accountName = isIncludingAccountName ? getAccountName() : "";
-        feedbackLogUnit.addLogStatement(LOGSTATEMENT_FEEDBACK, SystemClock.uptimeMillis(),
-                feedbackContents, accountName, recording);
-
-        final ResearchLog feedbackLog = new FeedbackLog(mResearchLogDirectory.getLogFilePath(
-                System.currentTimeMillis(), System.nanoTime()), mLatinIME);
-        final LogBuffer feedbackLogBuffer = new LogBuffer();
-        feedbackLogBuffer.shiftIn(feedbackLogUnit);
-        publishLogBuffer(feedbackLogBuffer, feedbackLog, true /* isIncludingPrivateData */);
-        feedbackLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS);
-        uploadNow();
-
-        if (isIncludingRecording && DEBUG_REPLAY_AFTER_FEEDBACK) {
-            final Handler handler = new Handler();
-            handler.postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    final ReplayData replayData =
-                            mMotionEventReader.readMotionEventData(mUserRecordingFile);
-                    mReplayer.replay(replayData, null);
-                }
-            }, TimeUnit.SECONDS.toMillis(1));
-        }
-
-        if (FEEDBACK_DIALOG_SHOULD_PRESERVE_TEXT_FIELD) {
-            // Use feedback string as a channel name to label feedback strings.  Here we record the
-            // string for prepopulating the field next time.
-            final String channelName = feedbackContents;
-            if (mPrefs == null) {
-                return;
-            }
-            mPrefs.edit().putString(PREF_RESEARCH_SAVED_CHANNEL, channelName).apply();
-        }
-    }
-
-    public void uploadNow() {
-        if (DEBUG) {
-            Log.d(TAG, "calling uploadNow()");
-        }
-        mLatinIME.startService(mUploadNowIntent);
-    }
-
-    public void onLeavingSendFeedbackDialog() {
-        mInFeedbackDialog = false;
-    }
-
-    private void cancelFeedbackDialog() {
-        if (isMakingUserRecording()) {
-            cancelRecording();
-        }
-        mInFeedbackDialog = false;
-    }
-
-    public void initSuggest(final Suggest suggest) {
-        mSuggest = suggest;
-        // MainLogBuffer now has an out-of-date Suggest object.  Close down MainLogBuffer and create
-        // a new one.
-        if (mMainLogBuffer != null) {
-            restart();
-        }
-    }
-
-    private Dictionary getDictionary() {
-        if (mSuggest == null) {
-            return null;
-        }
-        return mSuggest.getMainDictionary();
-    }
-
-    private void setIsPasswordView(boolean isPasswordView) {
-        mIsPasswordView = isPasswordView;
-    }
-
-    /**
-     * Returns true if logging is permitted.
-     *
-     * This method is called when adding a LogStatement to a LogUnit, and when adding a LogUnit to a
-     * ResearchLog.  It is checked in both places in case conditions change between these times, and
-     * as a defensive measure in case refactoring changes the logging pipeline.
-     */
-    private boolean isAllowedToLogTo(final ResearchLog researchLog) {
-        // Logging is never allowed in these circumstances
-        if (mIsPasswordView) return false;
-        if (!sIsLogging) return false;
-        if (mInFeedbackDialog) {
-            // The FeedbackDialog is up.  Normal logging should not happen (the user might be trying
-            // out things while the dialog is up, and their reporting of an issue may not be
-            // representative of what they normally type).  However, after the user has finished
-            // entering their feedback, the logger packs their comments and an encoded version of
-            // any demonstration of the issue into a special "FeedbackLog".  So if the FeedbackLog
-            // is the destination, we do want to allow logging to it.
-            return researchLog.isFeedbackLog();
-        }
-        // No other exclusions.  Logging is permitted.
-        return true;
-    }
-
-    public void requestIndicatorRedraw() {
-        if (!IS_SHOWING_INDICATOR) {
-            return;
-        }
-        if (mMainKeyboardView == null) {
-            return;
-        }
-        mMainKeyboardView.invalidateAllKeys();
-    }
-
-    private boolean isReplaying() {
-        return mReplayer.isReplaying();
-    }
-
-    private int getIndicatorColor() {
-        if (isMakingUserRecording()) {
-            return Color.YELLOW;
-        }
-        if (isReplaying()) {
-            return Color.GREEN;
-        }
-        return Color.RED;
-    }
-
-    public void paintIndicator(KeyboardView view, Paint paint, Canvas canvas, int width,
-            int height) {
-        // TODO: Reimplement using a keyboard background image specific to the ResearchLogger
-        // and remove this method.
-        // The check for MainKeyboardView ensures that the indicator only decorates the main
-        // keyboard, not every keyboard.
-        if (IS_SHOWING_INDICATOR && (isAllowedToLogTo(mMainResearchLog) || isReplaying())
-                && view instanceof MainKeyboardView) {
-            final int savedColor = paint.getColor();
-            paint.setColor(getIndicatorColor());
-            final Style savedStyle = paint.getStyle();
-            paint.setStyle(Style.STROKE);
-            final float savedStrokeWidth = paint.getStrokeWidth();
-            if (IS_SHOWING_INDICATOR_CLEARLY) {
-                paint.setStrokeWidth(5);
-                canvas.drawLine(0, 0, 0, height, paint);
-                canvas.drawLine(width, 0, width, height, paint);
-            } else {
-                // Put a tiny dot on the screen so a knowledgeable user can check whether it is
-                // enabled.  The dot is actually a zero-width, zero-height rectangle, placed at the
-                // lower-right corner of the canvas, painted with a non-zero border width.
-                paint.setStrokeWidth(3);
-                canvas.drawRect(width - 1, height - 1, width, height, paint);
-            }
-            paint.setColor(savedColor);
-            paint.setStyle(savedStyle);
-            paint.setStrokeWidth(savedStrokeWidth);
-        }
-    }
-
-    /**
-     * Buffer a research log event, flagging it as privacy-sensitive.
-     */
-    private synchronized void enqueueEvent(final LogStatement logStatement,
-            final Object... values) {
-        enqueueEvent(mCurrentLogUnit, logStatement, values);
-    }
-
-    private synchronized void enqueueEvent(final LogUnit logUnit, final LogStatement logStatement,
-            final Object... values) {
-        assert values.length == logStatement.getKeys().length;
-        if (isAllowedToLogTo(mMainResearchLog) && logUnit != null) {
-            final long time = SystemClock.uptimeMillis();
-            logUnit.addLogStatement(logStatement, time, values);
-        }
-    }
-
-    private void setCurrentLogUnitContainsDigitFlag() {
-        mCurrentLogUnit.setMayContainDigit();
-    }
-
-    private void setCurrentLogUnitContainsUserDeletions() {
-        mCurrentLogUnit.setContainsUserDeletions();
-    }
-
-    private void setCurrentLogUnitCorrectionType(final int correctionType) {
-        mCurrentLogUnit.setCorrectionType(correctionType);
-    }
-
-    /* package for test */ void commitCurrentLogUnit() {
-        if (DEBUG) {
-            Log.d(TAG, "commitCurrentLogUnit" + (mCurrentLogUnit.hasOneOrMoreWords() ?
-                    ": " + mCurrentLogUnit.getWordsAsString() : ""));
-        }
-        if (!mCurrentLogUnit.isEmpty()) {
-            mMainLogBuffer.shiftIn(mCurrentLogUnit);
-            if (mUserRecordingLogBuffer != null) {
-                mUserRecordingLogBuffer.shiftIn(mCurrentLogUnit);
-            }
-            mCurrentLogUnit = new LogUnit();
-        } else {
-            if (DEBUG) {
-                Log.d(TAG, "Warning: tried to commit empty log unit.");
-            }
-        }
-    }
-
-    private static final LogStatement LOGSTATEMENT_UNCOMMIT_CURRENT_LOGUNIT =
-            new LogStatement("UncommitCurrentLogUnit", false, false);
-    public void uncommitCurrentLogUnit(final String expectedWord,
-            final boolean dumpCurrentLogUnit) {
-        // The user has deleted this word and returned to the previous.  Check that the word in the
-        // logUnit matches the expected word.  If so, restore the last log unit committed to be the
-        // current logUnit.  I.e., pull out the last LogUnit from all the LogBuffers, and make
-        // it the mCurrentLogUnit so the new edits are captured with the word.  Optionally dump the
-        // contents of mCurrentLogUnit (useful if they contain deletions of the next word that
-        // should not be reported to protect user privacy)
-        //
-        // Note that we don't use mLastLogUnit here, because it only goes one word back and is only
-        // needed for reverts, which only happen one back.
-        final LogUnit oldLogUnit = mMainLogBuffer.peekLastLogUnit();
-
-        // Check that expected word matches.  It's ok if both strings are null, because this is the
-        // case where the LogUnit is storing a non-word, e.g. a separator.
-        if (oldLogUnit != null) {
-            // Because the word is stored in the LogUnit with digits scrubbed, the comparison must
-            // be made on a scrubbed version of the expectedWord as well.
-            final String scrubbedExpectedWord = scrubDigitsFromString(expectedWord);
-            final String oldLogUnitWords = oldLogUnit.getWordsAsString();
-            if (!TextUtils.equals(scrubbedExpectedWord, oldLogUnitWords)) return;
-        }
-
-        // Uncommit, merging if necessary.
-        mMainLogBuffer.unshiftIn();
-        if (oldLogUnit != null && !dumpCurrentLogUnit) {
-            oldLogUnit.append(mCurrentLogUnit);
-            mSavedDownEventTime = Long.MAX_VALUE;
-        }
-        if (oldLogUnit == null) {
-            mCurrentLogUnit = new LogUnit();
-        } else {
-            mCurrentLogUnit = oldLogUnit;
-        }
-        enqueueEvent(LOGSTATEMENT_UNCOMMIT_CURRENT_LOGUNIT);
-        if (DEBUG) {
-            Log.d(TAG, "uncommitCurrentLogUnit (dump=" + dumpCurrentLogUnit + ") back to "
-                    + (mCurrentLogUnit.hasOneOrMoreWords() ? ": '"
-                        + mCurrentLogUnit.getWordsAsString() + "'" : ""));
-        }
-    }
-
-    /**
-     * Publish all the logUnits in the logBuffer, without doing any privacy filtering.
-     */
-    /* package for test */ void publishLogBuffer(final LogBuffer logBuffer,
-            final ResearchLog researchLog, final boolean canIncludePrivateData) {
-        publishLogUnits(logBuffer.getLogUnits(), researchLog, canIncludePrivateData);
-    }
-
-    private static final LogStatement LOGSTATEMENT_LOG_SEGMENT_OPENING =
-            new LogStatement("logSegmentStart", false, false, "isIncludingPrivateData");
-    private static final LogStatement LOGSTATEMENT_LOG_SEGMENT_CLOSING =
-            new LogStatement("logSegmentEnd", false, false);
-    /**
-     * Publish all LogUnits in a list.
-     *
-     * Any privacy checks should be performed before calling this method.
-     */
-    /* package for test */ void publishLogUnits(final List<LogUnit> logUnits,
-            final ResearchLog researchLog, final boolean canIncludePrivateData) {
-        final LogUnit openingLogUnit = new LogUnit();
-        if (logUnits.isEmpty()) return;
-        if (!isAllowedToLogTo(researchLog)) return;
-        // LogUnits not containing private data, such as contextual data for the log, do not require
-        // logSegment boundary statements.
-        if (canIncludePrivateData) {
-            openingLogUnit.addLogStatement(LOGSTATEMENT_LOG_SEGMENT_OPENING,
-                    SystemClock.uptimeMillis(), canIncludePrivateData);
-            researchLog.publish(openingLogUnit, true /* isIncludingPrivateData */);
-        }
-        for (LogUnit logUnit : logUnits) {
-            if (DEBUG) {
-                Log.d(TAG, "publishLogBuffer: " + (logUnit.hasOneOrMoreWords()
-                        ? logUnit.getWordsAsString() : "<wordless>")
-                        + ", correction?: " + logUnit.containsUserDeletions());
-            }
-            researchLog.publish(logUnit, canIncludePrivateData);
-        }
-        if (canIncludePrivateData) {
-            final LogUnit closingLogUnit = new LogUnit();
-            closingLogUnit.addLogStatement(LOGSTATEMENT_LOG_SEGMENT_CLOSING,
-                    SystemClock.uptimeMillis());
-            researchLog.publish(closingLogUnit, true /* isIncludingPrivateData */);
-        }
-    }
-
-    public static boolean hasLetters(final String word) {
-        final int length = word.length();
-        for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
-            final int codePoint = word.codePointAt(i);
-            if (Character.isLetter(codePoint)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Commit the portion of mCurrentLogUnit before maxTime as a worded logUnit.
-     *
-     * After this operation completes, mCurrentLogUnit will hold any logStatements that happened
-     * after maxTime.
-     */
-    /* package for test */ void commitCurrentLogUnitAsWord(final String word, final long maxTime,
-            final boolean isBatchMode) {
-        if (word == null) {
-            return;
-        }
-        if (word.length() > 0 && hasLetters(word)) {
-            mCurrentLogUnit.setWords(word);
-        }
-        final LogUnit newLogUnit = mCurrentLogUnit.splitByTime(maxTime);
-        enqueueCommitText(word, isBatchMode);
-        commitCurrentLogUnit();
-        mCurrentLogUnit = newLogUnit;
-    }
-
-    /**
-     * Record the time of a MotionEvent.ACTION_DOWN.
-     *
-     * Warning: Not thread safe.  Only call from the main thread.
-     */
-    private void setSavedDownEventTime(final long time) {
-        mSavedDownEventTime = time;
-    }
-
-    public void onWordFinished(final String word, final boolean isBatchMode) {
-        commitCurrentLogUnitAsWord(word, mSavedDownEventTime, isBatchMode);
-        mSavedDownEventTime = Long.MAX_VALUE;
-    }
-
-    private static int scrubDigitFromCodePoint(int codePoint) {
-        return Character.isDigit(codePoint) ? DIGIT_REPLACEMENT_CODEPOINT : codePoint;
-    }
-
-    /* package for test */ static String scrubDigitsFromString(final String s) {
-        if (s == null) return null;
-        StringBuilder sb = null;
-        final int length = s.length();
-        for (int i = 0; i < length; i = s.offsetByCodePoints(i, 1)) {
-            final int codePoint = Character.codePointAt(s, i);
-            if (Character.isDigit(codePoint)) {
-                if (sb == null) {
-                    sb = new StringBuilder(length);
-                    sb.append(s.substring(0, i));
-                }
-                sb.appendCodePoint(DIGIT_REPLACEMENT_CODEPOINT);
-            } else {
-                if (sb != null) {
-                    sb.appendCodePoint(codePoint);
-                }
-            }
-        }
-        if (sb == null) {
-            return s;
-        } else {
-            return sb.toString();
-        }
-    }
-
-    private String scrubWord(String word) {
-        final Dictionary dictionary = getDictionary();
-        if (dictionary == null) {
-            return WORD_REPLACEMENT_STRING;
-        }
-        if (dictionary.isValidWord(word)) {
-            return word;
-        }
-        return WORD_REPLACEMENT_STRING;
-    }
-
-    // Specific logging methods follow below.  The comments for each logging method should
-    // indicate what specific method is logged, and how to trigger it from the user interface.
-    //
-    // Logging methods can be generally classified into two flavors, "UserAction", which should
-    // correspond closely to an event that is sensed by the IME, and is usually generated
-    // directly by the user, and "SystemResponse" which corresponds to an event that the IME
-    // generates, often after much processing of user input.  SystemResponses should correspond
-    // closely to user-visible events.
-    // TODO: Consider exposing the UserAction classification in the log output.
-
-    /**
-     * Log a call to LatinIME.onStartInputViewInternal().
-     *
-     * UserAction: called each time the keyboard is opened up.
-     */
-    private static final LogStatement LOGSTATEMENT_LATIN_IME_ON_START_INPUT_VIEW_INTERNAL =
-            new LogStatement("LatinImeOnStartInputViewInternal", false, false, "uuid",
-                    "packageName", "inputType", "imeOptions", "fieldId", "display", "model",
-                    "prefs", "versionCode", "versionName", "outputFormatVersion", "logEverything",
-                    "isDevTeamBuild");
-    public static void latinIME_onStartInputViewInternal(final EditorInfo editorInfo,
-            final SharedPreferences prefs) {
-        final ResearchLogger researchLogger = getInstance();
-        if (editorInfo != null) {
-            final boolean isPassword = InputTypeUtils.isPasswordInputType(editorInfo.inputType)
-                    || InputTypeUtils.isVisiblePasswordInputType(editorInfo.inputType);
-            getInstance().setIsPasswordView(isPassword);
-            researchLogger.start();
-            final Context context = researchLogger.mLatinIME;
-            try {
-                final PackageInfo packageInfo;
-                packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(),
-                        0);
-                final Integer versionCode = packageInfo.versionCode;
-                final String versionName = packageInfo.versionName;
-                final String uuid = ResearchSettings.readResearchLoggerUuid(researchLogger.mPrefs);
-                researchLogger.enqueueEvent(LOGSTATEMENT_LATIN_IME_ON_START_INPUT_VIEW_INTERNAL,
-                        uuid, editorInfo.packageName, Integer.toHexString(editorInfo.inputType),
-                        Integer.toHexString(editorInfo.imeOptions), editorInfo.fieldId,
-                        Build.DISPLAY, Build.MODEL, prefs, versionCode, versionName,
-                        OUTPUT_FORMAT_VERSION, IS_LOGGING_EVERYTHING,
-                        researchLogger.isDevTeamBuild());
-                // Commit the logUnit so the LatinImeOnStartInputViewInternal event is in its own
-                // logUnit at the beginning of the log.
-                researchLogger.commitCurrentLogUnit();
-            } catch (final NameNotFoundException e) {
-                Log.e(TAG, "NameNotFound", e);
-            }
-        }
-    }
-
-    // TODO: Update this heuristic pattern to something more reliable.  Developer builds tend to
-    // have the developer name and year embedded.
-    private static final Pattern developerBuildRegex = Pattern.compile("[A-Za-z]\\.20[1-9]");
-    private boolean isDevTeamBuild() {
-        try {
-            final PackageInfo packageInfo;
-            packageInfo = mLatinIME.getPackageManager().getPackageInfo(mLatinIME.getPackageName(),
-                    0);
-            final String versionName = packageInfo.versionName;
-            return developerBuildRegex.matcher(versionName).find();
-        } catch (final NameNotFoundException e) {
-            Log.e(TAG, "Could not determine package name", e);
-            return false;
-        }
-    }
-
-    /**
-     * Log a change in preferences.
-     *
-     * UserAction: called when the user changes the settings.
-     */
-    private static final LogStatement LOGSTATEMENT_PREFS_CHANGED =
-            new LogStatement("PrefsChanged", false, false, "prefs");
-    public static void prefsChanged(final SharedPreferences prefs) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_PREFS_CHANGED, prefs);
-    }
-
-    /**
-     * Log a call to MainKeyboardView.processMotionEvent().
-     *
-     * UserAction: called when the user puts their finger onto the screen (ACTION_DOWN).
-     *
-     */
-    private static final LogStatement LOGSTATEMENT_MAIN_KEYBOARD_VIEW_PROCESS_MOTION_EVENT =
-            new LogStatement("MotionEvent", true, false, "action",
-                    LogStatement.KEY_IS_LOGGING_RELATED, "motionEvent");
-    public static void mainKeyboardView_processMotionEvent(final MotionEvent me) {
-        if (me == null) {
-            return;
-        }
-        final int action = me.getActionMasked();
-        final long eventTime = me.getEventTime();
-        final String actionString = LoggingUtils.getMotionEventActionTypeString(action);
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_MAIN_KEYBOARD_VIEW_PROCESS_MOTION_EVENT,
-                actionString, false /* IS_LOGGING_RELATED */, MotionEvent.obtain(me));
-        if (action == MotionEvent.ACTION_DOWN) {
-            // Subtract 1 from eventTime so the down event is included in the later
-            // LogUnit, not the earlier (the test is for inequality).
-            researchLogger.setSavedDownEventTime(eventTime - 1);
-        }
-        // Refresh the timer in case we are capturing user feedback.
-        if (researchLogger.isMakingUserRecording()) {
-            researchLogger.resetRecordingTimer();
-        }
-    }
-
-    /**
-     * Log a call to LatinIME.onCodeInput().
-     *
-     * SystemResponse: The main processing step for entering text.  Called when the user performs a
-     * tap, a flick, a long press, releases a gesture, or taps a punctuation suggestion.
-     */
-    private static final LogStatement LOGSTATEMENT_LATIN_IME_ON_CODE_INPUT =
-            new LogStatement("LatinImeOnCodeInput", true, false, "code", "x", "y");
-    public static void latinIME_onCodeInput(final int code, final int x, final int y) {
-        final long time = SystemClock.uptimeMillis();
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATIN_IME_ON_CODE_INPUT,
-                Constants.printableCode(scrubDigitFromCodePoint(code)), x, y);
-        if (Character.isDigit(code)) {
-            researchLogger.setCurrentLogUnitContainsDigitFlag();
-        }
-        researchLogger.mStatistics.recordChar(code, time);
-    }
-    /**
-     * Log a call to LatinIME.onDisplayCompletions().
-     *
-     * SystemResponse: The IME has displayed application-specific completions.  They may show up
-     * in the suggestion strip, such as a landscape phone.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_ONDISPLAYCOMPLETIONS =
-            new LogStatement("LatinIMEOnDisplayCompletions", true, true,
-                    "applicationSpecifiedCompletions");
-    public static void latinIME_onDisplayCompletions(
-            final CompletionInfo[] applicationSpecifiedCompletions) {
-        // Note; passing an array as a single element in a vararg list.  Must create a new
-        // dummy array around it or it will get expanded.
-        getInstance().enqueueEvent(LOGSTATEMENT_LATINIME_ONDISPLAYCOMPLETIONS,
-                new Object[] { applicationSpecifiedCompletions });
-    }
-
-    public static boolean getAndClearLatinIMEExpectingUpdateSelection() {
-        boolean returnValue = sLatinIMEExpectingUpdateSelection;
-        sLatinIMEExpectingUpdateSelection = false;
-        return returnValue;
-    }
-
-    /**
-     * The IME is finishing; it is either being destroyed, or is about to be hidden.
-     *
-     * UserAction: The user has performed an action that has caused the IME to be closed.  They may
-     * have focused on something other than a text field, or explicitly closed it.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_ONFINISHINPUTVIEWINTERNAL =
-            new LogStatement("LatinIMEOnFinishInputViewInternal", false, false, "isTextTruncated",
-                    "text");
-    public static void latinIME_onFinishInputViewInternal(final boolean finishingInput,
-            final int savedSelectionStart, final int savedSelectionEnd, final InputConnection ic) {
-        // The finishingInput flag is set in InputMethodService.  It is true if called from
-        // doFinishInput(), which can be called as part of doStartInput().  This can happen at times
-        // when the IME is not closing, such as when powering up.  The finishinInput flag is false
-        // if called from finishViews(), which is called from hideWindow() and onDestroy().  These
-        // are the situations in which we want to finish up the researchLog.
-        if (ic != null && !finishingInput) {
-            final boolean isTextTruncated;
-            final String text;
-            if (LOG_FULL_TEXTVIEW_CONTENTS) {
-                // Capture the TextView contents.  This will trigger onUpdateSelection(), so we
-                // set sLatinIMEExpectingUpdateSelection so that when onUpdateSelection() is called,
-                // it can tell that it was generated by the logging code, and not by the user, and
-                // therefore keep user-visible state as is.
-                ic.beginBatchEdit();
-                ic.performContextMenuAction(android.R.id.selectAll);
-                CharSequence charSequence = ic.getSelectedText(0);
-                if (savedSelectionStart != -1 && savedSelectionEnd != -1) {
-                    ic.setSelection(savedSelectionStart, savedSelectionEnd);
-                }
-                ic.endBatchEdit();
-                sLatinIMEExpectingUpdateSelection = true;
-                if (TextUtils.isEmpty(charSequence)) {
-                    isTextTruncated = false;
-                    text = "";
-                } else {
-                    if (charSequence.length() > MAX_INPUTVIEW_LENGTH_TO_CAPTURE) {
-                        int length = MAX_INPUTVIEW_LENGTH_TO_CAPTURE;
-                        // do not cut in the middle of a supplementary character
-                        final char c = charSequence.charAt(length - 1);
-                        if (Character.isHighSurrogate(c)) {
-                            length--;
-                        }
-                        final CharSequence truncatedCharSequence = charSequence.subSequence(0,
-                                length);
-                        isTextTruncated = true;
-                        text = truncatedCharSequence.toString();
-                    } else {
-                        isTextTruncated = false;
-                        text = charSequence.toString();
-                    }
-                }
-            } else {
-                isTextTruncated = true;
-                text = "";
-            }
-            final ResearchLogger researchLogger = getInstance();
-            // Assume that OUTPUT_ENTIRE_BUFFER is only true when we don't care about privacy (e.g.
-            // during a live user test), so the normal isPotentiallyPrivate and
-            // isPotentiallyRevealing flags do not apply
-            researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONFINISHINPUTVIEWINTERNAL,
-                    isTextTruncated, text);
-            researchLogger.commitCurrentLogUnit();
-            getInstance().stop();
-        }
-    }
-
-    /**
-     * Log a call to LatinIME.onUpdateSelection().
-     *
-     * UserAction/SystemResponse: The user has moved the cursor or selection.  This function may
-     * be called, however, when the system has moved the cursor, say by inserting a character.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_ONUPDATESELECTION =
-            new LogStatement("LatinIMEOnUpdateSelection", true, false, "lastSelectionStart",
-                    "lastSelectionEnd", "oldSelStart", "oldSelEnd", "newSelStart", "newSelEnd",
-                    "composingSpanStart", "composingSpanEnd", "expectingUpdateSelection",
-                    "expectingUpdateSelectionFromLogger", "context");
-    public static void latinIME_onUpdateSelection(final int lastSelectionStart,
-            final int lastSelectionEnd, final int oldSelStart, final int oldSelEnd,
-            final int newSelStart, final int newSelEnd, final int composingSpanStart,
-            final int composingSpanEnd, final boolean expectingUpdateSelection,
-            final boolean expectingUpdateSelectionFromLogger,
-            final RichInputConnection connection) {
-        String word = "";
-        if (connection != null) {
-            TextRange range = connection.getWordRangeAtCursor(WHITESPACE_SEPARATORS, 1);
-            if (range != null) {
-                word = range.mWord.toString();
-            }
-        }
-        final ResearchLogger researchLogger = getInstance();
-        final String scrubbedWord = researchLogger.scrubWord(word);
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONUPDATESELECTION, lastSelectionStart,
-                lastSelectionEnd, oldSelStart, oldSelEnd, newSelStart, newSelEnd,
-                composingSpanStart, composingSpanEnd, expectingUpdateSelection,
-                expectingUpdateSelectionFromLogger, scrubbedWord);
-    }
-
-    /**
-     * Log a call to LatinIME.onTextInput().
-     *
-     * SystemResponse: Raw text is added to the TextView.
-     */
-    public static void latinIME_onTextInput(final String text, final boolean isBatchMode) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.commitCurrentLogUnitAsWord(text, Long.MAX_VALUE, isBatchMode);
-    }
-
-    /**
-     * Log a revert of onTextInput() (known in the IME as "EnteredText").
-     *
-     * SystemResponse: Remove the LogUnit recording the textInput
-     */
-    public static void latinIME_handleBackspace_cancelTextInput(final String text) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.uncommitCurrentLogUnit(text, true /* dumpCurrentLogUnit */);
-    }
-
-    /**
-     * Log a call to LatinIME.pickSuggestionManually().
-     *
-     * UserAction: The user has chosen a specific word from the suggestion strip.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_PICKSUGGESTIONMANUALLY =
-            new LogStatement("LatinIMEPickSuggestionManually", true, false, "replacedWord", "index",
-                    "suggestion", "x", "y", "isBatchMode", "score", "kind", "sourceDict");
-    /**
-     * Log a call to LatinIME.pickSuggestionManually().
-     *
-     * @param replacedWord the typed word that this manual suggestion replaces. May not be null.
-     * @param index the index in the suggestion strip
-     * @param suggestion the committed suggestion. May not be null.
-     * @param isBatchMode whether this was input in batch mode, aka gesture.
-     * @param score the internal score of the suggestion, as output by the dictionary
-     * @param kind the kind of suggestion, as one of the SuggestedWordInfo#KIND_* constants
-     * @param sourceDict the source origin of this word, as one of the Dictionary#TYPE_* constants.
-     */
-    public static void latinIME_pickSuggestionManually(final String replacedWord,
-            final int index, final String suggestion, final boolean isBatchMode,
-            final int score, final int kind, final String sourceDict) {
-        final ResearchLogger researchLogger = getInstance();
-        // Note : suggestion can't be null here, because it's only called in a place where it
-        // can't be null.
-        if (!replacedWord.equals(suggestion.toString())) {
-            // The user chose something other than what was already there.
-            researchLogger.setCurrentLogUnitContainsUserDeletions();
-            researchLogger.setCurrentLogUnitCorrectionType(LogUnit.CORRECTIONTYPE_TYPO);
-        }
-        final String scrubbedWord = scrubDigitsFromString(suggestion);
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_PICKSUGGESTIONMANUALLY,
-                scrubDigitsFromString(replacedWord), index,
-                scrubbedWord, Constants.SUGGESTION_STRIP_COORDINATE,
-                Constants.SUGGESTION_STRIP_COORDINATE, isBatchMode, score, kind, sourceDict);
-        researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE, isBatchMode);
-        researchLogger.mStatistics.recordManualSuggestion(SystemClock.uptimeMillis());
-    }
-
-    /**
-     * Log a call to LatinIME.punctuationSuggestion().
-     *
-     * UserAction: The user has chosen punctuation from the punctuation suggestion strip.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_PUNCTUATIONSUGGESTION =
-            new LogStatement("LatinIMEPunctuationSuggestion", false, false, "index", "suggestion",
-                    "x", "y", "isPrediction");
-    public static void latinIME_punctuationSuggestion(final int index, final String suggestion,
-            final boolean isBatchMode, final boolean isPrediction) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_PUNCTUATIONSUGGESTION, index, suggestion,
-                Constants.SUGGESTION_STRIP_COORDINATE, Constants.SUGGESTION_STRIP_COORDINATE,
-                isPrediction);
-        researchLogger.commitCurrentLogUnitAsWord(suggestion, Long.MAX_VALUE, isBatchMode);
-    }
-
-    /**
-     * Log a call to LatinIME.sendKeyCodePoint().
-     *
-     * SystemResponse: The IME is inserting text into the TextView for non-word-constituent,
-     * strings (separators, numbers, other symbols).
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_SENDKEYCODEPOINT =
-            new LogStatement("LatinIMESendKeyCodePoint", true, false, "code");
-    public static void latinIME_sendKeyCodePoint(final int code) {
-        final ResearchLogger researchLogger = getInstance();
-        final LogUnit phantomSpaceLogUnit = researchLogger.mPhantomSpaceLogUnit;
-        if (phantomSpaceLogUnit == null) {
-            researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_SENDKEYCODEPOINT,
-                    Constants.printableCode(scrubDigitFromCodePoint(code)));
-            if (Character.isDigit(code)) {
-                researchLogger.setCurrentLogUnitContainsDigitFlag();
-            }
-            researchLogger.commitCurrentLogUnit();
-        } else {
-            researchLogger.enqueueEvent(phantomSpaceLogUnit, LOGSTATEMENT_LATINIME_SENDKEYCODEPOINT,
-                    Constants.printableCode(scrubDigitFromCodePoint(code)));
-            if (Character.isDigit(code)) {
-                phantomSpaceLogUnit.setMayContainDigit();
-            }
-            researchLogger.mMainLogBuffer.shiftIn(phantomSpaceLogUnit);
-            if (researchLogger.mUserRecordingLogBuffer != null) {
-                researchLogger.mUserRecordingLogBuffer.shiftIn(phantomSpaceLogUnit);
-            }
-            researchLogger.mPhantomSpaceLogUnit = null;
-        }
-    }
-
-    /**
-     * Log a call to LatinIME.promotePhantomSpace().
-     *
-     * SystemResponse: The IME is inserting a real space in place of a phantom space.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_PROMOTEPHANTOMSPACE =
-            new LogStatement("LatinIMEPromotePhantomSpace", false, false);
-    public static void latinIME_promotePhantomSpace() {
-        // A phantom space is always added before the text that triggered it.  The triggering text
-        // and the events that created it will be in mCurrentLogUnit, but the phantom space should
-        // be in its own LogUnit, committed before the triggering text.  Although it is created
-        // here, it is not added to the LogBuffer until the following call to
-        // latinIME_sendKeyCodePoint, because SENDKEYCODEPOINT LogStatement also must go into that
-        // LogUnit.
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.mPhantomSpaceLogUnit = new LogUnit();
-        researchLogger.enqueueEvent(researchLogger.mPhantomSpaceLogUnit,
-                LOGSTATEMENT_LATINIME_PROMOTEPHANTOMSPACE);
-    }
-
-    /**
-     * Log a call to LatinIME.swapSwapperAndSpace().
-     *
-     * SystemResponse: A symbol has been swapped with a space character.  E.g. punctuation may swap
-     * if a soft space is inserted after a word.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE =
-            new LogStatement("LatinIMESwapSwapperAndSpace", false, false, "originalCharacters",
-                    "charactersAfterSwap");
-    public static void latinIME_swapSwapperAndSpace(final CharSequence originalCharacters,
-            final String charactersAfterSwap) {
-        final ResearchLogger researchLogger = getInstance();
-        final LogUnit logUnit;
-        logUnit = researchLogger.mMainLogBuffer.peekLastLogUnit();
-        if (logUnit != null) {
-            researchLogger.enqueueEvent(logUnit, LOGSTATEMENT_LATINIME_SWAPSWAPPERANDSPACE,
-                    originalCharacters, charactersAfterSwap);
-        }
-    }
-
-    /**
-     * Log a call to LatinIME.maybeDoubleSpacePeriod().
-     *
-     * SystemResponse: Two spaces have been replaced by period space.
-     */
-    public static void latinIME_maybeDoubleSpacePeriod(final String text,
-            final boolean isBatchMode) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.commitCurrentLogUnitAsWord(text, Long.MAX_VALUE, isBatchMode);
-    }
-
-    /**
-     * Log a call to MainKeyboardView.onLongPress().
-     *
-     * UserAction: The user has performed a long-press on a key.
-     */
-    private static final LogStatement LOGSTATEMENT_MAINKEYBOARDVIEW_ONLONGPRESS =
-            new LogStatement("MainKeyboardViewOnLongPress", false, false);
-    public static void mainKeyboardView_onLongPress() {
-        getInstance().enqueueEvent(LOGSTATEMENT_MAINKEYBOARDVIEW_ONLONGPRESS);
-    }
-
-    /**
-     * Log a call to MainKeyboardView.setKeyboard().
-     *
-     * SystemResponse: The IME has switched to a new keyboard (e.g. French, English).
-     * This is typically called right after LatinIME.onStartInputViewInternal (when starting a new
-     * IME), but may happen at other times if the user explicitly requests a keyboard change.
-     */
-    private static final LogStatement LOGSTATEMENT_MAINKEYBOARDVIEW_SETKEYBOARD =
-            new LogStatement("MainKeyboardViewSetKeyboard", false, false, "elementId", "locale",
-                    "orientation", "width", "modeName", "action", "navigateNext",
-                    "navigatePrevious", "clobberSettingsKey", "passwordInput", "shortcutKeyEnabled",
-                    "hasShortcutKey", "languageSwitchKeyEnabled", "isMultiLine", "tw", "th",
-                    "keys");
-    public static void mainKeyboardView_setKeyboard(final Keyboard keyboard,
-            final int orientation) {
-        final KeyboardId kid = keyboard.mId;
-        final boolean isPasswordView = kid.passwordInput();
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.setIsPasswordView(isPasswordView);
-        researchLogger.enqueueEvent(LOGSTATEMENT_MAINKEYBOARDVIEW_SETKEYBOARD,
-                KeyboardId.elementIdToName(kid.mElementId),
-                kid.mLocale + ":" + kid.mSubtype.getExtraValueOf(KEYBOARD_LAYOUT_SET),
-                orientation, kid.mWidth, KeyboardId.modeName(kid.mMode), kid.imeAction(),
-                kid.navigateNext(), kid.navigatePrevious(), kid.mClobberSettingsKey,
-                isPasswordView, kid.mShortcutKeyEnabled, kid.mHasShortcutKey,
-                kid.mLanguageSwitchKeyEnabled, kid.isMultiLine(), keyboard.mOccupiedWidth,
-                keyboard.mOccupiedHeight, keyboard.getKeys());
-    }
-
-    /**
-     * Log a call to LatinIME.revertCommit().
-     *
-     * SystemResponse: The IME has reverted commited text.  This happens when the user enters
-     * a word, commits it by pressing space or punctuation, and then reverts the commit by hitting
-     * backspace.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_REVERTCOMMIT =
-            new LogStatement("LatinIMERevertCommit", true, false, "committedWord",
-                    "originallyTypedWord", "separatorString");
-    public static void latinIME_revertCommit(final String committedWord,
-            final String originallyTypedWord, final boolean isBatchMode,
-            final String separatorString) {
-        // TODO: Prioritize adding a unit test for this method (as it is especially complex)
-        // TODO: Update the UserRecording LogBuffer as well as the MainLogBuffer
-        final ResearchLogger researchLogger = getInstance();
-        //
-        // 1. Remove separator LogUnit
-        final LogUnit lastLogUnit = researchLogger.mMainLogBuffer.peekLastLogUnit();
-        // Check that we're not at the beginning of input
-        if (lastLogUnit == null) return;
-        // Check that we're after a separator
-        if (lastLogUnit.getWordsAsString() != null) return;
-        // Remove separator
-        final LogUnit separatorLogUnit = researchLogger.mMainLogBuffer.unshiftIn();
-
-        // 2. Add revert LogStatement
-        final LogUnit revertedLogUnit = researchLogger.mMainLogBuffer.peekLastLogUnit();
-        if (revertedLogUnit == null) return;
-        if (!revertedLogUnit.getWordsAsString().equals(scrubDigitsFromString(committedWord))) {
-            // Any word associated with the reverted LogUnit has already had its digits scrubbed, so
-            // any digits in the committedWord argument must also be scrubbed for an accurate
-            // comparison.
-            return;
-        }
-        researchLogger.enqueueEvent(revertedLogUnit, LOGSTATEMENT_LATINIME_REVERTCOMMIT,
-                committedWord, originallyTypedWord, separatorString);
-
-        // 3. Update the word associated with the LogUnit
-        revertedLogUnit.setWords(originallyTypedWord);
-        revertedLogUnit.setContainsUserDeletions();
-
-        // 4. Re-add the separator LogUnit
-        researchLogger.mMainLogBuffer.shiftIn(separatorLogUnit);
-
-        // 5. Record stats
-        researchLogger.mStatistics.recordRevertCommit(SystemClock.uptimeMillis());
-    }
-
-    /**
-     * Log a call to PointerTracker.callListenerOnCancelInput().
-     *
-     * UserAction: The user has canceled the input, e.g., by pressing down, but then removing
-     * outside the keyboard area.
-     * TODO: Verify
-     */
-    private static final LogStatement LOGSTATEMENT_POINTERTRACKER_CALLLISTENERONCANCELINPUT =
-            new LogStatement("PointerTrackerCallListenerOnCancelInput", false, false);
-    public static void pointerTracker_callListenerOnCancelInput() {
-        getInstance().enqueueEvent(LOGSTATEMENT_POINTERTRACKER_CALLLISTENERONCANCELINPUT);
-    }
-
-    /**
-     * Log a call to PointerTracker.callListenerOnCodeInput().
-     *
-     * SystemResponse: The user has entered a key through the normal tapping mechanism.
-     * LatinIME.onCodeInput will also be called.
-     */
-    private static final LogStatement LOGSTATEMENT_POINTERTRACKER_CALLLISTENERONCODEINPUT =
-            new LogStatement("PointerTrackerCallListenerOnCodeInput", true, false, "code",
-                    "outputText", "x", "y", "ignoreModifierKey", "altersCode", "isEnabled");
-    public static void pointerTracker_callListenerOnCodeInput(final Key key, final int x,
-            final int y, final boolean ignoreModifierKey, final boolean altersCode,
-            final int code) {
-        if (key != null) {
-            String outputText = key.getOutputText();
-            final ResearchLogger researchLogger = getInstance();
-            researchLogger.enqueueEvent(LOGSTATEMENT_POINTERTRACKER_CALLLISTENERONCODEINPUT,
-                    Constants.printableCode(scrubDigitFromCodePoint(code)),
-                    outputText == null ? null : scrubDigitsFromString(outputText.toString()),
-                    x, y, ignoreModifierKey, altersCode, key.isEnabled());
-        }
-    }
-
-    /**
-     * Log a call to PointerTracker.callListenerCallListenerOnRelease().
-     *
-     * UserAction: The user has released their finger or thumb from the screen.
-     */
-    private static final LogStatement LOGSTATEMENT_POINTERTRACKER_CALLLISTENERONRELEASE =
-            new LogStatement("PointerTrackerCallListenerOnRelease", true, false, "code",
-                    "withSliding", "ignoreModifierKey", "isEnabled");
-    public static void pointerTracker_callListenerOnRelease(final Key key, final int primaryCode,
-            final boolean withSliding, final boolean ignoreModifierKey) {
-        if (key != null) {
-            getInstance().enqueueEvent(LOGSTATEMENT_POINTERTRACKER_CALLLISTENERONRELEASE,
-                    Constants.printableCode(scrubDigitFromCodePoint(primaryCode)), withSliding,
-                    ignoreModifierKey, key.isEnabled());
-        }
-    }
-
-    /**
-     * Log a call to PointerTracker.onDownEvent().
-     *
-     * UserAction: The user has pressed down on a key.
-     * TODO: Differentiate with LatinIME.processMotionEvent.
-     */
-    private static final LogStatement LOGSTATEMENT_POINTERTRACKER_ONDOWNEVENT =
-            new LogStatement("PointerTrackerOnDownEvent", true, false, "deltaT", "distanceSquared");
-    public static void pointerTracker_onDownEvent(long deltaT, int distanceSquared) {
-        getInstance().enqueueEvent(LOGSTATEMENT_POINTERTRACKER_ONDOWNEVENT, deltaT,
-                distanceSquared);
-    }
-
-    /**
-     * Log a call to PointerTracker.onMoveEvent().
-     *
-     * UserAction: The user has moved their finger while pressing on the screen.
-     * TODO: Differentiate with LatinIME.processMotionEvent().
-     */
-    private static final LogStatement LOGSTATEMENT_POINTERTRACKER_ONMOVEEVENT =
-            new LogStatement("PointerTrackerOnMoveEvent", true, false, "x", "y", "lastX", "lastY");
-    public static void pointerTracker_onMoveEvent(final int x, final int y, final int lastX,
-            final int lastY) {
-        getInstance().enqueueEvent(LOGSTATEMENT_POINTERTRACKER_ONMOVEEVENT, x, y, lastX, lastY);
-    }
-
-    /**
-     * Log a call to RichInputConnection.commitCompletion().
-     *
-     * SystemResponse: The IME has committed a completion.  A completion is an application-
-     * specific suggestion that is presented in a pop-up menu in the TextView.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_COMMITCOMPLETION =
-            new LogStatement("RichInputConnectionCommitCompletion", true, false, "completionInfo");
-    public static void richInputConnection_commitCompletion(final CompletionInfo completionInfo) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_COMMITCOMPLETION,
-                completionInfo);
-    }
-
-    /**
-     * Log a call to RichInputConnection.revertDoubleSpacePeriod().
-     *
-     * SystemResponse: The IME has reverted ". ", which had previously replaced two typed spaces.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_REVERTDOUBLESPACEPERIOD =
-            new LogStatement("RichInputConnectionRevertDoubleSpacePeriod", false, false);
-    public static void richInputConnection_revertDoubleSpacePeriod() {
-        final ResearchLogger researchLogger = getInstance();
-        // An extra LogUnit is added for the period; this is removed here because of the revert.
-        researchLogger.uncommitCurrentLogUnit(null, true /* dumpCurrentLogUnit */);
-        // TODO: This will probably be lost as the user backspaces further.  Figure out how to put
-        // it into the right logUnit.
-        researchLogger.enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_REVERTDOUBLESPACEPERIOD);
-    }
-
-    /**
-     * Log a call to RichInputConnection.revertSwapPunctuation().
-     *
-     * SystemResponse: The IME has reverted a punctuation swap.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_REVERTSWAPPUNCTUATION =
-            new LogStatement("RichInputConnectionRevertSwapPunctuation", false, false);
-    public static void richInputConnection_revertSwapPunctuation() {
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_REVERTSWAPPUNCTUATION);
-    }
-
-    /**
-     * Log a call to LatinIME.commitCurrentAutoCorrection().
-     *
-     * SystemResponse: The IME has committed an auto-correction.  An auto-correction changes the raw
-     * text input to another word (or words) that the user more likely desired to type.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_COMMITCURRENTAUTOCORRECTION =
-            new LogStatement("LatinIMECommitCurrentAutoCorrection", true, true, "typedWord",
-                    "autoCorrection", "separatorString");
-    public static void latinIme_commitCurrentAutoCorrection(final String typedWord,
-            final String autoCorrection, final String separatorString, final boolean isBatchMode,
-            final SuggestedWords suggestedWords) {
-        final String scrubbedTypedWord = scrubDigitsFromString(typedWord);
-        final String scrubbedAutoCorrection = scrubDigitsFromString(autoCorrection);
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.mCurrentLogUnit.initializeSuggestions(suggestedWords);
-        researchLogger.onWordFinished(scrubbedAutoCorrection, isBatchMode);
-
-        // Add the autocorrection logStatement at the end of the logUnit for the committed word.
-        // We have to do this after calling commitCurrentLogUnitAsWord, because it may split the
-        // current logUnit, and then we have to peek to get the logUnit reference back.
-        final LogUnit logUnit = researchLogger.mMainLogBuffer.peekLastLogUnit();
-        // TODO: Add test to confirm that the commitCurrentAutoCorrection log statement should
-        // always be added to logUnit (if non-null) and not mCurrentLogUnit.
-        researchLogger.enqueueEvent(logUnit, LOGSTATEMENT_LATINIME_COMMITCURRENTAUTOCORRECTION,
-                scrubbedTypedWord, scrubbedAutoCorrection, separatorString);
-    }
-
-    private boolean isExpectingCommitText = false;
-
-    /**
-     * Log a call to RichInputConnection.commitText().
-     *
-     * SystemResponse: The IME is committing text.  This happens after the user has typed a word
-     * and then a space or punctuation key.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTIONCOMMITTEXT =
-            new LogStatement("RichInputConnectionCommitText", true, false, "newCursorPosition");
-    public static void richInputConnection_commitText(final String committedWord,
-            final int newCursorPosition, final boolean isBatchMode) {
-        final ResearchLogger researchLogger = getInstance();
-        // Only include opening and closing logSegments if private data is included
-        final String scrubbedWord = scrubDigitsFromString(committedWord);
-        if (!researchLogger.isExpectingCommitText) {
-            researchLogger.enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTIONCOMMITTEXT,
-                    newCursorPosition);
-            researchLogger.commitCurrentLogUnitAsWord(scrubbedWord, Long.MAX_VALUE, isBatchMode);
-        }
-        researchLogger.isExpectingCommitText = false;
-    }
-
-    /**
-     * Shared events for logging committed text.
-     *
-     * The "CommitTextEventHappened" LogStatement is written to the log even if privacy rules
-     * indicate that the word contents should not be logged.  It has no contents, and only serves to
-     * record the event and thereby make it easier to calculate word-level statistics even when the
-     * word contents are unknown.
-     */
-    private static final LogStatement LOGSTATEMENT_COMMITTEXT =
-            new LogStatement("CommitText", true /* isPotentiallyPrivate */,
-                    false /* isPotentiallyRevealing */, "committedText", "isBatchMode");
-    private static final LogStatement LOGSTATEMENT_COMMITTEXT_EVENT_HAPPENED =
-            new LogStatement("CommitTextEventHappened", false /* isPotentiallyPrivate */,
-                    false /* isPotentiallyRevealing */);
-    private void enqueueCommitText(final String word, final boolean isBatchMode) {
-        // Event containing the word; will be published only if privacy checks pass
-        enqueueEvent(LOGSTATEMENT_COMMITTEXT, word, isBatchMode);
-        // Event not containing the word; will always be published
-        enqueueEvent(LOGSTATEMENT_COMMITTEXT_EVENT_HAPPENED);
-    }
-
-    /**
-     * Log a call to RichInputConnection.deleteSurroundingText().
-     *
-     * SystemResponse: The IME has deleted text.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_DELETESURROUNDINGTEXT =
-            new LogStatement("RichInputConnectionDeleteSurroundingText", true, false,
-                    "beforeLength", "afterLength");
-    public static void richInputConnection_deleteSurroundingText(final int beforeLength,
-            final int afterLength) {
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_DELETESURROUNDINGTEXT,
-                beforeLength, afterLength);
-    }
-
-    /**
-     * Log a call to RichInputConnection.finishComposingText().
-     *
-     * SystemResponse: The IME has left the composing text as-is.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_FINISHCOMPOSINGTEXT =
-            new LogStatement("RichInputConnectionFinishComposingText", false, false);
-    public static void richInputConnection_finishComposingText() {
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_FINISHCOMPOSINGTEXT);
-    }
-
-    /**
-     * Log a call to RichInputConnection.performEditorAction().
-     *
-     * SystemResponse: The IME is invoking an action specific to the editor.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_PERFORMEDITORACTION =
-            new LogStatement("RichInputConnectionPerformEditorAction", false, false,
-                    "imeActionId");
-    public static void richInputConnection_performEditorAction(final int imeActionId) {
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_PERFORMEDITORACTION,
-                imeActionId);
-    }
-
-    /**
-     * Log a call to RichInputConnection.sendKeyEvent().
-     *
-     * SystemResponse: The IME is telling the TextView that a key is being pressed through an
-     * alternate channel.
-     * TODO: only for hardware keys?
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_SENDKEYEVENT =
-            new LogStatement("RichInputConnectionSendKeyEvent", true, false, "eventTime", "action",
-                    "code");
-    public static void richInputConnection_sendKeyEvent(final KeyEvent keyEvent) {
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_SENDKEYEVENT,
-                keyEvent.getEventTime(), keyEvent.getAction(), keyEvent.getKeyCode());
-    }
-
-    /**
-     * Log a call to RichInputConnection.setComposingText().
-     *
-     * SystemResponse: The IME is setting the composing text.  Happens each time a character is
-     * entered.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_SETCOMPOSINGTEXT =
-            new LogStatement("RichInputConnectionSetComposingText", true, true, "text",
-                    "newCursorPosition");
-    public static void richInputConnection_setComposingText(final CharSequence text,
-            final int newCursorPosition) {
-        if (text == null) {
-            throw new RuntimeException("setComposingText is null");
-        }
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_SETCOMPOSINGTEXT, text,
-                newCursorPosition);
-    }
-
-    /**
-     * Log a call to RichInputConnection.setSelection().
-     *
-     * SystemResponse: The IME is requesting that the selection change.  User-initiated selection-
-     * change requests do not go through this method -- it's only when the system wants to change
-     * the selection.
-     */
-    private static final LogStatement LOGSTATEMENT_RICHINPUTCONNECTION_SETSELECTION =
-            new LogStatement("RichInputConnectionSetSelection", true, false, "from", "to");
-    public static void richInputConnection_setSelection(final int from, final int to) {
-        getInstance().enqueueEvent(LOGSTATEMENT_RICHINPUTCONNECTION_SETSELECTION, from, to);
-    }
-
-    /**
-     * Log a call to SuddenJumpingTouchEventHandler.onTouchEvent().
-     *
-     * SystemResponse: The IME has filtered input events in case of an erroneous sensor reading.
-     */
-    private static final LogStatement LOGSTATEMENT_SUDDENJUMPINGTOUCHEVENTHANDLER_ONTOUCHEVENT =
-            new LogStatement("SuddenJumpingTouchEventHandlerOnTouchEvent", true, false,
-                    "motionEvent");
-    public static void suddenJumpingTouchEventHandler_onTouchEvent(final MotionEvent me) {
-        if (me != null) {
-            getInstance().enqueueEvent(LOGSTATEMENT_SUDDENJUMPINGTOUCHEVENTHANDLER_ONTOUCHEVENT,
-                    MotionEvent.obtain(me));
-        }
-    }
-
-    /**
-     * Log a call to SuggestionsView.setSuggestions().
-     *
-     * SystemResponse: The IME is setting the suggestions in the suggestion strip.
-     */
-    private static final LogStatement LOGSTATEMENT_SUGGESTIONSTRIPVIEW_SETSUGGESTIONS =
-            new LogStatement("SuggestionStripViewSetSuggestions", true, true, "suggestedWords");
-    public static void suggestionStripView_setSuggestions(final SuggestedWords suggestedWords) {
-        if (suggestedWords != null) {
-            getInstance().enqueueEvent(LOGSTATEMENT_SUGGESTIONSTRIPVIEW_SETSUGGESTIONS,
-                    suggestedWords);
-        }
-    }
-
-    /**
-     * The user has indicated a particular point in the log that is of interest.
-     *
-     * UserAction: From direct menu invocation.
-     */
-    private static final LogStatement LOGSTATEMENT_USER_TIMESTAMP =
-            new LogStatement("UserTimestamp", false, false);
-    public void userTimestamp() {
-        getInstance().enqueueEvent(LOGSTATEMENT_USER_TIMESTAMP);
-    }
-
-    /**
-     * Log a call to LatinIME.onEndBatchInput().
-     *
-     * SystemResponse: The system has completed a gesture.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_ONENDBATCHINPUT =
-            new LogStatement("LatinIMEOnEndBatchInput", true, false, "enteredText",
-                    "enteredWordPos", "suggestedWords");
-    public static void latinIME_onEndBatchInput(final CharSequence enteredText,
-            final int enteredWordPos, final SuggestedWords suggestedWords) {
-        final ResearchLogger researchLogger = getInstance();
-        if (!TextUtils.isEmpty(enteredText) && hasLetters(enteredText.toString())) {
-            researchLogger.mCurrentLogUnit.setWords(enteredText.toString());
-        }
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONENDBATCHINPUT, enteredText,
-                enteredWordPos, suggestedWords);
-        researchLogger.mCurrentLogUnit.initializeSuggestions(suggestedWords);
-        researchLogger.mStatistics.recordGestureInput(enteredText.length(),
-                SystemClock.uptimeMillis());
-    }
-
-    private static final LogStatement LOGSTATEMENT_LATINIME_HANDLEBACKSPACE =
-            new LogStatement("LatinIMEHandleBackspace", true, false, "numCharacters");
-    /**
-     * Log a call to LatinIME.handleBackspace() that is not a batch delete.
-     *
-     * UserInput: The user is deleting one or more characters by hitting the backspace key once.
-     * The covers single character deletes as well as deleting selections.
-     *
-     * @param numCharacters how many characters the backspace operation deleted
-     * @param shouldUncommitLogUnit whether to uncommit the last {@code LogUnit} in the
-     * {@code LogBuffer}
-     */
-    public static void latinIME_handleBackspace(final int numCharacters,
-            final boolean shouldUncommitLogUnit) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_HANDLEBACKSPACE, numCharacters);
-        if (shouldUncommitLogUnit) {
-            ResearchLogger.getInstance().uncommitCurrentLogUnit(
-                    null, true /* dumpCurrentLogUnit */);
-        }
-    }
-
-    /**
-     * Log a call to LatinIME.handleBackspace() that is a batch delete.
-     *
-     * UserInput: The user is deleting a gestured word by hitting the backspace key once.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_HANDLEBACKSPACE_BATCH =
-            new LogStatement("LatinIMEHandleBackspaceBatch", true, false, "deletedText",
-                    "numCharacters");
-    public static void latinIME_handleBackspace_batch(final CharSequence deletedText,
-            final int numCharacters) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_HANDLEBACKSPACE_BATCH, deletedText,
-                numCharacters);
-        researchLogger.mStatistics.recordGestureDelete(deletedText.length(),
-                SystemClock.uptimeMillis());
-        researchLogger.uncommitCurrentLogUnit(deletedText.toString(),
-                false /* dumpCurrentLogUnit */);
-    }
-
-    /**
-     * Log a long interval between user operation.
-     *
-     * UserInput: The user has not done anything for a while.
-     */
-    private static final LogStatement LOGSTATEMENT_ONUSERPAUSE = new LogStatement("OnUserPause",
-            false, false, "intervalInMs");
-    public static void onUserPause(final long interval) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_ONUSERPAUSE, interval);
-    }
-
-    /**
-     * Record the current time in case the LogUnit is later split.
-     *
-     * If the current logUnit is split, then tapping, motion events, etc. before this time should
-     * be assigned to one LogUnit, and events after this time should go into the following LogUnit.
-     */
-    public static void recordTimeForLogUnitSplit() {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.setSavedDownEventTime(SystemClock.uptimeMillis());
-        researchLogger.mSavedDownEventTime = Long.MAX_VALUE;
-    }
-
-    /**
-     * Log a call to LatinIME.handleSeparator()
-     *
-     * SystemResponse: The system is inserting a separator character, possibly performing auto-
-     * correction or other actions appropriate at the end of a word.
-     */
-    private static final LogStatement LOGSTATEMENT_LATINIME_HANDLESEPARATOR =
-            new LogStatement("LatinIMEHandleSeparator", false, false, "primaryCode",
-                    "isComposingWord");
-    public static void latinIME_handleSeparator(final int primaryCode,
-            final boolean isComposingWord) {
-        final ResearchLogger researchLogger = getInstance();
-        researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_HANDLESEPARATOR, primaryCode,
-                isComposingWord);
-    }
-
-    /**
-     * Call this method when the logging system has attempted publication of an n-gram.
-     *
-     * Statistics are gathered about the success or failure.
-     *
-     * @param publishabilityResultCode a result code as defined by
-     * {@code MainLogBuffer.PUBLISHABILITY_*}
-     */
-    static void recordPublishabilityResultCode(final int publishabilityResultCode) {
-        final ResearchLogger researchLogger = getInstance();
-        final Statistics statistics = researchLogger.mStatistics;
-        statistics.recordPublishabilityResultCode(publishabilityResultCode);
-    }
-
-    /**
-     * Log statistics.
-     *
-     * ContextualData, recorded at the end of a session.
-     */
-    private static final LogStatement LOGSTATEMENT_STATISTICS =
-            new LogStatement("Statistics", false, false, "charCount", "letterCount", "numberCount",
-                    "spaceCount", "deleteOpsCount", "wordCount", "isEmptyUponStarting",
-                    "isEmptinessStateKnown", "averageTimeBetweenKeys", "averageTimeBeforeDelete",
-                    "averageTimeDuringRepeatedDelete", "averageTimeAfterDelete",
-                    "dictionaryWordCount", "splitWordsCount", "gestureInputCount",
-                    "gestureCharsCount", "gesturesDeletedCount", "manualSuggestionsCount",
-                    "revertCommitsCount", "correctedWordsCount", "autoCorrectionsCount",
-                    "publishableCount", "unpublishableStoppingCount",
-                    "unpublishableIncorrectWordCount", "unpublishableSampledTooRecentlyCount",
-                    "unpublishableDictionaryUnavailableCount", "unpublishableMayContainDigitCount",
-                    "unpublishableNotInDictionaryCount");
-    private static void logStatistics() {
-        final ResearchLogger researchLogger = getInstance();
-        final Statistics statistics = researchLogger.mStatistics;
-        researchLogger.enqueueEvent(LOGSTATEMENT_STATISTICS, statistics.mCharCount,
-                statistics.mLetterCount, statistics.mNumberCount, statistics.mSpaceCount,
-                statistics.mDeleteKeyCount, statistics.mWordCount, statistics.mIsEmptyUponStarting,
-                statistics.mIsEmptinessStateKnown, statistics.mKeyCounter.getAverageTime(),
-                statistics.mBeforeDeleteKeyCounter.getAverageTime(),
-                statistics.mDuringRepeatedDeleteKeysCounter.getAverageTime(),
-                statistics.mAfterDeleteKeyCounter.getAverageTime(),
-                statistics.mDictionaryWordCount, statistics.mSplitWordsCount,
-                statistics.mGesturesInputCount, statistics.mGesturesCharsCount,
-                statistics.mGesturesDeletedCount, statistics.mManualSuggestionsCount,
-                statistics.mRevertCommitsCount, statistics.mCorrectedWordsCount,
-                statistics.mAutoCorrectionsCount, statistics.mPublishableCount,
-                statistics.mUnpublishableStoppingCount, statistics.mUnpublishableIncorrectWordCount,
-                statistics.mUnpublishableSampledTooRecently,
-                statistics.mUnpublishableDictionaryUnavailable,
-                statistics.mUnpublishableMayContainDigit, statistics.mUnpublishableNotInDictionary);
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/ResearchSettings.java b/java/src/com/android/inputmethod/research/ResearchSettings.java
deleted file mode 100644
index c0bc03f..0000000
--- a/java/src/com/android/inputmethod/research/ResearchSettings.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.content.SharedPreferences;
-
-import java.util.UUID;
-
-public final class ResearchSettings {
-    public static final String PREF_RESEARCH_LOGGER_UUID = "pref_research_logger_uuid";
-    public static final String PREF_RESEARCH_LOGGER_ENABLED_FLAG =
-            "pref_research_logger_enabled_flag";
-    public static final String PREF_RESEARCH_LOGGER_HAS_SEEN_SPLASH =
-            "pref_research_logger_has_seen_splash";
-    public static final String PREF_RESEARCH_LAST_DIR_CLEANUP_TIME =
-            "pref_research_last_dir_cleanup_time";
-
-    private ResearchSettings() {
-        // Intentional empty constructor for singleton.
-    }
-
-    public static String readResearchLoggerUuid(final SharedPreferences prefs) {
-        if (prefs.contains(PREF_RESEARCH_LOGGER_UUID)) {
-            return prefs.getString(PREF_RESEARCH_LOGGER_UUID, null);
-        }
-        // Generate a random string as uuid if not yet set
-        final String newUuid = UUID.randomUUID().toString();
-        prefs.edit().putString(PREF_RESEARCH_LOGGER_UUID, newUuid).apply();
-        return newUuid;
-    }
-
-    public static boolean readResearchLoggerEnabledFlag(final SharedPreferences prefs) {
-        return prefs.getBoolean(PREF_RESEARCH_LOGGER_ENABLED_FLAG, false);
-    }
-
-    public static void writeResearchLoggerEnabledFlag(final SharedPreferences prefs,
-            final boolean isEnabled) {
-        prefs.edit().putBoolean(PREF_RESEARCH_LOGGER_ENABLED_FLAG, isEnabled).apply();
-    }
-
-    public static boolean readHasSeenSplash(final SharedPreferences prefs) {
-        return prefs.getBoolean(PREF_RESEARCH_LOGGER_HAS_SEEN_SPLASH, false);
-    }
-
-    public static void writeHasSeenSplash(final SharedPreferences prefs,
-            final boolean hasSeenSplash) {
-        prefs.edit().putBoolean(PREF_RESEARCH_LOGGER_HAS_SEEN_SPLASH, hasSeenSplash).apply();
-    }
-
-    public static long readResearchLastDirCleanupTime(final SharedPreferences prefs) {
-        return prefs.getLong(PREF_RESEARCH_LAST_DIR_CLEANUP_TIME, 0L);
-    }
-
-    public static void writeResearchLastDirCleanupTime(final SharedPreferences prefs,
-            final long lastDirCleanupTime) {
-        prefs.edit().putLong(PREF_RESEARCH_LAST_DIR_CLEANUP_TIME, lastDirCleanupTime).apply();
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/Statistics.java b/java/src/com/android/inputmethod/research/Statistics.java
deleted file mode 100644
index fd323a1..0000000
--- a/java/src/com/android/inputmethod/research/Statistics.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * 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.research;
-
-import android.util.Log;
-
-import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.util.concurrent.TimeUnit;
-
-public class Statistics {
-    private static final String TAG = Statistics.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-
-    // TODO: Cleanup comments to only including those giving meaningful information.
-    // Number of characters entered during a typing session
-    int mCharCount;
-    // Number of letter characters entered during a typing session
-    int mLetterCount;
-    // Number of number characters entered
-    int mNumberCount;
-    // Number of space characters entered
-    int mSpaceCount;
-    // Number of delete operations entered (taps on the backspace key)
-    int mDeleteKeyCount;
-    // Number of words entered during a session.
-    int mWordCount;
-    // Number of words found in the dictionary.
-    int mDictionaryWordCount;
-    // Number of words split and spaces automatically entered.
-    int mSplitWordsCount;
-    // Number of words entered during a session.
-    int mCorrectedWordsCount;
-    // Number of gestures that were input.
-    int mGesturesInputCount;
-    // Number of gestures that were deleted.
-    int mGesturesDeletedCount;
-    // Total number of characters in words entered by gesture.
-    int mGesturesCharsCount;
-    // Number of manual suggestions chosen.
-    int mManualSuggestionsCount;
-    // Number of times that autocorrection was invoked.
-    int mAutoCorrectionsCount;
-    // Number of times a commit was reverted in this session.
-    int mRevertCommitsCount;
-    // Whether the text field was empty upon editing
-    boolean mIsEmptyUponStarting;
-    boolean mIsEmptinessStateKnown;
-
-    // Counts of how often an n-gram is collected or not, and the reasons for the decision.
-    // Keep consistent with publishability result code list in MainLogBuffer
-    int mPublishableCount;
-    int mUnpublishableStoppingCount;
-    int mUnpublishableIncorrectWordCount;
-    int mUnpublishableSampledTooRecently;
-    int mUnpublishableDictionaryUnavailable;
-    int mUnpublishableMayContainDigit;
-    int mUnpublishableNotInDictionary;
-
-    // Timers to count average time to enter a key, first press a delete key,
-    // between delete keys, and then to return typing after a delete key.
-    final AverageTimeCounter mKeyCounter = new AverageTimeCounter();
-    final AverageTimeCounter mBeforeDeleteKeyCounter = new AverageTimeCounter();
-    final AverageTimeCounter mDuringRepeatedDeleteKeysCounter = new AverageTimeCounter();
-    final AverageTimeCounter mAfterDeleteKeyCounter = new AverageTimeCounter();
-
-    static class AverageTimeCounter {
-        int mCount;
-        int mTotalTime;
-
-        public void reset() {
-            mCount = 0;
-            mTotalTime = 0;
-        }
-
-        public void add(long deltaTime) {
-            mCount++;
-            mTotalTime += deltaTime;
-        }
-
-        public int getAverageTime() {
-            if (mCount == 0) {
-                return 0;
-            }
-            return mTotalTime / mCount;
-        }
-    }
-
-    // To account for the interruptions when the user's attention is directed elsewhere, times
-    // longer than MIN_TYPING_INTERMISSION are not counted when estimating this statistic.
-    public static final long MIN_TYPING_INTERMISSION = TimeUnit.SECONDS.toMillis(2);
-    public static final long MIN_DELETION_INTERMISSION = TimeUnit.SECONDS.toMillis(10);
-
-    // The last time that a tap was performed
-    private long mLastTapTime;
-    // The type of the last keypress (delete key or not)
-    boolean mIsLastKeyDeleteKey;
-
-    private static final Statistics sInstance = new Statistics();
-
-    public static Statistics getInstance() {
-        return sInstance;
-    }
-
-    private Statistics() {
-        reset();
-    }
-
-    public void reset() {
-        mCharCount = 0;
-        mLetterCount = 0;
-        mNumberCount = 0;
-        mSpaceCount = 0;
-        mDeleteKeyCount = 0;
-        mWordCount = 0;
-        mDictionaryWordCount = 0;
-        mSplitWordsCount = 0;
-        mCorrectedWordsCount = 0;
-        mGesturesInputCount = 0;
-        mGesturesDeletedCount = 0;
-        mManualSuggestionsCount = 0;
-        mRevertCommitsCount = 0;
-        mAutoCorrectionsCount = 0;
-        mIsEmptyUponStarting = true;
-        mIsEmptinessStateKnown = false;
-        mKeyCounter.reset();
-        mBeforeDeleteKeyCounter.reset();
-        mDuringRepeatedDeleteKeysCounter.reset();
-        mAfterDeleteKeyCounter.reset();
-        mGesturesCharsCount = 0;
-        mGesturesDeletedCount = 0;
-        mPublishableCount = 0;
-        mUnpublishableStoppingCount = 0;
-        mUnpublishableIncorrectWordCount = 0;
-        mUnpublishableSampledTooRecently = 0;
-        mUnpublishableDictionaryUnavailable = 0;
-        mUnpublishableMayContainDigit = 0;
-        mUnpublishableNotInDictionary = 0;
-
-        mLastTapTime = 0;
-        mIsLastKeyDeleteKey = false;
-    }
-
-    public void recordChar(int codePoint, long time) {
-        if (DEBUG) {
-            Log.d(TAG, "recordChar() called");
-        }
-        if (codePoint == Constants.CODE_DELETE) {
-            mDeleteKeyCount++;
-            recordUserAction(time, true /* isDeletion */);
-        } else {
-            mCharCount++;
-            if (Character.isDigit(codePoint)) {
-                mNumberCount++;
-            }
-            if (Character.isLetter(codePoint)) {
-                mLetterCount++;
-            }
-            if (Character.isSpaceChar(codePoint)) {
-                mSpaceCount++;
-            }
-            recordUserAction(time, false /* isDeletion */);
-        }
-    }
-
-    public void recordWordEntered(final boolean isDictionaryWord,
-            final boolean containsCorrection) {
-        mWordCount++;
-        if (isDictionaryWord) {
-            mDictionaryWordCount++;
-        }
-        if (containsCorrection) {
-            mCorrectedWordsCount++;
-        }
-    }
-
-    public void recordSplitWords() {
-        mSplitWordsCount++;
-    }
-
-    public void recordGestureInput(final int numCharsEntered, final long time) {
-        mGesturesInputCount++;
-        mGesturesCharsCount += numCharsEntered;
-        recordUserAction(time, false /* isDeletion */);
-    }
-
-    public void setIsEmptyUponStarting(final boolean isEmpty) {
-        mIsEmptyUponStarting = isEmpty;
-        mIsEmptinessStateKnown = true;
-    }
-
-    public void recordGestureDelete(final int length, final long time) {
-        mGesturesDeletedCount++;
-        recordUserAction(time, true /* isDeletion */);
-    }
-
-    public void recordManualSuggestion(final long time) {
-        mManualSuggestionsCount++;
-        recordUserAction(time, false /* isDeletion */);
-    }
-
-    public void recordAutoCorrection(final long time) {
-        mAutoCorrectionsCount++;
-        recordUserAction(time, false /* isDeletion */);
-    }
-
-    public void recordRevertCommit(final long time) {
-        mRevertCommitsCount++;
-        recordUserAction(time, true /* isDeletion */);
-    }
-
-    private void recordUserAction(final long time, final boolean isDeletion) {
-        final long delta = time - mLastTapTime;
-        if (isDeletion) {
-            if (delta < MIN_DELETION_INTERMISSION) {
-                if (mIsLastKeyDeleteKey) {
-                    mDuringRepeatedDeleteKeysCounter.add(delta);
-                } else {
-                    mBeforeDeleteKeyCounter.add(delta);
-                }
-            } else {
-                ResearchLogger.onUserPause(delta);
-            }
-        } else {
-            if (mIsLastKeyDeleteKey && delta < MIN_DELETION_INTERMISSION) {
-                mAfterDeleteKeyCounter.add(delta);
-            } else if (!mIsLastKeyDeleteKey && delta < MIN_TYPING_INTERMISSION) {
-                mKeyCounter.add(delta);
-            } else {
-                ResearchLogger.onUserPause(delta);
-            }
-        }
-        mIsLastKeyDeleteKey = isDeletion;
-        mLastTapTime = time;
-    }
-
-    public void recordPublishabilityResultCode(final int publishabilityResultCode) {
-        // Keep consistent with publishability result code list in MainLogBuffer
-        switch (publishabilityResultCode) {
-        case MainLogBuffer.PUBLISHABILITY_PUBLISHABLE:
-            mPublishableCount++;
-            break;
-        case MainLogBuffer.PUBLISHABILITY_UNPUBLISHABLE_STOPPING:
-            mUnpublishableStoppingCount++;
-            break;
-        case MainLogBuffer.PUBLISHABILITY_UNPUBLISHABLE_INCORRECT_WORD_COUNT:
-            mUnpublishableIncorrectWordCount++;
-            break;
-        case MainLogBuffer.PUBLISHABILITY_UNPUBLISHABLE_SAMPLED_TOO_RECENTLY:
-            mUnpublishableSampledTooRecently++;
-            break;
-        case MainLogBuffer.PUBLISHABILITY_UNPUBLISHABLE_DICTIONARY_UNAVAILABLE:
-            mUnpublishableDictionaryUnavailable++;
-            break;
-        case MainLogBuffer.PUBLISHABILITY_UNPUBLISHABLE_MAY_CONTAIN_DIGIT:
-            mUnpublishableMayContainDigit++;
-            break;
-        case MainLogBuffer.PUBLISHABILITY_UNPUBLISHABLE_NOT_IN_DICTIONARY:
-            mUnpublishableNotInDictionary++;
-            break;
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/Uploader.java b/java/src/com/android/inputmethod/research/Uploader.java
deleted file mode 100644
index c7ea3e6..0000000
--- a/java/src/com/android/inputmethod/research/Uploader.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.Manifest;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.BatteryManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.define.ProductionFlag;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * Manages the uploading of ResearchLog files.
- */
-public final class Uploader {
-    private static final String TAG = Uploader.class.getSimpleName();
-    private static final boolean DEBUG = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    // Set IS_INHIBITING_AUTO_UPLOAD to true for local testing
-    private static final boolean IS_INHIBITING_UPLOAD = false
-            && ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS_DEBUG;
-    private static final int BUF_SIZE = 1024 * 8;
-
-    private final Context mContext;
-    private final ResearchLogDirectory mResearchLogDirectory;
-    private final URL mUrl;
-
-    public Uploader(final Context context) {
-        mContext = context;
-        mResearchLogDirectory = new ResearchLogDirectory(context);
-
-        final String urlString = context.getString(R.string.research_logger_upload_url);
-        if (TextUtils.isEmpty(urlString)) {
-            mUrl = null;
-            return;
-        }
-        URL url = null;
-        try {
-            url = new URL(urlString);
-        } catch (final MalformedURLException e) {
-            Log.e(TAG, "Bad URL for uploading", e);
-        }
-        mUrl = url;
-    }
-
-    public boolean isPossibleToUpload() {
-        return hasUploadingPermission() && mUrl != null && !IS_INHIBITING_UPLOAD;
-    }
-
-    private boolean hasUploadingPermission() {
-        final PackageManager packageManager = mContext.getPackageManager();
-        return packageManager.checkPermission(Manifest.permission.INTERNET,
-                mContext.getPackageName()) == PackageManager.PERMISSION_GRANTED;
-    }
-
-    public boolean isConvenientToUpload() {
-        return isExternallyPowered() && hasWifiConnection();
-    }
-
-    private boolean isExternallyPowered() {
-        final Intent intent = mContext.registerReceiver(null, new IntentFilter(
-                Intent.ACTION_BATTERY_CHANGED));
-        final int pluggedState = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
-        return pluggedState == BatteryManager.BATTERY_PLUGGED_AC
-                || pluggedState == BatteryManager.BATTERY_PLUGGED_USB;
-    }
-
-    private boolean hasWifiConnection() {
-        final ConnectivityManager manager =
-                (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-        final NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
-        return wifiInfo.isConnected();
-    }
-
-    public void doUpload() {
-        final File[] files = mResearchLogDirectory.getUploadableLogFiles();
-        if (files == null) return;
-        for (final File file : files) {
-            uploadFile(file);
-        }
-    }
-
-    private void uploadFile(final File file) {
-        if (DEBUG) {
-            Log.d(TAG, "attempting upload of " + file.getAbsolutePath());
-        }
-        final int contentLength = (int) file.length();
-        HttpURLConnection connection = null;
-        InputStream fileInputStream = null;
-        try {
-            fileInputStream = new FileInputStream(file);
-            connection = (HttpURLConnection) mUrl.openConnection();
-            connection.setRequestMethod("PUT");
-            connection.setDoOutput(true);
-            connection.setFixedLengthStreamingMode(contentLength);
-            final OutputStream outputStream = connection.getOutputStream();
-            uploadContents(fileInputStream, outputStream);
-            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
-                Log.d(TAG, "upload failed: " + connection.getResponseCode());
-                final InputStream netInputStream = connection.getInputStream();
-                final BufferedReader reader = new BufferedReader(new InputStreamReader(
-                        netInputStream));
-                String line;
-                while ((line = reader.readLine()) != null) {
-                    Log.d(TAG, "| " + reader.readLine());
-                }
-                reader.close();
-                return;
-            }
-            file.delete();
-            if (DEBUG) {
-                Log.d(TAG, "upload successful");
-            }
-        } catch (final IOException e) {
-            Log.e(TAG, "Exception uploading file", e);
-        } finally {
-            if (fileInputStream != null) {
-                try {
-                    fileInputStream.close();
-                } catch (final IOException e) {
-                    Log.e(TAG, "Exception closing uploaded file", e);
-                }
-            }
-            if (connection != null) {
-                connection.disconnect();
-            }
-        }
-    }
-
-    private static void uploadContents(final InputStream is, final OutputStream os)
-            throws IOException {
-        // TODO: Switch to NIO.
-        final byte[] buf = new byte[BUF_SIZE];
-        int numBytesRead;
-        while ((numBytesRead = is.read(buf)) != -1) {
-            os.write(buf, 0, numBytesRead);
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/UploaderService.java b/java/src/com/android/inputmethod/research/UploaderService.java
deleted file mode 100644
index fd3f2f6..0000000
--- a/java/src/com/android/inputmethod/research/UploaderService.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.research;
-
-import android.app.AlarmManager;
-import android.app.IntentService;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.SystemClock;
-
-/**
- * Service to invoke the uploader.
- *
- * Can be regularly invoked, invoked on boot, etc.
- */
-public final class UploaderService extends IntentService {
-    private static final String TAG = UploaderService.class.getSimpleName();
-    public static final long RUN_INTERVAL = AlarmManager.INTERVAL_HOUR;
-    public static final String EXTRA_UPLOAD_UNCONDITIONALLY = UploaderService.class.getName()
-            + ".extra.UPLOAD_UNCONDITIONALLY";
-
-    public UploaderService() {
-        super("Research Uploader Service");
-    }
-
-    @Override
-    protected void onHandleIntent(final Intent intent) {
-        // We may reach this point either because the alarm fired, or because the system explicitly
-        // requested that an Upload occur.  In the latter case, we want to cancel the alarm in case
-        // it's about to fire.
-        cancelAndRescheduleUploadingService(this, false /* needsRescheduling */);
-
-        final Uploader uploader = new Uploader(this);
-        if (!uploader.isPossibleToUpload()) return;
-        if (isUploadingUnconditionally(intent.getExtras()) || uploader.isConvenientToUpload()) {
-            uploader.doUpload();
-        }
-        cancelAndRescheduleUploadingService(this, true /* needsRescheduling */);
-    }
-
-    private boolean isUploadingUnconditionally(final Bundle bundle) {
-        if (bundle == null) return false;
-        if (bundle.containsKey(EXTRA_UPLOAD_UNCONDITIONALLY)) {
-            return bundle.getBoolean(EXTRA_UPLOAD_UNCONDITIONALLY);
-        }
-        return false;
-    }
-
-    /**
-     * Arrange for the UploaderService to be run on a regular basis.
-     *
-     * Any existing scheduled invocation of UploaderService is removed and optionally rescheduled.
-     * This may cause problems if this method is called so often that no scheduled invocation is
-     * ever run.  But if the delay is short enough that it will go off when the user is sleeping,
-     * then there should be no starvation.
-     *
-     * @param context {@link Context} object
-     * @param needsRescheduling whether to schedule a future intent to be delivered to this service
-     */
-    public static void cancelAndRescheduleUploadingService(final Context context,
-            final boolean needsRescheduling) {
-        final Intent intent = new Intent(context, UploaderService.class);
-        final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
-        final AlarmManager alarmManager = (AlarmManager) context.getSystemService(
-                Context.ALARM_SERVICE);
-        alarmManager.cancel(pendingIntent);
-        if (needsRescheduling) {
-            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()
-                    + UploaderService.RUN_INTERVAL, pendingIntent);
-        }
-    }
-}
diff --git a/java/src/com/android/inputmethod/research/ui/SplashScreen.java b/java/src/com/android/inputmethod/research/ui/SplashScreen.java
deleted file mode 100644
index 78ed668..0000000
--- a/java/src/com/android/inputmethod/research/ui/SplashScreen.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research.ui;
-
-import android.app.AlertDialog.Builder;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.Intent;
-import android.inputmethodservice.InputMethodService;
-import android.net.Uri;
-import android.os.IBinder;
-import android.view.Window;
-import android.view.WindowManager.LayoutParams;
-
-import com.android.inputmethod.latin.R.string;
-
-/**
- * Show a dialog when the user first opens the keyboard.
- *
- * The splash screen is a modal dialog box presented when the user opens this keyboard for the first
- * time.  It is useful for giving specific warnings that must be shown to the user before use.
- *
- * While the splash screen does share with the setup wizard the common goal of presenting
- * information to the user before use, they are presented at different times and with different
- * capabilities.  The setup wizard is launched by tapping on the icon, and walks the user through
- * the setup process.  It can, however, be bypassed by enabling the keyboard from Settings directly.
- * The splash screen cannot be bypassed, and is therefore more appropriate for obtaining user
- * consent.
- */
-public class SplashScreen {
-    public interface UserConsentListener {
-        public void onSplashScreenUserClickedOk();
-    }
-
-    final UserConsentListener mListener;
-    final Dialog mSplashDialog;
-
-    public SplashScreen(final InputMethodService inputMethodService,
-            final UserConsentListener listener) {
-        mListener = listener;
-        final Builder builder = new Builder(inputMethodService)
-                .setTitle(string.research_splash_title)
-                .setMessage(string.research_splash_content)
-                .setPositiveButton(android.R.string.yes,
-                        new DialogInterface.OnClickListener() {
-                            @Override
-                            public void onClick(DialogInterface dialog, int which) {
-                                mListener.onSplashScreenUserClickedOk();
-                                mSplashDialog.dismiss();
-                            }
-                })
-                .setNegativeButton(android.R.string.no,
-                        new DialogInterface.OnClickListener() {
-                            @Override
-                            public void onClick(DialogInterface dialog, int which) {
-                                final String packageName = inputMethodService.getPackageName();
-                                final Uri packageUri = Uri.parse("package:" + packageName);
-                                final Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE,
-                                        packageUri);
-                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                                inputMethodService.startActivity(intent);
-                            }
-                })
-                .setCancelable(true)
-                .setOnCancelListener(
-                        new OnCancelListener() {
-                            @Override
-                            public void onCancel(DialogInterface dialog) {
-                                inputMethodService.requestHideSelf(0);
-                            }
-                });
-        mSplashDialog = builder.create();
-    }
-
-    /**
-     * Show the splash screen.
-     *
-     * The user must consent to the terms presented in the SplashScreen before they can use the
-     * keyboard.  If they cancel instead, they are given the option to uninstall the keybard.
-     *
-     * @param windowToken {@link IBinder} to attach dialog to
-     */
-    public void showSplashScreen(final IBinder windowToken) {
-        final Window window = mSplashDialog.getWindow();
-        final LayoutParams lp = window.getAttributes();
-        lp.token = windowToken;
-        lp.type = LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
-        window.setAttributes(lp);
-        window.addFlags(LayoutParams.FLAG_ALT_FOCUSABLE_IM);
-        mSplashDialog.show();
-    }
-
-    public boolean isShowing() {
-        return mSplashDialog.isShowing();
-    }
-}
diff --git a/native/jni/Android.mk b/native/jni/Android.mk
index ca6a779..3a2073f 100644
--- a/native/jni/Android.mk
+++ b/native/jni/Android.mk
@@ -28,77 +28,19 @@
 LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
 
 LOCAL_CFLAGS += -Werror -Wall -Wextra -Weffc++ -Wformat=2 -Wcast-qual -Wcast-align \
-    -Wwrite-strings -Wfloat-equal -Wpointer-arith -Winit-self -Wredundant-decls -Wno-system-headers
-
-ifeq ($(TARGET_ARCH), arm)
-ifeq ($(TARGET_GCC_VERSION), 4.6)
-LOCAL_CFLAGS += -Winline
-endif # TARGET_GCC_VERSION
-endif # TARGET_ARCH
+    -Wwrite-strings -Wfloat-equal -Wpointer-arith -Winit-self -Wredundant-decls \
+    -Woverloaded-virtual -Wsign-promo -Wno-system-headers
 
 # To suppress compiler warnings for unused variables/functions used for debug features etc.
 LOCAL_CFLAGS += -Wno-unused-parameter -Wno-unused-function
 
-LATIN_IME_JNI_SRC_FILES := \
-    com_android_inputmethod_keyboard_ProximityInfo.cpp \
-    com_android_inputmethod_latin_BinaryDictionary.cpp \
-    com_android_inputmethod_latin_DicTraverseSession.cpp \
-    com_android_inputmethod_latin_makedict_Ver3DictDecoder.cpp \
-    jni_common.cpp
+# HACK: -mstackrealign is required for x86 builds running on pre-KitKat devices to avoid crashes
+# with SSE instructions.
+ifeq ($(TARGET_ARCH), x86)
+    LOCAL_CFLAGS += -mstackrealign
+endif # x86
 
-LATIN_IME_CORE_SRC_FILES := \
-    suggest/core/suggest.cpp \
-    $(addprefix suggest/core/dicnode/, \
-        dic_node.cpp \
-        dic_node_utils.cpp \
-        dic_nodes_cache.cpp) \
-    $(addprefix suggest/core/dictionary/, \
-        bigram_dictionary.cpp \
-        bloom_filter.cpp \
-        dictionary.cpp \
-        digraph_utils.cpp \
-        multi_bigram_map.cpp) \
-    $(addprefix suggest/core/layout/, \
-        additional_proximity_chars.cpp \
-        proximity_info.cpp \
-        proximity_info_params.cpp \
-        proximity_info_state.cpp \
-        proximity_info_state_utils.cpp) \
-    suggest/core/policy/weighting.cpp \
-    suggest/core/session/dic_traverse_session.cpp \
-    $(addprefix suggest/policyimpl/dictionary/, \
-        bigram/bigram_list_read_write_utils.cpp \
-        bigram/dynamic_bigram_list_policy.cpp \
-        header/header_policy.cpp \
-        header/header_read_write_utils.cpp \
-        shortcut/shortcut_list_reading_utils.cpp \
-        dictionary_structure_with_buffer_policy_factory.cpp \
-        dynamic_patricia_trie_gc_event_listeners.cpp \
-        dynamic_patricia_trie_node_reader.cpp \
-        dynamic_patricia_trie_policy.cpp \
-        dynamic_patricia_trie_reading_helper.cpp \
-        dynamic_patricia_trie_reading_utils.cpp \
-        dynamic_patricia_trie_writing_helper.cpp \
-        dynamic_patricia_trie_writing_utils.cpp \
-        patricia_trie_policy.cpp \
-        patricia_trie_reading_utils.cpp) \
-    $(addprefix suggest/policyimpl/dictionary/utils/, \
-        buffer_with_extendable_buffer.cpp \
-        byte_array_utils.cpp \
-        dict_file_writing_utils.cpp \
-        forgetting_curve_utils.cpp \
-        format_utils.cpp) \
-    suggest/policyimpl/gesture/gesture_suggest_policy_factory.cpp \
-    $(addprefix suggest/policyimpl/typing/, \
-        scoring_params.cpp \
-        typing_scoring.cpp \
-        typing_suggest_policy.cpp \
-        typing_traversal.cpp \
-        typing_weighting.cpp) \
-    $(addprefix utils/, \
-        autocorrection_threshold_utils.cpp \
-        char_utils.cpp \
-        log_utils.cpp)
+include $(LOCAL_PATH)/NativeFileList.mk
 
 LOCAL_SRC_FILES := \
     $(LATIN_IME_JNI_SRC_FILES) \
@@ -121,8 +63,9 @@
 LOCAL_MODULE := libjni_latinime_common_static
 LOCAL_MODULE_TAGS := optional
 
+LOCAL_CLANG := true
 LOCAL_SDK_VERSION := 14
-LOCAL_NDK_STL_VARIANT := stlport_static
+LOCAL_NDK_STL_VARIANT := c++_static
 
 include $(BUILD_STATIC_LIBRARY)
 ######################################
@@ -144,13 +87,17 @@
 LOCAL_MODULE := libjni_latinime
 LOCAL_MODULE_TAGS := optional
 
+LOCAL_CLANG := true
 LOCAL_SDK_VERSION := 14
-LOCAL_NDK_STL_VARIANT := stlport_static
+LOCAL_NDK_STL_VARIANT := c++_static
 LOCAL_LDFLAGS += -ldl
 
 include $(BUILD_SHARED_LIBRARY)
-
 #################### Clean up the tmp vars
-LATIN_IME_CORE_SRC_FILES :=
-LATIN_IME_JNI_SRC_FILES :=
-LATIN_IME_SRC_DIR :=
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
+
+#################### Unit test on host environment
+include $(LOCAL_PATH)/HostUnitTests.mk
+
+#################### Unit test on target environment
+include $(LOCAL_PATH)/TargetUnitTests.mk
diff --git a/native/jni/Application.mk b/native/jni/Application.mk
index caf3b26..ce09535 100644
--- a/native/jni/Application.mk
+++ b/native/jni/Application.mk
@@ -1 +1 @@
-APP_STL := stlport_static
+APP_STL := c++_static
diff --git a/native/jni/CleanupNativeFileList.mk b/native/jni/CleanupNativeFileList.mk
new file mode 100644
index 0000000..eed6f1e
--- /dev/null
+++ b/native/jni/CleanupNativeFileList.mk
@@ -0,0 +1,19 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LATIN_IME_CORE_SRC_FILES :=
+LATIN_IME_CORE_SRC_FILES_BACKWARD_V401 :=
+LATIN_IME_CORE_TEST_FILES :=
+LATIN_IME_JNI_SRC_FILES :=
+LATIN_IME_SRC_DIR :=
diff --git a/native/jni/HostUnitTests.mk b/native/jni/HostUnitTests.mk
new file mode 100644
index 0000000..6967d9b
--- /dev/null
+++ b/native/jni/HostUnitTests.mk
@@ -0,0 +1,56 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# HACK: Temporarily disable host tool build on Mac until the build system is ready for C++11.
+LATINIME_HOST_OSNAME := $(shell uname -s)
+ifneq ($(LATINIME_HOST_OSNAME), Darwin) # TODO: Remove this
+
+LOCAL_PATH := $(call my-dir)
+
+######################################
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/NativeFileList.mk
+
+#################### Host library for unit test
+# TODO: Remove -std=c++11 once it is set by default on host build.
+LATIN_IME_SRC_DIR := src
+LOCAL_CFLAGS += -std=c++11 -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_host_static_for_unittests
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_CORE_SRC_FILES))
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+#################### Host native tests
+include $(CLEAR_VARS)
+LATIN_IME_TEST_SRC_DIR := tests
+# TODO: Remove -std=c++11 once it is set by default on host build.
+LOCAL_CFLAGS += -std=c++11 -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_host_unittests
+LOCAL_MODULE_TAGS := tests
+LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_TEST_SRC_DIR)/, $(LATIN_IME_CORE_TEST_FILES))
+LOCAL_STATIC_LIBRARIES += liblatinime_host_static_for_unittests
+include $(BUILD_HOST_NATIVE_TEST)
+
+endif # Darwin - TODO: Remove this
+
+#################### Clean up the tmp vars
+LATINIME_HOST_OSNAME :=
+LATIN_IME_SRC_DIR :=
+LATIN_IME_TEST_SRC_DIR :=
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
diff --git a/native/jni/NativeFileList.mk b/native/jni/NativeFileList.mk
new file mode 100644
index 0000000..fe21061
--- /dev/null
+++ b/native/jni/NativeFileList.mk
@@ -0,0 +1,127 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LATIN_IME_JNI_SRC_FILES := \
+    com_android_inputmethod_keyboard_ProximityInfo.cpp \
+    com_android_inputmethod_latin_BinaryDictionary.cpp \
+    com_android_inputmethod_latin_BinaryDictionaryUtils.cpp \
+    com_android_inputmethod_latin_DicTraverseSession.cpp \
+    jni_common.cpp
+
+LATIN_IME_CORE_SRC_FILES := \
+    suggest/core/suggest.cpp \
+    $(addprefix suggest/core/dicnode/, \
+        dic_node.cpp \
+        dic_node_utils.cpp \
+        dic_nodes_cache.cpp) \
+    $(addprefix suggest/core/dictionary/, \
+        dictionary.cpp \
+        dictionary_utils.cpp \
+        digraph_utils.cpp \
+        error_type_utils.cpp \
+        multi_bigram_map.cpp \
+        property/word_property.cpp) \
+    $(addprefix suggest/core/layout/, \
+        additional_proximity_chars.cpp \
+        proximity_info.cpp \
+        proximity_info_params.cpp \
+        proximity_info_state.cpp \
+        proximity_info_state_utils.cpp) \
+    suggest/core/policy/weighting.cpp \
+    suggest/core/session/dic_traverse_session.cpp \
+    $(addprefix suggest/core/result/, \
+        suggestion_results.cpp \
+        suggestions_output_utils.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/, \
+        header/header_policy.cpp \
+        header/header_read_write_utils.cpp \
+        structure/dictionary_structure_with_buffer_policy_factory.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/structure/pt_common/, \
+        bigram/bigram_list_read_write_utils.cpp \
+        dynamic_pt_gc_event_listeners.cpp \
+        dynamic_pt_reading_helper.cpp \
+        dynamic_pt_reading_utils.cpp \
+        dynamic_pt_updating_helper.cpp \
+        dynamic_pt_writing_utils.cpp \
+        patricia_trie_reading_utils.cpp \
+        shortcut/shortcut_list_reading_utils.cpp ) \
+    $(addprefix suggest/policyimpl/dictionary/structure/v2/, \
+        patricia_trie_policy.cpp \
+        ver2_patricia_trie_node_reader.cpp \
+        ver2_pt_node_array_reader.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/structure/v4/, \
+        bigram/ver4_bigram_list_policy.cpp \
+        ver4_dict_buffers.cpp \
+        ver4_dict_constants.cpp \
+        ver4_patricia_trie_node_reader.cpp \
+        ver4_patricia_trie_node_writer.cpp \
+        ver4_patricia_trie_policy.cpp \
+        ver4_patricia_trie_reading_utils.cpp \
+        ver4_patricia_trie_writing_helper.cpp \
+        ver4_pt_node_array_reader.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/structure/v4/content/, \
+        bigram_dict_content.cpp \
+        probability_dict_content.cpp \
+        shortcut_dict_content.cpp \
+        sparse_table_dict_content.cpp \
+        terminal_position_lookup_table.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/utils/, \
+        buffer_with_extendable_buffer.cpp \
+        byte_array_utils.cpp \
+        dict_file_writing_utils.cpp \
+        file_utils.cpp \
+        forgetting_curve_utils.cpp \
+        format_utils.cpp \
+        mmapped_buffer.cpp \
+        sparse_table.cpp) \
+    suggest/policyimpl/gesture/gesture_suggest_policy_factory.cpp \
+    $(addprefix suggest/policyimpl/typing/, \
+        scoring_params.cpp \
+        typing_scoring.cpp \
+        typing_suggest_policy.cpp \
+        typing_traversal.cpp \
+        typing_weighting.cpp) \
+    $(addprefix utils/, \
+        autocorrection_threshold_utils.cpp \
+        char_utils.cpp \
+        jni_data_utils.cpp \
+        log_utils.cpp \
+        time_keeper.cpp)
+
+LATIN_IME_CORE_SRC_FILES_BACKWARD_V402 := \
+    $(addprefix suggest/policyimpl/dictionary/structure/backward/v402/, \
+        ver4_dict_buffers.cpp \
+        ver4_dict_constants.cpp \
+        ver4_patricia_trie_node_reader.cpp \
+        ver4_patricia_trie_node_writer.cpp \
+        ver4_patricia_trie_policy.cpp \
+        ver4_patricia_trie_reading_utils.cpp \
+        ver4_patricia_trie_writing_helper.cpp \
+        ver4_pt_node_array_reader.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/structure/backward/v402/content/, \
+        bigram_dict_content.cpp \
+        probability_dict_content.cpp \
+        shortcut_dict_content.cpp \
+        sparse_table_dict_content.cpp \
+        terminal_position_lookup_table.cpp) \
+    $(addprefix suggest/policyimpl/dictionary/structure/backward/v402/bigram/, \
+        ver4_bigram_list_policy.cpp)
+
+LATIN_IME_CORE_SRC_FILES += $(LATIN_IME_CORE_SRC_FILES_BACKWARD_V402)
+
+LATIN_IME_CORE_TEST_FILES := \
+    defines_test.cpp \
+    suggest/core/layout/normal_distribution_2d_test.cpp \
+    suggest/core/dictionary/bloom_filter_test.cpp \
+    utils/autocorrection_threshold_utils_test.cpp
diff --git a/native/jni/TargetUnitTests.mk b/native/jni/TargetUnitTests.mk
new file mode 100644
index 0000000..12aae44
--- /dev/null
+++ b/native/jni/TargetUnitTests.mk
@@ -0,0 +1,55 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+######################################
+include $(CLEAR_VARS)
+
+include $(LOCAL_PATH)/NativeFileList.mk
+
+#################### Target library for unit test
+LATIN_IME_SRC_DIR := src
+LOCAL_CFLAGS += -std=c++11 -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_target_static_for_unittests
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(addprefix $(LATIN_IME_SRC_DIR)/, $(LATIN_IME_CORE_SRC_FILES))
+# Here intentionally use libc++_shared rather than libc++_static because
+# $(BUILD_NATIVE_TEST) has not yet supported libc++_static.
+LOCAL_SDK_VERSION := 14
+LOCAL_NDK_STL_VARIANT := c++_shared
+include $(BUILD_STATIC_LIBRARY)
+
+#################### Target native tests
+include $(CLEAR_VARS)
+LATIN_IME_TEST_SRC_DIR := tests
+LOCAL_CFLAGS += -std=c++11 -Wno-unused-parameter -Wno-unused-function
+LOCAL_CLANG := true
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/$(LATIN_IME_SRC_DIR)
+LOCAL_MODULE := liblatinime_target_unittests
+LOCAL_MODULE_TAGS := tests
+LOCAL_SRC_FILES :=  \
+    $(addprefix $(LATIN_IME_TEST_SRC_DIR)/, $(LATIN_IME_CORE_TEST_FILES))
+LOCAL_STATIC_LIBRARIES += liblatinime_target_static_for_unittests
+# Here intentionally include external/libcxx/libcxx.mk rather because
+# $(BUILD_NATIVE_TEST) fails when LOCAL_NDK_STL_VARIANT is specified.
+include external/libcxx/libcxx.mk
+include $(BUILD_NATIVE_TEST)
+
+#################### Clean up the tmp vars
+LATIN_IME_SRC_DIR :=
+LATIN_IME_TEST_SRC_DIR :=
+include $(LOCAL_PATH)/CleanupNativeFileList.mk
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index 8f21c50..22ad2d0 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -19,61 +19,27 @@
 #include "com_android_inputmethod_latin_BinaryDictionary.h"
 
 #include <cstring> // for memset()
+#include <vector>
 
 #include "defines.h"
 #include "jni.h"
 #include "jni_common.h"
 #include "suggest/core/dictionary/dictionary.h"
+#include "suggest/core/dictionary/property/unigram_property.h"
+#include "suggest/core/dictionary/property/word_property.h"
+#include "suggest/core/result/suggestion_results.h"
+#include "suggest/core/session/prev_words_info.h"
 #include "suggest/core/suggest_options.h"
-#include "suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.h"
-#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
-#include "utils/autocorrection_threshold_utils.h"
+#include "suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h"
+#include "utils/char_utils.h"
+#include "utils/jni_data_utils.h"
+#include "utils/log_utils.h"
+#include "utils/time_keeper.h"
 
 namespace latinime {
 
 class ProximityInfo;
 
-// TODO: Move to makedict.
-static jboolean latinime_BinaryDictionary_createEmptyDictFile(JNIEnv *env, jclass clazz,
-        jstring filePath, jlong dictVersion, jobjectArray attributeKeyStringArray,
-        jobjectArray attributeValueStringArray) {
-    const jsize filePathUtf8Length = env->GetStringUTFLength(filePath);
-    char filePathChars[filePathUtf8Length + 1];
-    env->GetStringUTFRegion(filePath, 0, env->GetStringLength(filePath), filePathChars);
-    filePathChars[filePathUtf8Length] = '\0';
-
-    const int keyCount = env->GetArrayLength(attributeKeyStringArray);
-    const int valueCount = env->GetArrayLength(attributeValueStringArray);
-    if (keyCount != valueCount) {
-        return false;
-    }
-
-    HeaderReadWriteUtils::AttributeMap attributeMap;
-    for (int i = 0; i < keyCount; i++) {
-        jstring keyString = static_cast<jstring>(
-                env->GetObjectArrayElement(attributeKeyStringArray, i));
-        const jsize keyUtf8Length = env->GetStringUTFLength(keyString);
-        char keyChars[keyUtf8Length + 1];
-        env->GetStringUTFRegion(keyString, 0, env->GetStringLength(keyString), keyChars);
-        keyChars[keyUtf8Length] = '\0';
-        HeaderReadWriteUtils::AttributeMap::key_type key;
-        HeaderReadWriteUtils::insertCharactersIntoVector(keyChars, &key);
-
-        jstring valueString = static_cast<jstring>(
-                env->GetObjectArrayElement(attributeValueStringArray, i));
-        const jsize valueUtf8Length = env->GetStringUTFLength(valueString);
-        char valueChars[valueUtf8Length + 1];
-        env->GetStringUTFRegion(valueString, 0, env->GetStringLength(valueString), valueChars);
-        valueChars[valueUtf8Length] = '\0';
-        HeaderReadWriteUtils::AttributeMap::mapped_type value;
-        HeaderReadWriteUtils::insertCharactersIntoVector(valueChars, &value);
-        attributeMap[key] = value;
-    }
-
-    return DictFileWritingUtils::createEmptyDictFile(filePathChars, static_cast<int>(dictVersion),
-            &attributeMap);
-}
-
 static jlong latinime_BinaryDictionary_open(JNIEnv *env, jclass clazz, jstring sourceDir,
         jlong dictOffset, jlong dictSize, jboolean isUpdatable) {
     PROF_OPEN;
@@ -86,29 +52,58 @@
     char sourceDirChars[sourceDirUtf8Length + 1];
     env->GetStringUTFRegion(sourceDir, 0, env->GetStringLength(sourceDir), sourceDirChars);
     sourceDirChars[sourceDirUtf8Length] = '\0';
-    DictionaryStructureWithBufferPolicy *const dictionaryStructureWithBufferPolicy =
-            DictionaryStructureWithBufferPolicyFactory::newDictionaryStructureWithBufferPolicy(
+    DictionaryStructureWithBufferPolicy::StructurePolicyPtr dictionaryStructureWithBufferPolicy(
+            DictionaryStructureWithBufferPolicyFactory::newPolicyForExistingDictFile(
                     sourceDirChars, static_cast<int>(dictOffset), static_cast<int>(dictSize),
-                    isUpdatable == JNI_TRUE);
+                    isUpdatable == JNI_TRUE));
     if (!dictionaryStructureWithBufferPolicy) {
         return 0;
     }
 
-    Dictionary *const dictionary = new Dictionary(env, dictionaryStructureWithBufferPolicy);
+    Dictionary *const dictionary =
+            new Dictionary(env, std::move(dictionaryStructureWithBufferPolicy));
     PROF_END(66);
     PROF_CLOSE;
     return reinterpret_cast<jlong>(dictionary);
 }
 
-static void latinime_BinaryDictionary_flush(JNIEnv *env, jclass clazz, jlong dict,
+static jlong latinime_BinaryDictionary_createOnMemory(JNIEnv *env, jclass clazz,
+        jlong formatVersion, jstring locale, jobjectArray attributeKeyStringArray,
+        jobjectArray attributeValueStringArray) {
+    const jsize localeUtf8Length = env->GetStringUTFLength(locale);
+    char localeChars[localeUtf8Length + 1];
+    env->GetStringUTFRegion(locale, 0, env->GetStringLength(locale), localeChars);
+    localeChars[localeUtf8Length] = '\0';
+    std::vector<int> localeCodePoints;
+    HeaderReadWriteUtils::insertCharactersIntoVector(localeChars, &localeCodePoints);
+    const int keyCount = env->GetArrayLength(attributeKeyStringArray);
+    const int valueCount = env->GetArrayLength(attributeValueStringArray);
+    if (keyCount != valueCount) {
+        return false;
+    }
+    DictionaryHeaderStructurePolicy::AttributeMap attributeMap =
+            JniDataUtils::constructAttributeMap(env, attributeKeyStringArray,
+                    attributeValueStringArray);
+    DictionaryStructureWithBufferPolicy::StructurePolicyPtr dictionaryStructureWithBufferPolicy =
+            DictionaryStructureWithBufferPolicyFactory::newPolicyForOnMemoryDict(
+                    formatVersion, localeCodePoints, &attributeMap);
+    if (!dictionaryStructureWithBufferPolicy) {
+        return 0;
+    }
+    Dictionary *const dictionary =
+            new Dictionary(env, std::move(dictionaryStructureWithBufferPolicy));
+    return reinterpret_cast<jlong>(dictionary);
+}
+
+static bool latinime_BinaryDictionary_flush(JNIEnv *env, jclass clazz, jlong dict,
         jstring filePath) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
-    if (!dictionary) return;
+    if (!dictionary) return false;
     const jsize filePathUtf8Length = env->GetStringUTFLength(filePath);
     char filePathChars[filePathUtf8Length + 1];
     env->GetStringUTFRegion(filePath, 0, env->GetStringLength(filePath), filePathChars);
     filePathChars[filePathUtf8Length] = '\0';
-    dictionary->flush(filePathChars);
+    return dictionary->flush(filePathChars);
 }
 
 static bool latinime_BinaryDictionary_needsToRunGC(JNIEnv *env, jclass clazz,
@@ -118,15 +113,15 @@
     return dictionary->needsToRunGC(mindsBlockByGC == JNI_TRUE);
 }
 
-static void latinime_BinaryDictionary_flushWithGC(JNIEnv *env, jclass clazz, jlong dict,
+static bool latinime_BinaryDictionary_flushWithGC(JNIEnv *env, jclass clazz, jlong dict,
         jstring filePath) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
-    if (!dictionary) return;
+    if (!dictionary) return false;
     const jsize filePathUtf8Length = env->GetStringUTFLength(filePath);
     char filePathChars[filePathUtf8Length + 1];
     env->GetStringUTFRegion(filePath, 0, env->GetStringLength(filePath), filePathChars);
     filePathChars[filePathUtf8Length] = '\0';
-    dictionary->flushWithGC(filePathChars);
+    return dictionary->flushWithGC(filePathChars);
 }
 
 static void latinime_BinaryDictionary_close(JNIEnv *env, jclass clazz, jlong dict) {
@@ -135,19 +130,70 @@
     delete dictionary;
 }
 
-static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, jlong dict,
-        jlong proximityInfo, jlong dicTraverseSession, jintArray xCoordinatesArray,
-        jintArray yCoordinatesArray, jintArray timesArray, jintArray pointerIdsArray,
-        jintArray inputCodePointsArray, jint inputSize, jint commitPoint, jintArray suggestOptions,
-        jintArray prevWordCodePointsForBigrams, jintArray outputCodePointsArray,
-        jintArray scoresArray, jintArray spaceIndicesArray, jintArray outputTypesArray,
-        jintArray outputAutoCommitFirstWordConfidenceArray) {
+static void latinime_BinaryDictionary_getHeaderInfo(JNIEnv *env, jclass clazz, jlong dict,
+        jintArray outHeaderSize, jintArray outFormatVersion, jobject outAttributeKeys,
+        jobject outAttributeValues) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) return;
+    const DictionaryHeaderStructurePolicy *const headerPolicy =
+            dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy();
+    JniDataUtils::putIntToArray(env, outHeaderSize, 0 /* index */, headerPolicy->getSize());
+    JniDataUtils::putIntToArray(env, outFormatVersion, 0 /* index */,
+            headerPolicy->getFormatVersionNumber());
+    // Output attribute map
+    jclass arrayListClass = env->FindClass("java/util/ArrayList");
+    jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z");
+    const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap =
+            headerPolicy->getAttributeMap();
+    for (DictionaryHeaderStructurePolicy::AttributeMap::const_iterator it = attributeMap->begin();
+            it != attributeMap->end(); ++it) {
+        // Output key
+        jintArray keyCodePointArray = env->NewIntArray(it->first.size());
+        JniDataUtils::outputCodePoints(env, keyCodePointArray, 0 /* start */,
+                it->first.size(), it->first.data(), it->first.size(),
+                false /* needsNullTermination */);
+        env->CallBooleanMethod(outAttributeKeys, addMethodId, keyCodePointArray);
+        env->DeleteLocalRef(keyCodePointArray);
+        // Output value
+        jintArray valueCodePointArray = env->NewIntArray(it->second.size());
+        JniDataUtils::outputCodePoints(env, valueCodePointArray, 0 /* start */,
+                it->second.size(), it->second.data(), it->second.size(),
+                false /* needsNullTermination */);
+        env->CallBooleanMethod(outAttributeValues, addMethodId, valueCodePointArray);
+        env->DeleteLocalRef(valueCodePointArray);
+    }
+    env->DeleteLocalRef(arrayListClass);
+    return;
+}
+
+static int latinime_BinaryDictionary_getFormatVersion(JNIEnv *env, jclass clazz, jlong dict) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
     if (!dictionary) return 0;
+    const DictionaryHeaderStructurePolicy *const headerPolicy =
+            dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy();
+    return headerPolicy->getFormatVersionNumber();
+}
+
+static void latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, jlong dict,
+        jlong proximityInfo, jlong dicTraverseSession, jintArray xCoordinatesArray,
+        jintArray yCoordinatesArray, jintArray timesArray, jintArray pointerIdsArray,
+        jintArray inputCodePointsArray, jint inputSize, jintArray suggestOptions,
+        jobjectArray prevWordCodePointArrays, jbooleanArray isBeginningOfSentenceArray,
+        jintArray outSuggestionCount, jintArray outCodePointsArray, jintArray outScoresArray,
+        jintArray outSpaceIndicesArray, jintArray outTypesArray,
+        jintArray outAutoCommitFirstWordConfidenceArray, jfloatArray inOutLanguageWeight) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    // Assign 0 to outSuggestionCount here in case of returning earlier in this method.
+    JniDataUtils::putIntToArray(env, outSuggestionCount, 0 /* index */, 0);
+    if (!dictionary) {
+        return;
+    }
     ProximityInfo *pInfo = reinterpret_cast<ProximityInfo *>(proximityInfo);
     DicTraverseSession *traverseSession =
             reinterpret_cast<DicTraverseSession *>(dicTraverseSession);
-
+    if (!traverseSession) {
+        return;
+    }
     // Input values
     int xCoordinates[inputSize];
     int yCoordinates[inputSize];
@@ -155,20 +201,11 @@
     int pointerIds[inputSize];
     const jsize inputCodePointsLength = env->GetArrayLength(inputCodePointsArray);
     int inputCodePoints[inputCodePointsLength];
-    const jsize prevWordCodePointsLength =
-            prevWordCodePointsForBigrams ? env->GetArrayLength(prevWordCodePointsForBigrams) : 0;
-    int prevWordCodePointsInternal[prevWordCodePointsLength];
-    int *prevWordCodePoints = 0;
     env->GetIntArrayRegion(xCoordinatesArray, 0, inputSize, xCoordinates);
     env->GetIntArrayRegion(yCoordinatesArray, 0, inputSize, yCoordinates);
     env->GetIntArrayRegion(timesArray, 0, inputSize, times);
     env->GetIntArrayRegion(pointerIdsArray, 0, inputSize, pointerIds);
     env->GetIntArrayRegion(inputCodePointsArray, 0, inputCodePointsLength, inputCodePoints);
-    if (prevWordCodePointsForBigrams) {
-        env->GetIntArrayRegion(prevWordCodePointsForBigrams, 0, prevWordCodePointsLength,
-                prevWordCodePointsInternal);
-        prevWordCodePoints = prevWordCodePointsInternal;
-    }
 
     const jsize numberOfOptions = env->GetArrayLength(suggestOptions);
     int options[numberOfOptions];
@@ -177,55 +214,44 @@
 
     // Output values
     /* By the way, let's check the output array length here to make sure */
-    const jsize outputCodePointsLength = env->GetArrayLength(outputCodePointsArray);
+    const jsize outputCodePointsLength = env->GetArrayLength(outCodePointsArray);
     if (outputCodePointsLength != (MAX_WORD_LENGTH * MAX_RESULTS)) {
         AKLOGE("Invalid outputCodePointsLength: %d", outputCodePointsLength);
         ASSERT(false);
-        return 0;
+        return;
     }
-    const jsize scoresLength = env->GetArrayLength(scoresArray);
+    const jsize scoresLength = env->GetArrayLength(outScoresArray);
     if (scoresLength != MAX_RESULTS) {
         AKLOGE("Invalid scoresLength: %d", scoresLength);
         ASSERT(false);
-        return 0;
+        return;
     }
-    int outputCodePoints[outputCodePointsLength];
-    int scores[scoresLength];
-    const jsize spaceIndicesLength = env->GetArrayLength(spaceIndicesArray);
-    int spaceIndices[spaceIndicesLength];
-    const jsize outputTypesLength = env->GetArrayLength(outputTypesArray);
-    int outputTypes[outputTypesLength];
     const jsize outputAutoCommitFirstWordConfidenceLength =
-            env->GetArrayLength(outputAutoCommitFirstWordConfidenceArray);
-    // We only use the first result, as obviously we will only ever autocommit the first one
+            env->GetArrayLength(outAutoCommitFirstWordConfidenceArray);
     ASSERT(outputAutoCommitFirstWordConfidenceLength == 1);
-    int outputAutoCommitFirstWordConfidence[outputAutoCommitFirstWordConfidenceLength];
-    memset(outputCodePoints, 0, sizeof(outputCodePoints));
-    memset(scores, 0, sizeof(scores));
-    memset(spaceIndices, 0, sizeof(spaceIndices));
-    memset(outputTypes, 0, sizeof(outputTypes));
-    memset(outputAutoCommitFirstWordConfidence, 0, sizeof(outputAutoCommitFirstWordConfidence));
-
-    int count;
-    if (givenSuggestOptions.isGesture() || inputSize > 0) {
-        count = dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates,
-                times, pointerIds, inputCodePoints, inputSize, prevWordCodePoints,
-                prevWordCodePointsLength, commitPoint, &givenSuggestOptions, outputCodePoints,
-                scores, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence);
-    } else {
-        count = dictionary->getBigrams(prevWordCodePoints, prevWordCodePointsLength,
-                outputCodePoints, scores, outputTypes);
+    if (outputAutoCommitFirstWordConfidenceLength != 1) {
+        // We only use the first result, as obviously we will only ever autocommit the first one
+        AKLOGE("Invalid outputAutoCommitFirstWordConfidenceLength: %d",
+                outputAutoCommitFirstWordConfidenceLength);
+        ASSERT(false);
+        return;
     }
-
-    // Copy back the output values
-    env->SetIntArrayRegion(outputCodePointsArray, 0, outputCodePointsLength, outputCodePoints);
-    env->SetIntArrayRegion(scoresArray, 0, scoresLength, scores);
-    env->SetIntArrayRegion(spaceIndicesArray, 0, spaceIndicesLength, spaceIndices);
-    env->SetIntArrayRegion(outputTypesArray, 0, outputTypesLength, outputTypes);
-    env->SetIntArrayRegion(outputAutoCommitFirstWordConfidenceArray, 0,
-            outputAutoCommitFirstWordConfidenceLength, outputAutoCommitFirstWordConfidence);
-
-    return count;
+    float languageWeight;
+    env->GetFloatArrayRegion(inOutLanguageWeight, 0, 1 /* len */, &languageWeight);
+    SuggestionResults suggestionResults(MAX_RESULTS);
+    const PrevWordsInfo prevWordsInfo = JniDataUtils::constructPrevWordsInfo(env,
+            prevWordCodePointArrays, isBeginningOfSentenceArray);
+    if (givenSuggestOptions.isGesture() || inputSize > 0) {
+        // TODO: Use SuggestionResults to return suggestions.
+        dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates,
+                times, pointerIds, inputCodePoints, inputSize, &prevWordsInfo,
+                &givenSuggestOptions, languageWeight, &suggestionResults);
+    } else {
+        dictionary->getPredictions(&prevWordsInfo, &suggestionResults);
+    }
+    suggestionResults.outputSuggestions(env, outSuggestionCount, outCodePointsArray,
+            outScoresArray, outSpaceIndicesArray, outTypesArray,
+            outAutoCommitFirstWordConfidenceArray, inOutLanguageWeight);
 }
 
 static jint latinime_BinaryDictionary_getProbability(JNIEnv *env, jclass clazz, jlong dict,
@@ -238,96 +264,246 @@
     return dictionary->getProbability(codePoints, wordLength);
 }
 
-static jint latinime_BinaryDictionary_getBigramProbability(JNIEnv *env, jclass clazz,
-        jlong dict, jintArray word0, jintArray word1) {
+static jint latinime_BinaryDictionary_getMaxProbabilityOfExactMatches(
+        JNIEnv *env, jclass clazz, jlong dict, jintArray word) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
-    if (!dictionary) return JNI_FALSE;
-    const jsize word0Length = env->GetArrayLength(word0);
-    const jsize word1Length = env->GetArrayLength(word1);
-    int word0CodePoints[word0Length];
-    int word1CodePoints[word1Length];
-    env->GetIntArrayRegion(word0, 0, word0Length, word0CodePoints);
-    env->GetIntArrayRegion(word1, 0, word1Length, word1CodePoints);
-    return dictionary->getBigramProbability(word0CodePoints, word0Length, word1CodePoints,
-            word1Length);
-}
-
-static jfloat latinime_BinaryDictionary_calcNormalizedScore(JNIEnv *env, jclass clazz,
-        jintArray before, jintArray after, jint score) {
-    jsize beforeLength = env->GetArrayLength(before);
-    jsize afterLength = env->GetArrayLength(after);
-    int beforeCodePoints[beforeLength];
-    int afterCodePoints[afterLength];
-    env->GetIntArrayRegion(before, 0, beforeLength, beforeCodePoints);
-    env->GetIntArrayRegion(after, 0, afterLength, afterCodePoints);
-    return AutocorrectionThresholdUtils::calcNormalizedScore(beforeCodePoints, beforeLength,
-            afterCodePoints, afterLength, score);
-}
-
-static jint latinime_BinaryDictionary_editDistance(JNIEnv *env, jclass clazz, jintArray before,
-        jintArray after) {
-    jsize beforeLength = env->GetArrayLength(before);
-    jsize afterLength = env->GetArrayLength(after);
-    int beforeCodePoints[beforeLength];
-    int afterCodePoints[afterLength];
-    env->GetIntArrayRegion(before, 0, beforeLength, beforeCodePoints);
-    env->GetIntArrayRegion(after, 0, afterLength, afterCodePoints);
-    return AutocorrectionThresholdUtils::editDistance(beforeCodePoints, beforeLength,
-            afterCodePoints, afterLength);
-}
-
-static void latinime_BinaryDictionary_addUnigramWord(JNIEnv *env, jclass clazz, jlong dict,
-        jintArray word, jint probability) {
-    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
-    if (!dictionary) {
-        return;
-    }
-    jsize wordLength = env->GetArrayLength(word);
+    if (!dictionary) return NOT_A_PROBABILITY;
+    const jsize wordLength = env->GetArrayLength(word);
     int codePoints[wordLength];
     env->GetIntArrayRegion(word, 0, wordLength, codePoints);
-    dictionary->addUnigramWord(codePoints, wordLength, probability);
+    return dictionary->getMaxProbabilityOfExactMatches(codePoints, wordLength);
 }
 
-static void latinime_BinaryDictionary_addBigramWords(JNIEnv *env, jclass clazz, jlong dict,
-        jintArray word0, jintArray word1, jint probability) {
+static jint latinime_BinaryDictionary_getNgramProbability(JNIEnv *env, jclass clazz,
+        jlong dict, jobjectArray prevWordCodePointArrays, jbooleanArray isBeginningOfSentenceArray,
+        jintArray word) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
-    if (!dictionary) {
+    if (!dictionary) return JNI_FALSE;
+    const jsize wordLength = env->GetArrayLength(word);
+    int wordCodePoints[wordLength];
+    env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints);
+    const PrevWordsInfo prevWordsInfo = JniDataUtils::constructPrevWordsInfo(env,
+            prevWordCodePointArrays, isBeginningOfSentenceArray);
+    return dictionary->getNgramProbability(&prevWordsInfo, wordCodePoints, wordLength);
+}
+
+// Method to iterate all words in the dictionary for makedict.
+// If token is 0, this method newly starts iterating the dictionary. This method returns 0 when
+// the dictionary does not have a next word.
+static jint latinime_BinaryDictionary_getNextWord(JNIEnv *env, jclass clazz,
+        jlong dict, jint token, jintArray outCodePoints, jbooleanArray outIsBeginningOfSentence) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) return 0;
+    const jsize codePointBufSize = env->GetArrayLength(outCodePoints);
+    if (codePointBufSize != MAX_WORD_LENGTH) {
+        AKLOGE("Invalid outCodePointsLength: %d", codePointBufSize);
+        ASSERT(false);
+        return 0;
+    }
+    int wordCodePoints[codePointBufSize];
+    int wordCodePointCount = 0;
+    const int nextToken = dictionary->getNextWordAndNextToken(token, wordCodePoints,
+            &wordCodePointCount);
+    JniDataUtils::outputCodePoints(env, outCodePoints, 0 /* start */,
+            MAX_WORD_LENGTH /* maxLength */, wordCodePoints, wordCodePointCount,
+            false /* needsNullTermination */);
+    bool isBeginningOfSentence = false;
+    if (wordCodePointCount > 0 && wordCodePoints[0] == CODE_POINT_BEGINNING_OF_SENTENCE) {
+        isBeginningOfSentence = true;
+    }
+    JniDataUtils::putBooleanToArray(env, outIsBeginningOfSentence, 0 /* index */,
+            isBeginningOfSentence);
+    return nextToken;
+}
+
+static void latinime_BinaryDictionary_getWordProperty(JNIEnv *env, jclass clazz,
+        jlong dict, jintArray word, jboolean isBeginningOfSentence, jintArray outCodePoints,
+        jbooleanArray outFlags, jintArray outProbabilityInfo, jobject outBigramTargets,
+        jobject outBigramProbabilityInfo, jobject outShortcutTargets,
+        jobject outShortcutProbabilities) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) return;
+    const jsize wordLength = env->GetArrayLength(word);
+    if (wordLength > MAX_WORD_LENGTH) {
+        AKLOGE("Invalid wordLength: %d", wordLength);
         return;
     }
-    jsize word0Length = env->GetArrayLength(word0);
-    int word0CodePoints[word0Length];
-    env->GetIntArrayRegion(word0, 0, word0Length, word0CodePoints);
-    jsize word1Length = env->GetArrayLength(word1);
-    int word1CodePoints[word1Length];
-    env->GetIntArrayRegion(word1, 0, word1Length, word1CodePoints);
-    dictionary->addBigramWords(word0CodePoints, word0Length, word1CodePoints,
-            word1Length, probability);
+    int wordCodePoints[MAX_WORD_LENGTH];
+    env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints);
+    int codePointCount = wordLength;
+    if (isBeginningOfSentence) {
+        codePointCount = CharUtils::attachBeginningOfSentenceMarker(
+                wordCodePoints, wordLength, MAX_WORD_LENGTH);
+        if (codePointCount < 0) {
+            AKLOGE("Cannot attach Beginning-of-Sentence marker.");
+            return;
+        }
+    }
+    const WordProperty wordProperty = dictionary->getWordProperty(wordCodePoints, codePointCount);
+    wordProperty.outputProperties(env, outCodePoints, outFlags, outProbabilityInfo,
+            outBigramTargets, outBigramProbabilityInfo, outShortcutTargets,
+            outShortcutProbabilities);
 }
 
-static void latinime_BinaryDictionary_removeBigramWords(JNIEnv *env, jclass clazz, jlong dict,
-        jintArray word0, jintArray word1) {
+static bool latinime_BinaryDictionary_addUnigramEntry(JNIEnv *env, jclass clazz, jlong dict,
+        jintArray word, jint probability, jintArray shortcutTarget, jint shortcutProbability,
+        jboolean isBeginningOfSentence, jboolean isNotAWord, jboolean isBlacklisted,
+        jint timestamp) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
     if (!dictionary) {
-        return;
+        return false;
     }
-    jsize word0Length = env->GetArrayLength(word0);
-    int word0CodePoints[word0Length];
-    env->GetIntArrayRegion(word0, 0, word0Length, word0CodePoints);
-    jsize word1Length = env->GetArrayLength(word1);
-    int word1CodePoints[word1Length];
-    env->GetIntArrayRegion(word1, 0, word1Length, word1CodePoints);
-    dictionary->removeBigramWords(word0CodePoints, word0Length, word1CodePoints,
-            word1Length);
+    jsize codePointCount = env->GetArrayLength(word);
+    int codePoints[codePointCount];
+    env->GetIntArrayRegion(word, 0, codePointCount, codePoints);
+    std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+    std::vector<int> shortcutTargetCodePoints;
+    JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints);
+    if (!shortcutTargetCodePoints.empty()) {
+        shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
+    }
+    // Use 1 for count to indicate the word has inputted.
+    const UnigramProperty unigramProperty(isBeginningOfSentence, isNotAWord,
+            isBlacklisted, probability, timestamp, 0 /* level */, 1 /* count */, &shortcuts);
+    return dictionary->addUnigramEntry(codePoints, codePointCount, &unigramProperty);
 }
 
-static int latinime_BinaryDictionary_calculateProbabilityNative(JNIEnv *env, jclass clazz,
-        jlong dict, jint unigramProbability, jint bigramProbability) {
+static bool latinime_BinaryDictionary_removeUnigramEntry(JNIEnv *env, jclass clazz, jlong dict,
+        jintArray word) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
     if (!dictionary) {
-        return NOT_A_PROBABILITY;
+        return false;
     }
-    return dictionary->getDictionaryStructurePolicy()->getProbability(unigramProbability,
-            bigramProbability);
+    jsize codePointCount = env->GetArrayLength(word);
+    int codePoints[codePointCount];
+    env->GetIntArrayRegion(word, 0, codePointCount, codePoints);
+    return dictionary->removeUnigramEntry(codePoints, codePointCount);
+}
+
+static bool latinime_BinaryDictionary_addNgramEntry(JNIEnv *env, jclass clazz, jlong dict,
+        jobjectArray prevWordCodePointArrays, jbooleanArray isBeginningOfSentenceArray,
+        jintArray word, jint probability, jint timestamp) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) {
+        return false;
+    }
+    const PrevWordsInfo prevWordsInfo = JniDataUtils::constructPrevWordsInfo(env,
+            prevWordCodePointArrays, isBeginningOfSentenceArray);
+    jsize wordLength = env->GetArrayLength(word);
+    int wordCodePoints[wordLength];
+    env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints);
+    const std::vector<int> bigramTargetCodePoints(
+            wordCodePoints, wordCodePoints + wordLength);
+    // Use 1 for count to indicate the bigram has inputted.
+    const BigramProperty bigramProperty(&bigramTargetCodePoints, probability,
+            timestamp, 0 /* level */, 1 /* count */);
+    return dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty);
+}
+
+static bool latinime_BinaryDictionary_removeNgramEntry(JNIEnv *env, jclass clazz, jlong dict,
+        jobjectArray prevWordCodePointArrays, jbooleanArray isBeginningOfSentenceArray,
+        jintArray word) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) {
+        return false;
+    }
+    const PrevWordsInfo prevWordsInfo = JniDataUtils::constructPrevWordsInfo(env,
+            prevWordCodePointArrays, isBeginningOfSentenceArray);
+    jsize wordLength = env->GetArrayLength(word);
+    int wordCodePoints[wordLength];
+    env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints);
+    return dictionary->removeNgramEntry(&prevWordsInfo, wordCodePoints, wordLength);
+}
+
+// Returns how many language model params are processed.
+static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, jclass clazz,
+        jlong dict, jobjectArray languageModelParams, jint startIndex) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) {
+        return 0;
+    }
+    jsize languageModelParamCount = env->GetArrayLength(languageModelParams);
+    if (languageModelParamCount == 0 || startIndex >= languageModelParamCount) {
+        return 0;
+    }
+    jobject languageModelParam = env->GetObjectArrayElement(languageModelParams, 0);
+    jclass languageModelParamClass = env->GetObjectClass(languageModelParam);
+    env->DeleteLocalRef(languageModelParam);
+
+    jfieldID word0FieldId = env->GetFieldID(languageModelParamClass, "mWord0", "[I");
+    jfieldID word1FieldId = env->GetFieldID(languageModelParamClass, "mWord1", "[I");
+    jfieldID unigramProbabilityFieldId =
+            env->GetFieldID(languageModelParamClass, "mUnigramProbability", "I");
+    jfieldID bigramProbabilityFieldId =
+            env->GetFieldID(languageModelParamClass, "mBigramProbability", "I");
+    jfieldID timestampFieldId =
+            env->GetFieldID(languageModelParamClass, "mTimestamp", "I");
+    jfieldID shortcutTargetFieldId =
+            env->GetFieldID(languageModelParamClass, "mShortcutTarget", "[I");
+    jfieldID shortcutProbabilityFieldId =
+            env->GetFieldID(languageModelParamClass, "mShortcutProbability", "I");
+    jfieldID isNotAWordFieldId =
+            env->GetFieldID(languageModelParamClass, "mIsNotAWord", "Z");
+    jfieldID isBlacklistedFieldId =
+            env->GetFieldID(languageModelParamClass, "mIsBlacklisted", "Z");
+    env->DeleteLocalRef(languageModelParamClass);
+
+    for (int i = startIndex; i < languageModelParamCount; ++i) {
+        jobject languageModelParam = env->GetObjectArrayElement(languageModelParams, i);
+        // languageModelParam is a set of params for word1; thus, word1 cannot be null. On the
+        // other hand, word0 can be null and then it means the set of params doesn't contain bigram
+        // information.
+        jintArray word0 = static_cast<jintArray>(
+                env->GetObjectField(languageModelParam, word0FieldId));
+        jsize word0Length = word0 ? env->GetArrayLength(word0) : 0;
+        int word0CodePoints[word0Length];
+        if (word0) {
+            env->GetIntArrayRegion(word0, 0, word0Length, word0CodePoints);
+        }
+        jintArray word1 = static_cast<jintArray>(
+                env->GetObjectField(languageModelParam, word1FieldId));
+        jsize word1Length = env->GetArrayLength(word1);
+        int word1CodePoints[word1Length];
+        env->GetIntArrayRegion(word1, 0, word1Length, word1CodePoints);
+        jint unigramProbability = env->GetIntField(languageModelParam, unigramProbabilityFieldId);
+        jint timestamp = env->GetIntField(languageModelParam, timestampFieldId);
+        jboolean isNotAWord = env->GetBooleanField(languageModelParam, isNotAWordFieldId);
+        jboolean isBlacklisted = env->GetBooleanField(languageModelParam, isBlacklistedFieldId);
+        jintArray shortcutTarget = static_cast<jintArray>(
+                env->GetObjectField(languageModelParam, shortcutTargetFieldId));
+        std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+        std::vector<int> shortcutTargetCodePoints;
+        JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints);
+        if (!shortcutTargetCodePoints.empty()) {
+            jint shortcutProbability =
+                    env->GetIntField(languageModelParam, shortcutProbabilityFieldId);
+            shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
+        }
+        // Use 1 for count to indicate the word has inputted.
+        const UnigramProperty unigramProperty(false /* isBeginningOfSentence */, isNotAWord,
+                isBlacklisted, unigramProbability, timestamp, 0 /* level */, 1 /* count */,
+                &shortcuts);
+        dictionary->addUnigramEntry(word1CodePoints, word1Length, &unigramProperty);
+        if (word0) {
+            jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId);
+            const std::vector<int> bigramTargetCodePoints(
+                    word1CodePoints, word1CodePoints + word1Length);
+            // Use 1 for count to indicate the bigram has inputted.
+            const BigramProperty bigramProperty(&bigramTargetCodePoints, bigramProbability,
+                    timestamp, 0 /* level */, 1 /* count */);
+            const PrevWordsInfo prevWordsInfo(word0CodePoints, word0Length,
+                    false /* isBeginningOfSentence */);
+            dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty);
+        }
+        if (dictionary->needsToRunGC(true /* mindsBlockByGC */)) {
+            return i + 1;
+        }
+        env->DeleteLocalRef(word0);
+        env->DeleteLocalRef(word1);
+        env->DeleteLocalRef(shortcutTarget);
+        env->DeleteLocalRef(languageModelParam);
+    }
+    return languageModelParamCount;
 }
 
 static jstring latinime_BinaryDictionary_getProperty(JNIEnv *env, jclass clazz, jlong dict,
@@ -343,29 +519,132 @@
     static const int GET_PROPERTY_RESULT_LENGTH = 100;
     char resultChars[GET_PROPERTY_RESULT_LENGTH];
     resultChars[0] = '\0';
-    dictionary->getProperty(queryChars, resultChars, GET_PROPERTY_RESULT_LENGTH);
+    dictionary->getProperty(queryChars, queryUtf8Length, resultChars, GET_PROPERTY_RESULT_LENGTH);
     return env->NewStringUTF(resultChars);
 }
 
+static bool latinime_BinaryDictionary_isCorruptedNative(JNIEnv *env, jclass clazz, jlong dict) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) {
+        return false;
+    }
+    return dictionary->getDictionaryStructurePolicy()->isCorrupted();
+}
+
+static DictionaryStructureWithBufferPolicy::StructurePolicyPtr runGCAndGetNewStructurePolicy(
+        DictionaryStructureWithBufferPolicy::StructurePolicyPtr structurePolicy,
+        const char *const dictFilePath) {
+    structurePolicy->flushWithGC(dictFilePath);
+    structurePolicy.release();
+    return DictionaryStructureWithBufferPolicyFactory::newPolicyForExistingDictFile(
+            dictFilePath, 0 /* offset */, 0 /* size */, true /* isUpdatable */);
+}
+
+static bool latinime_BinaryDictionary_migrateNative(JNIEnv *env, jclass clazz, jlong dict,
+        jstring dictFilePath, jlong newFormatVersion) {
+    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
+    if (!dictionary) {
+        return false;
+    }
+    const jsize filePathUtf8Length = env->GetStringUTFLength(dictFilePath);
+    char dictFilePathChars[filePathUtf8Length + 1];
+    env->GetStringUTFRegion(dictFilePath, 0, env->GetStringLength(dictFilePath), dictFilePathChars);
+    dictFilePathChars[filePathUtf8Length] = '\0';
+
+    const DictionaryHeaderStructurePolicy *const headerPolicy =
+            dictionary->getDictionaryStructurePolicy()->getHeaderStructurePolicy();
+    DictionaryStructureWithBufferPolicy::StructurePolicyPtr dictionaryStructureWithBufferPolicy =
+            DictionaryStructureWithBufferPolicyFactory::newPolicyForOnMemoryDict(
+                    newFormatVersion, *headerPolicy->getLocale(), headerPolicy->getAttributeMap());
+    if (!dictionaryStructureWithBufferPolicy) {
+        LogUtils::logToJava(env, "Cannot migrate header.");
+        return false;
+    }
+
+    int wordCodePoints[MAX_WORD_LENGTH];
+    int wordCodePointCount = 0;
+    int token = 0;
+    // Add unigrams.
+    do {
+        token = dictionary->getNextWordAndNextToken(token, wordCodePoints, &wordCodePointCount);
+        const WordProperty wordProperty = dictionary->getWordProperty(wordCodePoints,
+                wordCodePointCount);
+        if (wordCodePoints[0] == CODE_POINT_BEGINNING_OF_SENTENCE) {
+            // Skip beginning-of-sentence unigram.
+            continue;
+        }
+        if (dictionaryStructureWithBufferPolicy->needsToRunGC(true /* mindsBlockByGC */)) {
+            dictionaryStructureWithBufferPolicy = runGCAndGetNewStructurePolicy(
+                    std::move(dictionaryStructureWithBufferPolicy), dictFilePathChars);
+            if (!dictionaryStructureWithBufferPolicy) {
+                LogUtils::logToJava(env, "Cannot open dict after GC.");
+                return false;
+            }
+        }
+        if (!dictionaryStructureWithBufferPolicy->addUnigramEntry(wordCodePoints,
+                wordCodePointCount, wordProperty.getUnigramProperty())) {
+            LogUtils::logToJava(env, "Cannot add unigram to the new dict.");
+            return false;
+        }
+    } while (token != 0);
+
+    // Add bigrams.
+    do {
+        token = dictionary->getNextWordAndNextToken(token, wordCodePoints, &wordCodePointCount);
+        const WordProperty wordProperty = dictionary->getWordProperty(wordCodePoints,
+                wordCodePointCount);
+        if (dictionaryStructureWithBufferPolicy->needsToRunGC(true /* mindsBlockByGC */)) {
+            dictionaryStructureWithBufferPolicy = runGCAndGetNewStructurePolicy(
+                    std::move(dictionaryStructureWithBufferPolicy), dictFilePathChars);
+            if (!dictionaryStructureWithBufferPolicy) {
+                LogUtils::logToJava(env, "Cannot open dict after GC.");
+                return false;
+            }
+        }
+        const PrevWordsInfo prevWordsInfo(wordCodePoints, wordCodePointCount,
+                wordProperty.getUnigramProperty()->representsBeginningOfSentence());
+        for (const BigramProperty &bigramProperty : *wordProperty.getBigramProperties()) {
+            if (!dictionaryStructureWithBufferPolicy->addNgramEntry(&prevWordsInfo,
+                    &bigramProperty)) {
+                LogUtils::logToJava(env, "Cannot add bigram to the new dict.");
+                return false;
+            }
+        }
+    } while (token != 0);
+    // Save to File.
+    dictionaryStructureWithBufferPolicy->flushWithGC(dictFilePathChars);
+    return true;
+}
+
 static const JNINativeMethod sMethods[] = {
     {
-        const_cast<char *>("createEmptyDictFileNative"),
-        const_cast<char *>("(Ljava/lang/String;J[Ljava/lang/String;[Ljava/lang/String;)Z"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_createEmptyDictFile)
-    },
-    {
         const_cast<char *>("openNative"),
         const_cast<char *>("(Ljava/lang/String;JJZ)J"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_open)
     },
     {
+        const_cast<char *>("createOnMemoryNative"),
+        const_cast<char *>("(JLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)J"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_createOnMemory)
+    },
+    {
         const_cast<char *>("closeNative"),
         const_cast<char *>("(J)V"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_close)
     },
     {
+        const_cast<char *>("getFormatVersionNative"),
+        const_cast<char *>("(J)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_getFormatVersion)
+    },
+    {
+        const_cast<char *>("getHeaderInfoNative"),
+        const_cast<char *>("(J[I[ILjava/util/ArrayList;Ljava/util/ArrayList;)V"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_getHeaderInfo)
+    },
+    {
         const_cast<char *>("flushNative"),
-        const_cast<char *>("(JLjava/lang/String;)V"),
+        const_cast<char *>("(JLjava/lang/String;)Z"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_flush)
     },
     {
@@ -375,12 +654,12 @@
     },
     {
         const_cast<char *>("flushWithGCNative"),
-        const_cast<char *>("(JLjava/lang/String;)V"),
+        const_cast<char *>("(JLjava/lang/String;)Z"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_flushWithGC)
     },
     {
         const_cast<char *>("getSuggestionsNative"),
-        const_cast<char *>("(JJJ[I[I[I[I[III[I[I[I[I[I[I[I)I"),
+        const_cast<char *>("(JJJ[I[I[I[I[II[I[[I[Z[I[I[I[I[I[I[F)V"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_getSuggestions)
     },
     {
@@ -389,44 +668,66 @@
         reinterpret_cast<void *>(latinime_BinaryDictionary_getProbability)
     },
     {
-        const_cast<char *>("getBigramProbabilityNative"),
-        const_cast<char *>("(J[I[I)I"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_getBigramProbability)
+        const_cast<char *>("getMaxProbabilityOfExactMatchesNative"),
+        const_cast<char *>("(J[I)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_getMaxProbabilityOfExactMatches)
     },
     {
-        const_cast<char *>("calcNormalizedScoreNative"),
-        const_cast<char *>("([I[II)F"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_calcNormalizedScore)
+        const_cast<char *>("getNgramProbabilityNative"),
+        const_cast<char *>("(J[[I[Z[I)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_getNgramProbability)
     },
     {
-        const_cast<char *>("editDistanceNative"),
-        const_cast<char *>("([I[I)I"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_editDistance)
+        const_cast<char *>("getWordPropertyNative"),
+        const_cast<char *>("(J[IZ[I[Z[ILjava/util/ArrayList;Ljava/util/ArrayList;"
+                "Ljava/util/ArrayList;Ljava/util/ArrayList;)V"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_getWordProperty)
     },
     {
-        const_cast<char *>("addUnigramWordNative"),
-        const_cast<char *>("(J[II)V"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_addUnigramWord)
+        const_cast<char *>("getNextWordNative"),
+        const_cast<char *>("(JI[I[Z)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_getNextWord)
     },
     {
-        const_cast<char *>("addBigramWordsNative"),
-        const_cast<char *>("(J[I[II)V"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_addBigramWords)
+        const_cast<char *>("addUnigramEntryNative"),
+        const_cast<char *>("(J[II[IIZZZI)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_addUnigramEntry)
     },
     {
-        const_cast<char *>("removeBigramWordsNative"),
-        const_cast<char *>("(J[I[I)V"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_removeBigramWords)
+        const_cast<char *>("removeUnigramEntryNative"),
+        const_cast<char *>("(J[I)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_removeUnigramEntry)
     },
     {
-        const_cast<char *>("calculateProbabilityNative"),
-        const_cast<char *>("(JII)I"),
-        reinterpret_cast<void *>(latinime_BinaryDictionary_calculateProbabilityNative)
+        const_cast<char *>("addNgramEntryNative"),
+        const_cast<char *>("(J[[I[Z[III)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_addNgramEntry)
+    },
+    {
+        const_cast<char *>("removeNgramEntryNative"),
+        const_cast<char *>("(J[[I[Z[I)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_removeNgramEntry)
+    },
+    {
+        const_cast<char *>("addMultipleDictionaryEntriesNative"),
+        const_cast<char *>(
+                "(J[Lcom/android/inputmethod/latin/utils/LanguageModelParam;I)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_addMultipleDictionaryEntries)
     },
     {
         const_cast<char *>("getPropertyNative"),
         const_cast<char *>("(JLjava/lang/String;)Ljava/lang/String;"),
         reinterpret_cast<void *>(latinime_BinaryDictionary_getProperty)
+    },
+    {
+        const_cast<char *>("isCorruptedNative"),
+        const_cast<char *>("(J)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_isCorruptedNative)
+    },
+    {
+        const_cast<char *>("migrateNative"),
+        const_cast<char *>("(JLjava/lang/String;J)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionary_migrateNative)
     }
 };
 
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionaryUtils.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionaryUtils.cpp
new file mode 100644
index 0000000..0a34b78
--- /dev/null
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionaryUtils.cpp
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "LatinIME: jni: BinaryDictionaryUtils"
+
+#include "com_android_inputmethod_latin_BinaryDictionaryUtils.h"
+
+#include "defines.h"
+#include "jni.h"
+#include "jni_common.h"
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+#include "utils/autocorrection_threshold_utils.h"
+#include "utils/char_utils.h"
+#include "utils/jni_data_utils.h"
+#include "utils/time_keeper.h"
+
+namespace latinime {
+
+static jboolean latinime_BinaryDictionaryUtils_createEmptyDictFile(JNIEnv *env, jclass clazz,
+        jstring filePath, jlong dictVersion, jstring locale, jobjectArray attributeKeyStringArray,
+        jobjectArray attributeValueStringArray) {
+    const jsize filePathUtf8Length = env->GetStringUTFLength(filePath);
+    char filePathChars[filePathUtf8Length + 1];
+    env->GetStringUTFRegion(filePath, 0, env->GetStringLength(filePath), filePathChars);
+    filePathChars[filePathUtf8Length] = '\0';
+
+    const jsize localeUtf8Length = env->GetStringUTFLength(locale);
+    char localeChars[localeUtf8Length + 1];
+    env->GetStringUTFRegion(locale, 0, env->GetStringLength(locale), localeChars);
+    localeChars[localeUtf8Length] = '\0';
+    std::vector<int> localeCodePoints;
+    HeaderReadWriteUtils::insertCharactersIntoVector(localeChars, &localeCodePoints);
+
+    const int keyCount = env->GetArrayLength(attributeKeyStringArray);
+    const int valueCount = env->GetArrayLength(attributeValueStringArray);
+    if (keyCount != valueCount) {
+        return false;
+    }
+    DictionaryHeaderStructurePolicy::AttributeMap attributeMap =
+            JniDataUtils::constructAttributeMap(env, attributeKeyStringArray,
+                    attributeValueStringArray);
+    return DictFileWritingUtils::createEmptyDictFile(filePathChars, static_cast<int>(dictVersion),
+            localeCodePoints, &attributeMap);
+}
+
+static jfloat latinime_BinaryDictionaryUtils_calcNormalizedScore(JNIEnv *env, jclass clazz,
+        jintArray before, jintArray after, jint score) {
+    jsize beforeLength = env->GetArrayLength(before);
+    jsize afterLength = env->GetArrayLength(after);
+    int beforeCodePoints[beforeLength];
+    int afterCodePoints[afterLength];
+    env->GetIntArrayRegion(before, 0, beforeLength, beforeCodePoints);
+    env->GetIntArrayRegion(after, 0, afterLength, afterCodePoints);
+    return AutocorrectionThresholdUtils::calcNormalizedScore(beforeCodePoints, beforeLength,
+            afterCodePoints, afterLength, score);
+}
+
+static jint latinime_BinaryDictionaryUtils_editDistance(JNIEnv *env, jclass clazz, jintArray before,
+        jintArray after) {
+    jsize beforeLength = env->GetArrayLength(before);
+    jsize afterLength = env->GetArrayLength(after);
+    int beforeCodePoints[beforeLength];
+    int afterCodePoints[afterLength];
+    env->GetIntArrayRegion(before, 0, beforeLength, beforeCodePoints);
+    env->GetIntArrayRegion(after, 0, afterLength, afterCodePoints);
+    return AutocorrectionThresholdUtils::editDistance(beforeCodePoints, beforeLength,
+            afterCodePoints, afterLength);
+}
+
+static int latinime_BinaryDictionaryUtils_setCurrentTimeForTest(JNIEnv *env, jclass clazz,
+        jint currentTime) {
+    if (currentTime >= 0) {
+        TimeKeeper::startTestModeWithForceCurrentTime(currentTime);
+    } else {
+        TimeKeeper::stopTestMode();
+    }
+    TimeKeeper::setCurrentTime();
+    return TimeKeeper::peekCurrentTime();
+}
+
+static const JNINativeMethod sMethods[] = {
+    {
+        const_cast<char *>("createEmptyDictFileNative"),
+        const_cast<char *>(
+                "(Ljava/lang/String;JLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)Z"),
+        reinterpret_cast<void *>(latinime_BinaryDictionaryUtils_createEmptyDictFile)
+    },
+    {
+        const_cast<char *>("calcNormalizedScoreNative"),
+        const_cast<char *>("([I[II)F"),
+        reinterpret_cast<void *>(latinime_BinaryDictionaryUtils_calcNormalizedScore)
+    },
+    {
+        const_cast<char *>("editDistanceNative"),
+        const_cast<char *>("([I[I)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionaryUtils_editDistance)
+    },
+    {
+        const_cast<char *>("setCurrentTimeForTestNative"),
+        const_cast<char *>("(I)I"),
+        reinterpret_cast<void *>(latinime_BinaryDictionaryUtils_setCurrentTimeForTest)
+    }
+};
+
+int register_BinaryDictionaryUtils(JNIEnv *env) {
+    const char *const kClassPathName = "com/android/inputmethod/latin/utils/BinaryDictionaryUtils";
+    return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
+}
+} // namespace latinime
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionaryUtils.h b/native/jni/com_android_inputmethod_latin_BinaryDictionaryUtils.h
new file mode 100644
index 0000000..38edcd2
--- /dev/null
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionaryUtils.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _COM_ANDROID_INPUTMETHOD_LATIN_BINARYDICTIONARYUTILS_H
+#define _COM_ANDROID_INPUTMETHOD_LATIN_BINARYDICTIONARYUTILS_H
+
+#include "jni.h"
+
+namespace latinime {
+int register_BinaryDictionaryUtils(JNIEnv *env);
+} // namespace latinime
+#endif // _COM_ANDROID_INPUTMETHOD_LATIN_BINARYDICTIONARYUTILS_H
diff --git a/native/jni/com_android_inputmethod_latin_DicTraverseSession.cpp b/native/jni/com_android_inputmethod_latin_DicTraverseSession.cpp
index 3866433..7660641 100644
--- a/native/jni/com_android_inputmethod_latin_DicTraverseSession.cpp
+++ b/native/jni/com_android_inputmethod_latin_DicTraverseSession.cpp
@@ -22,6 +22,7 @@
 #include "jni.h"
 #include "jni_common.h"
 #include "suggest/core/session/dic_traverse_session.h"
+#include "suggest/core/session/prev_words_info.h"
 
 namespace latinime {
 class Dictionary;
@@ -34,16 +35,19 @@
 static void latinime_initDicTraverseSession(JNIEnv *env, jclass clazz, jlong traverseSession,
         jlong dictionary, jintArray previousWord, jint previousWordLength) {
     DicTraverseSession *ts = reinterpret_cast<DicTraverseSession *>(traverseSession);
+    if (!ts) {
+        return;
+    }
     Dictionary *dict = reinterpret_cast<Dictionary *>(dictionary);
     if (!previousWord) {
-        DicTraverseSession::initSessionInstance(
-                ts, dict, 0 /* prevWord */, 0 /* prevWordLength*/, 0 /* suggestOptions */);
+        PrevWordsInfo prevWordsInfo;
+        ts->init(dict, &prevWordsInfo, 0 /* suggestOptions */);
         return;
     }
     int prevWord[previousWordLength];
     env->GetIntArrayRegion(previousWord, 0, previousWordLength, prevWord);
-    DicTraverseSession::initSessionInstance(
-            ts, dict, prevWord, previousWordLength, 0 /* suggestOptions */);
+    PrevWordsInfo prevWordsInfo(prevWord, previousWordLength, false /* isStartOfSentence */);
+    ts->init(dict, &prevWordsInfo, 0 /* suggestOptions */);
 }
 
 static void latinime_releaseDicTraverseSession(JNIEnv *env, jclass clazz, jlong traverseSession) {
diff --git a/native/jni/com_android_inputmethod_latin_makedict_Ver3DictDecoder.cpp b/native/jni/com_android_inputmethod_latin_makedict_Ver3DictDecoder.cpp
deleted file mode 100644
index 15088b6..0000000
--- a/native/jni/com_android_inputmethod_latin_makedict_Ver3DictDecoder.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LatinIME: jni: Ver3DictDecoder"
-
-#include "com_android_inputmethod_latin_makedict_Ver3DictDecoder.h"
-
-#include "defines.h"
-#include "jni.h"
-#include "jni_common.h"
-
-namespace latinime {
-static int latinime_Ver3DictDecoder_doNothing(JNIEnv *env, jclass clazz) {
-    // This is a phony method for test - it does nothing. It just returns some value
-    // unlikely to be in memory by chance for testing purposes.
-    // TODO: remove this method.
-    return 2097;
-}
-
-static const JNINativeMethod sMethods[] = {
-    {
-        // TODO: remove this entry when we have one useful method in here
-        const_cast<char *>("doNothing"),
-        const_cast<char *>("()I"),
-        reinterpret_cast<void *>(latinime_Ver3DictDecoder_doNothing)
-    },
-};
-
-int register_Ver3DictDecoder(JNIEnv *env) {
-    const char *const kClassPathName =
-            "com/android/inputmethod/latin/makedict/Ver3DictDecoder";
-    return registerNativeMethods(env, kClassPathName, sMethods, NELEMS(sMethods));
-}
-} // namespace latinime
diff --git a/native/jni/com_android_inputmethod_latin_makedict_Ver3DictDecoder.h b/native/jni/com_android_inputmethod_latin_makedict_Ver3DictDecoder.h
deleted file mode 100644
index 07e80f1..0000000
--- a/native/jni/com_android_inputmethod_latin_makedict_Ver3DictDecoder.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _COM_ANDROID_INPUTMETHOD_LATIN_MAKEDICT_VER3DICTDECODER_H
-#define _COM_ANDROID_INPUTMETHOD_LATIN_MAKEDICT_VER3DICTDECODER_H
-
-#include "jni.h"
-
-namespace latinime {
-int register_Ver3DictDecoder(JNIEnv *env);
-} // namespace latinime
-#endif // _COM_ANDROID_INPUTMETHOD_LATIN_MAKEDICT_VER3DICTDECODER_H
diff --git a/native/jni/jni_common.cpp b/native/jni/jni_common.cpp
index 3a8f436..ce5e30c 100644
--- a/native/jni/jni_common.cpp
+++ b/native/jni/jni_common.cpp
@@ -18,12 +18,10 @@
 
 #include "jni_common.h"
 
-#ifndef HOST_TOOL
 #include "com_android_inputmethod_keyboard_ProximityInfo.h"
 #include "com_android_inputmethod_latin_BinaryDictionary.h"
+#include "com_android_inputmethod_latin_BinaryDictionaryUtils.h"
 #include "com_android_inputmethod_latin_DicTraverseSession.h"
-#endif
-#include "com_android_inputmethod_latin_makedict_Ver3DictDecoder.h"
 #include "defines.h"
 
 /*
@@ -41,11 +39,14 @@
         AKLOGE("ERROR: JNIEnv is invalid");
         return -1;
     }
-#ifndef HOST_TOOL
     if (!latinime::register_BinaryDictionary(env)) {
         AKLOGE("ERROR: BinaryDictionary native registration failed");
         return -1;
     }
+    if (!latinime::register_BinaryDictionaryUtils(env)) {
+        AKLOGE("ERROR: BinaryDictionaryUtils native registration failed");
+        return -1;
+    }
     if (!latinime::register_DicTraverseSession(env)) {
         AKLOGE("ERROR: DicTraverseSession native registration failed");
         return -1;
@@ -54,11 +55,6 @@
         AKLOGE("ERROR: ProximityInfo native registration failed");
         return -1;
     }
-#endif
-    if (!latinime::register_Ver3DictDecoder(env)) {
-        AKLOGE("ERROR: Ver3DictDecoder native registration failed");
-        return -1;
-    }
     /* success -- return valid version number */
     return JNI_VERSION_1_6;
 }
@@ -71,7 +67,7 @@
         AKLOGE("Native registration unable to find class '%s'", className);
         return JNI_FALSE;
     }
-    if (env->RegisterNatives(clazz, methods, numMethods) < 0) {
+    if (env->RegisterNatives(clazz, methods, numMethods) != 0) {
         AKLOGE("RegisterNatives failed for '%s'", className);
         env->DeleteLocalRef(clazz);
         return JNI_FALSE;
diff --git a/native/jni/run-tests.sh b/native/jni/run-tests.sh
new file mode 100755
index 0000000..3da4527
--- /dev/null
+++ b/native/jni/run-tests.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Copyright 2014, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+function usage() {
+    echo "usage: source run-tests.sh [--host] [--target] [-h] [--help]"  1>&2
+    echo "    --host: run test on the host environment"  1>&2
+    echo "    --no-host: skip host test"  1>&2
+    echo "    --target: run test on the target environment"  1>&2
+    echo "    --no-target: skip target device test"  1>&2
+}
+
+# check script arguments
+if [[ $(type -t mmm) != function ]]; then
+usage
+if [[ ${BASH_SOURCE[0]} != $0 ]]; then return; else exit 1; fi
+fi
+
+show_usage=no
+enable_host_test=yes
+enable_target_device_test=no
+while [ "$1" != "" ]
+  do
+  case "$1" in
+    "-h") show_usage=yes;;
+    "--help") show_usage=yes;;
+    "--target") enable_target_device_test=yes;;
+    "--no-target") enable_target_device_test=no;;
+    "--host") enable_host_test=yes;;
+    "--no-host") enable_host_test=no;;
+  esac
+  shift
+done
+
+if [[ $show_usage == yes ]]; then
+  usage
+  if [[ ${BASH_SOURCE[0]} != $0 ]]; then return; else exit 1; fi
+fi
+
+target_test_name=liblatinime_target_unittests
+host_test_name=liblatinime_host_unittests
+
+pushd $PWD > /dev/null
+cd $(gettop)
+mmm -j16 packages/inputmethods/LatinIME/native/jni || \
+    make -j16 adb $target_test_name $host_test_name
+if [[ $enable_host_test == yes ]]; then
+  $ANDROID_HOST_OUT/bin/$host_test_name
+fi
+if [[ $enable_target_device_test == yes ]]; then
+  target_test_local=$ANDROID_PRODUCT_OUT/data/nativetest/$target_test_name/$target_test_name
+  target_test_device=/data/nativetest/$target_test_name/$target_test_name
+  adb push $target_test_local $target_test_device
+  adb shell $target_test_device
+  adb shell rm -rf $target_test_device
+fi
+popd > /dev/null
diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h
index 742e388..24d04e5 100644
--- a/native/jni/src/defines.h
+++ b/native/jni/src/defines.h
@@ -35,7 +35,13 @@
 // Must be equal to ProximityInfo.MAX_PROXIMITY_CHARS_SIZE in Java
 #define MAX_PROXIMITY_CHARS_SIZE 16
 #define ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE 2
-#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
+
+// TODO: Use size_t instead of int.
+// Disclaimer: You will see a compile error if you use this macro against a variable-length array.
+// Sorry for the inconvenience. It isn't supported.
+template <typename T, int N>
+char (&ArraySizeHelper(T (&array)[N]))[N];
+#define NELEMS(x) (sizeof(ArraySizeHelper(x)))
 
 AK_FORCE_INLINE static int intArrayToCharArray(const int *const source, const int sourceSize,
         char *dest, const int destSize) {
@@ -87,14 +93,24 @@
 }
 
 #if defined(FLAG_DO_PROFILE) || defined(FLAG_DBG)
+#if defined(__ANDROID__)
 #include <android/log.h>
+#endif // defined(__ANDROID__)
 #ifndef LOG_TAG
 #define LOG_TAG "LatinIME: "
 #endif // LOG_TAG
+
+#if defined(HOST_TOOL)
+#include <stdio.h>
+#define AKLOGE(fmt, ...) printf(fmt "\n", ##__VA_ARGS__)
+#define AKLOGI(fmt, ...) printf(fmt "\n", ##__VA_ARGS__)
+#else // defined(HOST_TOOL)
 #define AKLOGE(fmt, ...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, fmt, ##__VA_ARGS__)
 #define AKLOGI(fmt, ...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, fmt, ##__VA_ARGS__)
+#endif // defined(HOST_TOOL)
 
-#define DUMP_RESULT(words, frequencies) do { dumpResult(words, frequencies); } while (0)
+#define DUMP_SUGGESTION(words, frequencies, index, score) \
+        do { dumpWordInfo(words, frequencies, index, score); } while (0)
 #define DUMP_WORD(word, length) do { dumpWord(word, length); } while (0)
 #define INTS_TO_CHARS(input, length, output, outlength) do { \
         intArrayToCharArray(input, length, output, outlength); } while (0)
@@ -108,14 +124,6 @@
     }
 }
 
-static inline void dumpResult(const int *outWords, const int *frequencies) {
-    AKLOGI("--- DUMP RESULT ---------");
-    for (int i = 0; i < MAX_RESULTS; ++i) {
-        dumpWordInfo(&outWords[i * MAX_WORD_LENGTH], MAX_WORD_LENGTH, i, frequencies[i]);
-    }
-    AKLOGI("-------------------------");
-}
-
 static AK_FORCE_INLINE void dumpWord(const int *word, const int length) {
     static char charBuf[50];
     const int N = intArrayToCharArray(word, length, charBuf, NELEMS(charBuf));
@@ -156,7 +164,7 @@
 #else // defined(FLAG_DO_PROFILE) || defined(FLAG_DBG)
 #define AKLOGE(fmt, ...)
 #define AKLOGI(fmt, ...)
-#define DUMP_RESULT(words, frequencies)
+#define DUMP_SUGGESTION(words, frequencies, index, score)
 #define DUMP_WORD(word, length)
 #undef DO_ASSERT_TEST
 #define ASSERT(success)
@@ -285,23 +293,18 @@
 #define M_PI_F 3.14159265f
 #define MAX_PERCENTILE 100
 
-// Number of base-10 digits in the largest integer + 1 to leave room for a zero terminator.
-// As such, this is the maximum number of characters will be needed to represent an int as a
-// string, including the terminator; this is used as the size of a string buffer large enough to
-// hold any value that is intended to fit in an integer, e.g. in the code that reads the header
-// of the binary dictionary where a {key,value} string pair scheme is used.
-#define LARGEST_INT_DIGIT_COUNT 11
-
 #define NOT_A_CODE_POINT (-1)
 #define NOT_A_DISTANCE (-1)
 #define NOT_A_COORDINATE (-1)
 #define NOT_AN_INDEX (-1)
 #define NOT_A_PROBABILITY (-1)
 #define NOT_A_DICT_POS (S_INT_MIN)
+#define NOT_A_TIMESTAMP (-1)
+#define NOT_A_LANGUAGE_WEIGHT (-1.0f)
 
 // A special value to mean the first word confidence makes no sense in this case,
 // e.g. this is not a multi-word suggestion.
-#define NOT_A_FIRST_WORD_CONFIDENCE (S_INT_MAX)
+#define NOT_A_FIRST_WORD_CONFIDENCE (S_INT_MIN)
 // How high the confidence needs to be for us to auto-commit. Arbitrary.
 // This needs to be the same as CONFIDENCE_FOR_AUTO_COMMIT in BinaryDictionary.java
 #define CONFIDENCE_FOR_AUTO_COMMIT (1000000)
@@ -315,14 +318,13 @@
 #define KEYCODE_SPACE ' '
 #define KEYCODE_SINGLE_QUOTE '\''
 #define KEYCODE_HYPHEN_MINUS '-'
+// Code point to indicate beginning-of-sentence. This is not in the code point space of unicode.
+#define CODE_POINT_BEGINNING_OF_SENTENCE 0x110000
 
 #define SUGGEST_INTERFACE_OUTPUT_SCALE 1000000.0f
 #define MAX_PROBABILITY 255
 #define MAX_BIGRAM_ENCODED_PROBABILITY 15
 
-// Assuming locale strings such as en_US, sr-Latn etc.
-#define MAX_LOCALE_STRING_LENGTH 10
-
 // Max value for length, distance and probability which are used in weighting
 // TODO: Remove
 #define MAX_VALUE_FOR_WEIGHTING 10000000
@@ -334,19 +336,24 @@
 #define MAX_POINTER_COUNT 1
 #define MAX_POINTER_COUNT_G 2
 
-template<typename T> AK_FORCE_INLINE const T &min(const T &a, const T &b) { return a < b ? a : b; }
-template<typename T> AK_FORCE_INLINE const T &max(const T &a, const T &b) { return a > b ? a : b; }
+// (MAX_PREV_WORD_COUNT_FOR_N_GRAM + 1)-gram is supported.
+#define MAX_PREV_WORD_COUNT_FOR_N_GRAM 1
 
-// DEBUG
-#define INPUTLENGTH_FOR_DEBUG (-1)
-#define MIN_OUTPUT_INDEX_FOR_DEBUG (-1)
+#define DISALLOW_DEFAULT_CONSTRUCTOR(TypeName) \
+  TypeName() = delete
+
+#define DISALLOW_COPY_CONSTRUCTOR(TypeName) \
+  TypeName(const TypeName&) = delete
+
+#define DISALLOW_ASSIGNMENT_OPERATOR(TypeName) \
+  void operator=(const TypeName&) = delete
 
 #define DISALLOW_COPY_AND_ASSIGN(TypeName) \
-  TypeName(const TypeName&);               \
-  void operator=(const TypeName&)
+  DISALLOW_COPY_CONSTRUCTOR(TypeName);     \
+  DISALLOW_ASSIGNMENT_OPERATOR(TypeName)
 
 #define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
-  TypeName();                                    \
+  DISALLOW_DEFAULT_CONSTRUCTOR(TypeName);        \
   DISALLOW_COPY_AND_ASSIGN(TypeName)
 
 // Used as a return value for character comparison
@@ -392,24 +399,4 @@
     // Create new word with space substitution
     CT_NEW_WORD_SPACE_SUBSTITUTION,
 } CorrectionType;
-
-// ErrorType is mainly decided by CorrectionType but it is also depending on if
-// the correction has really been performed or not.
-typedef enum {
-    // Substitution, omission and transposition
-    ET_EDIT_CORRECTION,
-    // Proximity error
-    ET_PROXIMITY_CORRECTION,
-    // Completion
-    ET_COMPLETION,
-    // New word
-    // TODO: Remove.
-    // A new word error should be an edit correction error or a proximity correction error.
-    ET_NEW_WORD,
-    // Treat error as an intentional omission when the CorrectionType is omission and the node can
-    // be intentional omission.
-    ET_INTENTIONAL_OMISSION,
-    // Not treated as an error. Tracked for checking exact match
-    ET_NOT_AN_ERROR
-} ErrorType;
 #endif // LATINIME_DEFINES_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.cpp b/native/jni/src/suggest/core/dicnode/dic_node.cpp
index de088c7..414dc3b 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node.cpp
@@ -24,8 +24,7 @@
           mProfiler(dicNode.mProfiler),
 #endif
           mDicNodeProperties(dicNode.mDicNodeProperties), mDicNodeState(dicNode.mDicNodeState),
-          mIsCachedForNextSuggestion(dicNode.mIsCachedForNextSuggestion), mIsUsed(dicNode.mIsUsed),
-          mReleaseListener(0) {
+          mIsCachedForNextSuggestion(dicNode.mIsCachedForNextSuggestion) {
     /* empty */
 }
 
@@ -36,8 +35,6 @@
     mDicNodeProperties = dicNode.mDicNodeProperties;
     mDicNodeState = dicNode.mDicNodeState;
     mIsCachedForNextSuggestion = dicNode.mIsCachedForNextSuggestion;
-    mIsUsed = dicNode.mIsUsed;
-    mReleaseListener = dicNode.mReleaseListener;
     return *this;
 }
 
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 49cfdec..92f39ea 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -19,29 +19,35 @@
 
 #include "defines.h"
 #include "suggest/core/dicnode/dic_node_profiler.h"
-#include "suggest/core/dicnode/dic_node_release_listener.h"
+#include "suggest/core/dicnode/dic_node_utils.h"
 #include "suggest/core/dicnode/internal/dic_node_state.h"
 #include "suggest/core/dicnode/internal/dic_node_properties.h"
 #include "suggest/core/dictionary/digraph_utils.h"
+#include "suggest/core/dictionary/error_type_utils.h"
+#include "suggest/core/layout/proximity_info_state.h"
 #include "utils/char_utils.h"
 
 #if DEBUG_DICT
 #define LOGI_SHOW_ADD_COST_PROP \
-        do { char charBuf[50]; \
-        INTS_TO_CHARS(getOutputWordBuf(), getNodeCodePointCount(), charBuf, NELEMS(charBuf)); \
-        AKLOGI("%20s, \"%c\", size = %03d, total = %03d, index(0) = %02d, dist = %.4f, %s,,", \
-                __FUNCTION__, getNodeCodePoint(), inputSize, getTotalInputIndex(), \
-                getInputIndex(0), getNormalizedCompoundDistance(), charBuf); } while (0)
+        do { \
+            char charBuf[50]; \
+            INTS_TO_CHARS(getOutputWordBuf(), getNodeCodePointCount(), charBuf, NELEMS(charBuf)); \
+            AKLOGI("%20s, \"%c\", size = %03d, total = %03d, index(0) = %02d, dist = %.4f, %s,,", \
+                    __FUNCTION__, getNodeCodePoint(), inputSize, getTotalInputIndex(), \
+                    getInputIndex(0), getNormalizedCompoundDistance(), charBuf); \
+        } while (0)
 #define DUMP_WORD_AND_SCORE(header) \
-        do { char charBuf[50]; char prevWordCharBuf[50]; \
-        INTS_TO_CHARS(getOutputWordBuf(), getNodeCodePointCount(), charBuf, NELEMS(charBuf)); \
-        INTS_TO_CHARS(mDicNodeState.mDicNodeStatePrevWord.mPrevWord, \
-                mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(), prevWordCharBuf, \
-                NELEMS(prevWordCharBuf)); \
-        AKLOGI("#%8s, %5f, %5f, %5f, %5f, %s, %s, %d, %5f,", header, \
-                getSpatialDistanceForScoring(), getLanguageDistanceForScoring(), \
-                getNormalizedCompoundDistance(), getRawLength(), prevWordCharBuf, charBuf, \
-                getInputIndex(0), getNormalizedCompoundDistanceAfterFirstWord()); \
+        do { \
+            char charBuf[50]; \
+            INTS_TO_CHARS(getOutputWordBuf(), \
+                    getNodeCodePointCount() \
+                            + mDicNodeState.mDicNodeStateOutput.getPrevWordsLength(), \
+                    charBuf, NELEMS(charBuf)); \
+            AKLOGI("#%8s, %5f, %5f, %5f, %5f, %s, %d, %5f,", header, \
+                    getSpatialDistanceForScoring(), \
+                    mDicNodeState.mDicNodeStateScoring.getLanguageDistance(), \
+                    getNormalizedCompoundDistance(), getRawLength(), charBuf, \
+                    getInputIndex(0), getNormalizedCompoundDistanceAfterFirstWord()); \
         } while (0)
 #else
 #define LOGI_SHOW_ADD_COST_PROP
@@ -77,113 +83,74 @@
 #if DEBUG_DICT
     DicNodeProfiler mProfiler;
 #endif
-    //////////////////
-    // Memory utils //
-    //////////////////
-    AK_FORCE_INLINE static void managedDelete(DicNode *node) {
-        node->remove();
-    }
-    // end
-    /////////////////
 
     AK_FORCE_INLINE DicNode()
             :
 #if DEBUG_DICT
               mProfiler(),
 #endif
-              mDicNodeProperties(), mDicNodeState(), mIsCachedForNextSuggestion(false),
-              mIsUsed(false), mReleaseListener(0) {}
+              mDicNodeProperties(), mDicNodeState(), mIsCachedForNextSuggestion(false) {}
 
     DicNode(const DicNode &dicNode);
     DicNode &operator=(const DicNode &dicNode);
-    virtual ~DicNode() {}
+    ~DicNode() {}
 
     // Init for copy
-    void initByCopy(const DicNode *dicNode) {
-        mIsUsed = true;
+    void initByCopy(const DicNode *const dicNode) {
         mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
-        mDicNodeProperties.init(&dicNode->mDicNodeProperties);
-        mDicNodeState.init(&dicNode->mDicNodeState);
+        mDicNodeProperties.initByCopy(&dicNode->mDicNodeProperties);
+        mDicNodeState.initByCopy(&dicNode->mDicNodeState);
         PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
     }
 
-    // Init for root with prevWordNodePos which is used for bigram
-    void initAsRoot(const int rootGroupPos, const int prevWordNodePos) {
-        mIsUsed = true;
+    // Init for root with prevWordsPtNodePos which is used for n-gram
+    void initAsRoot(const int rootPtNodeArrayPos, const int *const prevWordsPtNodePos) {
         mIsCachedForNextSuggestion = false;
-        mDicNodeProperties.init(
-                NOT_A_DICT_POS /* pos */, rootGroupPos, NOT_A_CODE_POINT /* nodeCodePoint */,
-                NOT_A_PROBABILITY /* probability */, false /* isTerminal */,
-                true /* hasChildren */, false /* isBlacklistedOrNotAWord */, 0 /* depth */,
-                0 /* terminalDepth */);
-        mDicNodeState.init(prevWordNodePos);
+        mDicNodeProperties.init(rootPtNodeArrayPos, prevWordsPtNodePos);
+        mDicNodeState.init();
         PROF_NODE_RESET(mProfiler);
     }
 
     // Init for root with previous word
-    void initAsRootWithPreviousWord(DicNode *dicNode, const int rootGroupPos) {
-        mIsUsed = true;
+    void initAsRootWithPreviousWord(const DicNode *const dicNode, const int rootPtNodeArrayPos) {
         mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
-        mDicNodeProperties.init(
-                NOT_A_DICT_POS /* pos */, rootGroupPos, NOT_A_CODE_POINT /* nodeCodePoint */,
-                NOT_A_PROBABILITY /* probability */, false /* isTerminal */,
-                true /* hasChildren */, false /* isBlacklistedOrNotAWord */,  0 /* depth */,
-                0 /* terminalDepth */);
-        // TODO: Move to dicNodeState?
-        mDicNodeState.mDicNodeStateOutput.init(); // reset for next word
-        mDicNodeState.mDicNodeStateInput.init(
-                &dicNode->mDicNodeState.mDicNodeStateInput, true /* resetTerminalDiffCost */);
-        mDicNodeState.mDicNodeStateScoring.init(
-                &dicNode->mDicNodeState.mDicNodeStateScoring);
-        mDicNodeState.mDicNodeStatePrevWord.init(
-                dicNode->mDicNodeState.mDicNodeStatePrevWord.getPrevWordCount() + 1,
-                dicNode->mDicNodeProperties.getProbability(),
-                dicNode->mDicNodeProperties.getPos(),
-                dicNode->mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
-                dicNode->mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(),
-                dicNode->getOutputWordBuf(),
-                dicNode->mDicNodeProperties.getDepth(),
-                dicNode->mDicNodeState.mDicNodeStatePrevWord.getSecondWordFirstInputIndex(),
-                mDicNodeState.mDicNodeStateInput.getInputIndex(0) /* lastInputIndex */);
+        int newPrevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        newPrevWordsPtNodePos[0] = dicNode->mDicNodeProperties.getPtNodePos();
+        for (size_t i = 1; i < NELEMS(newPrevWordsPtNodePos); ++i) {
+            newPrevWordsPtNodePos[i] = dicNode->getNthPrevWordTerminalPtNodePos(i);
+        }
+        mDicNodeProperties.init(rootPtNodeArrayPos, newPrevWordsPtNodePos);
+        mDicNodeState.initAsRootWithPreviousWord(&dicNode->mDicNodeState,
+                dicNode->mDicNodeProperties.getDepth());
         PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
     }
 
-    void initAsPassingChild(DicNode *parentNode) {
-        mIsUsed = true;
-        mIsCachedForNextSuggestion = parentNode->mIsCachedForNextSuggestion;
-        const int c = parentNode->getNodeTypedCodePoint();
-        mDicNodeProperties.init(&parentNode->mDicNodeProperties, c);
-        mDicNodeState.init(&parentNode->mDicNodeState);
-        PROF_NODE_COPY(&parentNode->mProfiler, mProfiler);
+    void initAsPassingChild(const DicNode *parentDicNode) {
+        mIsCachedForNextSuggestion = parentDicNode->mIsCachedForNextSuggestion;
+        const int codePoint =
+                parentDicNode->mDicNodeState.mDicNodeStateOutput.getCurrentWordCodePointAt(
+                            parentDicNode->getNodeCodePointCount());
+        mDicNodeProperties.init(&parentDicNode->mDicNodeProperties, codePoint);
+        mDicNodeState.initByCopy(&parentDicNode->mDicNodeState);
+        PROF_NODE_COPY(&parentDicNode->mProfiler, mProfiler);
     }
 
-    void initAsChild(const DicNode *const dicNode, const int pos, const int childrenPos,
-            const int probability, const bool isTerminal, const bool hasChildren,
-            const bool isBlacklistedOrNotAWord, const uint16_t mergedNodeCodePointCount,
-            const int *const mergedNodeCodePoints) {
-        mIsUsed = true;
+    void initAsChild(const DicNode *const dicNode, const int ptNodePos,
+            const int childrenPtNodeArrayPos, const int probability, const bool isTerminal,
+            const bool hasChildren, const bool isBlacklistedOrNotAWord,
+            const uint16_t mergedNodeCodePointCount, const int *const mergedNodeCodePoints) {
         uint16_t newDepth = static_cast<uint16_t>(dicNode->getNodeCodePointCount() + 1);
         mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
         const uint16_t newLeavingDepth = static_cast<uint16_t>(
                 dicNode->mDicNodeProperties.getLeavingDepth() + mergedNodeCodePointCount);
-        mDicNodeProperties.init(pos, childrenPos, mergedNodeCodePoints[0], probability,
-                isTerminal, hasChildren, isBlacklistedOrNotAWord, newDepth, newLeavingDepth);
+        mDicNodeProperties.init(ptNodePos, childrenPtNodeArrayPos, mergedNodeCodePoints[0],
+                probability, isTerminal, hasChildren, isBlacklistedOrNotAWord, newDepth,
+                newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordsTerminalPtNodePos());
         mDicNodeState.init(&dicNode->mDicNodeState, mergedNodeCodePointCount,
                 mergedNodeCodePoints);
         PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
     }
 
-    AK_FORCE_INLINE void remove() {
-        mIsUsed = false;
-        if (mReleaseListener) {
-            mReleaseListener->onReleased(this);
-        }
-    }
-
-    bool isUsed() const {
-        return mIsUsed;
-    }
-
     bool isRoot() const {
         return getNodeCodePointCount() == 0;
     }
@@ -209,11 +176,6 @@
         mIsCachedForNextSuggestion = true;
     }
 
-    // Used to expand the node in DicNodeUtils
-    int getNodeTypedCodePoint() const {
-        return mDicNodeState.mDicNodeStateOutput.getCodePointAt(getNodeCodePointCount());
-    }
-
     // Check if the current word and the previous word can be considered as a valid multiple word
     // suggestion.
     bool isValidMultipleWordSuggestion() const {
@@ -222,21 +184,17 @@
         }
         // Treat suggestion as invalid if the current and the previous word are single character
         // words.
-        const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength()
-                - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1;
+        const int prevWordLen = mDicNodeState.mDicNodeStateOutput.getPrevWordsLength()
+                - mDicNodeState.mDicNodeStateOutput.getPrevWordStart() - 1;
         const int currentWordLen = getNodeCodePointCount();
         return (prevWordLen != 1 || currentWordLen != 1);
     }
 
     bool isFirstCharUppercase() const {
-        const int c = getOutputWordBuf()[0];
+        const int c = mDicNodeState.mDicNodeStateOutput.getCurrentWordCodePointAt(0);
         return CharUtils::isAsciiUpper(c);
     }
 
-    bool isFirstWord() const {
-        return mDicNodeState.mDicNodeStatePrevWord.getPrevWordNodePos() == NOT_A_DICT_POS;
-    }
-
     bool isCompletion(const int inputSize) const {
         return mDicNodeState.mDicNodeStateInput.getInputIndex(0) >= inputSize;
     }
@@ -245,94 +203,76 @@
         return mDicNodeState.mDicNodeStateInput.getInputIndex(0) < inputSize - 1;
     }
 
-    // Used to get bigram probability in DicNodeUtils
-    int getPos() const {
-        return mDicNodeProperties.getPos();
+    // Used to get n-gram probability in DicNodeUtils.
+    int getPtNodePos() const {
+        return mDicNodeProperties.getPtNodePos();
     }
 
-    // Used to get bigram probability in DicNodeUtils
-    int getPrevWordPos() const {
-        return mDicNodeState.mDicNodeStatePrevWord.getPrevWordNodePos();
+    // Used to get n-gram probability in DicNodeUtils. n is 1-indexed.
+    int getNthPrevWordTerminalPtNodePos(const int n) const {
+        if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) {
+            return NOT_A_DICT_POS;
+        }
+        return mDicNodeProperties.getPrevWordsTerminalPtNodePos()[n - 1];
     }
 
     // Used in DicNodeUtils
-    int getChildrenPos() const {
-        return mDicNodeProperties.getChildrenPos();
+    int getChildrenPtNodeArrayPos() const {
+        return mDicNodeProperties.getChildrenPtNodeArrayPos();
     }
 
     int getProbability() const {
         return mDicNodeProperties.getProbability();
     }
 
-    AK_FORCE_INLINE bool isTerminalWordNode() const {
-        const bool isTerminalNodes = mDicNodeProperties.isTerminal();
-        const int currentNodeDepth = getNodeCodePointCount();
-        const int terminalNodeDepth = mDicNodeProperties.getLeavingDepth();
-        return isTerminalNodes && currentNodeDepth > 0 && currentNodeDepth == terminalNodeDepth;
+    AK_FORCE_INLINE bool isTerminalDicNode() const {
+        const bool isTerminalPtNode = mDicNodeProperties.isTerminal();
+        const int currentDicNodeDepth = getNodeCodePointCount();
+        const int terminalDicNodeDepth = mDicNodeProperties.getLeavingDepth();
+        return isTerminalPtNode && currentDicNodeDepth > 0
+                && currentDicNodeDepth == terminalDicNodeDepth;
     }
 
     bool shouldBeFilteredBySafetyNetForBigram() const {
         const uint16_t currentDepth = getNodeCodePointCount();
-        const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength()
-                - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1;
+        const int prevWordLen = mDicNodeState.mDicNodeStateOutput.getPrevWordsLength()
+                - mDicNodeState.mDicNodeStateOutput.getPrevWordStart() - 1;
         return !(currentDepth > 0 && (currentDepth != 1 || prevWordLen != 1));
     }
 
-    bool isTotalInputSizeExceedingLimit() const {
-        const int prevWordsLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
-        const int currentWordDepth = getNodeCodePointCount();
-        // TODO: 3 can be 2? Needs to be investigated.
-        // TODO: Have a const variable for 3 (or 2)
-        return prevWordsLen + currentWordDepth > MAX_WORD_LENGTH - 3;
+    bool hasMatchedOrProximityCodePoints() const {
+        // This DicNode does not have matched or proximity code points when all code points have
+        // been handled as edit corrections or completion so far.
+        const int editCorrectionCount = mDicNodeState.mDicNodeStateScoring.getEditCorrectionCount();
+        const int completionCount = mDicNodeState.mDicNodeStateScoring.getCompletionCount();
+        return (editCorrectionCount + completionCount) < getNodeCodePointCount();
     }
 
-    // TODO: This may be defective. Needs to be revised.
-    bool truncateNode(const DicNode *const topNode, const int inputCommitPoint) {
-        const int prevWordLenOfTop = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
-        int newPrevWordStartIndex = inputCommitPoint;
-        int charCount = 0;
-        // Find new word start index
-        for (int i = 0; i < prevWordLenOfTop; ++i) {
-            const int c = mDicNodeState.mDicNodeStatePrevWord.getPrevWordCodePointAt(i);
-            // TODO: Check other separators.
-            if (c != KEYCODE_SPACE && c != KEYCODE_SINGLE_QUOTE) {
-                if (charCount == inputCommitPoint) {
-                    newPrevWordStartIndex = i;
-                    break;
-                }
-                ++charCount;
-            }
-        }
-        if (!mDicNodeState.mDicNodeStatePrevWord.startsWith(
-                &topNode->mDicNodeState.mDicNodeStatePrevWord, newPrevWordStartIndex - 1)) {
-            // Node mismatch.
-            return false;
-        }
-        mDicNodeState.mDicNodeStateInput.truncate(inputCommitPoint);
-        mDicNodeState.mDicNodeStatePrevWord.truncate(newPrevWordStartIndex);
-        return true;
+    bool isTotalInputSizeExceedingLimit() const {
+        // TODO: 3 can be 2? Needs to be investigated.
+        // TODO: Have a const variable for 3 (or 2)
+        return getTotalNodeCodePointCount() > MAX_WORD_LENGTH - 3;
     }
 
     void outputResult(int *dest) const {
-        const uint16_t prevWordLength = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
-        const uint16_t currentDepth = getNodeCodePointCount();
-        DicNodeUtils::appendTwoWords(mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
-                   prevWordLength, getOutputWordBuf(), currentDepth, dest);
+        memmove(dest, getOutputWordBuf(), getTotalNodeCodePointCount() * sizeof(dest[0]));
         DUMP_WORD_AND_SCORE("OUTPUT");
     }
 
     // "Total" in this context (and other methods in this class) means the whole suggestion. When
     // this represents a multi-word suggestion, the referenced PtNode (in mDicNodeState) is only
     // the one that corresponds to the last word of the suggestion, and all the previous words
-    // are concatenated together in mPrevWord - which contains a space at the end.
+    // are concatenated together in mDicNodeStateOutput.
     int getTotalNodeSpaceCount() const {
-        if (isFirstWord()) return 0;
-        return CharUtils::getSpaceCount(mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
-                mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength());
+        if (!hasMultipleWords()) {
+            return 0;
+        }
+        return CharUtils::getSpaceCount(mDicNodeState.mDicNodeStateOutput.getCodePointBuf(),
+                mDicNodeState.mDicNodeStateOutput.getPrevWordsLength());
     }
 
     int getSecondWordFirstInputIndex(const ProximityInfoState *const pInfoState) const {
-        const int inputIndex = mDicNodeState.mDicNodeStatePrevWord.getSecondWordFirstInputIndex();
+        const int inputIndex = mDicNodeState.mDicNodeStateOutput.getSecondWordFirstInputIndex();
         if (inputIndex == NOT_AN_INDEX) {
             return NOT_AN_INDEX;
         } else {
@@ -341,7 +281,7 @@
     }
 
     bool hasMultipleWords() const {
-        return mDicNodeState.mDicNodeStatePrevWord.getPrevWordCount() > 0;
+        return mDicNodeState.mDicNodeStateOutput.getPrevWordCount() > 0;
     }
 
     int getProximityCorrectionCount() const {
@@ -373,13 +313,8 @@
         return mDicNodeState.mDicNodeStateScoring.getCompoundDistance(languageWeight);
     }
 
-    // Used to commit input partially
-    int getPrevWordNodePos() const {
-        return mDicNodeState.mDicNodeStatePrevWord.getPrevWordNodePos();
-    }
-
     AK_FORCE_INLINE const int *getOutputWordBuf() const {
-        return mDicNodeState.mDicNodeStateOutput.mCodePointsBuf;
+        return mDicNodeState.mDicNodeStateOutput.getCodePointBuf();
     }
 
     int getPrevCodePointG(int pointerId) const {
@@ -410,7 +345,7 @@
     // TODO: Remove once touch path is merged into ProximityInfoState
     // Note: Returned codepoint may be a digraph codepoint if the node is in a composite glyph.
     int getNodeCodePoint() const {
-        const int codePoint = mDicNodeProperties.getNodeCodePoint();
+        const int codePoint = mDicNodeProperties.getDicNodeCodePoint();
         const DigraphUtils::DigraphCodePointIndex digraphIndex =
                 mDicNodeState.mDicNodeStateScoring.getDigraphIndex();
         if (digraphIndex == DigraphUtils::NOT_A_DIGRAPH_INDEX) {
@@ -423,8 +358,8 @@
     // Utils for cost calculation //
     ////////////////////////////////
     AK_FORCE_INLINE bool isSameNodeCodePoint(const DicNode *const dicNode) const {
-        return mDicNodeProperties.getNodeCodePoint()
-                == dicNode->mDicNodeProperties.getNodeCodePoint();
+        return mDicNodeProperties.getDicNodeCodePoint()
+                == dicNode->mDicNodeProperties.getDicNodeCodePoint();
     }
 
     // TODO: remove
@@ -440,10 +375,6 @@
         return mDicNodeState.mDicNodeStateScoring.getSpatialDistance();
     }
 
-    float getLanguageDistanceForScoring() const {
-        return mDicNodeState.mDicNodeStateScoring.getLanguageDistance();
-    }
-
     // For space-aware gestures, we store the normalized distance at the char index
     // that ends the first word of the suggestion. We call this the distance after
     // first word.
@@ -451,22 +382,10 @@
         return mDicNodeState.mDicNodeStateScoring.getNormalizedCompoundDistanceAfterFirstWord();
     }
 
-    float getLanguageDistanceRatePerWordForScoring() const {
-        const float langDist = getLanguageDistanceForScoring();
-        const float totalWordCount =
-                static_cast<float>(mDicNodeState.mDicNodeStatePrevWord.getPrevWordCount() + 1);
-        return langDist / totalWordCount;
-    }
-
     float getRawLength() const {
         return mDicNodeState.mDicNodeStateScoring.getRawLength();
     }
 
-    bool isLessThanOneErrorForScoring() const {
-        return mDicNodeState.mDicNodeStateScoring.getEditCorrectionCount()
-                + mDicNodeState.mDicNodeStateScoring.getProximityCorrectionCount() <= 1;
-    }
-
     DoubleLetterLevel getDoubleLetterLevel() const {
         return mDicNodeState.mDicNodeStateScoring.getDoubleLetterLevel();
     }
@@ -484,8 +403,8 @@
         mDicNodeState.mDicNodeStateScoring.advanceDigraphIndex();
     }
 
-    bool isExactMatch() const {
-        return mDicNodeState.mDicNodeStateScoring.isExactMatch();
+    ErrorTypeUtils::ErrorType getContainedErrorTypes() const {
+        return mDicNodeState.mDicNodeStateScoring.getContainedErrorTypes();
     }
 
     bool isBlacklistedOrNotAWord() const {
@@ -498,7 +417,7 @@
 
     // Returns code point count including spaces
     inline uint16_t getTotalNodeCodePointCount() const {
-        return getNodeCodePointCount() + mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
+        return getNodeCodePointCount() + mDicNodeState.mDicNodeStateOutput.getPrevWordsLength();
     }
 
     AK_FORCE_INLINE void dump(const char *tag) const {
@@ -510,24 +429,10 @@
 #endif
     }
 
-    void setReleaseListener(DicNodeReleaseListener *releaseListener) {
-        mReleaseListener = releaseListener;
-    }
-
-    AK_FORCE_INLINE bool compare(const DicNode *right) {
-        if (!isUsed() && !right->isUsed()) {
-            // Compare pointer values here for stable comparison
-            return this > right;
-        }
-        if (!isUsed()) {
-            return true;
-        }
-        if (!right->isUsed()) {
-            return false;
-        }
+    AK_FORCE_INLINE bool compare(const DicNode *right) const {
         // Promote exact matches to prevent them from being pruned.
-        const bool leftExactMatch = isExactMatch();
-        const bool rightExactMatch = right->isExactMatch();
+        const bool leftExactMatch = ErrorTypeUtils::isExactMatch(getContainedErrorTypes());
+        const bool rightExactMatch = ErrorTypeUtils::isExactMatch(right->getContainedErrorTypes());
         if (leftExactMatch != rightExactMatch) {
             return leftExactMatch;
         }
@@ -545,8 +450,9 @@
             return depthDiff > 0;
         }
         for (int i = 0; i < depth; ++i) {
-            const int codePoint = mDicNodeState.mDicNodeStateOutput.getCodePointAt(i);
-            const int rightCodePoint = right->mDicNodeState.mDicNodeStateOutput.getCodePointAt(i);
+            const int codePoint = mDicNodeState.mDicNodeStateOutput.getCurrentWordCodePointAt(i);
+            const int rightCodePoint =
+                    right->mDicNodeState.mDicNodeStateOutput.getCurrentWordCodePointAt(i);
             if (codePoint != rightCodePoint) {
                 return rightCodePoint > codePoint;
             }
@@ -560,8 +466,6 @@
     DicNodeState mDicNodeState;
     // TODO: Remove
     bool mIsCachedForNextSuggestion;
-    bool mIsUsed;
-    DicNodeReleaseListener *mReleaseListener;
 
     AK_FORCE_INLINE int getTotalInputIndex() const {
         int index = 0;
@@ -574,7 +478,8 @@
     // Caveat: Must not be called outside Weighting
     // This restriction is guaranteed by "friend"
     AK_FORCE_INLINE void addCost(const float spatialCost, const float languageCost,
-            const bool doNormalization, const int inputSize, const ErrorType errorType) {
+            const bool doNormalization, const int inputSize,
+            const ErrorTypeUtils::ErrorType errorType) {
         if (DEBUG_GEO_FULL) {
             LOGI_SHOW_ADD_COST_PROP;
         }
@@ -602,8 +507,8 @@
     }
 
     AK_FORCE_INLINE void updateInputIndexG(const DicNode_InputStateG *const inputStateG) {
-        if (mDicNodeState.mDicNodeStatePrevWord.getPrevWordCount() == 1 && isFirstLetter()) {
-            mDicNodeState.mDicNodeStatePrevWord.setSecondWordFirstInputIndex(
+        if (mDicNodeState.mDicNodeStateOutput.getPrevWordCount() == 1 && isFirstLetter()) {
+            mDicNodeState.mDicNodeStateOutput.setSecondWordFirstInputIndex(
                     inputStateG->mInputIndex);
         }
         mDicNodeState.mDicNodeStateInput.updateInputIndexG(inputStateG->mPointerId,
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_pool.h b/native/jni/src/suggest/core/dicnode/dic_node_pool.h
new file mode 100644
index 0000000..a660b74
--- /dev/null
+++ b/native/jni/src/suggest/core/dicnode/dic_node_pool.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DIC_NODE_POOL_H
+#define LATINIME_DIC_NODE_POOL_H
+
+#include <deque>
+#include <unordered_set>
+#include <vector>
+
+#include "defines.h"
+#include "suggest/core/dicnode/dic_node.h"
+
+namespace latinime {
+
+class DicNodePool {
+ public:
+    explicit DicNodePool(const int capacity) : mDicNodes(), mPooledDicNodes() {
+        reset(capacity);
+    }
+
+    void reset(const int capacity) {
+        if (capacity == static_cast<int>(mDicNodes.size())
+                && capacity == static_cast<int>(mPooledDicNodes.size())) {
+            // No need to reset.
+            return;
+        }
+        mDicNodes.resize(capacity);
+        mDicNodes.shrink_to_fit();
+        mPooledDicNodes.clear();
+        for (auto &dicNode : mDicNodes) {
+            mPooledDicNodes.emplace_back(&dicNode);
+        }
+    }
+
+    // Get a DicNode instance from the pool. The instance has to be returned by returnInstance().
+    DicNode *getInstance() {
+        if (mPooledDicNodes.empty()) {
+            return nullptr;
+        }
+        DicNode *const dicNode = mPooledDicNodes.back();
+        mPooledDicNodes.pop_back();
+        return dicNode;
+    }
+
+    // Return an instance that has been removed from the pool by getInstance() to the pool. The
+    // instance must not be used after returning without getInstance().
+    void placeBackInstance(DicNode *dicNode) {
+        mPooledDicNodes.emplace_back(dicNode);
+    }
+
+    void dump() const {
+        AKLOGI("\n\n\n\n\n===========================");
+        std::unordered_set<const DicNode*> usedDicNodes;
+        for (const auto &dicNode : mDicNodes) {
+            usedDicNodes.insert(&dicNode);
+        }
+        for (const auto &dicNodePtr : mPooledDicNodes) {
+            usedDicNodes.erase(dicNodePtr);
+        }
+        for (const auto &usedDicNodePtr : usedDicNodes) {
+            usedDicNodePtr->dump("DIC_NODE_POOL: ");
+        }
+        AKLOGI("===========================\n\n\n\n\n");
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DicNodePool);
+
+    std::vector<DicNode> mDicNodes;
+    std::deque<DicNode*> mPooledDicNodes;
+};
+} // namespace latinime
+#endif // LATINIME_DIC_NODE_POOL_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h b/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h
index 7461f0c..7b753f2 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_priority_queue.h
@@ -17,43 +17,36 @@
 #ifndef LATINIME_DIC_NODE_PRIORITY_QUEUE_H
 #define LATINIME_DIC_NODE_PRIORITY_QUEUE_H
 
+#include <algorithm>
 #include <queue>
 #include <vector>
 
 #include "defines.h"
 #include "suggest/core/dicnode/dic_node.h"
-#include "suggest/core/dicnode/dic_node_release_listener.h"
+#include "suggest/core/dicnode/dic_node_pool.h"
 
 namespace latinime {
 
-class DicNodePriorityQueue : public DicNodeReleaseListener {
+class DicNodePriorityQueue {
  public:
     AK_FORCE_INLINE explicit DicNodePriorityQueue(const int capacity)
-            : mCapacity(capacity), mMaxSize(capacity), mDicNodesBuf(),
-              mUnusedNodeIndices(), mNextUnusedNodeId(0), mDicNodesQueue() {
-        mDicNodesBuf.resize(mCapacity + 1);
-        mUnusedNodeIndices.resize(mCapacity + 1);
-        clearAndResizeToCapacity();
+            : mMaxSize(capacity), mDicNodesQueue(), mDicNodePool(capacity) {
+        clear();
     }
 
     // Non virtual inline destructor -- never inherit this class
     AK_FORCE_INLINE ~DicNodePriorityQueue() {}
 
-    int getSize() const {
+    AK_FORCE_INLINE int getSize() const {
         return static_cast<int>(mDicNodesQueue.size());
     }
 
-    int getMaxSize() const {
+    AK_FORCE_INLINE int getMaxSize() const {
         return mMaxSize;
     }
 
     AK_FORCE_INLINE void setMaxSize(const int maxSize) {
-        ASSERT(maxSize <= mCapacity);
-        mMaxSize = min(maxSize, mCapacity);
-    }
-
-    AK_FORCE_INLINE void clearAndResizeToCapacity() {
-        clearAndResize(mCapacity);
+        mMaxSize = maxSize;
     }
 
     AK_FORCE_INLINE void clear() {
@@ -61,25 +54,32 @@
     }
 
     AK_FORCE_INLINE void clearAndResize(const int maxSize) {
-        ASSERT(maxSize <= mCapacity);
+        mMaxSize = maxSize;
         while (!mDicNodesQueue.empty()) {
             mDicNodesQueue.pop();
         }
-        setMaxSize(maxSize);
-        for (int i = 0; i < mCapacity + 1; ++i) {
-            mDicNodesBuf[i].remove();
-            mDicNodesBuf[i].setReleaseListener(this);
-            mUnusedNodeIndices[i] = i == mCapacity ? NOT_A_NODE_ID : static_cast<int>(i) + 1;
+        mDicNodePool.reset(mMaxSize + 1);
+    }
+
+    AK_FORCE_INLINE void copyPush(const DicNode *const dicNode) {
+        DicNode *const pooledDicNode = newDicNode(dicNode);
+        if (!pooledDicNode) {
+            return;
         }
-        mNextUnusedNodeId = 0;
+        if (getSize() < mMaxSize) {
+            mDicNodesQueue.push(pooledDicNode);
+            return;
+        }
+        if (betterThanWorstDicNode(pooledDicNode)) {
+            mDicNodePool.placeBackInstance(mDicNodesQueue.top());
+            mDicNodesQueue.pop();
+            mDicNodesQueue.push(pooledDicNode);
+            return;
+        }
+        mDicNodePool.placeBackInstance(pooledDicNode);
     }
 
-    // Copy
-    AK_FORCE_INLINE DicNode *copyPush(DicNode *dicNode) {
-        return copyPush(dicNode, mMaxSize);
-    }
-
-    AK_FORCE_INLINE void copyPop(DicNode *dest) {
+    AK_FORCE_INLINE void copyPop(DicNode *const dest) {
         if (mDicNodesQueue.empty()) {
             ASSERT(false);
             return;
@@ -88,62 +88,34 @@
         if (dest) {
             DicNodeUtils::initByCopy(node, dest);
         }
-        node->remove();
+        mDicNodePool.placeBackInstance(node);
         mDicNodesQueue.pop();
     }
 
-    void onReleased(DicNode *dicNode) {
-        const int index = static_cast<int>(dicNode - &mDicNodesBuf[0]);
-        if (mUnusedNodeIndices[index] != NOT_A_NODE_ID) {
-            // it's already released
-            return;
-        }
-        mUnusedNodeIndices[index] = mNextUnusedNodeId;
-        mNextUnusedNodeId = index;
-        ASSERT(index >= 0 && index < (mCapacity + 1));
-    }
-
-    AK_FORCE_INLINE void dump() const {
-        AKLOGI("\n\n\n\n\n===========================");
-        for (int i = 0; i < mCapacity + 1; ++i) {
-            if (mDicNodesBuf[i].isUsed()) {
-                mDicNodesBuf[i].dump("QUEUE: ");
-            }
-        }
-        AKLOGI("===========================\n\n\n\n\n");
+    AK_FORCE_INLINE void dump() {
+        mDicNodePool.dump();
     }
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(DicNodePriorityQueue);
-    static const int NOT_A_NODE_ID = -1;
 
-    AK_FORCE_INLINE static bool compareDicNode(DicNode *left, DicNode *right) {
+    AK_FORCE_INLINE static bool compareDicNode(const DicNode *const left,
+            const DicNode *const right) {
         return left->compare(right);
     }
 
     struct DicNodeComparator {
-        bool operator ()(DicNode *left, DicNode *right) {
+        bool operator ()(const DicNode *left, const DicNode *right) const {
             return compareDicNode(left, right);
         }
     };
 
     typedef std::priority_queue<DicNode *, std::vector<DicNode *>, DicNodeComparator> DicNodesQueue;
-    const int mCapacity;
     int mMaxSize;
-    std::vector<DicNode> mDicNodesBuf; // of each element of mDicNodesBuf respectively
-    std::vector<int> mUnusedNodeIndices;
-    int mNextUnusedNodeId;
     DicNodesQueue mDicNodesQueue;
+    DicNodePool mDicNodePool;
 
-    inline bool isFull(const int maxSize) const {
-        return getSize() >= maxSize;
-    }
-
-    AK_FORCE_INLINE void pop() {
-        copyPop(0);
-    }
-
-    AK_FORCE_INLINE bool betterThanWorstDicNode(DicNode *dicNode) const {
+    AK_FORCE_INLINE bool betterThanWorstDicNode(const DicNode *const dicNode) const {
         DicNode *worstNode = mDicNodesQueue.top();
         if (!worstNode) {
             return true;
@@ -151,61 +123,13 @@
         return compareDicNode(dicNode, worstNode);
     }
 
-    AK_FORCE_INLINE DicNode *searchEmptyDicNode() {
-        if (mCapacity == 0) {
-            return 0;
-        }
-        if (mNextUnusedNodeId == NOT_A_NODE_ID) {
-            AKLOGI("No unused node found.");
-            for (int i = 0; i < mCapacity + 1; ++i) {
-                AKLOGI("Dump node availability, %d, %d, %d",
-                        i, mDicNodesBuf[i].isUsed(), mUnusedNodeIndices[i]);
-            }
-            ASSERT(false);
-            return 0;
-        }
-        DicNode *dicNode = &mDicNodesBuf[mNextUnusedNodeId];
-        markNodeAsUsed(dicNode);
-        return dicNode;
-    }
-
-    AK_FORCE_INLINE void markNodeAsUsed(DicNode *dicNode) {
-        const int index = static_cast<int>(dicNode - &mDicNodesBuf[0]);
-        mNextUnusedNodeId = mUnusedNodeIndices[index];
-        mUnusedNodeIndices[index] = NOT_A_NODE_ID;
-        ASSERT(index >= 0 && index < (mCapacity + 1));
-    }
-
-    AK_FORCE_INLINE DicNode *pushPoolNodeWithMaxSize(DicNode *dicNode, const int maxSize) {
-        if (!dicNode) {
-            return 0;
-        }
-        if (!isFull(maxSize)) {
-            mDicNodesQueue.push(dicNode);
-            return dicNode;
-        }
-        if (betterThanWorstDicNode(dicNode)) {
-            pop();
-            mDicNodesQueue.push(dicNode);
-            return dicNode;
-        }
-        dicNode->remove();
-        return 0;
-    }
-
-    // Copy
-    AK_FORCE_INLINE DicNode *copyPush(DicNode *dicNode, const int maxSize) {
-        return pushPoolNodeWithMaxSize(newDicNode(dicNode), maxSize);
-    }
-
-    AK_FORCE_INLINE DicNode *newDicNode(DicNode *dicNode) {
-        DicNode *newNode = searchEmptyDicNode();
+    AK_FORCE_INLINE DicNode *newDicNode(const DicNode *const dicNode) {
+        DicNode *newNode = mDicNodePool.getInstance();
         if (newNode) {
             DicNodeUtils::initByCopy(dicNode, newNode);
         }
         return newNode;
     }
-
 };
 } // namespace latinime
 #endif // LATINIME_DIC_NODE_PRIORITY_QUEUE_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h b/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
deleted file mode 100644
index 2ca4f21..0000000
--- a/native/jni/src/suggest/core/dicnode/dic_node_release_listener.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef LATINIME_DIC_NODE_RELEASE_LISTENER_H
-#define LATINIME_DIC_NODE_RELEASE_LISTENER_H
-
-#include "defines.h"
-
-namespace latinime {
-
-class DicNode;
-
-class DicNodeReleaseListener {
- public:
-    DicNodeReleaseListener() {}
-    virtual ~DicNodeReleaseListener() {}
-    virtual void onReleased(DicNode *dicNode) = 0;
- private:
-    DISALLOW_COPY_AND_ASSIGN(DicNodeReleaseListener);
-};
-} // namespace latinime
-#endif // LATINIME_DIC_NODE_RELEASE_LISTENER_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index ec65114..4445f4a 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -16,13 +16,10 @@
 
 #include "suggest/core/dicnode/dic_node_utils.h"
 
-#include <cstring>
-
 #include "suggest/core/dicnode/dic_node.h"
 #include "suggest/core/dicnode/dic_node_vector.h"
 #include "suggest/core/dictionary/multi_bigram_map.h"
 #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "utils/char_utils.h"
 
 namespace latinime {
 
@@ -32,34 +29,35 @@
 
 /* static */ void DicNodeUtils::initAsRoot(
         const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-        const int prevWordNodePos, DicNode *const newRootNode) {
-    newRootNode->initAsRoot(dictionaryStructurePolicy->getRootPosition(), prevWordNodePos);
+        const int *const prevWordsPtNodePos, DicNode *const newRootDicNode) {
+    newRootDicNode->initAsRoot(dictionaryStructurePolicy->getRootPosition(), prevWordsPtNodePos);
 }
 
 /*static */ void DicNodeUtils::initAsRootWithPreviousWord(
         const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-        DicNode *const prevWordLastNode, DicNode *const newRootNode) {
-    newRootNode->initAsRootWithPreviousWord(
-            prevWordLastNode, dictionaryStructurePolicy->getRootPosition());
+        const DicNode *const prevWordLastDicNode, DicNode *const newRootDicNode) {
+    newRootDicNode->initAsRootWithPreviousWord(
+            prevWordLastDicNode, dictionaryStructurePolicy->getRootPosition());
 }
 
-/* static */ void DicNodeUtils::initByCopy(DicNode *srcNode, DicNode *destNode) {
-    destNode->initByCopy(srcNode);
+/* static */ void DicNodeUtils::initByCopy(const DicNode *const srcDicNode,
+        DicNode *const destDicNode) {
+    destDicNode->initByCopy(srcDicNode);
 }
 
 ///////////////////////////////////
 // Traverse node expansion utils //
 ///////////////////////////////////
-/* static */ void DicNodeUtils::getAllChildDicNodes(DicNode *dicNode,
+/* static */ void DicNodeUtils::getAllChildDicNodes(const DicNode *dicNode,
         const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-        DicNodeVector *childDicNodes) {
+        DicNodeVector *const childDicNodes) {
     if (dicNode->isTotalInputSizeExceedingLimit()) {
         return;
     }
     if (!dicNode->isLeavingNode()) {
         childDicNodes->pushPassingChild(dicNode);
     } else {
-        dictionaryStructurePolicy->createAndGetAllChildNodes(dicNode, childDicNodes);
+        dictionaryStructurePolicy->createAndGetAllChildDicNodes(dicNode, childDicNodes);
     }
 }
 
@@ -71,11 +69,11 @@
  */
 /* static */ float DicNodeUtils::getBigramNodeImprobability(
         const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-        const DicNode *const node, MultiBigramMap *multiBigramMap) {
-    if (node->hasMultipleWords() && !node->isValidMultipleWordSuggestion()) {
+        const DicNode *const dicNode, MultiBigramMap *const multiBigramMap) {
+    if (dicNode->hasMultipleWords() && !dicNode->isValidMultipleWordSuggestion()) {
         return static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
     }
-    const int probability = getBigramNodeProbability(dictionaryStructurePolicy, node,
+    const int probability = getBigramNodeProbability(dictionaryStructurePolicy, dicNode,
             multiBigramMap);
     // TODO: This equation to calculate the improbability looks unreasonable.  Investigate this.
     const float cost = static_cast<float>(MAX_PROBABILITY - probability)
@@ -85,52 +83,22 @@
 
 /* static */ int DicNodeUtils::getBigramNodeProbability(
         const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-        const DicNode *const node, MultiBigramMap *multiBigramMap) {
-    const int unigramProbability = node->getProbability();
-    const int wordPos = node->getPos();
-    const int prevWordPos = node->getPrevWordPos();
-    if (NOT_A_DICT_POS == wordPos || NOT_A_DICT_POS == prevWordPos) {
+        const DicNode *const dicNode, MultiBigramMap *const multiBigramMap) {
+    const int unigramProbability = dicNode->getProbability();
+    const int ptNodePos = dicNode->getPtNodePos();
+    const int prevWordTerminalPtNodePos = dicNode->getNthPrevWordTerminalPtNodePos(1 /* n */);
+    if (NOT_A_DICT_POS == ptNodePos || NOT_A_DICT_POS == prevWordTerminalPtNodePos) {
         // Note: Normally wordPos comes from the dictionary and should never equal
         // NOT_A_VALID_WORD_POS.
         return dictionaryStructurePolicy->getProbability(unigramProbability,
                 NOT_A_PROBABILITY);
     }
     if (multiBigramMap) {
-        return multiBigramMap->getBigramProbability(dictionaryStructurePolicy, prevWordPos,
-                wordPos, unigramProbability);
+        return multiBigramMap->getBigramProbability(dictionaryStructurePolicy,
+                prevWordTerminalPtNodePos, ptNodePos, unigramProbability);
     }
     return dictionaryStructurePolicy->getProbability(unigramProbability,
             NOT_A_PROBABILITY);
 }
 
-////////////////
-// Char utils //
-////////////////
-
-// TODO: Move to char_utils?
-/* static */ int DicNodeUtils::appendTwoWords(const int *const src0, const int16_t length0,
-        const int *const src1, const int16_t length1, int *dest) {
-    int actualLength0 = 0;
-    for (int i = 0; i < length0; ++i) {
-        if (src0[i] == 0) {
-            break;
-        }
-        actualLength0 = i + 1;
-    }
-    actualLength0 = min(actualLength0, MAX_WORD_LENGTH);
-    memcpy(dest, src0, actualLength0 * sizeof(dest[0]));
-    if (!src1 || length1 == 0) {
-        return actualLength0;
-    }
-    int actualLength1 = 0;
-    for (int i = 0; i < length1; ++i) {
-        if (src1[i] == 0) {
-            break;
-        }
-        actualLength1 = i + 1;
-    }
-    actualLength1 = min(actualLength1, MAX_WORD_LENGTH - actualLength0);
-    memcpy(&dest[actualLength0], src1, actualLength1 * sizeof(dest[0]));
-    return actualLength0 + actualLength1;
-}
 } // namespace latinime
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.h b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
index 3fb351a..00e80c6 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.h
@@ -17,8 +17,6 @@
 #ifndef LATINIME_DIC_NODE_UTILS_H
 #define LATINIME_DIC_NODE_UTILS_H
 
-#include <stdint.h>
-
 #include "defines.h"
 
 namespace latinime {
@@ -30,21 +28,19 @@
 
 class DicNodeUtils {
  public:
-    static int appendTwoWords(const int *src0, const int16_t length0, const int *src1,
-            const int16_t length1, int *dest);
     static void initAsRoot(
             const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-            const int prevWordNodePos, DicNode *newRootNode);
+            const int *const prevWordPtNodePos, DicNode *const newRootDicNode);
     static void initAsRootWithPreviousWord(
             const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-            DicNode *prevWordLastNode, DicNode *newRootNode);
-    static void initByCopy(DicNode *srcNode, DicNode *destNode);
-    static void getAllChildDicNodes(DicNode *dicNode,
+            const DicNode *const prevWordLastDicNode, DicNode *const newRootDicNode);
+    static void initByCopy(const DicNode *const srcDicNode, DicNode *const destDicNode);
+    static void getAllChildDicNodes(const DicNode *dicNode,
             const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
             DicNodeVector *childDicNodes);
     static float getBigramNodeImprobability(
             const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-            const DicNode *const node, MultiBigramMap *const multiBigramMap);
+            const DicNode *const dicNode, MultiBigramMap *const multiBigramMap);
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(DicNodeUtils);
@@ -53,7 +49,7 @@
 
     static int getBigramNodeProbability(
             const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-            const DicNode *const node, MultiBigramMap *multiBigramMap);
+            const DicNode *const dicNode, MultiBigramMap *const multiBigramMap);
 };
 } // namespace latinime
 #endif // LATINIME_DIC_NODE_UTILS_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_vector.h b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
index 42addae..54cde19 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_vector.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
@@ -32,10 +32,10 @@
 #else
     static const int DEFAULT_NODES_SIZE_FOR_OPTIMIZATION = 60;
 #endif
-    AK_FORCE_INLINE DicNodeVector() : mDicNodes(0), mLock(false), mEmptyNode() {}
+    AK_FORCE_INLINE DicNodeVector() : mDicNodes(), mLock(false) {}
 
     // Specify the capacity of the vector
-    AK_FORCE_INLINE DicNodeVector(const int size) : mDicNodes(0), mLock(false), mEmptyNode() {
+    AK_FORCE_INLINE DicNodeVector(const int size) : mDicNodes(), mLock(false) {
         mDicNodes.reserve(size);
     }
 
@@ -52,24 +52,20 @@
         return static_cast<int>(mDicNodes.size());
     }
 
-    bool exceeds(const size_t limit) const {
-        return mDicNodes.size() >= limit;
-    }
-
-    void pushPassingChild(DicNode *dicNode) {
+    void pushPassingChild(const DicNode *dicNode) {
         ASSERT(!mLock);
-        mDicNodes.push_back(mEmptyNode);
+        mDicNodes.emplace_back();
         mDicNodes.back().initAsPassingChild(dicNode);
     }
 
-    void pushLeavingChild(const DicNode *const dicNode, const int pos, const int childrenPos,
-            const int probability, const bool isTerminal, const bool hasChildren,
-            const bool isBlacklistedOrNotAWord, const uint16_t mergedNodeCodePointCount,
-            const int *const mergedNodeCodePoints) {
+    void pushLeavingChild(const DicNode *const dicNode, const int ptNodePos,
+            const int childrenPtNodeArrayPos, const int probability, const bool isTerminal,
+            const bool hasChildren, const bool isBlacklistedOrNotAWord,
+            const uint16_t mergedNodeCodePointCount, const int *const mergedNodeCodePoints) {
         ASSERT(!mLock);
-        mDicNodes.push_back(mEmptyNode);
-        mDicNodes.back().initAsChild(dicNode, pos, childrenPos, probability, isTerminal,
-                hasChildren, isBlacklistedOrNotAWord, mergedNodeCodePointCount,
+        mDicNodes.emplace_back();
+        mDicNodes.back().initAsChild(dicNode, ptNodePos, childrenPtNodeArrayPos, probability,
+                isTerminal, hasChildren, isBlacklistedOrNotAWord, mergedNodeCodePointCount,
                 mergedNodeCodePoints);
     }
 
@@ -80,14 +76,13 @@
 
     DicNode *front() {
         ASSERT(1 <= static_cast<int>(mDicNodes.size()));
-        return &mDicNodes[0];
+        return &mDicNodes.front();
     }
 
  private:
     DISALLOW_COPY_AND_ASSIGN(DicNodeVector);
     std::vector<DicNode> mDicNodes;
     bool mLock;
-    DicNode mEmptyNode;
 };
 } // namespace latinime
 #endif // LATINIME_DIC_NODE_VECTOR_H
diff --git a/native/jni/src/suggest/core/dicnode/dic_nodes_cache.cpp b/native/jni/src/suggest/core/dicnode/dic_nodes_cache.cpp
index b6be47e..ef4a6b5 100644
--- a/native/jni/src/suggest/core/dicnode/dic_nodes_cache.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_nodes_cache.cpp
@@ -28,37 +28,4 @@
 // Capacity for reducing memory footprint.
 const int DicNodesCache::SMALL_PRIORITY_QUEUE_CAPACITY = 100;
 
-/**
- * Truncates all of the dicNodes so that they start at the given commit point.
- * Only called for multi-word typing input.
- */
-DicNode *DicNodesCache::setCommitPoint(int commitPoint) {
-    std::list<DicNode> dicNodesList;
-    while (mCachedDicNodesForContinuousSuggestion->getSize() > 0) {
-        DicNode dicNode;
-        mCachedDicNodesForContinuousSuggestion->copyPop(&dicNode);
-        dicNodesList.push_front(dicNode);
-    }
-
-    // Get the starting words of the top scoring dicNode (last dicNode popped from priority queue)
-    // up to the commit point. These words have already been committed to the text view.
-    DicNode *topDicNode = &dicNodesList.front();
-    DicNode topDicNodeCopy;
-    DicNodeUtils::initByCopy(topDicNode, &topDicNodeCopy);
-
-    // Keep only those dicNodes that match the same starting words.
-    std::list<DicNode>::iterator iter;
-    for (iter = dicNodesList.begin(); iter != dicNodesList.end(); iter++) {
-        DicNode *dicNode = &*iter;
-        if (dicNode->truncateNode(&topDicNodeCopy, commitPoint)) {
-            mCachedDicNodesForContinuousSuggestion->copyPush(dicNode);
-        } else {
-            // Top dicNode should be reprocessed.
-            ASSERT(dicNode != topDicNode);
-            DicNode::managedDelete(dicNode);
-        }
-    }
-    mInputIndex -= commitPoint;
-    return topDicNode;
-}
 }  // namespace latinime
diff --git a/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h b/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h
index 8493b6a..fb76c73 100644
--- a/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h
+++ b/native/jni/src/suggest/core/dicnode/dic_nodes_cache.h
@@ -17,7 +17,7 @@
 #ifndef LATINIME_DIC_NODES_CACHE_H
 #define LATINIME_DIC_NODES_CACHE_H
 
-#include <stdint.h>
+#include <algorithm>
 
 #include "defines.h"
 #include "suggest/core/dicnode/dic_node_priority_queue.h"
@@ -48,15 +48,14 @@
     AK_FORCE_INLINE void reset(const int nextActiveSize, const int terminalSize) {
         mInputIndex = 0;
         mLastCachedInputIndex = 0;
-        // We want to use the max capacity for the current active dic node queue.
-        mActiveDicNodes->clearAndResizeToCapacity();
-        // nextActiveSize is used to limit the next iteration's active dic node size.
-        const int nextActiveSizeFittingToTheCapacity = min(nextActiveSize, getCacheCapacity());
+        // The size of current active DicNode queue doesn't have to be changed.
+        mActiveDicNodes->clear();
+        // nextActiveSize is used to limit the next iteration's active DicNode size.
+        const int nextActiveSizeFittingToTheCapacity = std::min(nextActiveSize, getCacheCapacity());
         mNextActiveDicNodes->clearAndResize(nextActiveSizeFittingToTheCapacity);
         mTerminalDicNodes->clearAndResize(terminalSize);
-        // We want to use the max capacity for the cached dic nodes that will be used for the
-        // continuous suggestion.
-        mCachedDicNodesForContinuousSuggestion->clearAndResizeToCapacity();
+        // The size of cached DicNode queue doesn't have to be changed.
+        mCachedDicNodesForContinuousSuggestion->clear();
     }
 
     AK_FORCE_INLINE void continueSearch() {
@@ -75,8 +74,6 @@
                 moveNodesAndReturnReusableEmptyQueue(mNextActiveDicNodes, &mActiveDicNodes);
     }
 
-    DicNode *setCommitPoint(int commitPoint);
-
     int activeSize() const { return mActiveDicNodes->getSize(); }
     int terminalSize() const { return mTerminalDicNodes->getSize(); }
     bool isLookAheadCorrectionInputIndex(const int inputIndex) const {
@@ -96,19 +93,12 @@
         mActiveDicNodes->copyPush(dicNode);
     }
 
-    AK_FORCE_INLINE bool copyPushContinue(DicNode *dicNode) {
-        return mCachedDicNodesForContinuousSuggestion->copyPush(dicNode);
+    AK_FORCE_INLINE void copyPushContinue(DicNode *dicNode) {
+        mCachedDicNodesForContinuousSuggestion->copyPush(dicNode);
     }
 
     AK_FORCE_INLINE void copyPushNextActive(DicNode *dicNode) {
-        DicNode *pushedDicNode = mNextActiveDicNodes->copyPush(dicNode);
-        if (!pushedDicNode) {
-            if (dicNode->isCached()) {
-                dicNode->remove();
-            }
-            // We simply drop any dic node that was not cached, ignoring the slim chance
-            // that one of its children represents what the user really wanted.
-        }
+        mNextActiveDicNodes->copyPush(dicNode);
     }
 
     void popTerminal(DicNode *dest) {
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
index 9e0f62c..8202176 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
@@ -17,80 +17,98 @@
 #ifndef LATINIME_DIC_NODE_PROPERTIES_H
 #define LATINIME_DIC_NODE_PROPERTIES_H
 
-#include <stdint.h>
+#include <cstdint>
 
 #include "defines.h"
 
 namespace latinime {
 
 /**
- * Node for traversing the lexicon trie.
+ * PtNode information related to the DicNode from the lexicon trie.
  */
-// TODO: Introduce a dictionary node class which has attribute members required to understand the
-// dictionary structure.
 class DicNodeProperties {
  public:
     AK_FORCE_INLINE DicNodeProperties()
-            : mPos(0), mChildrenPos(0), mProbability(0), mNodeCodePoint(0), mIsTerminal(false),
-              mHasChildren(false), mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0) {}
+            : mPtNodePos(NOT_A_DICT_POS), mChildrenPtNodeArrayPos(NOT_A_DICT_POS),
+              mProbability(NOT_A_PROBABILITY), mDicNodeCodePoint(NOT_A_CODE_POINT),
+              mIsTerminal(false), mHasChildrenPtNodes(false),
+              mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0) {}
 
-    virtual ~DicNodeProperties() {}
+    ~DicNodeProperties() {}
 
     // Should be called only once per DicNode is initialized.
     void init(const int pos, const int childrenPos, const int nodeCodePoint, const int probability,
             const bool isTerminal, const bool hasChildren, const bool isBlacklistedOrNotAWord,
-            const uint16_t depth, const uint16_t leavingDepth) {
-        mPos = pos;
-        mChildrenPos = childrenPos;
-        mNodeCodePoint = nodeCodePoint;
+            const uint16_t depth, const uint16_t leavingDepth, const int *const prevWordsNodePos) {
+        mPtNodePos = pos;
+        mChildrenPtNodeArrayPos = childrenPos;
+        mDicNodeCodePoint = nodeCodePoint;
         mProbability = probability;
         mIsTerminal = isTerminal;
-        mHasChildren = hasChildren;
+        mHasChildrenPtNodes = hasChildren;
         mIsBlacklistedOrNotAWord = isBlacklistedOrNotAWord;
         mDepth = depth;
         mLeavingDepth = leavingDepth;
+        memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
     }
 
-    // Init for copy
-    void init(const DicNodeProperties *const nodeProp) {
-        mPos = nodeProp->mPos;
-        mChildrenPos = nodeProp->mChildrenPos;
-        mNodeCodePoint = nodeProp->mNodeCodePoint;
-        mProbability = nodeProp->mProbability;
-        mIsTerminal = nodeProp->mIsTerminal;
-        mHasChildren = nodeProp->mHasChildren;
-        mIsBlacklistedOrNotAWord = nodeProp->mIsBlacklistedOrNotAWord;
-        mDepth = nodeProp->mDepth;
-        mLeavingDepth = nodeProp->mLeavingDepth;
+    // Init for root with prevWordsPtNodePos which is used for n-gram
+    void init(const int rootPtNodeArrayPos, const int *const prevWordsNodePos) {
+        mPtNodePos = NOT_A_DICT_POS;
+        mChildrenPtNodeArrayPos = rootPtNodeArrayPos;
+        mDicNodeCodePoint = NOT_A_CODE_POINT;
+        mProbability = NOT_A_PROBABILITY;
+        mIsTerminal = false;
+        mHasChildrenPtNodes = true;
+        mIsBlacklistedOrNotAWord = false;
+        mDepth = 0;
+        mLeavingDepth = 0;
+        memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
+    }
+
+    void initByCopy(const DicNodeProperties *const dicNodeProp) {
+        mPtNodePos = dicNodeProp->mPtNodePos;
+        mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
+        mDicNodeCodePoint = dicNodeProp->mDicNodeCodePoint;
+        mProbability = dicNodeProp->mProbability;
+        mIsTerminal = dicNodeProp->mIsTerminal;
+        mHasChildrenPtNodes = dicNodeProp->mHasChildrenPtNodes;
+        mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
+        mDepth = dicNodeProp->mDepth;
+        mLeavingDepth = dicNodeProp->mLeavingDepth;
+        memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+                sizeof(mPrevWordsTerminalPtNodePos));
     }
 
     // Init as passing child
-    void init(const DicNodeProperties *const nodeProp, const int codePoint) {
-        mPos = nodeProp->mPos;
-        mChildrenPos = nodeProp->mChildrenPos;
-        mNodeCodePoint = codePoint; // Overwrite the node char of a passing child
-        mProbability = nodeProp->mProbability;
-        mIsTerminal = nodeProp->mIsTerminal;
-        mHasChildren = nodeProp->mHasChildren;
-        mIsBlacklistedOrNotAWord = nodeProp->mIsBlacklistedOrNotAWord;
-        mDepth = nodeProp->mDepth + 1; // Increment the depth of a passing child
-        mLeavingDepth = nodeProp->mLeavingDepth;
+    void init(const DicNodeProperties *const dicNodeProp, const int codePoint) {
+        mPtNodePos = dicNodeProp->mPtNodePos;
+        mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
+        mDicNodeCodePoint = codePoint; // Overwrite the node char of a passing child
+        mProbability = dicNodeProp->mProbability;
+        mIsTerminal = dicNodeProp->mIsTerminal;
+        mHasChildrenPtNodes = dicNodeProp->mHasChildrenPtNodes;
+        mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
+        mDepth = dicNodeProp->mDepth + 1; // Increment the depth of a passing child
+        mLeavingDepth = dicNodeProp->mLeavingDepth;
+        memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+                sizeof(mPrevWordsTerminalPtNodePos));
     }
 
-    int getPos() const {
-        return mPos;
+    int getPtNodePos() const {
+        return mPtNodePos;
     }
 
-    int getChildrenPos() const {
-        return mChildrenPos;
+    int getChildrenPtNodeArrayPos() const {
+        return mChildrenPtNodeArrayPos;
     }
 
     int getProbability() const {
         return mProbability;
     }
 
-    int getNodeCodePoint() const {
-        return mNodeCodePoint;
+    int getDicNodeCodePoint() const {
+        return mDicNodeCodePoint;
     }
 
     uint16_t getDepth() const {
@@ -107,26 +125,31 @@
     }
 
     bool hasChildren() const {
-        return mHasChildren || mDepth != mLeavingDepth;
+        return mHasChildrenPtNodes || mDepth != mLeavingDepth;
     }
 
     bool isBlacklistedOrNotAWord() const {
         return mIsBlacklistedOrNotAWord;
     }
 
+    const int *getPrevWordsTerminalPtNodePos() const {
+        return mPrevWordsTerminalPtNodePos;
+    }
+
  private:
     // Caution!!!
     // Use a default copy constructor and an assign operator because shallow copies are ok
     // for this class
-    int mPos;
-    int mChildrenPos;
+    int mPtNodePos;
+    int mChildrenPtNodeArrayPos;
     int mProbability;
-    int mNodeCodePoint;
+    int mDicNodeCodePoint;
     bool mIsTerminal;
-    bool mHasChildren;
+    bool mHasChildrenPtNodes;
     bool mIsBlacklistedOrNotAWord;
     uint16_t mDepth;
     uint16_t mLeavingDepth;
+    int mPrevWordsTerminalPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
 };
 } // namespace latinime
 #endif // LATINIME_DIC_NODE_PROPERTIES_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
index b0fddb7..badb1f5 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
@@ -20,7 +20,6 @@
 #include "defines.h"
 #include "suggest/core/dicnode/internal/dic_node_state_input.h"
 #include "suggest/core/dicnode/internal/dic_node_state_output.h"
-#include "suggest/core/dicnode/internal/dic_node_state_prevword.h"
 #include "suggest/core/dicnode/internal/dic_node_state_scoring.h"
 
 namespace latinime {
@@ -29,44 +28,53 @@
  public:
     DicNodeStateInput mDicNodeStateInput;
     DicNodeStateOutput mDicNodeStateOutput;
-    DicNodeStatePrevWord mDicNodeStatePrevWord;
     DicNodeStateScoring mDicNodeStateScoring;
 
     AK_FORCE_INLINE DicNodeState()
-            : mDicNodeStateInput(), mDicNodeStateOutput(), mDicNodeStatePrevWord(),
-              mDicNodeStateScoring() {
+            : mDicNodeStateInput(), mDicNodeStateOutput(), mDicNodeStateScoring() {}
+
+    ~DicNodeState() {}
+
+    DicNodeState &operator=(const DicNodeState& src) {
+        initByCopy(&src);
+        return *this;
     }
 
-    virtual ~DicNodeState() {}
+    DicNodeState(const DicNodeState& src)
+            : mDicNodeStateInput(), mDicNodeStateOutput(), mDicNodeStateScoring() {
+        initByCopy(&src);
+    }
 
-    // Init with prevWordPos
-    void init(const int prevWordPos) {
+    // Init for root
+    void init() {
         mDicNodeStateInput.init();
         mDicNodeStateOutput.init();
-        mDicNodeStatePrevWord.init(prevWordPos);
         mDicNodeStateScoring.init();
     }
 
+    // Init with previous word.
+    void initAsRootWithPreviousWord(const DicNodeState *prevWordDicNodeState,
+            const int prevWordCodePointCount) {
+        mDicNodeStateOutput.init(&prevWordDicNodeState->mDicNodeStateOutput);
+        mDicNodeStateInput.init(
+                &prevWordDicNodeState->mDicNodeStateInput, true /* resetTerminalDiffCost */);
+        mDicNodeStateScoring.initByCopy(&prevWordDicNodeState->mDicNodeStateScoring);
+    }
+
     // Init by copy
-    AK_FORCE_INLINE void init(const DicNodeState *const src) {
-        mDicNodeStateInput.init(&src->mDicNodeStateInput);
-        mDicNodeStateOutput.init(&src->mDicNodeStateOutput);
-        mDicNodeStatePrevWord.init(&src->mDicNodeStatePrevWord);
-        mDicNodeStateScoring.init(&src->mDicNodeStateScoring);
+    AK_FORCE_INLINE void initByCopy(const DicNodeState *const src) {
+        mDicNodeStateInput.initByCopy(&src->mDicNodeStateInput);
+        mDicNodeStateOutput.initByCopy(&src->mDicNodeStateOutput);
+        mDicNodeStateScoring.initByCopy(&src->mDicNodeStateScoring);
     }
 
     // Init by copy and adding merged node code points.
     void init(const DicNodeState *const src, const uint16_t mergedNodeCodePointCount,
             const int *const mergedNodeCodePoints) {
-        init(src);
+        initByCopy(src);
         mDicNodeStateOutput.addMergedNodeCodePoints(
                 mergedNodeCodePointCount, mergedNodeCodePoints);
     }
-
- private:
-    // Caution!!!
-    // Use a default copy constructor and an assign operator because shallow copies are ok
-    // for this class
 };
 } // namespace latinime
 #endif // LATINIME_DIC_NODE_STATE_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
index bbd9435..50a37ba 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
@@ -25,12 +25,7 @@
 class DicNodeStateInput {
  public:
     DicNodeStateInput() {}
-    virtual ~DicNodeStateInput() {}
-
-    // TODO: Merge into DicNodeStatePrevWord::truncate
-    void truncate(const int commitPoint) {
-        mInputIndex[0] -= commitPoint;
-    }
+    ~DicNodeStateInput() {}
 
     void init() {
         for (int i = 0; i < MAX_POINTER_COUNT_G; i++) {
@@ -58,7 +53,7 @@
         mTerminalDiffCost[pointerId] = terminalDiffCost;
     }
 
-    void init(const DicNodeStateInput *const src) {
+    void initByCopy(const DicNodeStateInput *const src) {
         init(src, false);
     }
 
@@ -89,9 +84,8 @@
     }
 
  private:
-    // Caution!!!
-    // Use a default copy constructor and an assign operator because shallow copies are ok
-    // for this class
+    DISALLOW_COPY_AND_ASSIGN(DicNodeStateInput);
+
     int mInputIndex[MAX_POINTER_COUNT_G];
     int mPrevCodePoint[MAX_POINTER_COUNT_G];
     float mTerminalDiffCost[MAX_POINTER_COUNT_G];
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
index 74eb5df..69a886f 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
@@ -17,63 +17,135 @@
 #ifndef LATINIME_DIC_NODE_STATE_OUTPUT_H
 #define LATINIME_DIC_NODE_STATE_OUTPUT_H
 
-#include <cstring> // for memcpy()
-#include <stdint.h>
+#include <algorithm>
+#include <cstdint>
+#include <cstring> // for memmove()
 
 #include "defines.h"
 
 namespace latinime {
 
+// Class to have information to be output. This can contain previous words when the suggestion
+// is a multi-word suggestion.
 class DicNodeStateOutput {
  public:
-    DicNodeStateOutput() : mOutputtedCodePointCount(0) {
-        init();
-    }
+    DicNodeStateOutput()
+            : mOutputtedCodePointCount(0), mCurrentWordStart(0), mPrevWordCount(0),
+              mPrevWordsLength(0), mPrevWordStart(0), mSecondWordFirstInputIndex(NOT_AN_INDEX) {}
 
-    virtual ~DicNodeStateOutput() {}
+    ~DicNodeStateOutput() {}
 
+    // Init for root
     void init() {
         mOutputtedCodePointCount = 0;
-        mCodePointsBuf[0] = 0;
+        mCurrentWordStart = 0;
+        mOutputCodePoints[0] = 0;
+        mPrevWordCount = 0;
+        mPrevWordsLength = 0;
+        mPrevWordStart = 0;
+        mSecondWordFirstInputIndex = NOT_AN_INDEX;
     }
 
+    // Init for next word.
     void init(const DicNodeStateOutput *const stateOutput) {
-        memcpy(mCodePointsBuf, stateOutput->mCodePointsBuf,
-                stateOutput->mOutputtedCodePointCount * sizeof(mCodePointsBuf[0]));
+        mOutputtedCodePointCount = stateOutput->mOutputtedCodePointCount + 1;
+        memmove(mOutputCodePoints, stateOutput->mOutputCodePoints,
+                stateOutput->mOutputtedCodePointCount * sizeof(mOutputCodePoints[0]));
+        mOutputCodePoints[stateOutput->mOutputtedCodePointCount] = KEYCODE_SPACE;
+        mCurrentWordStart = stateOutput->mOutputtedCodePointCount + 1;
+        mPrevWordCount = std::min(static_cast<int16_t>(stateOutput->mPrevWordCount + 1),
+                static_cast<int16_t>(MAX_RESULTS));
+        mPrevWordsLength = stateOutput->mOutputtedCodePointCount + 1;
+        mPrevWordStart = stateOutput->mCurrentWordStart;
+        mSecondWordFirstInputIndex = stateOutput->mSecondWordFirstInputIndex;
+    }
+
+    void initByCopy(const DicNodeStateOutput *const stateOutput) {
+        memmove(mOutputCodePoints, stateOutput->mOutputCodePoints,
+                stateOutput->mOutputtedCodePointCount * sizeof(mOutputCodePoints[0]));
         mOutputtedCodePointCount = stateOutput->mOutputtedCodePointCount;
         if (mOutputtedCodePointCount < MAX_WORD_LENGTH) {
-            mCodePointsBuf[mOutputtedCodePointCount] = 0;
+            mOutputCodePoints[mOutputtedCodePointCount] = 0;
         }
+        mCurrentWordStart = stateOutput->mCurrentWordStart;
+        mPrevWordCount = stateOutput->mPrevWordCount;
+        mPrevWordsLength = stateOutput->mPrevWordsLength;
+        mPrevWordStart = stateOutput->mPrevWordStart;
+        mSecondWordFirstInputIndex = stateOutput->mSecondWordFirstInputIndex;
     }
 
     void addMergedNodeCodePoints(const uint16_t mergedNodeCodePointCount,
             const int *const mergedNodeCodePoints) {
         if (mergedNodeCodePoints) {
-            const int additionalCodePointCount = min(static_cast<int>(mergedNodeCodePointCount),
+            const int additionalCodePointCount = std::min(
+                    static_cast<int>(mergedNodeCodePointCount),
                     MAX_WORD_LENGTH - mOutputtedCodePointCount);
-            memcpy(&mCodePointsBuf[mOutputtedCodePointCount], mergedNodeCodePoints,
-                    additionalCodePointCount * sizeof(mCodePointsBuf[0]));
+            memmove(&mOutputCodePoints[mOutputtedCodePointCount], mergedNodeCodePoints,
+                    additionalCodePointCount * sizeof(mOutputCodePoints[0]));
             mOutputtedCodePointCount = static_cast<uint16_t>(
-                    mOutputtedCodePointCount + mergedNodeCodePointCount);
+                    mOutputtedCodePointCount + additionalCodePointCount);
             if (mOutputtedCodePointCount < MAX_WORD_LENGTH) {
-                mCodePointsBuf[mOutputtedCodePointCount] = 0;
+                mOutputCodePoints[mOutputtedCodePointCount] = 0;
             }
         }
     }
 
-    // TODO: Remove
-    int getCodePointAt(const int index) const {
-        return mCodePointsBuf[index];
+    int getCurrentWordCodePointAt(const int index) const {
+        return mOutputCodePoints[mCurrentWordStart + index];
     }
 
-    // TODO: Move to private
-    int mCodePointsBuf[MAX_WORD_LENGTH];
+    const int *getCodePointBuf() const {
+        return mOutputCodePoints;
+    }
+
+    void setSecondWordFirstInputIndex(const int inputIndex) {
+        mSecondWordFirstInputIndex = inputIndex;
+    }
+
+    int getSecondWordFirstInputIndex() const {
+        return mSecondWordFirstInputIndex;
+    }
+
+    // TODO: remove
+    int16_t getPrevWordsLength() const {
+        return mPrevWordsLength;
+    }
+
+    int16_t getPrevWordCount() const {
+        return mPrevWordCount;
+    }
+
+    int16_t getPrevWordStart() const {
+        return mPrevWordStart;
+    }
+
+    int getOutputCodePointAt(const int id) const {
+        return mOutputCodePoints[id];
+    }
 
  private:
-    // Caution!!!
-    // Use a default copy constructor and an assign operator because shallow copies are ok
-    // for this class
+    DISALLOW_COPY_AND_ASSIGN(DicNodeStateOutput);
+
+    // When the DicNode represents "this is a pen":
+    // mOutputtedCodePointCount is 13, which is total code point count of "this is a pen" including
+    // spaces.
+    // mCurrentWordStart indicates the head of "pen", thus it is 10.
+    // This contains 3 previous words, "this", "is" and "a"; thus, mPrevWordCount is 3.
+    // mPrevWordsLength is length of "this is a ", which is 10.
+    // mPrevWordStart is the start index of "a"; thus, it is 8.
+    // mSecondWordFirstInputIndex is the first input index of "is".
+
     uint16_t mOutputtedCodePointCount;
+    int mOutputCodePoints[MAX_WORD_LENGTH];
+    int16_t mCurrentWordStart;
+    // Previous word count in mOutputCodePoints.
+    int16_t mPrevWordCount;
+    // Total length of previous words in mOutputCodePoints. This is being used by the algorithm
+    // that may want to look at the previous word information.
+    int16_t mPrevWordsLength;
+    // Start index of the previous word in mOutputCodePoints. This is being used for auto commit.
+    int16_t mPrevWordStart;
+    int mSecondWordFirstInputIndex;
 };
 } // namespace latinime
 #endif // LATINIME_DIC_NODE_STATE_OUTPUT_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
deleted file mode 100644
index b898620..0000000
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef LATINIME_DIC_NODE_STATE_PREVWORD_H
-#define LATINIME_DIC_NODE_STATE_PREVWORD_H
-
-#include <cstring> // for memset()
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/dicnode/dic_node_utils.h"
-#include "suggest/core/layout/proximity_info_state.h"
-
-namespace latinime {
-
-class DicNodeStatePrevWord {
- public:
-    AK_FORCE_INLINE DicNodeStatePrevWord()
-            : mPrevWordCount(0), mPrevWordLength(0), mPrevWordStart(0), mPrevWordProbability(0),
-              mPrevWordNodePos(NOT_A_DICT_POS), mSecondWordFirstInputIndex(NOT_AN_INDEX) {
-        memset(mPrevWord, 0, sizeof(mPrevWord));
-    }
-
-    virtual ~DicNodeStatePrevWord() {}
-
-    void init() {
-        mPrevWordLength = 0;
-        mPrevWordCount = 0;
-        mPrevWordStart = 0;
-        mPrevWordProbability = -1;
-        mPrevWordNodePos = NOT_A_DICT_POS;
-        mSecondWordFirstInputIndex = NOT_AN_INDEX;
-    }
-
-    void init(const int prevWordNodePos) {
-        mPrevWordLength = 0;
-        mPrevWordCount = 0;
-        mPrevWordStart = 0;
-        mPrevWordProbability = -1;
-        mPrevWordNodePos = prevWordNodePos;
-        mSecondWordFirstInputIndex = NOT_AN_INDEX;
-    }
-
-    // Init by copy
-    AK_FORCE_INLINE void init(const DicNodeStatePrevWord *const prevWord) {
-        mPrevWordLength = prevWord->mPrevWordLength;
-        mPrevWordCount = prevWord->mPrevWordCount;
-        mPrevWordStart = prevWord->mPrevWordStart;
-        mPrevWordProbability = prevWord->mPrevWordProbability;
-        mPrevWordNodePos = prevWord->mPrevWordNodePos;
-        mSecondWordFirstInputIndex = prevWord->mSecondWordFirstInputIndex;
-        memcpy(mPrevWord, prevWord->mPrevWord, prevWord->mPrevWordLength * sizeof(mPrevWord[0]));
-    }
-
-    void init(const int16_t prevWordCount, const int16_t prevWordProbability,
-            const int prevWordNodePos, const int *const src0, const int16_t length0,
-            const int *const src1, const int16_t length1,
-            const int prevWordSecondWordFirstInputIndex, const int lastInputIndex) {
-        mPrevWordCount = min(prevWordCount, static_cast<int16_t>(MAX_RESULTS));
-        mPrevWordProbability = prevWordProbability;
-        mPrevWordNodePos = prevWordNodePos;
-        int twoWordsLen =
-                DicNodeUtils::appendTwoWords(src0, length0, src1, length1, mPrevWord);
-        if (twoWordsLen >= MAX_WORD_LENGTH) {
-            twoWordsLen = MAX_WORD_LENGTH - 1;
-        }
-        mPrevWord[twoWordsLen] = KEYCODE_SPACE;
-        mPrevWordStart = length0;
-        mPrevWordLength = static_cast<int16_t>(twoWordsLen + 1);
-        mSecondWordFirstInputIndex = prevWordSecondWordFirstInputIndex;
-    }
-
-    void truncate(const int offset) {
-        // TODO: memmove
-        if (mPrevWordLength < offset) {
-            memset(mPrevWord, 0, sizeof(mPrevWord));
-            mPrevWordLength = 0;
-            return;
-        }
-        const int newPrevWordLength = mPrevWordLength - offset;
-        memmove(mPrevWord, &mPrevWord[offset], newPrevWordLength * sizeof(mPrevWord[0]));
-        mPrevWordLength = newPrevWordLength;
-    }
-
-    void setSecondWordFirstInputIndex(const int inputIndex) {
-        mSecondWordFirstInputIndex = inputIndex;
-    }
-
-    int getSecondWordFirstInputIndex() const {
-        return mSecondWordFirstInputIndex;
-    }
-
-    // TODO: remove
-    int16_t getPrevWordLength() const {
-        return mPrevWordLength;
-    }
-
-    int16_t getPrevWordCount() const {
-        return mPrevWordCount;
-    }
-
-    int16_t getPrevWordStart() const {
-        return mPrevWordStart;
-    }
-
-    int getPrevWordNodePos() const {
-        return mPrevWordNodePos;
-    }
-
-    int getPrevWordCodePointAt(const int id) const {
-        return mPrevWord[id];
-    }
-
-    bool startsWith(const DicNodeStatePrevWord *const prefix, const int prefixLen) const {
-        if (prefixLen > mPrevWordLength) {
-            return false;
-        }
-        for (int i = 0; i < prefixLen; ++i) {
-            if (mPrevWord[i] != prefix->mPrevWord[i]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    // TODO: Move to private
-    int mPrevWord[MAX_WORD_LENGTH];
-
- private:
-    // Caution!!!
-    // Use a default copy constructor and an assign operator because shallow copies are ok
-    // for this class
-    int16_t mPrevWordCount;
-    int16_t mPrevWordLength;
-    int16_t mPrevWordStart;
-    int16_t mPrevWordProbability;
-    int mPrevWordNodePos;
-    int mSecondWordFirstInputIndex;
-};
-} // namespace latinime
-#endif // LATINIME_DIC_NODE_STATE_PREVWORD_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
index 3c85d0e..c19d48e 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
@@ -17,10 +17,12 @@
 #ifndef LATINIME_DIC_NODE_STATE_SCORING_H
 #define LATINIME_DIC_NODE_STATE_SCORING_H
 
-#include <stdint.h>
+#include <algorithm>
+#include <cstdint>
 
 #include "defines.h"
 #include "suggest/core/dictionary/digraph_utils.h"
+#include "suggest/core/dictionary/error_type_utils.h"
 
 namespace latinime {
 
@@ -29,17 +31,18 @@
     AK_FORCE_INLINE DicNodeStateScoring()
             : mDoubleLetterLevel(NOT_A_DOUBLE_LETTER),
               mDigraphIndex(DigraphUtils::NOT_A_DIGRAPH_INDEX),
-              mEditCorrectionCount(0), mProximityCorrectionCount(0),
+              mEditCorrectionCount(0), mProximityCorrectionCount(0), mCompletionCount(0),
               mNormalizedCompoundDistance(0.0f), mSpatialDistance(0.0f), mLanguageDistance(0.0f),
-              mRawLength(0.0f), mExactMatch(true),
+              mRawLength(0.0f), mContainedErrorTypes(ErrorTypeUtils::NOT_AN_ERROR),
               mNormalizedCompoundDistanceAfterFirstWord(MAX_VALUE_FOR_WEIGHTING) {
     }
 
-    virtual ~DicNodeStateScoring() {}
+    ~DicNodeStateScoring() {}
 
     void init() {
         mEditCorrectionCount = 0;
         mProximityCorrectionCount = 0;
+        mCompletionCount = 0;
         mNormalizedCompoundDistance = 0.0f;
         mSpatialDistance = 0.0f;
         mLanguageDistance = 0.0f;
@@ -47,46 +50,37 @@
         mDoubleLetterLevel = NOT_A_DOUBLE_LETTER;
         mDigraphIndex = DigraphUtils::NOT_A_DIGRAPH_INDEX;
         mNormalizedCompoundDistanceAfterFirstWord = MAX_VALUE_FOR_WEIGHTING;
-        mExactMatch = true;
+        mContainedErrorTypes = ErrorTypeUtils::NOT_AN_ERROR;
     }
 
-    AK_FORCE_INLINE void init(const DicNodeStateScoring *const scoring) {
+    AK_FORCE_INLINE void initByCopy(const DicNodeStateScoring *const scoring) {
         mEditCorrectionCount = scoring->mEditCorrectionCount;
         mProximityCorrectionCount = scoring->mProximityCorrectionCount;
+        mCompletionCount = scoring->mCompletionCount;
         mNormalizedCompoundDistance = scoring->mNormalizedCompoundDistance;
         mSpatialDistance = scoring->mSpatialDistance;
         mLanguageDistance = scoring->mLanguageDistance;
         mRawLength = scoring->mRawLength;
         mDoubleLetterLevel = scoring->mDoubleLetterLevel;
         mDigraphIndex = scoring->mDigraphIndex;
-        mExactMatch = scoring->mExactMatch;
+        mContainedErrorTypes = scoring->mContainedErrorTypes;
         mNormalizedCompoundDistanceAfterFirstWord =
                 scoring->mNormalizedCompoundDistanceAfterFirstWord;
     }
 
     void addCost(const float spatialCost, const float languageCost, const bool doNormalization,
-            const int inputSize, const int totalInputIndex, const ErrorType errorType) {
+            const int inputSize, const int totalInputIndex,
+            const ErrorTypeUtils::ErrorType errorType) {
         addDistance(spatialCost, languageCost, doNormalization, inputSize, totalInputIndex);
-        switch (errorType) {
-            case ET_EDIT_CORRECTION:
-                ++mEditCorrectionCount;
-                mExactMatch = false;
-                break;
-            case ET_PROXIMITY_CORRECTION:
-                ++mProximityCorrectionCount;
-                mExactMatch = false;
-                break;
-            case ET_COMPLETION:
-                mExactMatch = false;
-                break;
-            case ET_NEW_WORD:
-                mExactMatch = false;
-                break;
-            case ET_INTENTIONAL_OMISSION:
-                mExactMatch = false;
-                break;
-            case ET_NOT_AN_ERROR:
-                break;
+        mContainedErrorTypes = mContainedErrorTypes | errorType;
+        if (ErrorTypeUtils::isEditCorrectionError(errorType)) {
+            ++mEditCorrectionCount;
+        }
+        if (ErrorTypeUtils::isProximityCorrectionError(errorType)) {
+            ++mProximityCorrectionCount;
+        }
+        if (ErrorTypeUtils::isCompletion(errorType)) {
+            ++mCompletionCount;
         }
     }
 
@@ -140,6 +134,10 @@
         return mProximityCorrectionCount;
     }
 
+    int16_t getCompletionCount() const {
+        return mCompletionCount;
+    }
+
     float getRawLength() const {
         return mRawLength;
     }
@@ -181,25 +179,26 @@
         }
     }
 
-    bool isExactMatch() const {
-        return mExactMatch;
+    ErrorTypeUtils::ErrorType getContainedErrorTypes() const {
+        return mContainedErrorTypes;
     }
 
  private:
-    // Caution!!!
-    // Use a default copy constructor and an assign operator because shallow copies are ok
-    // for this class
+    DISALLOW_COPY_AND_ASSIGN(DicNodeStateScoring);
+
     DoubleLetterLevel mDoubleLetterLevel;
     DigraphUtils::DigraphCodePointIndex mDigraphIndex;
 
     int16_t mEditCorrectionCount;
     int16_t mProximityCorrectionCount;
+    int16_t mCompletionCount;
 
     float mNormalizedCompoundDistance;
     float mSpatialDistance;
     float mLanguageDistance;
     float mRawLength;
-    bool mExactMatch;
+    // All accumulated error types so far
+    ErrorTypeUtils::ErrorType mContainedErrorTypes;
     float mNormalizedCompoundDistanceAfterFirstWord;
 
     AK_FORCE_INLINE void addDistance(float spatialDistance, float languageDistance,
@@ -210,7 +209,7 @@
             mNormalizedCompoundDistance = mSpatialDistance + mLanguageDistance;
         } else {
             mNormalizedCompoundDistance = (mSpatialDistance + mLanguageDistance)
-                    / static_cast<float>(max(1, totalInputIndex));
+                    / static_cast<float>(std::max(1, totalInputIndex));
         }
     }
 };
diff --git a/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp b/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
deleted file mode 100644
index 71f4ef6..0000000
--- a/native/jni/src/suggest/core/dictionary/bigram_dictionary.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-#include <cstring>
-
-#define LOG_TAG "LatinIME: bigram_dictionary.cpp"
-
-#include "bigram_dictionary.h"
-
-#include "defines.h"
-#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
-#include "suggest/core/dictionary/dictionary.h"
-#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "utils/char_utils.h"
-
-namespace latinime {
-
-BigramDictionary::BigramDictionary(
-        const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy)
-        : mDictionaryStructurePolicy(dictionaryStructurePolicy) {
-    if (DEBUG_DICT) {
-        AKLOGI("BigramDictionary - constructor");
-    }
-}
-
-BigramDictionary::~BigramDictionary() {
-}
-
-void BigramDictionary::addWordBigram(int *word, int length, int probability, int *bigramProbability,
-        int *bigramCodePoints, int *outputTypes) const {
-    word[length] = 0;
-    if (DEBUG_DICT_FULL) {
-#ifdef FLAG_DBG
-        char s[length + 1];
-        for (int i = 0; i <= length; i++) s[i] = static_cast<char>(word[i]);
-        AKLOGI("Bigram: Found word = %s, freq = %d :", s, probability);
-#endif
-    }
-
-    // Find the right insertion point
-    int insertAt = 0;
-    while (insertAt < MAX_RESULTS) {
-        if (probability > bigramProbability[insertAt] || (bigramProbability[insertAt] == probability
-                && length < CharUtils::getCodePointCount(MAX_WORD_LENGTH,
-                        bigramCodePoints + insertAt * MAX_WORD_LENGTH))) {
-            break;
-        }
-        insertAt++;
-    }
-    if (DEBUG_DICT_FULL) {
-        AKLOGI("Bigram: InsertAt -> %d MAX_RESULTS: %d", insertAt, MAX_RESULTS);
-    }
-    if (insertAt >= MAX_RESULTS) {
-        return;
-    }
-    memmove(bigramProbability + (insertAt + 1),
-            bigramProbability + insertAt,
-            (MAX_RESULTS - insertAt - 1) * sizeof(bigramProbability[0]));
-    bigramProbability[insertAt] = probability;
-    outputTypes[insertAt] = Dictionary::KIND_PREDICTION;
-    memmove(bigramCodePoints + (insertAt + 1) * MAX_WORD_LENGTH,
-            bigramCodePoints + insertAt * MAX_WORD_LENGTH,
-            (MAX_RESULTS - insertAt - 1) * sizeof(bigramCodePoints[0]) * MAX_WORD_LENGTH);
-    int *dest = bigramCodePoints + insertAt * MAX_WORD_LENGTH;
-    while (length--) {
-        *dest++ = *word++;
-    }
-    *dest = 0; // NULL terminate
-    if (DEBUG_DICT_FULL) {
-        AKLOGI("Bigram: Added word at %d", insertAt);
-    }
-}
-
-/* Parameters :
- * prevWord: the word before, the one for which we need to look up bigrams.
- * prevWordLength: its length.
- * outBigramCodePoints: an array for output, at the same format as outwords for getSuggestions.
- * outBigramProbability: an array to output frequencies.
- * outputTypes: an array to output types.
- * This method returns the number of bigrams this word has, for backward compatibility.
- */
-int BigramDictionary::getPredictions(const int *prevWord, const int prevWordLength,
-        int *const outBigramCodePoints, int *const outBigramProbability,
-        int *const outputTypes) const {
-    // TODO: remove unused arguments, and refrain from storing stuff in members of this class
-    // TODO: have "in" arguments before "out" ones, and make out args explicit in the name
-
-    int pos = getBigramListPositionForWord(prevWord, prevWordLength,
-            false /* forceLowerCaseSearch */);
-    // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams
-    if (NOT_A_DICT_POS == pos) {
-        // If no bigrams for this exact word, search again in lower case.
-        pos = getBigramListPositionForWord(prevWord, prevWordLength,
-                true /* forceLowerCaseSearch */);
-    }
-    // If still no bigrams, we really don't have them!
-    if (NOT_A_DICT_POS == pos) return 0;
-
-    int bigramCount = 0;
-    int unigramProbability = 0;
-    int bigramBuffer[MAX_WORD_LENGTH];
-    BinaryDictionaryBigramsIterator bigramsIt(
-            mDictionaryStructurePolicy->getBigramsStructurePolicy(), pos);
-    while (bigramsIt.hasNext()) {
-        bigramsIt.next();
-        if (bigramsIt.getBigramPos() == NOT_A_DICT_POS) {
-            continue;
-        }
-        const int codePointCount = mDictionaryStructurePolicy->
-                getCodePointsAndProbabilityAndReturnCodePointCount(bigramsIt.getBigramPos(),
-                        MAX_WORD_LENGTH, bigramBuffer, &unigramProbability);
-        if (codePointCount <= 0) {
-            continue;
-        }
-        // Due to space constraints, the probability for bigrams is approximate - the lower the
-        // unigram probability, the worse the precision. The theoritical maximum error in
-        // resulting probability is 8 - although in the practice it's never bigger than 3 or 4
-        // in very bad cases. This means that sometimes, we'll see some bigrams interverted
-        // here, but it can't get too bad.
-        const int probability = mDictionaryStructurePolicy->getProbability(
-                unigramProbability, bigramsIt.getProbability());
-        addWordBigram(bigramBuffer, codePointCount, probability, outBigramProbability,
-                outBigramCodePoints, outputTypes);
-        ++bigramCount;
-    }
-    return min(bigramCount, MAX_RESULTS);
-}
-
-// Returns a pointer to the start of the bigram list.
-// If the word is not found or has no bigrams, this function returns NOT_A_DICT_POS.
-int BigramDictionary::getBigramListPositionForWord(const int *prevWord, const int prevWordLength,
-        const bool forceLowerCaseSearch) const {
-    if (0 >= prevWordLength) return NOT_A_DICT_POS;
-    int pos = mDictionaryStructurePolicy->getTerminalNodePositionOfWord(prevWord, prevWordLength,
-            forceLowerCaseSearch);
-    if (NOT_A_DICT_POS == pos) return NOT_A_DICT_POS;
-    return mDictionaryStructurePolicy->getBigramsPositionOfPtNode(pos);
-}
-
-int BigramDictionary::getBigramProbability(const int *word0, int length0, const int *word1,
-        int length1) const {
-    int pos = getBigramListPositionForWord(word0, length0, false /* forceLowerCaseSearch */);
-    // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams
-    if (NOT_A_DICT_POS == pos) return NOT_A_PROBABILITY;
-    int nextWordPos = mDictionaryStructurePolicy->getTerminalNodePositionOfWord(word1, length1,
-            false /* forceLowerCaseSearch */);
-    if (NOT_A_DICT_POS == nextWordPos) return NOT_A_PROBABILITY;
-
-    BinaryDictionaryBigramsIterator bigramsIt(
-            mDictionaryStructurePolicy->getBigramsStructurePolicy(), pos);
-    while (bigramsIt.hasNext()) {
-        bigramsIt.next();
-        if (bigramsIt.getBigramPos() == nextWordPos) {
-            return mDictionaryStructurePolicy->getProbability(
-                    mDictionaryStructurePolicy->getUnigramProbabilityOfPtNode(nextWordPos),
-                    bigramsIt.getProbability());
-        }
-    }
-    return NOT_A_PROBABILITY;
-}
-
-// TODO: Move functions related to bigram to here
-} // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/bigram_dictionary.h b/native/jni/src/suggest/core/dictionary/bigram_dictionary.h
deleted file mode 100644
index 8af7ee7..0000000
--- a/native/jni/src/suggest/core/dictionary/bigram_dictionary.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-#ifndef LATINIME_BIGRAM_DICTIONARY_H
-#define LATINIME_BIGRAM_DICTIONARY_H
-
-#include "defines.h"
-
-namespace latinime {
-
-class DictionaryStructureWithBufferPolicy;
-
-class BigramDictionary {
- public:
-    BigramDictionary(const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy);
-
-    int getPredictions(const int *word, int length, int *outBigramCodePoints,
-            int *outBigramProbability, int *outputTypes) const;
-    int getBigramProbability(const int *word1, int length1, const int *word2, int length2) const;
-    ~BigramDictionary();
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(BigramDictionary);
-
-    void addWordBigram(int *word, int length, int probability, int *bigramProbability,
-            int *bigramCodePoints, int *outputTypes) const;
-    int getBigramListPositionForWord(const int *prevWord, const int prevWordLength,
-            const bool forceLowerCaseSearch) const;
-
-    const DictionaryStructureWithBufferPolicy *const mDictionaryStructurePolicy;
-};
-} // namespace latinime
-#endif // LATINIME_BIGRAM_DICTIONARY_H
diff --git a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
index d16ac47..178b065 100644
--- a/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
+++ b/native/jni/src/suggest/core/dictionary/binary_dictionary_bigrams_iterator.h
@@ -24,12 +24,22 @@
 
 class BinaryDictionaryBigramsIterator {
  public:
+    // Empty iterator.
+    BinaryDictionaryBigramsIterator()
+           : mBigramsStructurePolicy(nullptr), mPos(NOT_A_DICT_POS),
+             mBigramPos(NOT_A_DICT_POS), mProbability(NOT_A_PROBABILITY), mHasNext(false) {}
+
     BinaryDictionaryBigramsIterator(
             const DictionaryBigramsStructurePolicy *const bigramsStructurePolicy, const int pos)
             : mBigramsStructurePolicy(bigramsStructurePolicy), mPos(pos),
               mBigramPos(NOT_A_DICT_POS), mProbability(NOT_A_PROBABILITY),
               mHasNext(pos != NOT_A_DICT_POS) {}
 
+    BinaryDictionaryBigramsIterator(BinaryDictionaryBigramsIterator &&bigramsIterator)
+            : mBigramsStructurePolicy(bigramsIterator.mBigramsStructurePolicy),
+              mPos(bigramsIterator.mPos), mBigramPos(bigramsIterator.mBigramPos),
+              mProbability(bigramsIterator.mProbability), mHasNext(bigramsIterator.mHasNext) {}
+
     AK_FORCE_INLINE bool hasNext() const {
         return mHasNext;
     }
diff --git a/native/jni/src/suggest/core/dictionary/bloom_filter.cpp b/native/jni/src/suggest/core/dictionary/bloom_filter.cpp
deleted file mode 100644
index 4ae474e..0000000
--- a/native/jni/src/suggest/core/dictionary/bloom_filter.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/core/dictionary/bloom_filter.h"
-
-namespace latinime {
-
-// Must be smaller than BIGRAM_FILTER_BYTE_SIZE * 8, and preferably prime. 1021 is the largest
-// prime under 128 * 8.
-const int BloomFilter::BIGRAM_FILTER_MODULO = 1021;
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/bloom_filter.h b/native/jni/src/suggest/core/dictionary/bloom_filter.h
index 5205456..1e60f49 100644
--- a/native/jni/src/suggest/core/dictionary/bloom_filter.h
+++ b/native/jni/src/suggest/core/dictionary/bloom_filter.h
@@ -17,7 +17,7 @@
 #ifndef LATINIME_BLOOM_FILTER_H
 #define LATINIME_BLOOM_FILTER_H
 
-#include <stdint.h>
+#include <bitset>
 
 #include "defines.h"
 
@@ -33,38 +33,37 @@
 //   Total 148603.14 (sum of others 148579.90)
 class BloomFilter {
  public:
-    BloomFilter() {
-        ASSERT(BIGRAM_FILTER_BYTE_SIZE * 8 >= BIGRAM_FILTER_MODULO);
+    BloomFilter() : mFilter() {}
+
+    AK_FORCE_INLINE void setInFilter(const int position) {
+        mFilter.set(getIndex(position));
     }
 
-    // TODO: uint32_t position
-    AK_FORCE_INLINE void setInFilter(const int32_t position) {
-        const uint32_t bucket = static_cast<uint32_t>(position % BIGRAM_FILTER_MODULO);
-        mFilter[bucket >> 3] |= static_cast<uint8_t>(1 << (bucket & 0x7));
-    }
-
-    // TODO: uint32_t position
-    AK_FORCE_INLINE bool isInFilter(const int32_t position) const {
-        const uint32_t bucket = static_cast<uint32_t>(position % BIGRAM_FILTER_MODULO);
-        return (mFilter[bucket >> 3] & static_cast<uint8_t>(1 << (bucket & 0x7))) != 0;
+    AK_FORCE_INLINE bool isInFilter(const int position) const {
+        return mFilter.test(getIndex(position));
     }
 
  private:
-    // Size, in bytes, of the bloom filter index for bigrams
-    // 128 gives us 1024 buckets. The probability of false positive is (1 - e ** (-kn/m))**k,
+    DISALLOW_ASSIGNMENT_OPERATOR(BloomFilter);
+
+    AK_FORCE_INLINE size_t getIndex(const int position) const {
+        return static_cast<size_t>(position) % BIGRAM_FILTER_MODULO;
+    }
+
+    // Size, in bits, of the bloom filter index for bigrams
+    // The probability of false positive is (1 - e ** (-kn/m))**k,
     // where k is the number of hash functions, n the number of bigrams, and m the number of
     // bits we can test.
-    // At the moment 100 is the maximum number of bigrams for a word with the current
+    // At the moment 100 is the maximum number of bigrams for a word with the current main
     // dictionaries, so n = 100. 1024 buckets give us m = 1024.
     // With 1 hash function, our false positive rate is about 9.3%, which should be enough for
     // our uses since we are only using this to increase average performance. For the record,
     // k = 2 gives 3.1% and k = 3 gives 1.6%. With k = 1, making m = 2048 gives 4.8%,
     // and m = 4096 gives 2.4%.
-    // This is assigned here because it is used for array size.
-    static const int BIGRAM_FILTER_BYTE_SIZE = 128;
-    static const int BIGRAM_FILTER_MODULO;
-
-    uint8_t mFilter[BIGRAM_FILTER_BYTE_SIZE];
+    // This is assigned here because it is used for bitset size.
+    // 1021 is the largest prime under 1024.
+    static const size_t BIGRAM_FILTER_MODULO = 1021;
+    std::bitset<BIGRAM_FILTER_MODULO> mFilter;
 };
 } // namespace latinime
 #endif // LATINIME_BLOOM_FILTER_H
diff --git a/native/jni/src/suggest/core/dictionary/dictionary.cpp b/native/jni/src/suggest/core/dictionary/dictionary.cpp
index 59ead18..fb25f75 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary.cpp
+++ b/native/jni/src/suggest/core/dictionary/dictionary.cpp
@@ -18,77 +18,78 @@
 
 #include "suggest/core/dictionary/dictionary.h"
 
-#include <stdint.h>
-
 #include "defines.h"
-#include "suggest/core/dictionary/bigram_dictionary.h"
+#include "suggest/core/dictionary/dictionary_utils.h"
 #include "suggest/core/policy/dictionary_header_structure_policy.h"
-#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/core/result/suggestion_results.h"
 #include "suggest/core/session/dic_traverse_session.h"
+#include "suggest/core/session/prev_words_info.h"
 #include "suggest/core/suggest.h"
 #include "suggest/core/suggest_options.h"
 #include "suggest/policyimpl/gesture/gesture_suggest_policy_factory.h"
 #include "suggest/policyimpl/typing/typing_suggest_policy_factory.h"
 #include "utils/log_utils.h"
+#include "utils/time_keeper.h"
 
 namespace latinime {
 
 const int Dictionary::HEADER_ATTRIBUTE_BUFFER_SIZE = 32;
 
-Dictionary::Dictionary(JNIEnv *env,
-        DictionaryStructureWithBufferPolicy *const dictionaryStructureWithBufferPolicy)
-        : mDictionaryStructureWithBufferPolicy(dictionaryStructureWithBufferPolicy),
-          mBigramDictionary(new BigramDictionary(mDictionaryStructureWithBufferPolicy)),
+Dictionary::Dictionary(JNIEnv *env, DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        dictionaryStructureWithBufferPolicy)
+        : mDictionaryStructureWithBufferPolicy(std::move(dictionaryStructureWithBufferPolicy)),
           mGestureSuggest(new Suggest(GestureSuggestPolicyFactory::getGestureSuggestPolicy())),
           mTypingSuggest(new Suggest(TypingSuggestPolicyFactory::getTypingSuggestPolicy())) {
     logDictionaryInfo(env);
 }
 
-Dictionary::~Dictionary() {
-    delete mBigramDictionary;
-    delete mGestureSuggest;
-    delete mTypingSuggest;
-    delete mDictionaryStructureWithBufferPolicy;
-}
-
-int Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession *traverseSession,
+void Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession *traverseSession,
         int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints,
-        int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint,
-        const SuggestOptions *const suggestOptions, int *outWords, int *frequencies,
-        int *spaceIndices, int *outputTypes, int *outputAutoCommitFirstWordConfidence) const {
-    int result = 0;
-    if (suggestOptions->isGesture()) {
-        DicTraverseSession::initSessionInstance(
-                traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions);
-        result = mGestureSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates,
-                ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords,
-                frequencies, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence);
-        if (DEBUG_DICT) {
-            DUMP_RESULT(outWords, frequencies);
-        }
-        return result;
-    } else {
-        DicTraverseSession::initSessionInstance(
-                traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions);
-        result = mTypingSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates,
-                ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint,
-                outWords, frequencies, spaceIndices, outputTypes,
-                outputAutoCommitFirstWordConfidence);
-        if (DEBUG_DICT) {
-            DUMP_RESULT(outWords, frequencies);
-        }
-        return result;
+        int inputSize, const PrevWordsInfo *const prevWordsInfo,
+        const SuggestOptions *const suggestOptions, const float languageWeight,
+        SuggestionResults *const outSuggestionResults) const {
+    TimeKeeper::setCurrentTime();
+    traverseSession->init(this, prevWordsInfo, suggestOptions);
+    const auto &suggest = suggestOptions->isGesture() ? mGestureSuggest : mTypingSuggest;
+    suggest->getSuggestions(proximityInfo, traverseSession, xcoordinates,
+            ycoordinates, times, pointerIds, inputCodePoints, inputSize,
+            languageWeight, outSuggestionResults);
+    if (DEBUG_DICT) {
+        outSuggestionResults->dumpSuggestions();
     }
 }
 
-int Dictionary::getBigrams(const int *word, int length, int *outWords, int *frequencies,
-        int *outputTypes) const {
-    if (length <= 0) return 0;
-    return mBigramDictionary->getPredictions(word, length, outWords, frequencies, outputTypes);
+void Dictionary::getPredictions(const PrevWordsInfo *const prevWordsInfo,
+        SuggestionResults *const outSuggestionResults) const {
+    TimeKeeper::setCurrentTime();
+    int unigramProbability = 0;
+    int bigramCodePoints[MAX_WORD_LENGTH];
+    BinaryDictionaryBigramsIterator bigramsIt = prevWordsInfo->getBigramsIteratorForPrediction(
+            mDictionaryStructureWithBufferPolicy.get());
+    while (bigramsIt.hasNext()) {
+        bigramsIt.next();
+        if (bigramsIt.getBigramPos() == NOT_A_DICT_POS) {
+            continue;
+        }
+        if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)
+                && bigramsIt.getProbability() == NOT_A_PROBABILITY) {
+            continue;
+        }
+        const int codePointCount = mDictionaryStructureWithBufferPolicy->
+                getCodePointsAndProbabilityAndReturnCodePointCount(bigramsIt.getBigramPos(),
+                        MAX_WORD_LENGTH, bigramCodePoints, &unigramProbability);
+        if (codePointCount <= 0) {
+            continue;
+        }
+        const int probability = mDictionaryStructureWithBufferPolicy->getProbability(
+                unigramProbability, bigramsIt.getProbability());
+        outSuggestionResults->addPrediction(bigramCodePoints, codePointCount, probability);
+    }
 }
 
 int Dictionary::getProbability(const int *word, int length) const {
-    int pos = getDictionaryStructurePolicy()->getTerminalNodePositionOfWord(word, length,
+    TimeKeeper::setCurrentTime();
+    int pos = getDictionaryStructurePolicy()->getTerminalPtNodePositionOfWord(word, length,
             false /* forceLowerCaseSearch */);
     if (NOT_A_DICT_POS == pos) {
         return NOT_A_PROBABILITY;
@@ -96,41 +97,95 @@
     return getDictionaryStructurePolicy()->getUnigramProbabilityOfPtNode(pos);
 }
 
-int Dictionary::getBigramProbability(const int *word0, int length0, const int *word1,
-        int length1) const {
-    return mBigramDictionary->getBigramProbability(word0, length0, word1, length1);
+int Dictionary::getMaxProbabilityOfExactMatches(const int *word, int length) const {
+    TimeKeeper::setCurrentTime();
+    return DictionaryUtils::getMaxProbabilityOfExactMatches(
+            mDictionaryStructureWithBufferPolicy.get(), word, length);
 }
 
-void Dictionary::addUnigramWord(const int *const word, const int length, const int probability) {
-    mDictionaryStructureWithBufferPolicy->addUnigramWord(word, length, probability);
+int Dictionary::getNgramProbability(const PrevWordsInfo *const prevWordsInfo, const int *word,
+        int length) const {
+    TimeKeeper::setCurrentTime();
+    int nextWordPos = mDictionaryStructureWithBufferPolicy->getTerminalPtNodePositionOfWord(word,
+            length, false /* forceLowerCaseSearch */);
+    if (NOT_A_DICT_POS == nextWordPos) return NOT_A_PROBABILITY;
+    BinaryDictionaryBigramsIterator bigramsIt = prevWordsInfo->getBigramsIteratorForPrediction(
+            mDictionaryStructureWithBufferPolicy.get());
+    while (bigramsIt.hasNext()) {
+        bigramsIt.next();
+        if (bigramsIt.getBigramPos() == nextWordPos
+                && bigramsIt.getProbability() != NOT_A_PROBABILITY) {
+            return mDictionaryStructureWithBufferPolicy->getProbability(
+                    mDictionaryStructureWithBufferPolicy->getUnigramProbabilityOfPtNode(
+                            nextWordPos), bigramsIt.getProbability());
+        }
+    }
+    return NOT_A_PROBABILITY;
 }
 
-void Dictionary::addBigramWords(const int *const word0, const int length0, const int *const word1,
-        const int length1, const int probability) {
-    mDictionaryStructureWithBufferPolicy->addBigramWords(word0, length0, word1, length1,
-            probability);
+bool Dictionary::addUnigramEntry(const int *const word, const int length,
+        const UnigramProperty *const unigramProperty) {
+    if (unigramProperty->representsBeginningOfSentence()
+            && !mDictionaryStructureWithBufferPolicy->getHeaderStructurePolicy()
+                    ->supportsBeginningOfSentence()) {
+        AKLOGE("The dictionary doesn't support Beginning-of-Sentence.");
+        return false;
+    }
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->addUnigramEntry(word, length, unigramProperty);
 }
 
-void Dictionary::removeBigramWords(const int *const word0, const int length0,
-        const int *const word1, const int length1) {
-    mDictionaryStructureWithBufferPolicy->removeBigramWords(word0, length0, word1, length1);
+bool Dictionary::removeUnigramEntry(const int *const codePoints, const int codePointCount) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->removeUnigramEntry(codePoints, codePointCount);
 }
 
-void Dictionary::flush(const char *const filePath) {
-    mDictionaryStructureWithBufferPolicy->flush(filePath);
+bool Dictionary::addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+        const BigramProperty *const bigramProperty) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->addNgramEntry(prevWordsInfo, bigramProperty);
 }
 
-void Dictionary::flushWithGC(const char *const filePath) {
-    mDictionaryStructureWithBufferPolicy->flushWithGC(filePath);
+bool Dictionary::removeNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+        const int *const word, const int length) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->removeNgramEntry(prevWordsInfo, word, length);
+}
+
+bool Dictionary::flush(const char *const filePath) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->flush(filePath);
+}
+
+bool Dictionary::flushWithGC(const char *const filePath) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->flushWithGC(filePath);
 }
 
 bool Dictionary::needsToRunGC(const bool mindsBlockByGC) {
+    TimeKeeper::setCurrentTime();
     return mDictionaryStructureWithBufferPolicy->needsToRunGC(mindsBlockByGC);
 }
 
-void Dictionary::getProperty(const char *const query, char *const outResult,
+void Dictionary::getProperty(const char *const query, const int queryLength, char *const outResult,
         const int maxResultLength) {
-    return mDictionaryStructureWithBufferPolicy->getProperty(query, outResult, maxResultLength);
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->getProperty(query, queryLength, outResult,
+            maxResultLength);
+}
+
+const WordProperty Dictionary::getWordProperty(const int *const codePoints,
+        const int codePointCount) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->getWordProperty(
+            codePoints, codePointCount);
+}
+
+int Dictionary::getNextWordAndNextToken(const int token, int *const outCodePoints,
+        int *const outCodePointCount) {
+    TimeKeeper::setCurrentTime();
+    return mDictionaryStructureWithBufferPolicy->getNextWordAndNextToken(
+            token, outCodePoints, outCodePointCount);
 }
 
 void Dictionary::logDictionaryInfo(JNIEnv *const env) const {
diff --git a/native/jni/src/suggest/core/dictionary/dictionary.h b/native/jni/src/suggest/core/dictionary/dictionary.h
index 0195d5b..3b41088 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary.h
+++ b/native/jni/src/suggest/core/dictionary/dictionary.h
@@ -17,18 +17,22 @@
 #ifndef LATINIME_DICTIONARY_H
 #define LATINIME_DICTIONARY_H
 
-#include <stdint.h>
+#include <memory>
 
 #include "defines.h"
 #include "jni.h"
+#include "suggest/core/dictionary/property/word_property.h"
+#include "suggest/core/policy/dictionary_header_structure_policy.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/core/suggest_interface.h"
 
 namespace latinime {
 
-class BigramDictionary;
 class DictionaryStructureWithBufferPolicy;
 class DicTraverseSession;
+class PrevWordsInfo;
 class ProximityInfo;
-class SuggestInterface;
+class SuggestionResults;
 class SuggestOptions;
 
 class Dictionary {
@@ -52,55 +56,70 @@
     static const int KIND_MASK_FLAGS = 0xFFFFFF00; // Mask to get the flags
     static const int KIND_FLAG_POSSIBLY_OFFENSIVE = 0x80000000;
     static const int KIND_FLAG_EXACT_MATCH = 0x40000000;
+    static const int KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION = 0x20000000;
 
-    Dictionary(JNIEnv *env,
-            DictionaryStructureWithBufferPolicy *const dictionaryStructureWithBufferPoilcy);
+    Dictionary(JNIEnv *env, DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            dictionaryStructureWithBufferPolicy);
 
-    int getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession *traverseSession,
+    void getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession *traverseSession,
             int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints,
-            int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint,
-            const SuggestOptions *const suggestOptions, int *outWords, int *frequencies,
-            int *spaceIndices, int *outputTypes, int *outputAutoCommitFirstWordConfidence) const;
+            int inputSize, const PrevWordsInfo *const prevWordsInfo,
+            const SuggestOptions *const suggestOptions, const float languageWeight,
+            SuggestionResults *const outSuggestionResults) const;
 
-    int getBigrams(const int *word, int length, int *outWords, int *frequencies,
-            int *outputTypes) const;
+    void getPredictions(const PrevWordsInfo *const prevWordsInfo,
+            SuggestionResults *const outSuggestionResults) const;
 
     int getProbability(const int *word, int length) const;
 
-    int getBigramProbability(const int *word0, int length0, const int *word1, int length1) const;
+    int getMaxProbabilityOfExactMatches(const int *word, int length) const;
 
-    void addUnigramWord(const int *const word, const int length, const int probability);
+    int getNgramProbability(const PrevWordsInfo *const prevWordsInfo,
+            const int *word, int length) const;
 
-    void addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability);
+    bool addUnigramEntry(const int *const codePoints, const int codePointCount,
+            const UnigramProperty *const unigramProperty);
 
-    void removeBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1);
+    bool removeUnigramEntry(const int *const codePoints, const int codePointCount);
 
-    void flush(const char *const filePath);
+    bool addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+            const BigramProperty *const bigramProperty);
 
-    void flushWithGC(const char *const filePath);
+    bool removeNgramEntry(const PrevWordsInfo *const prevWordsInfo, const int *const word,
+            const int length);
+
+    bool flush(const char *const filePath);
+
+    bool flushWithGC(const char *const filePath);
 
     bool needsToRunGC(const bool mindsBlockByGC);
 
-    void getProperty(const char *const query, char *const outResult,
+    void getProperty(const char *const query, const int queryLength, char *const outResult,
             const int maxResultLength);
 
-    const DictionaryStructureWithBufferPolicy *getDictionaryStructurePolicy() const {
-        return mDictionaryStructureWithBufferPolicy;
-    }
+    const WordProperty getWordProperty(const int *const codePoints, const int codePointCount);
 
-    virtual ~Dictionary();
+    // Method to iterate all words in the dictionary.
+    // The returned token has to be used to get the next word. If token is 0, this method newly
+    // starts iterating the dictionary.
+    int getNextWordAndNextToken(const int token, int *const outCodePoints,
+            int *const outCodePointCount);
+
+    const DictionaryStructureWithBufferPolicy *getDictionaryStructurePolicy() const {
+        return mDictionaryStructureWithBufferPolicy.get();
+    }
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(Dictionary);
 
+    typedef std::unique_ptr<SuggestInterface> SuggestInterfacePtr;
+
     static const int HEADER_ATTRIBUTE_BUFFER_SIZE;
 
-    DictionaryStructureWithBufferPolicy *const mDictionaryStructureWithBufferPolicy;
-    const BigramDictionary *const mBigramDictionary;
-    const SuggestInterface *const mGestureSuggest;
-    const SuggestInterface *const mTypingSuggest;
+    const DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            mDictionaryStructureWithBufferPolicy;
+    const SuggestInterfacePtr mGestureSuggest;
+    const SuggestInterfacePtr mTypingSuggest;
 
     void logDictionaryInfo(JNIEnv *const env) const;
 };
diff --git a/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp b/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp
new file mode 100644
index 0000000..b94966c
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/dictionary/dictionary_utils.h"
+
+#include "suggest/core/dicnode/dic_node.h"
+#include "suggest/core/dicnode/dic_node_priority_queue.h"
+#include "suggest/core/dicnode/dic_node_vector.h"
+#include "suggest/core/dictionary/dictionary.h"
+#include "suggest/core/dictionary/digraph_utils.h"
+#include "suggest/core/session/prev_words_info.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+
+namespace latinime {
+
+/* static */ int DictionaryUtils::getMaxProbabilityOfExactMatches(
+        const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
+        const int *const codePoints, const int codePointCount) {
+    std::vector<DicNode> current;
+    std::vector<DicNode> next;
+
+    // No prev words information.
+    PrevWordsInfo emptyPrevWordsInfo;
+    int prevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    emptyPrevWordsInfo.getPrevWordsTerminalPtNodePos(dictionaryStructurePolicy,
+            prevWordsPtNodePos, false /* tryLowerCaseSearch */);
+    current.emplace_back();
+    DicNodeUtils::initAsRoot(dictionaryStructurePolicy, prevWordsPtNodePos, &current.front());
+    for (int i = 0; i < codePointCount; ++i) {
+        // The base-lower input is used to ignore case errors and accent errors.
+        const int codePoint = CharUtils::toBaseLowerCase(codePoints[i]);
+        for (const DicNode &dicNode : current) {
+            if (dicNode.isInDigraph() && dicNode.getNodeCodePoint() == codePoint) {
+                next.emplace_back(dicNode);
+                next.back().advanceDigraphIndex();
+                continue;
+            }
+            processChildDicNodes(dictionaryStructurePolicy, codePoint, &dicNode, &next);
+        }
+        current.clear();
+        current.swap(next);
+    }
+
+    int maxProbability = NOT_A_PROBABILITY;
+    for (const DicNode &dicNode : current) {
+        if (!dicNode.isTerminalDicNode()) {
+            continue;
+        }
+        // dicNode can contain case errors, accent errors, intentional omissions or digraphs.
+        maxProbability = std::max(maxProbability, dicNode.getProbability());
+    }
+    return maxProbability;
+}
+
+/* static */ void DictionaryUtils::processChildDicNodes(
+        const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
+        const int inputCodePoint, const DicNode *const parentDicNode,
+        std::vector<DicNode> *const outDicNodes) {
+    DicNodeVector childDicNodes;
+    DicNodeUtils::getAllChildDicNodes(parentDicNode, dictionaryStructurePolicy, &childDicNodes);
+    for (int childIndex = 0; childIndex < childDicNodes.getSizeAndLock(); ++childIndex) {
+        DicNode *const childDicNode = childDicNodes[childIndex];
+        const int codePoint = CharUtils::toBaseLowerCase(childDicNode->getNodeCodePoint());
+        if (inputCodePoint == codePoint) {
+            outDicNodes->emplace_back(*childDicNode);
+        }
+        if (childDicNode->canBeIntentionalOmission()) {
+            processChildDicNodes(dictionaryStructurePolicy, inputCodePoint, childDicNode,
+                    outDicNodes);
+        }
+        if (DigraphUtils::hasDigraphForCodePoint(
+                dictionaryStructurePolicy->getHeaderStructurePolicy(),
+                childDicNode->getNodeCodePoint())) {
+            childDicNode->advanceDigraphIndex();
+            if (childDicNode->getNodeCodePoint() == codePoint) {
+                childDicNode->advanceDigraphIndex();
+                outDicNodes->emplace_back(*childDicNode);
+            }
+        }
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/dictionary_utils.h b/native/jni/src/suggest/core/dictionary/dictionary_utils.h
new file mode 100644
index 0000000..358ebf6
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/dictionary_utils.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DICTIONARY_UTILS_H
+#define LATINIME_DICTIONARY_UTILS_H
+
+#include <vector>
+
+#include "defines.h"
+
+namespace latinime {
+
+class DictionaryStructureWithBufferPolicy;
+class DicNode;
+
+class DictionaryUtils {
+ public:
+    static int getMaxProbabilityOfExactMatches(
+            const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
+            const int *const codePoints, const int codePointCount);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DictionaryUtils);
+
+    static void processChildDicNodes(
+            const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
+            const int inputCodePoint, const DicNode *const parentDicNode,
+            std::vector<DicNode> *const outDicNodes);
+};
+} // namespace latinime
+#endif // LATINIME_DICTIONARY_UTILS_H
diff --git a/native/jni/src/suggest/core/dictionary/digraph_utils.cpp b/native/jni/src/suggest/core/dictionary/digraph_utils.cpp
index 3271c1b..bb2ce50 100644
--- a/native/jni/src/suggest/core/dictionary/digraph_utils.cpp
+++ b/native/jni/src/suggest/core/dictionary/digraph_utils.cpp
@@ -28,11 +28,8 @@
         { { 'a', 'e', 0x00E4 }, // U+00E4 : LATIN SMALL LETTER A WITH DIAERESIS
         { 'o', 'e', 0x00F6 },   // U+00F6 : LATIN SMALL LETTER O WITH DIAERESIS
         { 'u', 'e', 0x00FC } }; // U+00FC : LATIN SMALL LETTER U WITH DIAERESIS
-const DigraphUtils::digraph_t DigraphUtils::FRENCH_LIGATURES_DIGRAPHS[] =
-        { { 'a', 'e', 0x00E6 }, // U+00E6 : LATIN SMALL LETTER AE
-        { 'o', 'e', 0x0153 } }; // U+0153 : LATIN SMALL LIGATURE OE
 const DigraphUtils::DigraphType DigraphUtils::USED_DIGRAPH_TYPES[] =
-        { DIGRAPH_TYPE_GERMAN_UMLAUT, DIGRAPH_TYPE_FRENCH_LIGATURES };
+        { DIGRAPH_TYPE_GERMAN_UMLAUT };
 
 /* static */ bool DigraphUtils::hasDigraphForCodePoint(
         const DictionaryHeaderStructurePolicy *const headerPolicy,
@@ -50,9 +47,6 @@
     if (headerPolicy->requiresGermanUmlautProcessing()) {
         return DIGRAPH_TYPE_GERMAN_UMLAUT;
     }
-    if (headerPolicy->requiresFrenchLigatureProcessing()) {
-        return DIGRAPH_TYPE_FRENCH_LIGATURES;
-    }
     return DIGRAPH_TYPE_NONE;
 }
 
@@ -86,15 +80,11 @@
         *digraphs = GERMAN_UMLAUT_DIGRAPHS;
         return NELEMS(GERMAN_UMLAUT_DIGRAPHS);
     }
-    if (digraphType == DIGRAPH_TYPE_FRENCH_LIGATURES) {
-        *digraphs = FRENCH_LIGATURES_DIGRAPHS;
-        return NELEMS(FRENCH_LIGATURES_DIGRAPHS);
-    }
     return 0;
 }
 
 /**
- * Returns the digraph for the input composite glyph codepoint, or 0 if none exists.
+ * Returns the digraph for the input composite glyph codepoint, or nullptr if none exists.
  * compositeGlyphCodePoint: the method returns the digraph corresponding to this codepoint.
  */
 /* static */ const DigraphUtils::digraph_t *DigraphUtils::getDigraphForCodePoint(
@@ -106,17 +96,17 @@
             return digraph;
         }
     }
-    return 0;
+    return nullptr;
 }
 
 /**
- * Returns the digraph for the input composite glyph codepoint, or 0 if none exists.
+ * Returns the digraph for the input composite glyph codepoint, or nullptr if none exists.
  * digraphType: the type of digraphs supported.
  * compositeGlyphCodePoint: the method returns the digraph corresponding to this codepoint.
  */
 /* static */ const DigraphUtils::digraph_t *DigraphUtils::getDigraphForDigraphTypeAndCodePoint(
         const DigraphUtils::DigraphType digraphType, const int compositeGlyphCodePoint) {
-    const DigraphUtils::digraph_t *digraphs = 0;
+    const DigraphUtils::digraph_t *digraphs = nullptr;
     const int compositeGlyphLowerCodePoint = CharUtils::toLowerCase(compositeGlyphCodePoint);
     const int digraphsSize =
             DigraphUtils::getAllDigraphsForDigraphTypeAndReturnSize(digraphType, &digraphs);
@@ -125,7 +115,7 @@
             return &digraphs[i];
         }
     }
-    return 0;
+    return nullptr;
 }
 
 } // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/digraph_utils.h b/native/jni/src/suggest/core/dictionary/digraph_utils.h
index 6ae16e3..bec2cd6 100644
--- a/native/jni/src/suggest/core/dictionary/digraph_utils.h
+++ b/native/jni/src/suggest/core/dictionary/digraph_utils.h
@@ -34,7 +34,6 @@
     typedef enum {
         DIGRAPH_TYPE_NONE,
         DIGRAPH_TYPE_GERMAN_UMLAUT,
-        DIGRAPH_TYPE_FRENCH_LIGATURES
     } DigraphType;
 
     typedef struct { int first; int second; int compositeGlyph; } digraph_t;
@@ -55,7 +54,6 @@
             const DigraphType digraphType, const int compositeGlyphCodePoint);
 
     static const digraph_t GERMAN_UMLAUT_DIGRAPHS[];
-    static const digraph_t FRENCH_LIGATURES_DIGRAPHS[];
     static const DigraphType USED_DIGRAPH_TYPES[];
 };
 } // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/error_type_utils.cpp b/native/jni/src/suggest/core/dictionary/error_type_utils.cpp
new file mode 100644
index 0000000..b6bf7a9
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/error_type_utils.cpp
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/dictionary/error_type_utils.h"
+
+namespace latinime {
+
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::NOT_AN_ERROR = 0x0;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_CASE_ERROR = 0x1;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_ACCENT_ERROR = 0x2;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::MATCH_WITH_DIGRAPH = 0x4;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::INTENTIONAL_OMISSION = 0x8;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::EDIT_CORRECTION = 0x10;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::PROXIMITY_CORRECTION = 0x20;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::COMPLETION = 0x40;
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::NEW_WORD = 0x80;
+
+const ErrorTypeUtils::ErrorType ErrorTypeUtils::ERRORS_TREATED_AS_AN_EXACT_MATCH =
+        NOT_AN_ERROR | MATCH_WITH_CASE_ERROR | MATCH_WITH_ACCENT_ERROR | MATCH_WITH_DIGRAPH;
+
+const ErrorTypeUtils::ErrorType
+        ErrorTypeUtils::ERRORS_TREATED_AS_AN_EXACT_MATCH_WITH_INTENTIONAL_OMISSION =
+                ERRORS_TREATED_AS_AN_EXACT_MATCH | INTENTIONAL_OMISSION;
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/error_type_utils.h b/native/jni/src/suggest/core/dictionary/error_type_utils.h
new file mode 100644
index 0000000..e3e76b2
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/error_type_utils.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_ERROR_TYPE_UTILS_H
+#define LATINIME_ERROR_TYPE_UTILS_H
+
+#include <cstdint>
+
+#include "defines.h"
+
+namespace latinime {
+
+class ErrorTypeUtils {
+ public:
+    // ErrorType is mainly decided by CorrectionType but it is also depending on if
+    // the correction has really been performed or not.
+    typedef uint32_t ErrorType;
+
+    static const ErrorType NOT_AN_ERROR;
+    static const ErrorType MATCH_WITH_CASE_ERROR;
+    static const ErrorType MATCH_WITH_ACCENT_ERROR;
+    static const ErrorType MATCH_WITH_DIGRAPH;
+    // Treat error as an intentional omission when the CorrectionType is omission and the node can
+    // be intentional omission.
+    static const ErrorType INTENTIONAL_OMISSION;
+    // Substitution, omission and transposition
+    static const ErrorType EDIT_CORRECTION;
+    // Proximity error
+    static const ErrorType PROXIMITY_CORRECTION;
+    // Completion
+    static const ErrorType COMPLETION;
+    // New word
+    // TODO: Remove.
+    // A new word error should be an edit correction error or a proximity correction error.
+    static const ErrorType NEW_WORD;
+
+    static bool isExactMatch(const ErrorType containedErrorTypes) {
+        return (containedErrorTypes & ~ERRORS_TREATED_AS_AN_EXACT_MATCH) == 0;
+    }
+
+    static bool isExactMatchWithIntentionalOmission(const ErrorType containedErrorTypes) {
+        return (containedErrorTypes
+                & ~ERRORS_TREATED_AS_AN_EXACT_MATCH_WITH_INTENTIONAL_OMISSION) == 0;
+    }
+
+    static bool isEditCorrectionError(const ErrorType errorType) {
+        return (errorType & EDIT_CORRECTION) != 0;
+    }
+
+    static bool isProximityCorrectionError(const ErrorType errorType) {
+        return (errorType & PROXIMITY_CORRECTION) != 0;
+    }
+
+    static bool isCompletion(const ErrorType errorType) {
+        return (errorType & COMPLETION) != 0;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(ErrorTypeUtils);
+
+    static const ErrorType ERRORS_TREATED_AS_AN_EXACT_MATCH;
+    static const ErrorType ERRORS_TREATED_AS_AN_EXACT_MATCH_WITH_INTENTIONAL_OMISSION;
+};
+} // namespace latinime
+#endif // LATINIME_ERROR_TYPE_UTILS_H
diff --git a/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp b/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp
index b1d2f4b..012e4dc 100644
--- a/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp
+++ b/native/jni/src/suggest/core/dictionary/multi_bigram_map.cpp
@@ -17,6 +17,7 @@
 #include "suggest/core/dictionary/multi_bigram_map.h"
 
 #include <cstddef>
+#include <unordered_map>
 
 namespace latinime {
 
@@ -30,4 +31,73 @@
 // Most common previous word contexts currently have 100 bigrams
 const int MultiBigramMap::BigramMap::DEFAULT_HASH_MAP_SIZE_FOR_EACH_BIGRAM_MAP = 100;
 
+// Look up the bigram probability for the given word pair from the cached bigram maps.
+// Also caches the bigrams if there is space remaining and they have not been cached already.
+int MultiBigramMap::getBigramProbability(
+        const DictionaryStructureWithBufferPolicy *const structurePolicy,
+        const int wordPosition, const int nextWordPosition, const int unigramProbability) {
+    std::unordered_map<int, BigramMap>::const_iterator mapPosition =
+            mBigramMaps.find(wordPosition);
+    if (mapPosition != mBigramMaps.end()) {
+        return mapPosition->second.getBigramProbability(structurePolicy, nextWordPosition,
+                unigramProbability);
+    }
+    if (mBigramMaps.size() < MAX_CACHED_PREV_WORDS_IN_BIGRAM_MAP) {
+        addBigramsForWordPosition(structurePolicy, wordPosition);
+        return mBigramMaps[wordPosition].getBigramProbability(structurePolicy,
+                nextWordPosition, unigramProbability);
+    }
+    return readBigramProbabilityFromBinaryDictionary(structurePolicy, wordPosition,
+            nextWordPosition, unigramProbability);
+}
+
+void MultiBigramMap::BigramMap::init(
+        const DictionaryStructureWithBufferPolicy *const structurePolicy, const int nodePos) {
+    BinaryDictionaryBigramsIterator bigramsIt =
+            structurePolicy->getBigramsIteratorOfPtNode(nodePos);
+    while (bigramsIt.hasNext()) {
+        bigramsIt.next();
+        if (bigramsIt.getBigramPos() == NOT_A_DICT_POS) {
+            continue;
+        }
+        mBigramMap[bigramsIt.getBigramPos()] = bigramsIt.getProbability();
+        mBloomFilter.setInFilter(bigramsIt.getBigramPos());
+    }
+}
+
+int MultiBigramMap::BigramMap::getBigramProbability(
+        const DictionaryStructureWithBufferPolicy *const structurePolicy,
+        const int nextWordPosition, const int unigramProbability) const {
+    int bigramProbability = NOT_A_PROBABILITY;
+    if (mBloomFilter.isInFilter(nextWordPosition)) {
+        const std::unordered_map<int, int>::const_iterator bigramProbabilityIt =
+                mBigramMap.find(nextWordPosition);
+        if (bigramProbabilityIt != mBigramMap.end()) {
+            bigramProbability = bigramProbabilityIt->second;
+        }
+    }
+    return structurePolicy->getProbability(unigramProbability, bigramProbability);
+}
+
+void MultiBigramMap::addBigramsForWordPosition(
+        const DictionaryStructureWithBufferPolicy *const structurePolicy, const int position) {
+    mBigramMaps[position].init(structurePolicy, position);
+}
+
+int MultiBigramMap::readBigramProbabilityFromBinaryDictionary(
+        const DictionaryStructureWithBufferPolicy *const structurePolicy, const int nodePos,
+        const int nextWordPosition, const int unigramProbability) {
+    int bigramProbability = NOT_A_PROBABILITY;
+    BinaryDictionaryBigramsIterator bigramsIt =
+            structurePolicy->getBigramsIteratorOfPtNode(nodePos);
+    while (bigramsIt.hasNext()) {
+        bigramsIt.next();
+        if (bigramsIt.getBigramPos() == nextWordPosition) {
+            bigramProbability = bigramsIt.getProbability();
+            break;
+        }
+    }
+    return structurePolicy->getProbability(unigramProbability, bigramProbability);
+}
+
 } // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/multi_bigram_map.h b/native/jni/src/suggest/core/dictionary/multi_bigram_map.h
index 4633c07..195b5e2 100644
--- a/native/jni/src/suggest/core/dictionary/multi_bigram_map.h
+++ b/native/jni/src/suggest/core/dictionary/multi_bigram_map.h
@@ -18,12 +18,12 @@
 #define LATINIME_MULTI_BIGRAM_MAP_H
 
 #include <cstddef>
+#include <unordered_map>
 
 #include "defines.h"
 #include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
 #include "suggest/core/dictionary/bloom_filter.h"
 #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "utils/hash_map_compat.h"
 
 namespace latinime {
 
@@ -38,21 +38,7 @@
     // Look up the bigram probability for the given word pair from the cached bigram maps.
     // Also caches the bigrams if there is space remaining and they have not been cached already.
     int getBigramProbability(const DictionaryStructureWithBufferPolicy *const structurePolicy,
-            const int wordPosition, const int nextWordPosition, const int unigramProbability) {
-        hash_map_compat<int, BigramMap>::const_iterator mapPosition =
-                mBigramMaps.find(wordPosition);
-        if (mapPosition != mBigramMaps.end()) {
-            return mapPosition->second.getBigramProbability(structurePolicy, nextWordPosition,
-                    unigramProbability);
-        }
-        if (mBigramMaps.size() < MAX_CACHED_PREV_WORDS_IN_BIGRAM_MAP) {
-            addBigramsForWordPosition(structurePolicy, wordPosition);
-            return mBigramMaps[wordPosition].getBigramProbability(structurePolicy,
-                    nextWordPosition, unigramProbability);
-        }
-        return readBigramProbabilityFromBinaryDictionary(structurePolicy, wordPosition,
-                nextWordPosition, unigramProbability);
-    }
+            const int wordPosition, const int nextWordPosition, const int unigramProbability);
 
     void clear() {
         mBigramMaps.clear();
@@ -67,66 +53,29 @@
         ~BigramMap() {}
 
         void init(const DictionaryStructureWithBufferPolicy *const structurePolicy,
-                const int nodePos) {
-            const int bigramsListPos = structurePolicy->getBigramsPositionOfPtNode(nodePos);
-            BinaryDictionaryBigramsIterator bigramsIt(structurePolicy->getBigramsStructurePolicy(),
-                    bigramsListPos);
-            while (bigramsIt.hasNext()) {
-                bigramsIt.next();
-                if (bigramsIt.getBigramPos() == NOT_A_DICT_POS) {
-                    continue;
-                }
-                mBigramMap[bigramsIt.getBigramPos()] = bigramsIt.getProbability();
-                mBloomFilter.setInFilter(bigramsIt.getBigramPos());
-            }
-        }
+                const int nodePos);
 
-        AK_FORCE_INLINE int getBigramProbability(
+        int getBigramProbability(
                 const DictionaryStructureWithBufferPolicy *const structurePolicy,
-                const int nextWordPosition, const int unigramProbability) const {
-            int bigramProbability = NOT_A_PROBABILITY;
-            if (mBloomFilter.isInFilter(nextWordPosition)) {
-                const hash_map_compat<int, int>::const_iterator bigramProbabilityIt =
-                        mBigramMap.find(nextWordPosition);
-                if (bigramProbabilityIt != mBigramMap.end()) {
-                    bigramProbability = bigramProbabilityIt->second;
-                }
-            }
-            return structurePolicy->getProbability(unigramProbability, bigramProbability);
-        }
+                const int nextWordPosition, const int unigramProbability) const;
 
      private:
         // NOTE: The BigramMap class doesn't use DISALLOW_COPY_AND_ASSIGN() because its default
         // copy constructor is needed for use in hash_map.
         static const int DEFAULT_HASH_MAP_SIZE_FOR_EACH_BIGRAM_MAP;
-        hash_map_compat<int, int> mBigramMap;
+        std::unordered_map<int, int> mBigramMap;
         BloomFilter mBloomFilter;
     };
 
-    AK_FORCE_INLINE void addBigramsForWordPosition(
-            const DictionaryStructureWithBufferPolicy *const structurePolicy, const int position) {
-        mBigramMaps[position].init(structurePolicy, position);
-    }
+    void addBigramsForWordPosition(
+            const DictionaryStructureWithBufferPolicy *const structurePolicy, const int position);
 
-    AK_FORCE_INLINE int readBigramProbabilityFromBinaryDictionary(
+    int readBigramProbabilityFromBinaryDictionary(
             const DictionaryStructureWithBufferPolicy *const structurePolicy, const int nodePos,
-            const int nextWordPosition, const int unigramProbability) {
-        int bigramProbability = NOT_A_PROBABILITY;
-        const int bigramsListPos = structurePolicy->getBigramsPositionOfPtNode(nodePos);
-        BinaryDictionaryBigramsIterator bigramsIt(structurePolicy->getBigramsStructurePolicy(),
-                bigramsListPos);
-        while (bigramsIt.hasNext()) {
-            bigramsIt.next();
-            if (bigramsIt.getBigramPos() == nextWordPosition) {
-                bigramProbability = bigramsIt.getProbability();
-                break;
-            }
-        }
-        return structurePolicy->getProbability(unigramProbability, bigramProbability);
-    }
+            const int nextWordPosition, const int unigramProbability);
 
     static const size_t MAX_CACHED_PREV_WORDS_IN_BIGRAM_MAP;
-    hash_map_compat<int, BigramMap> mBigramMaps;
+    std::unordered_map<int, BigramMap> mBigramMaps;
 };
 } // namespace latinime
 #endif // LATINIME_MULTI_BIGRAM_MAP_H
diff --git a/native/jni/src/suggest/core/dictionary/property/bigram_property.h b/native/jni/src/suggest/core/dictionary/property/bigram_property.h
new file mode 100644
index 0000000..343af14
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/property/bigram_property.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_BIGRAM_PROPERTY_H
+#define LATINIME_BIGRAM_PROPERTY_H
+
+#include <vector>
+
+#include "defines.h"
+
+namespace latinime {
+
+// TODO: Change to NgramProperty.
+class BigramProperty {
+ public:
+    BigramProperty(const std::vector<int> *const targetCodePoints,
+            const int probability, const int timestamp, const int level, const int count)
+            : mTargetCodePoints(*targetCodePoints), mProbability(probability),
+              mTimestamp(timestamp), mLevel(level), mCount(count) {}
+
+    const std::vector<int> *getTargetCodePoints() const {
+        return &mTargetCodePoints;
+    }
+
+    int getProbability() const {
+        return mProbability;
+    }
+
+    int getTimestamp() const {
+        return mTimestamp;
+    }
+
+    int getLevel() const {
+        return mLevel;
+    }
+
+    int getCount() const {
+        return mCount;
+    }
+
+ private:
+    // Default copy constructor and assign operator are used for using in std::vector.
+    DISALLOW_DEFAULT_CONSTRUCTOR(BigramProperty);
+
+    // TODO: Make members const.
+    std::vector<int> mTargetCodePoints;
+    int mProbability;
+    int mTimestamp;
+    int mLevel;
+    int mCount;
+};
+} // namespace latinime
+#endif // LATINIME_WORD_PROPERTY_H
diff --git a/native/jni/src/suggest/core/dictionary/property/unigram_property.h b/native/jni/src/suggest/core/dictionary/property/unigram_property.h
new file mode 100644
index 0000000..902eb00
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/property/unigram_property.h
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_UNIGRAM_PROPERTY_H
+#define LATINIME_UNIGRAM_PROPERTY_H
+
+#include <vector>
+
+#include "defines.h"
+
+namespace latinime {
+
+class UnigramProperty {
+ public:
+    class ShortcutProperty {
+     public:
+        ShortcutProperty(const std::vector<int> *const targetCodePoints, const int probability)
+                : mTargetCodePoints(*targetCodePoints), mProbability(probability) {}
+
+        const std::vector<int> *getTargetCodePoints() const {
+            return &mTargetCodePoints;
+        }
+
+        int getProbability() const {
+            return mProbability;
+        }
+
+     private:
+        // Default copy constructor and assign operator are used for using in std::vector.
+        DISALLOW_DEFAULT_CONSTRUCTOR(ShortcutProperty);
+
+        // TODO: Make members const.
+        std::vector<int> mTargetCodePoints;
+        int mProbability;
+    };
+
+    UnigramProperty()
+            : mRepresentsBeginningOfSentence(false), mIsNotAWord(false), mIsBlacklisted(false),
+              mProbability(NOT_A_PROBABILITY), mTimestamp(NOT_A_TIMESTAMP), mLevel(0), mCount(0),
+              mShortcuts() {}
+
+    UnigramProperty(const bool representsBeginningOfSentence, const bool isNotAWord,
+            const bool isBlacklisted, const int probability, const int timestamp, const int level,
+            const int count, const std::vector<ShortcutProperty> *const shortcuts)
+            : mRepresentsBeginningOfSentence(representsBeginningOfSentence),
+              mIsNotAWord(isNotAWord), mIsBlacklisted(isBlacklisted), mProbability(probability),
+              mTimestamp(timestamp), mLevel(level), mCount(count), mShortcuts(*shortcuts) {}
+
+    bool representsBeginningOfSentence() const {
+        return mRepresentsBeginningOfSentence;
+    }
+
+    bool isNotAWord() const {
+        return mIsNotAWord;
+    }
+
+    bool isBlacklisted() const {
+        return mIsBlacklisted;
+    }
+
+    bool hasShortcuts() const {
+        return !mShortcuts.empty();
+    }
+
+    int getProbability() const {
+        return mProbability;
+    }
+
+    int getTimestamp() const {
+        return mTimestamp;
+    }
+
+    int getLevel() const {
+        return mLevel;
+    }
+
+    int getCount() const {
+        return mCount;
+    }
+
+    const std::vector<ShortcutProperty> &getShortcuts() const {
+        return mShortcuts;
+    }
+
+ private:
+    // Default copy constructor is used for using as a return value.
+    DISALLOW_ASSIGNMENT_OPERATOR(UnigramProperty);
+
+    // TODO: Make members const.
+    bool mRepresentsBeginningOfSentence;
+    bool mIsNotAWord;
+    bool mIsBlacklisted;
+    int mProbability;
+    // Historical information
+    int mTimestamp;
+    int mLevel;
+    int mCount;
+    std::vector<ShortcutProperty> mShortcuts;
+};
+} // namespace latinime
+#endif // LATINIME_UNIGRAM_PROPERTY_H
diff --git a/native/jni/src/suggest/core/dictionary/property/word_property.cpp b/native/jni/src/suggest/core/dictionary/property/word_property.cpp
new file mode 100644
index 0000000..5bdd560
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/property/word_property.cpp
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/dictionary/property/word_property.h"
+
+#include "utils/jni_data_utils.h"
+
+namespace latinime {
+
+void WordProperty::outputProperties(JNIEnv *const env, jintArray outCodePoints,
+        jbooleanArray outFlags, jintArray outProbabilityInfo, jobject outBigramTargets,
+        jobject outBigramProbabilities, jobject outShortcutTargets,
+        jobject outShortcutProbabilities) const {
+    JniDataUtils::outputCodePoints(env, outCodePoints, 0 /* start */,
+            MAX_WORD_LENGTH /* maxLength */, mCodePoints.data(), mCodePoints.size(),
+            false /* needsNullTermination */);
+    jboolean flags[] = {mUnigramProperty.isNotAWord(), mUnigramProperty.isBlacklisted(),
+            !mBigrams.empty(), mUnigramProperty.hasShortcuts(),
+            mUnigramProperty.representsBeginningOfSentence()};
+    env->SetBooleanArrayRegion(outFlags, 0 /* start */, NELEMS(flags), flags);
+    int probabilityInfo[] = {mUnigramProperty.getProbability(), mUnigramProperty.getTimestamp(),
+            mUnigramProperty.getLevel(), mUnigramProperty.getCount()};
+    env->SetIntArrayRegion(outProbabilityInfo, 0 /* start */, NELEMS(probabilityInfo),
+            probabilityInfo);
+
+    jclass integerClass = env->FindClass("java/lang/Integer");
+    jmethodID intToIntegerConstructorId = env->GetMethodID(integerClass, "<init>", "(I)V");
+    jclass arrayListClass = env->FindClass("java/util/ArrayList");
+    jmethodID addMethodId = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z");
+
+    // Output bigrams.
+    for (const auto &bigramProperty : mBigrams) {
+        const std::vector<int> *const word1CodePoints = bigramProperty.getTargetCodePoints();
+        jintArray bigramWord1CodePointArray = env->NewIntArray(word1CodePoints->size());
+        JniDataUtils::outputCodePoints(env, bigramWord1CodePointArray, 0 /* start */,
+                word1CodePoints->size(), word1CodePoints->data(), word1CodePoints->size(),
+                false /* needsNullTermination */);
+        env->CallBooleanMethod(outBigramTargets, addMethodId, bigramWord1CodePointArray);
+        env->DeleteLocalRef(bigramWord1CodePointArray);
+
+        int bigramProbabilityInfo[] = {bigramProperty.getProbability(),
+                bigramProperty.getTimestamp(), bigramProperty.getLevel(),
+                bigramProperty.getCount()};
+        jintArray bigramProbabilityInfoArray = env->NewIntArray(NELEMS(bigramProbabilityInfo));
+        env->SetIntArrayRegion(bigramProbabilityInfoArray, 0 /* start */,
+                NELEMS(bigramProbabilityInfo), bigramProbabilityInfo);
+        env->CallBooleanMethod(outBigramProbabilities, addMethodId, bigramProbabilityInfoArray);
+        env->DeleteLocalRef(bigramProbabilityInfoArray);
+    }
+
+    // Output shortcuts.
+    for (const auto &shortcut : mUnigramProperty.getShortcuts()) {
+        const std::vector<int> *const targetCodePoints = shortcut.getTargetCodePoints();
+        jintArray shortcutTargetCodePointArray = env->NewIntArray(targetCodePoints->size());
+        env->SetIntArrayRegion(shortcutTargetCodePointArray, 0 /* start */,
+                targetCodePoints->size(), targetCodePoints->data());
+        JniDataUtils::outputCodePoints(env, shortcutTargetCodePointArray, 0 /* start */,
+                targetCodePoints->size(), targetCodePoints->data(), targetCodePoints->size(),
+                false /* needsNullTermination */);
+        env->CallBooleanMethod(outShortcutTargets, addMethodId, shortcutTargetCodePointArray);
+        env->DeleteLocalRef(shortcutTargetCodePointArray);
+        jobject integerProbability = env->NewObject(integerClass, intToIntegerConstructorId,
+                shortcut.getProbability());
+        env->CallBooleanMethod(outShortcutProbabilities, addMethodId, integerProbability);
+        env->DeleteLocalRef(integerProbability);
+    }
+    env->DeleteLocalRef(integerClass);
+    env->DeleteLocalRef(arrayListClass);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/core/dictionary/property/word_property.h b/native/jni/src/suggest/core/dictionary/property/word_property.h
new file mode 100644
index 0000000..aa3e0b6
--- /dev/null
+++ b/native/jni/src/suggest/core/dictionary/property/word_property.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_WORD_PROPERTY_H
+#define LATINIME_WORD_PROPERTY_H
+
+#include <vector>
+
+#include "defines.h"
+#include "jni.h"
+#include "suggest/core/dictionary/property/bigram_property.h"
+#include "suggest/core/dictionary/property/unigram_property.h"
+
+namespace latinime {
+
+// This class is used for returning information belonging to a word to java side.
+class WordProperty {
+ public:
+    // Default constructor is used to create an instance that indicates an invalid word.
+    WordProperty()
+            : mCodePoints(), mUnigramProperty(), mBigrams() {}
+
+    WordProperty(const std::vector<int> *const codePoints,
+            const UnigramProperty *const unigramProperty,
+            const std::vector<BigramProperty> *const bigrams)
+            : mCodePoints(*codePoints), mUnigramProperty(*unigramProperty), mBigrams(*bigrams) {}
+
+    void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags,
+            jintArray outProbabilityInfo, jobject outBigramTargets, jobject outBigramProbabilities,
+            jobject outShortcutTargets, jobject outShortcutProbabilities) const;
+
+    const UnigramProperty *getUnigramProperty() const {
+        return &mUnigramProperty;
+    }
+
+    const std::vector<BigramProperty> *getBigramProperties() const {
+        return &mBigrams;
+    }
+
+ private:
+    // Default copy constructor is used for using as a return value.
+    DISALLOW_ASSIGNMENT_OPERATOR(WordProperty);
+
+    const std::vector<int> mCodePoints;
+    const UnigramProperty mUnigramProperty;
+    const std::vector<BigramProperty> mBigrams;
+};
+} // namespace latinime
+#endif // LATINIME_WORD_PROPERTY_H
diff --git a/native/jni/src/suggest/core/dictionary/shortcut_utils.h b/native/jni/src/suggest/core/dictionary/shortcut_utils.h
deleted file mode 100644
index 9ccef02..0000000
--- a/native/jni/src/suggest/core/dictionary/shortcut_utils.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef LATINIME_SHORTCUT_UTILS
-#define LATINIME_SHORTCUT_UTILS
-
-#include "defines.h"
-#include "suggest/core/dicnode/dic_node_utils.h"
-#include "suggest/core/dictionary/binary_dictionary_shortcut_iterator.h"
-
-namespace latinime {
-
-class ShortcutUtils {
- public:
-    static int outputShortcuts(BinaryDictionaryShortcutIterator *const shortcutIt,
-            int outputWordIndex, const int finalScore, int *const outputCodePoints,
-            int *const frequencies, int *const outputTypes, const bool sameAsTyped) {
-        int shortcutTarget[MAX_WORD_LENGTH];
-        while (shortcutIt->hasNextShortcutTarget() && outputWordIndex < MAX_RESULTS) {
-            bool isWhilelist;
-            int shortcutTargetStringLength;
-            shortcutIt->nextShortcutTarget(MAX_WORD_LENGTH, shortcutTarget,
-                    &shortcutTargetStringLength, &isWhilelist);
-            int shortcutScore;
-            int kind;
-            if (isWhilelist && sameAsTyped) {
-                shortcutScore = S_INT_MAX;
-                kind = Dictionary::KIND_WHITELIST;
-            } else {
-                // shortcut entry's score == its base entry's score - 1
-                shortcutScore = finalScore;
-                // Protection against int underflow
-                shortcutScore = max(S_INT_MIN + 1, shortcutScore) - 1;
-                kind = Dictionary::KIND_SHORTCUT;
-            }
-            outputTypes[outputWordIndex] = kind;
-            frequencies[outputWordIndex] = shortcutScore;
-            frequencies[outputWordIndex] = max(S_INT_MIN + 1, shortcutScore) - 1;
-            const int startIndex2 = outputWordIndex * MAX_WORD_LENGTH;
-            DicNodeUtils::appendTwoWords(0, 0, shortcutTarget, shortcutTargetStringLength,
-                    &outputCodePoints[startIndex2]);
-            ++outputWordIndex;
-        }
-        return outputWordIndex;
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutUtils);
-};
-} // namespace latinime
-#endif // LATINIME_SHORTCUT_UTILS
diff --git a/native/jni/src/suggest/core/layout/normal_distribution.h b/native/jni/src/suggest/core/layout/normal_distribution.h
new file mode 100644
index 0000000..5f21a59
--- /dev/null
+++ b/native/jni/src/suggest/core/layout/normal_distribution.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_NORMAL_DISTRIBUTION_H
+#define LATINIME_NORMAL_DISTRIBUTION_H
+
+#include <cmath>
+
+#include "defines.h"
+
+namespace latinime {
+
+// Normal distribution N(u, sigma^2).
+class NormalDistribution {
+ public:
+    NormalDistribution(const float u, const float sigma)
+            : mU(u),
+              mPreComputedNonExpPart(1.0f / sqrtf(2.0f * M_PI_F
+                      * GeometryUtils::SQUARE_FLOAT(sigma))),
+              mPreComputedExponentPart(-1.0f / (2.0f * GeometryUtils::SQUARE_FLOAT(sigma))) {}
+
+    float getProbabilityDensity(const float x) const {
+        const float shiftedX = x - mU;
+        return mPreComputedNonExpPart
+                * expf(mPreComputedExponentPart * GeometryUtils::SQUARE_FLOAT(shiftedX));
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution);
+
+    const float mU; // mean value
+    const float mPreComputedNonExpPart; // = 1 / sqrt(2 * PI * sigma^2)
+    const float mPreComputedExponentPart; // = -1 / (2 * sigma^2)
+};
+} // namespace latinime
+#endif // LATINIME_NORMAL_DISTRIBUTION_H
diff --git a/native/jni/src/suggest/core/layout/normal_distribution_2d.h b/native/jni/src/suggest/core/layout/normal_distribution_2d.h
new file mode 100644
index 0000000..3bc0a01
--- /dev/null
+++ b/native/jni/src/suggest/core/layout/normal_distribution_2d.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_NORMAL_DISTRIBUTION_2D_H
+#define LATINIME_NORMAL_DISTRIBUTION_2D_H
+
+#include <cmath>
+
+#include "defines.h"
+#include "suggest/core/layout/geometry_utils.h"
+#include "suggest/core/layout/normal_distribution.h"
+
+namespace latinime {
+
+// Normal distribution on a 2D plane. The covariance is always zero, but the distribution can be
+// rotated.
+class NormalDistribution2D {
+ public:
+    NormalDistribution2D(const float uX, const float sigmaX, const float uY, const float sigmaY,
+            const float theta)
+            : mXDistribution(0.0f, sigmaX), mYDistribution(0.0f, sigmaY), mUX(uX), mUY(uY),
+              mSinTheta(sinf(theta)), mCosTheta(cosf(theta)) {}
+
+    float getProbabilityDensity(const float x, const float y) const {
+        // Shift
+        const float shiftedX = x - mUX;
+        const float shiftedY = y - mUY;
+        // Rotate
+        const float rotatedShiftedX = mCosTheta * shiftedX + mSinTheta * shiftedY;
+        const float rotatedShiftedY = -mSinTheta * shiftedX + mCosTheta * shiftedY;
+        return mXDistribution.getProbabilityDensity(rotatedShiftedX)
+                * mYDistribution.getProbabilityDensity(rotatedShiftedY);
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution2D);
+
+    const NormalDistribution mXDistribution;
+    const NormalDistribution mYDistribution;
+    const float mUX;
+    const float mUY;
+    const float mSinTheta;
+    const float mCosTheta;
+};
+} // namespace latinime
+#endif // LATINIME_NORMAL_DISTRIBUTION_2D_H
diff --git a/native/jni/src/suggest/core/layout/proximity_info.cpp b/native/jni/src/suggest/core/layout/proximity_info.cpp
index e64476d..4c75a18 100644
--- a/native/jni/src/suggest/core/layout/proximity_info.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info.cpp
@@ -18,6 +18,7 @@
 
 #include "suggest/core/layout/proximity_info.h"
 
+#include <algorithm>
 #include <cstring>
 #include <cmath>
 
@@ -57,13 +58,12 @@
         const jfloatArray sweetSpotCenterYs, const jfloatArray sweetSpotRadii)
         : GRID_WIDTH(gridWidth), GRID_HEIGHT(gridHeight), MOST_COMMON_KEY_WIDTH(mostCommonKeyWidth),
           MOST_COMMON_KEY_WIDTH_SQUARE(mostCommonKeyWidth * mostCommonKeyWidth),
-          MOST_COMMON_KEY_HEIGHT(mostCommonKeyHeight),
           NORMALIZED_SQUARED_MOST_COMMON_KEY_HYPOTENUSE(1.0f +
                   GeometryUtils::SQUARE_FLOAT(static_cast<float>(mostCommonKeyHeight) /
                           static_cast<float>(mostCommonKeyWidth))),
           CELL_WIDTH((keyboardWidth + gridWidth - 1) / gridWidth),
           CELL_HEIGHT((keyboardHeight + gridHeight - 1) / gridHeight),
-          KEY_COUNT(min(keyCount, MAX_KEY_COUNT_IN_A_KEYBOARD)),
+          KEY_COUNT(std::min(keyCount, MAX_KEY_COUNT_IN_A_KEYBOARD)),
           KEYBOARD_WIDTH(keyboardWidth), KEYBOARD_HEIGHT(keyboardHeight),
           KEYBOARD_HYPOTENUSE(hypotf(KEYBOARD_WIDTH, KEYBOARD_HEIGHT)),
           HAS_TOUCH_POSITION_CORRECTION_DATA(keyCount > 0 && keyXCoordinates && keyYCoordinates
@@ -71,7 +71,7 @@
                   && sweetSpotCenterYs && sweetSpotRadii),
           mProximityCharsArray(new int[GRID_WIDTH * GRID_HEIGHT * MAX_PROXIMITY_CHARS_SIZE
                   /* proximityCharsLength */]),
-          mCodeToKeyMap() {
+          mLowerCodePointToKeyMap() {
     /* Let's check the input array length here to make sure */
     const jsize proximityCharsLength = env->GetArrayLength(proximityChars);
     if (proximityCharsLength != GRID_WIDTH * GRID_HEIGHT * MAX_PROXIMITY_CHARS_SIZE) {
@@ -147,7 +147,14 @@
     if (keyIndex < 0 || keyIndex >= KEY_COUNT) {
         return NOT_A_CODE_POINT;
     }
-    return mKeyIndexToCodePointG[keyIndex];
+    return mKeyIndexToLowerCodePointG[keyIndex];
+}
+
+int ProximityInfo::getOriginalCodePointOf(const int keyIndex) const {
+    if (keyIndex < 0 || keyIndex >= KEY_COUNT) {
+        return NOT_A_CODE_POINT;
+    }
+    return mKeyIndexToOriginalCodePoint[keyIndex];
 }
 
 void ProximityInfo::initializeG() {
@@ -164,8 +171,9 @@
             const float gapY = sweetSpotCenterY - mCenterYsG[i];
             mSweetSpotCenterYsG[i] = static_cast<int>(mCenterYsG[i] + gapY * verticalScale);
         }
-        mCodeToKeyMap[lowerCode] = i;
-        mKeyIndexToCodePointG[i] = lowerCode;
+        mLowerCodePointToKeyMap[lowerCode] = i;
+        mKeyIndexToOriginalCodePoint[i] = code;
+        mKeyIndexToLowerCodePointG[i] = lowerCode;
     }
     for (int i = 0; i < KEY_COUNT; i++) {
         mKeyKeyDistancesG[i][i] = 0;
@@ -218,7 +226,7 @@
 // When the referencePointY is NOT_A_COORDINATE, this method calculates the return value without
 // using the line segment.
 int ProximityInfo::getKeyCenterYOfKeyIdG(
-        const int keyId,  const int referencePointY, const bool isGeometric) const {
+        const int keyId, const int referencePointY, const bool isGeometric) const {
     // TODO: Remove "isGeometric" and have separate "proximity_info"s for gesture and typing.
     if (keyId < 0) {
         return 0;
diff --git a/native/jni/src/suggest/core/layout/proximity_info.h b/native/jni/src/suggest/core/layout/proximity_info.h
index f259490..d4e4537 100644
--- a/native/jni/src/suggest/core/layout/proximity_info.h
+++ b/native/jni/src/suggest/core/layout/proximity_info.h
@@ -17,10 +17,11 @@
 #ifndef LATINIME_PROXIMITY_INFO_H
 #define LATINIME_PROXIMITY_INFO_H
 
+#include <unordered_map>
+
 #include "defines.h"
 #include "jni.h"
 #include "suggest/core/layout/proximity_info_utils.h"
-#include "utils/hash_map_compat.h"
 
 namespace latinime {
 
@@ -35,10 +36,10 @@
             const jfloatArray sweetSpotCenterYs, const jfloatArray sweetSpotRadii);
     ~ProximityInfo();
     bool hasSpaceProximity(const int x, const int y) const;
-    int getNormalizedSquaredDistance(const int inputIndex, const int proximityIndex) const;
     float getNormalizedSquaredDistanceFromCenterFloatG(
             const int keyId, const int x, const int y, const bool isGeometric) const;
     int getCodePointOf(const int keyIndex) const;
+    int getOriginalCodePointOf(const int keyIndex) const;
     bool hasSweetSpotData(const int keyIndex) const {
         // When there are no calibration data for a key,
         // the radius of the key is assigned to zero.
@@ -47,8 +48,6 @@
     float getSweetSpotRadiiAt(int keyIndex) const { return mSweetSpotRadii[keyIndex]; }
     float getSweetSpotCenterXAt(int keyIndex) const { return mSweetSpotCenterXs[keyIndex]; }
     float getSweetSpotCenterYAt(int keyIndex) const { return mSweetSpotCenterYs[keyIndex]; }
-    void calculateNearbyKeyCodes(
-            const int x, const int y, const int primaryKey, int *inputCodes) const;
     bool hasTouchPositionCorrectionData() const { return HAS_TOUCH_POSITION_CORRECTION_DATA; }
     int getMostCommonKeyWidth() const { return MOST_COMMON_KEY_WIDTH; }
     int getMostCommonKeyWidthSquare() const { return MOST_COMMON_KEY_WIDTH_SQUARE; }
@@ -76,11 +75,11 @@
         ProximityInfoUtils::initializeProximities(inputCodes, inputXCoordinates, inputYCoordinates,
                 inputSize, mKeyXCoordinates, mKeyYCoordinates, mKeyWidths, mKeyHeights,
                 mProximityCharsArray, CELL_HEIGHT, CELL_WIDTH, GRID_WIDTH, MOST_COMMON_KEY_WIDTH,
-                KEY_COUNT, mLocaleStr, &mCodeToKeyMap, allInputCodes);
+                KEY_COUNT, mLocaleStr, &mLowerCodePointToKeyMap, allInputCodes);
     }
 
     AK_FORCE_INLINE int getKeyIndexOf(const int c) const {
-        return ProximityInfoUtils::getKeyIndexOf(KEY_COUNT, c, &mCodeToKeyMap);
+        return ProximityInfoUtils::getKeyIndexOf(KEY_COUNT, c, &mLowerCodePointToKeyMap);
     }
 
     AK_FORCE_INLINE bool isCodePointOnKeyboard(const int codePoint) const {
@@ -96,7 +95,6 @@
     const int GRID_HEIGHT;
     const int MOST_COMMON_KEY_WIDTH;
     const int MOST_COMMON_KEY_WIDTH_SQUARE;
-    const int MOST_COMMON_KEY_HEIGHT;
     const float NORMALIZED_SQUARED_MOST_COMMON_KEY_HYPOTENUSE;
     const int CELL_WIDTH;
     const int CELL_HEIGHT;
@@ -105,6 +103,8 @@
     const int KEYBOARD_HEIGHT;
     const float KEYBOARD_HYPOTENUSE;
     const bool HAS_TOUCH_POSITION_CORRECTION_DATA;
+    // Assuming locale strings such as en_US, sr-Latn etc.
+    static const int MAX_LOCALE_STRING_LENGTH = 10;
     char mLocaleStr[MAX_LOCALE_STRING_LENGTH];
     int *mProximityCharsArray;
     int mKeyXCoordinates[MAX_KEY_COUNT_IN_A_KEYBOARD];
@@ -117,13 +117,12 @@
     // Sweet spots for geometric input. Note that we have extra sweet spots only for Y coordinates.
     float mSweetSpotCenterYsG[MAX_KEY_COUNT_IN_A_KEYBOARD];
     float mSweetSpotRadii[MAX_KEY_COUNT_IN_A_KEYBOARD];
-    hash_map_compat<int, int> mCodeToKeyMap;
-
-    int mKeyIndexToCodePointG[MAX_KEY_COUNT_IN_A_KEYBOARD];
+    std::unordered_map<int, int> mLowerCodePointToKeyMap;
+    int mKeyIndexToOriginalCodePoint[MAX_KEY_COUNT_IN_A_KEYBOARD];
+    int mKeyIndexToLowerCodePointG[MAX_KEY_COUNT_IN_A_KEYBOARD];
     int mCenterXsG[MAX_KEY_COUNT_IN_A_KEYBOARD];
     int mCenterYsG[MAX_KEY_COUNT_IN_A_KEYBOARD];
     int mKeyKeyDistancesG[MAX_KEY_COUNT_IN_A_KEYBOARD][MAX_KEY_COUNT_IN_A_KEYBOARD];
-    // TODO: move to correction.h
 };
 } // namespace latinime
 #endif // LATINIME_PROXIMITY_INFO_H
diff --git a/native/jni/src/suggest/core/layout/proximity_info_params.cpp b/native/jni/src/suggest/core/layout/proximity_info_params.cpp
index 49df103..68bb0ae 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_params.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info_params.cpp
@@ -24,9 +24,6 @@
 const float ProximityInfoParams::VERTICAL_SWEET_SPOT_SCALE_G = 0.5f;
 
 /* Per method constants */
-// Used by ProximityInfoStateUtils::initGeometricDistanceInfos()
-const float ProximityInfoParams::NEAR_KEY_NORMALIZED_SQUARED_THRESHOLD = 4.0f;
-
 // Used by ProximityInfoStateUtils::updateNearKeysDistances()
 const float ProximityInfoParams::NEAR_KEY_THRESHOLD_FOR_DISTANCE = 2.0f;
 
@@ -50,7 +47,7 @@
 const int ProximityInfoParams::LAST_POINT_SKIP_DISTANCE_SCALE = 4;
 
 // Used by ProximityInfoStateUtils::updateAlignPointProbabilities()
-const float ProximityInfoParams::MIN_PROBABILITY = 0.000001f;
+const float ProximityInfoParams::MIN_PROBABILITY = 0.000005f;
 const float ProximityInfoParams::MAX_SKIP_PROBABILITY = 0.95f;
 const float ProximityInfoParams::SKIP_FIRST_POINT_PROBABILITY = 0.01f;
 const float ProximityInfoParams::SKIP_LAST_POINT_PROBABILITY = 0.1f;
@@ -76,8 +73,12 @@
 const float ProximityInfoParams::SPEEDxNEAREST_WEIGHT_FOR_STANDARD_DEVIATION = 0.5f;
 const float ProximityInfoParams::MAX_SPEEDxNEAREST_RATE_FOR_STANDARD_DEVIATION = 0.15f;
 const float ProximityInfoParams::MIN_STANDARD_DEVIATION = 0.37f;
-const float ProximityInfoParams::PREV_DISTANCE_WEIGHT = 0.5f;
-const float ProximityInfoParams::NEXT_DISTANCE_WEIGHT = 0.6f;
+const float ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT_FOR_FIRST = 1.25f;
+const float ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT_FOR_FIRST = 0.85f;
+const float ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT_FOR_LAST = 1.4f;
+const float ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT_FOR_LAST = 0.95f;
+const float ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT = 1.1f;
+const float ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT = 0.95f;
 
 // Used by ProximityInfoStateUtils::suppressCharProbabilities()
 const float ProximityInfoParams::SUPPRESSION_LENGTH_WEIGHT = 1.5f;
@@ -98,7 +99,4 @@
 const int ProximityInfoParams::FIRST_POINT_TIME_OFFSET_MILLIS = 150;
 const int ProximityInfoParams::STRONG_DOUBLE_LETTER_TIME_MILLIS = 600;
 
-// Used by ProximityInfoStateUtils::calculateNormalizedSquaredDistance()
-const int ProximityInfoParams::NORMALIZED_SQUARED_DISTANCE_SCALING_FACTOR = 1 << 10;
-
 } // namespace latinime
diff --git a/native/jni/src/suggest/core/layout/proximity_info_params.h b/native/jni/src/suggest/core/layout/proximity_info_params.h
index ae1f82c..d9515c8 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_params.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_params.h
@@ -28,9 +28,6 @@
     static const float VERTICAL_SWEET_SPOT_SCALE;
     static const float VERTICAL_SWEET_SPOT_SCALE_G;
 
-    // Used by ProximityInfoStateUtils::initGeometricDistanceInfos()
-    static const float NEAR_KEY_NORMALIZED_SQUARED_THRESHOLD;
-
     // Used by ProximityInfoStateUtils::updateNearKeysDistances()
     static const float NEAR_KEY_THRESHOLD_FOR_DISTANCE;
 
@@ -78,8 +75,13 @@
     static const float SPEEDxNEAREST_WEIGHT_FOR_STANDARD_DEVIATION;
     static const float MAX_SPEEDxNEAREST_RATE_FOR_STANDARD_DEVIATION;
     static const float MIN_STANDARD_DEVIATION;
-    static const float PREV_DISTANCE_WEIGHT;
-    static const float NEXT_DISTANCE_WEIGHT;
+    // X means gesture's direction. Y means gesture's orthogonal direction.
+    static const float STANDARD_DEVIATION_X_WEIGHT_FOR_FIRST;
+    static const float STANDARD_DEVIATION_Y_WEIGHT_FOR_FIRST;
+    static const float STANDARD_DEVIATION_X_WEIGHT_FOR_LAST;
+    static const float STANDARD_DEVIATION_Y_WEIGHT_FOR_LAST;
+    static const float STANDARD_DEVIATION_X_WEIGHT;
+    static const float STANDARD_DEVIATION_Y_WEIGHT;
 
     // Used by ProximityInfoStateUtils::suppressCharProbabilities()
     static const float SUPPRESSION_LENGTH_WEIGHT;
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state.cpp b/native/jni/src/suggest/core/layout/proximity_info_state.cpp
index fbabd92..91469e2 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info_state.cpp
@@ -18,8 +18,10 @@
 
 #include "suggest/core/layout/proximity_info_state.h"
 
-#include <cstring> // for memset() and memcpy()
+#include <algorithm>
+#include <cstring> // for memset() and memmove()
 #include <sstream> // for debug prints
+#include <unordered_map>
 #include <vector>
 
 #include "defines.h"
@@ -30,6 +32,12 @@
 
 namespace latinime {
 
+int ProximityInfoState::getPrimaryOriginalCodePointAt(const int index) const {
+    const int primaryCodePoint = getPrimaryCodePointAt(index);
+    const int keyIndex = mProximityInfo->getKeyIndexOf(primaryCodePoint);
+    return mProximityInfo->getOriginalCodePointOf(keyIndex);
+}
+
 // TODO: Remove the dependency of "isGeometric"
 void ProximityInfoState::initInputParams(const int pointerId, const float maxPointToKeyLength,
         const ProximityInfo *proximityInfo, const int *const inputCodes, const int inputSize,
@@ -84,7 +92,6 @@
         mSampledInputIndice.clear();
         mSampledLengthCache.clear();
         mSampledNormalizedSquaredLengthCache.clear();
-        mSampledNearKeySets.clear();
         mSampledSearchKeySets.clear();
         mSpeedRates.clear();
         mBeelineSpeedPercentiles.clear();
@@ -119,18 +126,17 @@
     if (mSampledInputSize > 0) {
         ProximityInfoStateUtils::initGeometricDistanceInfos(mProximityInfo, mSampledInputSize,
                 lastSavedInputSize, isGeometric, &mSampledInputXs, &mSampledInputYs,
-                &mSampledNearKeySets, &mSampledNormalizedSquaredLengthCache);
+                &mSampledNormalizedSquaredLengthCache);
         if (isGeometric) {
             // updates probabilities of skipping or mapping each key for all points.
             ProximityInfoStateUtils::updateAlignPointProbabilities(
                     mMaxPointToKeyLength, mProximityInfo->getMostCommonKeyWidth(),
                     mProximityInfo->getKeyCount(), lastSavedInputSize, mSampledInputSize,
                     &mSampledInputXs, &mSampledInputYs, &mSpeedRates, &mSampledLengthCache,
-                    &mSampledNormalizedSquaredLengthCache, &mSampledNearKeySets,
-                    &mCharProbabilities);
+                    &mSampledNormalizedSquaredLengthCache, mProximityInfo, &mCharProbabilities);
             ProximityInfoStateUtils::updateSampledSearchKeySets(mProximityInfo,
                     mSampledInputSize, lastSavedInputSize, &mSampledLengthCache,
-                    &mSampledNearKeySets, &mSampledSearchKeySets,
+                    &mCharProbabilities, &mSampledSearchKeySets,
                     &mSampledSearchKeyVectors);
             mMostProbableStringProbability = ProximityInfoStateUtils::getMostProbableString(
                     mProximityInfo, mSampledInputSize, &mCharProbabilities, mMostProbableString);
@@ -165,7 +171,7 @@
     const int keyId = mProximityInfo->getKeyIndexOf(codePoint);
     if (keyId != NOT_AN_INDEX) {
         const int index = inputIndex * mProximityInfo->getKeyCount() + keyId;
-        return min(mSampledNormalizedSquaredLengthCache[index], mMaxPointToKeyLength);
+        return std::min(mSampledNormalizedSquaredLengthCache[index], mMaxPointToKeyLength);
     }
     if (CharUtils::isIntentionalOmissionCodePoint(codePoint)) {
         return 0.0f;
@@ -249,6 +255,14 @@
     if (!isUsed()) {
         return UNRELATED_CHAR;
     }
+    const int sampledSearchKeyVectorsSize = static_cast<int>(mSampledSearchKeyVectors.size());
+    if (index < 0 || index >= sampledSearchKeyVectorsSize) {
+        AKLOGE("getProximityTypeG() is called with an invalid index(%d). "
+                "mSampledSearchKeyVectors.size() = %d, codePoint = %x.", index,
+                sampledSearchKeyVectorsSize, codePoint);
+        ASSERT(false);
+        return UNRELATED_CHAR;
+    }
     const int lowerCodePoint = CharUtils::toLowerCase(codePoint);
     const int baseLowerCodePoint = CharUtils::toBaseCodePoint(lowerCodePoint);
     for (int i = 0; i < static_cast<int>(mSampledSearchKeyVectors[index].size()); ++i) {
@@ -271,7 +285,7 @@
 }
 
 float ProximityInfoState::getMostProbableString(int *const codePointBuf) const {
-    memcpy(codePointBuf, mMostProbableString, sizeof(mMostProbableString));
+    memmove(codePointBuf, mMostProbableString, sizeof(mMostProbableString));
     return mMostProbableStringProbability;
 }
 
@@ -283,7 +297,7 @@
 // Returns a probability of mapping index to keyIndex.
 float ProximityInfoState::getProbability(const int index, const int keyIndex) const {
     ASSERT(0 <= index && index < mSampledInputSize);
-    hash_map_compat<int, float>::const_iterator it = mCharProbabilities[index].find(keyIndex);
+    std::unordered_map<int, float>::const_iterator it = mCharProbabilities[index].find(keyIndex);
     if (it != mCharProbabilities[index].end()) {
         return it->second;
     }
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state.h b/native/jni/src/suggest/core/layout/proximity_info_state.h
index c94060f..6b1a319 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_state.h
@@ -18,12 +18,12 @@
 #define LATINIME_PROXIMITY_INFO_STATE_H
 
 #include <cstring> // for memset()
+#include <unordered_map>
 #include <vector>
 
 #include "defines.h"
 #include "suggest/core/layout/proximity_info_params.h"
 #include "suggest/core/layout/proximity_info_state_utils.h"
-#include "utils/hash_map_compat.h"
 
 namespace latinime {
 
@@ -43,16 +43,16 @@
     // Defined here                        //
     /////////////////////////////////////////
     AK_FORCE_INLINE ProximityInfoState()
-            : mProximityInfo(0), mMaxPointToKeyLength(0.0f), mAverageSpeed(0.0f),
+            : mProximityInfo(nullptr), mMaxPointToKeyLength(0.0f), mAverageSpeed(0.0f),
               mHasTouchPositionCorrectionData(false), mMostCommonKeyWidthSquare(0),
               mKeyCount(0), mCellHeight(0), mCellWidth(0), mGridHeight(0), mGridWidth(0),
               mIsContinuousSuggestionPossible(false), mHasBeenUpdatedByGeometricInput(false),
               mSampledInputXs(), mSampledInputYs(), mSampledTimes(), mSampledInputIndice(),
               mSampledLengthCache(), mBeelineSpeedPercentiles(),
               mSampledNormalizedSquaredLengthCache(), mSpeedRates(), mDirections(),
-              mCharProbabilities(), mSampledNearKeySets(), mSampledSearchKeySets(),
-              mSampledSearchKeyVectors(), mTouchPositionCorrectionEnabled(false),
-              mSampledInputSize(0), mMostProbableStringProbability(0.0f) {
+              mCharProbabilities(), mSampledSearchKeySets(), mSampledSearchKeyVectors(),
+              mTouchPositionCorrectionEnabled(false), mSampledInputSize(0),
+              mMostProbableStringProbability(0.0f) {
         memset(mInputProximities, 0, sizeof(mInputProximities));
         memset(mPrimaryInputWord, 0, sizeof(mPrimaryInputWord));
         memset(mMostProbableString, 0, sizeof(mMostProbableString));
@@ -65,6 +65,8 @@
         return getProximityCodePointsAt(index)[0];
     }
 
+    int getPrimaryOriginalCodePointAt(const int index) const;
+
     inline bool sameAsTyped(const int *word, int length) const {
         if (length != mSampledInputSize) {
             return false;
@@ -106,10 +108,6 @@
         return false;
     }
 
-    inline const int *getPrimaryInputWord() const {
-        return mPrimaryInputWord;
-    }
-
     inline bool touchPositionCorrectionEnabled() const {
         return mTouchPositionCorrectionEnabled;
     }
@@ -154,10 +152,6 @@
 
     ProximityType getProximityTypeG(const int index, const int codePoint) const;
 
-    const std::vector<int> *getSearchKeyVector(const int index) const {
-        return &mSampledSearchKeyVectors[index];
-    }
-
     float getSpeedRate(const int index) const {
         return mSpeedRates[index];
     }
@@ -221,11 +215,7 @@
     std::vector<float> mSpeedRates;
     std::vector<float> mDirections;
     // probabilities of skipping or mapping to a key for each point.
-    std::vector<hash_map_compat<int, float> > mCharProbabilities;
-    // The vector for the key code set which holds nearby keys for each sampled input point
-    // 1. Used to calculate the probability of the key
-    // 2. Used to calculate mSampledSearchKeySets
-    std::vector<ProximityInfoStateUtils::NearKeycodesSet> mSampledNearKeySets;
+    std::vector<std::unordered_map<int, float> > mCharProbabilities;
     // The vector for the key code set which holds nearby keys of some trailing sampled input points
     // for each sampled input point. These nearby keys contain the next characters which can be in
     // the dictionary. Specifically, currently we are looking for keys nearby trailing sampled
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp b/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp
index e1b3534..ea3b022 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info_state_utils.cpp
@@ -16,13 +16,16 @@
 
 #include "suggest/core/layout/proximity_info_state_utils.h"
 
+#include <algorithm>
 #include <cmath>
 #include <cstring> // for memset()
 #include <sstream> // for debug prints
+#include <unordered_map>
 #include <vector>
 
 #include "defines.h"
 #include "suggest/core/layout/geometry_utils.h"
+#include "suggest/core/layout/normal_distribution_2d.h"
 #include "suggest/core/layout/proximity_info.h"
 #include "suggest/core/layout/proximity_info_params.h"
 
@@ -186,13 +189,10 @@
         const int lastSavedInputSize, const bool isGeometric,
         const std::vector<int> *const sampledInputXs,
         const std::vector<int> *const sampledInputYs,
-        std::vector<NearKeycodesSet> *sampledNearKeySets,
         std::vector<float> *sampledNormalizedSquaredLengthCache) {
-    sampledNearKeySets->resize(sampledInputSize);
     const int keyCount = proximityInfo->getKeyCount();
     sampledNormalizedSquaredLengthCache->resize(sampledInputSize * keyCount);
     for (int i = lastSavedInputSize; i < sampledInputSize; ++i) {
-        (*sampledNearKeySets)[i].reset();
         for (int k = 0; k < keyCount; ++k) {
             const int index = i * keyCount + k;
             const int x = (*sampledInputXs)[i];
@@ -201,10 +201,6 @@
                     proximityInfo->getNormalizedSquaredDistanceFromCenterFloatG(
                             k, x, y, isGeometric);
             (*sampledNormalizedSquaredLengthCache)[index] = normalizedSquaredDistance;
-            if (normalizedSquaredDistance
-                    < ProximityInfoParams::NEAR_KEY_NORMALIZED_SQUARED_THRESHOLD) {
-                (*sampledNearKeySets)[i][k] = true;
-            }
         }
     }
 }
@@ -240,7 +236,7 @@
         // Calculate velocity by using distances and durations of
         // ProximityInfoParams::NUM_POINTS_FOR_SPEED_CALCULATION points for both forward and
         // backward.
-        const int forwardNumPoints = min(inputSize - 1,
+        const int forwardNumPoints = std::min(inputSize - 1,
                 index + ProximityInfoParams::NUM_POINTS_FOR_SPEED_CALCULATION);
         for (int j = index; j < forwardNumPoints; ++j) {
             if (i < sampledInputSize - 1 && j >= (*sampledInputIndice)[i + 1]) {
@@ -250,7 +246,7 @@
                     xCoordinates[j + 1], yCoordinates[j + 1]);
             duration += times[j + 1] - times[j];
         }
-        const int backwardNumPoints = max(0,
+        const int backwardNumPoints = std::max(0,
                 index - ProximityInfoParams::NUM_POINTS_FOR_SPEED_CALCULATION);
         for (int j = index - 1; j >= backwardNumPoints; --j) {
             if (i > 0 && j < (*sampledInputIndice)[i - 1]) {
@@ -272,7 +268,7 @@
 
     // Direction calculation.
     sampledDirections->resize(sampledInputSize - 1);
-    for (int i = max(0, lastSavedInputSize - 1); i < sampledInputSize - 1; ++i) {
+    for (int i = std::max(0, lastSavedInputSize - 1); i < sampledInputSize - 1; ++i) {
         (*sampledDirections)[i] = getDirection(sampledInputXs, sampledInputYs, i, i + 1);
     }
     return averageSpeed;
@@ -609,7 +605,7 @@
         const int inputIndex, const int keyId) {
     if (keyId != NOT_AN_INDEX) {
         const int index = inputIndex * keyCount + keyId;
-        return min((*sampledNormalizedSquaredLengthCache)[index], maxPointToKeyLength);
+        return std::min((*sampledNormalizedSquaredLengthCache)[index], maxPointToKeyLength);
     }
     // If the char is not a key on the keyboard then return the max length.
     return static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
@@ -624,8 +620,8 @@
         const std::vector<float> *const sampledSpeedRates,
         const std::vector<int> *const sampledLengthCache,
         const std::vector<float> *const sampledNormalizedSquaredLengthCache,
-        std::vector<NearKeycodesSet> *sampledNearKeySets,
-        std::vector<hash_map_compat<int, float> > *charProbabilities) {
+        const ProximityInfo *const proximityInfo,
+        std::vector<std::unordered_map<int, float> > *charProbabilities) {
     charProbabilities->resize(sampledInputSize);
     // Calculates probabilities of using a point as a correlated point with the character
     // for each point.
@@ -640,23 +636,21 @@
 
         float nearestKeyDistance = static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
         for (int j = 0; j < keyCount; ++j) {
-            if ((*sampledNearKeySets)[i].test(j)) {
-                const float distance = getPointToKeyByIdLength(
-                        maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount, i, j);
-                if (distance < nearestKeyDistance) {
-                    nearestKeyDistance = distance;
-                }
+            const float distance = getPointToKeyByIdLength(
+                    maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount, i, j);
+            if (distance < nearestKeyDistance) {
+                nearestKeyDistance = distance;
             }
         }
 
         if (i == 0) {
-            skipProbability *= min(1.0f,
+            skipProbability *= std::min(1.0f,
                     nearestKeyDistance * ProximityInfoParams::NEAREST_DISTANCE_WEIGHT
                             + ProximityInfoParams::NEAREST_DISTANCE_BIAS);
             // Promote the first point
             skipProbability *= ProximityInfoParams::SKIP_FIRST_POINT_PROBABILITY;
         } else if (i == sampledInputSize - 1) {
-            skipProbability *= min(1.0f,
+            skipProbability *= std::min(1.0f,
                     nearestKeyDistance * ProximityInfoParams::NEAREST_DISTANCE_WEIGHT_FOR_LAST
                             + ProximityInfoParams::NEAREST_DISTANCE_BIAS_FOR_LAST);
             // Promote the last point
@@ -667,17 +661,17 @@
                     && speedRate
                             < (*sampledSpeedRates)[i + 1] - ProximityInfoParams::SPEED_MARGIN) {
                 if (currentAngle < ProximityInfoParams::CORNER_ANGLE_THRESHOLD) {
-                    skipProbability *= min(1.0f, speedRate
+                    skipProbability *= std::min(1.0f, speedRate
                             * ProximityInfoParams::SLOW_STRAIGHT_WEIGHT_FOR_SKIP_PROBABILITY);
                 } else {
                     // If the angle is small enough, we promote this point more. (e.g. pit vs put)
-                    skipProbability *= min(1.0f,
+                    skipProbability *= std::min(1.0f,
                             speedRate * ProximityInfoParams::SPEED_WEIGHT_FOR_SKIP_PROBABILITY
                                     + ProximityInfoParams::MIN_SPEED_RATE_FOR_SKIP_PROBABILITY);
                 }
             }
 
-            skipProbability *= min(1.0f,
+            skipProbability *= std::min(1.0f,
                     speedRate * nearestKeyDistance * ProximityInfoParams::NEAREST_DISTANCE_WEIGHT
                             + ProximityInfoParams::NEAREST_DISTANCE_BIAS);
 
@@ -707,93 +701,57 @@
         // (1.0f - skipProbability).
         const float inputCharProbability = 1.0f - skipProbability;
 
-        const float speedxAngleRate = min(speedRate * currentAngle / M_PI_F
+        const float speedMultipliedByAngleRate = std::min(speedRate * currentAngle / M_PI_F
                 * ProximityInfoParams::SPEEDxANGLE_WEIGHT_FOR_STANDARD_DEVIATION,
                         ProximityInfoParams::MAX_SPEEDxANGLE_RATE_FOR_STANDARD_DEVIATION);
-        const float speedxNearestKeyDistanceRate = min(speedRate * nearestKeyDistance
-                * ProximityInfoParams::SPEEDxNEAREST_WEIGHT_FOR_STANDARD_DEVIATION,
-                        ProximityInfoParams::MAX_SPEEDxNEAREST_RATE_FOR_STANDARD_DEVIATION);
-        const float sigma = speedxAngleRate + speedxNearestKeyDistanceRate
-                + ProximityInfoParams::MIN_STANDARD_DEVIATION;
-
-        ProximityInfoUtils::NormalDistribution
-                distribution(ProximityInfoParams::CENTER_VALUE_OF_NORMALIZED_DISTRIBUTION, sigma);
+        const float speedMultipliedByNearestKeyDistanceRate = std::min(
+                speedRate * nearestKeyDistance
+                        * ProximityInfoParams::SPEEDxNEAREST_WEIGHT_FOR_STANDARD_DEVIATION,
+                                ProximityInfoParams::MAX_SPEEDxNEAREST_RATE_FOR_STANDARD_DEVIATION);
+        const float sigma = (speedMultipliedByAngleRate + speedMultipliedByNearestKeyDistanceRate
+                + ProximityInfoParams::MIN_STANDARD_DEVIATION) * mostCommonKeyWidth;
+        float theta = 0.0f;
+        // TODO: Use different metrics to compute sigmas.
+        float sigmaX = sigma;
+        float sigmaY = sigma;
+        if (i == 0 && i != sampledInputSize - 1) {
+            // First point
+            theta = getDirection(sampledInputXs, sampledInputYs, i + 1, i);
+            sigmaX *= ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT_FOR_FIRST;
+            sigmaY *= ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT_FOR_FIRST;
+        } else {
+            if (i == sampledInputSize - 1) {
+                // Last point
+                sigmaX *= ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT_FOR_LAST;
+                sigmaY *= ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT_FOR_LAST;
+            } else {
+                sigmaX *= ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT;
+                sigmaY *= ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT;
+            }
+            theta = getDirection(sampledInputXs, sampledInputYs, i, i - 1);
+        }
+        NormalDistribution2D distribution((*sampledInputXs)[i], sigmaX, (*sampledInputYs)[i],
+                sigmaY, theta);
         // Summing up probability densities of all near keys.
         float sumOfProbabilityDensities = 0.0f;
         for (int j = 0; j < keyCount; ++j) {
-            if ((*sampledNearKeySets)[i].test(j)) {
-                float distance = sqrtf(getPointToKeyByIdLength(
-                        maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount, i, j));
-                if (i == 0 && i != sampledInputSize - 1) {
-                    // For the first point, weighted average of distances from first point and the
-                    // next point to the key is used as a point to key distance.
-                    const float nextDistance = sqrtf(getPointToKeyByIdLength(
-                            maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount,
-                            i + 1, j));
-                    if (nextDistance < distance) {
-                        // The distance of the first point tends to bigger than continuing
-                        // points because the first touch by the user can be sloppy.
-                        // So we promote the first point if the distance of that point is larger
-                        // than the distance of the next point.
-                        distance = (distance
-                                + nextDistance * ProximityInfoParams::NEXT_DISTANCE_WEIGHT)
-                                        / (1.0f + ProximityInfoParams::NEXT_DISTANCE_WEIGHT);
-                    }
-                } else if (i != 0 && i == sampledInputSize - 1) {
-                    // For the first point, weighted average of distances from last point and
-                    // the previous point to the key is used as a point to key distance.
-                    const float previousDistance = sqrtf(getPointToKeyByIdLength(
-                            maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount,
-                            i - 1, j));
-                    if (previousDistance < distance) {
-                        // The distance of the last point tends to bigger than continuing points
-                        // because the last touch by the user can be sloppy. So we promote the
-                        // last point if the distance of that point is larger than the distance of
-                        // the previous point.
-                        distance = (distance
-                                + previousDistance * ProximityInfoParams::PREV_DISTANCE_WEIGHT)
-                                        / (1.0f + ProximityInfoParams::PREV_DISTANCE_WEIGHT);
-                    }
-                }
-                // TODO: Promote the first point when the extended line from the next input is near
-                // from a key. Also, promote the last point as well.
-                sumOfProbabilityDensities += distribution.getProbabilityDensity(distance);
-            }
+            sumOfProbabilityDensities += distribution.getProbabilityDensity(
+                    proximityInfo->getKeyCenterXOfKeyIdG(j,
+                            NOT_A_COORDINATE /* referencePointX */, true /* isGeometric */),
+                    proximityInfo->getKeyCenterYOfKeyIdG(j,
+                            NOT_A_COORDINATE /* referencePointY */, true /* isGeometric */));
         }
 
         // Split the probability of an input point to keys that are close to the input point.
         for (int j = 0; j < keyCount; ++j) {
-            if ((*sampledNearKeySets)[i].test(j)) {
-                float distance = sqrtf(getPointToKeyByIdLength(
-                        maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount, i, j));
-                if (i == 0 && i != sampledInputSize - 1) {
-                    // For the first point, weighted average of distances from the first point and
-                    // the next point to the key is used as a point to key distance.
-                    const float prevDistance = sqrtf(getPointToKeyByIdLength(
-                            maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount,
-                            i + 1, j));
-                    if (prevDistance < distance) {
-                        distance = (distance
-                                + prevDistance * ProximityInfoParams::NEXT_DISTANCE_WEIGHT)
-                                        / (1.0f + ProximityInfoParams::NEXT_DISTANCE_WEIGHT);
-                    }
-                } else if (i != 0 && i == sampledInputSize - 1) {
-                    // For the first point, weighted average of distances from last point and
-                    // the previous point to the key is used as a point to key distance.
-                    const float prevDistance = sqrtf(getPointToKeyByIdLength(
-                            maxPointToKeyLength, sampledNormalizedSquaredLengthCache, keyCount,
-                            i - 1, j));
-                    if (prevDistance < distance) {
-                        distance = (distance
-                                + prevDistance * ProximityInfoParams::PREV_DISTANCE_WEIGHT)
-                                        / (1.0f + ProximityInfoParams::PREV_DISTANCE_WEIGHT);
-                    }
-                }
-                const float probabilityDensity = distribution.getProbabilityDensity(distance);
-                const float probability = inputCharProbability * probabilityDensity
-                        / sumOfProbabilityDensities;
-                (*charProbabilities)[i][j] = probability;
-            }
+            const float probabilityDensity = distribution.getProbabilityDensity(
+                    proximityInfo->getKeyCenterXOfKeyIdG(j,
+                            NOT_A_COORDINATE /* referencePointX */, true /* isGeometric */),
+                    proximityInfo->getKeyCenterYOfKeyIdG(j,
+                            NOT_A_COORDINATE /* referencePointY */, true /* isGeometric */));
+            const float probability = inputCharProbability * probabilityDensity
+                    / sumOfProbabilityDensities;
+            (*charProbabilities)[i][j] = probability;
         }
     }
 
@@ -805,7 +763,7 @@
             sstream << "Speed: "<< (*sampledSpeedRates)[i] << ", ";
             sstream << "Angle: "<< getPointAngle(sampledInputXs, sampledInputYs, i) << ", \n";
 
-            for (hash_map_compat<int, float>::iterator it = (*charProbabilities)[i].begin();
+            for (std::unordered_map<int, float>::iterator it = (*charProbabilities)[i].begin();
                     it != (*charProbabilities)[i].end(); ++it) {
                 if (it->first == NOT_AN_INDEX) {
                     sstream << it->first
@@ -827,7 +785,7 @@
 
     // Decrease key probabilities of points which don't have the highest probability of that key
     // among nearby points. Probabilities of the first point and the last point are not suppressed.
-    for (int i = max(start, 1); i < sampledInputSize; ++i) {
+    for (int i = std::max(start, 1); i < sampledInputSize; ++i) {
         for (int j = i + 1; j < sampledInputSize; ++j) {
             if (!suppressCharProbabilities(
                     mostCommonKeyWidth, sampledInputSize, sampledLengthCache, i, j,
@@ -835,7 +793,7 @@
                 break;
             }
         }
-        for (int j = i - 1; j >= max(start, 0); --j) {
+        for (int j = i - 1; j >= std::max(start, 0); --j) {
             if (!suppressCharProbabilities(
                     mostCommonKeyWidth, sampledInputSize, sampledLengthCache, i, j,
                     charProbabilities)) {
@@ -847,12 +805,11 @@
     // Converting from raw probabilities to log probabilities to calculate spatial distance.
     for (int i = start; i < sampledInputSize; ++i) {
         for (int j = 0; j < keyCount; ++j) {
-            hash_map_compat<int, float>::iterator it = (*charProbabilities)[i].find(j);
+            std::unordered_map<int, float>::iterator it = (*charProbabilities)[i].find(j);
             if (it == (*charProbabilities)[i].end()){
-                (*sampledNearKeySets)[i].reset(j);
+                continue;
             } else if(it->second < ProximityInfoParams::MIN_PROBABILITY) {
                 // Erases from near keys vector because it has very low probability.
-                (*sampledNearKeySets)[i].reset(j);
                 (*charProbabilities)[i].erase(j);
             } else {
                 it->second = -logf(it->second);
@@ -864,9 +821,8 @@
 
 /* static */ void ProximityInfoStateUtils::updateSampledSearchKeySets(
         const ProximityInfo *const proximityInfo, const int sampledInputSize,
-        const int lastSavedInputSize,
-        const std::vector<int> *const sampledLengthCache,
-        const std::vector<NearKeycodesSet> *const sampledNearKeySets,
+        const int lastSavedInputSize, const std::vector<int> *const sampledLengthCache,
+        const std::vector<std::unordered_map<int, float> > *const charProbabilities,
         std::vector<NearKeycodesSet> *sampledSearchKeySets,
         std::vector<std::vector<int> > *sampledSearchKeyVectors) {
     sampledSearchKeySets->resize(sampledInputSize);
@@ -878,12 +834,17 @@
         if (i >= lastSavedInputSize) {
             (*sampledSearchKeySets)[i].reset();
         }
-        for (int j = max(i, lastSavedInputSize); j < sampledInputSize; ++j) {
+        for (int j = std::max(i, lastSavedInputSize); j < sampledInputSize; ++j) {
             // TODO: Investigate if this is required. This may not fail.
             if ((*sampledLengthCache)[j] - (*sampledLengthCache)[i] >= readForwordLength) {
                 break;
             }
-            (*sampledSearchKeySets)[i] |= (*sampledNearKeySets)[j];
+            for(const auto& charProbability : charProbabilities->at(j)) {
+                if (charProbability.first == NOT_AN_INDEX) {
+                    continue;
+                }
+                (*sampledSearchKeySets)[i].set(charProbability.first);
+            }
         }
     }
     const int keyCount = proximityInfo->getKeyCount();
@@ -907,7 +868,7 @@
 /* static */ bool ProximityInfoStateUtils::suppressCharProbabilities(const int mostCommonKeyWidth,
         const int sampledInputSize, const std::vector<int> *const lengthCache,
         const int index0, const int index1,
-        std::vector<hash_map_compat<int, float> > *charProbabilities) {
+        std::vector<std::unordered_map<int, float> > *charProbabilities) {
     ASSERT(0 <= index0 && index0 < sampledInputSize);
     ASSERT(0 <= index1 && index1 < sampledInputSize);
     const float keyWidthFloat = static_cast<float>(mostCommonKeyWidth);
@@ -918,9 +879,9 @@
     const float suppressionRate = ProximityInfoParams::MIN_SUPPRESSION_RATE
             + diff / keyWidthFloat / ProximityInfoParams::SUPPRESSION_LENGTH_WEIGHT
                     * ProximityInfoParams::SUPPRESSION_WEIGHT;
-    for (hash_map_compat<int, float>::iterator it = (*charProbabilities)[index0].begin();
+    for (std::unordered_map<int, float>::iterator it = (*charProbabilities)[index0].begin();
             it != (*charProbabilities)[index0].end(); ++it) {
-        hash_map_compat<int, float>::iterator it2 =  (*charProbabilities)[index1].find(it->first);
+        std::unordered_map<int, float>::iterator it2 = (*charProbabilities)[index1].find(it->first);
         if (it2 != (*charProbabilities)[index1].end() && it->second < it2->second) {
             const float newProbability = it->second * suppressionRate;
             const float suppression = it->second - newProbability;
@@ -929,7 +890,7 @@
             (*charProbabilities)[index0][NOT_AN_INDEX] += suppression;
 
             // Add the probability of the same key nearby index1
-            const float probabilityGain = min(suppression
+            const float probabilityGain = std::min(suppression
                     * ProximityInfoParams::SUPPRESSION_WEIGHT_FOR_PROBABILITY_GAIN,
                     (*charProbabilities)[index1][NOT_AN_INDEX]
                             * ProximityInfoParams::SKIP_PROBABALITY_WEIGHT_FOR_PROBABILITY_GAIN);
@@ -972,7 +933,7 @@
 // returns probability of generating the word.
 /* static */ float ProximityInfoStateUtils::getMostProbableString(
         const ProximityInfo *const proximityInfo, const int sampledInputSize,
-        const std::vector<hash_map_compat<int, float> > *const charProbabilities,
+        const std::vector<std::unordered_map<int, float> > *const charProbabilities,
         int *const codePointBuf) {
     ASSERT(sampledInputSize >= 0);
     memset(codePointBuf, 0, sizeof(codePointBuf[0]) * MAX_WORD_LENGTH);
@@ -982,7 +943,7 @@
     for (int i = 0; i < sampledInputSize && index < MAX_WORD_LENGTH - 1; ++i) {
         float minLogProbability = static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
         int character = NOT_AN_INDEX;
-        for (hash_map_compat<int, float>::const_iterator it = (*charProbabilities)[i].begin();
+        for (std::unordered_map<int, float>::const_iterator it = (*charProbabilities)[i].begin();
                 it != (*charProbabilities)[i].end(); ++it) {
             const float logProbability = (it->first != NOT_AN_INDEX)
                     ? it->second + ProximityInfoParams::DEMOTION_LOG_PROBABILITY : it->second;
@@ -992,7 +953,16 @@
             }
         }
         if (character != NOT_AN_INDEX) {
-            codePointBuf[index] = proximityInfo->getCodePointOf(character);
+            const int codePoint = proximityInfo->getCodePointOf(character);
+            if (codePoint == NOT_A_CODE_POINT) {
+                AKLOGE("Key index(%d) is not found. Cannot construct most probable string",
+                        character);
+                ASSERT(false);
+                // Make the length zero, which means most probable string won't be used.
+                index = 0;
+                break;
+            }
+            codePointBuf[index] = codePoint;
             index++;
         }
         sumLogProbability += minLogProbability;
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state_utils.h b/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
index 6de9700..211a797 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_state_utils.h
@@ -18,10 +18,10 @@
 #define LATINIME_PROXIMITY_INFO_STATE_UTILS_H
 
 #include <bitset>
+#include <unordered_map>
 #include <vector>
 
 #include "defines.h"
-#include "utils/hash_map_compat.h"
 
 namespace latinime {
 class ProximityInfo;
@@ -29,7 +29,7 @@
 
 class ProximityInfoStateUtils {
  public:
-    typedef hash_map_compat<int, float> NearKeysDistanceMap;
+    typedef std::unordered_map<int, float> NearKeysDistanceMap;
     typedef std::bitset<MAX_KEY_COUNT_IN_A_KEYBOARD> NearKeycodesSet;
 
     static int trimLastTwoTouchPoints(std::vector<int> *sampledInputXs,
@@ -56,7 +56,7 @@
             const std::vector<int> *const sampledLengthCache,
             const std::vector<int> *const sampledInputIndice,
             std::vector<float> *sampledSpeedRates, std::vector<float> *sampledDirections);
-    static void refreshBeelineSpeedRates(const int mostCommonKeyWidth,  const float averageSpeed,
+    static void refreshBeelineSpeedRates(const int mostCommonKeyWidth, const float averageSpeed,
             const int inputSize, const int *const xCoordinates, const int *const yCoordinates,
             const int *times, const int sampledInputSize,
             const std::vector<int> *const sampledInputXs,
@@ -71,12 +71,12 @@
             const std::vector<float> *const sampledSpeedRates,
             const std::vector<int> *const sampledLengthCache,
             const std::vector<float> *const sampledNormalizedSquaredLengthCache,
-            std::vector<NearKeycodesSet> *sampledNearKeySets,
-            std::vector<hash_map_compat<int, float> > *charProbabilities);
+            const ProximityInfo *const proximityInfo,
+            std::vector<std::unordered_map<int, float> > *charProbabilities);
     static void updateSampledSearchKeySets(const ProximityInfo *const proximityInfo,
             const int sampledInputSize, const int lastSavedInputSize,
             const std::vector<int> *const sampledLengthCache,
-            const std::vector<NearKeycodesSet> *const sampledNearKeySets,
+            const std::vector<std::unordered_map<int, float> > *const charProbabilities,
             std::vector<NearKeycodesSet> *sampledSearchKeySets,
             std::vector<std::vector<int> > *sampledSearchKeyVectors);
     static float getPointToKeyByIdLength(const float maxPointToKeyLength,
@@ -86,14 +86,9 @@
             const int sampledInputSize, const int lastSavedInputSize, const bool isGeometric,
             const std::vector<int> *const sampledInputXs,
             const std::vector<int> *const sampledInputYs,
-            std::vector<NearKeycodesSet> *sampledNearKeySets,
             std::vector<float> *sampledNormalizedSquaredLengthCache);
     static void initPrimaryInputWord(const int inputSize, const int *const inputProximities,
             int *primaryInputWord);
-    static void initNormalizedSquaredDistances(const ProximityInfo *const proximityInfo,
-            const int inputSize, const int *inputXCoordinates, const int *inputYCoordinates,
-            const int *const inputProximities, const std::vector<int> *const sampledInputXs,
-            const std::vector<int> *const sampledInputYs, int *normalizedSquaredDistances);
     static void dump(const bool isGeometric, const int inputSize,
             const int *const inputXCoordinates, const int *const inputYCoordinates,
             const int sampledInputSize, const std::vector<int> *const sampledInputXs,
@@ -110,7 +105,7 @@
     // TODO: Move to most_probable_string_utils.h
     static float getMostProbableString(const ProximityInfo *const proximityInfo,
             const int sampledInputSize,
-            const std::vector<hash_map_compat<int, float> > *const charProbabilities,
+            const std::vector<std::unordered_map<int, float> > *const charProbabilities,
             int *const codePointBuf);
 
  private:
@@ -152,7 +147,7 @@
             const int index2);
     static bool suppressCharProbabilities(const int mostCommonKeyWidth,
             const int sampledInputSize, const std::vector<int> *const lengthCache, const int index0,
-            const int index1, std::vector<hash_map_compat<int, float> > *charProbabilities);
+            const int index1, std::vector<std::unordered_map<int, float> > *charProbabilities);
     static float calculateSquaredDistanceFromSweetSpotCenter(
             const ProximityInfo *const proximityInfo, const std::vector<int> *const sampledInputXs,
             const std::vector<int> *const sampledInputYs, const int keyIndex,
diff --git a/native/jni/src/suggest/core/layout/proximity_info_utils.h b/native/jni/src/suggest/core/layout/proximity_info_utils.h
index 0e28560..178aada 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_utils.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_utils.h
@@ -18,18 +18,18 @@
 #define LATINIME_PROXIMITY_INFO_UTILS_H
 
 #include <cmath>
+#include <unordered_map>
 
 #include "defines.h"
 #include "suggest/core/layout/additional_proximity_chars.h"
 #include "suggest/core/layout/geometry_utils.h"
 #include "utils/char_utils.h"
-#include "utils/hash_map_compat.h"
 
 namespace latinime {
 class ProximityInfoUtils {
  public:
     static AK_FORCE_INLINE int getKeyIndexOf(const int keyCount, const int c,
-            const hash_map_compat<int, int> *const codeToKeyMap) {
+            const std::unordered_map<int, int> *const codeToKeyMap) {
         if (keyCount == 0) {
             // We do not have the coordinate data
             return NOT_AN_INDEX;
@@ -38,7 +38,7 @@
             return NOT_AN_INDEX;
         }
         const int lowerCode = CharUtils::toLowerCase(c);
-        hash_map_compat<int, int>::const_iterator mapPos = codeToKeyMap->find(lowerCode);
+        std::unordered_map<int, int>::const_iterator mapPos = codeToKeyMap->find(lowerCode);
         if (mapPos != codeToKeyMap->end()) {
             return mapPos->second;
         }
@@ -52,7 +52,7 @@
             const int *const proximityCharsArray, const int cellHeight, const int cellWidth,
             const int gridWidth, const int mostCommonKeyWidth, const int keyCount,
             const char *const localeStr,
-            const hash_map_compat<int, int> *const codeToKeyMap, int *inputProximities) {
+            const std::unordered_map<int, int> *const codeToKeyMap, int *inputProximities) {
         // Initialize
         // - mInputCodes
         // - mNormalizedSquaredDistances
@@ -100,6 +100,10 @@
         const float dotProduct = ray1x * ray2x + ray1y * ray2y;
         const float lineLengthSqr = GeometryUtils::SQUARE_FLOAT(ray2x)
                 + GeometryUtils::SQUARE_FLOAT(ray2y);
+        if (lineLengthSqr <= 0.0f) {
+            // Return point to the point distance.
+            return getSquaredDistanceFloat(x, y, x1, y1);
+        }
         const float projectionLengthSqr = dotProduct / lineLengthSqr;
 
         float projectionX;
@@ -121,29 +125,6 @@
          return type == MATCH_CHAR || type == PROXIMITY_CHAR || type == ADDITIONAL_PROXIMITY_CHAR;
      }
 
-    // Normal distribution N(u, sigma^2).
-    struct NormalDistribution {
-     public:
-        NormalDistribution(const float u, const float sigma)
-                : mU(u), mSigma(sigma),
-                  mPreComputedNonExpPart(1.0f / sqrtf(2.0f * M_PI_F
-                          * GeometryUtils::SQUARE_FLOAT(sigma))),
-                  mPreComputedExponentPart(-1.0f / (2.0f * GeometryUtils::SQUARE_FLOAT(sigma))) {}
-
-        float getProbabilityDensity(const float x) const {
-            const float shiftedX = x - mU;
-            return mPreComputedNonExpPart
-                    * expf(mPreComputedExponentPart * GeometryUtils::SQUARE_FLOAT(shiftedX));
-        }
-
-     private:
-        DISALLOW_IMPLICIT_CONSTRUCTORS(NormalDistribution);
-        const float mU; // mean value
-        const float mSigma; // standard deviation
-        const float mPreComputedNonExpPart; // = 1 / sqrt(2 * PI * sigma^2)
-        const float mPreComputedExponentPart; // = -1 / (2 * sigma^2)
-    }; // struct NormalDistribution
-
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(ProximityInfoUtils);
 
@@ -163,10 +144,16 @@
             const int *const proximityCharsArray, const int cellHeight, const int cellWidth,
             const int gridWidth, const int mostCommonKeyWidth, const int keyCount,
             const int x, const int y, const int primaryKey, const char *const localeStr,
-            const hash_map_compat<int, int> *const codeToKeyMap, int *proximities) {
+            const std::unordered_map<int, int> *const codeToKeyMap, int *proximities) {
         const int mostCommonKeyWidthSquare = mostCommonKeyWidth * mostCommonKeyWidth;
         int insertPos = 0;
         proximities[insertPos++] = primaryKey;
+        if (x == NOT_A_COORDINATE || y == NOT_A_COORDINATE) {
+            for (int i = insertPos; i < MAX_PROXIMITY_CHARS_SIZE; ++i) {
+                proximities[i] = NOT_A_CODE_POINT;
+            }
+            return;
+        }
         const int startIndex = getStartIndexFromCoordinates(x, y, cellHeight, cellWidth, gridWidth);
         if (startIndex >= 0) {
             for (int i = 0; i < MAX_PROXIMITY_CHARS_SIZE; ++i) {
diff --git a/native/jni/src/suggest/core/layout/touch_position_correction_utils.h b/native/jni/src/suggest/core/layout/touch_position_correction_utils.h
index 9130e87..14074c1 100644
--- a/native/jni/src/suggest/core/layout/touch_position_correction_utils.h
+++ b/native/jni/src/suggest/core/layout/touch_position_correction_utils.h
@@ -17,6 +17,8 @@
 #ifndef LATINIME_TOUCH_POSITION_CORRECTION_UTILS_H
 #define LATINIME_TOUCH_POSITION_CORRECTION_UTILS_H
 
+#include <algorithm>
+
 #include "defines.h"
 #include "suggest/core/layout/proximity_info_params.h"
 
@@ -34,7 +36,7 @@
         static const float R2 = 1.0f;
         const float x = normalizedSquaredDistance;
         if (!isTouchPositionCorrectionEnabled) {
-            return min(C, x);
+            return std::min(C, x);
         }
 
         // factor is a piecewise linear function like:
diff --git a/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h b/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h
index 5492c60..a612276 100644
--- a/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h
+++ b/native/jni/src/suggest/core/policy/dictionary_header_structure_policy.h
@@ -17,6 +17,9 @@
 #ifndef LATINIME_DICTIONARY_HEADER_STRUCTURE_POLICY_H
 #define LATINIME_DICTIONARY_HEADER_STRUCTURE_POLICY_H
 
+#include <map>
+#include <vector>
+
 #include "defines.h"
 
 namespace latinime {
@@ -27,21 +30,29 @@
  */
 class DictionaryHeaderStructurePolicy {
  public:
+    typedef std::map<std::vector<int>, std::vector<int> > AttributeMap;
+
     virtual ~DictionaryHeaderStructurePolicy() {}
 
-    virtual bool supportsDynamicUpdate() const = 0;
+    virtual int getFormatVersionNumber() const = 0;
+
+    virtual int getSize() const = 0;
+
+    virtual const AttributeMap *getAttributeMap() const = 0;
 
     virtual bool requiresGermanUmlautProcessing() const = 0;
 
-    virtual bool requiresFrenchLigatureProcessing() const = 0;
-
     virtual float getMultiWordCostMultiplier() const = 0;
 
-    virtual int getLastDecayedTime() const = 0;
-
     virtual void readHeaderValueOrQuestionMark(const char *const key, int *outValue,
             int outValueSize) const = 0;
 
+    virtual bool shouldBoostExactMatches() const = 0;
+
+    virtual const std::vector<int> *getLocale() const = 0;
+
+    virtual bool supportsBeginningOfSentence() const = 0;
+
  protected:
     DictionaryHeaderStructurePolicy() {}
 
diff --git a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h
index 41f8204..a48d644 100644
--- a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h
+++ b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h
@@ -17,7 +17,11 @@
 #ifndef LATINIME_DICTIONARY_STRUCTURE_POLICY_H
 #define LATINIME_DICTIONARY_STRUCTURE_POLICY_H
 
+#include <memory>
+
 #include "defines.h"
+#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
+#include "suggest/core/dictionary/property/word_property.h"
 
 namespace latinime {
 
@@ -26,25 +30,29 @@
 class DictionaryBigramsStructurePolicy;
 class DictionaryHeaderStructurePolicy;
 class DictionaryShortcutsStructurePolicy;
+class PrevWordsInfo;
+class UnigramProperty;
 
 /*
- * This class abstracts structure of dictionaries.
+ * This class abstracts the structure of dictionaries.
  * Implement this policy to support additional dictionaries.
  */
 class DictionaryStructureWithBufferPolicy {
  public:
+    typedef std::unique_ptr<DictionaryStructureWithBufferPolicy> StructurePolicyPtr;
+
     virtual ~DictionaryStructureWithBufferPolicy() {}
 
     virtual int getRootPosition() const = 0;
 
-    virtual void createAndGetAllChildNodes(const DicNode *const dicNode,
+    virtual void createAndGetAllChildDicNodes(const DicNode *const dicNode,
             DicNodeVector *const childDicNodes) const = 0;
 
     virtual int getCodePointsAndProbabilityAndReturnCodePointCount(
             const int nodePos, const int maxCodePointCount, int *const outCodePoints,
             int *const outUnigramProbability) const = 0;
 
-    virtual int getTerminalNodePositionOfWord(const int *const inWord,
+    virtual int getTerminalPtNodePositionOfWord(const int *const inWord,
             const int length, const bool forceLowerCaseSearch) const = 0;
 
     virtual int getProbability(const int unigramProbability,
@@ -54,37 +62,52 @@
 
     virtual int getShortcutPositionOfPtNode(const int nodePos) const = 0;
 
-    virtual int getBigramsPositionOfPtNode(const int nodePos) const = 0;
+    virtual BinaryDictionaryBigramsIterator getBigramsIteratorOfPtNode(const int nodePos) const = 0;
 
     virtual const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const = 0;
 
-    virtual const DictionaryBigramsStructurePolicy *getBigramsStructurePolicy() const = 0;
-
     virtual const DictionaryShortcutsStructurePolicy *getShortcutsStructurePolicy() const = 0;
 
     // Returns whether the update was success or not.
-    virtual bool addUnigramWord(const int *const word, const int length,
-            const int probability) = 0;
+    virtual bool addUnigramEntry(const int *const word, const int length,
+            const UnigramProperty *const unigramProperty) = 0;
 
     // Returns whether the update was success or not.
-    virtual bool addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability) = 0;
+    virtual bool removeUnigramEntry(const int *const word, const int length) = 0;
 
     // Returns whether the update was success or not.
-    virtual bool removeBigramWords(const int *const word0, const int length0,
-            const int *const word1, const int length1) = 0;
+    virtual bool addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+            const BigramProperty *const bigramProperty) = 0;
 
-    virtual void flush(const char *const filePath) = 0;
+    // Returns whether the update was success or not.
+    virtual bool removeNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+            const int *const word, const int length) = 0;
 
-    virtual void flushWithGC(const char *const filePath) = 0;
+    // Returns whether the flush was success or not.
+    virtual bool flush(const char *const filePath) = 0;
+
+    // Returns whether the GC and flush were success or not.
+    virtual bool flushWithGC(const char *const filePath) = 0;
 
     virtual bool needsToRunGC(const bool mindsBlockByGC) const = 0;
 
     // Currently, this method is used only for testing. You may want to consider creating new
     // dedicated method instead of this if you want to use this in the production.
-    virtual void getProperty(const char *const query, char *const outResult,
+    virtual void getProperty(const char *const query, const int queryLength, char *const outResult,
             const int maxResultLength) = 0;
 
+    // Used for testing.
+    virtual const WordProperty getWordProperty(const int *const codePonts,
+            const int codePointCount) const = 0;
+
+    // Method to iterate all words in the dictionary.
+    // The returned token has to be used to get the next word. If token is 0, this method newly
+    // starts iterating the dictionary.
+    virtual int getNextWordAndNextToken(const int token, int *const outCodePoints,
+            int *const outCodePointCount) = 0;
+
+    virtual bool isCorrupted() const = 0;
+
  protected:
     DictionaryStructureWithBufferPolicy() {}
 
diff --git a/native/jni/src/suggest/core/policy/scoring.h b/native/jni/src/suggest/core/policy/scoring.h
index 102e856..292194bf 100644
--- a/native/jni/src/suggest/core/policy/scoring.h
+++ b/native/jni/src/suggest/core/policy/scoring.h
@@ -23,26 +23,24 @@
 
 class DicNode;
 class DicTraverseSession;
+class SuggestionResults;
 
 // This class basically tweaks suggestions and distances apart from CompoundDistance
 class Scoring {
  public:
     virtual int calculateFinalScore(const float compoundDistance, const int inputSize,
-            const bool forceCommit) const = 0;
-    virtual bool getMostProbableString(const DicTraverseSession *const traverseSession,
-            const int terminalSize, const float languageWeight, int *const outputCodePoints,
-            int *const type, int *const freq) const = 0;
-    virtual void safetyNetForMostProbableString(const int terminalSize,
-            const int maxScore, int *const outputCodePoints, int *const frequencies) const = 0;
-    // TODO: Make more generic
-    virtual void searchWordWithDoubleLetter(DicNode *terminals, const int terminalSize,
-            int *doubleLetterTerminalIndex, DoubleLetterLevel *doubleLetterLevel) const = 0;
+            const ErrorTypeUtils::ErrorType containedErrorTypes, const bool forceCommit,
+            const bool boostExactMatches) const = 0;
+    virtual void getMostProbableString(const DicTraverseSession *const traverseSession,
+            const float languageWeight, SuggestionResults *const outSuggestionResults) const = 0;
     virtual float getAdjustedLanguageWeight(DicTraverseSession *const traverseSession,
             DicNode *const terminals, const int size) const = 0;
-    virtual float getDoubleLetterDemotionDistanceCost(const int terminalIndex,
-            const int doubleLetterTerminalIndex,
-            const DoubleLetterLevel doubleLetterLevel) const = 0;
+    virtual float getDoubleLetterDemotionDistanceCost(
+            const DicNode *const terminalDicNode) const = 0;
     virtual bool doesAutoCorrectValidWord() const = 0;
+    virtual bool autoCorrectsToMultiWordSuggestionIfTop() const = 0;
+    virtual bool sameAsTyped(const DicTraverseSession *const traverseSession,
+            const DicNode *const dicNode) const = 0;
 
  protected:
     Scoring() {}
diff --git a/native/jni/src/suggest/core/policy/traversal.h b/native/jni/src/suggest/core/policy/traversal.h
index e935533..8ddaa05 100644
--- a/native/jni/src/suggest/core/policy/traversal.h
+++ b/native/jni/src/suggest/core/policy/traversal.h
@@ -41,13 +41,11 @@
             const DicNode *const dicNode) const = 0;
     virtual ProximityType getProximityType(const DicTraverseSession *const traverseSession,
             const DicNode *const dicNode, const DicNode *const childDicNode) const = 0;
-    virtual bool sameAsTyped(const DicTraverseSession *const traverseSession,
-            const DicNode *const dicNode) const = 0;
     virtual bool needsToTraverseAllUserInput() const = 0;
     virtual float getMaxSpatialDistance() const = 0;
-    virtual bool autoCorrectsToMultiWordSuggestionIfTop() const = 0;
     virtual int getDefaultExpandDicNodeSize() const = 0;
     virtual int getMaxCacheSize(const int inputSize) const = 0;
+    virtual int getTerminalCacheSize() const = 0;
     virtual bool isPossibleOmissionChildNode(const DicTraverseSession *const traverseSession,
             const DicNode *const parentDicNode, const DicNode *const dicNode) const = 0;
     virtual bool isGoodToTraverseNextWord(const DicNode *const dicNode) const = 0;
diff --git a/native/jni/src/suggest/core/policy/weighting.cpp b/native/jni/src/suggest/core/policy/weighting.cpp
index 0c40168..c202b81 100644
--- a/native/jni/src/suggest/core/policy/weighting.cpp
+++ b/native/jni/src/suggest/core/policy/weighting.cpp
@@ -20,6 +20,7 @@
 #include "suggest/core/dicnode/dic_node.h"
 #include "suggest/core/dicnode/dic_node_profiler.h"
 #include "suggest/core/dicnode/dic_node_utils.h"
+#include "suggest/core/dictionary/error_type_utils.h"
 #include "suggest/core/session/dic_traverse_session.h"
 
 namespace latinime {
@@ -82,8 +83,8 @@
             traverseSession, parentDicNode, dicNode, &inputStateG);
     const float languageCost = Weighting::getLanguageCost(weighting, correctionType,
             traverseSession, parentDicNode, dicNode, multiBigramMap);
-    const ErrorType errorType = weighting->getErrorType(correctionType, traverseSession,
-            parentDicNode, dicNode);
+    const ErrorTypeUtils::ErrorType errorType = weighting->getErrorType(correctionType,
+            traverseSession, parentDicNode, dicNode);
     profile(correctionType, dicNode);
     if (inputStateG.mNeedsToUpdateInputStateG) {
         dicNode->updateInputIndexG(&inputStateG);
diff --git a/native/jni/src/suggest/core/policy/weighting.h b/native/jni/src/suggest/core/policy/weighting.h
index 2d49e98..bd6b3cf 100644
--- a/native/jni/src/suggest/core/policy/weighting.h
+++ b/native/jni/src/suggest/core/policy/weighting.h
@@ -18,6 +18,7 @@
 #define LATINIME_WEIGHTING_H
 
 #include "defines.h"
+#include "suggest/core/dictionary/error_type_utils.h"
 
 namespace latinime {
 
@@ -84,7 +85,7 @@
     virtual float getSpaceSubstitutionCost(const DicTraverseSession *const traverseSession,
             const DicNode *const dicNode) const = 0;
 
-    virtual ErrorType getErrorType(const CorrectionType correctionType,
+    virtual ErrorTypeUtils::ErrorType getErrorType(const CorrectionType correctionType,
             const DicTraverseSession *const traverseSession,
             const DicNode *const parentDicNode, const DicNode *const dicNode) const = 0;
 
diff --git a/native/jni/src/suggest/core/result/suggested_word.h b/native/jni/src/suggest/core/result/suggested_word.h
new file mode 100644
index 0000000..258a40e
--- /dev/null
+++ b/native/jni/src/suggest/core/result/suggested_word.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SUGGESTED_WORD_H
+#define LATINIME_SUGGESTED_WORD_H
+
+#include <vector>
+
+#include "defines.h"
+#include "suggest/core/dictionary/dictionary.h"
+
+namespace latinime {
+
+class SuggestedWord {
+ public:
+    class Comparator {
+     public:
+        bool operator()(const SuggestedWord &left, const SuggestedWord &right) {
+            if (left.getScore() != right.getScore()) {
+                return left.getScore() > right.getScore();
+            }
+            return left.getCodePointCount() < right.getCodePointCount();
+        }
+
+     private:
+        DISALLOW_ASSIGNMENT_OPERATOR(Comparator);
+    };
+
+    SuggestedWord(const int *const codePoints, const int codePointCount,
+            const int score, const int type, const int indexToPartialCommit,
+            const int autoCommitFirstWordConfidence)
+            : mCodePoints(codePoints, codePoints + codePointCount), mScore(score),
+              mType(type), mIndexToPartialCommit(indexToPartialCommit),
+              mAutoCommitFirstWordConfidence(autoCommitFirstWordConfidence) {}
+
+    const int *getCodePoint() const {
+        return &mCodePoints.at(0);
+    }
+
+    int getCodePointCount() const {
+        return mCodePoints.size();
+    }
+
+    int getScore() const {
+        return mScore;
+    }
+
+    int getType() const {
+        return mType;
+    }
+
+    int getIndexToPartialCommit() const {
+        return mIndexToPartialCommit;
+    }
+
+    int getAutoCommitFirstWordConfidence() const {
+        return mAutoCommitFirstWordConfidence;
+    }
+
+ private:
+    DISALLOW_DEFAULT_CONSTRUCTOR(SuggestedWord);
+
+    std::vector<int> mCodePoints;
+    int mScore;
+    int mType;
+    int mIndexToPartialCommit;
+    int mAutoCommitFirstWordConfidence;
+};
+} // namespace latinime
+#endif /* LATINIME_SUGGESTED_WORD_H */
diff --git a/native/jni/src/suggest/core/result/suggestion_results.cpp b/native/jni/src/suggest/core/result/suggestion_results.cpp
new file mode 100644
index 0000000..4c10bd0
--- /dev/null
+++ b/native/jni/src/suggest/core/result/suggestion_results.cpp
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/result/suggestion_results.h"
+
+#include "utils/jni_data_utils.h"
+
+namespace latinime {
+
+void SuggestionResults::outputSuggestions(JNIEnv *env, jintArray outSuggestionCount,
+        jintArray outputCodePointsArray, jintArray outScoresArray, jintArray outSpaceIndicesArray,
+        jintArray outTypesArray, jintArray outAutoCommitFirstWordConfidenceArray,
+        jfloatArray outLanguageWeight) {
+    int outputIndex = 0;
+    while (!mSuggestedWords.empty()) {
+        const SuggestedWord &suggestedWord = mSuggestedWords.top();
+        suggestedWord.getCodePointCount();
+        const int start = outputIndex * MAX_WORD_LENGTH;
+        JniDataUtils::outputCodePoints(env, outputCodePointsArray, start,
+                MAX_WORD_LENGTH /* maxLength */, suggestedWord.getCodePoint(),
+                suggestedWord.getCodePointCount(), true /* needsNullTermination */);
+        JniDataUtils::putIntToArray(env, outScoresArray, outputIndex, suggestedWord.getScore());
+        JniDataUtils::putIntToArray(env, outSpaceIndicesArray, outputIndex,
+                suggestedWord.getIndexToPartialCommit());
+        JniDataUtils::putIntToArray(env, outTypesArray, outputIndex, suggestedWord.getType());
+        if (mSuggestedWords.size() == 1) {
+            JniDataUtils::putIntToArray(env, outAutoCommitFirstWordConfidenceArray, 0 /* index */,
+                    suggestedWord.getAutoCommitFirstWordConfidence());
+        }
+        ++outputIndex;
+        mSuggestedWords.pop();
+    }
+    JniDataUtils::putIntToArray(env, outSuggestionCount, 0 /* index */, outputIndex);
+    JniDataUtils::putFloatToArray(env, outLanguageWeight, 0 /* index */, mLanguageWeight);
+}
+
+void SuggestionResults::addPrediction(const int *const codePoints, const int codePointCount,
+        const int probability) {
+    if (probability == NOT_A_PROBABILITY) {
+        // Invalid word.
+        return;
+    }
+    addSuggestion(codePoints, codePointCount, probability, Dictionary::KIND_PREDICTION,
+            NOT_AN_INDEX, NOT_A_FIRST_WORD_CONFIDENCE);
+}
+
+void SuggestionResults::addSuggestion(const int *const codePoints, const int codePointCount,
+        const int score, const int type, const int indexToPartialCommit,
+        const int autocimmitFirstWordConfindence) {
+    if (codePointCount <= 0 || codePointCount > MAX_WORD_LENGTH) {
+        // Invalid word.
+        AKLOGE("Invalid word is added to the suggestion results. codePointCount: %d",
+                codePointCount);
+        return;
+    }
+    if (getSuggestionCount() >= mMaxSuggestionCount) {
+        const SuggestedWord &mWorstSuggestion = mSuggestedWords.top();
+        if (score > mWorstSuggestion.getScore() || (score == mWorstSuggestion.getScore()
+                && codePointCount < mWorstSuggestion.getCodePointCount())) {
+            mSuggestedWords.pop();
+        } else {
+            return;
+        }
+    }
+    mSuggestedWords.push(SuggestedWord(codePoints, codePointCount, score, type,
+            indexToPartialCommit, autocimmitFirstWordConfindence));
+}
+
+void SuggestionResults::getSortedScores(int *const outScores) const {
+    auto copyOfSuggestedWords = mSuggestedWords;
+    while (!copyOfSuggestedWords.empty()) {
+        const SuggestedWord &suggestedWord = copyOfSuggestedWords.top();
+        outScores[copyOfSuggestedWords.size() - 1] = suggestedWord.getScore();
+        copyOfSuggestedWords.pop();
+    }
+}
+
+void SuggestionResults::dumpSuggestions() const {
+    AKLOGE("language weight: %f", mLanguageWeight);
+    std::vector<SuggestedWord> suggestedWords;
+    auto copyOfSuggestedWords = mSuggestedWords;
+    while (!copyOfSuggestedWords.empty()) {
+        suggestedWords.push_back(copyOfSuggestedWords.top());
+        copyOfSuggestedWords.pop();
+    }
+    int index = 0;
+    for (auto it = suggestedWords.rbegin(); it != suggestedWords.rend(); ++it) {
+        DUMP_SUGGESTION(it->getCodePoint(), it->getCodePointCount(), index, it->getScore());
+        index++;
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/core/result/suggestion_results.h b/native/jni/src/suggest/core/result/suggestion_results.h
new file mode 100644
index 0000000..8e845e2
--- /dev/null
+++ b/native/jni/src/suggest/core/result/suggestion_results.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SUGGESTION_RESULTS_H
+#define LATINIME_SUGGESTION_RESULTS_H
+
+#include <queue>
+#include <vector>
+
+#include "defines.h"
+#include "jni.h"
+#include "suggest/core/result/suggested_word.h"
+
+namespace latinime {
+
+class SuggestionResults {
+ public:
+    explicit SuggestionResults(const int maxSuggestionCount)
+            : mMaxSuggestionCount(maxSuggestionCount), mLanguageWeight(NOT_A_LANGUAGE_WEIGHT),
+              mSuggestedWords() {}
+
+    // Returns suggestion count.
+    void outputSuggestions(JNIEnv *env, jintArray outSuggestionCount, jintArray outCodePointsArray,
+            jintArray outScoresArray, jintArray outSpaceIndicesArray, jintArray outTypesArray,
+            jintArray outAutoCommitFirstWordConfidenceArray, jfloatArray outLanguageWeight);
+    void addPrediction(const int *const codePoints, const int codePointCount, const int score);
+    void addSuggestion(const int *const codePoints, const int codePointCount,
+            const int score, const int type, const int indexToPartialCommit,
+            const int autocimmitFirstWordConfindence);
+    void getSortedScores(int *const outScores) const;
+    void dumpSuggestions() const;
+
+    void setLanguageWeight(const float languageWeight) {
+        mLanguageWeight = languageWeight;
+    }
+
+    int getSuggestionCount() const {
+        return mSuggestedWords.size();
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(SuggestionResults);
+
+    const int mMaxSuggestionCount;
+    float mLanguageWeight;
+    std::priority_queue<
+            SuggestedWord, std::vector<SuggestedWord>, SuggestedWord::Comparator> mSuggestedWords;
+};
+} // namespace latinime
+#endif // LATINIME_SUGGESTION_RESULTS_H
diff --git a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp
new file mode 100644
index 0000000..7b0e7e1
--- /dev/null
+++ b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/result/suggestions_output_utils.h"
+
+#include <algorithm>
+#include <vector>
+
+#include "suggest/core/dicnode/dic_node.h"
+#include "suggest/core/dicnode/dic_node_utils.h"
+#include "suggest/core/dictionary/binary_dictionary_shortcut_iterator.h"
+#include "suggest/core/dictionary/error_type_utils.h"
+#include "suggest/core/policy/scoring.h"
+#include "suggest/core/result/suggestion_results.h"
+#include "suggest/core/session/dic_traverse_session.h"
+#include "suggest/core/suggest_options.h"
+
+namespace latinime {
+
+const int SuggestionsOutputUtils::MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT = 16;
+
+/* static */ void SuggestionsOutputUtils::outputSuggestions(
+        const Scoring *const scoringPolicy, DicTraverseSession *traverseSession,
+        const float languageWeight, SuggestionResults *const outSuggestionResults) {
+#if DEBUG_EVALUATE_MOST_PROBABLE_STRING
+    const int terminalSize = 0;
+#else
+    const int terminalSize = traverseSession->getDicTraverseCache()->terminalSize();
+#endif
+    std::vector<DicNode> terminals(terminalSize);
+    for (int index = terminalSize - 1; index >= 0; --index) {
+        traverseSession->getDicTraverseCache()->popTerminal(&terminals[index]);
+    }
+    // Compute a language weight when an invalid language weight is passed.
+    // NOT_A_LANGUAGE_WEIGHT (-1) is assumed as an invalid language weight.
+    const float languageWeightToOutputSuggestions = (languageWeight < 0.0f) ?
+            scoringPolicy->getAdjustedLanguageWeight(
+                    traverseSession, terminals.data(), terminalSize) : languageWeight;
+    outSuggestionResults->setLanguageWeight(languageWeightToOutputSuggestions);
+    // Force autocorrection for obvious long multi-word suggestions when the top suggestion is
+    // a long multiple words suggestion.
+    // TODO: Implement a smarter auto-commit method for handling multi-word suggestions.
+    const bool forceCommitMultiWords = scoringPolicy->autoCorrectsToMultiWordSuggestionIfTop()
+            && (traverseSession->getInputSize() >= MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT
+                    && !terminals.empty() && terminals.front().hasMultipleWords());
+    // TODO: have partial commit work even with multiple pointers.
+    const bool outputSecondWordFirstLetterInputIndex =
+            traverseSession->isOnlyOnePointerUsed(0 /* pointerId */);
+    const bool boostExactMatches = traverseSession->getDictionaryStructurePolicy()->
+            getHeaderStructurePolicy()->shouldBoostExactMatches();
+
+    // Output suggestion results here
+    for (auto &terminalDicNode : terminals) {
+        outputSuggestionsOfDicNode(scoringPolicy, traverseSession, &terminalDicNode,
+                languageWeightToOutputSuggestions, boostExactMatches, forceCommitMultiWords,
+                outputSecondWordFirstLetterInputIndex, outSuggestionResults);
+    }
+    scoringPolicy->getMostProbableString(traverseSession, languageWeightToOutputSuggestions,
+            outSuggestionResults);
+}
+
+/* static */ void SuggestionsOutputUtils::outputSuggestionsOfDicNode(
+        const Scoring *const scoringPolicy, DicTraverseSession *traverseSession,
+        const DicNode *const terminalDicNode, const float languageWeight,
+        const bool boostExactMatches, const bool forceCommitMultiWords,
+        const bool outputSecondWordFirstLetterInputIndex,
+        SuggestionResults *const outSuggestionResults) {
+    if (DEBUG_GEO_FULL) {
+        terminalDicNode->dump("OUT:");
+    }
+    const float doubleLetterCost =
+            scoringPolicy->getDoubleLetterDemotionDistanceCost(terminalDicNode);
+    const float compoundDistance = terminalDicNode->getCompoundDistance(languageWeight)
+            + doubleLetterCost;
+    const bool isPossiblyOffensiveWord =
+            traverseSession->getDictionaryStructurePolicy()->getProbability(
+                    terminalDicNode->getProbability(), NOT_A_PROBABILITY) <= 0;
+    const bool isExactMatch =
+            ErrorTypeUtils::isExactMatch(terminalDicNode->getContainedErrorTypes());
+    const bool isExactMatchWithIntentionalOmission =
+            ErrorTypeUtils::isExactMatchWithIntentionalOmission(
+                    terminalDicNode->getContainedErrorTypes());
+    const bool isFirstCharUppercase = terminalDicNode->isFirstCharUppercase();
+    // Heuristic: We exclude probability=0 first-char-uppercase words from exact match.
+    // (e.g. "AMD" and "and")
+    const bool isSafeExactMatch = isExactMatch
+            && !(isPossiblyOffensiveWord && isFirstCharUppercase);
+    const int outputTypeFlags =
+            (isPossiblyOffensiveWord ? Dictionary::KIND_FLAG_POSSIBLY_OFFENSIVE : 0)
+            | ((isSafeExactMatch && boostExactMatches) ? Dictionary::KIND_FLAG_EXACT_MATCH : 0)
+            | (isExactMatchWithIntentionalOmission ?
+                    Dictionary::KIND_FLAG_EXACT_MATCH_WITH_INTENTIONAL_OMISSION : 0);
+
+    // Entries that are blacklisted or do not represent a word should not be output.
+    const bool isValidWord = !terminalDicNode->isBlacklistedOrNotAWord();
+    // When we have to block offensive words, non-exact matched offensive words should not be
+    // output.
+    const bool blockOffensiveWords = traverseSession->getSuggestOptions()->blockOffensiveWords();
+    const bool isBlockedOffensiveWord = blockOffensiveWords && isPossiblyOffensiveWord
+            && !isSafeExactMatch;
+
+    // Increase output score of top typing suggestion to ensure autocorrection.
+    // TODO: Better integration with java side autocorrection logic.
+    const int finalScore = scoringPolicy->calculateFinalScore(
+            compoundDistance, traverseSession->getInputSize(),
+            terminalDicNode->getContainedErrorTypes(),
+            (forceCommitMultiWords && terminalDicNode->hasMultipleWords())
+                     || (isValidWord && scoringPolicy->doesAutoCorrectValidWord()),
+            boostExactMatches);
+
+    // Don't output invalid or blocked offensive words. However, we still need to submit their
+    // shortcuts if any.
+    if (isValidWord && !isBlockedOffensiveWord) {
+        int codePoints[MAX_WORD_LENGTH];
+        terminalDicNode->outputResult(codePoints);
+        const int indexToPartialCommit = outputSecondWordFirstLetterInputIndex ?
+                terminalDicNode->getSecondWordFirstInputIndex(
+                        traverseSession->getProximityInfoState(0)) :
+                NOT_AN_INDEX;
+        outSuggestionResults->addSuggestion(codePoints,
+                terminalDicNode->getTotalNodeCodePointCount(),
+                finalScore, Dictionary::KIND_CORRECTION | outputTypeFlags,
+                indexToPartialCommit, computeFirstWordConfidence(terminalDicNode));
+    }
+
+    // Output shortcuts.
+    // Shortcut is not supported for multiple words suggestions.
+    // TODO: Check shortcuts during traversal for multiple words suggestions.
+    if (!terminalDicNode->hasMultipleWords()) {
+        BinaryDictionaryShortcutIterator shortcutIt(
+                traverseSession->getDictionaryStructurePolicy()->getShortcutsStructurePolicy(),
+                traverseSession->getDictionaryStructurePolicy()
+                        ->getShortcutPositionOfPtNode(terminalDicNode->getPtNodePos()));
+        const bool sameAsTyped = scoringPolicy->sameAsTyped(traverseSession, terminalDicNode);
+        const int shortcutBaseScore = scoringPolicy->doesAutoCorrectValidWord() ?
+                 scoringPolicy->calculateFinalScore(compoundDistance,
+                         traverseSession->getInputSize(),
+                         terminalDicNode->getContainedErrorTypes(),
+                         true /* forceCommit */, boostExactMatches) : finalScore;
+        outputShortcuts(&shortcutIt, shortcutBaseScore, sameAsTyped, outSuggestionResults);
+    }
+}
+
+/* static */ int SuggestionsOutputUtils::computeFirstWordConfidence(
+        const DicNode *const terminalDicNode) {
+    // Get the number of spaces in the first suggestion
+    const int spaceCount = terminalDicNode->getTotalNodeSpaceCount();
+    // Get the number of characters in the first suggestion
+    const int length = terminalDicNode->getTotalNodeCodePointCount();
+    // Get the distance for the first word of the suggestion
+    const float distance = terminalDicNode->getNormalizedCompoundDistanceAfterFirstWord();
+
+    // Arbitrarily, we give a score whose useful values range from 0 to 1,000,000.
+    // 1,000,000 will be the cutoff to auto-commit. It's fine if the number is under 0 or
+    // above 1,000,000 : under 0 just means it's very bad to commit, and above 1,000,000 means
+    // we are very confident.
+    // Expected space count is 1 ~ 5
+    static const int MIN_EXPECTED_SPACE_COUNT = 1;
+    static const int MAX_EXPECTED_SPACE_COUNT = 5;
+    // Expected length is about 4 ~ 30
+    static const int MIN_EXPECTED_LENGTH = 4;
+    static const int MAX_EXPECTED_LENGTH = 30;
+    // Expected distance is about 0.2 ~ 2.0, but consider 0.0 ~ 2.0
+    static const float MIN_EXPECTED_DISTANCE = 0.0;
+    static const float MAX_EXPECTED_DISTANCE = 2.0;
+    // This is not strict: it's where most stuff will be falling, but it's still fine if it's
+    // outside these values. We want to output a value that reflects all of these. Each factor
+    // contributes a bit.
+
+    // We need at least a space.
+    if (spaceCount < 1) return NOT_A_FIRST_WORD_CONFIDENCE;
+
+    // The smaller the edit distance, the higher the contribution. MIN_EXPECTED_DISTANCE means 0
+    // contribution, while MAX_EXPECTED_DISTANCE means full contribution according to the
+    // weight of the distance. Clamp to avoid overflows.
+    const float clampedDistance = distance < MIN_EXPECTED_DISTANCE ? MIN_EXPECTED_DISTANCE
+            : distance > MAX_EXPECTED_DISTANCE ? MAX_EXPECTED_DISTANCE : distance;
+    const int distanceContribution = DISTANCE_WEIGHT_FOR_AUTO_COMMIT
+            * (MAX_EXPECTED_DISTANCE - clampedDistance)
+            / (MAX_EXPECTED_DISTANCE - MIN_EXPECTED_DISTANCE);
+    // The larger the suggestion length, the larger the contribution. MIN_EXPECTED_LENGTH is no
+    // contribution, MAX_EXPECTED_LENGTH is full contribution according to the weight of the
+    // length. Length is guaranteed to be between 1 and 48, so we don't need to clamp.
+    const int lengthContribution = LENGTH_WEIGHT_FOR_AUTO_COMMIT
+            * (length - MIN_EXPECTED_LENGTH) / (MAX_EXPECTED_LENGTH - MIN_EXPECTED_LENGTH);
+    // The more spaces, the larger the contribution. MIN_EXPECTED_SPACE_COUNT space is no
+    // contribution, MAX_EXPECTED_SPACE_COUNT spaces is full contribution according to the
+    // weight of the space count.
+    const int spaceContribution = SPACE_COUNT_WEIGHT_FOR_AUTO_COMMIT
+            * (spaceCount - MIN_EXPECTED_SPACE_COUNT)
+            / (MAX_EXPECTED_SPACE_COUNT - MIN_EXPECTED_SPACE_COUNT);
+
+    return distanceContribution + lengthContribution + spaceContribution;
+}
+
+/* static */ void SuggestionsOutputUtils::outputShortcuts(
+        BinaryDictionaryShortcutIterator *const shortcutIt, const int finalScore,
+        const bool sameAsTyped, SuggestionResults *const outSuggestionResults) {
+    int shortcutTarget[MAX_WORD_LENGTH];
+    while (shortcutIt->hasNextShortcutTarget()) {
+        bool isWhilelist;
+        int shortcutTargetStringLength;
+        shortcutIt->nextShortcutTarget(MAX_WORD_LENGTH, shortcutTarget,
+                &shortcutTargetStringLength, &isWhilelist);
+        int shortcutScore;
+        int kind;
+        if (isWhilelist && sameAsTyped) {
+            shortcutScore = S_INT_MAX;
+            kind = Dictionary::KIND_WHITELIST;
+        } else {
+            // shortcut entry's score == its base entry's score - 1
+            shortcutScore = finalScore;
+            // Protection against int underflow
+            shortcutScore = std::max(S_INT_MIN + 1, shortcutScore) - 1;
+            kind = Dictionary::KIND_SHORTCUT;
+        }
+        outSuggestionResults->addSuggestion(shortcutTarget, shortcutTargetStringLength,
+                std::max(S_INT_MIN + 1, shortcutScore) - 1, kind, NOT_AN_INDEX,
+                NOT_A_FIRST_WORD_CONFIDENCE);
+    }
+}
+} // namespace latinime
diff --git a/native/jni/src/suggest/core/result/suggestions_output_utils.h b/native/jni/src/suggest/core/result/suggestions_output_utils.h
new file mode 100644
index 0000000..b099b47
--- /dev/null
+++ b/native/jni/src/suggest/core/result/suggestions_output_utils.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SUGGESTIONS_OUTPUT_UTILS
+#define LATINIME_SUGGESTIONS_OUTPUT_UTILS
+
+#include "defines.h"
+
+namespace latinime {
+
+class BinaryDictionaryShortcutIterator;
+class DicNode;
+class DicTraverseSession;
+class Scoring;
+class SuggestionResults;
+
+class SuggestionsOutputUtils {
+ public:
+    /**
+     * Outputs the final list of suggestions (i.e., terminal nodes).
+     */
+    static void outputSuggestions(const Scoring *const scoringPolicy,
+            DicTraverseSession *traverseSession, const float languageWeight,
+            SuggestionResults *const outSuggestionResults);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(SuggestionsOutputUtils);
+
+    // Inputs longer than this will autocorrect if the suggestion is multi-word
+    static const int MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT;
+
+    static void outputSuggestionsOfDicNode(const Scoring *const scoringPolicy,
+            DicTraverseSession *traverseSession, const DicNode *const terminalDicNode,
+            const float languageWeight, const bool boostExactMatches,
+            const bool forceCommitMultiWords, const bool outputSecondWordFirstLetterInputIndex,
+            SuggestionResults *const outSuggestionResults);
+    static void outputShortcuts(BinaryDictionaryShortcutIterator *const shortcutIt,
+            const int finalScore, const bool sameAsTyped,
+            SuggestionResults *const outSuggestionResults);
+    static int computeFirstWordConfidence(const DicNode *const terminalDicNode);
+};
+} // namespace latinime
+#endif // LATINIME_SUGGESTIONS_OUTPUT_UTILS
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.cpp b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
index 50f2bbd..f1e411f 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.cpp
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
@@ -20,6 +20,7 @@
 #include "suggest/core/dictionary/dictionary.h"
 #include "suggest/core/policy/dictionary_header_structure_policy.h"
 #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/core/session/prev_words_info.h"
 
 namespace latinime {
 
@@ -28,25 +29,14 @@
 const int DicTraverseSession::DICTIONARY_SIZE_THRESHOLD_TO_USE_LARGE_CACHE_FOR_SUGGESTION =
         256 * 1024;
 
-void DicTraverseSession::init(const Dictionary *const dictionary, const int *prevWord,
-        int prevWordLength, const SuggestOptions *const suggestOptions) {
+void DicTraverseSession::init(const Dictionary *const dictionary,
+        const PrevWordsInfo *const prevWordsInfo, const SuggestOptions *const suggestOptions) {
     mDictionary = dictionary;
     mMultiWordCostMultiplier = getDictionaryStructurePolicy()->getHeaderStructurePolicy()
             ->getMultiWordCostMultiplier();
     mSuggestOptions = suggestOptions;
-    if (!prevWord) {
-        mPrevWordPos = NOT_A_DICT_POS;
-        return;
-    }
-    // TODO: merge following similar calls to getTerminalPosition into one case-insensitive call.
-    mPrevWordPos = getDictionaryStructurePolicy()->getTerminalNodePositionOfWord(
-            prevWord, prevWordLength, false /* forceLowerCaseSearch */);
-    if (mPrevWordPos == NOT_A_DICT_POS) {
-        // Check bigrams for lower-cased previous word if original was not found. Useful for
-        // auto-capitalized words like "The [current_word]".
-        mPrevWordPos = getDictionaryStructurePolicy()->getTerminalNodePositionOfWord(
-                prevWord, prevWordLength, true /* forceLowerCaseSearch */);
-    }
+    prevWordsInfo->getPrevWordsTerminalPtNodePos(
+            getDictionaryStructurePolicy(), mPrevWordsPtNodePos, true /* tryLowerCaseSearch */);
 }
 
 void DicTraverseSession::setupForGetSuggestions(const ProximityInfo *pInfo,
@@ -68,7 +58,6 @@
     mDicNodesCache.reset(thresholdForNextActiveDicNodes /* nextActiveSize */,
             maxWords /* terminalSize */);
     mMultiBigramMap.clear();
-    mPartiallyCommited = false;
 }
 
 void DicTraverseSession::initializeProximityInfoStates(const int *const inputCodePoints,
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.h b/native/jni/src/suggest/core/session/dic_traverse_session.h
index e0b1c67..5a51a11 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.h
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.h
@@ -17,7 +17,6 @@
 #ifndef LATINIME_DIC_TRAVERSE_SESSION_H
 #define LATINIME_DIC_TRAVERSE_SESSION_H
 
-#include <stdint.h>
 #include <vector>
 
 #include "defines.h"
@@ -30,6 +29,7 @@
 
 class Dictionary;
 class DictionaryStructureWithBufferPolicy;
+class PrevWordsInfo;
 class ProximityInfo;
 class SuggestOptions;
 
@@ -45,32 +45,25 @@
                 dictSize >= DICTIONARY_SIZE_THRESHOLD_TO_USE_LARGE_CACHE_FOR_SUGGESTION);
     }
 
-    static AK_FORCE_INLINE void initSessionInstance(DicTraverseSession *traverseSession,
-            const Dictionary *const dictionary, const int *prevWord, const int prevWordLength,
-            const SuggestOptions *const suggestOptions) {
-        if (traverseSession) {
-            DicTraverseSession *tSession = static_cast<DicTraverseSession *>(traverseSession);
-            tSession->init(dictionary, prevWord, prevWordLength, suggestOptions);
-        }
-    }
-
     static AK_FORCE_INLINE void releaseSessionInstance(DicTraverseSession *traverseSession) {
         delete traverseSession;
     }
 
     AK_FORCE_INLINE DicTraverseSession(JNIEnv *env, jstring localeStr, bool usesLargeCache)
-            : mPrevWordPos(NOT_A_DICT_POS), mProximityInfo(0),
-              mDictionary(0), mSuggestOptions(0), mDicNodesCache(usesLargeCache),
-              mMultiBigramMap(), mInputSize(0), mPartiallyCommited(false), mMaxPointerCount(1),
+            : mProximityInfo(nullptr), mDictionary(nullptr), mSuggestOptions(nullptr),
+              mDicNodesCache(usesLargeCache), mMultiBigramMap(), mInputSize(0), mMaxPointerCount(1),
               mMultiWordCostMultiplier(1.0f) {
         // NOTE: mProximityInfoStates is an array of instances.
         // No need to initialize it explicitly here.
+        for (size_t i = 0; i < NELEMS(mPrevWordsPtNodePos); ++i) {
+            mPrevWordsPtNodePos[i] = NOT_A_DICT_POS;
+        }
     }
 
     // Non virtual inline destructor -- never inherit this class
     AK_FORCE_INLINE ~DicTraverseSession() {}
 
-    void init(const Dictionary *dictionary, const int *prevWord, int prevWordLength,
+    void init(const Dictionary *dictionary, const PrevWordsInfo *const prevWordsInfo,
             const SuggestOptions *const suggestOptions);
     // TODO: Remove and merge into init
     void setupForGetSuggestions(const ProximityInfo *pInfo, const int *inputCodePoints,
@@ -86,19 +79,13 @@
     //--------------------
     const ProximityInfo *getProximityInfo() const { return mProximityInfo; }
     const SuggestOptions *getSuggestOptions() const { return mSuggestOptions; }
-    int getPrevWordPos() const { return mPrevWordPos; }
-    // TODO: REMOVE
-    void setPrevWordPos(int pos) { mPrevWordPos = pos; }
-    // TODO: Use proper parameter when changed
-    int getDicRootPos() const { return 0; }
+    const int *getPrevWordsPtNodePos() const { return mPrevWordsPtNodePos; }
     DicNodesCache *getDicTraverseCache() { return &mDicNodesCache; }
     MultiBigramMap *getMultiBigramMap() { return &mMultiBigramMap; }
     const ProximityInfoState *getProximityInfoState(int id) const {
         return &mProximityInfoStates[id];
     }
     int getInputSize() const { return mInputSize; }
-    void setPartiallyCommited() { mPartiallyCommited = true; }
-    bool isPartiallyCommited() const { return mPartiallyCommited; }
 
     bool isOnlyOnePointerUsed(int *pointerId) const {
         // Not in the dictionary word
@@ -119,26 +106,13 @@
         return true;
     }
 
-    void getSearchKeys(const DicNode *node, std::vector<int> *const outputSearchKeyVector) const {
-        for (int i = 0; i < MAX_POINTER_COUNT_G; ++i) {
-            if (!mProximityInfoStates[i].isUsed()) {
-                continue;
-            }
-            const int pointerId = node->getInputIndex(i);
-            const std::vector<int> *const searchKeyVector =
-                    mProximityInfoStates[i].getSearchKeyVector(pointerId);
-            outputSearchKeyVector->insert(outputSearchKeyVector->end(), searchKeyVector->begin(),
-                    searchKeyVector->end());
-        }
-    }
-
-    ProximityType getProximityTypeG(const DicNode *const node, const int childCodePoint) const {
+    ProximityType getProximityTypeG(const DicNode *const dicNode, const int childCodePoint) const {
         ProximityType proximityType = UNRELATED_CHAR;
         for (int i = 0; i < MAX_POINTER_COUNT_G; ++i) {
             if (!mProximityInfoStates[i].isUsed()) {
                 continue;
             }
-            const int pointerId = node->getInputIndex(i);
+            const int pointerId = dicNode->getInputIndex(i);
             proximityType = mProximityInfoStates[i].getProximityTypeG(pointerId, childCodePoint);
             ASSERT(proximityType == UNRELATED_CHAR || proximityType == MATCH_CHAR);
             // TODO: Make this more generic
@@ -192,7 +166,7 @@
             const int *const inputYs, const int *const times, const int *const pointerIds,
             const int inputSize, const float maxSpatialDistance, const int maxPointerCount);
 
-    int mPrevWordPos;
+    int mPrevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
     const ProximityInfo *mProximityInfo;
     const Dictionary *mDictionary;
     const SuggestOptions *mSuggestOptions;
@@ -203,7 +177,6 @@
     ProximityInfoState mProximityInfoStates[MAX_POINTER_COUNT_G];
 
     int mInputSize;
-    bool mPartiallyCommited;
     int mMaxPointerCount;
 
     /////////////////////////////////
diff --git a/native/jni/src/suggest/core/session/prev_words_info.h b/native/jni/src/suggest/core/session/prev_words_info.h
new file mode 100644
index 0000000..76276f5
--- /dev/null
+++ b/native/jni/src/suggest/core/session/prev_words_info.h
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PREV_WORDS_INFO_H
+#define LATINIME_PREV_WORDS_INFO_H
+
+#include "defines.h"
+#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "utils/char_utils.h"
+
+namespace latinime {
+
+// TODO: Support n-gram.
+class PrevWordsInfo {
+ public:
+    // No prev word information.
+    PrevWordsInfo() {
+        clear();
+    }
+
+    PrevWordsInfo(PrevWordsInfo &&prevWordsInfo) {
+        for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
+            mPrevWordCodePointCount[i] = prevWordsInfo.mPrevWordCodePointCount[i];
+            memmove(mPrevWordCodePoints[i], prevWordsInfo.mPrevWordCodePoints[i],
+                    sizeof(mPrevWordCodePoints[i][0]) * mPrevWordCodePointCount[i]);
+            mIsBeginningOfSentence[i] = prevWordsInfo.mIsBeginningOfSentence[i];
+        }
+    }
+
+    // Construct from previous words.
+    PrevWordsInfo(const int prevWordCodePoints[][MAX_WORD_LENGTH],
+            const int *const prevWordCodePointCount, const bool *const isBeginningOfSentence,
+            const size_t prevWordCount) {
+        clear();
+        for (size_t i = 0; i < std::min(NELEMS(mPrevWordCodePoints), prevWordCount); ++i) {
+            if (prevWordCodePointCount[i] < 0 || prevWordCodePointCount[i] > MAX_WORD_LENGTH) {
+                continue;
+            }
+            memmove(mPrevWordCodePoints[i], prevWordCodePoints[i],
+                    sizeof(mPrevWordCodePoints[i][0]) * prevWordCodePointCount[i]);
+            mPrevWordCodePointCount[i] = prevWordCodePointCount[i];
+            mIsBeginningOfSentence[i] = isBeginningOfSentence[i];
+        }
+    }
+
+    // Construct from a previous word.
+    PrevWordsInfo(const int *const prevWordCodePoints, const int prevWordCodePointCount,
+            const bool isBeginningOfSentence) {
+        clear();
+        if (prevWordCodePointCount > MAX_WORD_LENGTH || !prevWordCodePoints) {
+            return;
+        }
+        memmove(mPrevWordCodePoints[0], prevWordCodePoints,
+                sizeof(mPrevWordCodePoints[0][0]) * prevWordCodePointCount);
+        mPrevWordCodePointCount[0] = prevWordCodePointCount;
+        mIsBeginningOfSentence[0] = isBeginningOfSentence;
+    }
+
+    bool isValid() const {
+        if (mPrevWordCodePointCount[0] > 0) {
+            return true;
+        }
+        if (mIsBeginningOfSentence[0]) {
+            return true;
+        }
+        return false;
+    }
+
+    void getPrevWordsTerminalPtNodePos(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+            int *const outPrevWordsTerminalPtNodePos, const bool tryLowerCaseSearch) const {
+        for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
+            outPrevWordsTerminalPtNodePos[i] = getTerminalPtNodePosOfWord(dictStructurePolicy,
+                    mPrevWordCodePoints[i], mPrevWordCodePointCount[i],
+                    mIsBeginningOfSentence[i], tryLowerCaseSearch);
+        }
+    }
+
+    BinaryDictionaryBigramsIterator getBigramsIteratorForPrediction(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy) const {
+        return getBigramsIteratorForWordWithTryingLowerCaseSearch(
+                dictStructurePolicy, mPrevWordCodePoints[0], mPrevWordCodePointCount[0],
+                mIsBeginningOfSentence[0]);
+    }
+
+    // n is 1-indexed.
+    const int *getNthPrevWordCodePoints(const int n) const {
+        if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) {
+            return nullptr;
+        }
+        return mPrevWordCodePoints[n - 1];
+    }
+
+    // n is 1-indexed.
+    int getNthPrevWordCodePointCount(const int n) const {
+        if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) {
+            return 0;
+        }
+        return mPrevWordCodePointCount[n - 1];
+    }
+
+    // n is 1-indexed.
+    bool isNthPrevWordBeginningOfSentence(const int n) const {
+        if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) {
+            return false;
+        }
+        return mIsBeginningOfSentence[n - 1];
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(PrevWordsInfo);
+
+    static int getTerminalPtNodePosOfWord(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+            const int *const wordCodePoints, const int wordCodePointCount,
+            const bool isBeginningOfSentence, const bool tryLowerCaseSearch) {
+        if (!dictStructurePolicy || !wordCodePoints || wordCodePointCount > MAX_WORD_LENGTH) {
+            return NOT_A_DICT_POS;
+        }
+        int codePoints[MAX_WORD_LENGTH];
+        int codePointCount = wordCodePointCount;
+        memmove(codePoints, wordCodePoints, sizeof(int) * codePointCount);
+        if (isBeginningOfSentence) {
+            codePointCount = CharUtils::attachBeginningOfSentenceMarker(codePoints,
+                    codePointCount, MAX_WORD_LENGTH);
+            if (codePointCount <= 0) {
+                return NOT_A_DICT_POS;
+            }
+        }
+        const int wordPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+                codePoints, codePointCount, false /* forceLowerCaseSearch */);
+        if (wordPtNodePos != NOT_A_DICT_POS || !tryLowerCaseSearch) {
+            // Return the position when when the word was found or doesn't try lower case
+            // search.
+            return wordPtNodePos;
+        }
+        // Check bigrams for lower-cased previous word if original was not found. Useful for
+        // auto-capitalized words like "The [current_word]".
+        return dictStructurePolicy->getTerminalPtNodePositionOfWord(
+                codePoints, codePointCount, true /* forceLowerCaseSearch */);
+    }
+
+    static BinaryDictionaryBigramsIterator getBigramsIteratorForWordWithTryingLowerCaseSearch(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+            const int *const wordCodePoints, const int wordCodePointCount,
+            const bool isBeginningOfSentence) {
+        if (!dictStructurePolicy || !wordCodePoints || wordCodePointCount > MAX_WORD_LENGTH) {
+            return BinaryDictionaryBigramsIterator();
+        }
+        int codePoints[MAX_WORD_LENGTH];
+        int codePointCount = wordCodePointCount;
+        memmove(codePoints, wordCodePoints, sizeof(int) * codePointCount);
+        if (isBeginningOfSentence) {
+            codePointCount = CharUtils::attachBeginningOfSentenceMarker(codePoints,
+                    codePointCount, MAX_WORD_LENGTH);
+            if (codePointCount <= 0) {
+                return BinaryDictionaryBigramsIterator();
+            }
+        }
+        BinaryDictionaryBigramsIterator bigramsIt = getBigramsIteratorForWord(dictStructurePolicy,
+                codePoints, codePointCount, false /* forceLowerCaseSearch */);
+        // getBigramsIteratorForWord returns an empty iterator if this word isn't in the dictionary
+        // or has no bigrams.
+        if (bigramsIt.hasNext()) {
+            return bigramsIt;
+        }
+        // If no bigrams for this exact word, search again in lower case.
+        return getBigramsIteratorForWord(dictStructurePolicy, codePoints,
+                codePointCount, true /* forceLowerCaseSearch */);
+    }
+
+    static BinaryDictionaryBigramsIterator getBigramsIteratorForWord(
+            const DictionaryStructureWithBufferPolicy *const dictStructurePolicy,
+            const int *wordCodePoints, const int wordCodePointCount,
+            const bool forceLowerCaseSearch) {
+        if (!wordCodePoints || wordCodePointCount <= 0) return BinaryDictionaryBigramsIterator();
+        const int terminalPtNodePos = dictStructurePolicy->getTerminalPtNodePositionOfWord(
+                wordCodePoints, wordCodePointCount, forceLowerCaseSearch);
+        if (NOT_A_DICT_POS == terminalPtNodePos) return BinaryDictionaryBigramsIterator();
+        return dictStructurePolicy->getBigramsIteratorOfPtNode(terminalPtNodePos);
+    }
+
+    void clear() {
+        for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) {
+            mPrevWordCodePointCount[i] = 0;
+            mIsBeginningOfSentence[i] = false;
+        }
+    }
+
+    int mPrevWordCodePoints[MAX_PREV_WORD_COUNT_FOR_N_GRAM][MAX_WORD_LENGTH];
+    int mPrevWordCodePointCount[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    bool mIsBeginningOfSentence[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+};
+} // namespace latinime
+#endif // LATINIME_PREV_WORDS_INFO_H
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index 73ccebc..0cd305f 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -19,23 +19,19 @@
 #include "suggest/core/dicnode/dic_node.h"
 #include "suggest/core/dicnode/dic_node_priority_queue.h"
 #include "suggest/core/dicnode/dic_node_vector.h"
-#include "suggest/core/dictionary/binary_dictionary_shortcut_iterator.h"
 #include "suggest/core/dictionary/dictionary.h"
 #include "suggest/core/dictionary/digraph_utils.h"
-#include "suggest/core/dictionary/shortcut_utils.h"
 #include "suggest/core/layout/proximity_info.h"
 #include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "suggest/core/policy/scoring.h"
 #include "suggest/core/policy/traversal.h"
 #include "suggest/core/policy/weighting.h"
+#include "suggest/core/result/suggestions_output_utils.h"
 #include "suggest/core/session/dic_traverse_session.h"
 
 namespace latinime {
 
 // Initialization of class constants.
-const int Suggest::MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT = 16;
 const int Suggest::MIN_CONTINUOUS_SUGGESTION_INPUT_SIZE = 2;
-const float Suggest::AUTOCORRECT_CLASSIFICATION_THRESHOLD = 0.33f;
 
 /**
  * Returns a set of suggestions for the given input touch points. The commitPoint argument indicates
@@ -46,10 +42,10 @@
  * automatically activated for sequential calls that share the same starting input.
  * TODO: Stop detecting continuous suggestion. Start using traverseSession instead.
  */
-int Suggest::getSuggestions(ProximityInfo *pInfo, void *traverseSession,
+void Suggest::getSuggestions(ProximityInfo *pInfo, void *traverseSession,
         int *inputXs, int *inputYs, int *times, int *pointerIds, int *inputCodePoints,
-        int inputSize, int commitPoint, int *outWords, int *frequencies, int *outputIndices,
-        int *outputTypes, int *outputAutoCommitFirstWordConfidence) const {
+        int inputSize, const float languageWeight,
+        SuggestionResults *const outSuggestionResults) const {
     PROF_OPEN;
     PROF_START(0);
     const float maxSpatialDistance = TRAVERSAL->getMaxSpatialDistance();
@@ -58,7 +54,7 @@
             pointerIds, maxSpatialDistance, TRAVERSAL->getMaxPointerCount());
     // TODO: Add the way to evaluate cache
 
-    initializeSearch(tSession, commitPoint);
+    initializeSearch(tSession);
     PROF_END(0);
     PROF_START(1);
 
@@ -70,247 +66,38 @@
     }
     PROF_END(1);
     PROF_START(2);
-    const int size = outputSuggestions(tSession, frequencies, outWords, outputIndices, outputTypes,
-            outputAutoCommitFirstWordConfidence);
+    SuggestionsOutputUtils::outputSuggestions(
+            SCORING, tSession, languageWeight, outSuggestionResults);
     PROF_END(2);
     PROF_CLOSE;
-    return size;
 }
 
 /**
  * Initializes the search at the root of the lexicon trie. Note that when possible the search will
  * continue suggestion from where it left off during the last call.
  */
-void Suggest::initializeSearch(DicTraverseSession *traverseSession, int commitPoint) const {
+void Suggest::initializeSearch(DicTraverseSession *traverseSession) const {
     if (!traverseSession->getProximityInfoState(0)->isUsed()) {
         return;
     }
 
-    // Never auto partial commit for now.
-    commitPoint = 0;
-
     if (traverseSession->getInputSize() > MIN_CONTINUOUS_SUGGESTION_INPUT_SIZE
             && traverseSession->isContinuousSuggestionPossible()) {
-        if (commitPoint == 0) {
-            // Continue suggestion
-            traverseSession->getDicTraverseCache()->continueSearch();
-        } else {
-            // Continue suggestion after partial commit.
-            DicNode *topDicNode =
-                    traverseSession->getDicTraverseCache()->setCommitPoint(commitPoint);
-            traverseSession->setPrevWordPos(topDicNode->getPrevWordNodePos());
-            traverseSession->getDicTraverseCache()->continueSearch();
-            traverseSession->setPartiallyCommited();
-        }
+        // Continue suggestion
+        traverseSession->getDicTraverseCache()->continueSearch();
     } else {
         // Restart recognition at the root.
         traverseSession->resetCache(TRAVERSAL->getMaxCacheSize(traverseSession->getInputSize()),
-                MAX_RESULTS);
+                TRAVERSAL->getTerminalCacheSize());
         // Create a new dic node here
         DicNode rootNode;
         DicNodeUtils::initAsRoot(traverseSession->getDictionaryStructurePolicy(),
-                traverseSession->getPrevWordPos(), &rootNode);
+                traverseSession->getPrevWordsPtNodePos(), &rootNode);
         traverseSession->getDicTraverseCache()->copyPushActive(&rootNode);
     }
 }
 
 /**
- * Outputs the final list of suggestions (i.e., terminal nodes).
- */
-int Suggest::outputSuggestions(DicTraverseSession *traverseSession, int *frequencies,
-        int *outputCodePoints, int *outputIndicesToPartialCommit, int *outputTypes,
-        int *outputAutoCommitFirstWordConfidence) const {
-#if DEBUG_EVALUATE_MOST_PROBABLE_STRING
-    const int terminalSize = 0;
-#else
-    const int terminalSize = min(MAX_RESULTS,
-            static_cast<int>(traverseSession->getDicTraverseCache()->terminalSize()));
-#endif
-    DicNode terminals[MAX_RESULTS]; // Avoiding non-POD variable length array
-
-    for (int index = terminalSize - 1; index >= 0; --index) {
-        traverseSession->getDicTraverseCache()->popTerminal(&terminals[index]);
-    }
-
-    const float languageWeight = SCORING->getAdjustedLanguageWeight(
-            traverseSession, terminals, terminalSize);
-
-    int outputWordIndex = 0;
-    // Insert most probable word at index == 0 as long as there is one terminal at least
-    const bool hasMostProbableString =
-            SCORING->getMostProbableString(traverseSession, terminalSize, languageWeight,
-                    &outputCodePoints[0], &outputTypes[0], &frequencies[0]);
-    if (hasMostProbableString) {
-        outputIndicesToPartialCommit[outputWordIndex] = NOT_AN_INDEX;
-        ++outputWordIndex;
-    }
-
-    // Initial value of the loop index for terminal nodes (words)
-    int doubleLetterTerminalIndex = -1;
-    DoubleLetterLevel doubleLetterLevel = NOT_A_DOUBLE_LETTER;
-    SCORING->searchWordWithDoubleLetter(terminals, terminalSize,
-            &doubleLetterTerminalIndex, &doubleLetterLevel);
-
-    int maxScore = S_INT_MIN;
-    // Force autocorrection for obvious long multi-word suggestions when the top suggestion is
-    // a long multiple words suggestion.
-    // TODO: Implement a smarter auto-commit method for handling multi-word suggestions.
-    // traverseSession->isPartiallyCommited() always returns false because we never auto partial
-    // commit for now.
-    const bool forceCommitMultiWords = (terminalSize > 0) ?
-            TRAVERSAL->autoCorrectsToMultiWordSuggestionIfTop()
-                    && (traverseSession->isPartiallyCommited()
-                            || (traverseSession->getInputSize()
-                                    >= MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT
-                                            && terminals[0].hasMultipleWords())) : false;
-    // TODO: have partial commit work even with multiple pointers.
-    const bool outputSecondWordFirstLetterInputIndex =
-            traverseSession->isOnlyOnePointerUsed(0 /* pointerId */);
-    if (terminalSize > 0) {
-        // If we have no suggestions, don't write this
-        outputAutoCommitFirstWordConfidence[0] =
-                computeFirstWordConfidence(&terminals[0]);
-    }
-
-    // Output suggestion results here
-    for (int terminalIndex = 0; terminalIndex < terminalSize && outputWordIndex < MAX_RESULTS;
-            ++terminalIndex) {
-        DicNode *terminalDicNode = &terminals[terminalIndex];
-        if (DEBUG_GEO_FULL) {
-            terminalDicNode->dump("OUT:");
-        }
-        const float doubleLetterCost = SCORING->getDoubleLetterDemotionDistanceCost(
-                terminalIndex, doubleLetterTerminalIndex, doubleLetterLevel);
-        const float compoundDistance = terminalDicNode->getCompoundDistance(languageWeight)
-                + doubleLetterCost;
-        const bool isPossiblyOffensiveWord =
-                traverseSession->getDictionaryStructurePolicy()->getProbability(
-                        terminalDicNode->getProbability(), NOT_A_PROBABILITY) <= 0;
-        const bool isExactMatch = terminalDicNode->isExactMatch();
-        const bool isFirstCharUppercase = terminalDicNode->isFirstCharUppercase();
-        // Heuristic: We exclude freq=0 first-char-uppercase words from exact match.
-        // (e.g. "AMD" and "and")
-        const bool isSafeExactMatch = isExactMatch
-                && !(isPossiblyOffensiveWord && isFirstCharUppercase);
-        const int outputTypeFlags =
-                (isPossiblyOffensiveWord ? Dictionary::KIND_FLAG_POSSIBLY_OFFENSIVE : 0)
-                | (isSafeExactMatch ? Dictionary::KIND_FLAG_EXACT_MATCH : 0);
-
-        // Entries that are blacklisted or do not represent a word should not be output.
-        const bool isValidWord = !terminalDicNode->isBlacklistedOrNotAWord();
-
-        // Increase output score of top typing suggestion to ensure autocorrection.
-        // TODO: Better integration with java side autocorrection logic.
-        const int finalScore = SCORING->calculateFinalScore(
-                compoundDistance, traverseSession->getInputSize(),
-                terminalDicNode->isExactMatch()
-                        || (forceCommitMultiWords && terminalDicNode->hasMultipleWords())
-                                || (isValidWord && SCORING->doesAutoCorrectValidWord()));
-        if (maxScore < finalScore && isValidWord) {
-            maxScore = finalScore;
-        }
-
-        // Don't output invalid words. However, we still need to submit their shortcuts if any.
-        if (isValidWord) {
-            outputTypes[outputWordIndex] = Dictionary::KIND_CORRECTION | outputTypeFlags;
-            frequencies[outputWordIndex] = finalScore;
-            if (outputSecondWordFirstLetterInputIndex) {
-                outputIndicesToPartialCommit[outputWordIndex] =
-                        terminalDicNode->getSecondWordFirstInputIndex(
-                                traverseSession->getProximityInfoState(0));
-            } else {
-                outputIndicesToPartialCommit[outputWordIndex] = NOT_AN_INDEX;
-            }
-            // Populate the outputChars array with the suggested word.
-            const int startIndex = outputWordIndex * MAX_WORD_LENGTH;
-            terminalDicNode->outputResult(&outputCodePoints[startIndex]);
-            ++outputWordIndex;
-        }
-
-        if (!terminalDicNode->hasMultipleWords()) {
-            BinaryDictionaryShortcutIterator shortcutIt(
-                    traverseSession->getDictionaryStructurePolicy()->getShortcutsStructurePolicy(),
-                    traverseSession->getDictionaryStructurePolicy()
-                            ->getShortcutPositionOfPtNode(terminalDicNode->getPos()));
-            // Shortcut is not supported for multiple words suggestions.
-            // TODO: Check shortcuts during traversal for multiple words suggestions.
-            const bool sameAsTyped = TRAVERSAL->sameAsTyped(traverseSession, terminalDicNode);
-            const int updatedOutputWordIndex = ShortcutUtils::outputShortcuts(&shortcutIt,
-                    outputWordIndex,  finalScore, outputCodePoints, frequencies, outputTypes,
-                    sameAsTyped);
-            const int secondWordFirstInputIndex = terminalDicNode->getSecondWordFirstInputIndex(
-                    traverseSession->getProximityInfoState(0));
-            for (int i = outputWordIndex; i < updatedOutputWordIndex; ++i) {
-                if (outputSecondWordFirstLetterInputIndex) {
-                    outputIndicesToPartialCommit[i] = secondWordFirstInputIndex;
-                } else {
-                    outputIndicesToPartialCommit[i] = NOT_AN_INDEX;
-                }
-            }
-            outputWordIndex = updatedOutputWordIndex;
-        }
-        DicNode::managedDelete(terminalDicNode);
-    }
-
-    if (hasMostProbableString) {
-        SCORING->safetyNetForMostProbableString(terminalSize, maxScore,
-                &outputCodePoints[0], &frequencies[0]);
-    }
-    return outputWordIndex;
-}
-
-int Suggest::computeFirstWordConfidence(const DicNode *const terminalDicNode) const {
-    // Get the number of spaces in the first suggestion
-    const int spaceCount = terminalDicNode->getTotalNodeSpaceCount();
-    // Get the number of characters in the first suggestion
-    const int length = terminalDicNode->getTotalNodeCodePointCount();
-    // Get the distance for the first word of the suggestion
-    const float distance = terminalDicNode->getNormalizedCompoundDistanceAfterFirstWord();
-
-    // Arbitrarily, we give a score whose useful values range from 0 to 1,000,000.
-    // 1,000,000 will be the cutoff to auto-commit. It's fine if the number is under 0 or
-    // above 1,000,000 : under 0 just means it's very bad to commit, and above 1,000,000 means
-    // we are very confident.
-    // Expected space count is 1 ~ 5
-    static const int MIN_EXPECTED_SPACE_COUNT = 1;
-    static const int MAX_EXPECTED_SPACE_COUNT = 5;
-    // Expected length is about 4 ~ 30
-    static const int MIN_EXPECTED_LENGTH = 4;
-    static const int MAX_EXPECTED_LENGTH = 30;
-    // Expected distance is about 0.2 ~ 2.0, but consider 0.0 ~ 2.0
-    static const float MIN_EXPECTED_DISTANCE = 0.0;
-    static const float MAX_EXPECTED_DISTANCE = 2.0;
-    // This is not strict: it's where most stuff will be falling, but it's still fine if it's
-    // outside these values. We want to output a value that reflects all of these. Each factor
-    // contributes a bit.
-
-    // We need at least a space.
-    if (spaceCount < 1) return NOT_A_FIRST_WORD_CONFIDENCE;
-
-    // The smaller the edit distance, the higher the contribution. MIN_EXPECTED_DISTANCE means 0
-    // contribution, while MAX_EXPECTED_DISTANCE means full contribution according to the
-    // weight of the distance. Clamp to avoid overflows.
-    const float clampedDistance = distance < MIN_EXPECTED_DISTANCE ? MIN_EXPECTED_DISTANCE
-            : distance > MAX_EXPECTED_DISTANCE ? MAX_EXPECTED_DISTANCE : distance;
-    const int distanceContribution = DISTANCE_WEIGHT_FOR_AUTO_COMMIT
-            * (MAX_EXPECTED_DISTANCE - clampedDistance)
-            / (MAX_EXPECTED_DISTANCE - MIN_EXPECTED_DISTANCE);
-    // The larger the suggestion length, the larger the contribution. MIN_EXPECTED_LENGTH is no
-    // contribution, MAX_EXPECTED_LENGTH is full contribution according to the weight of the
-    // length. Length is guaranteed to be between 1 and 48, so we don't need to clamp.
-    const int lengthContribution = LENGTH_WEIGHT_FOR_AUTO_COMMIT
-            * (length - MIN_EXPECTED_LENGTH) / (MAX_EXPECTED_LENGTH - MIN_EXPECTED_LENGTH);
-    // The more spaces, the larger the contribution. MIN_EXPECTED_SPACE_COUNT space is no
-    // contribution, MAX_EXPECTED_SPACE_COUNT spaces is full contribution according to the
-    // weight of the space count.
-    const int spaceContribution = SPACE_COUNT_WEIGHT_FOR_AUTO_COMMIT
-            * (spaceCount - MIN_EXPECTED_SPACE_COUNT)
-            / (MAX_EXPECTED_SPACE_COUNT - MIN_EXPECTED_SPACE_COUNT);
-
-    return distanceContribution + lengthContribution + spaceContribution;
-}
-
-/**
  * Expands the dicNodes in the current search priority queue by advancing to the possible child
  * nodes based on the next touch point(s) (or no touch points for lookahead)
  */
@@ -421,15 +208,15 @@
                         }
                         break;
                     case UNRELATED_CHAR:
-                        // Just drop this node and do nothing.
+                        // Just drop this dicNode and do nothing.
                         break;
                     default:
-                        // Just drop this node and do nothing.
+                        // Just drop this dicNode and do nothing.
                         break;
                 }
             }
 
-            // Push the node for look-ahead correction
+            // Push the dicNode for look-ahead correction
             if (allowsErrorCorrections && canDoLookAheadCorrection) {
                 traverseSession->getDicTraverseCache()->copyPushNextActive(&dicNode);
             }
@@ -442,15 +229,17 @@
     if (dicNode->getCompoundDistance() >= static_cast<float>(MAX_VALUE_FOR_WEIGHTING)) {
         return;
     }
-    if (!dicNode->isTerminalWordNode()) {
+    if (!dicNode->isTerminalDicNode()) {
         return;
     }
     if (dicNode->shouldBeFilteredBySafetyNetForBigram()) {
         return;
     }
+    if (!dicNode->hasMatchedOrProximityCodePoints()) {
+        return;
+    }
     // Create a non-cached node here.
-    DicNode terminalDicNode;
-    DicNodeUtils::initByCopy(dicNode, &terminalDicNode);
+    DicNode terminalDicNode(*dicNode);
     if (TRAVERSAL->needsToTraverseAllUserInput()
             && dicNode->getInputIndex(0) < traverseSession->getInputSize()) {
         Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TERMINAL_INSERTION, traverseSession, 0,
@@ -463,7 +252,7 @@
 
 /**
  * Adds the expanded dicNode to the next search priority queue. Also creates an additional next word
- * (by the space omission error correction) search path if input dicNode is on a terminal node.
+ * (by the space omission error correction) search path if input dicNode is on a terminal.
  */
 void Suggest::processExpandedDicNode(
         DicTraverseSession *traverseSession, DicNode *dicNode) const {
@@ -478,7 +267,6 @@
             traverseSession->getDicTraverseCache()->copyPushNextActive(dicNode);
         }
     }
-    DicNode::managedDelete(dicNode);
 }
 
 void Suggest::processDicNodeAsMatch(DicTraverseSession *traverseSession,
@@ -505,7 +293,7 @@
     processExpandedDicNode(traverseSession, childDicNode);
 }
 
-// Process the node codepoint as a digraph. This means that composite glyphs like the German
+// Process the DicNode codepoint as a digraph. This means that composite glyphs like the German
 // u-umlaut is expanded to the transliteration "ue". Note that this happens in parallel with
 // the normal non-digraph traversal, so both "uber" and "ueber" can be corrected to "[u-umlaut]ber".
 void Suggest::processDicNodeAsDigraph(DicTraverseSession *traverseSession,
@@ -518,7 +306,7 @@
 /**
  * Handle the dicNode as an omission error (e.g., ths => this). Skip the current letter and consider
  * matches for all possible next letters. Note that just skipping the current letter without any
- * other conditions tends to flood the search dic nodes cache with omission nodes. Instead, check
+ * other conditions tends to flood the search DicNodes cache with omission DicNodes. Instead, check
  * the possible *next* letters after the omission to better limit search to plausible omissions.
  * Note that apostrophes are handled as omissions.
  */
@@ -572,6 +360,7 @@
         DicNode *dicNode) const {
     const int16_t pointIndex = dicNode->getInputIndex(0);
     DicNodeVector childDicNodes1;
+    DicNodeVector childDicNodes2;
     DicNodeUtils::getAllChildDicNodes(dicNode, traverseSession->getDictionaryStructurePolicy(),
             &childDicNodes1);
     const int childSize1 = childDicNodes1.getSizeAndLock();
@@ -583,7 +372,7 @@
             continue;
         }
         if (childDicNodes1[i]->hasChildren()) {
-            DicNodeVector childDicNodes2;
+            childDicNodes2.clear();
             DicNodeUtils::getAllChildDicNodes(childDicNodes1[i],
                     traverseSession->getDictionaryStructurePolicy(), &childDicNodes2);
             const int childSize2 = childDicNodes2.getSizeAndLock();
@@ -600,12 +389,11 @@
                 processExpandedDicNode(traverseSession, childDicNode2);
             }
         }
-        DicNode::managedDelete(childDicNodes1[i]);
     }
 }
 
 /**
- * Weight child node by aligning it to the key
+ * Weight child dicNode by aligning it to the key
  */
 void Suggest::weightChildNode(DicTraverseSession *traverseSession, DicNode *dicNode) const {
     const int inputSize = traverseSession->getInputSize();
diff --git a/native/jni/src/suggest/core/suggest.h b/native/jni/src/suggest/core/suggest.h
index b20343d..788e031 100644
--- a/native/jni/src/suggest/core/suggest.h
+++ b/native/jni/src/suggest/core/suggest.h
@@ -36,37 +36,30 @@
 class DicTraverseSession;
 class ProximityInfo;
 class Scoring;
+class SuggestionResults;
 class Traversal;
 class Weighting;
 
 class Suggest : public SuggestInterface {
  public:
     AK_FORCE_INLINE Suggest(const SuggestPolicy *const suggestPolicy)
-            : TRAVERSAL(suggestPolicy ? suggestPolicy->getTraversal() : 0),
-              SCORING(suggestPolicy ? suggestPolicy->getScoring() : 0),
-              WEIGHTING(suggestPolicy ? suggestPolicy->getWeighting() : 0) {}
+            : TRAVERSAL(suggestPolicy ? suggestPolicy->getTraversal() : nullptr),
+              SCORING(suggestPolicy ? suggestPolicy->getScoring() : nullptr),
+              WEIGHTING(suggestPolicy ? suggestPolicy->getWeighting() : nullptr) {}
     AK_FORCE_INLINE virtual ~Suggest() {}
-    int getSuggestions(ProximityInfo *pInfo, void *traverseSession, int *inputXs, int *inputYs,
-            int *times, int *pointerIds, int *inputCodePoints, int inputSize, int commitPoint,
-            int *outWords, int *frequencies, int *outputIndices, int *outputTypes,
-            int *outputAutoCommitFirstWordConfidence) const;
+    void getSuggestions(ProximityInfo *pInfo, void *traverseSession, int *inputXs, int *inputYs,
+            int *times, int *pointerIds, int *inputCodePoints, int inputSize,
+            const float languageWeight, SuggestionResults *const outSuggestionResults) const;
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(Suggest);
     void createNextWordDicNode(DicTraverseSession *traverseSession, DicNode *dicNode,
             const bool spaceSubstitution) const;
-    int outputSuggestions(DicTraverseSession *traverseSession, int *frequencies,
-            int *outputCodePoints, int *outputIndicesToPartialCommit, int *outputTypes,
-            int *outputAutoCommitFirstWordConfidence) const;
-    int computeFirstWordConfidence(const DicNode *const terminalDicNode) const;
-    void initializeSearch(DicTraverseSession *traverseSession, int commitPoint) const;
+    void initializeSearch(DicTraverseSession *traverseSession) const;
     void expandCurrentDicNodes(DicTraverseSession *traverseSession) const;
     void processTerminalDicNode(DicTraverseSession *traverseSession, DicNode *dicNode) const;
     void processExpandedDicNode(DicTraverseSession *traverseSession, DicNode *dicNode) const;
     void weightChildNode(DicTraverseSession *traverseSession, DicNode *dicNode) const;
-    float getAutocorrectScore(DicTraverseSession *traverseSession, DicNode *dicNode) const;
-    void generateFeatures(
-            DicTraverseSession *traverseSession, DicNode *dicNode, float *features) const;
     void processDicNodeAsOmission(DicTraverseSession *traverseSession, DicNode *dicNode) const;
     void processDicNodeAsDigraph(DicTraverseSession *traverseSession, DicNode *dicNode) const;
     void processDicNodeAsTransposition(DicTraverseSession *traverseSession,
@@ -79,13 +72,8 @@
     void processDicNodeAsMatch(DicTraverseSession *traverseSession,
             DicNode *childDicNode) const;
 
-    // Inputs longer than this will autocorrect if the suggestion is multi-word
-    static const int MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT;
     static const int MIN_CONTINUOUS_SUGGESTION_INPUT_SIZE;
 
-    // Threshold for autocorrection classifier
-    static const float AUTOCORRECT_CLASSIFICATION_THRESHOLD;
-
     const Traversal *const TRAVERSAL;
     const Scoring *const SCORING;
     const Weighting *const WEIGHTING;
diff --git a/native/jni/src/suggest/core/suggest_interface.h b/native/jni/src/suggest/core/suggest_interface.h
index 4deb4d9..a6e5aef 100644
--- a/native/jni/src/suggest/core/suggest_interface.h
+++ b/native/jni/src/suggest/core/suggest_interface.h
@@ -22,13 +22,13 @@
 namespace latinime {
 
 class ProximityInfo;
+class SuggestionResults;
 
 class SuggestInterface {
  public:
-    virtual int getSuggestions(ProximityInfo *pInfo, void *traverseSession, int *inputXs,
+    virtual void getSuggestions(ProximityInfo *pInfo, void *traverseSession, int *inputXs,
             int *inputYs, int *times, int *pointerIds, int *inputCodePoints, int inputSize,
-            int commitPoint, int *outWords, int *frequencies, int *outputIndices,
-            int *outputTypes, int *outputAutoCommitFirstWordConfidence) const = 0;
+            const float languageWeight, SuggestionResults *const suggestionResults) const = 0;
     SuggestInterface() {}
     virtual ~SuggestInterface() {}
  private:
diff --git a/native/jni/src/suggest/core/suggest_options.h b/native/jni/src/suggest/core/suggest_options.h
index 1b21aaf..d456680 100644
--- a/native/jni/src/suggest/core/suggest_options.h
+++ b/native/jni/src/suggest/core/suggest_options.h
@@ -34,6 +34,14 @@
         return getBoolOption(USE_FULL_EDIT_DISTANCE);
     }
 
+    AK_FORCE_INLINE bool blockOffensiveWords() const {
+        return getBoolOption(BLOCK_OFFENSIVE_WORDS);
+    }
+
+    AK_FORCE_INLINE bool enableSpaceAwareGesture() const {
+        return getBoolOption(SPACE_AWARE_GESTURE_ENABLED);
+    }
+
     AK_FORCE_INLINE bool getAdditionalFeaturesBoolOption(const int key) const {
         return getBoolOption(key + ADDITIONAL_FEATURES_OPTIONS);
     }
@@ -45,9 +53,11 @@
     // reorder options.
     static const int IS_GESTURE = 0;
     static const int USE_FULL_EDIT_DISTANCE = 1;
+    static const int BLOCK_OFFENSIVE_WORDS = 2;
+    static const int SPACE_AWARE_GESTURE_ENABLED = 3;
     // Additional features options are stored after the other options and used as setting values of
     // experimental features.
-    static const int ADDITIONAL_FEATURES_OPTIONS = 2;
+    static const int ADDITIONAL_FEATURES_OPTIONS = 4;
 
     const int *const mOptions;
     const int mLength;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h
deleted file mode 100644
index 6ff95ca..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_BIGRAM_LIST_POLICY_H
-#define LATINIME_BIGRAM_LIST_POLICY_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h"
-
-namespace latinime {
-
-class BigramListPolicy : public DictionaryBigramsStructurePolicy {
- public:
-    explicit BigramListPolicy(const uint8_t *const bigramsBuf) : mBigramsBuf(bigramsBuf) {}
-
-    ~BigramListPolicy() {}
-
-    void getNextBigram(int *const outBigramPos, int *const outProbability, bool *const outHasNext,
-            int *const pos) const {
-        BigramListReadWriteUtils::BigramFlags flags;
-        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(mBigramsBuf, &flags,
-                outBigramPos, pos);
-        *outProbability = BigramListReadWriteUtils::getProbabilityFromFlags(flags);
-        *outHasNext = BigramListReadWriteUtils::hasNext(flags);
-    }
-
-    void skipAllBigrams(int *const pos) const {
-        BigramListReadWriteUtils::skipExistingBigrams(mBigramsBuf, pos);
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(BigramListPolicy);
-
-    const uint8_t *const mBigramsBuf;
-};
-} // namespace latinime
-#endif // LATINIME_BIGRAM_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.cpp
deleted file mode 100644
index 1926b98..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h"
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-
-namespace latinime {
-
-const BigramListReadWriteUtils::BigramFlags BigramListReadWriteUtils::MASK_ATTRIBUTE_ADDRESS_TYPE =
-        0x30;
-const BigramListReadWriteUtils::BigramFlags
-        BigramListReadWriteUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10;
-const BigramListReadWriteUtils::BigramFlags
-        BigramListReadWriteUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20;
-const BigramListReadWriteUtils::BigramFlags
-        BigramListReadWriteUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30;
-const BigramListReadWriteUtils::BigramFlags
-        BigramListReadWriteUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40;
-// Flag for presence of more attributes
-const BigramListReadWriteUtils::BigramFlags BigramListReadWriteUtils::FLAG_ATTRIBUTE_HAS_NEXT =
-        0x80;
-// Mask for attribute probability, stored on 4 bits inside the flags byte.
-const BigramListReadWriteUtils::BigramFlags
-        BigramListReadWriteUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F;
-const int BigramListReadWriteUtils::ATTRIBUTE_ADDRESS_SHIFT = 4;
-
-/* static */ void BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
-        const uint8_t *const bigramsBuf, BigramFlags *const outBigramFlags,
-        int *const outTargetPtNodePos, int *const bigramEntryPos) {
-    const BigramFlags bigramFlags = ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf,
-            bigramEntryPos);
-    if (outBigramFlags) {
-        *outBigramFlags = bigramFlags;
-    }
-    const int targetPos = getBigramAddressAndAdvancePosition(bigramsBuf, bigramFlags,
-            bigramEntryPos);
-    if (outTargetPtNodePos) {
-        *outTargetPtNodePos = targetPos;
-    }
-}
-
-/* static */ void BigramListReadWriteUtils::skipExistingBigrams(const uint8_t *const bigramsBuf,
-        int *const bigramListPos) {
-    BigramFlags flags;
-    do {
-        getBigramEntryPropertiesAndAdvancePosition(bigramsBuf, &flags, 0 /* outTargetPtNodePos */,
-                bigramListPos);
-    } while(hasNext(flags));
-}
-
-/* static */ int BigramListReadWriteUtils::getBigramAddressAndAdvancePosition(
-        const uint8_t *const bigramsBuf, const BigramFlags flags, int *const pos) {
-    int offset = 0;
-    const int origin = *pos;
-    switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) {
-        case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE:
-            offset = ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf, pos);
-            break;
-        case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES:
-            offset = ByteArrayUtils::readUint16AndAdvancePosition(bigramsBuf, pos);
-            break;
-        case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES:
-            offset = ByteArrayUtils::readUint24AndAdvancePosition(bigramsBuf, pos);
-            break;
-    }
-    if (offset == DynamicPatriciaTrieReadingUtils::DICT_OFFSET_INVALID) {
-        return NOT_A_DICT_POS;
-    } else if (offset == DynamicPatriciaTrieReadingUtils::DICT_OFFSET_ZERO_OFFSET) {
-        return origin;
-    }
-    if (isOffsetNegative(flags)) {
-        return origin - offset;
-    } else {
-        return origin + offset;
-    }
-}
-
-/* static */ bool BigramListReadWriteUtils::setHasNextFlag(
-        BufferWithExtendableBuffer *const buffer, const bool hasNext, const int entryPos) {
-    const bool usesAdditionalBuffer = buffer->isInAdditionalBuffer(entryPos);
-    int readingPos = entryPos;
-    if (usesAdditionalBuffer) {
-        readingPos -= buffer->getOriginalBufferSize();
-    }
-    BigramFlags bigramFlags = ByteArrayUtils::readUint8AndAdvancePosition(
-            buffer->getBuffer(usesAdditionalBuffer), &readingPos);
-    if (hasNext) {
-        bigramFlags = bigramFlags | FLAG_ATTRIBUTE_HAS_NEXT;
-    } else {
-        bigramFlags = bigramFlags & (~FLAG_ATTRIBUTE_HAS_NEXT);
-    }
-    int writingPos = entryPos;
-    return buffer->writeUintAndAdvancePosition(bigramFlags, 1 /* size */, &writingPos);
-}
-
-/* static */ bool BigramListReadWriteUtils::createAndWriteBigramEntry(
-        BufferWithExtendableBuffer *const buffer, const int targetPos, const int probability,
-        const bool hasNext, int *const writingPos) {
-    BigramFlags flags;
-    if (!createAndGetBigramFlags(*writingPos, targetPos, probability, hasNext, &flags)) {
-        return false;
-    }
-    return writeBigramEntry(buffer, flags, targetPos, writingPos);
-}
-
-/* static */ bool BigramListReadWriteUtils::writeBigramEntry(
-        BufferWithExtendableBuffer *const bufferToWrite, const BigramFlags flags,
-        const int targetPtNodePos, int *const writingPos) {
-    const int offset = getBigramTargetOffset(targetPtNodePos, *writingPos);
-    const BigramFlags flagsToWrite = (offset < 0) ?
-            (flags | FLAG_ATTRIBUTE_OFFSET_NEGATIVE) : (flags & ~FLAG_ATTRIBUTE_OFFSET_NEGATIVE);
-    if (!bufferToWrite->writeUintAndAdvancePosition(flagsToWrite, 1 /* size */, writingPos)) {
-        return false;
-    }
-    const uint32_t absOffest = abs(offset);
-    const int bigramTargetFieldSize = attributeAddressSize(flags);
-    return bufferToWrite->writeUintAndAdvancePosition(absOffest, bigramTargetFieldSize,
-            writingPos);
-}
-
-// Returns true if the bigram entry is valid and put entry flags into out*.
-/* static */ bool BigramListReadWriteUtils::createAndGetBigramFlags(const int entryPos,
-        const int targetPtNodePos, const int probability, const bool hasNext,
-        BigramFlags *const outBigramFlags) {
-    BigramFlags flags = probability & MASK_ATTRIBUTE_PROBABILITY;
-    if (hasNext) {
-        flags |= FLAG_ATTRIBUTE_HAS_NEXT;
-    }
-    const int offset = getBigramTargetOffset(targetPtNodePos, entryPos);
-    if (offset < 0) {
-        flags |= FLAG_ATTRIBUTE_OFFSET_NEGATIVE;
-    }
-    const uint32_t absOffest = abs(offset);
-    if ((absOffest >> 24) != 0) {
-        // Offset is too large.
-        return false;
-    } else if ((absOffest >> 16) != 0) {
-        flags |= FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES;
-    } else if ((absOffest >> 8) != 0) {
-        flags |= FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES;
-    } else {
-        flags |= FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE;
-    }
-    // Currently, all newly written bigram position fields are 3 bytes to simplify dictionary
-    // writing.
-    // TODO: Remove following 2 lines and optimize memory space.
-    flags = (flags & (~MASK_ATTRIBUTE_ADDRESS_TYPE)) | FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES;
-    *outBigramFlags = flags;
-    return true;
-}
-
-/* static */ int BigramListReadWriteUtils::getBigramTargetOffset(const int targetPtNodePos,
-        const int entryPos) {
-    if (targetPtNodePos == NOT_A_DICT_POS) {
-        return DynamicPatriciaTrieReadingUtils::DICT_OFFSET_INVALID;
-    } else {
-        const int offset = targetPtNodePos - (entryPos + 1 /* bigramFlagsField */);
-        if (offset == 0) {
-            return DynamicPatriciaTrieReadingUtils::DICT_OFFSET_ZERO_OFFSET;
-        } else {
-            return offset;
-        }
-    }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h b/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h
deleted file mode 100644
index eabe4e0..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_BIGRAM_LIST_READ_WRITE_UTILS_H
-#define LATINIME_BIGRAM_LIST_READ_WRITE_UTILS_H
-
-#include <cstdlib>
-#include <stdint.h>
-
-#include "defines.h"
-
-namespace latinime {
-
-class BufferWithExtendableBuffer;
-
-class BigramListReadWriteUtils {
-public:
-   typedef uint8_t BigramFlags;
-
-   static void getBigramEntryPropertiesAndAdvancePosition(const uint8_t *const bigramsBuf,
-           BigramFlags *const outBigramFlags, int *const outTargetPtNodePos,
-           int *const bigramEntryPos);
-
-   static AK_FORCE_INLINE int getProbabilityFromFlags(const BigramFlags flags) {
-       return flags & MASK_ATTRIBUTE_PROBABILITY;
-   }
-
-   static AK_FORCE_INLINE bool hasNext(const BigramFlags flags) {
-       return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0;
-   }
-
-   // Bigrams reading methods
-   static void skipExistingBigrams(const uint8_t *const bigramsBuf, int *const bigramListPos);
-
-   // Returns the size of the bigram position field that is stored in bigram flags.
-   static AK_FORCE_INLINE int attributeAddressSize(const BigramFlags flags) {
-       return (flags & MASK_ATTRIBUTE_ADDRESS_TYPE) >> ATTRIBUTE_ADDRESS_SHIFT;
-       /* Note: this is a value-dependant optimization of what may probably be
-          more readably written this way:
-          switch (flags * BinaryFormat::MASK_ATTRIBUTE_ADDRESS_TYPE) {
-          case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: return 1;
-          case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: return 2;
-          case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTE: return 3;
-          default: return 0;
-          }
-       */
-   }
-
-   static bool setHasNextFlag(BufferWithExtendableBuffer *const buffer,
-           const bool hasNext, const int entryPos);
-
-   static AK_FORCE_INLINE BigramFlags setProbabilityInFlags(const BigramFlags flags,
-           const int probability) {
-       return (flags & (~MASK_ATTRIBUTE_PROBABILITY)) | (probability & MASK_ATTRIBUTE_PROBABILITY);
-   }
-
-   static bool createAndWriteBigramEntry(BufferWithExtendableBuffer *const buffer,
-           const int targetPos, const int probability, const bool hasNext, int *const writingPos);
-
-   static bool writeBigramEntry(BufferWithExtendableBuffer *const buffer, const BigramFlags flags,
-           const int targetOffset, int *const writingPos);
-
-private:
-   DISALLOW_IMPLICIT_CONSTRUCTORS(BigramListReadWriteUtils);
-
-   static const BigramFlags MASK_ATTRIBUTE_ADDRESS_TYPE;
-   static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE;
-   static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES;
-   static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES;
-   static const BigramFlags FLAG_ATTRIBUTE_OFFSET_NEGATIVE;
-   static const BigramFlags FLAG_ATTRIBUTE_HAS_NEXT;
-   static const BigramFlags MASK_ATTRIBUTE_PROBABILITY;
-   static const int ATTRIBUTE_ADDRESS_SHIFT;
-
-   // Returns true if the bigram entry is valid and put entry flags into out*.
-   static bool createAndGetBigramFlags(const int entryPos, const int targetPos,
-           const int probability, const bool hasNext, BigramFlags *const outBigramFlags);
-
-   static AK_FORCE_INLINE bool isOffsetNegative(const BigramFlags flags) {
-       return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0;
-   }
-
-   static int getBigramAddressAndAdvancePosition(const uint8_t *const bigramsBuf,
-           const BigramFlags flags, int *const pos);
-
-   static int getBigramTargetOffset(const int targetPtNodePos, const int entryPos);
-};
-} // namespace latinime
-#endif // LATINIME_BIGRAM_LIST_READ_WRITE_UTILS_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.cpp
deleted file mode 100644
index b1170e2..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.cpp
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h"
-
-#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h"
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
-
-namespace latinime {
-
-const int DynamicBigramListPolicy::CONTINUING_BIGRAM_LINK_COUNT_LIMIT = 10000;
-const int DynamicBigramListPolicy::BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT = 100000;
-
-void DynamicBigramListPolicy::getNextBigram(int *const outBigramPos, int *const outProbability,
-        bool *const outHasNext, int *const bigramEntryPos) const {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*bigramEntryPos);
-    const uint8_t *const buffer = mBuffer->getBuffer(usesAdditionalBuffer);
-    if (usesAdditionalBuffer) {
-        *bigramEntryPos -= mBuffer->getOriginalBufferSize();
-    }
-    BigramListReadWriteUtils::BigramFlags bigramFlags;
-    int originalBigramPos;
-    BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(buffer, &bigramFlags,
-            &originalBigramPos, bigramEntryPos);
-    if (usesAdditionalBuffer && originalBigramPos != NOT_A_DICT_POS) {
-        originalBigramPos += mBuffer->getOriginalBufferSize();
-    }
-    *outProbability = BigramListReadWriteUtils::getProbabilityFromFlags(bigramFlags);
-    *outHasNext = BigramListReadWriteUtils::hasNext(bigramFlags);
-    if (mIsDecayingDict && !ForgettingCurveUtils::isValidEncodedProbability(*outProbability)) {
-        // This bigram is too weak to output.
-        *outBigramPos = NOT_A_DICT_POS;
-    } else {
-        *outBigramPos = followBigramLinkAndGetCurrentBigramPtNodePos(originalBigramPos);
-    }
-    if (usesAdditionalBuffer) {
-        *bigramEntryPos += mBuffer->getOriginalBufferSize();
-    }
-}
-
-void DynamicBigramListPolicy::skipAllBigrams(int *const bigramListPos) const {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*bigramListPos);
-    const uint8_t *const buffer = mBuffer->getBuffer(usesAdditionalBuffer);
-    if (usesAdditionalBuffer) {
-        *bigramListPos -= mBuffer->getOriginalBufferSize();
-    }
-    BigramListReadWriteUtils::skipExistingBigrams(buffer, bigramListPos);
-    if (usesAdditionalBuffer) {
-        *bigramListPos += mBuffer->getOriginalBufferSize();
-    }
-}
-
-bool DynamicBigramListPolicy::copyAllBigrams(BufferWithExtendableBuffer *const bufferToWrite,
-        int *const fromPos, int *const toPos, int *const outBigramsCount) const {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*fromPos);
-    if (usesAdditionalBuffer) {
-        *fromPos -= mBuffer->getOriginalBufferSize();
-    }
-    *outBigramsCount = 0;
-    BigramListReadWriteUtils::BigramFlags bigramFlags;
-    int bigramEntryCount = 0;
-    int lastWrittenEntryPos = NOT_A_DICT_POS;
-    do {
-        if (++bigramEntryCount > BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT) {
-            AKLOGE("Too many bigram entries. Entry count: %d, Limit: %d",
-                    bigramEntryCount, BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT);
-            ASSERT(false);
-            return false;
-        }
-        // The buffer address can be changed after calling buffer writing methods.
-        int originalBigramPos;
-        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
-                mBuffer->getBuffer(usesAdditionalBuffer), &bigramFlags, &originalBigramPos,
-                fromPos);
-        if (originalBigramPos == NOT_A_DICT_POS) {
-            // skip invalid bigram entry.
-            continue;
-        }
-        if (usesAdditionalBuffer) {
-            originalBigramPos += mBuffer->getOriginalBufferSize();
-        }
-        const int bigramPos = followBigramLinkAndGetCurrentBigramPtNodePos(originalBigramPos);
-        if (bigramPos == NOT_A_DICT_POS) {
-            // Target PtNode has been invalidated.
-            continue;
-        }
-        lastWrittenEntryPos = *toPos;
-        if (!BigramListReadWriteUtils::createAndWriteBigramEntry(bufferToWrite, bigramPos,
-                BigramListReadWriteUtils::getProbabilityFromFlags(bigramFlags),
-                BigramListReadWriteUtils::hasNext(bigramFlags), toPos)) {
-            return false;
-        }
-        (*outBigramsCount)++;
-    } while(BigramListReadWriteUtils::hasNext(bigramFlags));
-    // Makes the last entry the terminal of the list. Updates the flags.
-    if (lastWrittenEntryPos != NOT_A_DICT_POS) {
-        if (!BigramListReadWriteUtils::setHasNextFlag(bufferToWrite, false /* hasNext */,
-                lastWrittenEntryPos)) {
-            return false;
-        }
-    }
-    if (usesAdditionalBuffer) {
-        *fromPos += mBuffer->getOriginalBufferSize();
-    }
-    return true;
-}
-
-// Finding useless bigram entries and remove them. Bigram entry is useless when the target PtNode
-// has been deleted or is not a valid terminal.
-bool DynamicBigramListPolicy::updateAllBigramEntriesAndDeleteUselessEntries(
-        int *const bigramListPos, int *const outValidBigramEntryCount) {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*bigramListPos);
-    if (usesAdditionalBuffer) {
-        *bigramListPos -= mBuffer->getOriginalBufferSize();
-    }
-    DynamicPatriciaTrieNodeReader nodeReader(mBuffer, this /* bigramsPolicy */, mShortcutPolicy);
-    BigramListReadWriteUtils::BigramFlags bigramFlags;
-    int bigramEntryCount = 0;
-    do {
-        if (++bigramEntryCount > BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT) {
-            AKLOGE("Too many bigram entries. Entry count: %d, Limit: %d",
-                    bigramEntryCount, BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT);
-            ASSERT(false);
-            return false;
-        }
-        int bigramEntryPos = *bigramListPos;
-        int originalBigramPos;
-        // The buffer address can be changed after calling buffer writing methods.
-        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
-                mBuffer->getBuffer(usesAdditionalBuffer), &bigramFlags, &originalBigramPos,
-                bigramListPos);
-        if (usesAdditionalBuffer) {
-            bigramEntryPos += mBuffer->getOriginalBufferSize();
-        }
-        if (originalBigramPos == NOT_A_DICT_POS) {
-            // This entry has already been removed.
-            continue;
-        }
-        if (usesAdditionalBuffer) {
-            originalBigramPos += mBuffer->getOriginalBufferSize();
-        }
-        const int bigramTargetNodePos =
-                followBigramLinkAndGetCurrentBigramPtNodePos(originalBigramPos);
-        nodeReader.fetchNodeInfoInBufferFromPtNodePos(bigramTargetNodePos);
-        if (nodeReader.isDeleted() || !nodeReader.isTerminal()
-                || bigramTargetNodePos == NOT_A_DICT_POS) {
-            // The target is no longer valid terminal. Invalidate the current bigram entry.
-            if (!BigramListReadWriteUtils::writeBigramEntry(mBuffer, bigramFlags,
-                    NOT_A_DICT_POS /* targetPtNodePos */, &bigramEntryPos)) {
-                return false;
-            }
-            continue;
-        }
-        bool isRemoved = false;
-        if (!updateProbabilityForDecay(bigramFlags, bigramTargetNodePos, &bigramEntryPos,
-                &isRemoved)) {
-            return false;
-        }
-        if (!isRemoved) {
-            (*outValidBigramEntryCount) += 1;
-        }
-    } while(BigramListReadWriteUtils::hasNext(bigramFlags));
-    return true;
-}
-
-// Updates bigram target PtNode positions in the list after the placing step in GC.
-bool DynamicBigramListPolicy::updateAllBigramTargetPtNodePositions(int *const bigramListPos,
-        const DynamicPatriciaTrieWritingHelper::PtNodePositionRelocationMap *const
-                ptNodePositionRelocationMap, int *const outBigramEntryCount) {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*bigramListPos);
-    if (usesAdditionalBuffer) {
-        *bigramListPos -= mBuffer->getOriginalBufferSize();
-    }
-    BigramListReadWriteUtils::BigramFlags bigramFlags;
-    int bigramEntryCount = 0;
-    do {
-        if (++bigramEntryCount > BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT) {
-            AKLOGE("Too many bigram entries. Entry count: %d, Limit: %d",
-                    bigramEntryCount, BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT);
-            ASSERT(false);
-            return false;
-        }
-        int bigramEntryPos = *bigramListPos;
-        if (usesAdditionalBuffer) {
-            bigramEntryPos += mBuffer->getOriginalBufferSize();
-        }
-        int bigramTargetPtNodePos;
-        // The buffer address can be changed after calling buffer writing methods.
-        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
-                mBuffer->getBuffer(usesAdditionalBuffer), &bigramFlags, &bigramTargetPtNodePos,
-                bigramListPos);
-        if (bigramTargetPtNodePos == NOT_A_DICT_POS) {
-            continue;
-        }
-        if (usesAdditionalBuffer) {
-            bigramTargetPtNodePos += mBuffer->getOriginalBufferSize();
-        }
-
-        DynamicPatriciaTrieWritingHelper::PtNodePositionRelocationMap::const_iterator it =
-                ptNodePositionRelocationMap->find(bigramTargetPtNodePos);
-        if (it != ptNodePositionRelocationMap->end()) {
-            bigramTargetPtNodePos = it->second;
-        } else {
-            bigramTargetPtNodePos = NOT_A_DICT_POS;
-        }
-        if (!BigramListReadWriteUtils::writeBigramEntry(mBuffer, bigramFlags,
-                bigramTargetPtNodePos, &bigramEntryPos)) {
-            return false;
-        }
-    } while(BigramListReadWriteUtils::hasNext(bigramFlags));
-    (*outBigramEntryCount) = bigramEntryCount;
-    return true;
-}
-
-bool DynamicBigramListPolicy::addNewBigramEntryToBigramList(const int bigramTargetPos,
-        const int probability, int *const bigramListPos, bool *const outAddedNewBigram) {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*bigramListPos);
-    if (usesAdditionalBuffer) {
-        *bigramListPos -= mBuffer->getOriginalBufferSize();
-    }
-    BigramListReadWriteUtils::BigramFlags bigramFlags;
-    int bigramEntryCount = 0;
-    do {
-        if (++bigramEntryCount > BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT) {
-            AKLOGE("Too many bigram entries. Entry count: %d, Limit: %d",
-                    bigramEntryCount, BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT);
-            ASSERT(false);
-            return false;
-        }
-        int entryPos = *bigramListPos;
-        if (usesAdditionalBuffer) {
-            entryPos += mBuffer->getOriginalBufferSize();
-        }
-        int originalBigramPos;
-        // The buffer address can be changed after calling buffer writing methods.
-        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
-                mBuffer->getBuffer(usesAdditionalBuffer), &bigramFlags, &originalBigramPos,
-                bigramListPos);
-        if (usesAdditionalBuffer && originalBigramPos != NOT_A_DICT_POS) {
-            originalBigramPos += mBuffer->getOriginalBufferSize();
-        }
-        if (followBigramLinkAndGetCurrentBigramPtNodePos(originalBigramPos) == bigramTargetPos) {
-            // Update this bigram entry.
-            *outAddedNewBigram = false;
-            const int originalProbability = BigramListReadWriteUtils::getProbabilityFromFlags(
-                    bigramFlags);
-            const int probabilityToWrite = mIsDecayingDict ?
-                    ForgettingCurveUtils::getUpdatedEncodedProbability(originalProbability,
-                            probability) : probability;
-            const BigramListReadWriteUtils::BigramFlags updatedFlags =
-                    BigramListReadWriteUtils::setProbabilityInFlags(bigramFlags,
-                            probabilityToWrite);
-            return BigramListReadWriteUtils::writeBigramEntry(mBuffer, updatedFlags,
-                    originalBigramPos, &entryPos);
-        }
-        if (BigramListReadWriteUtils::hasNext(bigramFlags)) {
-            continue;
-        }
-        // The current last entry is found.
-        // First, update the flags of the last entry.
-        if (!BigramListReadWriteUtils::setHasNextFlag(mBuffer, true /* hasNext */, entryPos)) {
-            *outAddedNewBigram = false;
-            return false;
-        }
-        if (usesAdditionalBuffer) {
-            *bigramListPos += mBuffer->getOriginalBufferSize();
-        }
-        // Then, add a new entry after the last entry.
-        *outAddedNewBigram = true;
-        return writeNewBigramEntry(bigramTargetPos, probability, bigramListPos);
-    } while(BigramListReadWriteUtils::hasNext(bigramFlags));
-    // We return directly from the while loop.
-    ASSERT(false);
-    return false;
-}
-
-bool DynamicBigramListPolicy::writeNewBigramEntry(const int bigramTargetPos, const int probability,
-        int *const writingPos) {
-    // hasNext is false because we are adding a new bigram entry at the end of the bigram list.
-    const int probabilityToWrite = mIsDecayingDict ?
-            ForgettingCurveUtils::getUpdatedEncodedProbability(NOT_A_PROBABILITY, probability) :
-                    probability;
-    return BigramListReadWriteUtils::createAndWriteBigramEntry(mBuffer, bigramTargetPos,
-            probabilityToWrite, false /* hasNext */, writingPos);
-}
-
-bool DynamicBigramListPolicy::removeBigram(const int bigramListPos, const int bigramTargetPos) {
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(bigramListPos);
-    int pos = bigramListPos;
-    if (usesAdditionalBuffer) {
-        pos -= mBuffer->getOriginalBufferSize();
-    }
-    BigramListReadWriteUtils::BigramFlags bigramFlags;
-    int bigramEntryCount = 0;
-    do {
-        if (++bigramEntryCount > BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT) {
-            AKLOGE("Too many bigram entries. Entry count: %d, Limit: %d",
-                    bigramEntryCount, BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT);
-            ASSERT(false);
-            return false;
-        }
-        int bigramEntryPos = pos;
-        int originalBigramPos;
-        // The buffer address can be changed after calling buffer writing methods.
-        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
-                mBuffer->getBuffer(usesAdditionalBuffer), &bigramFlags, &originalBigramPos, &pos);
-        if (usesAdditionalBuffer) {
-            bigramEntryPos += mBuffer->getOriginalBufferSize();
-        }
-        if (usesAdditionalBuffer && originalBigramPos != NOT_A_DICT_POS) {
-            originalBigramPos += mBuffer->getOriginalBufferSize();
-        }
-        const int bigramPos = followBigramLinkAndGetCurrentBigramPtNodePos(originalBigramPos);
-        if (bigramPos != bigramTargetPos) {
-            continue;
-        }
-        // Target entry is found. Write an invalid target position to mark the bigram invalid.
-        return BigramListReadWriteUtils::writeBigramEntry(mBuffer, bigramFlags,
-                NOT_A_DICT_POS /* targetOffset */, &bigramEntryPos);
-    } while(BigramListReadWriteUtils::hasNext(bigramFlags));
-    return false;
-}
-
-int DynamicBigramListPolicy::followBigramLinkAndGetCurrentBigramPtNodePos(
-        const int originalBigramPos) const {
-    if (originalBigramPos == NOT_A_DICT_POS) {
-        return NOT_A_DICT_POS;
-    }
-    int currentPos = originalBigramPos;
-    DynamicPatriciaTrieNodeReader nodeReader(mBuffer, this /* bigramsPolicy */, mShortcutPolicy);
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(currentPos);
-    int bigramLinkCount = 0;
-    while (nodeReader.getBigramLinkedNodePos() != NOT_A_DICT_POS) {
-        currentPos = nodeReader.getBigramLinkedNodePos();
-        nodeReader.fetchNodeInfoInBufferFromPtNodePos(currentPos);
-        bigramLinkCount++;
-        if (bigramLinkCount > CONTINUING_BIGRAM_LINK_COUNT_LIMIT) {
-            AKLOGE("Bigram link is invalid. start position: %d", originalBigramPos);
-            ASSERT(false);
-            return NOT_A_DICT_POS;
-        }
-    }
-    return currentPos;
-}
-
-bool DynamicBigramListPolicy::updateProbabilityForDecay(
-        const BigramListReadWriteUtils::BigramFlags bigramFlags, const int targetPtNodePos,
-        int *const bigramEntryPos, bool *const outRemoved) const {
-    *outRemoved = false;
-    if (mIsDecayingDict) {
-        // Update bigram probability for decaying.
-        const int newProbability = ForgettingCurveUtils::getEncodedProbabilityToSave(
-                BigramListReadWriteUtils::getProbabilityFromFlags(bigramFlags), mHeaderPolicy);
-        if (ForgettingCurveUtils::isValidEncodedProbability(newProbability)) {
-            // Write new probability.
-            const BigramListReadWriteUtils::BigramFlags updatedBigramFlags =
-                    BigramListReadWriteUtils::setProbabilityInFlags(
-                            bigramFlags, newProbability);
-            if (!BigramListReadWriteUtils::writeBigramEntry(mBuffer, updatedBigramFlags,
-                    targetPtNodePos, bigramEntryPos)) {
-                return false;
-            }
-        } else {
-            // Remove current bigram entry.
-            *outRemoved = true;
-            if (!BigramListReadWriteUtils::writeBigramEntry(mBuffer, bigramFlags,
-                    NOT_A_DICT_POS /* targetPtNodePos */, bigramEntryPos)) {
-                return false;
-            }
-        }
-    }
-    return true;
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h
deleted file mode 100644
index 0504b59..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_BIGRAM_LIST_POLICY_H
-#define LATINIME_DYNAMIC_BIGRAM_LIST_POLICY_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_read_write_utils.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h"
-
-namespace latinime {
-
-class BufferWithExtendableBuffer;
-class DictionaryHeaderStructurePolicy;
-class DictionaryShortcutsStructurePolicy;
-
-/*
- * This is a dynamic version of BigramListPolicy and supports an additional buffer.
- */
-class DynamicBigramListPolicy : public DictionaryBigramsStructurePolicy {
- public:
-    DynamicBigramListPolicy(const DictionaryHeaderStructurePolicy *const headerPolicy,
-            BufferWithExtendableBuffer *const buffer,
-            const DictionaryShortcutsStructurePolicy *const shortcutPolicy,
-            const bool isDecayingDict)
-            : mHeaderPolicy(headerPolicy), mBuffer(buffer), mShortcutPolicy(shortcutPolicy),
-              mIsDecayingDict(isDecayingDict) {}
-
-    ~DynamicBigramListPolicy() {}
-
-    void getNextBigram(int *const outBigramPos, int *const outProbability, bool *const outHasNext,
-            int *const bigramEntryPos) const;
-
-    void skipAllBigrams(int *const bigramListPos) const;
-
-    // Copy bigrams from the bigram list that starts at fromPos in mBuffer to toPos in
-    // bufferToWrite and advance these positions after bigram lists. This method skips invalid
-    // bigram entries and write the valid bigram entry count to outBigramsCount.
-    bool copyAllBigrams(BufferWithExtendableBuffer *const bufferToWrite, int *const fromPos,
-            int *const toPos, int *const outBigramsCount) const;
-
-    bool updateAllBigramEntriesAndDeleteUselessEntries(int *const bigramListPos,
-            int *const outBigramEntryCount);
-
-    bool updateAllBigramTargetPtNodePositions(int *const bigramListPos,
-            const DynamicPatriciaTrieWritingHelper::PtNodePositionRelocationMap *const
-                    ptNodePositionRelocationMap, int *const outValidBigramEntryCount);
-
-    bool addNewBigramEntryToBigramList(const int bigramTargetPos, const int probability,
-            int *const bigramListPos, bool *const outAddedNewBigram);
-
-    bool writeNewBigramEntry(const int bigramTargetPos, const int probability,
-            int *const writingPos);
-
-    // Return whether or not targetBigramPos is found.
-    bool removeBigram(const int bigramListPos, const int bigramTargetPos);
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicBigramListPolicy);
-
-    static const int CONTINUING_BIGRAM_LINK_COUNT_LIMIT;
-    static const int BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT;
-
-    const DictionaryHeaderStructurePolicy *const mHeaderPolicy;
-    BufferWithExtendableBuffer *const mBuffer;
-    const DictionaryShortcutsStructurePolicy *const mShortcutPolicy;
-    const bool mIsDecayingDict;
-
-    // Follow bigram link and return the position of bigram target PtNode that is currently valid.
-    int followBigramLinkAndGetCurrentBigramPtNodePos(const int originalBigramPos) const;
-
-    bool updateProbabilityForDecay(const BigramListReadWriteUtils::BigramFlags bigramFlags,
-            const int targetPtNodePos, int *const bigramEntryPos, bool *const outRemoved) const;
-};
-} // namespace latinime
-#endif // LATINIME_DYNAMIC_BIGRAM_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.cpp b/native/jni/src/suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.cpp
deleted file mode 100644
index ff80dd2..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.h"
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h"
-#include "suggest/policyimpl/dictionary/patricia_trie_policy.h"
-#include "suggest/policyimpl/dictionary/utils/format_utils.h"
-#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
-
-namespace latinime {
-
-/* static */ DictionaryStructureWithBufferPolicy *DictionaryStructureWithBufferPolicyFactory
-        ::newDictionaryStructureWithBufferPolicy(const char *const path, const int bufOffset,
-                const int size, const bool isUpdatable) {
-    // Allocated buffer in MmapedBuffer::openBuffer() will be freed in the destructor of
-    // impl classes of DictionaryStructureWithBufferPolicy.
-    const MmappedBuffer *const mmapedBuffer = MmappedBuffer::openBuffer(path, bufOffset, size,
-            isUpdatable);
-    if (!mmapedBuffer) {
-        return 0;
-    }
-    switch (FormatUtils::detectFormatVersion(mmapedBuffer->getBuffer(),
-            mmapedBuffer->getBufferSize())) {
-        case FormatUtils::VERSION_2:
-            return new PatriciaTriePolicy(mmapedBuffer);
-        case FormatUtils::VERSION_3:
-            return new DynamicPatriciaTriePolicy(mmapedBuffer);
-        default:
-            AKLOGE("DICT: dictionary format is unknown, bad magic number");
-            delete mmapedBuffer;
-            ASSERT(false);
-            return 0;
-    }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.h b/native/jni/src/suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.h
deleted file mode 100644
index 8cebc3b..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dictionary_structure_with_buffer_policy_factory.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DICTIONARY_STRUCTURE_WITH_BUFFER_POLICY_FACTORY_H
-#define LATINIME_DICTIONARY_STRUCTURE_WITH_BUFFER_POLICY_FACTORY_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-
-namespace latinime {
-
-class DictionaryStructureWithBufferPolicyFactory {
- public:
-    static DictionaryStructureWithBufferPolicy *newDictionaryStructureWithBufferPolicy(
-            const char *const path, const int bufOffset, const int size, const bool isUpdatable);
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DictionaryStructureWithBufferPolicyFactory);
-};
-} // namespace latinime
-#endif // LATINIME_DICTIONARY_STRUCTURE_WITH_BUFFER_POLICY_FACTORY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.cpp
deleted file mode 100644
index 5724c5d..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.h"
-
-#include "suggest/core/policy/dictionary_header_structure_policy.h"
-#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
-
-namespace latinime {
-
-bool DynamicPatriciaTrieGcEventListeners
-        ::TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
-                ::onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                        const int *const nodeCodePoints) {
-    // PtNode is useless when the PtNode is not a terminal and doesn't have any not useless
-    // children.
-    bool isUselessPtNode = !node->isTerminal();
-    if (node->isTerminal() && mIsDecayingDict) {
-        const int newProbability =
-                ForgettingCurveUtils::getEncodedProbabilityToSave(node->getProbability(),
-                        mHeaderPolicy);
-        int writingPos = node->getProbabilityFieldPos();
-        // Update probability.
-        if (!DynamicPatriciaTrieWritingUtils::writeProbabilityAndAdvancePosition(
-                mBuffer, newProbability, &writingPos)) {
-            return false;
-        }
-        if (!ForgettingCurveUtils::isValidEncodedProbability(newProbability)) {
-            isUselessPtNode = true;
-        }
-    }
-    if (mChildrenValue > 0) {
-        isUselessPtNode = false;
-    } else if (node->isTerminal()) {
-        // Remove children as all children are useless.
-        int writingPos = node->getChildrenPosFieldPos();
-        if (!DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(
-                mBuffer, NOT_A_DICT_POS /* childrenPosition */, &writingPos)) {
-            return false;
-        }
-    }
-    if (isUselessPtNode) {
-        // Current PtNode is no longer needed. Mark it as deleted.
-        if (!mWritingHelper->markNodeAsDeleted(node)) {
-            return false;
-        }
-    } else {
-        mValueStack.back() += 1;
-        if (node->isTerminal()) {
-            mValidUnigramCount += 1;
-        }
-    }
-    return true;
-}
-
-bool DynamicPatriciaTrieGcEventListeners::TraversePolicyToUpdateBigramProbability
-        ::onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints) {
-    if (!node->isDeleted()) {
-        int pos = node->getBigramsPos();
-        if (pos != NOT_A_DICT_POS) {
-            int bigramEntryCount = 0;
-            if (!mBigramPolicy->updateAllBigramEntriesAndDeleteUselessEntries(&pos,
-                    &bigramEntryCount)) {
-                return false;
-            }
-            mValidBigramEntryCount += bigramEntryCount;
-        }
-    }
-    return true;
-}
-
-// Writes dummy PtNode array size when the head of PtNode array is read.
-bool DynamicPatriciaTrieGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
-        ::onDescend(const int ptNodeArrayPos) {
-    mValidPtNodeCount = 0;
-    int writingPos = mBufferToWrite->getTailPosition();
-    mDictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.insert(
-            DynamicPatriciaTrieWritingHelper::PtNodeArrayPositionRelocationMap::value_type(
-                    ptNodeArrayPos, writingPos));
-    // Writes dummy PtNode array size because arrays can have a forward link or needles PtNodes.
-    // This field will be updated later in onReadingPtNodeArrayTail() with actual PtNode count.
-    mPtNodeArraySizeFieldPos = writingPos;
-    return DynamicPatriciaTrieWritingUtils::writePtNodeArraySizeAndAdvancePosition(
-            mBufferToWrite, 0 /* arraySize */, &writingPos);
-}
-
-// Write PtNode array terminal and actual PtNode array size.
-bool DynamicPatriciaTrieGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
-        ::onReadingPtNodeArrayTail() {
-    int writingPos = mBufferToWrite->getTailPosition();
-    // Write PtNode array terminal.
-    if (!DynamicPatriciaTrieWritingUtils::writeForwardLinkPositionAndAdvancePosition(
-            mBufferToWrite, NOT_A_DICT_POS /* forwardLinkPos */, &writingPos)) {
-        return false;
-    }
-    // Write actual PtNode array size.
-    if (!DynamicPatriciaTrieWritingUtils::writePtNodeArraySizeAndAdvancePosition(
-            mBufferToWrite, mValidPtNodeCount, &mPtNodeArraySizeFieldPos)) {
-        return false;
-    }
-    return true;
-}
-
-// Write valid PtNode to buffer and memorize mapping from the old position to the new position.
-bool DynamicPatriciaTrieGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
-        ::onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints) {
-    if (node->isDeleted()) {
-        // Current PtNode is not written in new buffer because it has been deleted.
-        mDictPositionRelocationMap->mPtNodePositionRelocationMap.insert(
-                DynamicPatriciaTrieWritingHelper::PtNodePositionRelocationMap::value_type(
-                        node->getHeadPos(), NOT_A_DICT_POS));
-        return true;
-    }
-    int writingPos = mBufferToWrite->getTailPosition();
-    mDictPositionRelocationMap->mPtNodePositionRelocationMap.insert(
-            DynamicPatriciaTrieWritingHelper::PtNodePositionRelocationMap::value_type(
-                    node->getHeadPos(), writingPos));
-    mValidPtNodeCount++;
-    // Writes current PtNode.
-    return mWritingHelper->writePtNodeToBufferByCopyingPtNodeInfo(mBufferToWrite, node,
-            node->getParentPos(), nodeCodePoints, node->getCodePointCount(),
-            node->getProbability(), &writingPos);
-}
-
-bool DynamicPatriciaTrieGcEventListeners::TraversePolicyToUpdateAllPositionFields
-        ::onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints) {
-    // Updates parent position.
-    int parentPos = node->getParentPos();
-    if (parentPos != NOT_A_DICT_POS) {
-        DynamicPatriciaTrieWritingHelper::PtNodePositionRelocationMap::const_iterator it =
-                mDictPositionRelocationMap->mPtNodePositionRelocationMap.find(parentPos);
-        if (it != mDictPositionRelocationMap->mPtNodePositionRelocationMap.end()) {
-            parentPos = it->second;
-        }
-    }
-    int writingPos = node->getHeadPos() + DynamicPatriciaTrieWritingUtils::NODE_FLAG_FIELD_SIZE;
-    // Write updated parent offset.
-    if (!DynamicPatriciaTrieWritingUtils::writeParentPosOffsetAndAdvancePosition(mBufferToWrite,
-            parentPos, node->getHeadPos(), &writingPos)) {
-        return false;
-    }
-
-    // Updates children position.
-    int childrenPos = node->getChildrenPos();
-    if (childrenPos != NOT_A_DICT_POS) {
-        DynamicPatriciaTrieWritingHelper::PtNodeArrayPositionRelocationMap::const_iterator it =
-                mDictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.find(childrenPos);
-        if (it != mDictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.end()) {
-            childrenPos = it->second;
-        }
-    }
-    writingPos = node->getChildrenPosFieldPos();
-    if (!DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(mBufferToWrite,
-            childrenPos, &writingPos)) {
-        return false;
-    }
-
-    // Updates bigram target PtNode positions in the bigram list.
-    int bigramsPos = node->getBigramsPos();
-    if (bigramsPos != NOT_A_DICT_POS) {
-        int bigramEntryCount;
-        if (!mBigramPolicy->updateAllBigramTargetPtNodePositions(&bigramsPos,
-                &mDictPositionRelocationMap->mPtNodePositionRelocationMap, &bigramEntryCount)) {
-            return false;
-        }
-        mBigramCount += bigramEntryCount;
-    }
-    if (node->isTerminal()) {
-        mUnigramCount++;
-    }
-
-    return true;
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.h
deleted file mode 100644
index 9755120..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_GC_EVENT_LISTENERS_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_GC_EVENT_LISTENERS_H
-
-#include <vector>
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h"
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-#include "utils/hash_map_compat.h"
-
-namespace latinime {
-
-class DictionaryHeaderStructurePolicy;
-
-class DynamicPatriciaTrieGcEventListeners {
- public:
-    // Updates all PtNodes that can be reached from the root. Checks if each PtNode is useless or
-    // not and marks useless PtNodes as deleted. Such deleted PtNodes will be discarded in the GC.
-    // TODO: Concatenate non-terminal PtNodes.
-    class TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
-        : public DynamicPatriciaTrieReadingHelper::TraversingEventListener {
-     public:
-        TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted(
-                const DictionaryHeaderStructurePolicy *const headerPolicy,
-                DynamicPatriciaTrieWritingHelper *const writingHelper,
-                BufferWithExtendableBuffer *const buffer, const bool isDecayingDict)
-                : mHeaderPolicy(headerPolicy), mWritingHelper(writingHelper), mBuffer(buffer),
-                  mIsDecayingDict(isDecayingDict), mValueStack(), mChildrenValue(0),
-                  mValidUnigramCount(0) {}
-
-        ~TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted() {};
-
-        bool onAscend() {
-            if (mValueStack.empty()) {
-                return false;
-            }
-            mChildrenValue = mValueStack.back();
-            mValueStack.pop_back();
-            return true;
-        }
-
-        bool onDescend(const int ptNodeArrayPos) {
-            mValueStack.push_back(0);
-            mChildrenValue = 0;
-            return true;
-        }
-
-        bool onReadingPtNodeArrayTail() { return true; }
-
-        bool onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints);
-
-        int getValidUnigramCount() const {
-            return mValidUnigramCount;
-        }
-
-     private:
-        DISALLOW_IMPLICIT_CONSTRUCTORS(
-                TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted);
-
-        const DictionaryHeaderStructurePolicy *const mHeaderPolicy;
-        DynamicPatriciaTrieWritingHelper *const mWritingHelper;
-        BufferWithExtendableBuffer *const mBuffer;
-        const bool mIsDecayingDict;
-        std::vector<int> mValueStack;
-        int mChildrenValue;
-        int mValidUnigramCount;
-    };
-
-    // Updates all bigram entries that are held by valid PtNodes. This removes useless bigram
-    // entries.
-    class TraversePolicyToUpdateBigramProbability
-            : public DynamicPatriciaTrieReadingHelper::TraversingEventListener {
-     public:
-        TraversePolicyToUpdateBigramProbability(
-                DynamicBigramListPolicy *const bigramPolicy)
-                : mBigramPolicy(bigramPolicy), mValidBigramEntryCount(0) {}
-
-        bool onAscend() { return true; }
-
-        bool onDescend(const int ptNodeArrayPos) { return true; }
-
-        bool onReadingPtNodeArrayTail() { return true; }
-
-        bool onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints);
-
-        int getValidBigramEntryCount() const {
-            return mValidBigramEntryCount;
-        }
-
-     private:
-        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToUpdateBigramProbability);
-
-        DynamicBigramListPolicy *const mBigramPolicy;
-        int mValidBigramEntryCount;
-    };
-
-    class TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
-            : public DynamicPatriciaTrieReadingHelper::TraversingEventListener {
-     public:
-        TraversePolicyToPlaceAndWriteValidPtNodesToBuffer(
-                DynamicPatriciaTrieWritingHelper *const writingHelper,
-                BufferWithExtendableBuffer *const bufferToWrite,
-                DynamicPatriciaTrieWritingHelper::DictPositionRelocationMap *const
-                        dictPositionRelocationMap)
-                : mWritingHelper(writingHelper), mBufferToWrite(bufferToWrite),
-                  mDictPositionRelocationMap(dictPositionRelocationMap), mValidPtNodeCount(0),
-                  mPtNodeArraySizeFieldPos(NOT_A_DICT_POS) {};
-
-        bool onAscend() { return true; }
-
-        bool onDescend(const int ptNodeArrayPos);
-
-        bool onReadingPtNodeArrayTail();
-
-        bool onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints);
-
-     private:
-        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToPlaceAndWriteValidPtNodesToBuffer);
-
-        DynamicPatriciaTrieWritingHelper *const mWritingHelper;
-        BufferWithExtendableBuffer *const mBufferToWrite;
-        DynamicPatriciaTrieWritingHelper::DictPositionRelocationMap *const
-                mDictPositionRelocationMap;
-        int mValidPtNodeCount;
-        int mPtNodeArraySizeFieldPos;
-    };
-
-    class TraversePolicyToUpdateAllPositionFields
-            : public DynamicPatriciaTrieReadingHelper::TraversingEventListener {
-     public:
-        TraversePolicyToUpdateAllPositionFields(
-                DynamicPatriciaTrieWritingHelper *const writingHelper,
-                DynamicBigramListPolicy *const bigramPolicy,
-                BufferWithExtendableBuffer *const bufferToWrite,
-                const DynamicPatriciaTrieWritingHelper::DictPositionRelocationMap *const
-                        dictPositionRelocationMap)
-                : mWritingHelper(writingHelper), mBigramPolicy(bigramPolicy),
-                  mBufferToWrite(bufferToWrite),
-                  mDictPositionRelocationMap(dictPositionRelocationMap), mUnigramCount(0),
-                  mBigramCount(0) {};
-
-        bool onAscend() { return true; }
-
-        bool onDescend(const int ptNodeArrayPos) { return true; }
-
-        bool onReadingPtNodeArrayTail() { return true; }
-
-        bool onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints);
-
-        int getUnigramCount() const {
-            return mUnigramCount;
-        }
-
-        int getBigramCount() const {
-            return mBigramCount;
-        }
-
-     private:
-        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToUpdateAllPositionFields);
-
-        DynamicPatriciaTrieWritingHelper *const mWritingHelper;
-        DynamicBigramListPolicy *const mBigramPolicy;
-        BufferWithExtendableBuffer *const mBufferToWrite;
-        const DynamicPatriciaTrieWritingHelper::DictPositionRelocationMap *const
-                mDictPositionRelocationMap;
-        int mUnigramCount;
-        int mBigramCount;
-    };
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPatriciaTrieGcEventListeners);
-};
-} // namespace latinime
-#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_GC_EVENT_LISTENERS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp
deleted file mode 100644
index 2fa3111..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h"
-
-#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
-#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-
-namespace latinime {
-
-void DynamicPatriciaTrieNodeReader::fetchPtNodeInfoFromBufferAndProcessMovedPtNode(
-        const int ptNodePos, const int maxCodePointCount, int *const outCodePoints) {
-    if (ptNodePos < 0 || ptNodePos >= mBuffer->getTailPosition()) {
-        // Reading invalid position because of bug or broken dictionary.
-        AKLOGE("Fetching PtNode info from invalid dictionary position: %d, dictionary size: %d",
-                ptNodePos, mBuffer->getTailPosition());
-        ASSERT(false);
-        invalidatePtNodeInfo();
-        return;
-    }
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(ptNodePos);
-    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
-    int pos = ptNodePos;
-    mHeadPos = ptNodePos;
-    if (usesAdditionalBuffer) {
-        pos -= mBuffer->getOriginalBufferSize();
-    }
-    mFlags = PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
-    const int parentPosOffset =
-            DynamicPatriciaTrieReadingUtils::getParentPtNodePosOffsetAndAdvancePosition(dictBuf,
-                    &pos);
-    mParentPos = DynamicPatriciaTrieReadingUtils::getParentPtNodePos(parentPosOffset, mHeadPos);
-    if (outCodePoints != 0) {
-        mCodePointCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition(
-                dictBuf, mFlags, maxCodePointCount, outCodePoints, &pos);
-    } else {
-        mCodePointCount = PatriciaTrieReadingUtils::skipCharacters(
-                dictBuf, mFlags, MAX_WORD_LENGTH, &pos);
-    }
-    if (isTerminal()) {
-        mProbabilityFieldPos = pos;
-        if (usesAdditionalBuffer) {
-            mProbabilityFieldPos += mBuffer->getOriginalBufferSize();
-        }
-        mProbability = PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(dictBuf, &pos);
-    } else {
-        mProbabilityFieldPos = NOT_A_DICT_POS;
-        mProbability = NOT_A_PROBABILITY;
-    }
-    mChildrenPosFieldPos = pos;
-    if (usesAdditionalBuffer) {
-        mChildrenPosFieldPos += mBuffer->getOriginalBufferSize();
-    }
-    mChildrenPos = DynamicPatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
-            dictBuf, &pos);
-    if (usesAdditionalBuffer && mChildrenPos != NOT_A_DICT_POS) {
-        mChildrenPos += mBuffer->getOriginalBufferSize();
-    }
-    if (mSiblingPos == NOT_A_DICT_POS) {
-        if (DynamicPatriciaTrieReadingUtils::isMoved(mFlags)) {
-            mBigramLinkedNodePos = mChildrenPos;
-        } else {
-            mBigramLinkedNodePos = NOT_A_DICT_POS;
-        }
-    }
-    if (usesAdditionalBuffer) {
-        pos += mBuffer->getOriginalBufferSize();
-    }
-    if (PatriciaTrieReadingUtils::hasShortcutTargets(mFlags)) {
-        mShortcutPos = pos;
-        mShortcutsPolicy->skipAllShortcuts(&pos);
-    } else {
-        mShortcutPos = NOT_A_DICT_POS;
-    }
-    if (PatriciaTrieReadingUtils::hasBigrams(mFlags)) {
-        mBigramPos = pos;
-        mBigramsPolicy->skipAllBigrams(&pos);
-    } else {
-        mBigramPos = NOT_A_DICT_POS;
-    }
-    // Update siblingPos if needed.
-    if (mSiblingPos == NOT_A_DICT_POS) {
-        // Sibling position is the tail position of current node.
-        mSiblingPos = pos;
-    }
-    // Read destination node if the read node is a moved node.
-    if (DynamicPatriciaTrieReadingUtils::isMoved(mFlags)) {
-        // The destination position is stored at the same place as the parent position.
-        fetchPtNodeInfoFromBufferAndProcessMovedPtNode(mParentPos, maxCodePointCount,
-                outCodePoints);
-    }
-}
-
-void DynamicPatriciaTrieNodeReader::invalidatePtNodeInfo() {
-    mHeadPos = NOT_A_DICT_POS;
-    mFlags = 0;
-    mParentPos = NOT_A_DICT_POS;
-    mCodePointCount = 0;
-    mProbabilityFieldPos = NOT_A_DICT_POS;
-    mProbability = NOT_A_PROBABILITY;
-    mChildrenPosFieldPos = NOT_A_DICT_POS;
-    mChildrenPos = NOT_A_DICT_POS;
-    mBigramLinkedNodePos = NOT_A_DICT_POS;
-    mShortcutPos = NOT_A_DICT_POS;
-    mBigramPos = NOT_A_DICT_POS;
-    mSiblingPos = NOT_A_DICT_POS;
-}
-
-}
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h
deleted file mode 100644
index 3b36d42..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_NODE_READER_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_NODE_READER_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/patricia_trie_reading_utils.h"
-
-namespace latinime {
-
-class BufferWithExtendableBuffer;
-class DictionaryBigramsStructurePolicy;
-class DictionaryShortcutsStructurePolicy;
-
-/*
- * This class is used for helping to read nodes of dynamic patricia trie. This class handles moved
- * node and reads node attributes.
- */
-class DynamicPatriciaTrieNodeReader {
- public:
-    DynamicPatriciaTrieNodeReader(const BufferWithExtendableBuffer *const buffer,
-            const DictionaryBigramsStructurePolicy *const bigramsPolicy,
-            const DictionaryShortcutsStructurePolicy *const shortcutsPolicy)
-            : mBuffer(buffer), mBigramsPolicy(bigramsPolicy),
-              mShortcutsPolicy(shortcutsPolicy), mHeadPos(NOT_A_DICT_POS), mFlags(0),
-              mParentPos(NOT_A_DICT_POS), mCodePointCount(0), mProbabilityFieldPos(NOT_A_DICT_POS),
-              mProbability(NOT_A_PROBABILITY), mChildrenPosFieldPos(NOT_A_DICT_POS),
-              mChildrenPos(NOT_A_DICT_POS), mBigramLinkedNodePos(NOT_A_DICT_POS),
-              mShortcutPos(NOT_A_DICT_POS),  mBigramPos(NOT_A_DICT_POS),
-              mSiblingPos(NOT_A_DICT_POS) {}
-
-    ~DynamicPatriciaTrieNodeReader() {}
-
-    // Reads PtNode information from dictionary buffer and updates members with the information.
-    AK_FORCE_INLINE void fetchNodeInfoInBufferFromPtNodePos(const int ptNodePos) {
-        fetchNodeInfoInBufferFromPtNodePosAndGetNodeCodePoints(ptNodePos ,
-                0 /* maxCodePointCount */, 0 /* outCodePoints */);
-    }
-
-    AK_FORCE_INLINE void fetchNodeInfoInBufferFromPtNodePosAndGetNodeCodePoints(
-            const int ptNodePos, const int maxCodePointCount, int *const outCodePoints) {
-        mSiblingPos = NOT_A_DICT_POS;
-        mBigramLinkedNodePos = NOT_A_DICT_POS;
-        fetchPtNodeInfoFromBufferAndProcessMovedPtNode(ptNodePos, maxCodePointCount, outCodePoints);
-    }
-
-    // HeadPos is different from NodePos when the current PtNode is a moved PtNode.
-    AK_FORCE_INLINE int getHeadPos() const {
-        return mHeadPos;
-    }
-
-    // Flags
-    AK_FORCE_INLINE bool isDeleted() const {
-        return DynamicPatriciaTrieReadingUtils::isDeleted(mFlags);
-    }
-
-    AK_FORCE_INLINE bool hasChildren() const {
-        return mChildrenPos != NOT_A_DICT_POS;
-    }
-
-    AK_FORCE_INLINE bool isTerminal() const {
-        return PatriciaTrieReadingUtils::isTerminal(mFlags);
-    }
-
-    AK_FORCE_INLINE bool isBlacklisted() const {
-        return PatriciaTrieReadingUtils::isBlacklisted(mFlags);
-    }
-
-    AK_FORCE_INLINE bool isNotAWord() const {
-        return PatriciaTrieReadingUtils::isNotAWord(mFlags);
-    }
-
-    // Parent node position
-    AK_FORCE_INLINE int getParentPos() const {
-        return mParentPos;
-    }
-
-    // Number of code points
-    AK_FORCE_INLINE uint8_t getCodePointCount() const {
-        return mCodePointCount;
-    }
-
-    // Probability
-    AK_FORCE_INLINE int getProbabilityFieldPos() const {
-        return mProbabilityFieldPos;
-    }
-
-    AK_FORCE_INLINE int getProbability() const {
-        return mProbability;
-    }
-
-    // Children PtNode array position
-    AK_FORCE_INLINE int getChildrenPosFieldPos() const {
-        return mChildrenPosFieldPos;
-    }
-
-    AK_FORCE_INLINE int getChildrenPos() const {
-        return mChildrenPos;
-    }
-
-    // Bigram linked node position.
-    AK_FORCE_INLINE int getBigramLinkedNodePos() const {
-        return mBigramLinkedNodePos;
-    }
-
-    // Shortcutlist position
-    AK_FORCE_INLINE int getShortcutPos() const {
-        return mShortcutPos;
-    }
-
-    // Bigrams position
-    AK_FORCE_INLINE int getBigramsPos() const {
-        return mBigramPos;
-    }
-
-    // Sibling node position
-    AK_FORCE_INLINE int getSiblingNodePos() const {
-        return mSiblingPos;
-    }
-
- private:
-    DISALLOW_COPY_AND_ASSIGN(DynamicPatriciaTrieNodeReader);
-
-    const BufferWithExtendableBuffer *const mBuffer;
-    const DictionaryBigramsStructurePolicy *const mBigramsPolicy;
-    const DictionaryShortcutsStructurePolicy *const mShortcutsPolicy;
-    int mHeadPos;
-    DynamicPatriciaTrieReadingUtils::NodeFlags mFlags;
-    int mParentPos;
-    uint8_t mCodePointCount;
-    int mProbabilityFieldPos;
-    int mProbability;
-    int mChildrenPosFieldPos;
-    int mChildrenPos;
-    int mBigramLinkedNodePos;
-    int mShortcutPos;
-    int mBigramPos;
-    int mSiblingPos;
-
-    void fetchPtNodeInfoFromBufferAndProcessMovedPtNode(const int ptNodePos,
-            const int maxCodePointCount, int *const outCodePoints);
-
-    void invalidatePtNodeInfo();
-};
-} // namespace latinime
-#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_NODE_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
deleted file mode 100644
index 495b146..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.cpp
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h"
-
-#include <cstdio>
-#include <cstring>
-#include <ctime>
-
-#include "defines.h"
-#include "suggest/core/dicnode/dic_node.h"
-#include "suggest/core/dicnode/dic_node_vector.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h"
-#include "suggest/policyimpl/dictionary/patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
-#include "suggest/policyimpl/dictionary/utils/probability_utils.h"
-
-namespace latinime {
-
-// Note that these are corresponding definitions in Java side in BinaryDictionaryTests and
-// BinaryDictionaryDecayingTests.
-const char *const DynamicPatriciaTriePolicy::UNIGRAM_COUNT_QUERY = "UNIGRAM_COUNT";
-const char *const DynamicPatriciaTriePolicy::BIGRAM_COUNT_QUERY = "BIGRAM_COUNT";
-const char *const DynamicPatriciaTriePolicy::MAX_UNIGRAM_COUNT_QUERY = "MAX_UNIGRAM_COUNT";
-const char *const DynamicPatriciaTriePolicy::MAX_BIGRAM_COUNT_QUERY = "MAX_BIGRAM_COUNT";
-const char *const DynamicPatriciaTriePolicy::SET_NEEDS_TO_DECAY_FOR_TESTING_QUERY =
-        "SET_NEEDS_TO_DECAY_FOR_TESTING";
-const int DynamicPatriciaTriePolicy::MAX_DICT_EXTENDED_REGION_SIZE = 1024 * 1024;
-const int DynamicPatriciaTriePolicy::MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS =
-        DynamicPatriciaTrieWritingHelper::MAX_DICTIONARY_SIZE - 1024;
-
-void DynamicPatriciaTriePolicy::createAndGetAllChildNodes(const DicNode *const dicNode,
-        DicNodeVector *const childDicNodes) const {
-    if (!dicNode->hasChildren()) {
-        return;
-    }
-    DynamicPatriciaTrieReadingHelper readingHelper(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    readingHelper.initWithPtNodeArrayPos(dicNode->getChildrenPos());
-    const DynamicPatriciaTrieNodeReader *const nodeReader = readingHelper.getNodeReader();
-    while (!readingHelper.isEnd()) {
-        bool isTerminal = nodeReader->isTerminal() && !nodeReader->isDeleted();
-        if (isTerminal && mHeaderPolicy.isDecayingDict()) {
-            // A DecayingDict may have a terminal PtNode that has a terminal DicNode whose
-            // probability is NOT_A_PROBABILITY. In such case, we don't want to treat it as a
-            // valid terminal DicNode.
-            isTerminal = getProbability(nodeReader->getProbability(), NOT_A_PROBABILITY)
-                    != NOT_A_PROBABILITY;
-        }
-        childDicNodes->pushLeavingChild(dicNode, nodeReader->getHeadPos(),
-                nodeReader->getChildrenPos(), nodeReader->getProbability(), isTerminal,
-                nodeReader->hasChildren(), nodeReader->isBlacklisted() || nodeReader->isNotAWord(),
-                nodeReader->getCodePointCount(), readingHelper.getMergedNodeCodePoints());
-        readingHelper.readNextSiblingNode();
-    }
-}
-
-int DynamicPatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
-        const int ptNodePos, const int maxCodePointCount, int *const outCodePoints,
-        int *const outUnigramProbability) const {
-    // This method traverses parent nodes from the terminal by following parent pointers; thus,
-    // node code points are stored in the buffer in the reverse order.
-    int reverseCodePoints[maxCodePointCount];
-    DynamicPatriciaTrieReadingHelper readingHelper(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    // First, read the terminal node and get its probability.
-    readingHelper.initWithPtNodePos(ptNodePos);
-    if (!readingHelper.isValidTerminalNode()) {
-        // Node at the ptNodePos is not a valid terminal node.
-        *outUnigramProbability = NOT_A_PROBABILITY;
-        return 0;
-    }
-    // Store terminal node probability.
-    *outUnigramProbability = readingHelper.getNodeReader()->getProbability();
-    // Then, following parent node link to the dictionary root and fetch node code points.
-    while (!readingHelper.isEnd()) {
-        if (readingHelper.getTotalCodePointCount() > maxCodePointCount) {
-            // The ptNodePos is not a valid terminal node position in the dictionary.
-            *outUnigramProbability = NOT_A_PROBABILITY;
-            return 0;
-        }
-        // Store node code points to buffer in the reverse order.
-        readingHelper.fetchMergedNodeCodePointsInReverseOrder(
-                readingHelper.getPrevTotalCodePointCount(), reverseCodePoints);
-        // Follow parent node toward the root node.
-        readingHelper.readParentNode();
-    }
-    if (readingHelper.isError()) {
-        // The node position or the dictionary is invalid.
-        *outUnigramProbability = NOT_A_PROBABILITY;
-        return 0;
-    }
-    // Reverse the stored code points to output them.
-    const int codePointCount = readingHelper.getTotalCodePointCount();
-    for (int i = 0; i < codePointCount; ++i) {
-        outCodePoints[i] = reverseCodePoints[codePointCount - i - 1];
-    }
-    return codePointCount;
-}
-
-int DynamicPatriciaTriePolicy::getTerminalNodePositionOfWord(const int *const inWord,
-        const int length, const bool forceLowerCaseSearch) const {
-    int searchCodePoints[length];
-    for (int i = 0; i < length; ++i) {
-        searchCodePoints[i] = forceLowerCaseSearch ? CharUtils::toLowerCase(inWord[i]) : inWord[i];
-    }
-    DynamicPatriciaTrieReadingHelper readingHelper(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    readingHelper.initWithPtNodeArrayPos(getRootPosition());
-    const DynamicPatriciaTrieNodeReader *const nodeReader = readingHelper.getNodeReader();
-    while (!readingHelper.isEnd()) {
-        const int matchedCodePointCount = readingHelper.getPrevTotalCodePointCount();
-        if (readingHelper.getTotalCodePointCount() > length
-                || !readingHelper.isMatchedCodePoint(0 /* index */,
-                        searchCodePoints[matchedCodePointCount])) {
-            // Current node has too many code points or its first code point is different from
-            // target code point. Skip this node and read the next sibling node.
-            readingHelper.readNextSiblingNode();
-            continue;
-        }
-        // Check following merged node code points.
-        const int nodeCodePointCount = nodeReader->getCodePointCount();
-        for (int j = 1; j < nodeCodePointCount; ++j) {
-            if (!readingHelper.isMatchedCodePoint(
-                    j, searchCodePoints[matchedCodePointCount + j])) {
-                // Different code point is found. The given word is not included in the dictionary.
-                return NOT_A_DICT_POS;
-            }
-        }
-        // All characters are matched.
-        if (length == readingHelper.getTotalCodePointCount()) {
-            // Terminal position is found.
-            return nodeReader->getHeadPos();
-        }
-        if (!nodeReader->hasChildren()) {
-            return NOT_A_DICT_POS;
-        }
-        // Advance to the children nodes.
-        readingHelper.readChildNode();
-    }
-    // If we already traversed the tree further than the word is long, there means
-    // there was no match (or we would have found it).
-    return NOT_A_DICT_POS;
-}
-
-int DynamicPatriciaTriePolicy::getProbability(const int unigramProbability,
-        const int bigramProbability) const {
-    if (mHeaderPolicy.isDecayingDict()) {
-        return ForgettingCurveUtils::getProbability(unigramProbability, bigramProbability);
-    } else {
-        if (unigramProbability == NOT_A_PROBABILITY) {
-            return NOT_A_PROBABILITY;
-        } else if (bigramProbability == NOT_A_PROBABILITY) {
-            return ProbabilityUtils::backoff(unigramProbability);
-        } else {
-            return ProbabilityUtils::computeProbabilityForBigram(unigramProbability,
-                    bigramProbability);
-        }
-    }
-}
-
-int DynamicPatriciaTriePolicy::getUnigramProbabilityOfPtNode(const int ptNodePos) const {
-    if (ptNodePos == NOT_A_DICT_POS) {
-        return NOT_A_PROBABILITY;
-    }
-    DynamicPatriciaTrieNodeReader nodeReader(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos);
-    if (nodeReader.isDeleted() || nodeReader.isBlacklisted() || nodeReader.isNotAWord()) {
-        return NOT_A_PROBABILITY;
-    }
-    return getProbability(nodeReader.getProbability(), NOT_A_PROBABILITY);
-}
-
-int DynamicPatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) const {
-    if (ptNodePos == NOT_A_DICT_POS) {
-        return NOT_A_DICT_POS;
-    }
-    DynamicPatriciaTrieNodeReader nodeReader(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos);
-    if (nodeReader.isDeleted()) {
-        return NOT_A_DICT_POS;
-    }
-    return nodeReader.getShortcutPos();
-}
-
-int DynamicPatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) const {
-    if (ptNodePos == NOT_A_DICT_POS) {
-        return NOT_A_DICT_POS;
-    }
-    DynamicPatriciaTrieNodeReader nodeReader(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(ptNodePos);
-    if (nodeReader.isDeleted()) {
-        return NOT_A_DICT_POS;
-    }
-    return nodeReader.getBigramsPos();
-}
-
-bool DynamicPatriciaTriePolicy::addUnigramWord(const int *const word, const int length,
-        const int probability) {
-    if (!mBuffer->isUpdatable()) {
-        AKLOGI("Warning: addUnigramWord() is called for non-updatable dictionary.");
-        return false;
-    }
-    if (mBufferWithExtendableBuffer.getTailPosition()
-            >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
-        AKLOGE("The dictionary is too large to dynamically update.");
-        return false;
-    }
-    DynamicPatriciaTrieReadingHelper readingHelper(&mBufferWithExtendableBuffer,
-            getBigramsStructurePolicy(), getShortcutsStructurePolicy());
-    readingHelper.initWithPtNodeArrayPos(getRootPosition());
-    DynamicPatriciaTrieWritingHelper writingHelper(&mBufferWithExtendableBuffer,
-            &mBigramListPolicy, &mShortcutListPolicy, mHeaderPolicy.isDecayingDict());
-    bool addedNewUnigram = false;
-    if (writingHelper.addUnigramWord(&readingHelper, word, length, probability,
-            &addedNewUnigram)) {
-        if (addedNewUnigram) {
-            mUnigramCount++;
-        }
-        return true;
-    } else {
-        return false;
-    }
-}
-
-bool DynamicPatriciaTriePolicy::addBigramWords(const int *const word0, const int length0,
-        const int *const word1, const int length1, const int probability) {
-    if (!mBuffer->isUpdatable()) {
-        AKLOGI("Warning: addBigramWords() is called for non-updatable dictionary.");
-        return false;
-    }
-    if (mBufferWithExtendableBuffer.getTailPosition()
-            >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
-        AKLOGE("The dictionary is too large to dynamically update.");
-        return false;
-    }
-    const int word0Pos = getTerminalNodePositionOfWord(word0, length0,
-            false /* forceLowerCaseSearch */);
-    if (word0Pos == NOT_A_DICT_POS) {
-        return false;
-    }
-    const int word1Pos = getTerminalNodePositionOfWord(word1, length1,
-            false /* forceLowerCaseSearch */);
-    if (word1Pos == NOT_A_DICT_POS) {
-        return false;
-    }
-    DynamicPatriciaTrieWritingHelper writingHelper(&mBufferWithExtendableBuffer,
-            &mBigramListPolicy, &mShortcutListPolicy, mHeaderPolicy.isDecayingDict());
-    bool addedNewBigram = false;
-    if (writingHelper.addBigramWords(word0Pos, word1Pos, probability, &addedNewBigram)) {
-        if (addedNewBigram) {
-            mBigramCount++;
-        }
-        return true;
-    } else {
-        return false;
-    }
-}
-
-bool DynamicPatriciaTriePolicy::removeBigramWords(const int *const word0, const int length0,
-        const int *const word1, const int length1) {
-    if (!mBuffer->isUpdatable()) {
-        AKLOGI("Warning: removeBigramWords() is called for non-updatable dictionary.");
-        return false;
-    }
-    if (mBufferWithExtendableBuffer.getTailPosition()
-            >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
-        AKLOGE("The dictionary is too large to dynamically update.");
-        return false;
-    }
-    const int word0Pos = getTerminalNodePositionOfWord(word0, length0,
-            false /* forceLowerCaseSearch */);
-    if (word0Pos == NOT_A_DICT_POS) {
-        return false;
-    }
-    const int word1Pos = getTerminalNodePositionOfWord(word1, length1,
-            false /* forceLowerCaseSearch */);
-    if (word1Pos == NOT_A_DICT_POS) {
-        return false;
-    }
-    DynamicPatriciaTrieWritingHelper writingHelper(&mBufferWithExtendableBuffer,
-            &mBigramListPolicy, &mShortcutListPolicy, mHeaderPolicy.isDecayingDict());
-    if (writingHelper.removeBigramWords(word0Pos, word1Pos)) {
-        mBigramCount--;
-        return true;
-    } else {
-        return false;
-    }
-}
-
-void DynamicPatriciaTriePolicy::flush(const char *const filePath) {
-    if (!mBuffer->isUpdatable()) {
-        AKLOGI("Warning: flush() is called for non-updatable dictionary.");
-        return;
-    }
-    DynamicPatriciaTrieWritingHelper writingHelper(&mBufferWithExtendableBuffer,
-            &mBigramListPolicy, &mShortcutListPolicy, false /* needsToDecay */);
-    writingHelper.writeToDictFile(filePath, &mHeaderPolicy, mUnigramCount, mBigramCount);
-}
-
-void DynamicPatriciaTriePolicy::flushWithGC(const char *const filePath) {
-    if (!mBuffer->isUpdatable()) {
-        AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary.");
-        return;
-    }
-    const bool needsToDecay = mHeaderPolicy.isDecayingDict()
-            && (mNeedsToDecayForTesting || ForgettingCurveUtils::needsToDecay(
-                    false /* mindsBlockByDecay */, mUnigramCount, mBigramCount, &mHeaderPolicy));
-    DynamicBigramListPolicy bigramListPolicyForGC(&mHeaderPolicy, &mBufferWithExtendableBuffer,
-            &mShortcutListPolicy, needsToDecay);
-    DynamicPatriciaTrieWritingHelper writingHelper(&mBufferWithExtendableBuffer,
-            &bigramListPolicyForGC, &mShortcutListPolicy, needsToDecay);
-    writingHelper.writeToDictFileWithGC(getRootPosition(), filePath, &mHeaderPolicy);
-    mNeedsToDecayForTesting = false;
-}
-
-bool DynamicPatriciaTriePolicy::needsToRunGC(const bool mindsBlockByGC) const {
-    if (!mBuffer->isUpdatable()) {
-        AKLOGI("Warning: needsToRunGC() is called for non-updatable dictionary.");
-        return false;
-    }
-    if (mBufferWithExtendableBuffer.isNearSizeLimit()) {
-        // Additional buffer size is near the limit.
-        return true;
-    } else if (mHeaderPolicy.getExtendedRegionSize()
-            + mBufferWithExtendableBuffer.getUsedAdditionalBufferSize()
-                    > MAX_DICT_EXTENDED_REGION_SIZE) {
-        // Total extended region size exceeds the limit.
-        return true;
-    } else if (mBufferWithExtendableBuffer.getTailPosition()
-            >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS
-                    && mBufferWithExtendableBuffer.getUsedAdditionalBufferSize() > 0) {
-        // Needs to reduce dictionary size.
-        return true;
-    } else if (mHeaderPolicy.isDecayingDict()) {
-        return mNeedsToDecayForTesting || ForgettingCurveUtils::needsToDecay(
-                mindsBlockByGC, mUnigramCount, mBigramCount, &mHeaderPolicy);
-    }
-    return false;
-}
-
-void DynamicPatriciaTriePolicy::getProperty(const char *const query, char *const outResult,
-        const int maxResultLength) {
-    if (strncmp(query, UNIGRAM_COUNT_QUERY, maxResultLength) == 0) {
-        snprintf(outResult, maxResultLength, "%d", mUnigramCount);
-    } else if (strncmp(query, BIGRAM_COUNT_QUERY, maxResultLength) == 0) {
-        snprintf(outResult, maxResultLength, "%d", mBigramCount);
-    } else if (strncmp(query, MAX_UNIGRAM_COUNT_QUERY, maxResultLength) == 0) {
-        snprintf(outResult, maxResultLength, "%d",
-                mHeaderPolicy.isDecayingDict() ? ForgettingCurveUtils::MAX_UNIGRAM_COUNT :
-                        static_cast<int>(DynamicPatriciaTrieWritingHelper::MAX_DICTIONARY_SIZE));
-    } else if (strncmp(query, MAX_BIGRAM_COUNT_QUERY, maxResultLength) == 0) {
-        snprintf(outResult, maxResultLength, "%d",
-                mHeaderPolicy.isDecayingDict() ? ForgettingCurveUtils::MAX_BIGRAM_COUNT :
-                        static_cast<int>(DynamicPatriciaTrieWritingHelper::MAX_DICTIONARY_SIZE));
-    } else if (strncmp(query, SET_NEEDS_TO_DECAY_FOR_TESTING_QUERY, maxResultLength) == 0) {
-        mNeedsToDecayForTesting = true;
-    }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h
deleted file mode 100644
index be97ee1..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_policy.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_POLICY_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_POLICY_H
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h"
-#include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h"
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
-
-namespace latinime {
-
-class DicNode;
-class DicNodeVector;
-
-class DynamicPatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
- public:
-    DynamicPatriciaTriePolicy(const MmappedBuffer *const buffer)
-            : mBuffer(buffer), mHeaderPolicy(mBuffer->getBuffer(), buffer->getBufferSize()),
-              mBufferWithExtendableBuffer(mBuffer->getBuffer() + mHeaderPolicy.getSize(),
-                      mBuffer->getBufferSize() - mHeaderPolicy.getSize()),
-              mShortcutListPolicy(&mBufferWithExtendableBuffer),
-              mBigramListPolicy(&mHeaderPolicy, &mBufferWithExtendableBuffer, &mShortcutListPolicy,
-                      mHeaderPolicy.isDecayingDict()),
-              mUnigramCount(mHeaderPolicy.getUnigramCount()),
-              mBigramCount(mHeaderPolicy.getBigramCount()), mNeedsToDecayForTesting(false) {}
-
-    ~DynamicPatriciaTriePolicy() {
-        delete mBuffer;
-    }
-
-    AK_FORCE_INLINE int getRootPosition() const {
-        return 0;
-    }
-
-    void createAndGetAllChildNodes(const DicNode *const dicNode,
-            DicNodeVector *const childDicNodes) const;
-
-    int getCodePointsAndProbabilityAndReturnCodePointCount(
-            const int terminalPtNodePos, const int maxCodePointCount, int *const outCodePoints,
-            int *const outUnigramProbability) const;
-
-    int getTerminalNodePositionOfWord(const int *const inWord,
-            const int length, const bool forceLowerCaseSearch) const;
-
-    int getProbability(const int unigramProbability, const int bigramProbability) const;
-
-    int getUnigramProbabilityOfPtNode(const int ptNodePos) const;
-
-    int getShortcutPositionOfPtNode(const int ptNodePos) const;
-
-    int getBigramsPositionOfPtNode(const int ptNodePos) const;
-
-    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
-        return &mHeaderPolicy;
-    }
-
-    const DictionaryBigramsStructurePolicy *getBigramsStructurePolicy() const {
-        return &mBigramListPolicy;
-    }
-
-    const DictionaryShortcutsStructurePolicy *getShortcutsStructurePolicy() const {
-        return &mShortcutListPolicy;
-    }
-
-    bool addUnigramWord(const int *const word, const int length, const int probability);
-
-    bool addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability);
-
-    bool removeBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1);
-
-    void flush(const char *const filePath);
-
-    void flushWithGC(const char *const filePath);
-
-    bool needsToRunGC(const bool mindsBlockByGC) const;
-
-    void getProperty(const char *const query, char *const outResult,
-            const int maxResultLength);
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPatriciaTriePolicy);
-
-    static const char *const UNIGRAM_COUNT_QUERY;
-    static const char *const BIGRAM_COUNT_QUERY;
-    static const char *const MAX_UNIGRAM_COUNT_QUERY;
-    static const char *const MAX_BIGRAM_COUNT_QUERY;
-    static const char *const SET_NEEDS_TO_DECAY_FOR_TESTING_QUERY;
-    static const int MAX_DICT_EXTENDED_REGION_SIZE;
-    static const int MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS;
-
-    const MmappedBuffer *const mBuffer;
-    const HeaderPolicy mHeaderPolicy;
-    BufferWithExtendableBuffer mBufferWithExtendableBuffer;
-    DynamicShortcutListPolicy mShortcutListPolicy;
-    DynamicBigramListPolicy mBigramListPolicy;
-    int mUnigramCount;
-    int mBigramCount;
-    int mNeedsToDecayForTesting;
-};
-} // namespace latinime
-#endif // LATINIME_DYNAMIC_PATRICIA_TRIE_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.cpp
deleted file mode 100644
index f108c21..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h"
-
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-
-namespace latinime {
-
-// To avoid infinite loop caused by invalid or malicious forward links.
-const int DynamicPatriciaTrieReadingHelper::MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP = 100000;
-const int DynamicPatriciaTrieReadingHelper::MAX_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP = 100000;
-const size_t DynamicPatriciaTrieReadingHelper::MAX_READING_STATE_STACK_SIZE = MAX_WORD_LENGTH;
-
-// Visits all PtNodes in post-order depth first manner.
-// For example, visits c -> b -> y -> x -> a for the following dictionary:
-// a _ b _ c
-//   \ x _ y
-bool DynamicPatriciaTrieReadingHelper::traverseAllPtNodesInPostorderDepthFirstManner(
-        TraversingEventListener *const listener) {
-    bool alreadyVisitedChildren = false;
-    // Descend from the root to the root PtNode array.
-    if (!listener->onDescend(getPosOfLastPtNodeArrayHead())) {
-        return false;
-    }
-    while (!isEnd()) {
-        if (!alreadyVisitedChildren) {
-            if (mNodeReader.hasChildren()) {
-                // Move to the first child.
-                if (!listener->onDescend(mNodeReader.getChildrenPos())) {
-                    return false;
-                }
-                pushReadingStateToStack();
-                readChildNode();
-            } else {
-                alreadyVisitedChildren = true;
-            }
-        } else {
-            if (!listener->onVisitingPtNode(&mNodeReader, mMergedNodeCodePoints)) {
-                return false;
-            }
-            readNextSiblingNode();
-            if (isEnd()) {
-                // All PtNodes in current linked PtNode arrays have been visited.
-                // Return to the parent.
-                if (!listener->onReadingPtNodeArrayTail()) {
-                    return false;
-                }
-                if (mReadingStateStack.size() <= 0) {
-                    break;
-                }
-                if (!listener->onAscend()) {
-                    return false;
-                }
-                popReadingStateFromStack();
-                alreadyVisitedChildren = true;
-            } else {
-                // Process sibling PtNode.
-                alreadyVisitedChildren = false;
-            }
-        }
-    }
-    // Ascend from the root PtNode array to the root.
-    if (!listener->onAscend()) {
-        return false;
-    }
-    return !isError();
-}
-
-// Visits all PtNodes in PtNode array level pre-order depth first manner, which is the same order
-// that PtNodes are written in the dictionary buffer.
-// For example, visits a -> b -> x -> c -> y for the following dictionary:
-// a _ b _ c
-//   \ x _ y
-bool DynamicPatriciaTrieReadingHelper::traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
-        TraversingEventListener *const listener) {
-    bool alreadyVisitedAllPtNodesInArray = false;
-    bool alreadyVisitedChildren = false;
-    // Descend from the root to the root PtNode array.
-    if (!listener->onDescend(getPosOfLastPtNodeArrayHead())) {
-        return false;
-    }
-    if (isEnd()) {
-        // Empty dictionary. Needs to notify the listener of the tail of empty PtNode array.
-        if (!listener->onReadingPtNodeArrayTail()) {
-            return false;
-        }
-    }
-    pushReadingStateToStack();
-    while (!isEnd()) {
-        if (alreadyVisitedAllPtNodesInArray) {
-            if (alreadyVisitedChildren) {
-                // Move to next sibling PtNode's children.
-                readNextSiblingNode();
-                if (isEnd()) {
-                    // Return to the parent PTNode.
-                    if (!listener->onAscend()) {
-                        return false;
-                    }
-                    if (mReadingStateStack.size() <= 0) {
-                        break;
-                    }
-                    popReadingStateFromStack();
-                    alreadyVisitedChildren = true;
-                    alreadyVisitedAllPtNodesInArray = true;
-                } else {
-                    alreadyVisitedChildren = false;
-                }
-            } else {
-                if (mNodeReader.hasChildren()) {
-                    // Move to the first child.
-                    if (!listener->onDescend(mNodeReader.getChildrenPos())) {
-                        return false;
-                    }
-                    pushReadingStateToStack();
-                    readChildNode();
-                    // Push state to return the head of PtNode array.
-                    pushReadingStateToStack();
-                    alreadyVisitedAllPtNodesInArray = false;
-                    alreadyVisitedChildren = false;
-                } else {
-                    alreadyVisitedChildren = true;
-                }
-            }
-        } else {
-            if (!listener->onVisitingPtNode(&mNodeReader, mMergedNodeCodePoints)) {
-                return false;
-            }
-            readNextSiblingNode();
-            if (isEnd()) {
-                if (!listener->onReadingPtNodeArrayTail()) {
-                    return false;
-                }
-                // Return to the head of current PtNode array.
-                popReadingStateFromStack();
-                alreadyVisitedAllPtNodesInArray = true;
-            }
-        }
-    }
-    popReadingStateFromStack();
-    // Ascend from the root PtNode array to the root.
-    if (!listener->onAscend()) {
-        return false;
-    }
-    return !isError();
-}
-
-// Read node array size and process empty node arrays. Nodes and arrays are counted up in this
-// method to avoid an infinite loop.
-void DynamicPatriciaTrieReadingHelper::nextPtNodeArray() {
-    if (mReadingState.mPos < 0 || mReadingState.mPos >= mBuffer->getTailPosition()) {
-        // Reading invalid position because of a bug or a broken dictionary.
-        AKLOGE("Reading PtNode array info from invalid dictionary position: %d, dict size: %d",
-                mReadingState.mPos, mBuffer->getTailPosition());
-        ASSERT(false);
-        mIsError = true;
-        mReadingState.mPos = NOT_A_DICT_POS;
-        return;
-    }
-    mReadingState.mPosOfLastPtNodeArrayHead = mReadingState.mPos;
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(mReadingState.mPos);
-    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
-    if (usesAdditionalBuffer) {
-        mReadingState.mPos -= mBuffer->getOriginalBufferSize();
-    }
-    mReadingState.mNodeCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
-            dictBuf, &mReadingState.mPos);
-    if (usesAdditionalBuffer) {
-        mReadingState.mPos += mBuffer->getOriginalBufferSize();
-    }
-    // Count up nodes and node arrays to avoid infinite loop.
-    mReadingState.mTotalNodeCount += mReadingState.mNodeCount;
-    mReadingState.mNodeArrayCount++;
-    if (mReadingState.mNodeCount < 0
-            || mReadingState.mTotalNodeCount > MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP
-            || mReadingState.mNodeArrayCount > MAX_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP) {
-        // Invalid dictionary.
-        AKLOGI("Invalid dictionary. nodeCount: %d, totalNodeCount: %d, MAX_CHILD_COUNT: %d"
-                "nodeArrayCount: %d, MAX_NODE_ARRAY_COUNT: %d",
-                mReadingState.mNodeCount, mReadingState.mTotalNodeCount,
-                MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP, mReadingState.mNodeArrayCount,
-                MAX_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP);
-        ASSERT(false);
-        mIsError = true;
-        mReadingState.mPos = NOT_A_DICT_POS;
-        return;
-    }
-    if (mReadingState.mNodeCount == 0) {
-        // Empty node array. Try following forward link.
-        followForwardLink();
-    }
-}
-
-// Follow the forward link and read the next node array if exists.
-void DynamicPatriciaTrieReadingHelper::followForwardLink() {
-    if (mReadingState.mPos < 0 || mReadingState.mPos >= mBuffer->getTailPosition()) {
-        // Reading invalid position because of bug or broken dictionary.
-        AKLOGE("Reading forward link from invalid dictionary position: %d, dict size: %d",
-                mReadingState.mPos, mBuffer->getTailPosition());
-        ASSERT(false);
-        mIsError = true;
-        mReadingState.mPos = NOT_A_DICT_POS;
-        return;
-    }
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(mReadingState.mPos);
-    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
-    if (usesAdditionalBuffer) {
-        mReadingState.mPos -= mBuffer->getOriginalBufferSize();
-    }
-    const int forwardLinkPosition =
-            DynamicPatriciaTrieReadingUtils::getForwardLinkPosition(dictBuf, mReadingState.mPos);
-    if (usesAdditionalBuffer) {
-        mReadingState.mPos += mBuffer->getOriginalBufferSize();
-    }
-    mReadingState.mPosOfLastForwardLinkField = mReadingState.mPos;
-    if (DynamicPatriciaTrieReadingUtils::isValidForwardLinkPosition(forwardLinkPosition)) {
-        // Follow the forward link.
-        mReadingState.mPos += forwardLinkPosition;
-        nextPtNodeArray();
-    } else {
-        // All node arrays have been read.
-        mReadingState.mPos = NOT_A_DICT_POS;
-    }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h
deleted file mode 100644
index a71c069..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_READING_HELPER_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_READING_HELPER_H
-
-#include <cstddef>
-#include <vector>
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/patricia_trie_reading_utils.h"
-
-namespace latinime {
-
-class BufferWithExtendableBuffer;
-class DictionaryBigramsStructurePolicy;
-class DictionaryShortcutsStructurePolicy;
-
-/*
- * This class is used for traversing dynamic patricia trie. This class supports iterating nodes and
- * dealing with additional buffer. This class counts nodes and node arrays to avoid infinite loop.
- */
-class DynamicPatriciaTrieReadingHelper {
- public:
-    class TraversingEventListener {
-     public:
-        virtual ~TraversingEventListener() {};
-
-        // Returns whether the event handling was succeeded or not.
-        virtual bool onAscend() = 0;
-
-        // Returns whether the event handling was succeeded or not.
-        virtual bool onDescend(const int ptNodeArrayPos) = 0;
-
-        // Returns whether the event handling was succeeded or not.
-        virtual bool onReadingPtNodeArrayTail() = 0;
-
-        // Returns whether the event handling was succeeded or not.
-        virtual bool onVisitingPtNode(const DynamicPatriciaTrieNodeReader *const node,
-                const int *const nodeCodePoints) = 0;
-
-     protected:
-        TraversingEventListener() {};
-
-     private:
-        DISALLOW_COPY_AND_ASSIGN(TraversingEventListener);
-    };
-
-    DynamicPatriciaTrieReadingHelper(const BufferWithExtendableBuffer *const buffer,
-            const DictionaryBigramsStructurePolicy *const bigramsPolicy,
-            const DictionaryShortcutsStructurePolicy *const shortcutsPolicy)
-            : mIsError(false), mReadingState(), mBuffer(buffer),
-              mNodeReader(mBuffer, bigramsPolicy, shortcutsPolicy), mReadingStateStack() {}
-
-    ~DynamicPatriciaTrieReadingHelper() {}
-
-    AK_FORCE_INLINE bool isError() const {
-        return mIsError;
-    }
-
-    AK_FORCE_INLINE bool isEnd() const {
-        return mReadingState.mPos == NOT_A_DICT_POS;
-    }
-
-    // Initialize reading state with the head position of a PtNode array.
-    AK_FORCE_INLINE void initWithPtNodeArrayPos(const int ptNodeArrayPos) {
-        if (ptNodeArrayPos == NOT_A_DICT_POS) {
-            mReadingState.mPos = NOT_A_DICT_POS;
-        } else {
-            mIsError = false;
-            mReadingState.mPos = ptNodeArrayPos;
-            mReadingState.mPrevTotalCodePointCount = 0;
-            mReadingState.mTotalNodeCount = 0;
-            mReadingState.mNodeArrayCount = 0;
-            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
-            mReadingStateStack.clear();
-            nextPtNodeArray();
-            if (!isEnd()) {
-                fetchPtNodeInfo();
-            }
-        }
-    }
-
-    // Initialize reading state with the head position of a node.
-    AK_FORCE_INLINE void initWithPtNodePos(const int ptNodePos) {
-        if (ptNodePos == NOT_A_DICT_POS) {
-            mReadingState.mPos = NOT_A_DICT_POS;
-        } else {
-            mIsError = false;
-            mReadingState.mPos = ptNodePos;
-            mReadingState.mNodeCount = 1;
-            mReadingState.mPrevTotalCodePointCount = 0;
-            mReadingState.mTotalNodeCount = 1;
-            mReadingState.mNodeArrayCount = 1;
-            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
-            mReadingState.mPosOfLastPtNodeArrayHead = NOT_A_DICT_POS;
-            mReadingStateStack.clear();
-            fetchPtNodeInfo();
-        }
-    }
-
-    AK_FORCE_INLINE const DynamicPatriciaTrieNodeReader* getNodeReader() const {
-        return &mNodeReader;
-    }
-
-    AK_FORCE_INLINE bool isValidTerminalNode() const {
-        return !isEnd() && !mNodeReader.isDeleted() && mNodeReader.isTerminal();
-    }
-
-    AK_FORCE_INLINE bool isMatchedCodePoint(const int index, const int codePoint) const {
-        return mMergedNodeCodePoints[index] == codePoint;
-    }
-
-    // Return code point count exclude the last read node's code points.
-    AK_FORCE_INLINE int getPrevTotalCodePointCount() const {
-        return mReadingState.mPrevTotalCodePointCount;
-    }
-
-    // Return code point count include the last read node's code points.
-    AK_FORCE_INLINE int getTotalCodePointCount() const {
-        return mReadingState.mPrevTotalCodePointCount + mNodeReader.getCodePointCount();
-    }
-
-    AK_FORCE_INLINE void fetchMergedNodeCodePointsInReverseOrder(
-            const int index, int *const outCodePoints) const {
-        const int nodeCodePointCount = mNodeReader.getCodePointCount();
-        for (int i =  0; i < nodeCodePointCount; ++i) {
-            outCodePoints[index + i] = mMergedNodeCodePoints[nodeCodePointCount - 1 - i];
-        }
-    }
-
-    AK_FORCE_INLINE const int *getMergedNodeCodePoints() const {
-        return mMergedNodeCodePoints;
-    }
-
-    AK_FORCE_INLINE void readNextSiblingNode() {
-        mReadingState.mNodeCount -= 1;
-        mReadingState.mPos = mNodeReader.getSiblingNodePos();
-        if (mReadingState.mNodeCount <= 0) {
-            // All nodes in the current node array have been read.
-            followForwardLink();
-            if (!isEnd()) {
-                fetchPtNodeInfo();
-            }
-        } else {
-            fetchPtNodeInfo();
-        }
-    }
-
-    // Read the first child node of the current node.
-    AK_FORCE_INLINE void readChildNode() {
-        if (mNodeReader.hasChildren()) {
-            mReadingState.mPrevTotalCodePointCount += mNodeReader.getCodePointCount();
-            mReadingState.mTotalNodeCount = 0;
-            mReadingState.mNodeArrayCount = 0;
-            mReadingState.mPos = mNodeReader.getChildrenPos();
-            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
-            // Read children node array.
-            nextPtNodeArray();
-            if (!isEnd()) {
-                fetchPtNodeInfo();
-            }
-        } else {
-            mReadingState.mPos = NOT_A_DICT_POS;
-        }
-    }
-
-    // Read the parent node of the current node.
-    AK_FORCE_INLINE void readParentNode() {
-        if (mNodeReader.getParentPos() != NOT_A_DICT_POS) {
-            mReadingState.mPrevTotalCodePointCount += mNodeReader.getCodePointCount();
-            mReadingState.mTotalNodeCount = 1;
-            mReadingState.mNodeArrayCount = 1;
-            mReadingState.mNodeCount = 1;
-            mReadingState.mPos = mNodeReader.getParentPos();
-            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
-            mReadingState.mPosOfLastPtNodeArrayHead = NOT_A_DICT_POS;
-            fetchPtNodeInfo();
-        } else {
-            mReadingState.mPos = NOT_A_DICT_POS;
-        }
-    }
-
-    AK_FORCE_INLINE int getPosOfLastForwardLinkField() const {
-        return mReadingState.mPosOfLastForwardLinkField;
-    }
-
-    AK_FORCE_INLINE int getPosOfLastPtNodeArrayHead() const {
-        return mReadingState.mPosOfLastPtNodeArrayHead;
-    }
-
-    AK_FORCE_INLINE void reloadCurrentPtNodeInfo() {
-        if (!isEnd()) {
-            fetchPtNodeInfo();
-        }
-    }
-
-    bool traverseAllPtNodesInPostorderDepthFirstManner(TraversingEventListener *const listener);
-
-    bool traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
-            TraversingEventListener *const listener);
-
- private:
-    DISALLOW_COPY_AND_ASSIGN(DynamicPatriciaTrieReadingHelper);
-
-    class ReadingState {
-     public:
-        // Note that copy constructor and assignment operator are used for this class to use
-        // std::vector.
-        ReadingState() : mPos(NOT_A_DICT_POS), mNodeCount(0), mPrevTotalCodePointCount(0),
-                mTotalNodeCount(0), mNodeArrayCount(0), mPosOfLastForwardLinkField(NOT_A_DICT_POS),
-                mPosOfLastPtNodeArrayHead(NOT_A_DICT_POS) {}
-
-        int mPos;
-        // Node count of a node array.
-        int mNodeCount;
-        int mPrevTotalCodePointCount;
-        int mTotalNodeCount;
-        int mNodeArrayCount;
-        int mPosOfLastForwardLinkField;
-        int mPosOfLastPtNodeArrayHead;
-    };
-
-    static const int MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP;
-    static const int MAX_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP;
-    static const size_t MAX_READING_STATE_STACK_SIZE;
-
-    // TODO: Introduce error code to track what caused the error.
-    bool mIsError;
-    ReadingState mReadingState;
-    const BufferWithExtendableBuffer *const mBuffer;
-    DynamicPatriciaTrieNodeReader mNodeReader;
-    int mMergedNodeCodePoints[MAX_WORD_LENGTH];
-    std::vector<ReadingState> mReadingStateStack;
-
-    void nextPtNodeArray();
-
-    void followForwardLink();
-
-    AK_FORCE_INLINE void fetchPtNodeInfo() {
-        mNodeReader.fetchNodeInfoInBufferFromPtNodePosAndGetNodeCodePoints(mReadingState.mPos,
-                MAX_WORD_LENGTH, mMergedNodeCodePoints);
-        if (mNodeReader.getCodePointCount() <= 0) {
-            // Empty node is not allowed.
-            mIsError = true;
-            mReadingState.mPos = NOT_A_DICT_POS;
-        }
-    }
-
-    AK_FORCE_INLINE void pushReadingStateToStack() {
-        if (mReadingStateStack.size() > MAX_READING_STATE_STACK_SIZE) {
-            AKLOGI("Reading state stack overflow. Max size: %zd", MAX_READING_STATE_STACK_SIZE);
-            ASSERT(false);
-            mIsError = true;
-            mReadingState.mPos = NOT_A_DICT_POS;
-        } else {
-            mReadingStateStack.push_back(mReadingState);
-        }
-    }
-
-    AK_FORCE_INLINE void popReadingStateFromStack() {
-        if (mReadingStateStack.empty()) {
-            mReadingState.mPos = NOT_A_DICT_POS;
-        } else {
-            mReadingState = mReadingStateStack.back();
-            mReadingStateStack.pop_back();
-            if (!isEnd()) {
-                fetchPtNodeInfo();
-            }
-        }
-    }
-};
-} // namespace latinime
-#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_READING_HELPER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.cpp
deleted file mode 100644
index d68446d..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
-
-namespace latinime {
-
-typedef DynamicPatriciaTrieReadingUtils DptReadingUtils;
-
-const DptReadingUtils::NodeFlags DptReadingUtils::MASK_MOVED = 0xC0;
-const DptReadingUtils::NodeFlags DptReadingUtils::FLAG_IS_NOT_MOVED = 0xC0;
-const DptReadingUtils::NodeFlags DptReadingUtils::FLAG_IS_MOVED = 0x40;
-const DptReadingUtils::NodeFlags DptReadingUtils::FLAG_IS_DELETED = 0x80;
-
-// TODO: Make DICT_OFFSET_ZERO_OFFSET = 0.
-// Currently, DICT_OFFSET_INVALID is 0 in Java side but offset can be 0 during GC. So, the maximum
-// value of offsets, which is 0x7FFFFF is used to represent 0 offset.
-const int DptReadingUtils::DICT_OFFSET_INVALID = 0;
-const int DptReadingUtils::DICT_OFFSET_ZERO_OFFSET = 0x7FFFFF;
-
-/* static */ int DptReadingUtils::getForwardLinkPosition(const uint8_t *const buffer,
-        const int pos) {
-    int linkAddressPos = pos;
-    return ByteArrayUtils::readSint24AndAdvancePosition(buffer, &linkAddressPos);
-}
-
-/* static */ int DptReadingUtils::getParentPtNodePosOffsetAndAdvancePosition(
-        const uint8_t *const buffer, int *const pos) {
-    return ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
-}
-
-/* static */ int DptReadingUtils::getParentPtNodePos(const int parentOffset, const int ptNodePos) {
-    if (parentOffset == DICT_OFFSET_INVALID) {
-        return NOT_A_DICT_POS;
-    } else if (parentOffset == DICT_OFFSET_ZERO_OFFSET) {
-        return ptNodePos;
-    } else {
-        return parentOffset + ptNodePos;
-    }
-}
-
-/* static */ int DptReadingUtils::readChildrenPositionAndAdvancePosition(
-        const uint8_t *const buffer, int *const pos) {
-    const int base = *pos;
-    const int offset = ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
-    if (offset == DICT_OFFSET_INVALID) {
-        // The PtNode does not have children.
-        return NOT_A_DICT_POS;
-    } else if (offset == DICT_OFFSET_ZERO_OFFSET) {
-        return base;
-    } else {
-        return base + offset;
-    }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h
deleted file mode 100644
index 67c3cc5..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_READING_UTILS_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_READING_UTILS_H
-
-#include <stdint.h>
-
-#include "defines.h"
-
-namespace latinime {
-
-class DynamicPatriciaTrieReadingUtils {
- public:
-    typedef uint8_t NodeFlags;
-
-    static const int DICT_OFFSET_INVALID;
-    static const int DICT_OFFSET_ZERO_OFFSET;
-
-    static int getForwardLinkPosition(const uint8_t *const buffer, const int pos);
-
-    static AK_FORCE_INLINE bool isValidForwardLinkPosition(const int forwardLinkAddress) {
-        return forwardLinkAddress != 0;
-    }
-
-    static int getParentPtNodePosOffsetAndAdvancePosition(const uint8_t *const buffer,
-            int *const pos);
-
-    static int getParentPtNodePos(const int parentOffset, const int ptNodePos);
-
-    static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer, int *const pos);
-
-    /**
-     * Node Flags
-     */
-    static AK_FORCE_INLINE bool isMoved(const NodeFlags flags) {
-        return FLAG_IS_MOVED == (MASK_MOVED & flags);
-    }
-
-    static AK_FORCE_INLINE bool isDeleted(const NodeFlags flags) {
-        return FLAG_IS_DELETED == (MASK_MOVED & flags);
-    }
-
-    static AK_FORCE_INLINE NodeFlags updateAndGetFlags(const NodeFlags originalFlags,
-            const bool isMoved, const bool isDeleted) {
-        NodeFlags flags = originalFlags;
-        flags = isMoved ? ((flags & (~MASK_MOVED)) | FLAG_IS_MOVED) : flags;
-        flags = isDeleted ? ((flags & (~MASK_MOVED)) | FLAG_IS_DELETED) : flags;
-        flags = (!isMoved && !isDeleted) ? ((flags & (~MASK_MOVED)) | FLAG_IS_NOT_MOVED) : flags;
-        return flags;
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPatriciaTrieReadingUtils);
-
-    static const NodeFlags MASK_MOVED;
-    static const NodeFlags FLAG_IS_NOT_MOVED;
-    static const NodeFlags FLAG_IS_MOVED;
-    static const NodeFlags FLAG_IS_DELETED;
-};
-} // namespace latinime
-#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_READING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.cpp
deleted file mode 100644
index 052558b..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.cpp
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h"
-
-#include "suggest/policyimpl/dictionary/bigram/dynamic_bigram_list_policy.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_node_reader.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_helper.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h"
-#include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h"
-#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
-#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
-#include "utils/hash_map_compat.h"
-
-namespace latinime {
-
-const int DynamicPatriciaTrieWritingHelper::CHILDREN_POSITION_FIELD_SIZE = 3;
-// TODO: Make MAX_DICTIONARY_SIZE 8MB.
-const size_t DynamicPatriciaTrieWritingHelper::MAX_DICTIONARY_SIZE = 2 * 1024 * 1024;
-
-bool DynamicPatriciaTrieWritingHelper::addUnigramWord(
-        DynamicPatriciaTrieReadingHelper *const readingHelper,
-        const int *const wordCodePoints, const int codePointCount, const int probability,
-        bool *const outAddedNewUnigram) {
-    int parentPos = NOT_A_DICT_POS;
-    while (!readingHelper->isEnd()) {
-        const int matchedCodePointCount = readingHelper->getPrevTotalCodePointCount();
-        if (!readingHelper->isMatchedCodePoint(0 /* index */,
-                wordCodePoints[matchedCodePointCount])) {
-            // The first code point is different from target code point. Skip this node and read
-            // the next sibling node.
-            readingHelper->readNextSiblingNode();
-            continue;
-        }
-        // Check following merged node code points.
-        const DynamicPatriciaTrieNodeReader *const nodeReader = readingHelper->getNodeReader();
-        const int nodeCodePointCount = nodeReader->getCodePointCount();
-        for (int j = 1; j < nodeCodePointCount; ++j) {
-            const int nextIndex = matchedCodePointCount + j;
-            if (nextIndex >= codePointCount || !readingHelper->isMatchedCodePoint(j,
-                    wordCodePoints[matchedCodePointCount + j])) {
-                *outAddedNewUnigram = true;
-                return reallocatePtNodeAndAddNewPtNodes(nodeReader,
-                        readingHelper->getMergedNodeCodePoints(), j,
-                        getUpdatedProbability(NOT_A_PROBABILITY /* originalProbability */,
-                                probability),
-                        wordCodePoints + matchedCodePointCount,
-                        codePointCount - matchedCodePointCount);
-            }
-        }
-        // All characters are matched.
-        if (codePointCount == readingHelper->getTotalCodePointCount()) {
-            return setPtNodeProbability(nodeReader, probability,
-                    readingHelper->getMergedNodeCodePoints(), outAddedNewUnigram);
-        }
-        if (!nodeReader->hasChildren()) {
-            *outAddedNewUnigram = true;
-            return createChildrenPtNodeArrayAndAChildPtNode(nodeReader,
-                    getUpdatedProbability(NOT_A_PROBABILITY /* originalProbability */, probability),
-                    wordCodePoints + readingHelper->getTotalCodePointCount(),
-                    codePointCount - readingHelper->getTotalCodePointCount());
-        }
-        // Advance to the children nodes.
-        parentPos = nodeReader->getHeadPos();
-        readingHelper->readChildNode();
-    }
-    if (readingHelper->isError()) {
-        // The dictionary is invalid.
-        return false;
-    }
-    int pos = readingHelper->getPosOfLastForwardLinkField();
-    *outAddedNewUnigram = true;
-    return createAndInsertNodeIntoPtNodeArray(parentPos,
-            wordCodePoints + readingHelper->getPrevTotalCodePointCount(),
-            codePointCount - readingHelper->getPrevTotalCodePointCount(),
-            getUpdatedProbability(NOT_A_PROBABILITY /* originalProbability */, probability), &pos);
-}
-
-bool DynamicPatriciaTrieWritingHelper::addBigramWords(const int word0Pos, const int word1Pos,
-        const int probability, bool *const outAddedNewBigram) {
-    int mMergedNodeCodePoints[MAX_WORD_LENGTH];
-    DynamicPatriciaTrieNodeReader nodeReader(mBuffer, mBigramPolicy, mShortcutPolicy);
-    nodeReader.fetchNodeInfoInBufferFromPtNodePosAndGetNodeCodePoints(word0Pos, MAX_WORD_LENGTH,
-            mMergedNodeCodePoints);
-    // Move node to add bigram entry.
-    const int newNodePos = mBuffer->getTailPosition();
-    if (!markNodeAsMovedAndSetPosition(&nodeReader, newNodePos, newNodePos)) {
-        return false;
-    }
-    int writingPos = newNodePos;
-    // Write a new PtNode using original PtNode's info to the tail of the dictionary in mBuffer.
-    if (!writePtNodeToBufferByCopyingPtNodeInfo(mBuffer, &nodeReader, nodeReader.getParentPos(),
-            mMergedNodeCodePoints, nodeReader.getCodePointCount(), nodeReader.getProbability(),
-            &writingPos)) {
-        return false;
-    }
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(newNodePos);
-    if (nodeReader.getBigramsPos() != NOT_A_DICT_POS) {
-        // Insert a new bigram entry into the existing bigram list.
-        int bigramListPos = nodeReader.getBigramsPos();
-        return mBigramPolicy->addNewBigramEntryToBigramList(word1Pos, probability, &bigramListPos,
-                outAddedNewBigram);
-    } else {
-        // The PtNode doesn't have a bigram list.
-        *outAddedNewBigram = true;
-        // First, Write a bigram entry at the tail position of the PtNode.
-        if (!mBigramPolicy->writeNewBigramEntry(word1Pos, probability, &writingPos)) {
-            return false;
-        }
-        // Then, Mark as the PtNode having bigram list in the flags.
-        const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
-                PatriciaTrieReadingUtils::createAndGetFlags(nodeReader.isBlacklisted(),
-                        nodeReader.isNotAWord(), nodeReader.getProbability() != NOT_A_PROBABILITY,
-                        nodeReader.getShortcutPos() != NOT_A_DICT_POS, true /* hasBigrams */,
-                        nodeReader.getCodePointCount() > 1, CHILDREN_POSITION_FIELD_SIZE);
-        writingPos = newNodePos;
-        // Write updated flags into the moved PtNode's flags field.
-        return DynamicPatriciaTrieWritingUtils::writeFlagsAndAdvancePosition(mBuffer, updatedFlags,
-                &writingPos);
-    }
-}
-
-// Remove a bigram relation from word0Pos to word1Pos.
-bool DynamicPatriciaTrieWritingHelper::removeBigramWords(const int word0Pos, const int word1Pos) {
-    DynamicPatriciaTrieNodeReader nodeReader(mBuffer, mBigramPolicy, mShortcutPolicy);
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(word0Pos);
-    if (nodeReader.getBigramsPos() == NOT_A_DICT_POS) {
-        return false;
-    }
-    return mBigramPolicy->removeBigram(nodeReader.getBigramsPos(), word1Pos);
-}
-
-void DynamicPatriciaTrieWritingHelper::writeToDictFile(const char *const fileName,
-        const HeaderPolicy *const headerPolicy, const int unigramCount, const int bigramCount) {
-    BufferWithExtendableBuffer headerBuffer(0 /* originalBuffer */, 0 /* originalBufferSize */);
-    const int extendedRegionSize = headerPolicy->getExtendedRegionSize() +
-            mBuffer->getUsedAdditionalBufferSize();
-    if (!headerPolicy->writeHeaderToBuffer(&headerBuffer, false /* updatesLastUpdatedTime */,
-            false /* updatesLastDecayedTime */, unigramCount, bigramCount, extendedRegionSize)) {
-        return;
-    }
-    DictFileWritingUtils::flushAllHeaderAndBodyToFile(fileName, &headerBuffer, mBuffer);
-}
-
-void DynamicPatriciaTrieWritingHelper::writeToDictFileWithGC(const int rootPtNodeArrayPos,
-        const char *const fileName, const HeaderPolicy *const headerPolicy) {
-    BufferWithExtendableBuffer newDictBuffer(0 /* originalBuffer */, 0 /* originalBufferSize */,
-            MAX_DICTIONARY_SIZE);
-    int unigramCount = 0;
-    int bigramCount = 0;
-    if (mNeedsToDecay) {
-        ForgettingCurveUtils::sTimeKeeper.setCurrentTime();
-    }
-    if (!runGC(rootPtNodeArrayPos, headerPolicy, &newDictBuffer, &unigramCount, &bigramCount)) {
-        return;
-    }
-    BufferWithExtendableBuffer headerBuffer(0 /* originalBuffer */, 0 /* originalBufferSize */);
-    if (!headerPolicy->writeHeaderToBuffer(&headerBuffer, true /* updatesLastUpdatedTime */,
-            mNeedsToDecay, unigramCount, bigramCount, 0 /* extendedRegionSize */)) {
-        return;
-    }
-    DictFileWritingUtils::flushAllHeaderAndBodyToFile(fileName, &headerBuffer, &newDictBuffer);
-}
-
-bool DynamicPatriciaTrieWritingHelper::markNodeAsDeleted(
-        const DynamicPatriciaTrieNodeReader *const nodeToUpdate) {
-    int pos = nodeToUpdate->getHeadPos();
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(pos);
-    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
-    if (usesAdditionalBuffer) {
-        pos -= mBuffer->getOriginalBufferSize();
-    }
-    // Read original flags
-    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
-            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
-    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
-            DynamicPatriciaTrieReadingUtils::updateAndGetFlags(originalFlags, false /* isMoved */,
-                    true /* isDeleted */);
-    int writingPos = nodeToUpdate->getHeadPos();
-    // Update flags.
-    return DynamicPatriciaTrieWritingUtils::writeFlagsAndAdvancePosition(mBuffer, updatedFlags,
-            &writingPos);
-}
-
-bool DynamicPatriciaTrieWritingHelper::markNodeAsMovedAndSetPosition(
-        const DynamicPatriciaTrieNodeReader *const originalNode, const int movedPos,
-        const int bigramLinkedNodePos) {
-    int pos = originalNode->getHeadPos();
-    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(pos);
-    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
-    if (usesAdditionalBuffer) {
-        pos -= mBuffer->getOriginalBufferSize();
-    }
-    // Read original flags
-    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
-            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
-    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
-            DynamicPatriciaTrieReadingUtils::updateAndGetFlags(originalFlags, true /* isMoved */,
-                    false /* isDeleted */);
-    int writingPos = originalNode->getHeadPos();
-    // Update flags.
-    if (!DynamicPatriciaTrieWritingUtils::writeFlagsAndAdvancePosition(mBuffer, updatedFlags,
-            &writingPos)) {
-        return false;
-    }
-    // Update moved position, which is stored in the parent offset field.
-    if (!DynamicPatriciaTrieWritingUtils::writeParentPosOffsetAndAdvancePosition(
-            mBuffer, movedPos, originalNode->getHeadPos(), &writingPos)) {
-        return false;
-    }
-    // Update bigram linked node position, which is stored in the children position field.
-    int childrenPosFieldPos = originalNode->getChildrenPosFieldPos();
-    if (!DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(
-            mBuffer, bigramLinkedNodePos, &childrenPosFieldPos)) {
-        return false;
-    }
-    if (originalNode->hasChildren()) {
-        // Update children's parent position.
-        DynamicPatriciaTrieReadingHelper readingHelper(mBuffer, mBigramPolicy, mShortcutPolicy);
-        const DynamicPatriciaTrieNodeReader *const nodeReader = readingHelper.getNodeReader();
-        readingHelper.initWithPtNodeArrayPos(originalNode->getChildrenPos());
-        while (!readingHelper.isEnd()) {
-            int parentOffsetFieldPos = nodeReader->getHeadPos()
-                    + DynamicPatriciaTrieWritingUtils::NODE_FLAG_FIELD_SIZE;
-            if (!DynamicPatriciaTrieWritingUtils::writeParentPosOffsetAndAdvancePosition(
-                    mBuffer, bigramLinkedNodePos, nodeReader->getHeadPos(),
-                    &parentOffsetFieldPos)) {
-                // Parent offset cannot be written because of a bug or a broken dictionary; thus,
-                // we give up to update dictionary.
-                return false;
-            }
-            readingHelper.readNextSiblingNode();
-        }
-    }
-    return true;
-}
-
-// Write new PtNode at writingPos.
-bool DynamicPatriciaTrieWritingHelper::writePtNodeWithFullInfoToBuffer(
-        BufferWithExtendableBuffer *const bufferToWrite, const bool isBlacklisted,
-        const bool isNotAWord, const int parentPos, const int *const codePoints,
-        const int codePointCount, const int probability, const int childrenPos,
-        const int originalBigramListPos, const int originalShortcutListPos,
-        int *const writingPos) {
-    const int nodePos = *writingPos;
-    // Write dummy flags. The Node flags are updated with appropriate flags at the last step of the
-    // PtNode writing.
-    if (!DynamicPatriciaTrieWritingUtils::writeFlagsAndAdvancePosition(bufferToWrite,
-            0 /* nodeFlags */, writingPos)) {
-        return false;
-    }
-    // Calculate a parent offset and write the offset.
-    if (!DynamicPatriciaTrieWritingUtils::writeParentPosOffsetAndAdvancePosition(bufferToWrite,
-            parentPos, nodePos, writingPos)) {
-        return false;
-    }
-    // Write code points
-    if (!DynamicPatriciaTrieWritingUtils::writeCodePointsAndAdvancePosition(bufferToWrite,
-            codePoints, codePointCount, writingPos)) {
-        return false;
-    }
-    // Write probability when the probability is a valid probability, which means this node is
-    // terminal.
-    if (probability != NOT_A_PROBABILITY) {
-        if (!DynamicPatriciaTrieWritingUtils::writeProbabilityAndAdvancePosition(bufferToWrite,
-                probability, writingPos)) {
-            return false;
-        }
-    }
-    // Write children position
-    if (!DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(bufferToWrite,
-            childrenPos, writingPos)) {
-        return false;
-    }
-    // Copy shortcut list when the originalShortcutListPos is valid dictionary position.
-    if (originalShortcutListPos != NOT_A_DICT_POS) {
-        int fromPos = originalShortcutListPos;
-        if (!mShortcutPolicy->copyAllShortcutsAndReturnIfSucceededOrNot(bufferToWrite, &fromPos,
-                writingPos)) {
-            return false;
-        }
-    }
-    // Copy bigram list when the originalBigramListPos is valid dictionary position.
-    int bigramCount = 0;
-    if (originalBigramListPos != NOT_A_DICT_POS) {
-        int fromPos = originalBigramListPos;
-        if (!mBigramPolicy->copyAllBigrams(bufferToWrite, &fromPos, writingPos, &bigramCount)) {
-            return false;
-        }
-    }
-    // Create node flags and write them.
-    PatriciaTrieReadingUtils::NodeFlags nodeFlags =
-            PatriciaTrieReadingUtils::createAndGetFlags(isBlacklisted, isNotAWord,
-                    probability != NOT_A_PROBABILITY /* isTerminal */,
-                    originalShortcutListPos != NOT_A_DICT_POS /* hasShortcutTargets */,
-                    bigramCount > 0 /* hasBigrams */, codePointCount > 1 /* hasMultipleChars */,
-                    CHILDREN_POSITION_FIELD_SIZE);
-    int flagsFieldPos = nodePos;
-    if (!DynamicPatriciaTrieWritingUtils::writeFlagsAndAdvancePosition(bufferToWrite, nodeFlags,
-            &flagsFieldPos)) {
-        return false;
-    }
-    return true;
-}
-
-bool DynamicPatriciaTrieWritingHelper::writePtNodeToBuffer(
-        BufferWithExtendableBuffer *const bufferToWrite, const int parentPos,
-        const int *const codePoints, const int codePointCount, const int probability,
-        int *const writingPos) {
-    return writePtNodeWithFullInfoToBuffer(bufferToWrite, false /* isBlacklisted */,
-            false /* isNotAWord */, parentPos, codePoints, codePointCount, probability,
-            NOT_A_DICT_POS /* childrenPos */, NOT_A_DICT_POS /* originalBigramsPos */,
-            NOT_A_DICT_POS /* originalShortcutPos */, writingPos);
-}
-
-bool DynamicPatriciaTrieWritingHelper::writePtNodeToBufferByCopyingPtNodeInfo(
-        BufferWithExtendableBuffer *const bufferToWrite,
-        const DynamicPatriciaTrieNodeReader *const originalNode, const int parentPos,
-        const int *const codePoints, const int codePointCount, const int probability,
-        int *const writingPos) {
-    return writePtNodeWithFullInfoToBuffer(bufferToWrite, originalNode->isBlacklisted(),
-            originalNode->isNotAWord(), parentPos, codePoints, codePointCount, probability,
-            originalNode->getChildrenPos(), originalNode->getBigramsPos(),
-            originalNode->getShortcutPos(), writingPos);
-}
-
-bool DynamicPatriciaTrieWritingHelper::createAndInsertNodeIntoPtNodeArray(const int parentPos,
-        const int *const nodeCodePoints, const int nodeCodePointCount, const int probability,
-        int *const forwardLinkFieldPos) {
-    const int newPtNodeArrayPos = mBuffer->getTailPosition();
-    if (!DynamicPatriciaTrieWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
-            newPtNodeArrayPos, forwardLinkFieldPos)) {
-        return false;
-    }
-    return createNewPtNodeArrayWithAChildPtNode(parentPos, nodeCodePoints, nodeCodePointCount,
-            probability);
-}
-
-bool DynamicPatriciaTrieWritingHelper::setPtNodeProbability(
-        const DynamicPatriciaTrieNodeReader *const originalPtNode, const int probability,
-        const int *const codePoints, bool *const outAddedNewUnigram) {
-    if (originalPtNode->isTerminal()) {
-        // Overwrites the probability.
-        *outAddedNewUnigram = false;
-        const int probabilityToWrite = getUpdatedProbability(originalPtNode->getProbability(),
-                probability);
-        int probabilityFieldPos = originalPtNode->getProbabilityFieldPos();
-        if (!DynamicPatriciaTrieWritingUtils::writeProbabilityAndAdvancePosition(mBuffer,
-                probabilityToWrite, &probabilityFieldPos)) {
-            return false;
-        }
-    } else {
-        // Make the node terminal and write the probability.
-        *outAddedNewUnigram = true;
-        int movedPos = mBuffer->getTailPosition();
-        if (!markNodeAsMovedAndSetPosition(originalPtNode, movedPos, movedPos)) {
-            return false;
-        }
-        if (!writePtNodeToBufferByCopyingPtNodeInfo(mBuffer, originalPtNode,
-                originalPtNode->getParentPos(), codePoints, originalPtNode->getCodePointCount(),
-                getUpdatedProbability(NOT_A_PROBABILITY /* originalProbability */, probability),
-                &movedPos)) {
-            return false;
-        }
-    }
-    return true;
-}
-
-bool DynamicPatriciaTrieWritingHelper::createChildrenPtNodeArrayAndAChildPtNode(
-        const DynamicPatriciaTrieNodeReader *const parentNode, const int probability,
-        const int *const codePoints, const int codePointCount) {
-    const int newPtNodeArrayPos = mBuffer->getTailPosition();
-    int childrenPosFieldPos = parentNode->getChildrenPosFieldPos();
-    if (!DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(mBuffer,
-            newPtNodeArrayPos, &childrenPosFieldPos)) {
-        return false;
-    }
-    return createNewPtNodeArrayWithAChildPtNode(parentNode->getHeadPos(), codePoints,
-            codePointCount, probability);
-}
-
-bool DynamicPatriciaTrieWritingHelper::createNewPtNodeArrayWithAChildPtNode(
-        const int parentPtNodePos, const int *const nodeCodePoints, const int nodeCodePointCount,
-        const int probability) {
-    int writingPos = mBuffer->getTailPosition();
-    if (!DynamicPatriciaTrieWritingUtils::writePtNodeArraySizeAndAdvancePosition(mBuffer,
-            1 /* arraySize */, &writingPos)) {
-        return false;
-    }
-    if (!writePtNodeToBuffer(mBuffer, parentPtNodePos, nodeCodePoints, nodeCodePointCount,
-            probability, &writingPos)) {
-        return false;
-    }
-    if (!DynamicPatriciaTrieWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
-            NOT_A_DICT_POS /* forwardLinkPos */, &writingPos)) {
-        return false;
-    }
-    return true;
-}
-
-// Returns whether the dictionary updating was succeeded or not.
-bool DynamicPatriciaTrieWritingHelper::reallocatePtNodeAndAddNewPtNodes(
-        const DynamicPatriciaTrieNodeReader *const reallocatingPtNode,
-        const int *const reallocatingPtNodeCodePoints, const int overlappingCodePointCount,
-        const int probabilityOfNewPtNode, const int *const newNodeCodePoints,
-        const int newNodeCodePointCount) {
-    // When addsExtraChild is true, split the reallocating PtNode and add new child.
-    // Reallocating PtNode: abcde, newNode: abcxy.
-    // abc (1st, not terminal) __ de (2nd)
-    //                         \_ xy (extra child, terminal)
-    // Otherwise, this method makes 1st part terminal and write probabilityOfNewPtNode.
-    // Reallocating PtNode: abcde, newNode: abc.
-    // abc (1st, terminal) __ de (2nd)
-    const bool addsExtraChild = newNodeCodePointCount > overlappingCodePointCount;
-    const int firstPartOfReallocatedPtNodePos = mBuffer->getTailPosition();
-    int writingPos = firstPartOfReallocatedPtNodePos;
-    // Write the 1st part of the reallocating node. The children position will be updated later
-    // with actual children position.
-    const int newProbability = addsExtraChild ? NOT_A_PROBABILITY : probabilityOfNewPtNode;
-    if (!writePtNodeToBuffer(mBuffer, reallocatingPtNode->getParentPos(),
-            reallocatingPtNodeCodePoints, overlappingCodePointCount, newProbability,
-            &writingPos)) {
-        return false;
-    }
-    const int actualChildrenPos = writingPos;
-    // Create new children PtNode array.
-    const size_t newPtNodeCount = addsExtraChild ? 2 : 1;
-    if (!DynamicPatriciaTrieWritingUtils::writePtNodeArraySizeAndAdvancePosition(mBuffer,
-            newPtNodeCount, &writingPos)) {
-        return false;
-    }
-    // Write the 2nd part of the reallocating node.
-    const int secondPartOfReallocatedPtNodePos = writingPos;
-    if (!writePtNodeToBufferByCopyingPtNodeInfo(mBuffer, reallocatingPtNode,
-            firstPartOfReallocatedPtNodePos,
-            reallocatingPtNodeCodePoints + overlappingCodePointCount,
-            reallocatingPtNode->getCodePointCount() - overlappingCodePointCount,
-            reallocatingPtNode->getProbability(), &writingPos)) {
-        return false;
-    }
-    if (addsExtraChild) {
-        if (!writePtNodeToBuffer(mBuffer, firstPartOfReallocatedPtNodePos,
-                newNodeCodePoints + overlappingCodePointCount,
-                newNodeCodePointCount - overlappingCodePointCount, probabilityOfNewPtNode,
-                &writingPos)) {
-            return false;
-        }
-    }
-    if (!DynamicPatriciaTrieWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
-            NOT_A_DICT_POS /* forwardLinkPos */, &writingPos)) {
-        return false;
-    }
-    // Update original reallocatingPtNode as moved.
-    if (!markNodeAsMovedAndSetPosition(reallocatingPtNode, firstPartOfReallocatedPtNodePos,
-            secondPartOfReallocatedPtNodePos)) {
-        return false;
-    }
-    // Load node info. Information of the 1st part will be fetched.
-    DynamicPatriciaTrieNodeReader nodeReader(mBuffer, mBigramPolicy, mShortcutPolicy);
-    nodeReader.fetchNodeInfoInBufferFromPtNodePos(firstPartOfReallocatedPtNodePos);
-    // Update children position.
-    int childrenPosFieldPos = nodeReader.getChildrenPosFieldPos();
-    if (!DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(mBuffer,
-            actualChildrenPos, &childrenPosFieldPos)) {
-        return false;
-    }
-    return true;
-}
-
-bool DynamicPatriciaTrieWritingHelper::runGC(const int rootPtNodeArrayPos,
-        const HeaderPolicy *const headerPolicy, BufferWithExtendableBuffer *const bufferToWrite,
-        int *const outUnigramCount, int *const outBigramCount) {
-    DynamicPatriciaTrieReadingHelper readingHelper(mBuffer, mBigramPolicy, mShortcutPolicy);
-    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
-    DynamicPatriciaTrieGcEventListeners
-            ::TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
-                    traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted(
-                            headerPolicy, this, mBuffer, mNeedsToDecay);
-    if (!readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
-            &traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted)) {
-        return false;
-    }
-    if (mNeedsToDecay && traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
-            .getValidUnigramCount() > ForgettingCurveUtils::MAX_UNIGRAM_COUNT_AFTER_GC) {
-        // TODO: Remove more unigrams.
-    }
-
-    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
-    DynamicPatriciaTrieGcEventListeners::TraversePolicyToUpdateBigramProbability
-            traversePolicyToUpdateBigramProbability(mBigramPolicy);
-    if (!readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
-            &traversePolicyToUpdateBigramProbability)) {
-        return false;
-    }
-    if (mNeedsToDecay && traversePolicyToUpdateBigramProbability.getValidBigramEntryCount()
-            > ForgettingCurveUtils::MAX_BIGRAM_COUNT_AFTER_GC) {
-        // TODO: Remove more bigrams.
-    }
-
-    // Mapping from positions in mBuffer to positions in bufferToWrite.
-    DictPositionRelocationMap dictPositionRelocationMap;
-    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
-    DynamicPatriciaTrieGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
-            traversePolicyToPlaceAndWriteValidPtNodesToBuffer(this, bufferToWrite,
-                    &dictPositionRelocationMap);
-    if (!readingHelper.traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
-            &traversePolicyToPlaceAndWriteValidPtNodesToBuffer)) {
-        return false;
-    }
-
-    // Create policy instance for the GCed dictionary.
-    DynamicShortcutListPolicy newDictShortcutPolicy(bufferToWrite);
-    DynamicBigramListPolicy newDictBigramPolicy(headerPolicy, bufferToWrite, &newDictShortcutPolicy,
-            mNeedsToDecay);
-    // Create reading helper for the GCed dictionary.
-    DynamicPatriciaTrieReadingHelper newDictReadingHelper(bufferToWrite, &newDictBigramPolicy,
-            &newDictShortcutPolicy);
-    newDictReadingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
-    DynamicPatriciaTrieGcEventListeners::TraversePolicyToUpdateAllPositionFields
-            traversePolicyToUpdateAllPositionFields(this, &newDictBigramPolicy, bufferToWrite,
-                    &dictPositionRelocationMap);
-    if (!newDictReadingHelper.traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
-            &traversePolicyToUpdateAllPositionFields)) {
-        return false;
-    }
-    *outUnigramCount = traversePolicyToUpdateAllPositionFields.getUnigramCount();
-    *outBigramCount = traversePolicyToUpdateAllPositionFields.getBigramCount();
-    return true;
-}
-
-int DynamicPatriciaTrieWritingHelper::getUpdatedProbability(const int originalProbability,
-        const int newProbability) {
-    if (mNeedsToDecay) {
-        return ForgettingCurveUtils::getUpdatedEncodedProbability(originalProbability,
-                newProbability);
-    } else {
-        return newProbability;
-    }
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h
deleted file mode 100644
index ca86647..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_helper.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_WRITING_HELPER_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_WRITING_HELPER_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "utils/hash_map_compat.h"
-
-namespace latinime {
-
-class BufferWithExtendableBuffer;
-class DynamicBigramListPolicy;
-class DynamicPatriciaTrieNodeReader;
-class DynamicPatriciaTrieReadingHelper;
-class DynamicShortcutListPolicy;
-class HeaderPolicy;
-
-class DynamicPatriciaTrieWritingHelper {
- public:
-    typedef hash_map_compat<int, int> PtNodeArrayPositionRelocationMap;
-    typedef hash_map_compat<int, int> PtNodePositionRelocationMap;
-    struct DictPositionRelocationMap {
-     public:
-        DictPositionRelocationMap()
-                : mPtNodeArrayPositionRelocationMap(), mPtNodePositionRelocationMap() {}
-
-        PtNodeArrayPositionRelocationMap mPtNodeArrayPositionRelocationMap;
-        PtNodePositionRelocationMap mPtNodePositionRelocationMap;
-
-     private:
-        DISALLOW_COPY_AND_ASSIGN(DictPositionRelocationMap);
-    };
-
-    static const size_t MAX_DICTIONARY_SIZE;
-
-    DynamicPatriciaTrieWritingHelper(BufferWithExtendableBuffer *const buffer,
-            DynamicBigramListPolicy *const bigramPolicy,
-            DynamicShortcutListPolicy *const shortcutPolicy, const bool needsToDecay)
-            : mBuffer(buffer), mBigramPolicy(bigramPolicy), mShortcutPolicy(shortcutPolicy),
-              mNeedsToDecay(needsToDecay) {}
-
-    ~DynamicPatriciaTrieWritingHelper() {}
-
-    // Add a word to the dictionary. If the word already exists, update the probability.
-    bool addUnigramWord(DynamicPatriciaTrieReadingHelper *const readingHelper,
-            const int *const wordCodePoints, const int codePointCount, const int probability,
-            bool *const outAddedNewUnigram);
-
-    // Add a bigram relation from word0Pos to word1Pos.
-    bool addBigramWords(const int word0Pos, const int word1Pos, const int probability,
-            bool *const outAddedNewBigram);
-
-    // Remove a bigram relation from word0Pos to word1Pos.
-    bool removeBigramWords(const int word0Pos, const int word1Pos);
-
-    void writeToDictFile(const char *const fileName, const HeaderPolicy *const headerPolicy,
-            const int unigramCount, const int bigramCount);
-
-    void writeToDictFileWithGC(const int rootPtNodeArrayPos, const char *const fileName,
-            const HeaderPolicy *const headerPolicy);
-
-    // CAVEAT: This method must be called only from inner classes of
-    // DynamicPatriciaTrieGcEventListeners.
-    bool markNodeAsDeleted(const DynamicPatriciaTrieNodeReader *const nodeToUpdate);
-
-    // CAVEAT: This method must be called only from this class or inner classes of
-    // DynamicPatriciaTrieGcEventListeners.
-    bool writePtNodeToBufferByCopyingPtNodeInfo(BufferWithExtendableBuffer *const bufferToWrite,
-            const DynamicPatriciaTrieNodeReader *const originalNode, const int parentPos,
-            const int *const codePoints, const int codePointCount, const int probability,
-            int *const writingPos);
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPatriciaTrieWritingHelper);
-
-    static const int CHILDREN_POSITION_FIELD_SIZE;
-
-    BufferWithExtendableBuffer *const mBuffer;
-    DynamicBigramListPolicy *const mBigramPolicy;
-    DynamicShortcutListPolicy *const mShortcutPolicy;
-    const bool mNeedsToDecay;
-
-    bool markNodeAsMovedAndSetPosition(const DynamicPatriciaTrieNodeReader *const nodeToUpdate,
-            const int movedPos, const int bigramLinkedNodePos);
-
-    bool writePtNodeWithFullInfoToBuffer(BufferWithExtendableBuffer *const bufferToWrite,
-            const bool isBlacklisted, const bool isNotAWord,
-            const int parentPos,  const int *const codePoints, const int codePointCount,
-            const int probability, const int childrenPos, const int originalBigramListPos,
-            const int originalShortcutListPos, int *const writingPos);
-
-    bool writePtNodeToBuffer(BufferWithExtendableBuffer *const bufferToWrite,
-            const int parentPos, const int *const codePoints, const int codePointCount,
-            const int probability, int *const writingPos);
-
-    bool createAndInsertNodeIntoPtNodeArray(const int parentPos, const int *const nodeCodePoints,
-            const int nodeCodePointCount, const int probability, int *const forwardLinkFieldPos);
-
-    bool setPtNodeProbability(const DynamicPatriciaTrieNodeReader *const originalNode,
-            const int probability, const int *const codePoints, bool *const outAddedNewUnigram);
-
-    bool createChildrenPtNodeArrayAndAChildPtNode(
-            const DynamicPatriciaTrieNodeReader *const parentNode, const int probability,
-            const int *const codePoints, const int codePointCount);
-
-    bool createNewPtNodeArrayWithAChildPtNode(const int parentPos, const int *const nodeCodePoints,
-            const int nodeCodePointCount, const int probability);
-
-    bool reallocatePtNodeAndAddNewPtNodes(
-            const DynamicPatriciaTrieNodeReader *const reallocatingPtNode,
-            const int *const reallocatingPtNodeCodePoints, const int overlappingCodePointCount,
-            const int probabilityOfNewPtNode, const int *const newNodeCodePoints,
-            const int newNodeCodePointCount);
-
-    bool runGC(const int rootPtNodeArrayPos, const HeaderPolicy *const headerPolicy,
-            BufferWithExtendableBuffer *const bufferToWrite, int *const outUnigramCount,
-            int *const outBigramCount);
-
-    int getUpdatedProbability(const int originalProbability, const int newProbability);
-};
-} // namespace latinime
-#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_WRITING_HELPER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.cpp
deleted file mode 100644
index 30ff10c..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h"
-
-#include <cstddef>
-#include <cstdlib>
-#include <stdint.h>
-
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-
-namespace latinime {
-
-const size_t DynamicPatriciaTrieWritingUtils::MAX_PTNODE_ARRAY_SIZE_TO_USE_SMALL_SIZE_FIELD = 0x7F;
-const size_t DynamicPatriciaTrieWritingUtils::MAX_PTNODE_ARRAY_SIZE = 0x7FFF;
-const int DynamicPatriciaTrieWritingUtils::SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE = 1;
-const int DynamicPatriciaTrieWritingUtils::LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE = 2;
-const int DynamicPatriciaTrieWritingUtils::LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG = 0x8000;
-const int DynamicPatriciaTrieWritingUtils::DICT_OFFSET_FIELD_SIZE = 3;
-const int DynamicPatriciaTrieWritingUtils::MAX_DICT_OFFSET_VALUE = 0x7FFFFF;
-const int DynamicPatriciaTrieWritingUtils::MIN_DICT_OFFSET_VALUE = -0x7FFFFF;
-const int DynamicPatriciaTrieWritingUtils::DICT_OFFSET_NEGATIVE_FLAG = 0x800000;
-const int DynamicPatriciaTrieWritingUtils::PROBABILITY_FIELD_SIZE = 1;
-const int DynamicPatriciaTrieWritingUtils::NODE_FLAG_FIELD_SIZE = 1;
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeEmptyDictionary(
-        BufferWithExtendableBuffer *const buffer, const int rootPos) {
-    int writingPos = rootPos;
-    if (!writePtNodeArraySizeAndAdvancePosition(buffer, 0 /* arraySize */, &writingPos)) {
-        return false;
-    }
-    return writeForwardLinkPositionAndAdvancePosition(buffer, NOT_A_DICT_POS /* forwardLinkPos */,
-            &writingPos);
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeForwardLinkPositionAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer, const int forwardLinkPos,
-        int *const forwardLinkFieldPos) {
-    return writeDictOffset(buffer, forwardLinkPos, (*forwardLinkFieldPos), forwardLinkFieldPos);
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writePtNodeArraySizeAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer, const size_t arraySize,
-        int *const arraySizeFieldPos) {
-    // Currently, all array size field to be created has LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE to
-    // simplify updating process.
-    // TODO: Use SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE for small arrays.
-    /*if (arraySize <= MAX_PTNODE_ARRAY_SIZE_TO_USE_SMALL_SIZE_FIELD) {
-        return buffer->writeUintAndAdvancePosition(arraySize, SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE,
-                arraySizeFieldPos);
-    } else */
-    if (arraySize <= MAX_PTNODE_ARRAY_SIZE) {
-        uint32_t data = arraySize | LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG;
-        return buffer->writeUintAndAdvancePosition(data, LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE,
-                arraySizeFieldPos);
-    } else {
-        AKLOGI("PtNode array size cannot be written because arraySize is too large: %zd",
-                arraySize);
-        ASSERT(false);
-        return false;
-    }
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeFlagsAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer,
-        const DynamicPatriciaTrieReadingUtils::NodeFlags nodeFlags, int *const nodeFlagsFieldPos) {
-    return buffer->writeUintAndAdvancePosition(nodeFlags, NODE_FLAG_FIELD_SIZE, nodeFlagsFieldPos);
-}
-
-// Note that parentOffset is offset from node's head position.
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeParentPosOffsetAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer, const int parentPos, const int basePos,
-        int *const parentPosFieldPos) {
-    return writeDictOffset(buffer, parentPos, basePos, parentPosFieldPos);
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeCodePointsAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer, const int *const codePoints,
-        const int codePointCount, int *const codePointFieldPos) {
-    if (codePointCount <= 0) {
-        AKLOGI("code points cannot be written because codePointCount is invalid: %d",
-                codePointCount);
-        ASSERT(false);
-        return false;
-    }
-    const bool hasMultipleCodePoints = codePointCount > 1;
-    return buffer->writeCodePointsAndAdvancePosition(codePoints, codePointCount,
-            hasMultipleCodePoints, codePointFieldPos);
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeProbabilityAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer, const int probability,
-        int *const probabilityFieldPos) {
-    if (probability < 0 || probability > MAX_PROBABILITY) {
-        AKLOGI("probability cannot be written because the probability is invalid: %d",
-                probability);
-        ASSERT(false);
-        return false;
-    }
-    return buffer->writeUintAndAdvancePosition(probability, PROBABILITY_FIELD_SIZE,
-            probabilityFieldPos);
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeChildrenPositionAndAdvancePosition(
-        BufferWithExtendableBuffer *const buffer, const int childrenPosition,
-        int *const childrenPositionFieldPos) {
-    return writeDictOffset(buffer, childrenPosition, (*childrenPositionFieldPos),
-            childrenPositionFieldPos);
-}
-
-/* static */ bool DynamicPatriciaTrieWritingUtils::writeDictOffset(
-        BufferWithExtendableBuffer *const buffer, const int targetPos, const int basePos,
-        int *const offsetFieldPos) {
-    int offset = targetPos - basePos;
-    if (targetPos == NOT_A_DICT_POS) {
-        offset = DynamicPatriciaTrieReadingUtils::DICT_OFFSET_INVALID;
-    } else if (offset == 0) {
-        offset = DynamicPatriciaTrieReadingUtils::DICT_OFFSET_ZERO_OFFSET;
-    }
-    if (offset > MAX_DICT_OFFSET_VALUE || offset < MIN_DICT_OFFSET_VALUE) {
-        AKLOGI("offset cannot be written because the offset is too large or too small: %d",
-                offset);
-        ASSERT(false);
-        return false;
-    }
-    uint32_t data = 0;
-    if (offset >= 0) {
-        data = offset;
-    } else {
-        data = abs(offset) | DICT_OFFSET_NEGATIVE_FLAG;
-    }
-    return buffer->writeUintAndAdvancePosition(data, DICT_OFFSET_FIELD_SIZE, offsetFieldPos);
-}
-}
diff --git a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h b/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h
deleted file mode 100644
index af76bc6..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_PATRICIA_TRIE_WRITING_UTILS_H
-#define LATINIME_DYNAMIC_PATRICIA_TRIE_WRITING_UTILS_H
-
-#include <cstddef>
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_reading_utils.h"
-
-namespace latinime {
-
-class BufferWithExtendableBuffer;
-
-class DynamicPatriciaTrieWritingUtils {
- public:
-    static const int NODE_FLAG_FIELD_SIZE;
-
-    static bool writeEmptyDictionary(BufferWithExtendableBuffer *const buffer, const int rootPos);
-
-    static bool writeForwardLinkPositionAndAdvancePosition(
-            BufferWithExtendableBuffer *const buffer, const int forwardLinkPos,
-            int *const forwardLinkFieldPos);
-
-    static bool writePtNodeArraySizeAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
-            const size_t arraySize, int *const arraySizeFieldPos);
-
-    static bool writeFlagsAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
-            const DynamicPatriciaTrieReadingUtils::NodeFlags nodeFlags,
-            int *const nodeFlagsFieldPos);
-
-    static bool writeParentPosOffsetAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
-            const int parentPosition, const int basePos, int *const parentPosFieldPos);
-
-    static bool writeCodePointsAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
-            const int *const codePoints, const int codePointCount, int *const codePointFieldPos);
-
-    static bool writeProbabilityAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
-            const int probability, int *const probabilityFieldPos);
-
-    static bool writeChildrenPositionAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
-            const int childrenPosition, int *const childrenPositionFieldPos);
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPatriciaTrieWritingUtils);
-
-    static const size_t MAX_PTNODE_ARRAY_SIZE_TO_USE_SMALL_SIZE_FIELD;
-    static const size_t MAX_PTNODE_ARRAY_SIZE;
-    static const int SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE;
-    static const int LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE;
-    static const int LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG;
-    static const int DICT_OFFSET_FIELD_SIZE;
-    static const int MAX_DICT_OFFSET_VALUE;
-    static const int MIN_DICT_OFFSET_VALUE;
-    static const int DICT_OFFSET_NEGATIVE_FLAG;
-    static const int PROBABILITY_FIELD_SIZE;
-
-    static bool writeDictOffset(BufferWithExtendableBuffer *const buffer, const int targetPos,
-            const int basePos, int *const offsetFieldPos);
-};
-} // namespace latinime
-#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_WRITING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.cpp
index eb072fb..6ed65d9 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.cpp
@@ -16,19 +16,45 @@
 
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
 
+#include <algorithm>
+
 namespace latinime {
 
-// Note that these are corresponding definitions in Java side in FormatSpec.FileHeader.
+// Note that these are corresponding definitions in Java side in DictionaryHeader.
 const char *const HeaderPolicy::MULTIPLE_WORDS_DEMOTION_RATE_KEY = "MULTIPLE_WORDS_DEMOTION_RATE";
+const char *const HeaderPolicy::REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY =
+        "REQUIRES_GERMAN_UMLAUT_PROCESSING";
 // TODO: Change attribute string to "IS_DECAYING_DICT".
 const char *const HeaderPolicy::IS_DECAYING_DICT_KEY = "USES_FORGETTING_CURVE";
-const char *const HeaderPolicy::LAST_UPDATED_TIME_KEY = "date";
+const char *const HeaderPolicy::DATE_KEY = "date";
 const char *const HeaderPolicy::LAST_DECAYED_TIME_KEY = "LAST_DECAYED_TIME";
 const char *const HeaderPolicy::UNIGRAM_COUNT_KEY = "UNIGRAM_COUNT";
 const char *const HeaderPolicy::BIGRAM_COUNT_KEY = "BIGRAM_COUNT";
 const char *const HeaderPolicy::EXTENDED_REGION_SIZE_KEY = "EXTENDED_REGION_SIZE";
+// Historical info is information that is needed to support decaying such as timestamp, level and
+// count.
+const char *const HeaderPolicy::HAS_HISTORICAL_INFO_KEY = "HAS_HISTORICAL_INFO";
+const char *const HeaderPolicy::LOCALE_KEY = "locale"; // match Java declaration
+const char *const HeaderPolicy::FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP_KEY =
+        "FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP";
+const char *const HeaderPolicy::FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID_KEY =
+        "FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID";
+const char *const HeaderPolicy::FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS_KEY =
+        "FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS";
+
+const char *const HeaderPolicy::MAX_UNIGRAM_COUNT_KEY = "MAX_UNIGRAM_COUNT";
+const char *const HeaderPolicy::MAX_BIGRAM_COUNT_KEY = "MAX_BIGRAM_COUNT";
+
 const int HeaderPolicy::DEFAULT_MULTIPLE_WORDS_DEMOTION_RATE = 100;
 const float HeaderPolicy::MULTIPLE_WORD_COST_MULTIPLIER_SCALE = 100.0f;
+const int HeaderPolicy::DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP = 2;
+const int HeaderPolicy::DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID = 3;
+// 30 days
+const int HeaderPolicy::DEFAULT_FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS =
+        30 * 24 * 60 * 60;
+
+const int HeaderPolicy::DEFAULT_MAX_UNIGRAM_COUNT = 10000;
+const int HeaderPolicy::DEFAULT_MAX_BIGRAM_COUNT = 10000;
 
 // Used for logging. Question mark is used to indicate that the key is not found.
 void HeaderPolicy::readHeaderValueOrQuestionMark(const char *const key, int *outValue,
@@ -40,20 +66,25 @@
     }
     std::vector<int> keyCodePointVector;
     HeaderReadWriteUtils::insertCharactersIntoVector(key, &keyCodePointVector);
-    HeaderReadWriteUtils::AttributeMap::const_iterator it = mAttributeMap.find(keyCodePointVector);
+    DictionaryHeaderStructurePolicy::AttributeMap::const_iterator it =
+            mAttributeMap.find(keyCodePointVector);
     if (it == mAttributeMap.end()) {
         // The key was not found.
         outValue[0] = '?';
         outValue[1] = '\0';
         return;
     }
-    const int terminalIndex = min(static_cast<int>(it->second.size()), outValueSize - 1);
+    const int terminalIndex = std::min(static_cast<int>(it->second.size()), outValueSize - 1);
     for (int i = 0; i < terminalIndex; ++i) {
         outValue[i] = it->second[i];
     }
     outValue[terminalIndex] = '\0';
 }
 
+const std::vector<int> HeaderPolicy::readLocale() const {
+    return HeaderReadWriteUtils::readCodePointVectorAttributeValue(&mAttributeMap, LOCALE_KEY);
+}
+
 float HeaderPolicy::readMultipleWordCostMultiplier() const {
     const int demotionRate = HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
             MULTIPLE_WORDS_DEMOTION_RATE_KEY, DEFAULT_MULTIPLE_WORDS_DEMOTION_RATE);
@@ -63,54 +94,65 @@
     return MULTIPLE_WORD_COST_MULTIPLIER_SCALE / static_cast<float>(demotionRate);
 }
 
-bool HeaderPolicy::writeHeaderToBuffer(BufferWithExtendableBuffer *const bufferToWrite,
-        const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime,
-        const int unigramCount, const int bigramCount, const int extendedRegionSize) const {
+bool HeaderPolicy::readRequiresGermanUmlautProcessing() const {
+    return HeaderReadWriteUtils::readBoolAttributeValue(&mAttributeMap,
+            REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY, false);
+}
+
+bool HeaderPolicy::fillInAndWriteHeaderToBuffer(const bool updatesLastDecayedTime,
+        const int unigramCount, const int bigramCount,
+        const int extendedRegionSize, BufferWithExtendableBuffer *const outBuffer) const {
     int writingPos = 0;
-    if (!HeaderReadWriteUtils::writeDictionaryVersion(bufferToWrite, mDictFormatVersion,
+    DictionaryHeaderStructurePolicy::AttributeMap attributeMapToWrite(mAttributeMap);
+    fillInHeader(updatesLastDecayedTime, unigramCount, bigramCount,
+            extendedRegionSize, &attributeMapToWrite);
+    if (!HeaderReadWriteUtils::writeDictionaryVersion(outBuffer, mDictFormatVersion,
             &writingPos)) {
         return false;
     }
-    if (!HeaderReadWriteUtils::writeDictionaryFlags(bufferToWrite, mDictionaryFlags,
+    if (!HeaderReadWriteUtils::writeDictionaryFlags(outBuffer, mDictionaryFlags,
             &writingPos)) {
         return false;
     }
     // Temporarily writes a dummy header size.
     int headerSizeFieldPos = writingPos;
-    if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(bufferToWrite, 0 /* size */,
+    if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(outBuffer, 0 /* size */,
             &writingPos)) {
         return false;
     }
-    HeaderReadWriteUtils::AttributeMap attributeMapTowrite(mAttributeMap);
-    HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, UNIGRAM_COUNT_KEY, unigramCount);
-    HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, BIGRAM_COUNT_KEY, bigramCount);
-    HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, EXTENDED_REGION_SIZE_KEY,
-            extendedRegionSize);
-    if (updatesLastUpdatedTime) {
-        // Set current time as a last updated time.
-        HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, LAST_UPDATED_TIME_KEY,
-                time(0));
-    }
-    if (updatesLastDecayedTime) {
-        // Set current time as a last updated time.
-        HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, LAST_DECAYED_TIME_KEY,
-                time(0));
-    }
-    if (!HeaderReadWriteUtils::writeHeaderAttributes(bufferToWrite, &attributeMapTowrite,
+    if (!HeaderReadWriteUtils::writeHeaderAttributes(outBuffer, &attributeMapToWrite,
             &writingPos)) {
         return false;
     }
-    // Writes an actual header size.
-    if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(bufferToWrite, writingPos,
+    // Writes the actual header size.
+    if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(outBuffer, writingPos,
             &headerSizeFieldPos)) {
         return false;
     }
     return true;
 }
 
-/* static */ HeaderReadWriteUtils::AttributeMap
+void HeaderPolicy::fillInHeader(const bool updatesLastDecayedTime, const int unigramCount,
+        const int bigramCount, const int extendedRegionSize,
+        DictionaryHeaderStructurePolicy::AttributeMap *outAttributeMap) const {
+    HeaderReadWriteUtils::setIntAttribute(outAttributeMap, UNIGRAM_COUNT_KEY, unigramCount);
+    HeaderReadWriteUtils::setIntAttribute(outAttributeMap, BIGRAM_COUNT_KEY, bigramCount);
+    HeaderReadWriteUtils::setIntAttribute(outAttributeMap, EXTENDED_REGION_SIZE_KEY,
+            extendedRegionSize);
+    // Set the current time as the generation time.
+    HeaderReadWriteUtils::setIntAttribute(outAttributeMap, DATE_KEY,
+            TimeKeeper::peekCurrentTime());
+    HeaderReadWriteUtils::setCodePointVectorAttribute(outAttributeMap, LOCALE_KEY, mLocale);
+    if (updatesLastDecayedTime) {
+        // Set current time as the last updated time.
+        HeaderReadWriteUtils::setIntAttribute(outAttributeMap, LAST_DECAYED_TIME_KEY,
+                TimeKeeper::peekCurrentTime());
+    }
+}
+
+/* static */ DictionaryHeaderStructurePolicy::AttributeMap
         HeaderPolicy::createAttributeMapAndReadAllAttributes(const uint8_t *const dictBuf) {
-    HeaderReadWriteUtils::AttributeMap attributeMap;
+    DictionaryHeaderStructurePolicy::AttributeMap attributeMap;
     HeaderReadWriteUtils::fetchAllHeaderAttributes(dictBuf, &attributeMap);
     return attributeMap;
 }
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
index a9c7805..87cf0cd 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
@@ -17,71 +17,155 @@
 #ifndef LATINIME_HEADER_POLICY_H
 #define LATINIME_HEADER_POLICY_H
 
-#include <ctime>
-#include <stdint.h>
+#include <cstdint>
 
 #include "defines.h"
 #include "suggest/core/policy/dictionary_header_structure_policy.h"
 #include "suggest/policyimpl/dictionary/header/header_read_write_utils.h"
 #include "suggest/policyimpl/dictionary/utils/format_utils.h"
+#include "utils/char_utils.h"
+#include "utils/time_keeper.h"
 
 namespace latinime {
 
 class HeaderPolicy : public DictionaryHeaderStructurePolicy {
  public:
     // Reads information from existing dictionary buffer.
-    HeaderPolicy(const uint8_t *const dictBuf, const int dictSize)
-            : mDictFormatVersion(FormatUtils::detectFormatVersion(dictBuf, dictSize)),
+    HeaderPolicy(const uint8_t *const dictBuf, const FormatUtils::FORMAT_VERSION formatVersion)
+            : mDictFormatVersion(formatVersion),
               mDictionaryFlags(HeaderReadWriteUtils::getFlags(dictBuf)),
               mSize(HeaderReadWriteUtils::getHeaderSize(dictBuf)),
               mAttributeMap(createAttributeMapAndReadAllAttributes(dictBuf)),
+              mLocale(readLocale()),
               mMultiWordCostMultiplier(readMultipleWordCostMultiplier()),
+              mRequiresGermanUmlautProcessing(readRequiresGermanUmlautProcessing()),
               mIsDecayingDict(HeaderReadWriteUtils::readBoolAttributeValue(&mAttributeMap,
                       IS_DECAYING_DICT_KEY, false /* defaultValue */)),
-              mLastUpdatedTime(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
-                      LAST_UPDATED_TIME_KEY, time(0) /* defaultValue */)),
+              mDate(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
+                      DATE_KEY, TimeKeeper::peekCurrentTime() /* defaultValue */)),
               mLastDecayedTime(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
-                      LAST_DECAYED_TIME_KEY, time(0) /* defaultValue */)),
+                      LAST_DECAYED_TIME_KEY, TimeKeeper::peekCurrentTime() /* defaultValue */)),
               mUnigramCount(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
                       UNIGRAM_COUNT_KEY, 0 /* defaultValue */)),
               mBigramCount(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
                       BIGRAM_COUNT_KEY, 0 /* defaultValue */)),
               mExtendedRegionSize(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
-                      EXTENDED_REGION_SIZE_KEY, 0 /* defaultValue */)) {}
+                      EXTENDED_REGION_SIZE_KEY, 0 /* defaultValue */)),
+              mHasHistoricalInfoOfWords(HeaderReadWriteUtils::readBoolAttributeValue(
+                      &mAttributeMap, HAS_HISTORICAL_INFO_KEY, false /* defaultValue */)),
+              mForgettingCurveOccurrencesToLevelUp(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP_KEY,
+                      DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP)),
+              mForgettingCurveProbabilityValuesTableId(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID_KEY,
+                      DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID)),
+              mForgettingCurveDurationToLevelDown(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS_KEY,
+                      DEFAULT_FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS)),
+              mMaxUnigramCount(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, MAX_UNIGRAM_COUNT_KEY, DEFAULT_MAX_UNIGRAM_COUNT)),
+              mMaxBigramCount(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, MAX_BIGRAM_COUNT_KEY, DEFAULT_MAX_BIGRAM_COUNT)) {}
 
     // Constructs header information using an attribute map.
     HeaderPolicy(const FormatUtils::FORMAT_VERSION dictFormatVersion,
-            const HeaderReadWriteUtils::AttributeMap *const attributeMap)
+            const std::vector<int> &locale,
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap)
             : mDictFormatVersion(dictFormatVersion),
               mDictionaryFlags(HeaderReadWriteUtils::createAndGetDictionaryFlagsUsingAttributeMap(
-                      attributeMap)), mSize(0), mAttributeMap(*attributeMap),
+                      attributeMap)), mSize(0), mAttributeMap(*attributeMap), mLocale(locale),
               mMultiWordCostMultiplier(readMultipleWordCostMultiplier()),
+              mRequiresGermanUmlautProcessing(readRequiresGermanUmlautProcessing()),
               mIsDecayingDict(HeaderReadWriteUtils::readBoolAttributeValue(&mAttributeMap,
                       IS_DECAYING_DICT_KEY, false /* defaultValue */)),
-              mLastUpdatedTime(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
-                      LAST_UPDATED_TIME_KEY, time(0) /* defaultValue */)),
+              mDate(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
+                      DATE_KEY, TimeKeeper::peekCurrentTime() /* defaultValue */)),
               mLastDecayedTime(HeaderReadWriteUtils::readIntAttributeValue(&mAttributeMap,
-                      LAST_UPDATED_TIME_KEY, time(0) /* defaultValue */)),
-              mUnigramCount(0), mBigramCount(0), mExtendedRegionSize(0) {}
+                      DATE_KEY, TimeKeeper::peekCurrentTime() /* defaultValue */)),
+              mUnigramCount(0), mBigramCount(0), mExtendedRegionSize(0),
+              mHasHistoricalInfoOfWords(HeaderReadWriteUtils::readBoolAttributeValue(
+                      &mAttributeMap, HAS_HISTORICAL_INFO_KEY, false /* defaultValue */)),
+              mForgettingCurveOccurrencesToLevelUp(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP_KEY,
+                      DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP)),
+              mForgettingCurveProbabilityValuesTableId(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID_KEY,
+                      DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID)),
+              mForgettingCurveDurationToLevelDown(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS_KEY,
+                      DEFAULT_FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS)),
+              mMaxUnigramCount(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, MAX_UNIGRAM_COUNT_KEY, DEFAULT_MAX_UNIGRAM_COUNT)),
+              mMaxBigramCount(HeaderReadWriteUtils::readIntAttributeValue(
+                      &mAttributeMap, MAX_BIGRAM_COUNT_KEY, DEFAULT_MAX_BIGRAM_COUNT)) {}
+
+    // Copy header information
+    HeaderPolicy(const HeaderPolicy *const headerPolicy)
+            : mDictFormatVersion(headerPolicy->mDictFormatVersion),
+              mDictionaryFlags(headerPolicy->mDictionaryFlags), mSize(headerPolicy->mSize),
+              mAttributeMap(headerPolicy->mAttributeMap), mLocale(headerPolicy->mLocale),
+              mMultiWordCostMultiplier(headerPolicy->mMultiWordCostMultiplier),
+              mRequiresGermanUmlautProcessing(headerPolicy->mRequiresGermanUmlautProcessing),
+              mIsDecayingDict(headerPolicy->mIsDecayingDict),
+              mDate(headerPolicy->mDate), mLastDecayedTime(headerPolicy->mLastDecayedTime),
+              mUnigramCount(headerPolicy->mUnigramCount), mBigramCount(headerPolicy->mBigramCount),
+              mExtendedRegionSize(headerPolicy->mExtendedRegionSize),
+              mHasHistoricalInfoOfWords(headerPolicy->mHasHistoricalInfoOfWords),
+              mForgettingCurveOccurrencesToLevelUp(
+                      headerPolicy->mForgettingCurveOccurrencesToLevelUp),
+              mForgettingCurveProbabilityValuesTableId(
+                      headerPolicy->mForgettingCurveProbabilityValuesTableId),
+              mForgettingCurveDurationToLevelDown(
+                      headerPolicy->mForgettingCurveDurationToLevelDown),
+              mMaxUnigramCount(headerPolicy->mMaxUnigramCount),
+              mMaxBigramCount(headerPolicy->mMaxBigramCount) {}
+
+    // Temporary dummy header.
+    HeaderPolicy()
+            : mDictFormatVersion(FormatUtils::UNKNOWN_VERSION), mDictionaryFlags(0), mSize(0),
+              mAttributeMap(), mLocale(CharUtils::EMPTY_STRING), mMultiWordCostMultiplier(0.0f),
+              mRequiresGermanUmlautProcessing(false), mIsDecayingDict(false),
+              mDate(0), mLastDecayedTime(0), mUnigramCount(0), mBigramCount(0),
+              mExtendedRegionSize(0), mHasHistoricalInfoOfWords(false),
+              mForgettingCurveOccurrencesToLevelUp(0), mForgettingCurveProbabilityValuesTableId(0),
+              mForgettingCurveDurationToLevelDown(0), mMaxUnigramCount(0), mMaxBigramCount(0) {}
 
     ~HeaderPolicy() {}
 
+    virtual int getFormatVersionNumber() const {
+        // Conceptually this converts the symbolic value we use in the code into the
+        // hardcoded of the bytes in the file. But we want the constants to be the
+        // same so we use them for both here.
+        switch (mDictFormatVersion) {
+            case FormatUtils::VERSION_2:
+                return FormatUtils::VERSION_2;
+            case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+                return FormatUtils::VERSION_4_ONLY_FOR_TESTING;
+            case FormatUtils::VERSION_4:
+                return FormatUtils::VERSION_4;
+            case FormatUtils::VERSION_4_DEV:
+                return FormatUtils::VERSION_4_DEV;
+            default:
+                return FormatUtils::UNKNOWN_VERSION;
+        }
+    }
+
+    AK_FORCE_INLINE bool isValid() const {
+        // Decaying dictionary must have historical information.
+        if (!mIsDecayingDict) {
+            return true;
+        }
+        if (mHasHistoricalInfoOfWords) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     AK_FORCE_INLINE int getSize() const {
         return mSize;
     }
 
-    AK_FORCE_INLINE bool supportsDynamicUpdate() const {
-        return HeaderReadWriteUtils::supportsDynamicUpdate(mDictionaryFlags);
-    }
-
-    AK_FORCE_INLINE bool requiresGermanUmlautProcessing() const {
-        return HeaderReadWriteUtils::requiresGermanUmlautProcessing(mDictionaryFlags);
-    }
-
-    AK_FORCE_INLINE bool requiresFrenchLigatureProcessing() const {
-        return HeaderReadWriteUtils::requiresFrenchLigatureProcessing(mDictionaryFlags);
-    }
-
     AK_FORCE_INLINE float getMultiWordCostMultiplier() const {
         return mMultiWordCostMultiplier;
     }
@@ -90,8 +174,12 @@
         return mIsDecayingDict;
     }
 
-    AK_FORCE_INLINE int getLastUpdatedTime() const {
-        return mLastUpdatedTime;
+    AK_FORCE_INLINE bool requiresGermanUmlautProcessing() const {
+        return mRequiresGermanUmlautProcessing;
+    }
+
+    AK_FORCE_INLINE int getDate() const {
+        return mDate;
     }
 
     AK_FORCE_INLINE int getLastDecayedTime() const {
@@ -110,41 +198,109 @@
         return mExtendedRegionSize;
     }
 
+    AK_FORCE_INLINE bool hasHistoricalInfoOfWords() const {
+        return mHasHistoricalInfoOfWords;
+    }
+
+    AK_FORCE_INLINE bool shouldBoostExactMatches() const {
+        // TODO: Investigate better ways to handle exact matches for personalized dictionaries.
+        return !isDecayingDict();
+    }
+
+    const DictionaryHeaderStructurePolicy::AttributeMap *getAttributeMap() const {
+        return &mAttributeMap;
+    }
+
+    AK_FORCE_INLINE int getForgettingCurveOccurrencesToLevelUp() const {
+        return mForgettingCurveOccurrencesToLevelUp;
+    }
+
+    AK_FORCE_INLINE int getForgettingCurveProbabilityValuesTableId() const {
+        return mForgettingCurveProbabilityValuesTableId;
+    }
+
+    AK_FORCE_INLINE int getForgettingCurveDurationToLevelDown() const {
+        return mForgettingCurveDurationToLevelDown;
+    }
+
+    AK_FORCE_INLINE int getMaxUnigramCount() const {
+        return mMaxUnigramCount;
+    }
+
+    AK_FORCE_INLINE int getMaxBigramCount() const {
+        return mMaxBigramCount;
+    }
+
     void readHeaderValueOrQuestionMark(const char *const key,
             int *outValue, int outValueSize) const;
 
-    bool writeHeaderToBuffer(BufferWithExtendableBuffer *const bufferToWrite,
-            const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime,
-            const int unigramCount, const int bigramCount, const int extendedRegionSize) const;
+    bool fillInAndWriteHeaderToBuffer(const bool updatesLastDecayedTime,
+            const int unigramCount, const int bigramCount,
+            const int extendedRegionSize, BufferWithExtendableBuffer *const outBuffer) const;
+
+    void fillInHeader(const bool updatesLastDecayedTime,
+            const int unigramCount, const int bigramCount, const int extendedRegionSize,
+            DictionaryHeaderStructurePolicy::AttributeMap *outAttributeMap) const;
+
+    AK_FORCE_INLINE const std::vector<int> *getLocale() const {
+        return &mLocale;
+    }
+
+    bool supportsBeginningOfSentence() const {
+        return mDictFormatVersion >= FormatUtils::VERSION_4;
+    }
 
  private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(HeaderPolicy);
+    DISALLOW_COPY_AND_ASSIGN(HeaderPolicy);
 
     static const char *const MULTIPLE_WORDS_DEMOTION_RATE_KEY;
+    static const char *const REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY;
     static const char *const IS_DECAYING_DICT_KEY;
-    static const char *const LAST_UPDATED_TIME_KEY;
+    static const char *const DATE_KEY;
     static const char *const LAST_DECAYED_TIME_KEY;
     static const char *const UNIGRAM_COUNT_KEY;
     static const char *const BIGRAM_COUNT_KEY;
     static const char *const EXTENDED_REGION_SIZE_KEY;
+    static const char *const HAS_HISTORICAL_INFO_KEY;
+    static const char *const LOCALE_KEY;
+    static const char *const FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP_KEY;
+    static const char *const FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID_KEY;
+    static const char *const FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS_KEY;
+    static const char *const MAX_UNIGRAM_COUNT_KEY;
+    static const char *const MAX_BIGRAM_COUNT_KEY;
     static const int DEFAULT_MULTIPLE_WORDS_DEMOTION_RATE;
     static const float MULTIPLE_WORD_COST_MULTIPLIER_SCALE;
+    static const int DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP;
+    static const int DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID;
+    static const int DEFAULT_FORGETTING_CURVE_DURATION_TO_LEVEL_DOWN_IN_SECONDS;
+    static const int DEFAULT_MAX_UNIGRAM_COUNT;
+    static const int DEFAULT_MAX_BIGRAM_COUNT;
 
     const FormatUtils::FORMAT_VERSION mDictFormatVersion;
     const HeaderReadWriteUtils::DictionaryFlags mDictionaryFlags;
     const int mSize;
-    HeaderReadWriteUtils::AttributeMap mAttributeMap;
+    DictionaryHeaderStructurePolicy::AttributeMap mAttributeMap;
+    const std::vector<int> mLocale;
     const float mMultiWordCostMultiplier;
+    const bool mRequiresGermanUmlautProcessing;
     const bool mIsDecayingDict;
-    const int mLastUpdatedTime;
+    const int mDate;
     const int mLastDecayedTime;
     const int mUnigramCount;
     const int mBigramCount;
     const int mExtendedRegionSize;
+    const bool mHasHistoricalInfoOfWords;
+    const int mForgettingCurveOccurrencesToLevelUp;
+    const int mForgettingCurveProbabilityValuesTableId;
+    const int mForgettingCurveDurationToLevelDown;
+    const int mMaxUnigramCount;
+    const int mMaxBigramCount;
 
+    const std::vector<int> readLocale() const;
     float readMultipleWordCostMultiplier() const;
+    bool readRequiresGermanUmlautProcessing() const;
 
-    static HeaderReadWriteUtils::AttributeMap createAttributeMapAndReadAllAttributes(
+    static DictionaryHeaderStructurePolicy::AttributeMap createAttributeMapAndReadAllAttributes(
             const uint8_t *const dictBuf);
 };
 } // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp
index 5ded8f6..a8f8f28 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.cpp
@@ -26,6 +26,13 @@
 
 namespace latinime {
 
+// Number of base-10 digits in the largest integer + 1 to leave room for a zero terminator.
+// As such, this is the maximum number of characters will be needed to represent an int as a
+// string, including the terminator; this is used as the size of a string buffer large enough to
+// hold any value that is intended to fit in an integer, e.g. in the code that reads the header
+// of the binary dictionary where a {key,value} string pair scheme is used.
+const int HeaderReadWriteUtils::LARGEST_INT_DIGIT_COUNT = 11;
+
 const int HeaderReadWriteUtils::MAX_ATTRIBUTE_KEY_LENGTH = 256;
 const int HeaderReadWriteUtils::MAX_ATTRIBUTE_VALUE_LENGTH = 256;
 
@@ -35,22 +42,8 @@
 const int HeaderReadWriteUtils::HEADER_SIZE_FIELD_SIZE = 4;
 
 const HeaderReadWriteUtils::DictionaryFlags HeaderReadWriteUtils::NO_FLAGS = 0;
-// Flags for special processing
-// Those *must* match the flags in makedict (FormatSpec#*_PROCESSING_FLAG) or
-// something very bad (like, the apocalypse) will happen. Please update both at the same time.
-const HeaderReadWriteUtils::DictionaryFlags
-        HeaderReadWriteUtils::GERMAN_UMLAUT_PROCESSING_FLAG = 0x1;
-const HeaderReadWriteUtils::DictionaryFlags
-        HeaderReadWriteUtils::SUPPORTS_DYNAMIC_UPDATE_FLAG = 0x2;
-const HeaderReadWriteUtils::DictionaryFlags
-        HeaderReadWriteUtils::FRENCH_LIGATURE_PROCESSING_FLAG = 0x4;
 
-// Note that these are corresponding definitions in Java side in FormatSpec.FileHeader.
-const char *const HeaderReadWriteUtils::SUPPORTS_DYNAMIC_UPDATE_KEY = "SUPPORTS_DYNAMIC_UPDATE";
-const char *const HeaderReadWriteUtils::REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY =
-        "REQUIRES_GERMAN_UMLAUT_PROCESSING";
-const char *const HeaderReadWriteUtils::REQUIRES_FRENCH_LIGATURE_PROCESSING_KEY =
-        "REQUIRES_FRENCH_LIGATURE_PROCESSING";
+typedef DictionaryHeaderStructurePolicy::AttributeMap AttributeMap;
 
 /* static */ int HeaderReadWriteUtils::getHeaderSize(const uint8_t *const dictBuf) {
     // See the format of the header in the comment in
@@ -67,18 +60,8 @@
 
 /* static */ HeaderReadWriteUtils::DictionaryFlags
         HeaderReadWriteUtils::createAndGetDictionaryFlagsUsingAttributeMap(
-                const HeaderReadWriteUtils::AttributeMap *const attributeMap) {
-    const bool requiresGermanUmlautProcessing = readBoolAttributeValue(attributeMap,
-            REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY, false /* defaultValue */);
-    const bool requiresFrenchLigatureProcessing = readBoolAttributeValue(attributeMap,
-            REQUIRES_FRENCH_LIGATURE_PROCESSING_KEY, false /* defaultValue */);
-    const bool supportsDynamicUpdate = readBoolAttributeValue(attributeMap,
-            SUPPORTS_DYNAMIC_UPDATE_KEY, false /* defaultValue */);
-    DictionaryFlags dictflags = NO_FLAGS;
-    dictflags |= requiresGermanUmlautProcessing ? GERMAN_UMLAUT_PROCESSING_FLAG : 0;
-    dictflags |= requiresFrenchLigatureProcessing ? FRENCH_LIGATURE_PROCESSING_FLAG : 0;
-    dictflags |= supportsDynamicUpdate ? SUPPORTS_DYNAMIC_UPDATE_FLAG : 0;
-    return dictflags;
+                const AttributeMap *const attributeMap) {
+    return NO_FLAGS;
 }
 
 /* static */ void HeaderReadWriteUtils::fetchAllHeaderAttributes(const uint8_t *const dictBuf,
@@ -115,8 +98,10 @@
         case FormatUtils::VERSION_2:
             // Version 2 dictionary writing is not supported.
             return false;
-        case FormatUtils::VERSION_3:
-            return buffer->writeUintAndAdvancePosition(3 /* data */,
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+        case FormatUtils::VERSION_4:
+        case FormatUtils::VERSION_4_DEV:
+            return buffer->writeUintAndAdvancePosition(version /* data */,
                     HEADER_DICTIONARY_VERSION_SIZE, writingPos);
         default:
             return false;
@@ -156,6 +141,13 @@
     return true;
 }
 
+/* static */ void HeaderReadWriteUtils::setCodePointVectorAttribute(
+        AttributeMap *const headerAttributes, const char *const key, const std::vector<int> value) {
+    AttributeMap::key_type keyVector;
+    insertCharactersIntoVector(key, &keyVector);
+    (*headerAttributes)[keyVector] = value;
+}
+
 /* static */ void HeaderReadWriteUtils::setBoolAttribute(AttributeMap *const headerAttributes,
         const char *const key, const bool value) {
     setIntAttribute(headerAttributes, key, value ? 1 : 0);
@@ -171,12 +163,24 @@
 /* static */ void HeaderReadWriteUtils::setIntAttributeInner(AttributeMap *const headerAttributes,
         const AttributeMap::key_type *const key, const int value) {
     AttributeMap::mapped_type valueVector;
-    char charBuf[LARGEST_INT_DIGIT_COUNT + 1];
-    snprintf(charBuf, LARGEST_INT_DIGIT_COUNT + 1, "%d", value);
+    char charBuf[LARGEST_INT_DIGIT_COUNT];
+    snprintf(charBuf, sizeof(charBuf), "%d", value);
     insertCharactersIntoVector(charBuf, &valueVector);
     (*headerAttributes)[*key] = valueVector;
 }
 
+/* static */ const std::vector<int> HeaderReadWriteUtils::readCodePointVectorAttributeValue(
+        const AttributeMap *const headerAttributes, const char *const key) {
+    AttributeMap::key_type keyVector;
+    insertCharactersIntoVector(key, &keyVector);
+    AttributeMap::const_iterator it = headerAttributes->find(keyVector);
+    if (it == headerAttributes->end()) {
+        return std::vector<int>();
+    } else {
+        return it->second;
+    }
+}
+
 /* static */ bool HeaderReadWriteUtils::readBoolAttributeValue(
         const AttributeMap *const headerAttributes, const char *const key,
         const bool defaultValue) {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h
index 2259683..9b90488 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_read_write_utils.h
@@ -17,11 +17,10 @@
 #ifndef LATINIME_HEADER_READ_WRITE_UTILS_H
 #define LATINIME_HEADER_READ_WRITE_UTILS_H
 
-#include <map>
-#include <stdint.h>
-#include <vector>
+#include <cstdint>
 
 #include "defines.h"
+#include "suggest/core/policy/dictionary_header_structure_policy.h"
 #include "suggest/policyimpl/dictionary/utils/format_utils.h"
 
 namespace latinime {
@@ -31,34 +30,21 @@
 class HeaderReadWriteUtils {
  public:
     typedef uint16_t DictionaryFlags;
-    typedef std::map<std::vector<int>, std::vector<int> > AttributeMap;
 
     static int getHeaderSize(const uint8_t *const dictBuf);
 
     static DictionaryFlags getFlags(const uint8_t *const dictBuf);
 
-    static AK_FORCE_INLINE bool supportsDynamicUpdate(const DictionaryFlags flags) {
-        return (flags & SUPPORTS_DYNAMIC_UPDATE_FLAG) != 0;
-    }
-
-    static AK_FORCE_INLINE bool requiresGermanUmlautProcessing(const DictionaryFlags flags) {
-        return (flags & GERMAN_UMLAUT_PROCESSING_FLAG) != 0;
-    }
-
-    static AK_FORCE_INLINE bool requiresFrenchLigatureProcessing(const DictionaryFlags flags) {
-        return (flags & FRENCH_LIGATURE_PROCESSING_FLAG) != 0;
-    }
-
     static AK_FORCE_INLINE int getHeaderOptionsPosition() {
         return HEADER_MAGIC_NUMBER_SIZE + HEADER_DICTIONARY_VERSION_SIZE + HEADER_FLAG_SIZE
                 + HEADER_SIZE_FIELD_SIZE;
     }
 
     static DictionaryFlags createAndGetDictionaryFlagsUsingAttributeMap(
-            const HeaderReadWriteUtils::AttributeMap *const attributeMap);
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap);
 
     static void fetchAllHeaderAttributes(const uint8_t *const dictBuf,
-            AttributeMap *const headerAttributes);
+            DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes);
 
     static bool writeDictionaryVersion(BufferWithExtendableBuffer *const buffer,
             const FormatUtils::FORMAT_VERSION version, int *const writingPos);
@@ -70,29 +56,43 @@
             const int size, int *const writingPos);
 
     static bool writeHeaderAttributes(BufferWithExtendableBuffer *const buffer,
-            const AttributeMap *const headerAttributes, int *const writingPos);
+            const DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
+            int *const writingPos);
 
     /**
      * Methods for header attributes.
      */
-    static void setBoolAttribute(AttributeMap *const headerAttributes,
+    static void setCodePointVectorAttribute(
+            DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
+            const char *const key, const std::vector<int> value);
+
+    static void setBoolAttribute(
+            DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
             const char *const key, const bool value);
 
-    static void setIntAttribute(AttributeMap *const headerAttributes,
+    static void setIntAttribute(
+            DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
             const char *const key, const int value);
 
-    static bool readBoolAttributeValue(const AttributeMap *const headerAttributes,
+    static const std::vector<int> readCodePointVectorAttributeValue(
+            const DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
+            const char *const key);
+
+    static bool readBoolAttributeValue(
+            const DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
             const char *const key, const bool defaultValue);
 
-    static int readIntAttributeValue(const AttributeMap *const headerAttributes,
+    static int readIntAttributeValue(
+            const DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
             const char *const key, const int defaultValue);
 
     static void insertCharactersIntoVector(const char *const characters,
-            AttributeMap::key_type *const key);
+            DictionaryHeaderStructurePolicy::AttributeMap::key_type *const key);
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(HeaderReadWriteUtils);
 
+    static const int LARGEST_INT_DIGIT_COUNT;
     static const int MAX_ATTRIBUTE_KEY_LENGTH;
     static const int MAX_ATTRIBUTE_VALUE_LENGTH;
 
@@ -101,23 +101,18 @@
     static const int HEADER_FLAG_SIZE;
     static const int HEADER_SIZE_FIELD_SIZE;
 
+    // Value for the "flags" field. It's unused at the moment.
     static const DictionaryFlags NO_FLAGS;
-    // Flags for special processing
-    // Those *must* match the flags in makedict (FormatSpec#*_PROCESSING_FLAGS) or
-    // something very bad (like, the apocalypse) will happen. Please update both at the same time.
-    static const DictionaryFlags GERMAN_UMLAUT_PROCESSING_FLAG;
-    static const DictionaryFlags SUPPORTS_DYNAMIC_UPDATE_FLAG;
-    static const DictionaryFlags FRENCH_LIGATURE_PROCESSING_FLAG;
 
-    static const char *const SUPPORTS_DYNAMIC_UPDATE_KEY;
-    static const char *const REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY;
-    static const char *const REQUIRES_FRENCH_LIGATURE_PROCESSING_KEY;
+    static void setIntAttributeInner(
+            DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
+            const DictionaryHeaderStructurePolicy::AttributeMap::key_type *const key,
+            const int value);
 
-    static void setIntAttributeInner(AttributeMap *const headerAttributes,
-            const AttributeMap::key_type *const key, const int value);
-
-    static int readIntAttributeValueInner(const AttributeMap *const headerAttributes,
-            const AttributeMap::key_type *const key, const int defaultValue);
+    static int readIntAttributeValueInner(
+            const DictionaryHeaderStructurePolicy::AttributeMap *const headerAttributes,
+            const DictionaryHeaderStructurePolicy::AttributeMap::key_type *const key,
+            const int defaultValue);
 };
 }
 #endif /* LATINIME_HEADER_READ_WRITE_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp
deleted file mode 100644
index 8a84bd2..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include "suggest/policyimpl/dictionary/patricia_trie_policy.h"
-
-#include "defines.h"
-#include "suggest/core/dicnode/dic_node.h"
-#include "suggest/core/dicnode/dic_node_vector.h"
-#include "suggest/policyimpl/dictionary/patricia_trie_reading_utils.h"
-#include "suggest/policyimpl/dictionary/utils/probability_utils.h"
-
-namespace latinime {
-
-void PatriciaTriePolicy::createAndGetAllChildNodes(const DicNode *const dicNode,
-        DicNodeVector *const childDicNodes) const {
-    if (!dicNode->hasChildren()) {
-        return;
-    }
-    int nextPos = dicNode->getChildrenPos();
-    if (nextPos < 0 || nextPos >= mDictBufferSize) {
-        AKLOGE("Children PtNode array position is invalid. pos: %d, dict size: %d",
-                nextPos, mDictBufferSize);
-        ASSERT(false);
-        return;
-    }
-    const int childCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
-            mDictRoot, &nextPos);
-    for (int i = 0; i < childCount; i++) {
-        if (nextPos < 0 || nextPos >= mDictBufferSize) {
-            AKLOGE("Child PtNode position is invalid. pos: %d, dict size: %d, childCount: %d / %d",
-                    nextPos, mDictBufferSize, i, childCount);
-            ASSERT(false);
-            return;
-        }
-        nextPos = createAndGetLeavingChildNode(dicNode, nextPos, childDicNodes);
-    }
-}
-
-// This retrieves code points and the probability of the word by its terminal position.
-// Due to the fact that words are ordered in the dictionary in a strict breadth-first order,
-// it is possible to check for this with advantageous complexity. For each node, we search
-// for PtNodes with children and compare the children position with the position we look for.
-// When we shoot the position we look for, it means the word we look for is in the children
-// of the previous PtNode. The only tricky part is the fact that if we arrive at the end of a
-// PtNode array with the last PtNode's children position still less than what we are searching for,
-// we must descend the last PtNode's children (for example, if the word we are searching for starts
-// with a z, it's the last PtNode of the root array, so all children addresses will be smaller
-// than the position we look for, and we have to descend the z node).
-/* Parameters :
- * ptNodePos: the byte position of the terminal PtNode of the word we are searching for (this is
- *   what is stored as the "bigram position" in each bigram)
- * outCodePoints: an array to write the found word, with MAX_WORD_LENGTH size.
- * outUnigramProbability: a pointer to an int to write the probability into.
- * Return value : the code point count, of 0 if the word was not found.
- */
-// TODO: Split this function to be more readable
-int PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
-        const int ptNodePos, const int maxCodePointCount, int *const outCodePoints,
-        int *const outUnigramProbability) const {
-    int pos = getRootPosition();
-    int wordPos = 0;
-    // One iteration of the outer loop iterates through PtNode arrays. As stated above, we will
-    // only traverse nodes that are actually a part of the terminal we are searching, so each time
-    // we enter this loop we are one depth level further than last time.
-    // The only reason we count nodes is because we want to reduce the probability of infinite
-    // looping in case there is a bug. Since we know there is an upper bound to the depth we are
-    // supposed to traverse, it does not hurt to count iterations.
-    for (int loopCount = maxCodePointCount; loopCount > 0; --loopCount) {
-        int lastCandidatePtNodePos = 0;
-        // Let's loop through PtNodes in this PtNode array searching for either the terminal
-        // or one of its ascendants.
-        for (int ptNodeCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
-                mDictRoot, &pos); ptNodeCount > 0; --ptNodeCount) {
-            const int startPos = pos;
-            const PatriciaTrieReadingUtils::NodeFlags flags =
-                    PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
-            const int character = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                    mDictRoot, &pos);
-            if (ptNodePos == startPos) {
-                // We found the position. Copy the rest of the code points in the buffer and return
-                // the length.
-                outCodePoints[wordPos] = character;
-                if (PatriciaTrieReadingUtils::hasMultipleChars(flags)) {
-                    int nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                            mDictRoot, &pos);
-                    // We count code points in order to avoid infinite loops if the file is broken
-                    // or if there is some other bug
-                    int charCount = maxCodePointCount;
-                    while (NOT_A_CODE_POINT != nextChar && --charCount > 0) {
-                        outCodePoints[++wordPos] = nextChar;
-                        nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                                mDictRoot, &pos);
-                    }
-                }
-                *outUnigramProbability =
-                        PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot,
-                                &pos);
-                return ++wordPos;
-            }
-            // We need to skip past this PtNode, so skip any remaining code points after the
-            // first and possibly the probability.
-            if (PatriciaTrieReadingUtils::hasMultipleChars(flags)) {
-                PatriciaTrieReadingUtils::skipCharacters(mDictRoot, flags, MAX_WORD_LENGTH, &pos);
-            }
-            if (PatriciaTrieReadingUtils::isTerminal(flags)) {
-                PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
-            }
-            // The fact that this PtNode has children is very important. Since we already know
-            // that this PtNode does not match, if it has no children we know it is irrelevant
-            // to what we are searching for.
-            const bool hasChildren = PatriciaTrieReadingUtils::hasChildrenInFlags(flags);
-            // We will write in `found' whether we have passed the children position we are
-            // searching for. For example if we search for "beer", the children of b are less
-            // than the address we are searching for and the children of c are greater. When we
-            // come here for c, we realize this is too big, and that we should descend b.
-            bool found;
-            if (hasChildren) {
-                int currentPos = pos;
-                // Here comes the tricky part. First, read the children position.
-                const int childrenPos = PatriciaTrieReadingUtils
-                        ::readChildrenPositionAndAdvancePosition(mDictRoot, flags, &currentPos);
-                if (childrenPos > ptNodePos) {
-                    // If the children pos is greater than the position, it means the previous
-                    // PtNode, which position is stored in lastCandidatePtNodePos, was the right
-                    // one.
-                    found = true;
-                } else if (1 >= ptNodeCount) {
-                    // However if we are on the LAST PtNode of this array, and we have NOT shot the
-                    // position we should descend THIS node. So we trick the lastCandidatePtNodePos
-                    // so that we will descend this PtNode, not the previous one.
-                    lastCandidatePtNodePos = startPos;
-                    found = true;
-                } else {
-                    // Else, we should continue looking.
-                    found = false;
-                }
-            } else {
-                // Even if we don't have children here, we could still be on the last PtNode of /
-                // this array. If this is the case, we should descend the last PtNode that had
-                // children, and their position is already in lastCandidatePtNodePos.
-                found = (1 >= ptNodeCount);
-            }
-
-            if (found) {
-                // Okay, we found the PtNode we should descend. Its position is in
-                // the lastCandidatePtNodePos variable, so we just re-read it.
-                if (0 != lastCandidatePtNodePos) {
-                    const PatriciaTrieReadingUtils::NodeFlags lastFlags =
-                            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(
-                                    mDictRoot, &lastCandidatePtNodePos);
-                    const int lastChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                            mDictRoot, &lastCandidatePtNodePos);
-                    // We copy all the characters in this PtNode to the buffer
-                    outCodePoints[wordPos] = lastChar;
-                    if (PatriciaTrieReadingUtils::hasMultipleChars(lastFlags)) {
-                        int nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                                mDictRoot, &lastCandidatePtNodePos);
-                        int charCount = maxCodePointCount;
-                        while (-1 != nextChar && --charCount > 0) {
-                            outCodePoints[++wordPos] = nextChar;
-                            nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                                    mDictRoot, &lastCandidatePtNodePos);
-                        }
-                    }
-                    ++wordPos;
-                    // Now we only need to branch to the children address. Skip the probability if
-                    // it's there, read pos, and break to resume the search at pos.
-                    if (PatriciaTrieReadingUtils::isTerminal(lastFlags)) {
-                        PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot,
-                                &lastCandidatePtNodePos);
-                    }
-                    pos = PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
-                            mDictRoot, lastFlags, &lastCandidatePtNodePos);
-                    break;
-                } else {
-                    // Here is a little tricky part: we come here if we found out that all children
-                    // addresses in this PtNode are bigger than the address we are searching for.
-                    // Should we conclude the word is not in the dictionary? No! It could still be
-                    // one of the remaining PtNodes in this array, so we have to keep looking in
-                    // this array until we find it (or we realize it's not there either, in which
-                    // case it's actually not in the dictionary). Pass the end of this PtNode,
-                    // ready to start the next one.
-                    if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
-                        PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
-                                mDictRoot, flags, &pos);
-                    }
-                    if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
-                        mShortcutListPolicy.skipAllShortcuts(&pos);
-                    }
-                    if (PatriciaTrieReadingUtils::hasBigrams(flags)) {
-                        mBigramListPolicy.skipAllBigrams(&pos);
-                    }
-                }
-            } else {
-                // If we did not find it, we should record the last children address for the next
-                // iteration.
-                if (hasChildren) lastCandidatePtNodePos = startPos;
-                // Now skip the end of this PtNode (children pos and the attributes if any) so that
-                // our pos is after the end of this PtNode, at the start of the next one.
-                if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
-                    PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
-                            mDictRoot, flags, &pos);
-                }
-                if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
-                    mShortcutListPolicy.skipAllShortcuts(&pos);
-                }
-                if (PatriciaTrieReadingUtils::hasBigrams(flags)) {
-                    mBigramListPolicy.skipAllBigrams(&pos);
-                }
-            }
-
-        }
-    }
-    // If we have looked through all the PtNodes and found no match, the ptNodePos is
-    // not the position of a terminal in this dictionary.
-    return 0;
-}
-
-// This function gets the position of the terminal node of the exact matching word in the
-// dictionary. If no match is found, it returns NOT_A_DICT_POS.
-int PatriciaTriePolicy::getTerminalNodePositionOfWord(const int *const inWord,
-        const int length, const bool forceLowerCaseSearch) const {
-    int pos = getRootPosition();
-    int wordPos = 0;
-
-    while (true) {
-        // If we already traversed the tree further than the word is long, there means
-        // there was no match (or we would have found it).
-        if (wordPos >= length) return NOT_A_DICT_POS;
-        int ptNodeCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(mDictRoot,
-                &pos);
-        const int wChar = forceLowerCaseSearch
-                ? CharUtils::toLowerCase(inWord[wordPos]) : inWord[wordPos];
-        while (true) {
-            // If there are no more PtNodes in this array, it means we could not
-            // find a matching character for this depth, therefore there is no match.
-            if (0 >= ptNodeCount) return NOT_A_DICT_POS;
-            const int ptNodePos = pos;
-            const PatriciaTrieReadingUtils::NodeFlags flags =
-                    PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
-            int character = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(mDictRoot,
-                    &pos);
-            if (character == wChar) {
-                // This is the correct PtNode. Only one PtNode may start with the same char within
-                // a PtNode array, so either we found our match in this array, or there is
-                // no match and we can return NOT_A_DICT_POS. So we will check all the
-                // characters in this PtNode indeed does match.
-                if (PatriciaTrieReadingUtils::hasMultipleChars(flags)) {
-                    character = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(mDictRoot,
-                            &pos);
-                    while (NOT_A_CODE_POINT != character) {
-                        ++wordPos;
-                        // If we shoot the length of the word we search for, or if we find a single
-                        // character that does not match, as explained above, it means the word is
-                        // not in the dictionary (by virtue of this PtNode being the only one to
-                        // match the word on the first character, but not matching the whole word).
-                        if (wordPos >= length) return NOT_A_DICT_POS;
-                        if (inWord[wordPos] != character) return NOT_A_DICT_POS;
-                        character = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
-                                mDictRoot, &pos);
-                    }
-                }
-                // If we come here we know that so far, we do match. Either we are on a terminal
-                // and we match the length, in which case we found it, or we traverse children.
-                // If we don't match the length AND don't have children, then a word in the
-                // dictionary fully matches a prefix of the searched word but not the full word.
-                ++wordPos;
-                if (PatriciaTrieReadingUtils::isTerminal(flags)) {
-                    if (wordPos == length) {
-                        return ptNodePos;
-                    }
-                    PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
-                }
-                if (!PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
-                    return NOT_A_DICT_POS;
-                }
-                // We have children and we are still shorter than the word we are searching for, so
-                // we need to traverse children. Put the pointer on the children position, and
-                // break
-                pos = PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(mDictRoot,
-                        flags, &pos);
-                break;
-            } else {
-                // This PtNode does not match, so skip the remaining part and go to the next.
-                if (PatriciaTrieReadingUtils::hasMultipleChars(flags)) {
-                    PatriciaTrieReadingUtils::skipCharacters(mDictRoot, flags, MAX_WORD_LENGTH,
-                            &pos);
-                }
-                if (PatriciaTrieReadingUtils::isTerminal(flags)) {
-                    PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
-                }
-                if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
-                    PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(mDictRoot,
-                            flags, &pos);
-                }
-                if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
-                    mShortcutListPolicy.skipAllShortcuts(&pos);
-                }
-                if (PatriciaTrieReadingUtils::hasBigrams(flags)) {
-                    mBigramListPolicy.skipAllBigrams(&pos);
-                }
-            }
-            --ptNodeCount;
-        }
-    }
-}
-
-int PatriciaTriePolicy::getProbability(const int unigramProbability,
-        const int bigramProbability) const {
-    if (unigramProbability == NOT_A_PROBABILITY) {
-        return NOT_A_PROBABILITY;
-    } else if (bigramProbability == NOT_A_PROBABILITY) {
-        return ProbabilityUtils::backoff(unigramProbability);
-    } else {
-        return ProbabilityUtils::computeProbabilityForBigram(unigramProbability,
-                bigramProbability);
-    }
-}
-
-int PatriciaTriePolicy::getUnigramProbabilityOfPtNode(const int ptNodePos) const {
-    if (ptNodePos == NOT_A_DICT_POS) {
-        return NOT_A_PROBABILITY;
-    }
-    int pos = ptNodePos;
-    const PatriciaTrieReadingUtils::NodeFlags flags =
-            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
-    if (!PatriciaTrieReadingUtils::isTerminal(flags)) {
-        return NOT_A_PROBABILITY;
-    }
-    if (PatriciaTrieReadingUtils::isNotAWord(flags)
-            || PatriciaTrieReadingUtils::isBlacklisted(flags)) {
-        // If this is not a word, or if it's a blacklisted entry, it should behave as
-        // having no probability outside of the suggestion process (where it should be used
-        // for shortcuts).
-        return NOT_A_PROBABILITY;
-    }
-    PatriciaTrieReadingUtils::skipCharacters(mDictRoot, flags, MAX_WORD_LENGTH, &pos);
-    return getProbability(PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(
-            mDictRoot, &pos), NOT_A_PROBABILITY);
-}
-
-int PatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) const {
-    if (ptNodePos == NOT_A_DICT_POS) {
-        return NOT_A_DICT_POS;
-    }
-    int pos = ptNodePos;
-    const PatriciaTrieReadingUtils::NodeFlags flags =
-            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
-    if (!PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
-        return NOT_A_DICT_POS;
-    }
-    PatriciaTrieReadingUtils::skipCharacters(mDictRoot, flags, MAX_WORD_LENGTH, &pos);
-    if (PatriciaTrieReadingUtils::isTerminal(flags)) {
-        PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
-    }
-    if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
-        PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(mDictRoot, flags, &pos);
-    }
-    return pos;
-}
-
-int PatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) const {
-    if (ptNodePos == NOT_A_DICT_POS) {
-        return NOT_A_DICT_POS;
-    }
-    int pos = ptNodePos;
-    const PatriciaTrieReadingUtils::NodeFlags flags =
-            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
-    if (!PatriciaTrieReadingUtils::hasBigrams(flags)) {
-        return NOT_A_DICT_POS;
-    }
-    PatriciaTrieReadingUtils::skipCharacters(mDictRoot, flags, MAX_WORD_LENGTH, &pos);
-    if (PatriciaTrieReadingUtils::isTerminal(flags)) {
-        PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
-    }
-    if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
-        PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(mDictRoot, flags, &pos);
-    }
-    if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
-        mShortcutListPolicy.skipAllShortcuts(&pos);;
-    }
-    return pos;
-}
-
-int PatriciaTriePolicy::createAndGetLeavingChildNode(const DicNode *const dicNode,
-        const int ptNodePos, DicNodeVector *childDicNodes) const {
-    int pos = ptNodePos;
-    const PatriciaTrieReadingUtils::NodeFlags flags =
-            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
-    int mergedNodeCodePoints[MAX_WORD_LENGTH];
-    const int mergedNodeCodePointCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition(
-            mDictRoot, flags, MAX_WORD_LENGTH, mergedNodeCodePoints, &pos);
-    const int probability = (PatriciaTrieReadingUtils::isTerminal(flags))?
-            PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos)
-                    : NOT_A_PROBABILITY;
-    const int childrenPos = PatriciaTrieReadingUtils::hasChildrenInFlags(flags) ?
-            PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
-                    mDictRoot, flags, &pos) : NOT_A_DICT_POS;
-    if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
-        getShortcutsStructurePolicy()->skipAllShortcuts(&pos);
-    }
-    if (PatriciaTrieReadingUtils::hasBigrams(flags)) {
-        getBigramsStructurePolicy()->skipAllBigrams(&pos);
-    }
-    if (mergedNodeCodePointCount <= 0) {
-        AKLOGE("Empty PtNode is not allowed. Code point count: %d", mergedNodeCodePointCount);
-        ASSERT(false);
-        return pos;
-    }
-    childDicNodes->pushLeavingChild(dicNode, ptNodePos, childrenPos, probability,
-            PatriciaTrieReadingUtils::isTerminal(flags),
-            PatriciaTrieReadingUtils::hasChildrenInFlags(flags),
-            PatriciaTrieReadingUtils::isBlacklisted(flags) ||
-                    PatriciaTrieReadingUtils::isNotAWord(flags),
-            mergedNodeCodePointCount, mergedNodeCodePoints);
-    return pos;
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h
deleted file mode 100644
index 0f8662a..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_policy.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_PATRICIA_TRIE_POLICY_H
-#define LATINIME_PATRICIA_TRIE_POLICY_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
-#include "suggest/policyimpl/dictionary/bigram/bigram_list_policy.h"
-#include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h"
-#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
-
-namespace latinime {
-
-class DicNode;
-class DicNodeVector;
-
-class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
- public:
-    PatriciaTriePolicy(const MmappedBuffer *const buffer)
-            : mBuffer(buffer), mHeaderPolicy(mBuffer->getBuffer(), buffer->getBufferSize()),
-              mDictRoot(mBuffer->getBuffer() + mHeaderPolicy.getSize()),
-              mDictBufferSize(mBuffer->getBufferSize() - mHeaderPolicy.getSize()),
-              mBigramListPolicy(mDictRoot), mShortcutListPolicy(mDictRoot) {}
-
-    ~PatriciaTriePolicy() {
-        delete mBuffer;
-    }
-
-    AK_FORCE_INLINE int getRootPosition() const {
-        return 0;
-    }
-
-    void createAndGetAllChildNodes(const DicNode *const dicNode,
-            DicNodeVector *const childDicNodes) const;
-
-    int getCodePointsAndProbabilityAndReturnCodePointCount(
-            const int terminalNodePos, const int maxCodePointCount, int *const outCodePoints,
-            int *const outUnigramProbability) const;
-
-    int getTerminalNodePositionOfWord(const int *const inWord,
-            const int length, const bool forceLowerCaseSearch) const;
-
-    int getProbability(const int unigramProbability, const int bigramProbability) const;
-
-    int getUnigramProbabilityOfPtNode(const int ptNodePos) const;
-
-    int getShortcutPositionOfPtNode(const int ptNodePos) const;
-
-    int getBigramsPositionOfPtNode(const int ptNodePos) const;
-
-    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
-        return &mHeaderPolicy;
-    }
-
-    const DictionaryBigramsStructurePolicy *getBigramsStructurePolicy() const {
-        return &mBigramListPolicy;
-    }
-
-    const DictionaryShortcutsStructurePolicy *getShortcutsStructurePolicy() const {
-        return &mShortcutListPolicy;
-    }
-
-    bool addUnigramWord(const int *const word, const int length, const int probability) {
-        // This method should not be called for non-updatable dictionary.
-        AKLOGI("Warning: addUnigramWord() is called for non-updatable dictionary.");
-        return false;
-    }
-
-    bool addBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1, const int probability) {
-        // This method should not be called for non-updatable dictionary.
-        AKLOGI("Warning: addBigramWords() is called for non-updatable dictionary.");
-        return false;
-    }
-
-    bool removeBigramWords(const int *const word0, const int length0, const int *const word1,
-            const int length1) {
-        // This method should not be called for non-updatable dictionary.
-        AKLOGI("Warning: removeBigramWords() is called for non-updatable dictionary.");
-        return false;
-    }
-
-    void flush(const char *const filePath) {
-        // This method should not be called for non-updatable dictionary.
-        AKLOGI("Warning: flush() is called for non-updatable dictionary.");
-    }
-
-    void flushWithGC(const char *const filePath) {
-        // This method should not be called for non-updatable dictionary.
-        AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary.");
-    }
-
-    bool needsToRunGC(const bool mindsBlockByGC) const {
-        // This method should not be called for non-updatable dictionary.
-        AKLOGI("Warning: needsToRunGC() is called for non-updatable dictionary.");
-        return false;
-    }
-
-    void getProperty(const char *const query, char *const outResult,
-            const int maxResultLength) {
-        // getProperty is not supported for this class.
-        if (maxResultLength > 0) {
-            outResult[0] = '\0';
-        }
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(PatriciaTriePolicy);
-
-    const MmappedBuffer *const mBuffer;
-    const HeaderPolicy mHeaderPolicy;
-    const uint8_t *const mDictRoot;
-    const int mDictBufferSize;
-    const BigramListPolicy mBigramListPolicy;
-    const ShortcutListPolicy mShortcutListPolicy;
-
-    int createAndGetLeavingChildNode(const DicNode *const dicNode, const int ptNodePos,
-            DicNodeVector *const childDicNodes) const;
-};
-} // namespace latinime
-#endif // LATINIME_PATRICIA_TRIE_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_reading_utils.cpp
deleted file mode 100644
index 7df5581..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_reading_utils.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/patricia_trie_reading_utils.h"
-
-#include "defines.h"
-#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
-
-namespace latinime {
-
-typedef PatriciaTrieReadingUtils PtReadingUtils;
-
-const PtReadingUtils::NodeFlags PtReadingUtils::MASK_CHILDREN_POSITION_TYPE = 0xC0;
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_NOPOSITION = 0x00;
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_ONEBYTE = 0x40;
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_TWOBYTES = 0x80;
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_THREEBYTES = 0xC0;
-
-// Flag for single/multiple char group
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_HAS_MULTIPLE_CHARS = 0x20;
-// Flag for terminal PtNodes
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_TERMINAL = 0x10;
-// Flag for shortcut targets presence
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_HAS_SHORTCUT_TARGETS = 0x08;
-// Flag for bigram presence
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_HAS_BIGRAMS = 0x04;
-// Flag for non-words (typically, shortcut only entries)
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_NOT_A_WORD = 0x02;
-// Flag for blacklist
-const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_BLACKLISTED = 0x01;
-
-/* static */ int PtReadingUtils::getPtNodeArraySizeAndAdvancePosition(
-        const uint8_t *const buffer, int *const pos) {
-    const uint8_t firstByte = ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
-    if (firstByte < 0x80) {
-        return firstByte;
-    } else {
-        return ((firstByte & 0x7F) << 8) ^ ByteArrayUtils::readUint8AndAdvancePosition(
-                buffer, pos);
-    }
-}
-
-/* static */ PtReadingUtils::NodeFlags PtReadingUtils::getFlagsAndAdvancePosition(
-        const uint8_t *const buffer, int *const pos) {
-    return ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
-}
-
-/* static */ int PtReadingUtils::getCodePointAndAdvancePosition(const uint8_t *const buffer,
-        int *const pos) {
-    return ByteArrayUtils::readCodePointAndAdvancePosition(buffer, pos);
-}
-
-// Returns the number of read characters.
-/* static */ int PtReadingUtils::getCharsAndAdvancePosition(const uint8_t *const buffer,
-        const NodeFlags flags, const int maxLength, int *const outBuffer, int *const pos) {
-    int length = 0;
-    if (hasMultipleChars(flags)) {
-        length = ByteArrayUtils::readStringAndAdvancePosition(buffer, maxLength, outBuffer,
-                pos);
-    } else {
-        const int codePoint = getCodePointAndAdvancePosition(buffer, pos);
-        if (codePoint == NOT_A_CODE_POINT) {
-            // CAVEAT: codePoint == NOT_A_CODE_POINT means the code point is
-            // CHARACTER_ARRAY_TERMINATOR. The code point must not be CHARACTER_ARRAY_TERMINATOR
-            // when the PtNode has a single code point.
-            length = 0;
-            AKLOGE("codePoint is NOT_A_CODE_POINT. pos: %d, codePoint: 0x%x, buffer[pos - 1]: 0x%x",
-                    *pos - 1, codePoint, buffer[*pos - 1]);
-            ASSERT(false);
-        } else if (maxLength > 0) {
-            outBuffer[0] = codePoint;
-            length = 1;
-        }
-    }
-    return length;
-}
-
-// Returns the number of skipped characters.
-/* static */ int PtReadingUtils::skipCharacters(const uint8_t *const buffer, const NodeFlags flags,
-        const int maxLength, int *const pos) {
-    if (hasMultipleChars(flags)) {
-        return ByteArrayUtils::advancePositionToBehindString(buffer, maxLength, pos);
-    } else {
-        if (maxLength > 0) {
-            getCodePointAndAdvancePosition(buffer, pos);
-            return 1;
-        } else {
-            return 0;
-        }
-    }
-}
-
-/* static */ int PtReadingUtils::readProbabilityAndAdvancePosition(const uint8_t *const buffer,
-        int *const pos) {
-    return ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
-}
-
-/* static */ int PtReadingUtils::readChildrenPositionAndAdvancePosition(
-        const uint8_t *const buffer, const NodeFlags flags, int *const pos) {
-    const int base = *pos;
-    int offset = 0;
-    switch (MASK_CHILDREN_POSITION_TYPE & flags) {
-        case FLAG_CHILDREN_POSITION_TYPE_ONEBYTE:
-            offset = ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
-            break;
-        case FLAG_CHILDREN_POSITION_TYPE_TWOBYTES:
-            offset = ByteArrayUtils::readUint16AndAdvancePosition(buffer, pos);
-            break;
-        case FLAG_CHILDREN_POSITION_TYPE_THREEBYTES:
-            offset = ByteArrayUtils::readUint24AndAdvancePosition(buffer, pos);
-            break;
-        default:
-            // If we come here, it means we asked for the children of a word with
-            // no children.
-            return NOT_A_DICT_POS;
-    }
-    return base + offset;
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_reading_utils.h
deleted file mode 100644
index 8420ee9..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/patricia_trie_reading_utils.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_PATRICIA_TRIE_READING_UTILS_H
-#define LATINIME_PATRICIA_TRIE_READING_UTILS_H
-
-#include <stdint.h>
-
-#include "defines.h"
-
-namespace latinime {
-
-class PatriciaTrieReadingUtils {
- public:
-    typedef uint8_t NodeFlags;
-
-    static int getPtNodeArraySizeAndAdvancePosition(const uint8_t *const buffer, int *const pos);
-
-    static NodeFlags getFlagsAndAdvancePosition(const uint8_t *const buffer, int *const pos);
-
-    static int getCodePointAndAdvancePosition(const uint8_t *const buffer, int *const pos);
-
-    // Returns the number of read characters.
-    static int getCharsAndAdvancePosition(const uint8_t *const buffer, const NodeFlags flags,
-            const int maxLength, int *const outBuffer, int *const pos);
-
-    // Returns the number of skipped characters.
-    static int skipCharacters(const uint8_t *const buffer, const NodeFlags flags,
-            const int maxLength, int *const pos);
-
-    static int readProbabilityAndAdvancePosition(const uint8_t *const buffer, int *const pos);
-
-    static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer,
-            const NodeFlags flags, int *const pos);
-
-    /**
-     * Node Flags
-     */
-    static AK_FORCE_INLINE bool isBlacklisted(const NodeFlags flags) {
-        return (flags & FLAG_IS_BLACKLISTED) != 0;
-    }
-
-    static AK_FORCE_INLINE bool isNotAWord(const NodeFlags flags) {
-        return (flags & FLAG_IS_NOT_A_WORD) != 0;
-    }
-
-    static AK_FORCE_INLINE bool isTerminal(const NodeFlags flags) {
-        return (flags & FLAG_IS_TERMINAL) != 0;
-    }
-
-    static AK_FORCE_INLINE bool hasShortcutTargets(const NodeFlags flags) {
-        return (flags & FLAG_HAS_SHORTCUT_TARGETS) != 0;
-    }
-
-    static AK_FORCE_INLINE bool hasBigrams(const NodeFlags flags) {
-        return (flags & FLAG_HAS_BIGRAMS) != 0;
-    }
-
-    static AK_FORCE_INLINE bool hasMultipleChars(const NodeFlags flags) {
-        return (flags & FLAG_HAS_MULTIPLE_CHARS) != 0;
-    }
-
-    static AK_FORCE_INLINE bool hasChildrenInFlags(const NodeFlags flags) {
-        return FLAG_CHILDREN_POSITION_TYPE_NOPOSITION != (MASK_CHILDREN_POSITION_TYPE & flags);
-    }
-
-    static AK_FORCE_INLINE NodeFlags createAndGetFlags(const bool isBlacklisted,
-            const bool isNotAWord, const bool isTerminal, const bool hasShortcutTargets,
-            const bool hasBigrams, const bool hasMultipleChars,
-            const int childrenPositionFieldSize) {
-        NodeFlags nodeFlags = 0;
-        nodeFlags = isBlacklisted ? (nodeFlags | FLAG_IS_BLACKLISTED) : nodeFlags;
-        nodeFlags = isNotAWord ? (nodeFlags | FLAG_IS_NOT_A_WORD) : nodeFlags;
-        nodeFlags = isTerminal ? (nodeFlags | FLAG_IS_TERMINAL) : nodeFlags;
-        nodeFlags = hasShortcutTargets ? (nodeFlags | FLAG_HAS_SHORTCUT_TARGETS) : nodeFlags;
-        nodeFlags = hasBigrams ? (nodeFlags | FLAG_HAS_BIGRAMS) : nodeFlags;
-        nodeFlags = hasMultipleChars ? (nodeFlags | FLAG_HAS_MULTIPLE_CHARS) : nodeFlags;
-        if (childrenPositionFieldSize == 1) {
-            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_ONEBYTE;
-        } else if (childrenPositionFieldSize == 2) {
-            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_TWOBYTES;
-        } else if (childrenPositionFieldSize == 3) {
-            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_THREEBYTES;
-        } else {
-            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_NOPOSITION;
-        }
-        return nodeFlags;
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(PatriciaTrieReadingUtils);
-
-    static const NodeFlags MASK_CHILDREN_POSITION_TYPE;
-    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_NOPOSITION;
-    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_ONEBYTE;
-    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_TWOBYTES;
-    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_THREEBYTES;
-
-    static const NodeFlags FLAG_HAS_MULTIPLE_CHARS;
-    static const NodeFlags FLAG_IS_TERMINAL;
-    static const NodeFlags FLAG_HAS_SHORTCUT_TARGETS;
-    static const NodeFlags FLAG_HAS_BIGRAMS;
-    static const NodeFlags FLAG_IS_NOT_A_WORD;
-    static const NodeFlags FLAG_IS_BLACKLISTED;
-};
-} // namespace latinime
-#endif /* LATINIME_PATRICIA_TRIE_NODE_READING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
deleted file mode 100644
index bd3211f..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/dynamic_shortcut_list_policy.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
-#define LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h"
-#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
-
-namespace latinime {
-
-/*
- * This is a dynamic version of ShortcutListPolicy and supports an additional buffer.
- */
-class DynamicShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
- public:
-    explicit DynamicShortcutListPolicy(const BufferWithExtendableBuffer *const buffer)
-            : mBuffer(buffer) {}
-
-    ~DynamicShortcutListPolicy() {}
-
-    int getStartPos(const int pos) const {
-        if (pos == NOT_A_DICT_POS) {
-            return NOT_A_DICT_POS;
-        }
-        return pos + ShortcutListReadingUtils::getShortcutListSizeFieldSize();
-    }
-
-    void getNextShortcut(const int maxCodePointCount, int *const outCodePoint,
-            int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext,
-            int *const pos) const {
-        const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*pos);
-        const uint8_t *const buffer = mBuffer->getBuffer(usesAdditionalBuffer);
-        if (usesAdditionalBuffer) {
-            *pos -= mBuffer->getOriginalBufferSize();
-        }
-        const ShortcutListReadingUtils::ShortcutFlags flags =
-                ShortcutListReadingUtils::getFlagsAndForwardPointer(buffer, pos);
-        if (outHasNext) {
-            *outHasNext = ShortcutListReadingUtils::hasNext(flags);
-        }
-        if (outIsWhitelist) {
-            *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(flags);
-        }
-        if (outCodePoint) {
-            *outCodePointCount = ShortcutListReadingUtils::readShortcutTarget(
-                    buffer, maxCodePointCount, outCodePoint, pos);
-        }
-        if (usesAdditionalBuffer) {
-            *pos += mBuffer->getOriginalBufferSize();
-        }
-    }
-
-    void skipAllShortcuts(int *const pos) const {
-        const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*pos);
-        const uint8_t *const buffer = mBuffer->getBuffer(usesAdditionalBuffer);
-        if (usesAdditionalBuffer) {
-            *pos -= mBuffer->getOriginalBufferSize();
-        }
-        const int shortcutListSize = ShortcutListReadingUtils
-                ::getShortcutListSizeAndForwardPointer(buffer, pos);
-        *pos += shortcutListSize;
-        if (usesAdditionalBuffer) {
-            *pos += mBuffer->getOriginalBufferSize();
-        }
-    }
-
-    // Copy shortcuts from the shortcut list that starts at fromPos in mBuffer to toPos in
-    // bufferToWrite and advance these positions after the shortcut lists. This returns whether
-    // the copy was succeeded or not.
-    bool copyAllShortcutsAndReturnIfSucceededOrNot(BufferWithExtendableBuffer *const bufferToWrite,
-            int *const fromPos, int *const toPos) const {
-        const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(*fromPos);
-        if (usesAdditionalBuffer) {
-            *fromPos -= mBuffer->getOriginalBufferSize();
-        }
-        const int shortcutListSize = ShortcutListReadingUtils
-                ::getShortcutListSizeAndForwardPointer(mBuffer->getBuffer(usesAdditionalBuffer),
-                        fromPos);
-        // Copy shortcut list size.
-        if (!bufferToWrite->writeUintAndAdvancePosition(
-                shortcutListSize + ShortcutListReadingUtils::getShortcutListSizeFieldSize(),
-                ShortcutListReadingUtils::getShortcutListSizeFieldSize(), toPos)) {
-            return false;
-        }
-        // Copy shortcut list.
-        for (int i = 0; i < shortcutListSize; ++i) {
-            const uint8_t data = ByteArrayUtils::readUint8AndAdvancePosition(
-                    mBuffer->getBuffer(usesAdditionalBuffer), fromPos);
-            if (!bufferToWrite->writeUintAndAdvancePosition(data, 1 /* size */, toPos)) {
-                return false;
-            }
-        }
-        if (usesAdditionalBuffer) {
-            *fromPos += mBuffer->getOriginalBufferSize();
-        }
-        return true;
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicShortcutListPolicy);
-
-    const BufferWithExtendableBuffer *const mBuffer;
-};
-} // namespace latinime
-#endif // LATINIME_DYNAMIC_SHORTCUT_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h
deleted file mode 100644
index d73f739..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_SHORTCUT_LIST_POLICY_H
-#define LATINIME_SHORTCUT_LIST_POLICY_H
-
-#include <stdint.h>
-
-#include "defines.h"
-#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h"
-
-namespace latinime {
-
-class ShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
- public:
-    explicit ShortcutListPolicy(const uint8_t *const shortcutBuf)
-            : mShortcutsBuf(shortcutBuf) {}
-
-    ~ShortcutListPolicy() {}
-
-    int getStartPos(const int pos) const {
-        if (pos == NOT_A_DICT_POS) {
-            return NOT_A_DICT_POS;
-        }
-        int listPos = pos;
-        ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(mShortcutsBuf, &listPos);
-        return listPos;
-    }
-
-    void getNextShortcut(const int maxCodePointCount, int *const outCodePoint,
-            int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext,
-            int *const pos) const {
-        const ShortcutListReadingUtils::ShortcutFlags flags =
-                ShortcutListReadingUtils::getFlagsAndForwardPointer(mShortcutsBuf, pos);
-        if (outHasNext) {
-            *outHasNext = ShortcutListReadingUtils::hasNext(flags);
-        }
-        if (outIsWhitelist) {
-            *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(flags);
-        }
-        if (outCodePoint) {
-            *outCodePointCount = ShortcutListReadingUtils::readShortcutTarget(
-                        mShortcutsBuf, maxCodePointCount, outCodePoint, pos);
-        }
-    }
-
-    void skipAllShortcuts(int *const pos) const {
-        const int shortcutListSize = ShortcutListReadingUtils
-                ::getShortcutListSizeAndForwardPointer(mShortcutsBuf, pos);
-        *pos += shortcutListSize;
-    }
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutListPolicy);
-
-    const uint8_t *const mShortcutsBuf;
-};
-} // namespace latinime
-#endif // LATINIME_SHORTCUT_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp
deleted file mode 100644
index 847dcde..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h"
-
-#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
-
-namespace latinime {
-
-// Flag for presence of more attributes
-const ShortcutListReadingUtils::ShortcutFlags
-        ShortcutListReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80;
-// Mask for attribute probability, stored on 4 bits inside the flags byte.
-const ShortcutListReadingUtils::ShortcutFlags
-        ShortcutListReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F;
-const int ShortcutListReadingUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2;
-// The numeric value of the shortcut probability that means 'whitelist'.
-const int ShortcutListReadingUtils::WHITELIST_SHORTCUT_PROBABILITY = 15;
-
-/* static */ ShortcutListReadingUtils::ShortcutFlags
-        ShortcutListReadingUtils::getFlagsAndForwardPointer(const uint8_t *const dictRoot,
-                int *const pos) {
-    return ByteArrayUtils::readUint8AndAdvancePosition(dictRoot, pos);
-}
-
-/* static */ int ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(
-        const uint8_t *const dictRoot, int *const pos) {
-    // readUint16andAdvancePosition() returns an offset *including* the uint16 field itself.
-    return ByteArrayUtils::readUint16AndAdvancePosition(dictRoot, pos)
-            - SHORTCUT_LIST_SIZE_FIELD_SIZE;
-}
-
-/* static */ int ShortcutListReadingUtils::readShortcutTarget(
-        const uint8_t *const dictRoot, const int maxLength,  int *const outWord, int *const pos) {
-    return ByteArrayUtils::readStringAndAdvancePosition(dictRoot, maxLength, outWord, pos);
-}
-
-} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h
deleted file mode 100644
index a83ed5a..0000000
--- a/native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LATINIME_SHORTCUT_LIST_READING_UTILS_H
-#define LATINIME_SHORTCUT_LIST_READING_UTILS_H
-
-#include <stdint.h>
-
-#include "defines.h"
-
-namespace latinime {
-
-class ShortcutListReadingUtils {
- public:
-    typedef uint8_t ShortcutFlags;
-
-    static ShortcutFlags getFlagsAndForwardPointer(const uint8_t *const dictRoot, int *const pos);
-
-    static AK_FORCE_INLINE int getProbabilityFromFlags(const ShortcutFlags flags) {
-        return flags & MASK_ATTRIBUTE_PROBABILITY;
-    }
-
-    static AK_FORCE_INLINE bool hasNext(const ShortcutFlags flags) {
-        return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0;
-    }
-
-    // This method returns the size of the shortcut list region excluding the shortcut list size
-    // field at the beginning.
-    static int getShortcutListSizeAndForwardPointer(const uint8_t *const dictRoot, int *const pos);
-
-    static AK_FORCE_INLINE int getShortcutListSizeFieldSize() {
-        return SHORTCUT_LIST_SIZE_FIELD_SIZE;
-    }
-
-    static AK_FORCE_INLINE void skipShortcuts(const uint8_t *const dictRoot, int *const pos) {
-        const int shortcutListSize = getShortcutListSizeAndForwardPointer(dictRoot, pos);
-        *pos += shortcutListSize;
-    }
-
-    static AK_FORCE_INLINE bool isWhitelist(const ShortcutFlags flags) {
-        return getProbabilityFromFlags(flags) == WHITELIST_SHORTCUT_PROBABILITY;
-    }
-
-    static int readShortcutTarget(const uint8_t *const dictRoot, const int maxLength,
-            int *const outWord, int *const pos);
-
- private:
-    DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutListReadingUtils);
-
-    static const ShortcutFlags FLAG_ATTRIBUTE_HAS_NEXT;
-    static const ShortcutFlags MASK_ATTRIBUTE_PROBABILITY;
-    static const int SHORTCUT_LIST_SIZE_FIELD_SIZE;
-    static const int WHITELIST_SHORTCUT_PROBABILITY;
-};
-} // namespace latinime
-#endif // LATINIME_SHORTCUT_LIST_READING_UTILS_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/Readme.txt b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/Readme.txt
new file mode 100644
index 0000000..9e29e83
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/Readme.txt
@@ -0,0 +1 @@
+Files under this directory have been auto generated.
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.cpp
new file mode 100644
index 0000000..3e8e059
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.cpp
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!!
+ * Do not edit this file other than updating policy's interface.
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h"
+
+#include "suggest/core/dictionary/property/bigram_property.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+void Ver4BigramListPolicy::getNextBigram(int *const outBigramPos, int *const outProbability,
+        bool *const outHasNext, int *const bigramEntryPos) const {
+    const BigramEntry bigramEntry =
+            mBigramDictContent->getBigramEntryAndAdvancePosition(bigramEntryPos);
+    if (outBigramPos) {
+        // Lookup target PtNode position.
+        *outBigramPos = mTerminalPositionLookupTable->getTerminalPtNodePosition(
+                bigramEntry.getTargetTerminalId());
+    }
+    if (outProbability) {
+        if (bigramEntry.hasHistoricalInfo()) {
+            *outProbability =
+                    ForgettingCurveUtils::decodeProbability(bigramEntry.getHistoricalInfo(),
+                            mHeaderPolicy);
+        } else {
+            *outProbability = bigramEntry.getProbability();
+        }
+    }
+    if (outHasNext) {
+        *outHasNext = bigramEntry.hasNext();
+    }
+}
+
+bool Ver4BigramListPolicy::addNewEntry(const int terminalId, const int newTargetTerminalId,
+        const BigramProperty *const bigramProperty, bool *const outAddedNewEntry) {
+    // 1. The word has no bigrams yet.
+    // 2. The word has bigrams, and there is the target in the list.
+    // 3. The word has bigrams, and there is an invalid entry that can be reclaimed.
+    // 4. The word has bigrams. We have to append new bigram entry to the list.
+    // 5. Same as 4, but the list is the last entry of the content file.
+    if (outAddedNewEntry) {
+        *outAddedNewEntry = false;
+    }
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Case 1. PtNode that doesn't have a bigram list.
+        // Create new bigram list.
+        if (!mBigramDictContent->createNewBigramList(terminalId)) {
+            return false;
+        }
+        const BigramEntry newBigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                newTargetTerminalId);
+        const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(&newBigramEntry,
+                bigramProperty);
+        // Write an entry.
+        const int writingPos =  mBigramDictContent->getBigramListHeadPos(terminalId);
+        if (!mBigramDictContent->writeBigramEntry(&bigramEntryToWrite, writingPos)) {
+            return false;
+        }
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+        return true;
+    }
+
+    int tailEntryPos = NOT_A_DICT_POS;
+    const int entryPosToUpdate = getEntryPosToUpdate(newTargetTerminalId, bigramListPos,
+            &tailEntryPos);
+    if (tailEntryPos != NOT_A_DICT_POS || entryPosToUpdate == NOT_A_DICT_POS) {
+        // Case 4, 5.
+        // Add new entry to the bigram list.
+        if (tailEntryPos == NOT_A_DICT_POS) {
+            // Case 4. Create new bigram list.
+            if (!mBigramDictContent->createNewBigramList(terminalId)) {
+                return false;
+            }
+            const int destPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+            // Copy existing bigram list.
+            if (!mBigramDictContent->copyBigramList(bigramListPos, destPos, &tailEntryPos)) {
+                return false;
+            }
+        }
+        // Write new entry at the tail position of the bigram content.
+        const BigramEntry newBigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                newTargetTerminalId);
+        const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(
+                &newBigramEntry, bigramProperty);
+        if (!mBigramDictContent->writeBigramEntryAtTail(&bigramEntryToWrite)) {
+            return false;
+        }
+        // Update has next flag of the tail entry.
+        if (!updateHasNextFlag(true /* hasNext */, tailEntryPos)) {
+            return false;
+        }
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+        return true;
+    }
+
+    // Case 2. Overwrite the existing entry. Case 3. Reclaim and reuse the existing invalid entry.
+    const BigramEntry originalBigramEntry = mBigramDictContent->getBigramEntry(entryPosToUpdate);
+    if (!originalBigramEntry.isValid()) {
+        // Case 3. Reuse the existing invalid entry. outAddedNewEntry is false when an existing
+        // entry is updated.
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+    }
+    const BigramEntry updatedBigramEntry =
+            originalBigramEntry.updateTargetTerminalIdAndGetEntry(newTargetTerminalId);
+    const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(
+            &updatedBigramEntry, bigramProperty);
+    return mBigramDictContent->writeBigramEntry(&bigramEntryToWrite, entryPosToUpdate);
+}
+
+bool Ver4BigramListPolicy::removeEntry(const int terminalId, const int targetTerminalId) {
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Bigram list doesn't exist.
+        return false;
+    }
+    const int entryPosToUpdate = getEntryPosToUpdate(targetTerminalId, bigramListPos,
+            nullptr /* outTailEntryPos */);
+    if (entryPosToUpdate == NOT_A_DICT_POS) {
+        // Bigram entry doesn't exist.
+        return false;
+    }
+    const BigramEntry bigramEntry = mBigramDictContent->getBigramEntry(entryPosToUpdate);
+    if (targetTerminalId != bigramEntry.getTargetTerminalId()) {
+        // Bigram entry doesn't exist.
+        return false;
+    }
+    // Remove bigram entry by marking it as invalid entry and overwriting the original entry.
+    const BigramEntry updatedBigramEntry = bigramEntry.getInvalidatedEntry();
+    return mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPosToUpdate);
+}
+
+bool Ver4BigramListPolicy::updateAllBigramEntriesAndDeleteUselessEntries(const int terminalId,
+        int *const outBigramCount) {
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Bigram list doesn't exist.
+        return true;
+    }
+    bool hasNext = true;
+    int readingPos = bigramListPos;
+    while (hasNext) {
+        const int entryPos = readingPos;
+        const BigramEntry bigramEntry =
+                mBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = bigramEntry.hasNext();
+        if (!bigramEntry.isValid()) {
+            continue;
+        }
+        const int targetPtNodePos = mTerminalPositionLookupTable->getTerminalPtNodePosition(
+                bigramEntry.getTargetTerminalId());
+        if (targetPtNodePos == NOT_A_DICT_POS) {
+            // Invalidate bigram entry.
+            const BigramEntry updatedBigramEntry = bigramEntry.getInvalidatedEntry();
+            if (!mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPos)) {
+                return false;
+            }
+        } else if (bigramEntry.hasHistoricalInfo()) {
+            const HistoricalInfo historicalInfo = ForgettingCurveUtils::createHistoricalInfoToSave(
+                    bigramEntry.getHistoricalInfo(), mHeaderPolicy);
+            if (ForgettingCurveUtils::needsToKeep(&historicalInfo, mHeaderPolicy)) {
+                const BigramEntry updatedBigramEntry =
+                        bigramEntry.updateHistoricalInfoAndGetEntry(&historicalInfo);
+                if (!mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPos)) {
+                    return false;
+                }
+                *outBigramCount += 1;
+            } else {
+                // Remove entry.
+                const BigramEntry updatedBigramEntry = bigramEntry.getInvalidatedEntry();
+                if (!mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPos)) {
+                    return false;
+                }
+            }
+        } else {
+            *outBigramCount += 1;
+        }
+    }
+    return true;
+}
+
+int Ver4BigramListPolicy::getBigramEntryConut(const int terminalId) {
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Bigram list doesn't exist.
+        return 0;
+    }
+    int bigramCount = 0;
+    bool hasNext = true;
+    int readingPos = bigramListPos;
+    while (hasNext) {
+        const BigramEntry bigramEntry =
+                mBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = bigramEntry.hasNext();
+        if (bigramEntry.isValid()) {
+            bigramCount++;
+        }
+    }
+    return bigramCount;
+}
+
+int Ver4BigramListPolicy::getEntryPosToUpdate(const int targetTerminalIdToFind,
+        const int bigramListPos, int *const outTailEntryPos) const {
+    if (outTailEntryPos) {
+        *outTailEntryPos = NOT_A_DICT_POS;
+    }
+    bool hasNext = true;
+    int invalidEntryPos = NOT_A_DICT_POS;
+    int readingPos = bigramListPos;
+    while (hasNext) {
+        const int entryPos = readingPos;
+        const BigramEntry bigramEntry =
+                mBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = bigramEntry.hasNext();
+        if (bigramEntry.getTargetTerminalId() == targetTerminalIdToFind) {
+            // Entry with same target is found.
+            return entryPos;
+        } else if (!bigramEntry.isValid()) {
+            // Invalid entry that can be reused is found.
+            invalidEntryPos = entryPos;
+        }
+        if (!hasNext && mBigramDictContent->isContentTailPos(readingPos)) {
+            if (outTailEntryPos) {
+                *outTailEntryPos = entryPos;
+            }
+        }
+    }
+    return invalidEntryPos;
+}
+
+const BigramEntry Ver4BigramListPolicy::createUpdatedBigramEntryFrom(
+        const BigramEntry *const originalBigramEntry,
+        const BigramProperty *const bigramProperty) const {
+    // TODO: Consolidate historical info and probability.
+    if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
+        const HistoricalInfo historicalInfoForUpdate(bigramProperty->getTimestamp(),
+                bigramProperty->getLevel(), bigramProperty->getCount());
+        const HistoricalInfo updatedHistoricalInfo =
+                ForgettingCurveUtils::createUpdatedHistoricalInfo(
+                        originalBigramEntry->getHistoricalInfo(), bigramProperty->getProbability(),
+                        &historicalInfoForUpdate, mHeaderPolicy);
+        return originalBigramEntry->updateHistoricalInfoAndGetEntry(&updatedHistoricalInfo);
+    } else {
+        return originalBigramEntry->updateProbabilityAndGetEntry(bigramProperty->getProbability());
+    }
+}
+
+bool Ver4BigramListPolicy::updateHasNextFlag(const bool hasNext, const int bigramEntryPos) {
+    const BigramEntry bigramEntry = mBigramDictContent->getBigramEntry(bigramEntryPos);
+    const BigramEntry updatedBigramEntry = bigramEntry.updateHasNextAndGetEntry(hasNext);
+    return mBigramDictContent->writeBigramEntry(&updatedBigramEntry, bigramEntryPos);
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h
new file mode 100644
index 0000000..6162346
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!!
+ * Do not edit this file other than updating policy's interface.
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_BIGRAM_LIST_POLICY_H
+#define LATINIME_BACKWARD_V402_VER4_BIGRAM_LIST_POLICY_H
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_entry.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class BigramDictContent;
+} // namespace v402
+} // namespace backward
+class BigramProperty;
+namespace backward {
+namespace v402 {
+} // namespace v402
+} // namespace backward
+class HeaderPolicy;
+namespace backward {
+namespace v402 {
+class TerminalPositionLookupTable;
+
+class Ver4BigramListPolicy : public DictionaryBigramsStructurePolicy {
+ public:
+    Ver4BigramListPolicy(BigramDictContent *const bigramDictContent,
+            const TerminalPositionLookupTable *const terminalPositionLookupTable,
+            const HeaderPolicy *const headerPolicy)
+            : mBigramDictContent(bigramDictContent),
+              mTerminalPositionLookupTable(terminalPositionLookupTable),
+              mHeaderPolicy(headerPolicy) {}
+
+    void getNextBigram(int *const outBigramPos, int *const outProbability,
+            bool *const outHasNext, int *const bigramEntryPos) const;
+
+    void skipAllBigrams(int *const pos) const {
+        // Do nothing because we don't need to skip bigram lists in ver4 dictionaries.
+    }
+
+    bool addNewEntry(const int terminalId, const int newTargetTerminalId,
+            const BigramProperty *const bigramProperty, bool *const outAddedNewEntry);
+
+    bool removeEntry(const int terminalId, const int targetTerminalId);
+
+    bool updateAllBigramEntriesAndDeleteUselessEntries(const int terminalId,
+            int *const outBigramCount);
+
+    int getBigramEntryConut(const int terminalId);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4BigramListPolicy);
+
+    int getEntryPosToUpdate(const int targetTerminalIdToFind, const int bigramListPos,
+            int *const outTailEntryPos) const;
+
+    const BigramEntry createUpdatedBigramEntryFrom(const BigramEntry *const originalBigramEntry,
+            const BigramProperty *const bigramProperty) const;
+
+    bool updateHasNextFlag(const bool hasNext, const int bigramEntryPos);
+
+    BigramDictContent *const mBigramDictContent;
+    const TerminalPositionLookupTable *const mTerminalPositionLookupTable;
+    const HeaderPolicy *const mHeaderPolicy;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_BIGRAM_LIST_POLICY_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.cpp
new file mode 100644
index 0000000..e2dd93c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.cpp
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+const BigramEntry BigramDictContent::getBigramEntryAndAdvancePosition(
+        int *const bigramEntryPos) const {
+    const BufferWithExtendableBuffer *const bigramListBuffer = getContentBuffer();
+    const int bigramEntryTailPos = (*bigramEntryPos) + getBigramEntrySize();
+    if (*bigramEntryPos < 0 || bigramEntryTailPos > bigramListBuffer->getTailPosition()) {
+        AKLOGE("Invalid bigram entry position. bigramEntryPos: %d, bigramEntryTailPos: %d, "
+                "bufSize: %d", *bigramEntryPos, bigramEntryTailPos,
+                        bigramListBuffer->getTailPosition());
+        ASSERT(false);
+        return BigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                Ver4DictConstants::NOT_A_TERMINAL_ID);
+    }
+    const int bigramFlags = bigramListBuffer->readUintAndAdvancePosition(
+            Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE, bigramEntryPos);
+    const bool hasNext = (bigramFlags & Ver4DictConstants::BIGRAM_HAS_NEXT_MASK) != 0;
+    int probability = NOT_A_PROBABILITY;
+    int timestamp = NOT_A_TIMESTAMP;
+    int level = 0;
+    int count = 0;
+    if (mHasHistoricalInfo) {
+        timestamp = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, bigramEntryPos);
+        level = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, bigramEntryPos);
+        count = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, bigramEntryPos);
+    } else {
+        probability = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::PROBABILITY_SIZE, bigramEntryPos);
+    }
+    const int encodedTargetTerminalId = bigramListBuffer->readUintAndAdvancePosition(
+            Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE, bigramEntryPos);
+    const int targetTerminalId =
+            (encodedTargetTerminalId == Ver4DictConstants::INVALID_BIGRAM_TARGET_TERMINAL_ID) ?
+                    Ver4DictConstants::NOT_A_TERMINAL_ID : encodedTargetTerminalId;
+    if (mHasHistoricalInfo) {
+        const HistoricalInfo historicalInfo(timestamp, level, count);
+        return BigramEntry(hasNext, probability, &historicalInfo, targetTerminalId);
+    } else {
+        return BigramEntry(hasNext, probability, targetTerminalId);
+    }
+}
+
+bool BigramDictContent::writeBigramEntryAndAdvancePosition(
+        const BigramEntry *const bigramEntryToWrite, int *const entryWritingPos) {
+    BufferWithExtendableBuffer *const bigramListBuffer = getWritableContentBuffer();
+    const int bigramFlags = createAndGetBigramFlags(bigramEntryToWrite->hasNext());
+    if (!bigramListBuffer->writeUintAndAdvancePosition(bigramFlags,
+            Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE, entryWritingPos)) {
+        AKLOGE("Cannot write bigram flags. pos: %d, flags: %x", *entryWritingPos, bigramFlags);
+        return false;
+    }
+    if (mHasHistoricalInfo) {
+        const HistoricalInfo *const historicalInfo = bigramEntryToWrite->getHistoricalInfo();
+        if (!bigramListBuffer->writeUintAndAdvancePosition(historicalInfo->getTimeStamp(),
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram timestamps. pos: %d, timestamp: %d", *entryWritingPos,
+                    historicalInfo->getTimeStamp());
+            return false;
+        }
+        if (!bigramListBuffer->writeUintAndAdvancePosition(historicalInfo->getLevel(),
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram level. pos: %d, level: %d", *entryWritingPos,
+                    historicalInfo->getLevel());
+            return false;
+        }
+        if (!bigramListBuffer->writeUintAndAdvancePosition(historicalInfo->getCount(),
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram count. pos: %d, count: %d", *entryWritingPos,
+                    historicalInfo->getCount());
+            return false;
+        }
+    } else {
+        if (!bigramListBuffer->writeUintAndAdvancePosition(bigramEntryToWrite->getProbability(),
+                Ver4DictConstants::PROBABILITY_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram probability. pos: %d, probability: %d", *entryWritingPos,
+                    bigramEntryToWrite->getProbability());
+            return false;
+        }
+    }
+    const int targetTerminalIdToWrite =
+            (bigramEntryToWrite->getTargetTerminalId() == Ver4DictConstants::NOT_A_TERMINAL_ID) ?
+                    Ver4DictConstants::INVALID_BIGRAM_TARGET_TERMINAL_ID :
+                            bigramEntryToWrite->getTargetTerminalId();
+    if (!bigramListBuffer->writeUintAndAdvancePosition(targetTerminalIdToWrite,
+            Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE, entryWritingPos)) {
+        AKLOGE("Cannot write bigram target terminal id. pos: %d, target terminal id: %d",
+                *entryWritingPos, bigramEntryToWrite->getTargetTerminalId());
+        return false;
+    }
+    return true;
+}
+
+bool BigramDictContent::copyBigramList(const int bigramListPos, const int toPos,
+        int *const outTailEntryPos) {
+    int readingPos = bigramListPos;
+    int writingPos = toPos;
+    bool hasNext = true;
+    while (hasNext) {
+        const BigramEntry bigramEntry = getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = bigramEntry.hasNext();
+        if (!hasNext) {
+            *outTailEntryPos = writingPos;
+        }
+        if (!writeBigramEntryAndAdvancePosition(&bigramEntry, &writingPos)) {
+            AKLOGE("Cannot write bigram entry to copy. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool BigramDictContent::runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        const BigramDictContent *const originalBigramDictContent,
+        int *const outBigramEntryCount) {
+    for (TerminalPositionLookupTable::TerminalIdMap::const_iterator it = terminalIdMap->begin();
+            it != terminalIdMap->end(); ++it) {
+        const int originalBigramListPos =
+                originalBigramDictContent->getBigramListHeadPos(it->first);
+        if (originalBigramListPos == NOT_A_DICT_POS) {
+            // This terminal does not have a bigram list.
+            continue;
+        }
+        const int bigramListPos = getContentBuffer()->getTailPosition();
+        int bigramEntryCount = 0;
+        // Copy bigram list with GC from original content.
+        if (!runGCBigramList(originalBigramListPos, originalBigramDictContent, bigramListPos,
+                terminalIdMap, &bigramEntryCount)) {
+            AKLOGE("Cannot complete GC for the bigram list. original pos: %d, pos: %d",
+                    originalBigramListPos, bigramListPos);
+            return false;
+        }
+        if (bigramEntryCount == 0) {
+            // All bigram entries are useless. This terminal does not have a bigram list.
+            continue;
+        }
+        *outBigramEntryCount += bigramEntryCount;
+        // Set bigram list position to the lookup table.
+        if (!getUpdatableAddressLookupTable()->set(it->second, bigramListPos)) {
+            AKLOGE("Cannot set bigram list position. terminal id: %d, pos: %d",
+                    it->second, bigramListPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+// Returns whether GC for the bigram list was succeeded or not.
+bool BigramDictContent::runGCBigramList(const int bigramListPos,
+        const BigramDictContent *const sourceBigramDictContent, const int toPos,
+        const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        int *const outEntrycount) {
+    bool hasNext = true;
+    int readingPos = bigramListPos;
+    int writingPos = toPos;
+    int lastEntryPos = NOT_A_DICT_POS;
+    while (hasNext) {
+        const BigramEntry originalBigramEntry =
+                sourceBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = originalBigramEntry.hasNext();
+        if (originalBigramEntry.getTargetTerminalId() == Ver4DictConstants::NOT_A_TERMINAL_ID) {
+            continue;
+        }
+        TerminalPositionLookupTable::TerminalIdMap::const_iterator it =
+                terminalIdMap->find(originalBigramEntry.getTargetTerminalId());
+        if (it == terminalIdMap->end()) {
+            // Target word has been removed.
+            continue;
+        }
+        lastEntryPos = hasNext ? writingPos : NOT_A_DICT_POS;
+        const BigramEntry updatedBigramEntry =
+                originalBigramEntry.updateTargetTerminalIdAndGetEntry(it->second);
+        if (!writeBigramEntryAndAdvancePosition(&updatedBigramEntry, &writingPos)) {
+            AKLOGE("Cannot write bigram entry to run GC. pos: %d", writingPos);
+            return false;
+        }
+        *outEntrycount += 1;
+    }
+    if (lastEntryPos != NOT_A_DICT_POS) {
+        // Update has next flag in the last written entry.
+        const BigramEntry bigramEntry = getBigramEntry(lastEntryPos).updateHasNextAndGetEntry(
+                false /* hasNext */);
+        if (!writeBigramEntry(&bigramEntry, lastEntryPos)) {
+            AKLOGE("Cannot write bigram entry to set hasNext flag after GC. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.h
new file mode 100644
index 0000000..b554e56
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.h
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_BIGRAM_DICT_CONTENT_H
+#define LATINIME_BACKWARD_V402_BIGRAM_DICT_CONTENT_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_entry.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class BigramDictContent : public SparseTableDictContent {
+ public:
+    BigramDictContent(const char *const dictPath, const bool hasHistoricalInfo,
+            const bool isUpdatable)
+            : SparseTableDictContent(dictPath,
+                      Ver4DictConstants::BIGRAM_LOOKUP_TABLE_FILE_EXTENSION,
+                      Ver4DictConstants::BIGRAM_CONTENT_TABLE_FILE_EXTENSION,
+                      Ver4DictConstants::BIGRAM_FILE_EXTENSION, isUpdatable,
+                      Ver4DictConstants::BIGRAM_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::BIGRAM_ADDRESS_TABLE_DATA_SIZE),
+              mHasHistoricalInfo(hasHistoricalInfo) {}
+
+    BigramDictContent(const bool hasHistoricalInfo)
+            : SparseTableDictContent(Ver4DictConstants::BIGRAM_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::BIGRAM_ADDRESS_TABLE_DATA_SIZE),
+              mHasHistoricalInfo(hasHistoricalInfo) {}
+
+    const BigramEntry getBigramEntry(const int bigramEntryPos) const {
+        int readingPos = bigramEntryPos;
+        return getBigramEntryAndAdvancePosition(&readingPos);
+    }
+
+    const BigramEntry getBigramEntryAndAdvancePosition(int *const bigramEntryPos) const;
+
+    // Returns head position of bigram list for a PtNode specified by terminalId.
+    int getBigramListHeadPos(const int terminalId) const {
+        const SparseTable *const addressLookupTable = getAddressLookupTable();
+        if (!addressLookupTable->contains(terminalId)) {
+            return NOT_A_DICT_POS;
+        }
+        return addressLookupTable->get(terminalId);
+    }
+
+    bool writeBigramEntryAtTail(const BigramEntry *const bigramEntryToWrite) {
+        int writingPos = getContentBuffer()->getTailPosition();
+        return writeBigramEntryAndAdvancePosition(bigramEntryToWrite, &writingPos);
+    }
+
+    bool writeBigramEntry(const BigramEntry *const bigramEntryToWrite, const int entryWritingPos) {
+        int writingPos = entryWritingPos;
+        return writeBigramEntryAndAdvancePosition(bigramEntryToWrite, &writingPos);
+    }
+
+    bool writeBigramEntryAndAdvancePosition(const BigramEntry *const bigramEntryToWrite,
+            int *const entryWritingPos);
+
+    bool createNewBigramList(const int terminalId) {
+        const int bigramListPos = getContentBuffer()->getTailPosition();
+        return getUpdatableAddressLookupTable()->set(terminalId, bigramListPos);
+    }
+
+    bool copyBigramList(const int bigramListPos, const int toPos, int *const outTailEntryPos);
+
+    bool flushToFile(const char *const dictPath) const {
+        return flush(dictPath, Ver4DictConstants::BIGRAM_LOOKUP_TABLE_FILE_EXTENSION,
+                Ver4DictConstants::BIGRAM_CONTENT_TABLE_FILE_EXTENSION,
+                Ver4DictConstants::BIGRAM_FILE_EXTENSION);
+    }
+
+    bool runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+            const BigramDictContent *const originalBigramDictContent,
+            int *const outBigramEntryCount);
+
+    bool isContentTailPos(const int pos) const {
+        return pos == getContentBuffer()->getTailPosition();
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(BigramDictContent);
+
+    int createAndGetBigramFlags(const bool hasNext) const {
+        return hasNext ? Ver4DictConstants::BIGRAM_HAS_NEXT_MASK : 0;
+    }
+
+    int getBigramEntrySize() const {
+        if (mHasHistoricalInfo) {
+            return Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE
+                    + Ver4DictConstants::TIME_STAMP_FIELD_SIZE
+                    + Ver4DictConstants::WORD_LEVEL_FIELD_SIZE
+                    + Ver4DictConstants::WORD_COUNT_FIELD_SIZE
+                    + Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
+        } else {
+            return Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE
+                    + Ver4DictConstants::PROBABILITY_SIZE
+                    + Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
+        }
+    }
+
+    bool runGCBigramList(const int bigramListPos,
+            const BigramDictContent *const sourceBigramDictContent, const int toPos,
+            const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+            int *const outEntryCount);
+
+    bool mHasHistoricalInfo;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_BIGRAM_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_entry.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_entry.h
new file mode 100644
index 0000000..40968b4
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_entry.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/bigram_entry.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_BIGRAM_ENTRY_H
+#define LATINIME_BACKWARD_V402_BIGRAM_ENTRY_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/historical_info.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class BigramEntry {
+ public:
+    BigramEntry(const BigramEntry& bigramEntry)
+            : mHasNext(bigramEntry.mHasNext), mProbability(bigramEntry.mProbability),
+              mHistoricalInfo(), mTargetTerminalId(bigramEntry.mTargetTerminalId) {}
+
+    // Entry with historical information.
+    BigramEntry(const bool hasNext, const int probability, const int targetTerminalId)
+            : mHasNext(hasNext), mProbability(probability), mHistoricalInfo(),
+              mTargetTerminalId(targetTerminalId) {}
+
+    // Entry with historical information.
+    BigramEntry(const bool hasNext, const int probability,
+            const HistoricalInfo *const historicalInfo, const int targetTerminalId)
+            : mHasNext(hasNext), mProbability(probability), mHistoricalInfo(*historicalInfo),
+              mTargetTerminalId(targetTerminalId) {}
+
+    const BigramEntry getInvalidatedEntry() const {
+        return updateTargetTerminalIdAndGetEntry(Ver4DictConstants::NOT_A_TERMINAL_ID);
+    }
+
+    const BigramEntry updateHasNextAndGetEntry(const bool hasNext) const {
+        return BigramEntry(hasNext, mProbability, &mHistoricalInfo, mTargetTerminalId);
+    }
+
+    const BigramEntry updateTargetTerminalIdAndGetEntry(const int newTargetTerminalId) const {
+        return BigramEntry(mHasNext, mProbability, &mHistoricalInfo, newTargetTerminalId);
+    }
+
+    const BigramEntry updateProbabilityAndGetEntry(const int probability) const {
+        return BigramEntry(mHasNext, probability, &mHistoricalInfo, mTargetTerminalId);
+    }
+
+    const BigramEntry updateHistoricalInfoAndGetEntry(
+            const HistoricalInfo *const historicalInfo) const {
+        return BigramEntry(mHasNext, mProbability, historicalInfo, mTargetTerminalId);
+    }
+
+    bool isValid() const {
+        return mTargetTerminalId != Ver4DictConstants::NOT_A_TERMINAL_ID;
+    }
+
+    bool hasNext() const {
+        return mHasNext;
+    }
+
+    int getProbability() const {
+        return mProbability;
+    }
+
+    bool hasHistoricalInfo() const {
+        return mHistoricalInfo.isValid();
+    }
+
+    const HistoricalInfo *getHistoricalInfo() const {
+        return &mHistoricalInfo;
+    }
+
+    int getTargetTerminalId() const {
+        return mTargetTerminalId;
+    }
+
+ private:
+    // Copy constructor is public to use this class as a type of return value.
+    DISALLOW_DEFAULT_CONSTRUCTOR(BigramEntry);
+    DISALLOW_ASSIGNMENT_OPERATOR(BigramEntry);
+
+    const bool mHasNext;
+    const int mProbability;
+    const HistoricalInfo mHistoricalInfo;
+    const int mTargetTerminalId;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_BIGRAM_ENTRY_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/dict_content.h
new file mode 100644
index 0000000..0f2f255
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/dict_content.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/dict_content.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_DICT_CONTENT_H
+#define LATINIME_BACKWARD_V402_DICT_CONTENT_H
+
+#include "defines.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class DictContent {
+ public:
+    virtual ~DictContent() {}
+    virtual bool isValid() const = 0;
+
+ protected:
+    DictContent() {}
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(DictContent);
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.cpp
new file mode 100644
index 0000000..c671647
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.cpp
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+const ProbabilityEntry ProbabilityDictContent::getProbabilityEntry(const int terminalId) const {
+    if (terminalId < 0 || terminalId >= mSize) {
+        // This method can be called with invalid terminal id during GC.
+        return ProbabilityEntry(0 /* flags */, NOT_A_PROBABILITY);
+    }
+    const BufferWithExtendableBuffer *const buffer = getBuffer();
+    int entryPos = getEntryPos(terminalId);
+    const int flags = buffer->readUintAndAdvancePosition(
+            Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE, &entryPos);
+    const int probability = buffer->readUintAndAdvancePosition(
+            Ver4DictConstants::PROBABILITY_SIZE, &entryPos);
+    if (mHasHistoricalInfo) {
+        const int timestamp = buffer->readUintAndAdvancePosition(
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, &entryPos);
+        const int level = buffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, &entryPos);
+        const int count = buffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, &entryPos);
+        const HistoricalInfo historicalInfo(timestamp, level, count);
+        return ProbabilityEntry(flags, probability, &historicalInfo);
+    } else {
+        return ProbabilityEntry(flags, probability);
+    }
+}
+
+bool ProbabilityDictContent::setProbabilityEntry(const int terminalId,
+        const ProbabilityEntry *const probabilityEntry) {
+    if (terminalId < 0) {
+        return false;
+    }
+    const int entryPos = getEntryPos(terminalId);
+    if (terminalId >= mSize) {
+        ProbabilityEntry dummyEntry;
+        // Write new entry.
+        int writingPos = getBuffer()->getTailPosition();
+        while (writingPos <= entryPos) {
+            // Fulfilling with dummy entries until writingPos.
+            if (!writeEntry(&dummyEntry, writingPos)) {
+                AKLOGE("Cannot write dummy entry. pos: %d, mSize: %d", writingPos, mSize);
+                return false;
+            }
+            writingPos += getEntrySize();
+            mSize++;
+        }
+    }
+    return writeEntry(probabilityEntry, entryPos);
+}
+
+bool ProbabilityDictContent::flushToFile(const char *const dictPath) const {
+    if (getEntryPos(mSize) < getBuffer()->getTailPosition()) {
+        ProbabilityDictContent probabilityDictContentToWrite(mHasHistoricalInfo);
+        for (int i = 0; i < mSize; ++i) {
+            const ProbabilityEntry probabilityEntry = getProbabilityEntry(i);
+            if (!probabilityDictContentToWrite.setProbabilityEntry(i, &probabilityEntry)) {
+                AKLOGE("Cannot set probability entry in flushToFile. terminalId: %d", i);
+                return false;
+            }
+        }
+        return probabilityDictContentToWrite.flush(dictPath,
+                Ver4DictConstants::FREQ_FILE_EXTENSION);
+    } else {
+        return flush(dictPath, Ver4DictConstants::FREQ_FILE_EXTENSION);
+    }
+}
+
+bool ProbabilityDictContent::runGC(
+        const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        const ProbabilityDictContent *const originalProbabilityDictContent) {
+    mSize = 0;
+    for (TerminalPositionLookupTable::TerminalIdMap::const_iterator it = terminalIdMap->begin();
+            it != terminalIdMap->end(); ++it) {
+        const ProbabilityEntry probabilityEntry =
+                originalProbabilityDictContent->getProbabilityEntry(it->first);
+        if (!setProbabilityEntry(it->second, &probabilityEntry)) {
+            AKLOGE("Cannot set probability entry in runGC. terminalId: %d", it->second);
+            return false;
+        }
+        mSize++;
+    }
+    return true;
+}
+
+int ProbabilityDictContent::getEntrySize() const {
+    if (mHasHistoricalInfo) {
+        return Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE
+                + Ver4DictConstants::PROBABILITY_SIZE
+                + Ver4DictConstants::TIME_STAMP_FIELD_SIZE
+                + Ver4DictConstants::WORD_LEVEL_FIELD_SIZE
+                + Ver4DictConstants::WORD_COUNT_FIELD_SIZE;
+    } else {
+        return Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE
+                + Ver4DictConstants::PROBABILITY_SIZE;
+    }
+}
+
+int ProbabilityDictContent::getEntryPos(const int terminalId) const {
+    return terminalId * getEntrySize();
+}
+
+bool ProbabilityDictContent::writeEntry(const ProbabilityEntry *const probabilityEntry,
+        const int entryPos) {
+    BufferWithExtendableBuffer *const bufferToWrite = getWritableBuffer();
+    int writingPos = entryPos;
+    if (!bufferToWrite->writeUintAndAdvancePosition(probabilityEntry->getFlags(),
+            Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE, &writingPos)) {
+        AKLOGE("Cannot write flags in probability dict content. pos: %d", writingPos);
+        return false;
+    }
+    if (!bufferToWrite->writeUintAndAdvancePosition(probabilityEntry->getProbability(),
+            Ver4DictConstants::PROBABILITY_SIZE, &writingPos)) {
+        AKLOGE("Cannot write probability in probability dict content. pos: %d", writingPos);
+        return false;
+    }
+    if (mHasHistoricalInfo) {
+        const HistoricalInfo *const historicalInfo = probabilityEntry->getHistoricalInfo();
+        if (!bufferToWrite->writeUintAndAdvancePosition(historicalInfo->getTimeStamp(),
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, &writingPos)) {
+            AKLOGE("Cannot write timestamp in probability dict content. pos: %d", writingPos);
+            return false;
+        }
+        if (!bufferToWrite->writeUintAndAdvancePosition(historicalInfo->getLevel(),
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, &writingPos)) {
+            AKLOGE("Cannot write level in probability dict content. pos: %d", writingPos);
+            return false;
+        }
+        if (!bufferToWrite->writeUintAndAdvancePosition(historicalInfo->getCount(),
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, &writingPos)) {
+            AKLOGE("Cannot write count in probability dict content. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.h
new file mode 100644
index 0000000..3734797
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_PROBABILITY_DICT_CONTENT_H
+#define LATINIME_BACKWARD_V402_PROBABILITY_DICT_CONTENT_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/single_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class ProbabilityEntry;
+
+class ProbabilityDictContent : public SingleDictContent {
+ public:
+    ProbabilityDictContent(const char *const dictPath, const bool hasHistoricalInfo,
+            const bool isUpdatable)
+            : SingleDictContent(dictPath, Ver4DictConstants::FREQ_FILE_EXTENSION, isUpdatable),
+              mHasHistoricalInfo(hasHistoricalInfo),
+              mSize(getBuffer()->getTailPosition() / getEntrySize()) {}
+
+    ProbabilityDictContent(const bool hasHistoricalInfo)
+            : mHasHistoricalInfo(hasHistoricalInfo), mSize(0) {}
+
+    const ProbabilityEntry getProbabilityEntry(const int terminalId) const;
+
+    bool setProbabilityEntry(const int terminalId, const ProbabilityEntry *const probabilityEntry);
+
+    bool flushToFile(const char *const dictPath) const;
+
+    bool runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+            const ProbabilityDictContent *const originalProbabilityDictContent);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(ProbabilityDictContent);
+
+    int getEntrySize() const;
+
+    int getEntryPos(const int terminalId) const;
+
+    bool writeEntry(const ProbabilityEntry *const probabilityEntry, const int entryPos);
+
+    bool mHasHistoricalInfo;
+    int mSize;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_PROBABILITY_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h
new file mode 100644
index 0000000..8ccfa33
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_PROBABILITY_ENTRY_H
+#define LATINIME_BACKWARD_V402_PROBABILITY_ENTRY_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/historical_info.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class ProbabilityEntry {
+ public:
+    ProbabilityEntry(const ProbabilityEntry &probabilityEntry)
+            : mFlags(probabilityEntry.mFlags), mProbability(probabilityEntry.mProbability),
+              mHistoricalInfo(probabilityEntry.mHistoricalInfo) {}
+
+    // Dummy entry
+    ProbabilityEntry()
+            : mFlags(0), mProbability(NOT_A_PROBABILITY), mHistoricalInfo() {}
+
+    // Entry without historical information
+    ProbabilityEntry(const int flags, const int probability)
+            : mFlags(flags), mProbability(probability), mHistoricalInfo() {}
+
+    // Entry with historical information.
+    ProbabilityEntry(const int flags, const int probability,
+            const HistoricalInfo *const historicalInfo)
+            : mFlags(flags), mProbability(probability), mHistoricalInfo(*historicalInfo) {}
+
+    const ProbabilityEntry createEntryWithUpdatedProbability(const int probability) const {
+        return ProbabilityEntry(mFlags, probability, &mHistoricalInfo);
+    }
+
+    const ProbabilityEntry createEntryWithUpdatedHistoricalInfo(
+            const HistoricalInfo *const historicalInfo) const {
+        return ProbabilityEntry(mFlags, mProbability, historicalInfo);
+    }
+
+    bool hasHistoricalInfo() const {
+        return mHistoricalInfo.isValid();
+    }
+
+    int getFlags() const {
+        return mFlags;
+    }
+
+    int getProbability() const {
+        return mProbability;
+    }
+
+    const HistoricalInfo *getHistoricalInfo() const {
+        return &mHistoricalInfo;
+    }
+
+ private:
+    // Copy constructor is public to use this class as a type of return value.
+    DISALLOW_ASSIGNMENT_OPERATOR(ProbabilityEntry);
+
+    const int mFlags;
+    const int mProbability;
+    const HistoricalInfo mHistoricalInfo;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_PROBABILITY_ENTRY_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.cpp
new file mode 100644
index 0000000..56bc8b9
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.cpp
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+void ShortcutDictContent::getShortcutEntryAndAdvancePosition(const int maxCodePointCount,
+        int *const outCodePoint, int *const outCodePointCount, int *const outProbability,
+        bool *const outhasNext, int *const shortcutEntryPos) const {
+    const BufferWithExtendableBuffer *const shortcutListBuffer = getContentBuffer();
+    if (*shortcutEntryPos < 0 || *shortcutEntryPos >=  shortcutListBuffer->getTailPosition()) {
+        AKLOGE("Invalid shortcut entry position. shortcutEntryPos: %d, bufSize: %d",
+                *shortcutEntryPos, shortcutListBuffer->getTailPosition());
+        ASSERT(false);
+        if (outhasNext) {
+            *outhasNext = false;
+        }
+        if (outCodePointCount) {
+            *outCodePointCount = 0;
+        }
+        return;
+    }
+
+    const int shortcutFlags = shortcutListBuffer->readUintAndAdvancePosition(
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos);
+    if (outProbability) {
+        *outProbability = shortcutFlags & Ver4DictConstants::SHORTCUT_PROBABILITY_MASK;
+    }
+    if (outhasNext) {
+        *outhasNext = shortcutFlags & Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK;
+    }
+    if (outCodePoint && outCodePointCount) {
+        shortcutListBuffer->readCodePointsAndAdvancePosition(
+                maxCodePointCount, outCodePoint, outCodePointCount, shortcutEntryPos);
+    }
+}
+
+int ShortcutDictContent::getShortcutListHeadPos(const int terminalId) const {
+    const SparseTable *const addressLookupTable = getAddressLookupTable();
+    if (!addressLookupTable->contains(terminalId)) {
+        return NOT_A_DICT_POS;
+    }
+    return addressLookupTable->get(terminalId);
+}
+
+bool ShortcutDictContent::flushToFile(const char *const dictPath) const {
+    return flush(dictPath, Ver4DictConstants::SHORTCUT_LOOKUP_TABLE_FILE_EXTENSION,
+            Ver4DictConstants::SHORTCUT_CONTENT_TABLE_FILE_EXTENSION,
+            Ver4DictConstants::SHORTCUT_FILE_EXTENSION);
+}
+
+bool ShortcutDictContent::runGC(
+        const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        const ShortcutDictContent *const originalShortcutDictContent) {
+   for (TerminalPositionLookupTable::TerminalIdMap::const_iterator it = terminalIdMap->begin();
+           it != terminalIdMap->end(); ++it) {
+       const int originalShortcutListPos =
+               originalShortcutDictContent->getShortcutListHeadPos(it->first);
+       if (originalShortcutListPos == NOT_A_DICT_POS) {
+           continue;
+       }
+       const int shortcutListPos = getContentBuffer()->getTailPosition();
+       // Copy shortcut list from original content.
+       if (!copyShortcutListFromDictContent(originalShortcutListPos, originalShortcutDictContent,
+               shortcutListPos)) {
+           AKLOGE("Cannot copy shortcut list during GC. original pos: %d, pos: %d",
+                   originalShortcutListPos, shortcutListPos);
+           return false;
+       }
+       // Set shortcut list position to the lookup table.
+       if (!getUpdatableAddressLookupTable()->set(it->second, shortcutListPos)) {
+           AKLOGE("Cannot set shortcut list position. terminal id: %d, pos: %d",
+                   it->second, shortcutListPos);
+           return false;
+       }
+   }
+   return true;
+}
+
+bool ShortcutDictContent::createNewShortcutList(const int terminalId) {
+    const int shortcutListListPos = getContentBuffer()->getTailPosition();
+    return getUpdatableAddressLookupTable()->set(terminalId, shortcutListListPos);
+}
+
+bool ShortcutDictContent::copyShortcutList(const int shortcutListPos, const int toPos) {
+    return copyShortcutListFromDictContent(shortcutListPos, this, toPos);
+}
+
+bool ShortcutDictContent::copyShortcutListFromDictContent(const int shortcutListPos,
+        const ShortcutDictContent *const sourceShortcutDictContent, const int toPos) {
+    bool hasNext = true;
+    int readingPos = shortcutListPos;
+    int writingPos = toPos;
+    int codePoints[MAX_WORD_LENGTH];
+    while (hasNext) {
+        int probability = 0;
+        int codePointCount = 0;
+        sourceShortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH,
+                codePoints, &codePointCount, &probability, &hasNext, &readingPos);
+        if (!writeShortcutEntryAndAdvancePosition(codePoints, codePointCount, probability,
+                hasNext, &writingPos)) {
+            AKLOGE("Cannot write shortcut entry to copy. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool ShortcutDictContent::setProbability(const int probability, const int shortcutEntryPos) {
+    BufferWithExtendableBuffer *const shortcutListBuffer = getWritableContentBuffer();
+    const int shortcutFlags = shortcutListBuffer->readUint(
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos);
+    const bool hasNext = shortcutFlags & Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK;
+    const int shortcutFlagsToWrite = createAndGetShortcutFlags(probability, hasNext);
+    return shortcutListBuffer->writeUint(shortcutFlagsToWrite,
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos);
+}
+
+bool ShortcutDictContent::writeShortcutEntryAndAdvancePosition(const int *const codePoint,
+        const int codePointCount, const int probability, const bool hasNext,
+        int *const shortcutEntryPos) {
+    BufferWithExtendableBuffer *const shortcutListBuffer = getWritableContentBuffer();
+    const int shortcutFlags = createAndGetShortcutFlags(probability, hasNext);
+    if (!shortcutListBuffer->writeUintAndAdvancePosition(shortcutFlags,
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos)) {
+        AKLOGE("Cannot write shortcut flags. flags; %x, pos: %d", shortcutFlags, *shortcutEntryPos);
+        return false;
+    }
+    if (!shortcutListBuffer->writeCodePointsAndAdvancePosition(codePoint, codePointCount,
+            true /* writesTerminator */, shortcutEntryPos)) {
+        AKLOGE("Cannot write shortcut target code points. pos: %d", *shortcutEntryPos);
+        return false;
+    }
+    return true;
+}
+
+// Find a shortcut entry that has specified target and return its position.
+int ShortcutDictContent::findShortcutEntryAndGetPos(const int shortcutListPos,
+        const int *const targetCodePointsToFind, const int codePointCount) const {
+    bool hasNext = true;
+    int readingPos = shortcutListPos;
+    int targetCodePoints[MAX_WORD_LENGTH];
+    while (hasNext) {
+        const int entryPos = readingPos;
+        int probability = 0;
+        int targetCodePointCount = 0;
+        getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, targetCodePoints, &targetCodePointCount,
+                &probability, &hasNext, &readingPos);
+        if (targetCodePointCount != codePointCount) {
+            continue;
+        }
+        bool matched = true;
+        for (int i = 0; i < codePointCount; ++i) {
+            if (targetCodePointsToFind[i] != targetCodePoints[i]) {
+                matched = false;
+                break;
+            }
+        }
+        if (matched) {
+            return entryPos;
+        }
+    }
+    return NOT_A_DICT_POS;
+}
+
+int ShortcutDictContent::createAndGetShortcutFlags(const int probability,
+        const bool hasNext) const {
+    return (probability & Ver4DictConstants::SHORTCUT_PROBABILITY_MASK)
+            | (hasNext ? Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK : 0);
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.h
new file mode 100644
index 0000000..179cec5
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_SHORTCUT_DICT_CONTENT_H
+#define LATINIME_BACKWARD_V402_SHORTCUT_DICT_CONTENT_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class ShortcutDictContent : public SparseTableDictContent {
+ public:
+    ShortcutDictContent(const char *const dictPath, const bool isUpdatable)
+            : SparseTableDictContent(dictPath,
+                      Ver4DictConstants::SHORTCUT_LOOKUP_TABLE_FILE_EXTENSION,
+                      Ver4DictConstants::SHORTCUT_CONTENT_TABLE_FILE_EXTENSION,
+                      Ver4DictConstants::SHORTCUT_FILE_EXTENSION, isUpdatable,
+                      Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_DATA_SIZE) {}
+
+    ShortcutDictContent()
+            : SparseTableDictContent(Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_DATA_SIZE) {}
+
+    void getShortcutEntry(const int maxCodePointCount, int *const outCodePoint,
+            int *const outCodePointCount, int *const outProbability, bool *const outhasNext,
+            const int shortcutEntryPos) {
+        int readingPos = shortcutEntryPos;
+        return getShortcutEntryAndAdvancePosition(maxCodePointCount, outCodePoint,
+                outCodePointCount, outProbability, outhasNext, &readingPos);
+    }
+
+    void getShortcutEntryAndAdvancePosition(const int maxCodePointCount,
+            int *const outCodePoint, int *const outCodePointCount, int *const outProbability,
+            bool *const outhasNext, int *const shortcutEntryPos) const;
+
+   // Returns head position of shortcut list for a PtNode specified by terminalId.
+   int getShortcutListHeadPos(const int terminalId) const;
+
+   bool flushToFile(const char *const dictPath) const;
+
+   bool runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+           const ShortcutDictContent *const originalShortcutDictContent);
+
+   bool createNewShortcutList(const int terminalId);
+
+   bool copyShortcutList(const int shortcutListPos, const int toPos);
+
+   bool setProbability(const int probability, const int shortcutEntryPos);
+
+   bool writeShortcutEntry(const int *const codePoint, const int codePointCount,
+           const int probability, const bool hasNext, const int shortcutEntryPos) {
+       int writingPos = shortcutEntryPos;
+       return writeShortcutEntryAndAdvancePosition(codePoint, codePointCount, probability,
+               hasNext, &writingPos);
+   }
+
+   bool writeShortcutEntryAndAdvancePosition(const int *const codePoint,
+           const int codePointCount, const int probability, const bool hasNext,
+           int *const shortcutEntryPos);
+
+   int findShortcutEntryAndGetPos(const int shortcutListPos,
+           const int *const targetCodePointsToFind, const int codePointCount) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(ShortcutDictContent);
+
+    bool copyShortcutListFromDictContent(const int shortcutListPos,
+            const ShortcutDictContent *const sourceShortcutDictContent, const int toPos);
+
+    int createAndGetShortcutFlags(const int probability, const bool hasNext) const;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_SHORTCUT_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/single_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/single_dict_content.h
new file mode 100644
index 0000000..6433650
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/single_dict_content.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_SINGLE_DICT_CONTENT_H
+#define LATINIME_BACKWARD_V402_SINGLE_DICT_CONTENT_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class SingleDictContent : public DictContent {
+ public:
+    SingleDictContent(const char *const dictPath, const char *const contentFileName,
+            const bool isUpdatable)
+            : mMmappedBuffer(MmappedBuffer::openBuffer(dictPath, contentFileName, isUpdatable)),
+              mExpandableContentBuffer(mMmappedBuffer ? mMmappedBuffer->getBuffer() : nullptr,
+                      mMmappedBuffer ? mMmappedBuffer->getBufferSize() : 0,
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mIsValid(mMmappedBuffer) {}
+
+    SingleDictContent()
+            : mMmappedBuffer(nullptr),
+              mExpandableContentBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE), mIsValid(true) {}
+
+    virtual ~SingleDictContent() {}
+
+    virtual bool isValid() const {
+        return mIsValid;
+    }
+
+    bool isNearSizeLimit() const {
+        return mExpandableContentBuffer.isNearSizeLimit();
+    }
+
+ protected:
+    BufferWithExtendableBuffer *getWritableBuffer() {
+        return &mExpandableContentBuffer;
+    }
+
+    const BufferWithExtendableBuffer *getBuffer() const {
+        return &mExpandableContentBuffer;
+    }
+
+    bool flush(const char *const dictPath, const char *const contentFileNameSuffix) const {
+        return DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath,
+                contentFileNameSuffix, &mExpandableContentBuffer);
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(SingleDictContent);
+
+    const MmappedBuffer::MmappedBufferPtr mMmappedBuffer;
+    BufferWithExtendableBuffer mExpandableContentBuffer;
+    const bool mIsValid;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_SINGLE_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.cpp
new file mode 100644
index 0000000..7c9b496
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+bool SparseTableDictContent::flush(const char *const dictPath,
+        const char *const lookupTableFileNameSuffix, const char *const addressTableFileNameSuffix,
+        const char *const contentFileNameSuffix) const {
+    if (!DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath, lookupTableFileNameSuffix,
+            &mExpandableLookupTableBuffer)){
+        return false;
+    }
+    if (!DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath, addressTableFileNameSuffix,
+            &mExpandableAddressTableBuffer)) {
+        return false;
+    }
+    if (!DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath, contentFileNameSuffix,
+            &mExpandableContentBuffer)) {
+        return false;
+    }
+    return true;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.h
new file mode 100644
index 0000000..c7233ed
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/sparse_table_dict_content.h
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_SPARSE_TABLE_DICT_CONTENT_H
+#define LATINIME_BACKWARD_V402_SPARSE_TABLE_DICT_CONTENT_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/sparse_table.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+// TODO: Support multiple contents.
+class SparseTableDictContent : public DictContent {
+ public:
+    AK_FORCE_INLINE SparseTableDictContent(const char *const dictPath,
+            const char *const lookupTableFileName, const char *const addressTableFileName,
+            const char *const contentFileName, const bool isUpdatable,
+            const int sparseTableBlockSize, const int sparseTableDataSize)
+            : mLookupTableBuffer(
+                      MmappedBuffer::openBuffer(dictPath, lookupTableFileName, isUpdatable)),
+              mAddressTableBuffer(
+                      MmappedBuffer::openBuffer(dictPath, addressTableFileName, isUpdatable)),
+              mContentBuffer(
+                      MmappedBuffer::openBuffer(dictPath, contentFileName, isUpdatable)),
+              mExpandableLookupTableBuffer(
+                      mLookupTableBuffer ? mLookupTableBuffer->getBuffer() : nullptr,
+                      mLookupTableBuffer ? mLookupTableBuffer->getBufferSize() : 0,
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mExpandableAddressTableBuffer(
+                      mAddressTableBuffer ? mAddressTableBuffer->getBuffer() : nullptr,
+                      mAddressTableBuffer ? mAddressTableBuffer->getBufferSize() : 0,
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mExpandableContentBuffer(mContentBuffer ? mContentBuffer->getBuffer() : nullptr,
+                      mContentBuffer ? mContentBuffer->getBufferSize() : 0,
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mAddressLookupTable(&mExpandableLookupTableBuffer, &mExpandableAddressTableBuffer,
+                      sparseTableBlockSize, sparseTableDataSize),
+              mIsValid(mLookupTableBuffer && mAddressTableBuffer && mContentBuffer) {}
+
+    SparseTableDictContent(const int sparseTableBlockSize, const int sparseTableDataSize)
+            : mLookupTableBuffer(), mAddressTableBuffer(), mContentBuffer(),
+              mExpandableLookupTableBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+              mExpandableAddressTableBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+              mExpandableContentBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+              mAddressLookupTable(&mExpandableLookupTableBuffer, &mExpandableAddressTableBuffer,
+                      sparseTableBlockSize, sparseTableDataSize), mIsValid(true) {}
+
+    virtual ~SparseTableDictContent() {}
+
+    virtual bool isValid() const {
+        return mIsValid;
+    }
+
+    bool isNearSizeLimit() const {
+        return mExpandableLookupTableBuffer.isNearSizeLimit()
+                || mExpandableAddressTableBuffer.isNearSizeLimit()
+                || mExpandableContentBuffer.isNearSizeLimit();
+    }
+
+ protected:
+    SparseTable *getUpdatableAddressLookupTable() {
+        return &mAddressLookupTable;
+    }
+
+    const SparseTable *getAddressLookupTable() const {
+        return &mAddressLookupTable;
+    }
+
+    BufferWithExtendableBuffer *getWritableContentBuffer() {
+        return &mExpandableContentBuffer;
+    }
+
+    const BufferWithExtendableBuffer *getContentBuffer() const {
+        return &mExpandableContentBuffer;
+    }
+
+    bool flush(const char *const dictDirPath, const char *const lookupTableFileName,
+            const char *const addressTableFileName, const char *const contentFileName) const;
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(SparseTableDictContent);
+
+    const MmappedBuffer::MmappedBufferPtr mLookupTableBuffer;
+    const MmappedBuffer::MmappedBufferPtr mAddressTableBuffer;
+    const MmappedBuffer::MmappedBufferPtr mContentBuffer;
+    BufferWithExtendableBuffer mExpandableLookupTableBuffer;
+    BufferWithExtendableBuffer mExpandableAddressTableBuffer;
+    BufferWithExtendableBuffer mExpandableContentBuffer;
+    SparseTable mAddressLookupTable;
+    const bool mIsValid;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_SPARSE_TABLE_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.cpp
new file mode 100644
index 0000000..a9f8417
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.cpp
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+int TerminalPositionLookupTable::getTerminalPtNodePosition(const int terminalId) const {
+    if (terminalId < 0 || terminalId >= mSize) {
+        return NOT_A_DICT_POS;
+    }
+    const int terminalPos = getBuffer()->readUint(
+            Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(terminalId));
+    return (terminalPos == Ver4DictConstants::NOT_A_TERMINAL_ADDRESS) ?
+            NOT_A_DICT_POS : terminalPos;
+}
+
+bool TerminalPositionLookupTable::setTerminalPtNodePosition(
+        const int terminalId, const int terminalPtNodePos) {
+    if (terminalId < 0) {
+        return NOT_A_DICT_POS;
+    }
+    while (terminalId >= mSize) {
+        // Write new entry.
+        if (!getWritableBuffer()->writeUint(Ver4DictConstants::NOT_A_TERMINAL_ADDRESS,
+                Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(mSize))) {
+            return false;
+        }
+        mSize++;
+    }
+    const int terminalPos = (terminalPtNodePos != NOT_A_DICT_POS) ?
+            terminalPtNodePos : Ver4DictConstants::NOT_A_TERMINAL_ADDRESS;
+    return getWritableBuffer()->writeUint(terminalPos,
+            Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(terminalId));
+}
+
+bool TerminalPositionLookupTable::flushToFile(const char *const dictPath) const {
+    // If the used buffer size is smaller than the actual buffer size, regenerate the lookup
+    // table and write the new table to the file.
+    if (getEntryPos(mSize) < getBuffer()->getTailPosition()) {
+        TerminalPositionLookupTable lookupTableToWrite;
+        for (int i = 0; i < mSize; ++i) {
+            const int terminalPtNodePosition = getTerminalPtNodePosition(i);
+            if (!lookupTableToWrite.setTerminalPtNodePosition(i, terminalPtNodePosition)) {
+                AKLOGE("Cannot set terminal position to lookupTableToWrite."
+                        " terminalId: %d, position: %d", i, terminalPtNodePosition);
+                return false;
+            }
+        }
+        return lookupTableToWrite.flush(dictPath,
+                Ver4DictConstants::TERMINAL_ADDRESS_TABLE_FILE_EXTENSION);
+    } else {
+        // We can simply use this lookup table because the buffer size has not been
+        // changed.
+        return flush(dictPath, Ver4DictConstants::TERMINAL_ADDRESS_TABLE_FILE_EXTENSION);
+    }
+}
+
+bool TerminalPositionLookupTable::runGCTerminalIds(TerminalIdMap *const terminalIdMap) {
+    int removedEntryCount = 0;
+    int nextNewTerminalId = 0;
+    for (int i = 0; i < mSize; ++i) {
+        const int terminalPos = getBuffer()->readUint(
+                Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(i));
+        if (terminalPos == Ver4DictConstants::NOT_A_TERMINAL_ADDRESS) {
+            // This entry is a garbage.
+            removedEntryCount++;
+        } else {
+            // Give a new terminal id to the entry.
+            if (!getWritableBuffer()->writeUint(terminalPos,
+                    Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE,
+                    getEntryPos(nextNewTerminalId))) {
+                return false;
+            }
+            // Memorize the mapping to the old terminal id to the new terminal id.
+            terminalIdMap->insert(TerminalIdMap::value_type(i, nextNewTerminalId));
+            nextNewTerminalId++;
+        }
+    }
+    mSize = nextNewTerminalId;
+    return true;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h
new file mode 100644
index 0000000..eadfe0f
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_TERMINAL_POSITION_LOOKUP_TABLE_H
+#define LATINIME_BACKWARD_V402_TERMINAL_POSITION_LOOKUP_TABLE_H
+
+#include <unordered_map>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/single_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class TerminalPositionLookupTable : public SingleDictContent {
+ public:
+    typedef std::unordered_map<int, int> TerminalIdMap;
+
+    TerminalPositionLookupTable(const char *const dictPath, const bool isUpdatable)
+            : SingleDictContent(dictPath,
+                      Ver4DictConstants::TERMINAL_ADDRESS_TABLE_FILE_EXTENSION, isUpdatable),
+              mSize(getBuffer()->getTailPosition()
+                      / Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE) {}
+
+    TerminalPositionLookupTable() : mSize(0) {}
+
+    int getTerminalPtNodePosition(const int terminalId) const;
+
+    bool setTerminalPtNodePosition(const int terminalId, const int terminalPtNodePos);
+
+    int getNextTerminalId() const {
+        return mSize;
+    }
+
+    bool flushToFile(const char *const dictPath) const;
+
+    bool runGCTerminalIds(TerminalIdMap *const terminalIdMap);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(TerminalPositionLookupTable);
+
+    int getEntryPos(const int terminalId) const {
+        return terminalId * Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE;
+    }
+
+    int mSize;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif // LATINIME_BACKWARD_V402_TERMINAL_POSITION_LOOKUP_TABLE_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h
new file mode 100644
index 0000000..941fda7
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!!
+ * Do not edit this file other than updating policy's interface.
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_SHORTCUT_LIST_POLICY_H
+#define LATINIME_BACKWARD_V402_VER4_SHORTCUT_LIST_POLICY_H
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class Ver4ShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
+ public:
+    Ver4ShortcutListPolicy(ShortcutDictContent *const shortcutDictContent,
+            const TerminalPositionLookupTable *const terminalPositionLookupTable)
+            : mShortcutDictContent(shortcutDictContent) {}
+
+    ~Ver4ShortcutListPolicy() {}
+
+    int getStartPos(const int pos) const {
+        // The first shortcut entry is located at the head position of the shortcut list.
+        return pos;
+    }
+
+    void getNextShortcut(const int maxCodePointCount, int *const outCodePoint,
+            int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext,
+            int *const pos) const {
+        int probability = 0;
+        mShortcutDictContent->getShortcutEntryAndAdvancePosition(maxCodePointCount,
+                outCodePoint, outCodePointCount, &probability, outHasNext, pos);
+        if (outIsWhitelist) {
+            *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(probability);
+        }
+    }
+
+    void skipAllShortcuts(int *const pos) const {
+        // Do nothing because we don't need to skip shortcut lists in ver4 dictionaries.
+    }
+
+    bool addNewShortcut(const int terminalId, const int *const codePoints, const int codePointCount,
+            const int probability) {
+        const int shortcutListPos = mShortcutDictContent->getShortcutListHeadPos(terminalId);
+        if (shortcutListPos == NOT_A_DICT_POS) {
+            // Create shortcut list.
+            if (!mShortcutDictContent->createNewShortcutList(terminalId)) {
+                AKLOGE("Cannot create new shortcut list. terminal id: %d", terminalId);
+                return false;
+            }
+            const int writingPos =  mShortcutDictContent->getShortcutListHeadPos(terminalId);
+            return mShortcutDictContent->writeShortcutEntry(codePoints, codePointCount, probability,
+                    false /* hasNext */, writingPos);
+        }
+        const int entryPos = mShortcutDictContent->findShortcutEntryAndGetPos(shortcutListPos,
+                codePoints, codePointCount);
+        if (entryPos == NOT_A_DICT_POS) {
+            // Add new entry to the shortcut list.
+            // Create new shortcut list.
+            if (!mShortcutDictContent->createNewShortcutList(terminalId)) {
+                AKLOGE("Cannot create new shortcut list. terminal id: %d", terminalId);
+                return false;
+            }
+            int writingPos =  mShortcutDictContent->getShortcutListHeadPos(terminalId);
+            if (!mShortcutDictContent->writeShortcutEntryAndAdvancePosition(codePoints,
+                    codePointCount, probability, true /* hasNext */, &writingPos)) {
+                AKLOGE("Cannot write shortcut entry. terminal id: %d, pos: %d", terminalId,
+                        writingPos);
+                return false;
+            }
+            return mShortcutDictContent->copyShortcutList(shortcutListPos, writingPos);
+        }
+        // Overwrite existing entry.
+        bool hasNext = false;
+        mShortcutDictContent->getShortcutEntry(MAX_WORD_LENGTH, 0 /* outCodePoint */,
+                0 /* outCodePointCount */ , 0 /* probability */, &hasNext, entryPos);
+        if (!mShortcutDictContent->writeShortcutEntry(codePoints,
+                codePointCount, probability, hasNext, entryPos)) {
+            AKLOGE("Cannot overwrite shortcut entry. terminal id: %d, pos: %d", terminalId,
+                    entryPos);
+            return false;
+        }
+        return true;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4ShortcutListPolicy);
+
+    ShortcutDictContent *const mShortcutDictContent;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif // LATINIME_BACKWARD_V402_VER4_SHORTCUT_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.cpp
new file mode 100644
index 0000000..93f1929
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.cpp
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
+
+#include <cerrno>
+#include <cstring>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+/* static */ Ver4DictBuffers::Ver4DictBuffersPtr Ver4DictBuffers::openVer4DictBuffers(
+        const char *const dictPath, MmappedBuffer::MmappedBufferPtr headerBuffer,
+        const FormatUtils::FORMAT_VERSION formatVersion) {
+    if (!headerBuffer) {
+        ASSERT(false);
+        AKLOGE("The header buffer must be valid to open ver4 dict buffers.");
+        return Ver4DictBuffersPtr(nullptr);
+    }
+    // TODO: take only dictDirPath, and open both header and trie files in the constructor below
+    const bool isUpdatable = headerBuffer->isUpdatable();
+    return Ver4DictBuffersPtr(new Ver4DictBuffers(dictPath, std::move(headerBuffer), isUpdatable,
+            formatVersion));
+}
+
+bool Ver4DictBuffers::flushHeaderAndDictBuffers(const char *const dictDirPath,
+        const BufferWithExtendableBuffer *const headerBuffer) const {
+    // Create temporary directory.
+    const int tmpDirPathBufSize = FileUtils::getFilePathWithSuffixBufSize(dictDirPath,
+            DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE);
+    char tmpDirPath[tmpDirPathBufSize];
+    FileUtils::getFilePathWithSuffix(dictDirPath,
+            DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE, tmpDirPathBufSize,
+            tmpDirPath);
+    if (FileUtils::existsDir(tmpDirPath)) {
+        if (!FileUtils::removeDirAndFiles(tmpDirPath)) {
+            AKLOGE("Existing directory %s cannot be removed.", tmpDirPath);
+            ASSERT(false);
+            return false;
+        }
+    }
+    umask(S_IWGRP | S_IWOTH);
+    if (mkdir(tmpDirPath, S_IRWXU) == -1) {
+        AKLOGE("Cannot create directory: %s. errno: %d.", tmpDirPath, errno);
+        return false;
+    }
+    // Get dictionary base path.
+    const int dictNameBufSize = strlen(dictDirPath) + 1 /* terminator */;
+    char dictName[dictNameBufSize];
+    FileUtils::getBasename(dictDirPath, dictNameBufSize, dictName);
+    const int dictPathBufSize = FileUtils::getFilePathBufSize(tmpDirPath, dictName);
+    char dictPath[dictPathBufSize];
+    FileUtils::getFilePath(tmpDirPath, dictName, dictPathBufSize, dictPath);
+
+    // Write header file.
+    if (!DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath,
+            Ver4DictConstants::HEADER_FILE_EXTENSION, headerBuffer)) {
+        AKLOGE("Dictionary header file %s%s cannot be written.", tmpDirPath,
+                Ver4DictConstants::HEADER_FILE_EXTENSION);
+        return false;
+    }
+    // Write trie file.
+    if (!DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath,
+            Ver4DictConstants::TRIE_FILE_EXTENSION, &mExpandableTrieBuffer)) {
+        AKLOGE("Dictionary trie file %s%s cannot be written.", tmpDirPath,
+                Ver4DictConstants::TRIE_FILE_EXTENSION);
+        return false;
+    }
+    // Write dictionary contents.
+    if (!mTerminalPositionLookupTable.flushToFile(dictPath)) {
+        AKLOGE("Terminal position lookup table cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    if (!mProbabilityDictContent.flushToFile(dictPath)) {
+        AKLOGE("Probability dict content cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    if (!mBigramDictContent.flushToFile(dictPath)) {
+        AKLOGE("Bigram dict content cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    if (!mShortcutDictContent.flushToFile(dictPath)) {
+        AKLOGE("Shortcut dict content cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    // Remove existing dictionary.
+    if (!FileUtils::removeDirAndFiles(dictDirPath)) {
+        AKLOGE("Existing directory %s cannot be removed.", dictDirPath);
+        ASSERT(false);
+        return false;
+    }
+    // Rename temporary directory.
+    if (rename(tmpDirPath, dictDirPath) != 0) {
+        AKLOGE("%s cannot be renamed to %s", tmpDirPath, dictDirPath);
+        ASSERT(false);
+        return false;
+    }
+    return true;
+}
+
+Ver4DictBuffers::Ver4DictBuffers(const char *const dictPath,
+        MmappedBuffer::MmappedBufferPtr headerBuffer, const bool isUpdatable,
+        const FormatUtils::FORMAT_VERSION formatVersion)
+        : mHeaderBuffer(std::move(headerBuffer)),
+          mDictBuffer(MmappedBuffer::openBuffer(dictPath,
+                  Ver4DictConstants::TRIE_FILE_EXTENSION, isUpdatable)),
+          mHeaderPolicy(mHeaderBuffer->getBuffer(), formatVersion),
+          mExpandableHeaderBuffer(mHeaderBuffer ? mHeaderBuffer->getBuffer() : nullptr,
+                  mHeaderPolicy.getSize(),
+                  BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+          mExpandableTrieBuffer(mDictBuffer ? mDictBuffer->getBuffer() : nullptr,
+                  mDictBuffer ? mDictBuffer->getBufferSize() : 0,
+                  BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+          mTerminalPositionLookupTable(dictPath, isUpdatable),
+          mProbabilityDictContent(dictPath, mHeaderPolicy.hasHistoricalInfoOfWords(), isUpdatable),
+          mBigramDictContent(dictPath, mHeaderPolicy.hasHistoricalInfoOfWords(), isUpdatable),
+          mShortcutDictContent(dictPath, isUpdatable),
+          mIsUpdatable(isUpdatable) {}
+
+Ver4DictBuffers::Ver4DictBuffers(const HeaderPolicy *const headerPolicy, const int maxTrieSize)
+        : mHeaderBuffer(nullptr), mDictBuffer(nullptr), mHeaderPolicy(headerPolicy),
+          mExpandableHeaderBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+          mExpandableTrieBuffer(maxTrieSize), mTerminalPositionLookupTable(),
+          mProbabilityDictContent(headerPolicy->hasHistoricalInfoOfWords()),
+          mBigramDictContent(headerPolicy->hasHistoricalInfoOfWords()), mShortcutDictContent(),
+          mIsUpdatable(true) {}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h
new file mode 100644
index 0000000..e775be5
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_DICT_BUFFER_H
+#define LATINIME_BACKWARD_V402_VER4_DICT_BUFFER_H
+
+#include <memory>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/bigram_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/shortcut_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+class Ver4DictBuffers {
+ public:
+    typedef std::unique_ptr<Ver4DictBuffers> Ver4DictBuffersPtr;
+
+    static Ver4DictBuffersPtr openVer4DictBuffers(const char *const dictDirPath,
+            MmappedBuffer::MmappedBufferPtr headerBuffer,
+            const FormatUtils::FORMAT_VERSION formatVersion);
+
+    static AK_FORCE_INLINE Ver4DictBuffersPtr createVer4DictBuffers(
+            const HeaderPolicy *const headerPolicy, const int maxTrieSize) {
+        return Ver4DictBuffersPtr(new Ver4DictBuffers(headerPolicy, maxTrieSize));
+    }
+
+    AK_FORCE_INLINE bool isValid() const {
+        return mHeaderBuffer && mDictBuffer && mHeaderPolicy.isValid()
+                && mProbabilityDictContent.isValid() && mTerminalPositionLookupTable.isValid()
+                && mBigramDictContent.isValid() && mShortcutDictContent.isValid();
+    }
+
+    AK_FORCE_INLINE bool isNearSizeLimit() const {
+        return mExpandableTrieBuffer.isNearSizeLimit()
+                || mTerminalPositionLookupTable.isNearSizeLimit()
+                || mProbabilityDictContent.isNearSizeLimit()
+                || mBigramDictContent.isNearSizeLimit()
+                || mShortcutDictContent.isNearSizeLimit();
+    }
+
+    AK_FORCE_INLINE const HeaderPolicy *getHeaderPolicy() const {
+        return &mHeaderPolicy;
+    }
+
+    AK_FORCE_INLINE BufferWithExtendableBuffer *getWritableHeaderBuffer() {
+        return &mExpandableHeaderBuffer;
+    }
+
+    AK_FORCE_INLINE BufferWithExtendableBuffer *getWritableTrieBuffer() {
+        return &mExpandableTrieBuffer;
+    }
+
+    AK_FORCE_INLINE const BufferWithExtendableBuffer *getTrieBuffer() const {
+        return &mExpandableTrieBuffer;
+    }
+
+    AK_FORCE_INLINE TerminalPositionLookupTable *getMutableTerminalPositionLookupTable() {
+        return &mTerminalPositionLookupTable;
+    }
+
+    AK_FORCE_INLINE const TerminalPositionLookupTable *getTerminalPositionLookupTable() const {
+        return &mTerminalPositionLookupTable;
+    }
+
+    AK_FORCE_INLINE ProbabilityDictContent *getMutableProbabilityDictContent() {
+        return &mProbabilityDictContent;
+    }
+
+    AK_FORCE_INLINE const ProbabilityDictContent *getProbabilityDictContent() const {
+        return &mProbabilityDictContent;
+    }
+
+    AK_FORCE_INLINE BigramDictContent *getMutableBigramDictContent() {
+        return &mBigramDictContent;
+    }
+
+    AK_FORCE_INLINE const BigramDictContent *getBigramDictContent() const {
+        return &mBigramDictContent;
+    }
+
+    AK_FORCE_INLINE ShortcutDictContent *getMutableShortcutDictContent() {
+        return &mShortcutDictContent;
+    }
+
+    AK_FORCE_INLINE const ShortcutDictContent *getShortcutDictContent() const {
+        return &mShortcutDictContent;
+    }
+
+    AK_FORCE_INLINE bool isUpdatable() const {
+        return mIsUpdatable;
+    }
+
+    bool flush(const char *const dictDirPath) const {
+        return flushHeaderAndDictBuffers(dictDirPath, &mExpandableHeaderBuffer);
+    }
+
+    bool flushHeaderAndDictBuffers(const char *const dictDirPath,
+            const BufferWithExtendableBuffer *const headerBuffer) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4DictBuffers);
+
+    Ver4DictBuffers(const char *const dictDirPath,
+            const MmappedBuffer::MmappedBufferPtr headerBuffer, const bool isUpdatable,
+            const FormatUtils::FORMAT_VERSION formatVersion);
+
+    Ver4DictBuffers(const HeaderPolicy *const headerPolicy, const int maxTrieSize);
+
+    const MmappedBuffer::MmappedBufferPtr mHeaderBuffer;
+    const MmappedBuffer::MmappedBufferPtr mDictBuffer;
+    const HeaderPolicy mHeaderPolicy;
+    BufferWithExtendableBuffer mExpandableHeaderBuffer;
+    BufferWithExtendableBuffer mExpandableTrieBuffer;
+    TerminalPositionLookupTable mTerminalPositionLookupTable;
+    ProbabilityDictContent mProbabilityDictContent;
+    BigramDictContent mBigramDictContent;
+    ShortcutDictContent mShortcutDictContent;
+    const int mIsUpdatable;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_DICT_BUFFER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.cpp
new file mode 100644
index 0000000..81d85f4
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+// These values MUST match the definitions in FormatSpec.java.
+const char *const Ver4DictConstants::TRIE_FILE_EXTENSION = ".trie";
+const char *const Ver4DictConstants::HEADER_FILE_EXTENSION = ".header";
+const char *const Ver4DictConstants::FREQ_FILE_EXTENSION = ".freq";
+// tat = Terminal Address Table
+const char *const Ver4DictConstants::TERMINAL_ADDRESS_TABLE_FILE_EXTENSION = ".tat";
+const char *const Ver4DictConstants::BIGRAM_FILE_EXTENSION = ".bigram_freq";
+const char *const Ver4DictConstants::BIGRAM_LOOKUP_TABLE_FILE_EXTENSION = ".bigram_lookup";
+const char *const Ver4DictConstants::BIGRAM_CONTENT_TABLE_FILE_EXTENSION = ".bigram_index_freq";
+const char *const Ver4DictConstants::SHORTCUT_FILE_EXTENSION = ".shortcut_shortcut";
+const char *const Ver4DictConstants::SHORTCUT_LOOKUP_TABLE_FILE_EXTENSION = ".shortcut_lookup";
+const char *const Ver4DictConstants::SHORTCUT_CONTENT_TABLE_FILE_EXTENSION =
+        ".shortcut_index_shortcut";
+
+// Version 4 dictionary size is implicitly limited to 8MB due to 3-byte offsets.
+const int Ver4DictConstants::MAX_DICTIONARY_SIZE = 8 * 1024 * 1024;
+// Extended region size, which is not GCed region size in dict file + additional buffer size, is
+// limited to 1MB to prevent from inefficient traversing.
+const int Ver4DictConstants::MAX_DICT_EXTENDED_REGION_SIZE = 1 * 1024 * 1024;
+
+const int Ver4DictConstants::NOT_A_TERMINAL_ID = -1;
+const int Ver4DictConstants::PROBABILITY_SIZE = 1;
+const int Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE = 1;
+const int Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE = 3;
+const int Ver4DictConstants::NOT_A_TERMINAL_ADDRESS = 0;
+const int Ver4DictConstants::TERMINAL_ID_FIELD_SIZE = 4;
+const int Ver4DictConstants::TIME_STAMP_FIELD_SIZE = 4;
+const int Ver4DictConstants::WORD_LEVEL_FIELD_SIZE = 1;
+const int Ver4DictConstants::WORD_COUNT_FIELD_SIZE = 1;
+
+const int Ver4DictConstants::BIGRAM_ADDRESS_TABLE_BLOCK_SIZE = 16;
+const int Ver4DictConstants::BIGRAM_ADDRESS_TABLE_DATA_SIZE = 4;
+const int Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE = 64;
+const int Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_DATA_SIZE = 4;
+
+const int Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE = 3;
+// Unsigned int max value of BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE-byte is used for representing
+// invalid terminal ID in bigram lists.
+const int Ver4DictConstants::INVALID_BIGRAM_TARGET_TERMINAL_ID =
+        (1 << (BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE * 8)) - 1;
+const int Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE = 1;
+const int Ver4DictConstants::BIGRAM_PROBABILITY_MASK = 0x0F;
+const int Ver4DictConstants::BIGRAM_HAS_NEXT_MASK = 0x80;
+const int Ver4DictConstants::BIGRAM_LARGE_PROBABILITY_FIELD_SIZE = 1;
+
+const int Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE = 1;
+const int Ver4DictConstants::SHORTCUT_PROBABILITY_MASK = 0x0F;
+const int Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK = 0x80;
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h
new file mode 100644
index 0000000..88ebd6a
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_DICT_CONSTANTS_H
+#define LATINIME_BACKWARD_V402_VER4_DICT_CONSTANTS_H
+
+#include "defines.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+// TODO: Create PtConstants under the pt_common and move some constant values there.
+// Note that there are corresponding definitions in FormatSpec.java.
+class Ver4DictConstants {
+ public:
+    static const char *const TRIE_FILE_EXTENSION;
+    static const char *const HEADER_FILE_EXTENSION;
+    static const char *const FREQ_FILE_EXTENSION;
+    static const char *const TERMINAL_ADDRESS_TABLE_FILE_EXTENSION;
+    static const char *const BIGRAM_FILE_EXTENSION;
+    static const char *const BIGRAM_LOOKUP_TABLE_FILE_EXTENSION;
+    static const char *const BIGRAM_CONTENT_TABLE_FILE_EXTENSION;
+    static const char *const SHORTCUT_FILE_EXTENSION;
+    static const char *const SHORTCUT_LOOKUP_TABLE_FILE_EXTENSION;
+    static const char *const SHORTCUT_CONTENT_TABLE_FILE_EXTENSION;
+
+    static const int MAX_DICTIONARY_SIZE;
+    static const int MAX_DICT_EXTENDED_REGION_SIZE;
+
+    static const int NOT_A_TERMINAL_ID;
+    static const int PROBABILITY_SIZE;
+    static const int FLAGS_IN_PROBABILITY_FILE_SIZE;
+    static const int TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE;
+    static const int NOT_A_TERMINAL_ADDRESS;
+    static const int TERMINAL_ID_FIELD_SIZE;
+    static const int TIME_STAMP_FIELD_SIZE;
+    static const int WORD_LEVEL_FIELD_SIZE;
+    static const int WORD_COUNT_FIELD_SIZE;
+
+    static const int BIGRAM_ADDRESS_TABLE_BLOCK_SIZE;
+    static const int BIGRAM_ADDRESS_TABLE_DATA_SIZE;
+    static const int SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE;
+    static const int SHORTCUT_ADDRESS_TABLE_DATA_SIZE;
+
+    static const int BIGRAM_FLAGS_FIELD_SIZE;
+    static const int BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
+    static const int INVALID_BIGRAM_TARGET_TERMINAL_ID;
+    static const int BIGRAM_PROBABILITY_MASK;
+    static const int BIGRAM_HAS_NEXT_MASK;
+    // Used when bigram list has time stamp.
+    static const int BIGRAM_LARGE_PROBABILITY_FIELD_SIZE;
+
+    static const int SHORTCUT_FLAGS_FIELD_SIZE;
+    static const int SHORTCUT_PROBABILITY_MASK;
+    static const int SHORTCUT_HAS_NEXT_MASK;
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4DictConstants);
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_DICT_CONSTANTS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.cpp
new file mode 100644
index 0000000..82399f1
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.cpp
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+const PtNodeParams Ver4PatriciaTrieNodeReader::fetchPtNodeInfoFromBufferAndProcessMovedPtNode(
+        const int ptNodePos, const int siblingNodePos) const {
+    if (ptNodePos < 0 || ptNodePos >= mBuffer->getTailPosition()) {
+        // Reading invalid position because of bug or broken dictionary.
+        AKLOGE("Fetching PtNode info from invalid dictionary position: %d, dictionary size: %d",
+                ptNodePos, mBuffer->getTailPosition());
+        ASSERT(false);
+        return PtNodeParams();
+    }
+    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(ptNodePos);
+    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
+    int pos = ptNodePos;
+    const int headPos = ptNodePos;
+    if (usesAdditionalBuffer) {
+        pos -= mBuffer->getOriginalBufferSize();
+    }
+    const PatriciaTrieReadingUtils::NodeFlags flags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const int parentPosOffset =
+            DynamicPtReadingUtils::getParentPtNodePosOffsetAndAdvancePosition(
+                    dictBuf, &pos);
+    const int parentPos =
+            DynamicPtReadingUtils::getParentPtNodePos(parentPosOffset, headPos);
+    int codePoints[MAX_WORD_LENGTH];
+    const int codePonitCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition(
+            dictBuf, flags, MAX_WORD_LENGTH, codePoints, &pos);
+    int terminalIdFieldPos = NOT_A_DICT_POS;
+    int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
+    int probability = NOT_A_PROBABILITY;
+    if (PatriciaTrieReadingUtils::isTerminal(flags)) {
+        terminalIdFieldPos = pos;
+        if (usesAdditionalBuffer) {
+            terminalIdFieldPos += mBuffer->getOriginalBufferSize();
+        }
+        terminalId = Ver4PatriciaTrieReadingUtils::getTerminalIdAndAdvancePosition(dictBuf, &pos);
+        const ProbabilityEntry probabilityEntry =
+                mProbabilityDictContent->getProbabilityEntry(terminalId);
+        if (probabilityEntry.hasHistoricalInfo()) {
+            probability = ForgettingCurveUtils::decodeProbability(
+                    probabilityEntry.getHistoricalInfo(), mHeaderPolicy);
+        } else {
+            probability = probabilityEntry.getProbability();
+        }
+    }
+    int childrenPosFieldPos = pos;
+    if (usesAdditionalBuffer) {
+        childrenPosFieldPos += mBuffer->getOriginalBufferSize();
+    }
+    int childrenPos = DynamicPtReadingUtils::readChildrenPositionAndAdvancePosition(
+            dictBuf, &pos);
+    if (usesAdditionalBuffer && childrenPos != NOT_A_DICT_POS) {
+        childrenPos += mBuffer->getOriginalBufferSize();
+    }
+    if (usesAdditionalBuffer) {
+        pos += mBuffer->getOriginalBufferSize();
+    }
+    // Sibling position is the tail position of original PtNode.
+    int newSiblingNodePos = (siblingNodePos == NOT_A_DICT_POS) ? pos : siblingNodePos;
+    // Read destination node if the read node is a moved node.
+    if (DynamicPtReadingUtils::isMoved(flags)) {
+        // The destination position is stored at the same place as the parent position.
+        return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(parentPos, newSiblingNodePos);
+    } else {
+        return PtNodeParams(headPos, flags, parentPos, codePonitCount, codePoints,
+                terminalIdFieldPos, terminalId, probability, childrenPosFieldPos, childrenPos,
+                newSiblingNodePos);
+    }
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h
new file mode 100644
index 0000000..1999a51
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_NODE_READER_H
+#define LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_NODE_READER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+} // namespace v402
+} // namespace backward
+class BufferWithExtendableBuffer;
+namespace backward {
+namespace v402 {
+} // namespace v402
+} // namespace backward
+class HeaderPolicy;
+namespace backward {
+namespace v402 {
+class ProbabilityDictContent;
+
+/*
+ * This class is used for helping to read nodes of ver4 patricia trie. This class handles moved
+ * node and reads node attributes including probability form probabilityBuffer.
+ */
+class Ver4PatriciaTrieNodeReader : public PtNodeReader {
+ public:
+    Ver4PatriciaTrieNodeReader(const BufferWithExtendableBuffer *const buffer,
+            const ProbabilityDictContent *const probabilityDictContent,
+            const HeaderPolicy *const headerPolicy)
+            : mBuffer(buffer), mProbabilityDictContent(probabilityDictContent),
+              mHeaderPolicy(headerPolicy) {}
+
+    ~Ver4PatriciaTrieNodeReader() {}
+
+    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const {
+        return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(ptNodePos,
+                NOT_A_DICT_POS /* siblingNodePos */);
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4PatriciaTrieNodeReader);
+
+    const BufferWithExtendableBuffer *const mBuffer;
+    const ProbabilityDictContent *const mProbabilityDictContent;
+    const HeaderPolicy *const mHeaderPolicy;
+
+    const PtNodeParams fetchPtNodeInfoFromBufferAndProcessMovedPtNode(const int ptNodePos,
+            const int siblingNodePos) const;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_NODE_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.cpp
new file mode 100644
index 0000000..4220a95
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.cpp
@@ -0,0 +1,429 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h"
+
+#include "suggest/core/dictionary/property/unigram_property.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+const int Ver4PatriciaTrieNodeWriter::CHILDREN_POSITION_FIELD_SIZE = 3;
+
+bool Ver4PatriciaTrieNodeWriter::markPtNodeAsDeleted(
+        const PtNodeParams *const toBeUpdatedPtNodeParams) {
+    int pos = toBeUpdatedPtNodeParams->getHeadPos();
+    const bool usesAdditionalBuffer = mTrieBuffer->isInAdditionalBuffer(pos);
+    const uint8_t *const dictBuf = mTrieBuffer->getBuffer(usesAdditionalBuffer);
+    if (usesAdditionalBuffer) {
+        pos -= mTrieBuffer->getOriginalBufferSize();
+    }
+    // Read original flags
+    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
+            DynamicPtReadingUtils::updateAndGetFlags(originalFlags, false /* isMoved */,
+                    true /* isDeleted */, false /* willBecomeNonTerminal */);
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
+    // Update flags.
+    if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
+            &writingPos)) {
+        return false;
+    }
+    if (toBeUpdatedPtNodeParams->isTerminal()) {
+        // The PtNode is a terminal. Delete entry from the terminal position lookup table.
+        return mBuffers->getMutableTerminalPositionLookupTable()->setTerminalPtNodePosition(
+                toBeUpdatedPtNodeParams->getTerminalId(), NOT_A_DICT_POS /* ptNodePos */);
+    } else {
+        return true;
+    }
+}
+
+bool Ver4PatriciaTrieNodeWriter::markPtNodeAsMoved(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const int movedPos, const int bigramLinkedNodePos) {
+    int pos = toBeUpdatedPtNodeParams->getHeadPos();
+    const bool usesAdditionalBuffer = mTrieBuffer->isInAdditionalBuffer(pos);
+    const uint8_t *const dictBuf = mTrieBuffer->getBuffer(usesAdditionalBuffer);
+    if (usesAdditionalBuffer) {
+        pos -= mTrieBuffer->getOriginalBufferSize();
+    }
+    // Read original flags
+    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
+            DynamicPtReadingUtils::updateAndGetFlags(originalFlags, true /* isMoved */,
+                    false /* isDeleted */, false /* willBecomeNonTerminal */);
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
+    // Update flags.
+    if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
+            &writingPos)) {
+        return false;
+    }
+    // Update moved position, which is stored in the parent offset field.
+    if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(
+            mTrieBuffer, movedPos, toBeUpdatedPtNodeParams->getHeadPos(), &writingPos)) {
+        return false;
+    }
+    if (toBeUpdatedPtNodeParams->hasChildren()) {
+        // Update children's parent position.
+        mReadingHelper.initWithPtNodeArrayPos(toBeUpdatedPtNodeParams->getChildrenPos());
+        while (!mReadingHelper.isEnd()) {
+            const PtNodeParams childPtNodeParams(mReadingHelper.getPtNodeParams());
+            int parentOffsetFieldPos = childPtNodeParams.getHeadPos()
+                    + DynamicPtWritingUtils::NODE_FLAG_FIELD_SIZE;
+            if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(
+                    mTrieBuffer, bigramLinkedNodePos, childPtNodeParams.getHeadPos(),
+                    &parentOffsetFieldPos)) {
+                // Parent offset cannot be written because of a bug or a broken dictionary; thus,
+                // we give up to update dictionary.
+                return false;
+            }
+            mReadingHelper.readNextSiblingNode(childPtNodeParams);
+        }
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::markPtNodeAsWillBecomeNonTerminal(
+        const PtNodeParams *const toBeUpdatedPtNodeParams) {
+    int pos = toBeUpdatedPtNodeParams->getHeadPos();
+    const bool usesAdditionalBuffer = mTrieBuffer->isInAdditionalBuffer(pos);
+    const uint8_t *const dictBuf = mTrieBuffer->getBuffer(usesAdditionalBuffer);
+    if (usesAdditionalBuffer) {
+        pos -= mTrieBuffer->getOriginalBufferSize();
+    }
+    // Read original flags
+    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
+            DynamicPtReadingUtils::updateAndGetFlags(originalFlags, false /* isMoved */,
+                    false /* isDeleted */, true /* willBecomeNonTerminal */);
+    if (!mBuffers->getMutableTerminalPositionLookupTable()->setTerminalPtNodePosition(
+            toBeUpdatedPtNodeParams->getTerminalId(), NOT_A_DICT_POS /* ptNodePos */)) {
+        AKLOGE("Cannot update terminal position lookup table. terminal id: %d",
+                toBeUpdatedPtNodeParams->getTerminalId());
+        return false;
+    }
+    // Update flags.
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
+    return DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
+            &writingPos);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeUnigramProperty(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const UnigramProperty *const unigramProperty) {
+    // Update probability and historical information.
+    // TODO: Update other information in the unigram property.
+    if (!toBeUpdatedPtNodeParams->isTerminal()) {
+        return false;
+    }
+    const ProbabilityEntry originalProbabilityEntry =
+            mBuffers->getProbabilityDictContent()->getProbabilityEntry(
+                    toBeUpdatedPtNodeParams->getTerminalId());
+    const ProbabilityEntry probabilityEntry = createUpdatedEntryFrom(&originalProbabilityEntry,
+            unigramProperty);
+    return mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(
+            toBeUpdatedPtNodeParams->getTerminalId(), &probabilityEntry);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
+        const PtNodeParams *const toBeUpdatedPtNodeParams, bool *const outNeedsToKeepPtNode) {
+    if (!toBeUpdatedPtNodeParams->isTerminal()) {
+        AKLOGE("updatePtNodeProbabilityAndGetNeedsToSaveForGC is called for non-terminal PtNode.");
+        return false;
+    }
+    const ProbabilityEntry originalProbabilityEntry =
+            mBuffers->getProbabilityDictContent()->getProbabilityEntry(
+                    toBeUpdatedPtNodeParams->getTerminalId());
+    if (originalProbabilityEntry.hasHistoricalInfo()) {
+        const HistoricalInfo historicalInfo = ForgettingCurveUtils::createHistoricalInfoToSave(
+                originalProbabilityEntry.getHistoricalInfo(), mHeaderPolicy);
+        const ProbabilityEntry probabilityEntry =
+                originalProbabilityEntry.createEntryWithUpdatedHistoricalInfo(&historicalInfo);
+        if (!mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(
+                toBeUpdatedPtNodeParams->getTerminalId(), &probabilityEntry)) {
+            AKLOGE("Cannot write updated probability entry. terminalId: %d",
+                    toBeUpdatedPtNodeParams->getTerminalId());
+            return false;
+        }
+        const bool isValid = ForgettingCurveUtils::needsToKeep(&historicalInfo, mHeaderPolicy);
+        if (!isValid) {
+            if (!markPtNodeAsWillBecomeNonTerminal(toBeUpdatedPtNodeParams)) {
+                AKLOGE("Cannot mark PtNode as willBecomeNonTerminal.");
+                return false;
+            }
+        }
+        *outNeedsToKeepPtNode = isValid;
+    } else {
+        // No need to update probability.
+        *outNeedsToKeepPtNode = true;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateChildrenPosition(
+        const PtNodeParams *const toBeUpdatedPtNodeParams, const int newChildrenPosition) {
+    int childrenPosFieldPos = toBeUpdatedPtNodeParams->getChildrenPosFieldPos();
+    return DynamicPtWritingUtils::writeChildrenPositionAndAdvancePosition(mTrieBuffer,
+            newChildrenPosition, &childrenPosFieldPos);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateTerminalId(const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const int newTerminalId) {
+    return mTrieBuffer->writeUint(newTerminalId, Ver4DictConstants::TERMINAL_ID_FIELD_SIZE,
+            toBeUpdatedPtNodeParams->getTerminalIdFieldPos());
+}
+
+bool Ver4PatriciaTrieNodeWriter::writePtNodeAndAdvancePosition(
+        const PtNodeParams *const ptNodeParams, int *const ptNodeWritingPos) {
+    return writePtNodeAndGetTerminalIdAndAdvancePosition(ptNodeParams, 0 /* outTerminalId */,
+            ptNodeWritingPos);
+}
+
+
+bool Ver4PatriciaTrieNodeWriter::writeNewTerminalPtNodeAndAdvancePosition(
+        const PtNodeParams *const ptNodeParams, const UnigramProperty *const unigramProperty,
+        int *const ptNodeWritingPos) {
+    int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
+    if (!writePtNodeAndGetTerminalIdAndAdvancePosition(ptNodeParams, &terminalId,
+            ptNodeWritingPos)) {
+        return false;
+    }
+    // Write probability.
+    ProbabilityEntry newProbabilityEntry;
+    const ProbabilityEntry probabilityEntryToWrite = createUpdatedEntryFrom(
+            &newProbabilityEntry, unigramProperty);
+    return mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(terminalId,
+            &probabilityEntryToWrite);
+}
+
+bool Ver4PatriciaTrieNodeWriter::addNewBigramEntry(
+        const PtNodeParams *const sourcePtNodeParams, const PtNodeParams *const targetPtNodeParam,
+        const BigramProperty *const bigramProperty, bool *const outAddedNewBigram) {
+    if (!mBigramPolicy->addNewEntry(sourcePtNodeParams->getTerminalId(),
+            targetPtNodeParam->getTerminalId(), bigramProperty, outAddedNewBigram)) {
+        AKLOGE("Cannot add new bigram entry. terminalId: %d, targetTerminalId: %d",
+                sourcePtNodeParams->getTerminalId(), targetPtNodeParam->getTerminalId());
+        return false;
+    }
+    if (!sourcePtNodeParams->hasBigrams()) {
+        // Update has bigrams flag.
+        return updatePtNodeFlags(sourcePtNodeParams->getHeadPos(),
+                sourcePtNodeParams->isBlacklisted(), sourcePtNodeParams->isNotAWord(),
+                sourcePtNodeParams->isTerminal(), sourcePtNodeParams->hasShortcutTargets(),
+                true /* hasBigrams */,
+                sourcePtNodeParams->getCodePointCount() > 1 /* hasMultipleChars */);
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::removeBigramEntry(
+        const PtNodeParams *const sourcePtNodeParams, const PtNodeParams *const targetPtNodeParam) {
+    return mBigramPolicy->removeEntry(sourcePtNodeParams->getTerminalId(),
+            targetPtNodeParam->getTerminalId());
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateAllBigramEntriesAndDeleteUselessEntries(
+            const PtNodeParams *const sourcePtNodeParams, int *const outBigramEntryCount) {
+    return mBigramPolicy->updateAllBigramEntriesAndDeleteUselessEntries(
+            sourcePtNodeParams->getTerminalId(), outBigramEntryCount);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateAllPositionFields(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const DictPositionRelocationMap *const dictPositionRelocationMap,
+        int *const outBigramEntryCount) {
+    int parentPos = toBeUpdatedPtNodeParams->getParentPos();
+    if (parentPos != NOT_A_DICT_POS) {
+        PtNodeWriter::PtNodePositionRelocationMap::const_iterator it =
+                dictPositionRelocationMap->mPtNodePositionRelocationMap.find(parentPos);
+        if (it != dictPositionRelocationMap->mPtNodePositionRelocationMap.end()) {
+            parentPos = it->second;
+        }
+    }
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos()
+            + DynamicPtWritingUtils::NODE_FLAG_FIELD_SIZE;
+    // Write updated parent offset.
+    if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(mTrieBuffer,
+            parentPos, toBeUpdatedPtNodeParams->getHeadPos(), &writingPos)) {
+        return false;
+    }
+
+    // Updates children position.
+    int childrenPos = toBeUpdatedPtNodeParams->getChildrenPos();
+    if (childrenPos != NOT_A_DICT_POS) {
+        PtNodeWriter::PtNodeArrayPositionRelocationMap::const_iterator it =
+                dictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.find(childrenPos);
+        if (it != dictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.end()) {
+            childrenPos = it->second;
+        }
+    }
+    if (!updateChildrenPosition(toBeUpdatedPtNodeParams, childrenPos)) {
+        return false;
+    }
+
+    // Counts bigram entries.
+    if (outBigramEntryCount) {
+        *outBigramEntryCount = mBigramPolicy->getBigramEntryConut(
+                toBeUpdatedPtNodeParams->getTerminalId());
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::addShortcutTarget(const PtNodeParams *const ptNodeParams,
+        const int *const targetCodePoints, const int targetCodePointCount,
+        const int shortcutProbability) {
+    if (!mShortcutPolicy->addNewShortcut(ptNodeParams->getTerminalId(),
+            targetCodePoints, targetCodePointCount, shortcutProbability)) {
+        AKLOGE("Cannot add new shortuct entry. terminalId: %d", ptNodeParams->getTerminalId());
+        return false;
+    }
+    if (!ptNodeParams->hasShortcutTargets()) {
+        // Update has shortcut targets flag.
+        return updatePtNodeFlags(ptNodeParams->getHeadPos(),
+                ptNodeParams->isBlacklisted(), ptNodeParams->isNotAWord(),
+                ptNodeParams->isTerminal(), true /* hasShortcutTargets */,
+                ptNodeParams->hasBigrams(),
+                ptNodeParams->getCodePointCount() > 1 /* hasMultipleChars */);
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeHasBigramsAndShortcutTargetsFlags(
+        const PtNodeParams *const ptNodeParams) {
+    const bool hasBigrams = mBuffers->getBigramDictContent()->getBigramListHeadPos(
+            ptNodeParams->getTerminalId()) != NOT_A_DICT_POS;
+    const bool hasShortcutTargets = mBuffers->getShortcutDictContent()->getShortcutListHeadPos(
+            ptNodeParams->getTerminalId()) != NOT_A_DICT_POS;
+    return updatePtNodeFlags(ptNodeParams->getHeadPos(), ptNodeParams->isBlacklisted(),
+            ptNodeParams->isNotAWord(), ptNodeParams->isTerminal(), hasShortcutTargets,
+            hasBigrams, ptNodeParams->getCodePointCount() > 1 /* hasMultipleChars */);
+}
+
+bool Ver4PatriciaTrieNodeWriter::writePtNodeAndGetTerminalIdAndAdvancePosition(
+        const PtNodeParams *const ptNodeParams, int *const outTerminalId,
+        int *const ptNodeWritingPos) {
+    const int nodePos = *ptNodeWritingPos;
+    // Write dummy flags. The Node flags are updated with appropriate flags at the last step of the
+    // PtNode writing.
+    if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer,
+            0 /* nodeFlags */, ptNodeWritingPos)) {
+        return false;
+    }
+    // Calculate a parent offset and write the offset.
+    if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(mTrieBuffer,
+            ptNodeParams->getParentPos(), nodePos, ptNodeWritingPos)) {
+        return false;
+    }
+    // Write code points
+    if (!DynamicPtWritingUtils::writeCodePointsAndAdvancePosition(mTrieBuffer,
+            ptNodeParams->getCodePoints(), ptNodeParams->getCodePointCount(), ptNodeWritingPos)) {
+        return false;
+    }
+    int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
+    if (!ptNodeParams->willBecomeNonTerminal()) {
+        if (ptNodeParams->getTerminalId() != Ver4DictConstants::NOT_A_TERMINAL_ID) {
+            terminalId = ptNodeParams->getTerminalId();
+        } else if (ptNodeParams->isTerminal()) {
+            // Write terminal information using a new terminal id.
+            // Get a new unused terminal id.
+            terminalId = mBuffers->getTerminalPositionLookupTable()->getNextTerminalId();
+        }
+    }
+    const int isTerminal = terminalId != Ver4DictConstants::NOT_A_TERMINAL_ID;
+    if (isTerminal) {
+        // Update the lookup table.
+        if (!mBuffers->getMutableTerminalPositionLookupTable()->setTerminalPtNodePosition(
+                terminalId, nodePos)) {
+            return false;
+        }
+        // Write terminal Id.
+        if (!mTrieBuffer->writeUintAndAdvancePosition(terminalId,
+                Ver4DictConstants::TERMINAL_ID_FIELD_SIZE, ptNodeWritingPos)) {
+            return false;
+        }
+        if (outTerminalId) {
+            *outTerminalId = terminalId;
+        }
+    }
+    // Write children position
+    if (!DynamicPtWritingUtils::writeChildrenPositionAndAdvancePosition(mTrieBuffer,
+            ptNodeParams->getChildrenPos(), ptNodeWritingPos)) {
+        return false;
+    }
+    return updatePtNodeFlags(nodePos, ptNodeParams->isBlacklisted(), ptNodeParams->isNotAWord(),
+            isTerminal, ptNodeParams->hasShortcutTargets(), ptNodeParams->hasBigrams(),
+            ptNodeParams->getCodePointCount() > 1 /* hasMultipleChars */);
+}
+
+const ProbabilityEntry Ver4PatriciaTrieNodeWriter::createUpdatedEntryFrom(
+        const ProbabilityEntry *const originalProbabilityEntry,
+        const UnigramProperty *const unigramProperty) const {
+    // TODO: Consolidate historical info and probability.
+    if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
+        const HistoricalInfo historicalInfoForUpdate(unigramProperty->getTimestamp(),
+                unigramProperty->getLevel(), unigramProperty->getCount());
+        const HistoricalInfo updatedHistoricalInfo =
+                ForgettingCurveUtils::createUpdatedHistoricalInfo(
+                        originalProbabilityEntry->getHistoricalInfo(),
+                        unigramProperty->getProbability(), &historicalInfoForUpdate, mHeaderPolicy);
+        return originalProbabilityEntry->createEntryWithUpdatedHistoricalInfo(
+                &updatedHistoricalInfo);
+    } else {
+        return originalProbabilityEntry->createEntryWithUpdatedProbability(
+                unigramProperty->getProbability());
+    }
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeFlags(const int ptNodePos,
+        const bool isBlacklisted, const bool isNotAWord, const bool isTerminal,
+        const bool hasShortcutTargets, const bool hasBigrams, const bool hasMultipleChars) {
+    // Create node flags and write them.
+    PatriciaTrieReadingUtils::NodeFlags nodeFlags =
+            PatriciaTrieReadingUtils::createAndGetFlags(isBlacklisted, isNotAWord, isTerminal,
+                    hasShortcutTargets, hasBigrams, hasMultipleChars,
+                    CHILDREN_POSITION_FIELD_SIZE);
+    if (!DynamicPtWritingUtils::writeFlags(mTrieBuffer, nodeFlags, ptNodePos)) {
+        AKLOGE("Cannot write PtNode flags. flags: %x, pos: %d", nodeFlags, ptNodePos);
+        return false;
+    }
+    return true;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h
new file mode 100644
index 0000000..08226ea
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_NODE_WRITER_H
+#define LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_NODE_WRITER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/probability_entry.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+} // namespace v402
+} // namespace backward
+class BufferWithExtendableBuffer;
+namespace backward {
+namespace v402 {
+} // namespace v402
+} // namespace backward
+class HeaderPolicy;
+namespace backward {
+namespace v402 {
+class Ver4BigramListPolicy;
+class Ver4DictBuffers;
+class Ver4PatriciaTrieNodeReader;
+class Ver4PtNodeArrayReader;
+class Ver4ShortcutListPolicy;
+
+/*
+ * This class is used for helping to writes nodes of ver4 patricia trie.
+ */
+class Ver4PatriciaTrieNodeWriter : public PtNodeWriter {
+ public:
+    Ver4PatriciaTrieNodeWriter(BufferWithExtendableBuffer *const trieBuffer,
+            Ver4DictBuffers *const buffers, const HeaderPolicy *const headerPolicy,
+            const PtNodeReader *const ptNodeReader,
+            const PtNodeArrayReader *const ptNodeArrayReader,
+            Ver4BigramListPolicy *const bigramPolicy, Ver4ShortcutListPolicy *const shortcutPolicy)
+            : mTrieBuffer(trieBuffer), mBuffers(buffers), mHeaderPolicy(headerPolicy),
+              mReadingHelper(ptNodeReader, ptNodeArrayReader), mBigramPolicy(bigramPolicy),
+              mShortcutPolicy(shortcutPolicy) {}
+
+    virtual ~Ver4PatriciaTrieNodeWriter() {}
+
+    virtual bool markPtNodeAsDeleted(const PtNodeParams *const toBeUpdatedPtNodeParams);
+
+    virtual bool markPtNodeAsMoved(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int movedPos, const int bigramLinkedNodePos);
+
+    virtual bool markPtNodeAsWillBecomeNonTerminal(
+            const PtNodeParams *const toBeUpdatedPtNodeParams);
+
+    virtual bool updatePtNodeUnigramProperty(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const UnigramProperty *const unigramProperty);
+
+    virtual bool updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
+            const PtNodeParams *const toBeUpdatedPtNodeParams, bool *const outNeedsToKeepPtNode);
+
+    virtual bool updateChildrenPosition(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int newChildrenPosition);
+
+    bool updateTerminalId(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int newTerminalId);
+
+    virtual bool writePtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
+            int *const ptNodeWritingPos);
+
+    virtual bool writeNewTerminalPtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
+            const UnigramProperty *const unigramProperty, int *const ptNodeWritingPos);
+
+    virtual bool addNewBigramEntry(const PtNodeParams *const sourcePtNodeParams,
+            const PtNodeParams *const targetPtNodeParam, const BigramProperty *const bigramProperty,
+            bool *const outAddedNewBigram);
+
+    virtual bool removeBigramEntry(const PtNodeParams *const sourcePtNodeParams,
+            const PtNodeParams *const targetPtNodeParam);
+
+    virtual bool updateAllBigramEntriesAndDeleteUselessEntries(
+            const PtNodeParams *const sourcePtNodeParams, int *const outBigramEntryCount);
+
+    virtual bool updateAllPositionFields(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const DictPositionRelocationMap *const dictPositionRelocationMap,
+            int *const outBigramEntryCount);
+
+    virtual bool addShortcutTarget(const PtNodeParams *const ptNodeParams,
+            const int *const targetCodePoints, const int targetCodePointCount,
+            const int shortcutProbability);
+
+    bool updatePtNodeHasBigramsAndShortcutTargetsFlags(const PtNodeParams *const ptNodeParams);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4PatriciaTrieNodeWriter);
+
+    bool writePtNodeAndGetTerminalIdAndAdvancePosition(
+            const PtNodeParams *const ptNodeParams, int *const outTerminalId,
+            int *const ptNodeWritingPos);
+
+    // Create updated probability entry using given unigram property. In addition to the
+    // probability, this method updates historical information if needed.
+    // TODO: Update flags belonging to the unigram property.
+    const ProbabilityEntry createUpdatedEntryFrom(
+            const ProbabilityEntry *const originalProbabilityEntry,
+            const UnigramProperty *const unigramProperty) const;
+
+    bool updatePtNodeFlags(const int ptNodePos, const bool isBlacklisted, const bool isNotAWord,
+            const bool isTerminal, const bool hasShortcutTargets, const bool hasBigrams,
+            const bool hasMultipleChars);
+
+    static const int CHILDREN_POSITION_FIELD_SIZE;
+
+    BufferWithExtendableBuffer *const mTrieBuffer;
+    Ver4DictBuffers *const mBuffers;
+    const HeaderPolicy *const mHeaderPolicy;
+    DynamicPtReadingHelper mReadingHelper;
+    Ver4BigramListPolicy *const mBigramPolicy;
+    Ver4ShortcutListPolicy *const mShortcutPolicy;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_NODE_WRITER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp
new file mode 100644
index 0000000..f478d9b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp
@@ -0,0 +1,519 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!!
+ * Do not edit this file other than updating policy's interface.
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h"
+
+#include <vector>
+
+#include "suggest/core/dicnode/dic_node.h"
+#include "suggest/core/dicnode/dic_node_vector.h"
+#include "suggest/core/dictionary/property/bigram_property.h"
+#include "suggest/core/dictionary/property/unigram_property.h"
+#include "suggest/core/dictionary/property/word_property.h"
+#include "suggest/core/session/prev_words_info.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+#include "suggest/policyimpl/dictionary/utils/probability_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+// Note that there are corresponding definitions in Java side in BinaryDictionaryTests and
+// BinaryDictionaryDecayingTests.
+const char *const Ver4PatriciaTriePolicy::UNIGRAM_COUNT_QUERY = "UNIGRAM_COUNT";
+const char *const Ver4PatriciaTriePolicy::BIGRAM_COUNT_QUERY = "BIGRAM_COUNT";
+const char *const Ver4PatriciaTriePolicy::MAX_UNIGRAM_COUNT_QUERY = "MAX_UNIGRAM_COUNT";
+const char *const Ver4PatriciaTriePolicy::MAX_BIGRAM_COUNT_QUERY = "MAX_BIGRAM_COUNT";
+const int Ver4PatriciaTriePolicy::MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS = 1024;
+const int Ver4PatriciaTriePolicy::MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS =
+        Ver4DictConstants::MAX_DICTIONARY_SIZE - MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS;
+
+void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNode,
+        DicNodeVector *const childDicNodes) const {
+    if (!dicNode->hasChildren()) {
+        return;
+    }
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(dicNode->getChildrenPtNodeArrayPos());
+    while (!readingHelper.isEnd()) {
+        const PtNodeParams ptNodeParams = readingHelper.getPtNodeParams();
+        if (!ptNodeParams.isValid()) {
+            break;
+        }
+        bool isTerminal = ptNodeParams.isTerminal() && !ptNodeParams.isDeleted();
+        if (isTerminal && mHeaderPolicy->isDecayingDict()) {
+            // A DecayingDict may have a terminal PtNode that has a terminal DicNode whose
+            // probability is NOT_A_PROBABILITY. In such case, we don't want to treat it as a
+            // valid terminal DicNode.
+            isTerminal = ptNodeParams.getProbability() != NOT_A_PROBABILITY;
+        }
+        readingHelper.readNextSiblingNode(ptNodeParams);
+        if (ptNodeParams.representsNonWordInfo()) {
+            // Skip PtNodes that represent non-word information.
+            continue;
+        }
+        childDicNodes->pushLeavingChild(dicNode, ptNodeParams.getHeadPos(),
+                ptNodeParams.getChildrenPos(), ptNodeParams.getProbability(), isTerminal,
+                ptNodeParams.hasChildren(),
+                ptNodeParams.isBlacklisted()
+                        || ptNodeParams.isNotAWord() /* isBlacklistedOrNotAWord */,
+                ptNodeParams.getCodePointCount(), ptNodeParams.getCodePoints());
+    }
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes().");
+    }
+}
+
+int Ver4PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
+        const int ptNodePos, const int maxCodePointCount, int *const outCodePoints,
+        int *const outUnigramProbability) const {
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodePos(ptNodePos);
+    const int codePointCount =  readingHelper.getCodePointsAndProbabilityAndReturnCodePointCount(
+            maxCodePointCount, outCodePoints, outUnigramProbability);
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in getCodePointsAndProbabilityAndReturnCodePointCount().");
+    }
+    return codePointCount;
+}
+
+int Ver4PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord,
+        const int length, const bool forceLowerCaseSearch) const {
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(getRootPosition());
+    const int ptNodePos =
+            readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch);
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes().");
+    }
+    return ptNodePos;
+}
+
+int Ver4PatriciaTriePolicy::getProbability(const int unigramProbability,
+        const int bigramProbability) const {
+    if (mHeaderPolicy->isDecayingDict()) {
+        // Both probabilities are encoded. Decode them and get probability.
+        return ForgettingCurveUtils::getProbability(unigramProbability, bigramProbability);
+    } else {
+        if (unigramProbability == NOT_A_PROBABILITY) {
+            return NOT_A_PROBABILITY;
+        } else if (bigramProbability == NOT_A_PROBABILITY) {
+            return ProbabilityUtils::backoff(unigramProbability);
+        } else {
+            return bigramProbability;
+        }
+    }
+}
+
+int Ver4PatriciaTriePolicy::getUnigramProbabilityOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_PROBABILITY;
+    }
+    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
+    if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) {
+        return NOT_A_PROBABILITY;
+    }
+    return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY);
+}
+
+int Ver4PatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_DICT_POS;
+    }
+    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
+    if (ptNodeParams.isDeleted()) {
+        return NOT_A_DICT_POS;
+    }
+    return mBuffers->getShortcutDictContent()->getShortcutListHeadPos(
+            ptNodeParams.getTerminalId());
+}
+
+BinaryDictionaryBigramsIterator Ver4PatriciaTriePolicy::getBigramsIteratorOfPtNode(
+        const int ptNodePos) const {
+    const int bigramsPosition = getBigramsPositionOfPtNode(ptNodePos);
+    return BinaryDictionaryBigramsIterator(&mBigramPolicy, bigramsPosition);
+}
+
+int Ver4PatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_DICT_POS;
+    }
+    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
+    if (ptNodeParams.isDeleted()) {
+        return NOT_A_DICT_POS;
+    }
+    return mBuffers->getBigramDictContent()->getBigramListHeadPos(
+            ptNodeParams.getTerminalId());
+}
+
+bool Ver4PatriciaTriePolicy::addUnigramEntry(const int *const word, const int length,
+        const UnigramProperty *const unigramProperty) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: addUnigramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
+        AKLOGE("The dictionary is too large to dynamically update. Dictionary size: %d",
+                mDictBuffer->getTailPosition());
+        return false;
+    }
+    if (length > MAX_WORD_LENGTH) {
+        AKLOGE("The word is too long to insert to the dictionary, length: %d", length);
+        return false;
+    }
+    for (const auto &shortcut : unigramProperty->getShortcuts()) {
+        if (shortcut.getTargetCodePoints()->size() > MAX_WORD_LENGTH) {
+            AKLOGE("One of shortcut targets is too long to insert to the dictionary, length: %d",
+                    shortcut.getTargetCodePoints()->size());
+            return false;
+        }
+    }
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(getRootPosition());
+    bool addedNewUnigram = false;
+    int codePointsToAdd[MAX_WORD_LENGTH];
+    int codePointCountToAdd = length;
+    memmove(codePointsToAdd, word, sizeof(int) * length);
+    if (unigramProperty->representsBeginningOfSentence()) {
+        codePointCountToAdd = CharUtils::attachBeginningOfSentenceMarker(codePointsToAdd,
+                codePointCountToAdd, MAX_WORD_LENGTH);
+    }
+    if (codePointCountToAdd <= 0) {
+        return false;
+    }
+    if (mUpdatingHelper.addUnigramWord(&readingHelper, codePointsToAdd, codePointCountToAdd,
+            unigramProperty, &addedNewUnigram)) {
+        if (addedNewUnigram && !unigramProperty->representsBeginningOfSentence()) {
+            mUnigramCount++;
+        }
+        if (unigramProperty->getShortcuts().size() > 0) {
+            // Add shortcut target.
+            const int wordPos = getTerminalPtNodePositionOfWord(word, length,
+                    false /* forceLowerCaseSearch */);
+            if (wordPos == NOT_A_DICT_POS) {
+                AKLOGE("Cannot find terminal PtNode position to add shortcut target.");
+                return false;
+            }
+            for (const auto &shortcut : unigramProperty->getShortcuts()) {
+                if (!mUpdatingHelper.addShortcutTarget(wordPos,
+                        shortcut.getTargetCodePoints()->data(),
+                        shortcut.getTargetCodePoints()->size(), shortcut.getProbability())) {
+                    AKLOGE("Cannot add new shortcut target. PtNodePos: %d, length: %d, "
+                            "probability: %d", wordPos, shortcut.getTargetCodePoints()->size(),
+                            shortcut.getProbability());
+                    return false;
+                }
+            }
+        }
+        return true;
+    } else {
+        return false;
+    }
+}
+
+bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+        const BigramProperty *const bigramProperty) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: addNgramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
+        AKLOGE("The dictionary is too large to dynamically update. Dictionary size: %d",
+                mDictBuffer->getTailPosition());
+        return false;
+    }
+    if (!prevWordsInfo->isValid()) {
+        AKLOGE("prev words info is not valid for adding n-gram entry to the dictionary.");
+        return false;
+    }
+    if (bigramProperty->getTargetCodePoints()->size() > MAX_WORD_LENGTH) {
+        AKLOGE("The word is too long to insert the ngram to the dictionary. "
+                "length: %d", bigramProperty->getTargetCodePoints()->size());
+        return false;
+    }
+    int prevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
+            false /* tryLowerCaseSearch */);
+    // TODO: Support N-gram.
+    if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) {
+        if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)) {
+            const std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+            const UnigramProperty beginningOfSentenceUnigramProperty(
+                    true /* representsBeginningOfSentence */, true /* isNotAWord */,
+                    false /* isBlacklisted */, MAX_PROBABILITY /* probability */,
+                    NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts);
+            if (!addUnigramEntry(prevWordsInfo->getNthPrevWordCodePoints(1 /* n */),
+                    prevWordsInfo->getNthPrevWordCodePointCount(1 /* n */),
+                    &beginningOfSentenceUnigramProperty)) {
+                AKLOGE("Cannot add unigram entry for the beginning-of-sentence.");
+                return false;
+            }
+            // Refresh Terminal PtNode positions.
+            prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
+                    false /* tryLowerCaseSearch */);
+        } else {
+            return false;
+        }
+    }
+    const int word1Pos = getTerminalPtNodePositionOfWord(
+            bigramProperty->getTargetCodePoints()->data(),
+            bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */);
+    if (word1Pos == NOT_A_DICT_POS) {
+        return false;
+    }
+    bool addedNewBigram = false;
+    if (mUpdatingHelper.addBigramWords(prevWordsPtNodePos[0], word1Pos, bigramProperty,
+            &addedNewBigram)) {
+        if (addedNewBigram) {
+            mBigramCount++;
+        }
+        return true;
+    } else {
+        return false;
+    }
+}
+
+bool Ver4PatriciaTriePolicy::removeNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+        const int *const word, const int length) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: removeNgramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
+        AKLOGE("The dictionary is too large to dynamically update. Dictionary size: %d",
+                mDictBuffer->getTailPosition());
+        return false;
+    }
+    if (!prevWordsInfo->isValid()) {
+        AKLOGE("prev words info is not valid for removing n-gram entry form the dictionary.");
+        return false;
+    }
+    if (length > MAX_WORD_LENGTH) {
+        AKLOGE("word is too long to remove n-gram entry form the dictionary. length: %d", length);
+    }
+    int prevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
+            false /* tryLowerCaseSerch */);
+    // TODO: Support N-gram.
+    if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) {
+        return false;
+    }
+    const int wordPos = getTerminalPtNodePositionOfWord(word, length,
+            false /* forceLowerCaseSearch */);
+    if (wordPos == NOT_A_DICT_POS) {
+        return false;
+    }
+    if (mUpdatingHelper.removeBigramWords(prevWordsPtNodePos[0], wordPos)) {
+        mBigramCount--;
+        return true;
+    } else {
+        return false;
+    }
+}
+
+bool Ver4PatriciaTriePolicy::flush(const char *const filePath) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: flush() is called for non-updatable dictionary. filePath: %s", filePath);
+        return false;
+    }
+    if (!mWritingHelper.writeToDictFile(filePath, mUnigramCount, mBigramCount)) {
+        AKLOGE("Cannot flush the dictionary to file.");
+        mIsCorrupted = true;
+        return false;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTriePolicy::flushWithGC(const char *const filePath) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (!mWritingHelper.writeToDictFileWithGC(getRootPosition(), filePath)) {
+        AKLOGE("Cannot flush the dictionary to file with GC.");
+        mIsCorrupted = true;
+        return false;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTriePolicy::needsToRunGC(const bool mindsBlockByGC) const {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: needsToRunGC() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mBuffers->isNearSizeLimit()) {
+        // Additional buffer size is near the limit.
+        return true;
+    } else if (mHeaderPolicy->getExtendedRegionSize() + mDictBuffer->getUsedAdditionalBufferSize()
+            > Ver4DictConstants::MAX_DICT_EXTENDED_REGION_SIZE) {
+        // Total extended region size of the trie exceeds the limit.
+        return true;
+    } else if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS
+            && mDictBuffer->getUsedAdditionalBufferSize() > 0) {
+        // Needs to reduce dictionary size.
+        return true;
+    } else if (mHeaderPolicy->isDecayingDict()) {
+        return ForgettingCurveUtils::needsToDecay(mindsBlockByGC, mUnigramCount, mBigramCount,
+                mHeaderPolicy);
+    }
+    return false;
+}
+
+void Ver4PatriciaTriePolicy::getProperty(const char *const query, const int queryLength,
+        char *const outResult, const int maxResultLength) {
+    const int compareLength = queryLength + 1 /* terminator */;
+    if (strncmp(query, UNIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d", mUnigramCount);
+    } else if (strncmp(query, BIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d", mBigramCount);
+    } else if (strncmp(query, MAX_UNIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d",
+                mHeaderPolicy->isDecayingDict() ?
+                        ForgettingCurveUtils::getUnigramCountHardLimit(
+                                mHeaderPolicy->getMaxUnigramCount()) :
+                        static_cast<int>(Ver4DictConstants::MAX_DICTIONARY_SIZE));
+    } else if (strncmp(query, MAX_BIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d",
+                mHeaderPolicy->isDecayingDict() ?
+                        ForgettingCurveUtils::getBigramCountHardLimit(
+                                mHeaderPolicy->getMaxBigramCount()) :
+                        static_cast<int>(Ver4DictConstants::MAX_DICTIONARY_SIZE));
+    }
+}
+
+const WordProperty Ver4PatriciaTriePolicy::getWordProperty(const int *const codePoints,
+        const int codePointCount) const {
+    const int ptNodePos = getTerminalPtNodePositionOfWord(codePoints, codePointCount,
+            false /* forceLowerCaseSearch */);
+    if (ptNodePos == NOT_A_DICT_POS) {
+        AKLOGE("getWordProperty is called for invalid word.");
+        return WordProperty();
+    }
+    const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+    std::vector<int> codePointVector(ptNodeParams.getCodePoints(),
+            ptNodeParams.getCodePoints() + ptNodeParams.getCodePointCount());
+    const ProbabilityEntry probabilityEntry =
+            mBuffers->getProbabilityDictContent()->getProbabilityEntry(
+                    ptNodeParams.getTerminalId());
+    const HistoricalInfo *const historicalInfo = probabilityEntry.getHistoricalInfo();
+    // Fetch bigram information.
+    std::vector<BigramProperty> bigrams;
+    const int bigramListPos = getBigramsPositionOfPtNode(ptNodePos);
+    if (bigramListPos != NOT_A_DICT_POS) {
+        int bigramWord1CodePoints[MAX_WORD_LENGTH];
+        const BigramDictContent *const bigramDictContent = mBuffers->getBigramDictContent();
+        const TerminalPositionLookupTable *const terminalPositionLookupTable =
+                mBuffers->getTerminalPositionLookupTable();
+        bool hasNext = true;
+        int readingPos = bigramListPos;
+        while (hasNext) {
+            const BigramEntry bigramEntry =
+                    bigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+            hasNext = bigramEntry.hasNext();
+            const int word1TerminalId = bigramEntry.getTargetTerminalId();
+            const int word1TerminalPtNodePos =
+                    terminalPositionLookupTable->getTerminalPtNodePosition(word1TerminalId);
+            if (word1TerminalPtNodePos == NOT_A_DICT_POS) {
+                continue;
+            }
+            // Word (unigram) probability
+            int word1Probability = NOT_A_PROBABILITY;
+            const int codePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(
+                    word1TerminalPtNodePos, MAX_WORD_LENGTH, bigramWord1CodePoints,
+                    &word1Probability);
+            const std::vector<int> word1(bigramWord1CodePoints,
+                    bigramWord1CodePoints + codePointCount);
+            const HistoricalInfo *const historicalInfo = bigramEntry.getHistoricalInfo();
+            const int probability = bigramEntry.hasHistoricalInfo() ?
+                    ForgettingCurveUtils::decodeProbability(
+                            bigramEntry.getHistoricalInfo(), mHeaderPolicy) :
+                    bigramEntry.getProbability();
+            bigrams.emplace_back(&word1, probability,
+                    historicalInfo->getTimeStamp(), historicalInfo->getLevel(),
+                    historicalInfo->getCount());
+        }
+    }
+    // Fetch shortcut information.
+    std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+    int shortcutPos = getShortcutPositionOfPtNode(ptNodePos);
+    if (shortcutPos != NOT_A_DICT_POS) {
+        int shortcutTarget[MAX_WORD_LENGTH];
+        const ShortcutDictContent *const shortcutDictContent =
+                mBuffers->getShortcutDictContent();
+        bool hasNext = true;
+        while (hasNext) {
+            int shortcutTargetLength = 0;
+            int shortcutProbability = NOT_A_PROBABILITY;
+            shortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, shortcutTarget,
+                    &shortcutTargetLength, &shortcutProbability, &hasNext, &shortcutPos);
+            const std::vector<int> target(shortcutTarget, shortcutTarget + shortcutTargetLength);
+            shortcuts.emplace_back(&target, shortcutProbability);
+        }
+    }
+    const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(),
+            ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(),
+            historicalInfo->getTimeStamp(), historicalInfo->getLevel(),
+            historicalInfo->getCount(), &shortcuts);
+    return WordProperty(&codePointVector, &unigramProperty, &bigrams);
+}
+
+int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints,
+        int *const outCodePointCount) {
+    *outCodePointCount = 0;
+    if (token == 0) {
+        mTerminalPtNodePositionsForIteratingWords.clear();
+        DynamicPtReadingHelper::TraversePolicyToGetAllTerminalPtNodePositions traversePolicy(
+                &mTerminalPtNodePositionsForIteratingWords);
+        DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+        readingHelper.initWithPtNodeArrayPos(getRootPosition());
+        readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(&traversePolicy);
+    }
+    const int terminalPtNodePositionsVectorSize =
+            static_cast<int>(mTerminalPtNodePositionsForIteratingWords.size());
+    if (token < 0 || token >= terminalPtNodePositionsVectorSize) {
+        AKLOGE("Given token %d is invalid.", token);
+        return 0;
+    }
+    const int terminalPtNodePos = mTerminalPtNodePositionsForIteratingWords[token];
+    int unigramProbability = NOT_A_PROBABILITY;
+    *outCodePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(
+            terminalPtNodePos, MAX_WORD_LENGTH, outCodePoints, &unigramProbability);
+    const int nextToken = token + 1;
+    if (nextToken >= terminalPtNodePositionsVectorSize) {
+        // All words have been iterated.
+        mTerminalPtNodePositionsForIteratingWords.clear();
+        return 0;
+    }
+    return nextToken;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h
new file mode 100644
index 0000000..6d97c7c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!!
+ * Do not edit this file other than updating policy's interface.
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_POLICY_H
+#define LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_POLICY_H
+
+#include <vector>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+} // namespace v402
+} // namespace backward
+class DicNode;
+namespace backward {
+namespace v402 {
+} // namespace v402
+} // namespace backward
+class DicNodeVector;
+namespace backward {
+namespace v402 {
+
+class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
+ public:
+    Ver4PatriciaTriePolicy(Ver4DictBuffers::Ver4DictBuffersPtr buffers)
+            : mBuffers(std::move(buffers)), mHeaderPolicy(mBuffers->getHeaderPolicy()),
+              mDictBuffer(mBuffers->getWritableTrieBuffer()),
+              mBigramPolicy(mBuffers->getMutableBigramDictContent(),
+                      mBuffers->getTerminalPositionLookupTable(), mHeaderPolicy),
+              mShortcutPolicy(mBuffers->getMutableShortcutDictContent(),
+                      mBuffers->getTerminalPositionLookupTable()),
+              mNodeReader(mDictBuffer, mBuffers->getProbabilityDictContent(), mHeaderPolicy),
+              mPtNodeArrayReader(mDictBuffer),
+              mNodeWriter(mDictBuffer, mBuffers.get(), mHeaderPolicy, &mNodeReader,
+                      &mPtNodeArrayReader, &mBigramPolicy, &mShortcutPolicy),
+              mUpdatingHelper(mDictBuffer, &mNodeReader, &mNodeWriter),
+              mWritingHelper(mBuffers.get()),
+              mUnigramCount(mHeaderPolicy->getUnigramCount()),
+              mBigramCount(mHeaderPolicy->getBigramCount()),
+              mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {};
+
+    AK_FORCE_INLINE int getRootPosition() const {
+        return 0;
+    }
+
+    void createAndGetAllChildDicNodes(const DicNode *const dicNode,
+            DicNodeVector *const childDicNodes) const;
+
+    int getCodePointsAndProbabilityAndReturnCodePointCount(
+            const int terminalPtNodePos, const int maxCodePointCount, int *const outCodePoints,
+            int *const outUnigramProbability) const;
+
+    int getTerminalPtNodePositionOfWord(const int *const inWord,
+            const int length, const bool forceLowerCaseSearch) const;
+
+    int getProbability(const int unigramProbability, const int bigramProbability) const;
+
+    int getUnigramProbabilityOfPtNode(const int ptNodePos) const;
+
+    int getShortcutPositionOfPtNode(const int ptNodePos) const;
+
+    BinaryDictionaryBigramsIterator getBigramsIteratorOfPtNode(const int ptNodePos) const;
+
+    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
+        return mHeaderPolicy;
+    }
+
+    const DictionaryShortcutsStructurePolicy *getShortcutsStructurePolicy() const {
+        return &mShortcutPolicy;
+    }
+
+    bool addUnigramEntry(const int *const word, const int length,
+            const UnigramProperty *const unigramProperty);
+
+    bool removeUnigramEntry(const int *const word, const int length) {
+        // Removing unigram entry is not supported.
+        return false;
+    }
+
+    bool addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+            const BigramProperty *const bigramProperty);
+
+    bool removeNgramEntry(const PrevWordsInfo *const prevWordsInfo, const int *const word1,
+            const int length1);
+
+    bool flush(const char *const filePath);
+
+    bool flushWithGC(const char *const filePath);
+
+    bool needsToRunGC(const bool mindsBlockByGC) const;
+
+    void getProperty(const char *const query, const int queryLength, char *const outResult,
+            const int maxResultLength);
+
+    const WordProperty getWordProperty(const int *const codePoints,
+            const int codePointCount) const;
+
+    int getNextWordAndNextToken(const int token, int *const outCodePoints,
+            int *const outCodePointCount);
+
+    bool isCorrupted() const {
+        return mIsCorrupted;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTriePolicy);
+
+    static const char *const UNIGRAM_COUNT_QUERY;
+    static const char *const BIGRAM_COUNT_QUERY;
+    static const char *const MAX_UNIGRAM_COUNT_QUERY;
+    static const char *const MAX_BIGRAM_COUNT_QUERY;
+    // When the dictionary size is near the maximum size, we have to refuse dynamic operations to
+    // prevent the dictionary from overflowing.
+    static const int MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS;
+    static const int MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS;
+
+    const Ver4DictBuffers::Ver4DictBuffersPtr mBuffers;
+    const HeaderPolicy *const mHeaderPolicy;
+    BufferWithExtendableBuffer *const mDictBuffer;
+    Ver4BigramListPolicy mBigramPolicy;
+    Ver4ShortcutListPolicy mShortcutPolicy;
+    Ver4PatriciaTrieNodeReader mNodeReader;
+    Ver4PtNodeArrayReader mPtNodeArrayReader;
+    Ver4PatriciaTrieNodeWriter mNodeWriter;
+    DynamicPtUpdatingHelper mUpdatingHelper;
+    Ver4PatriciaTrieWritingHelper mWritingHelper;
+    int mUnigramCount;
+    int mBigramCount;
+    std::vector<int> mTerminalPtNodePositionsForIteratingWords;
+    mutable bool mIsCorrupted;
+
+    int getBigramsPositionOfPtNode(const int ptNodePos) const;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif // LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.cpp
new file mode 100644
index 0000000..80d5311
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.h"
+
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+/* static */ int Ver4PatriciaTrieReadingUtils::getTerminalIdAndAdvancePosition(
+        const uint8_t *const buffer, int *pos) {
+    return ByteArrayUtils::readUint32AndAdvancePosition(buffer, pos);
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.h
new file mode 100644
index 0000000..3579c26
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_reading_utils.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_READING_UTILS_H
+#define LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_READING_UTILS_H
+
+#include <cstdint>
+
+#include "defines.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+} // namespace v402
+} // namespace backward
+class BufferWithExtendableBuffer;
+namespace backward {
+namespace v402 {
+
+class Ver4PatriciaTrieReadingUtils {
+ public:
+    static int getTerminalIdAndAdvancePosition(const uint8_t *const buffer,
+            int *const pos);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTrieReadingUtils);
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_READING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.cpp
new file mode 100644
index 0000000..3fb4caa
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.cpp
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h"
+
+#include <cstring>
+#include <queue>
+
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+bool Ver4PatriciaTrieWritingHelper::writeToDictFile(const char *const dictDirPath,
+        const int unigramCount, const int bigramCount) const {
+    const HeaderPolicy *const headerPolicy = mBuffers->getHeaderPolicy();
+    BufferWithExtendableBuffer headerBuffer(
+            BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE);
+    const int extendedRegionSize = headerPolicy->getExtendedRegionSize()
+            + mBuffers->getTrieBuffer()->getUsedAdditionalBufferSize();
+    if (!headerPolicy->fillInAndWriteHeaderToBuffer(false /* updatesLastDecayedTime */,
+            unigramCount, bigramCount, extendedRegionSize, &headerBuffer)) {
+        AKLOGE("Cannot write header structure to buffer. "
+                "updatesLastDecayedTime: %d, unigramCount: %d, bigramCount: %d, "
+                "extendedRegionSize: %d", false, unigramCount, bigramCount,
+                extendedRegionSize);
+        return false;
+    }
+    return mBuffers->flushHeaderAndDictBuffers(dictDirPath, &headerBuffer);
+}
+
+bool Ver4PatriciaTrieWritingHelper::writeToDictFileWithGC(const int rootPtNodeArrayPos,
+        const char *const dictDirPath) {
+    const HeaderPolicy *const headerPolicy = mBuffers->getHeaderPolicy();
+    Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers(
+            Ver4DictBuffers::createVer4DictBuffers(headerPolicy,
+                    Ver4DictConstants::MAX_DICTIONARY_SIZE));
+    int unigramCount = 0;
+    int bigramCount = 0;
+    if (!runGC(rootPtNodeArrayPos, headerPolicy, dictBuffers.get(), &unigramCount, &bigramCount)) {
+        return false;
+    }
+    BufferWithExtendableBuffer headerBuffer(
+            BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE);
+    if (!headerPolicy->fillInAndWriteHeaderToBuffer(true /* updatesLastDecayedTime */,
+            unigramCount, bigramCount, 0 /* extendedRegionSize */, &headerBuffer)) {
+        return false;
+    }
+    return dictBuffers->flushHeaderAndDictBuffers(dictDirPath, &headerBuffer);
+}
+
+bool Ver4PatriciaTrieWritingHelper::runGC(const int rootPtNodeArrayPos,
+        const HeaderPolicy *const headerPolicy, Ver4DictBuffers *const buffersToWrite,
+        int *const outUnigramCount, int *const outBigramCount) {
+    Ver4PatriciaTrieNodeReader ptNodeReader(mBuffers->getTrieBuffer(),
+            mBuffers->getProbabilityDictContent(), headerPolicy);
+    Ver4PtNodeArrayReader ptNodeArrayReader(mBuffers->getTrieBuffer());
+    Ver4BigramListPolicy bigramPolicy(mBuffers->getMutableBigramDictContent(),
+            mBuffers->getTerminalPositionLookupTable(), headerPolicy);
+    Ver4ShortcutListPolicy shortcutPolicy(mBuffers->getMutableShortcutDictContent(),
+            mBuffers->getTerminalPositionLookupTable());
+    Ver4PatriciaTrieNodeWriter ptNodeWriter(mBuffers->getWritableTrieBuffer(),
+            mBuffers, headerPolicy, &ptNodeReader, &ptNodeArrayReader, &bigramPolicy,
+            &shortcutPolicy);
+
+    DynamicPtReadingHelper readingHelper(&ptNodeReader, &ptNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    DynamicPtGcEventListeners
+            ::TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
+                    traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted(
+                            &ptNodeWriter);
+    if (!readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
+            &traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted)) {
+        return false;
+    }
+    const int unigramCount = traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
+            .getValidUnigramCount();
+    const int maxUnigramCount = headerPolicy->getMaxUnigramCount();
+    if (headerPolicy->isDecayingDict() && unigramCount > maxUnigramCount) {
+        if (!truncateUnigrams(&ptNodeReader, &ptNodeWriter, maxUnigramCount)) {
+            AKLOGE("Cannot remove unigrams. current: %d, max: %d", unigramCount,
+                    maxUnigramCount);
+            return false;
+        }
+    }
+
+    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    DynamicPtGcEventListeners::TraversePolicyToUpdateBigramProbability
+            traversePolicyToUpdateBigramProbability(&ptNodeWriter);
+    if (!readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
+            &traversePolicyToUpdateBigramProbability)) {
+        return false;
+    }
+    const int bigramCount = traversePolicyToUpdateBigramProbability.getValidBigramEntryCount();
+    const int maxBigramCount = headerPolicy->getMaxBigramCount();
+    if (headerPolicy->isDecayingDict() && bigramCount > maxBigramCount) {
+        if (!truncateBigrams(maxBigramCount)) {
+            AKLOGE("Cannot remove bigrams. current: %d, max: %d", bigramCount, maxBigramCount);
+            return false;
+        }
+    }
+
+    // Mapping from positions in mBuffer to positions in bufferToWrite.
+    PtNodeWriter::DictPositionRelocationMap dictPositionRelocationMap;
+    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    Ver4PatriciaTrieNodeWriter ptNodeWriterForNewBuffers(buffersToWrite->getWritableTrieBuffer(),
+            buffersToWrite, headerPolicy, &ptNodeReader, &ptNodeArrayReader, &bigramPolicy,
+            &shortcutPolicy);
+    DynamicPtGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
+            traversePolicyToPlaceAndWriteValidPtNodesToBuffer(&ptNodeWriterForNewBuffers,
+                    buffersToWrite->getWritableTrieBuffer(), &dictPositionRelocationMap);
+    if (!readingHelper.traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
+            &traversePolicyToPlaceAndWriteValidPtNodesToBuffer)) {
+        return false;
+    }
+
+    // Create policy instances for the GCed dictionary.
+    Ver4PatriciaTrieNodeReader newPtNodeReader(buffersToWrite->getTrieBuffer(),
+            buffersToWrite->getProbabilityDictContent(), headerPolicy);
+    Ver4PtNodeArrayReader newPtNodeArrayreader(buffersToWrite->getTrieBuffer());
+    Ver4BigramListPolicy newBigramPolicy(buffersToWrite->getMutableBigramDictContent(),
+            buffersToWrite->getTerminalPositionLookupTable(), headerPolicy);
+    Ver4ShortcutListPolicy newShortcutPolicy(buffersToWrite->getMutableShortcutDictContent(),
+            buffersToWrite->getTerminalPositionLookupTable());
+    Ver4PatriciaTrieNodeWriter newPtNodeWriter(buffersToWrite->getWritableTrieBuffer(),
+            buffersToWrite, headerPolicy, &newPtNodeReader, &newPtNodeArrayreader, &newBigramPolicy,
+            &newShortcutPolicy);
+    // Re-assign terminal IDs for valid terminal PtNodes.
+    TerminalPositionLookupTable::TerminalIdMap terminalIdMap;
+    if(!buffersToWrite->getMutableTerminalPositionLookupTable()->runGCTerminalIds(
+            &terminalIdMap)) {
+        return false;
+    }
+    // Run GC for probability dict content.
+    if (!buffersToWrite->getMutableProbabilityDictContent()->runGC(&terminalIdMap,
+            mBuffers->getProbabilityDictContent())) {
+        return false;
+    }
+    // Run GC for bigram dict content.
+    if(!buffersToWrite->getMutableBigramDictContent()->runGC(&terminalIdMap,
+            mBuffers->getBigramDictContent(), outBigramCount)) {
+        return false;
+    }
+    // Run GC for shortcut dict content.
+    if(!buffersToWrite->getMutableShortcutDictContent()->runGC(&terminalIdMap,
+            mBuffers->getShortcutDictContent())) {
+        return false;
+    }
+    DynamicPtReadingHelper newDictReadingHelper(&newPtNodeReader, &newPtNodeArrayreader);
+    newDictReadingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    DynamicPtGcEventListeners::TraversePolicyToUpdateAllPositionFields
+            traversePolicyToUpdateAllPositionFields(&newPtNodeWriter, &dictPositionRelocationMap);
+    if (!newDictReadingHelper.traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
+            &traversePolicyToUpdateAllPositionFields)) {
+        return false;
+    }
+    newDictReadingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds
+            traversePolicyToUpdateAllPtNodeFlagsAndTerminalIds(&newPtNodeWriter, &terminalIdMap);
+    if (!newDictReadingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
+            &traversePolicyToUpdateAllPtNodeFlagsAndTerminalIds)) {
+        return false;
+    }
+    *outUnigramCount = traversePolicyToUpdateAllPositionFields.getUnigramCount();
+    return true;
+}
+
+bool Ver4PatriciaTrieWritingHelper::truncateUnigrams(
+        const Ver4PatriciaTrieNodeReader *const ptNodeReader,
+        Ver4PatriciaTrieNodeWriter *const ptNodeWriter, const int maxUnigramCount) {
+    const TerminalPositionLookupTable *const terminalPosLookupTable =
+            mBuffers->getTerminalPositionLookupTable();
+    const int nextTerminalId = terminalPosLookupTable->getNextTerminalId();
+    std::priority_queue<DictProbability, std::vector<DictProbability>, DictProbabilityComparator>
+            priorityQueue;
+    for (int i = 0; i < nextTerminalId; ++i) {
+        const int terminalPos = terminalPosLookupTable->getTerminalPtNodePosition(i);
+        if (terminalPos == NOT_A_DICT_POS) {
+            continue;
+        }
+        const ProbabilityEntry probabilityEntry =
+                mBuffers->getProbabilityDictContent()->getProbabilityEntry(i);
+        const int probability = probabilityEntry.hasHistoricalInfo() ?
+                ForgettingCurveUtils::decodeProbability(
+                        probabilityEntry.getHistoricalInfo(), mBuffers->getHeaderPolicy()) :
+                probabilityEntry.getProbability();
+        priorityQueue.push(DictProbability(terminalPos, probability,
+                probabilityEntry.getHistoricalInfo()->getTimeStamp()));
+    }
+
+    // Delete unigrams.
+    while (static_cast<int>(priorityQueue.size()) > maxUnigramCount) {
+        const int ptNodePos = priorityQueue.top().getDictPos();
+        priorityQueue.pop();
+        const PtNodeParams ptNodeParams =
+                ptNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+        if (ptNodeParams.representsNonWordInfo()) {
+            continue;
+        }
+        if (!ptNodeWriter->markPtNodeAsWillBecomeNonTerminal(&ptNodeParams)) {
+            AKLOGE("Cannot mark PtNode as willBecomeNonterminal. PtNode pos: %d", ptNodePos);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieWritingHelper::truncateBigrams(const int maxBigramCount) {
+    const TerminalPositionLookupTable *const terminalPosLookupTable =
+            mBuffers->getTerminalPositionLookupTable();
+    const int nextTerminalId = terminalPosLookupTable->getNextTerminalId();
+    std::priority_queue<DictProbability, std::vector<DictProbability>, DictProbabilityComparator>
+            priorityQueue;
+    BigramDictContent *const bigramDictContent = mBuffers->getMutableBigramDictContent();
+    for (int i = 0; i < nextTerminalId; ++i) {
+        const int bigramListPos = bigramDictContent->getBigramListHeadPos(i);
+        if (bigramListPos == NOT_A_DICT_POS) {
+            continue;
+        }
+        bool hasNext = true;
+        int readingPos = bigramListPos;
+        while (hasNext) {
+            const int entryPos = readingPos;
+            const BigramEntry bigramEntry =
+                    bigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+            hasNext = bigramEntry.hasNext();
+            if (!bigramEntry.isValid()) {
+                continue;
+            }
+            const int probability = bigramEntry.hasHistoricalInfo() ?
+                    ForgettingCurveUtils::decodeProbability(
+                            bigramEntry.getHistoricalInfo(), mBuffers->getHeaderPolicy()) :
+                    bigramEntry.getProbability();
+            priorityQueue.push(DictProbability(entryPos, probability,
+                    bigramEntry.getHistoricalInfo()->getTimeStamp()));
+        }
+    }
+
+    // Delete bigrams.
+    while (static_cast<int>(priorityQueue.size()) > maxBigramCount) {
+        const int entryPos = priorityQueue.top().getDictPos();
+        const BigramEntry bigramEntry = bigramDictContent->getBigramEntry(entryPos);
+        const BigramEntry invalidatedBigramEntry = bigramEntry.getInvalidatedEntry();
+        if (!bigramDictContent->writeBigramEntry(&invalidatedBigramEntry, entryPos)) {
+            AKLOGE("Cannot write bigram entry to remove. pos: %d", entryPos);
+            return false;
+        }
+        priorityQueue.pop();
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieWritingHelper::TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds
+        ::onVisitingPtNode(const PtNodeParams *const ptNodeParams) {
+    if (!ptNodeParams->isTerminal()) {
+        return true;
+    }
+    TerminalPositionLookupTable::TerminalIdMap::const_iterator it =
+            mTerminalIdMap->find(ptNodeParams->getTerminalId());
+    if (it == mTerminalIdMap->end()) {
+        AKLOGE("terminal Id %d is not in the terminal position map. map size: %zd",
+                ptNodeParams->getTerminalId(), mTerminalIdMap->size());
+        return false;
+    }
+    if (!mPtNodeWriter->updateTerminalId(ptNodeParams, it->second)) {
+        AKLOGE("Cannot update terminal id. %d -> %d", it->first, it->second);
+    }
+    return mPtNodeWriter->updatePtNodeHasBigramsAndShortcutTargetsFlags(ptNodeParams);
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h
new file mode 100644
index 0000000..9034ee6
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_WRITING_HELPER_H
+#define LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_WRITING_HELPER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/content/terminal_position_lookup_table.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+} // namespace v402
+} // namespace backward
+class HeaderPolicy;
+namespace backward {
+namespace v402 {
+class Ver4DictBuffers;
+class Ver4PatriciaTrieNodeReader;
+class Ver4PatriciaTrieNodeWriter;
+
+class Ver4PatriciaTrieWritingHelper {
+ public:
+    Ver4PatriciaTrieWritingHelper(Ver4DictBuffers *const buffers)
+            : mBuffers(buffers) {}
+
+    bool writeToDictFile(const char *const dictDirPath, const int unigramCount,
+            const int bigramCount) const;
+
+    // This method cannot be const because the original dictionary buffer will be updated to detect
+    // useless PtNodes during GC.
+    bool writeToDictFileWithGC(const int rootPtNodeArrayPos, const char *const dictDirPath);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTrieWritingHelper);
+
+    class TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds
+            : public DynamicPtReadingHelper::TraversingEventListener {
+     public:
+        TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds(
+                Ver4PatriciaTrieNodeWriter *const ptNodeWriter,
+                const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap)
+                : mPtNodeWriter(ptNodeWriter), mTerminalIdMap(terminalIdMap) {}
+
+        bool onAscend() { return true; }
+
+        bool onDescend(const int ptNodeArrayPos) { return true; }
+
+        bool onReadingPtNodeArrayTail() { return true; }
+
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds);
+
+        Ver4PatriciaTrieNodeWriter *const mPtNodeWriter;
+        const TerminalPositionLookupTable::TerminalIdMap *const mTerminalIdMap;
+    };
+
+    // For truncateUnigrams() and truncateBigrams().
+    class DictProbability {
+     public:
+        DictProbability(const int dictPos, const int probability, const int timestamp)
+                : mDictPos(dictPos), mProbability(probability), mTimestamp(timestamp) {}
+
+        int getDictPos() const {
+            return mDictPos;
+        }
+
+        int getProbability() const {
+            return mProbability;
+        }
+
+        int getTimestamp() const {
+            return mTimestamp;
+        }
+
+     private:
+        DISALLOW_DEFAULT_CONSTRUCTOR(DictProbability);
+
+        int mDictPos;
+        int mProbability;
+        int mTimestamp;
+    };
+
+    // For truncateUnigrams() and truncateBigrams().
+    class DictProbabilityComparator {
+     public:
+        bool operator()(const DictProbability &left, const DictProbability &right) {
+            if (left.getProbability() != right.getProbability()) {
+                return left.getProbability() > right.getProbability();
+            }
+            if (left.getTimestamp() != right.getTimestamp()) {
+                return left.getTimestamp() < right.getTimestamp();
+            }
+            return left.getDictPos() > right.getDictPos();
+        }
+
+     private:
+        DISALLOW_ASSIGNMENT_OPERATOR(DictProbabilityComparator);
+    };
+
+    bool runGC(const int rootPtNodeArrayPos, const HeaderPolicy *const headerPolicy,
+            Ver4DictBuffers *const buffersToWrite, int *const outUnigramCount,
+            int *const outBigramCount);
+
+    bool truncateUnigrams(const Ver4PatriciaTrieNodeReader *const ptNodeReader,
+            Ver4PatriciaTrieNodeWriter *const ptNodeWriter, const int maxUnigramCount);
+
+    bool truncateBigrams(const int maxBigramCount);
+
+    Ver4DictBuffers *const mBuffers;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+
+#endif /* LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_WRITING_HELPER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.cpp
new file mode 100644
index 0000000..537a6d4
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.cpp
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.cpp
+ */
+
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+bool Ver4PtNodeArrayReader::readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+        int *const outPtNodeCount, int *const outFirstPtNodePos) const {
+    if (ptNodeArrayPos < 0 || ptNodeArrayPos >= mBuffer->getTailPosition()) {
+        // Reading invalid position because of a bug or a broken dictionary.
+        AKLOGE("Reading PtNode array info from invalid dictionary position: %d, dict size: %d",
+                ptNodeArrayPos, mBuffer->getTailPosition());
+        ASSERT(false);
+        return false;
+    }
+    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(ptNodeArrayPos);
+    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
+    int readingPos = ptNodeArrayPos;
+    if (usesAdditionalBuffer) {
+        readingPos -= mBuffer->getOriginalBufferSize();
+    }
+    const int ptNodeCountInArray = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
+            dictBuf, &readingPos);
+    if (usesAdditionalBuffer) {
+        readingPos += mBuffer->getOriginalBufferSize();
+    }
+    if (ptNodeCountInArray < 0) {
+        AKLOGE("Invalid PtNode count in an array: %d.", ptNodeCountInArray);
+        return false;
+    }
+    *outPtNodeCount = ptNodeCountInArray;
+    *outFirstPtNodePos = readingPos;
+    return true;
+}
+
+bool Ver4PtNodeArrayReader::readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+        int *const outNextPtNodeArrayPos) const {
+    if (forwordLinkPos < 0 || forwordLinkPos >= mBuffer->getTailPosition()) {
+        // Reading invalid position because of bug or broken dictionary.
+        AKLOGE("Reading forward link from invalid dictionary position: %d, dict size: %d",
+                forwordLinkPos, mBuffer->getTailPosition());
+        ASSERT(false);
+        return false;
+    }
+    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(forwordLinkPos);
+    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
+    int readingPos = forwordLinkPos;
+    if (usesAdditionalBuffer) {
+        readingPos -= mBuffer->getOriginalBufferSize();
+    }
+    const int nextPtNodeArrayOffset =
+            DynamicPtReadingUtils::getForwardLinkPosition(dictBuf, readingPos);
+    if (DynamicPtReadingUtils::isValidForwardLinkPosition(nextPtNodeArrayOffset)) {
+        *outNextPtNodeArrayPos = forwordLinkPos + nextPtNodeArrayOffset;
+    } else {
+        *outNextPtNodeArrayPos = NOT_A_DICT_POS;
+    }
+    return true;
+}
+
+} // namespace v402
+} // namespace backward
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h
new file mode 100644
index 0000000..4f80568
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file was generated from
+ *   suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h
+ */
+
+#ifndef LATINIME_BACKWARD_V402_VER4_PT_NODE_ARRAY_READER_H
+#define LATINIME_BACKWARD_V402_VER4_PT_NODE_ARRAY_READER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h"
+
+namespace latinime {
+namespace backward {
+namespace v402 {
+
+} // namespace v402
+} // namespace backward
+class BufferWithExtendableBuffer;
+namespace backward {
+namespace v402 {
+
+class Ver4PtNodeArrayReader : public PtNodeArrayReader {
+ public:
+    Ver4PtNodeArrayReader(const BufferWithExtendableBuffer *const buffer) : mBuffer(buffer) {};
+
+    virtual bool readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+            int *const outPtNodeCount, int *const outFirstPtNodePos) const;
+    virtual bool readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+            int *const outNextPtNodeArrayPos) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4PtNodeArrayReader);
+
+    const BufferWithExtendableBuffer *const mBuffer;
+};
+} // namespace v402
+} // namespace backward
+} // namespace latinime
+#endif /* LATINIME_BACKWARD_V402_VER4_PT_NODE_ARRAY_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp
new file mode 100644
index 0000000..e4b5fa2
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.cpp
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h"
+
+#include <climits>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h"
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+#include "suggest/policyimpl/dictionary/utils/format_utils.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+
+/* static */ DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        DictionaryStructureWithBufferPolicyFactory::newPolicyForExistingDictFile(
+                const char *const path, const int bufOffset, const int size,
+                const bool isUpdatable) {
+    if (FileUtils::existsDir(path)) {
+        // Given path represents a directory.
+        return newPolicyForDirectoryDict(path, isUpdatable);
+    } else {
+        if (isUpdatable) {
+            AKLOGE("One file dictionaries don't support updating. path: %s", path);
+            ASSERT(false);
+            return nullptr;
+        }
+        return newPolicyForFileDict(path, bufOffset, size);
+    }
+}
+
+/* static */ DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        DictionaryStructureWithBufferPolicyFactory:: newPolicyForOnMemoryDict(
+                const int formatVersion, const std::vector<int> &locale,
+                const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap) {
+    FormatUtils::FORMAT_VERSION dictFormatVersion = FormatUtils::getFormatVersion(formatVersion);
+    switch (dictFormatVersion) {
+        case FormatUtils::VERSION_4: {
+            return newPolicyForOnMemoryV4Dict<backward::v402::Ver4DictConstants,
+                    backward::v402::Ver4DictBuffers,
+                    backward::v402::Ver4DictBuffers::Ver4DictBuffersPtr,
+                    backward::v402::Ver4PatriciaTriePolicy>(
+                            dictFormatVersion, locale, attributeMap);
+        }
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+        case FormatUtils::VERSION_4_DEV: {
+            return newPolicyForOnMemoryV4Dict<Ver4DictConstants, Ver4DictBuffers,
+                    Ver4DictBuffers::Ver4DictBuffersPtr, Ver4PatriciaTriePolicy>(
+                            dictFormatVersion, locale, attributeMap);
+        }
+        default:
+            AKLOGE("DICT: dictionary format %d is not supported for on memory dictionary",
+                    formatVersion);
+            break;
+    }
+    return nullptr;
+}
+
+template<class DictConstants, class DictBuffers, class DictBuffersPtr, class StructurePolicy>
+/* static */ DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        DictionaryStructureWithBufferPolicyFactory::newPolicyForOnMemoryV4Dict(
+                const FormatUtils::FORMAT_VERSION formatVersion,
+                const std::vector<int> &locale,
+                const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap) {
+    HeaderPolicy headerPolicy(formatVersion, locale, attributeMap);
+    DictBuffersPtr dictBuffers = DictBuffers::createVer4DictBuffers(&headerPolicy,
+            DictConstants::MAX_DICT_EXTENDED_REGION_SIZE);
+    if (!DynamicPtWritingUtils::writeEmptyDictionary(
+            dictBuffers->getWritableTrieBuffer(), 0 /* rootPos */)) {
+        AKLOGE("Empty ver4 dictionary structure cannot be created on memory.");
+        return nullptr;
+    }
+    return DictionaryStructureWithBufferPolicy::StructurePolicyPtr(
+            new StructurePolicy(std::move(dictBuffers)));
+}
+
+/* static */ DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        DictionaryStructureWithBufferPolicyFactory::newPolicyForDirectoryDict(
+                const char *const path, const bool isUpdatable) {
+    const int headerFilePathBufSize = PATH_MAX + 1 /* terminator */;
+    char headerFilePath[headerFilePathBufSize];
+    getHeaderFilePathInDictDir(path, headerFilePathBufSize, headerFilePath);
+    // Allocated buffer in MmapedBuffer::openBuffer() will be freed in the destructor of
+    // MmappedBufferPtr if the instance has the responsibility.
+    MmappedBuffer::MmappedBufferPtr mmappedBuffer =
+            MmappedBuffer::openBuffer(headerFilePath, isUpdatable);
+    if (!mmappedBuffer) {
+        return nullptr;
+    }
+    const FormatUtils::FORMAT_VERSION formatVersion = FormatUtils::detectFormatVersion(
+            mmappedBuffer->getBuffer(), mmappedBuffer->getBufferSize());
+    switch (formatVersion) {
+        case FormatUtils::VERSION_2:
+            AKLOGE("Given path is a directory but the format is version 2. path: %s", path);
+            break;
+        case FormatUtils::VERSION_4: {
+            return newPolicyForV4Dict<backward::v402::Ver4DictConstants,
+                    backward::v402::Ver4DictBuffers,
+                    backward::v402::Ver4DictBuffers::Ver4DictBuffersPtr,
+                    backward::v402::Ver4PatriciaTriePolicy>(
+                            headerFilePath, formatVersion, std::move(mmappedBuffer));
+        }
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+        case FormatUtils::VERSION_4_DEV: {
+            return newPolicyForV4Dict<Ver4DictConstants, Ver4DictBuffers,
+                    Ver4DictBuffers::Ver4DictBuffersPtr, Ver4PatriciaTriePolicy>(
+                            headerFilePath, formatVersion, std::move(mmappedBuffer));
+        }
+        default:
+            AKLOGE("DICT: dictionary format is unknown, bad magic number. path: %s", path);
+            break;
+    }
+    ASSERT(false);
+    return nullptr;
+}
+
+template<class DictConstants, class DictBuffers, class DictBuffersPtr, class StructurePolicy>
+/* static */ DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        DictionaryStructureWithBufferPolicyFactory::newPolicyForV4Dict(
+                const char *const headerFilePath, const FormatUtils::FORMAT_VERSION formatVersion,
+                MmappedBuffer::MmappedBufferPtr &&mmappedBuffer) {
+    const int dictDirPathBufSize = strlen(headerFilePath) + 1 /* terminator */;
+    char dictPath[dictDirPathBufSize];
+    if (!FileUtils::getFilePathWithoutSuffix(headerFilePath,
+            DictConstants::HEADER_FILE_EXTENSION, dictDirPathBufSize, dictPath)) {
+        AKLOGE("Dictionary file name is not valid as a ver4 dictionary. header path: %s",
+                headerFilePath);
+        ASSERT(false);
+        return nullptr;
+    }
+    DictBuffersPtr dictBuffers =
+            DictBuffers::openVer4DictBuffers(dictPath, std::move(mmappedBuffer), formatVersion);
+    if (!dictBuffers || !dictBuffers->isValid()) {
+        AKLOGE("DICT: The dictionary doesn't satisfy ver4 format requirements. path: %s",
+                dictPath);
+        ASSERT(false);
+        return nullptr;
+    }
+    return DictionaryStructureWithBufferPolicy::StructurePolicyPtr(
+            new StructurePolicy(std::move(dictBuffers)));
+}
+
+/* static */ DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+        DictionaryStructureWithBufferPolicyFactory::newPolicyForFileDict(
+                const char *const path, const int bufOffset, const int size) {
+    // Allocated buffer in MmapedBuffer::openBuffer() will be freed in the destructor of
+    // MmappedBufferPtr if the instance has the responsibility.
+    MmappedBuffer::MmappedBufferPtr mmappedBuffer(
+            MmappedBuffer::openBuffer(path, bufOffset, size, false /* isUpdatable */));
+    if (!mmappedBuffer) {
+        return nullptr;
+    }
+    switch (FormatUtils::detectFormatVersion(mmappedBuffer->getBuffer(),
+            mmappedBuffer->getBufferSize())) {
+        case FormatUtils::VERSION_2:
+            return DictionaryStructureWithBufferPolicy::StructurePolicyPtr(
+                    new PatriciaTriePolicy(std::move(mmappedBuffer)));
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+        case FormatUtils::VERSION_4:
+        case FormatUtils::VERSION_4_DEV:
+            AKLOGE("Given path is a file but the format is version 4. path: %s", path);
+            break;
+        default:
+            AKLOGE("DICT: dictionary format is unknown, bad magic number. path: %s", path);
+            break;
+    }
+    ASSERT(false);
+    return nullptr;
+}
+
+/* static */ void DictionaryStructureWithBufferPolicyFactory::getHeaderFilePathInDictDir(
+        const char *const dictDirPath, const int outHeaderFileBufSize,
+        char *const outHeaderFilePath) {
+    const int dictNameBufSize = strlen(dictDirPath) + 1 /* terminator */;
+    char dictName[dictNameBufSize];
+    FileUtils::getBasename(dictDirPath, dictNameBufSize, dictName);
+    snprintf(outHeaderFilePath, outHeaderFileBufSize, "%s/%s%s", dictDirPath,
+            dictName, Ver4DictConstants::HEADER_FILE_EXTENSION);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h b/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h
new file mode 100644
index 0000000..768454d
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/dictionary_structure_with_buffer_policy_factory.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DICTIONARY_STRUCTURE_WITH_BUFFER_POLICY_FACTORY_H
+#define LATINIME_DICTIONARY_STRUCTURE_WITH_BUFFER_POLICY_FACTORY_H
+
+#include <vector>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_header_structure_policy.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/policyimpl/dictionary/utils/format_utils.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+
+class DictionaryStructureWithBufferPolicyFactory {
+ public:
+    static DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            newPolicyForExistingDictFile(const char *const path, const int bufOffset,
+                    const int size, const bool isUpdatable);
+
+    static DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            newPolicyForOnMemoryDict(const int formatVersion, const std::vector<int> &locale,
+                    const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DictionaryStructureWithBufferPolicyFactory);
+
+    template<class DictConstants, class DictBuffers, class DictBuffersPtr, class StructurePolicy>
+    static DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            newPolicyForOnMemoryV4Dict(const FormatUtils::FORMAT_VERSION formatVersion,
+                    const std::vector<int> &locale,
+                    const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap);
+
+    static DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            newPolicyForDirectoryDict(const char *const path, const bool isUpdatable);
+
+    template<class DictConstants, class DictBuffers, class DictBuffersPtr, class StructurePolicy>
+    static DictionaryStructureWithBufferPolicy::StructurePolicyPtr newPolicyForV4Dict(
+            const char *const headerFilePath, const FormatUtils::FORMAT_VERSION formatVersion,
+                    MmappedBuffer::MmappedBufferPtr &&mmappedBuffer);
+
+    static DictionaryStructureWithBufferPolicy::StructurePolicyPtr
+            newPolicyForFileDict(const char *const path, const int bufOffset, const int size);
+
+    static void getHeaderFilePathInDictDir(const char *const dirPath,
+            const int outHeaderFileBufSize, char *const outHeaderFilePath);
+};
+} // namespace latinime
+#endif // LATINIME_DICTIONARY_STRUCTURE_WITH_BUFFER_POLICY_FACTORY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.cpp
new file mode 100644
index 0000000..08b4e0b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.cpp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
+
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+const BigramListReadWriteUtils::BigramFlags BigramListReadWriteUtils::MASK_ATTRIBUTE_ADDRESS_TYPE =
+        0x30;
+const BigramListReadWriteUtils::BigramFlags
+        BigramListReadWriteUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10;
+const BigramListReadWriteUtils::BigramFlags
+        BigramListReadWriteUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20;
+const BigramListReadWriteUtils::BigramFlags
+        BigramListReadWriteUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30;
+const BigramListReadWriteUtils::BigramFlags
+        BigramListReadWriteUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40;
+// Flag for presence of more attributes
+const BigramListReadWriteUtils::BigramFlags BigramListReadWriteUtils::FLAG_ATTRIBUTE_HAS_NEXT =
+        0x80;
+// Mask for attribute probability, stored on 4 bits inside the flags byte.
+const BigramListReadWriteUtils::BigramFlags
+        BigramListReadWriteUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F;
+
+/* static */ void BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(
+        const uint8_t *const bigramsBuf, BigramFlags *const outBigramFlags,
+        int *const outTargetPtNodePos, int *const bigramEntryPos) {
+    const BigramFlags bigramFlags = ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf,
+            bigramEntryPos);
+    if (outBigramFlags) {
+        *outBigramFlags = bigramFlags;
+    }
+    const int targetPos = getBigramAddressAndAdvancePosition(bigramsBuf, bigramFlags,
+            bigramEntryPos);
+    if (outTargetPtNodePos) {
+        *outTargetPtNodePos = targetPos;
+    }
+}
+
+/* static */ void BigramListReadWriteUtils::skipExistingBigrams(const uint8_t *const bigramsBuf,
+        int *const bigramListPos) {
+    BigramFlags flags;
+    do {
+        getBigramEntryPropertiesAndAdvancePosition(bigramsBuf, &flags, 0 /* outTargetPtNodePos */,
+                bigramListPos);
+    } while(hasNext(flags));
+}
+
+/* static */ int BigramListReadWriteUtils::getBigramAddressAndAdvancePosition(
+        const uint8_t *const bigramsBuf, const BigramFlags flags, int *const pos) {
+    int offset = 0;
+    const int origin = *pos;
+    switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) {
+        case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE:
+            offset = ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf, pos);
+            break;
+        case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES:
+            offset = ByteArrayUtils::readUint16AndAdvancePosition(bigramsBuf, pos);
+            break;
+        case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES:
+            offset = ByteArrayUtils::readUint24AndAdvancePosition(bigramsBuf, pos);
+            break;
+    }
+    if (isOffsetNegative(flags)) {
+        return origin - offset;
+    } else {
+        return origin + offset;
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h
new file mode 100644
index 0000000..15f924a
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_BIGRAM_LIST_READ_WRITE_UTILS_H
+#define LATINIME_BIGRAM_LIST_READ_WRITE_UTILS_H
+
+#include <cstdint>
+#include <cstdlib>
+
+#include "defines.h"
+
+namespace latinime {
+
+class BufferWithExtendableBuffer;
+
+class BigramListReadWriteUtils {
+public:
+   typedef uint8_t BigramFlags;
+
+   static void getBigramEntryPropertiesAndAdvancePosition(const uint8_t *const bigramsBuf,
+           BigramFlags *const outBigramFlags, int *const outTargetPtNodePos,
+           int *const bigramEntryPos);
+
+   static AK_FORCE_INLINE int getProbabilityFromFlags(const BigramFlags flags) {
+       return flags & MASK_ATTRIBUTE_PROBABILITY;
+   }
+
+   static AK_FORCE_INLINE bool hasNext(const BigramFlags flags) {
+       return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0;
+   }
+
+   // Bigrams reading methods
+   static void skipExistingBigrams(const uint8_t *const bigramsBuf, int *const bigramListPos);
+
+private:
+   DISALLOW_IMPLICIT_CONSTRUCTORS(BigramListReadWriteUtils);
+
+   static const BigramFlags MASK_ATTRIBUTE_ADDRESS_TYPE;
+   static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE;
+   static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES;
+   static const BigramFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES;
+   static const BigramFlags FLAG_ATTRIBUTE_OFFSET_NEGATIVE;
+   static const BigramFlags FLAG_ATTRIBUTE_HAS_NEXT;
+   static const BigramFlags MASK_ATTRIBUTE_PROBABILITY;
+
+   static AK_FORCE_INLINE bool isOffsetNegative(const BigramFlags flags) {
+       return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0;
+   }
+
+   static int getBigramAddressAndAdvancePosition(const uint8_t *const bigramsBuf,
+           const BigramFlags flags, int *const pos);
+};
+} // namespace latinime
+#endif // LATINIME_BIGRAM_LIST_READ_WRITE_UTILS_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.cpp
new file mode 100644
index 0000000..db1a802
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.cpp
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h"
+
+#include "suggest/core/policy/dictionary_header_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h"
+
+namespace latinime {
+
+bool DynamicPtGcEventListeners
+        ::TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
+                ::onVisitingPtNode(const PtNodeParams *const ptNodeParams) {
+    // PtNode is useless when the PtNode is not a terminal and doesn't have any not useless
+    // children.
+    bool isUselessPtNode = !ptNodeParams->isTerminal();
+    if (ptNodeParams->isTerminal() && !ptNodeParams->representsNonWordInfo()) {
+        bool needsToKeepPtNode = true;
+        if (!mPtNodeWriter->updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
+                ptNodeParams, &needsToKeepPtNode)) {
+            AKLOGE("Cannot update PtNode probability or get needs to keep PtNode after GC.");
+            return false;
+        }
+        if (!needsToKeepPtNode) {
+            isUselessPtNode = true;
+        }
+    }
+    if (mChildrenValue > 0) {
+        isUselessPtNode = false;
+    } else if (ptNodeParams->isTerminal()) {
+        // Remove children as all children are useless.
+        if (!mPtNodeWriter->updateChildrenPosition(ptNodeParams,
+                NOT_A_DICT_POS /* newChildrenPosition */)) {
+            return false;
+        }
+    }
+    if (isUselessPtNode) {
+        // Current PtNode is no longer needed. Mark it as deleted.
+        if (!mPtNodeWriter->markPtNodeAsDeleted(ptNodeParams)) {
+            return false;
+        }
+    } else {
+        mValueStack.back() += 1;
+        if (ptNodeParams->isTerminal() && !ptNodeParams->representsNonWordInfo()) {
+            mValidUnigramCount += 1;
+        }
+    }
+    return true;
+}
+
+bool DynamicPtGcEventListeners::TraversePolicyToUpdateBigramProbability
+        ::onVisitingPtNode(const PtNodeParams *const ptNodeParams) {
+    if (!ptNodeParams->isDeleted()) {
+        int bigramEntryCount = 0;
+        if (!mPtNodeWriter->updateAllBigramEntriesAndDeleteUselessEntries(ptNodeParams,
+                &bigramEntryCount)) {
+            return false;
+        }
+        mValidBigramEntryCount += bigramEntryCount;
+    }
+    return true;
+}
+
+// Writes dummy PtNode array size when the head of PtNode array is read.
+bool DynamicPtGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
+        ::onDescend(const int ptNodeArrayPos) {
+    mValidPtNodeCount = 0;
+    int writingPos = mBufferToWrite->getTailPosition();
+    mDictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.insert(
+            PtNodeWriter::PtNodeArrayPositionRelocationMap::value_type(ptNodeArrayPos, writingPos));
+    // Writes dummy PtNode array size because arrays can have a forward link or needles PtNodes.
+    // This field will be updated later in onReadingPtNodeArrayTail() with actual PtNode count.
+    mPtNodeArraySizeFieldPos = writingPos;
+    return DynamicPtWritingUtils::writePtNodeArraySizeAndAdvancePosition(
+            mBufferToWrite, 0 /* arraySize */, &writingPos);
+}
+
+// Write PtNode array terminal and actual PtNode array size.
+bool DynamicPtGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
+        ::onReadingPtNodeArrayTail() {
+    int writingPos = mBufferToWrite->getTailPosition();
+    // Write PtNode array terminal.
+    if (!DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(
+            mBufferToWrite, NOT_A_DICT_POS /* forwardLinkPos */, &writingPos)) {
+        return false;
+    }
+    // Write actual PtNode array size.
+    if (!DynamicPtWritingUtils::writePtNodeArraySizeAndAdvancePosition(
+            mBufferToWrite, mValidPtNodeCount, &mPtNodeArraySizeFieldPos)) {
+        return false;
+    }
+    return true;
+}
+
+// Write valid PtNode to buffer and memorize mapping from the old position to the new position.
+bool DynamicPtGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
+        ::onVisitingPtNode(const PtNodeParams *const ptNodeParams) {
+    if (ptNodeParams->isDeleted()) {
+        // Current PtNode is not written in new buffer because it has been deleted.
+        mDictPositionRelocationMap->mPtNodePositionRelocationMap.insert(
+                PtNodeWriter::PtNodePositionRelocationMap::value_type(
+                        ptNodeParams->getHeadPos(), NOT_A_DICT_POS));
+        return true;
+    }
+    int writingPos = mBufferToWrite->getTailPosition();
+    mDictPositionRelocationMap->mPtNodePositionRelocationMap.insert(
+            PtNodeWriter::PtNodePositionRelocationMap::value_type(
+                    ptNodeParams->getHeadPos(), writingPos));
+    mValidPtNodeCount++;
+    // Writes current PtNode.
+    return mPtNodeWriter->writePtNodeAndAdvancePosition(ptNodeParams, &writingPos);
+}
+
+bool DynamicPtGcEventListeners::TraversePolicyToUpdateAllPositionFields
+        ::onVisitingPtNode(const PtNodeParams *const ptNodeParams) {
+    // Updates parent position.
+    int bigramCount = 0;
+    if (!mPtNodeWriter->updateAllPositionFields(ptNodeParams, mDictPositionRelocationMap,
+            &bigramCount)) {
+        return false;
+    }
+    mBigramCount += bigramCount;
+    if (ptNodeParams->isTerminal()) {
+        mUnigramCount++;
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h
new file mode 100644
index 0000000..2aa4027
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DYNAMIC_PT_GC_EVENT_LISTENERS_H
+#define LATINIME_DYNAMIC_PT_GC_EVENT_LISTENERS_H
+
+#include <vector>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+class PtNodeParams;
+
+class DynamicPtGcEventListeners {
+ public:
+    // Updates all PtNodes that can be reached from the root. Checks if each PtNode is useless or
+    // not and marks useless PtNodes as deleted. Such deleted PtNodes will be discarded in the GC.
+    // TODO: Concatenate non-terminal PtNodes.
+    class TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
+        : public DynamicPtReadingHelper::TraversingEventListener {
+     public:
+        TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted(
+                PtNodeWriter *const ptNodeWriter)
+                : mPtNodeWriter(ptNodeWriter), mValueStack(), mChildrenValue(0),
+                  mValidUnigramCount(0) {}
+
+        ~TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted() {};
+
+        bool onAscend() {
+            if (mValueStack.empty()) {
+                return false;
+            }
+            mChildrenValue = mValueStack.back();
+            mValueStack.pop_back();
+            return true;
+        }
+
+        bool onDescend(const int ptNodeArrayPos) {
+            mValueStack.push_back(0);
+            mChildrenValue = 0;
+            return true;
+        }
+
+        bool onReadingPtNodeArrayTail() { return true; }
+
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+        int getValidUnigramCount() const {
+            return mValidUnigramCount;
+        }
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(
+                TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted);
+
+        PtNodeWriter *const mPtNodeWriter;
+        std::vector<int> mValueStack;
+        int mChildrenValue;
+        int mValidUnigramCount;
+    };
+
+    // Updates all bigram entries that are held by valid PtNodes. This removes useless bigram
+    // entries.
+    class TraversePolicyToUpdateBigramProbability
+            : public DynamicPtReadingHelper::TraversingEventListener {
+     public:
+        TraversePolicyToUpdateBigramProbability(PtNodeWriter *const ptNodeWriter)
+                : mPtNodeWriter(ptNodeWriter), mValidBigramEntryCount(0) {}
+
+        bool onAscend() { return true; }
+
+        bool onDescend(const int ptNodeArrayPos) { return true; }
+
+        bool onReadingPtNodeArrayTail() { return true; }
+
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+        int getValidBigramEntryCount() const {
+            return mValidBigramEntryCount;
+        }
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToUpdateBigramProbability);
+
+        PtNodeWriter *const mPtNodeWriter;
+        int mValidBigramEntryCount;
+    };
+
+    class TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
+            : public DynamicPtReadingHelper::TraversingEventListener {
+     public:
+        TraversePolicyToPlaceAndWriteValidPtNodesToBuffer(
+                PtNodeWriter *const ptNodeWriter, BufferWithExtendableBuffer *const bufferToWrite,
+                PtNodeWriter::DictPositionRelocationMap *const dictPositionRelocationMap)
+                : mPtNodeWriter(ptNodeWriter), mBufferToWrite(bufferToWrite),
+                  mDictPositionRelocationMap(dictPositionRelocationMap), mValidPtNodeCount(0),
+                  mPtNodeArraySizeFieldPos(NOT_A_DICT_POS) {};
+
+        bool onAscend() { return true; }
+
+        bool onDescend(const int ptNodeArrayPos);
+
+        bool onReadingPtNodeArrayTail();
+
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToPlaceAndWriteValidPtNodesToBuffer);
+
+        PtNodeWriter *const mPtNodeWriter;
+        BufferWithExtendableBuffer *const mBufferToWrite;
+        PtNodeWriter::DictPositionRelocationMap *const mDictPositionRelocationMap;
+        int mValidPtNodeCount;
+        int mPtNodeArraySizeFieldPos;
+    };
+
+    class TraversePolicyToUpdateAllPositionFields
+            : public DynamicPtReadingHelper::TraversingEventListener {
+     public:
+        TraversePolicyToUpdateAllPositionFields(PtNodeWriter *const ptNodeWriter,
+                const PtNodeWriter::DictPositionRelocationMap *const dictPositionRelocationMap)
+                : mPtNodeWriter(ptNodeWriter),
+                  mDictPositionRelocationMap(dictPositionRelocationMap), mUnigramCount(0),
+                  mBigramCount(0) {};
+
+        bool onAscend() { return true; }
+
+        bool onDescend(const int ptNodeArrayPos) { return true; }
+
+        bool onReadingPtNodeArrayTail() { return true; }
+
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+        int getUnigramCount() const {
+            return mUnigramCount;
+        }
+
+        int getBigramCount() const {
+            return mBigramCount;
+        }
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToUpdateAllPositionFields);
+
+        PtNodeWriter *const mPtNodeWriter;
+        const PtNodeWriter::DictPositionRelocationMap *const mDictPositionRelocationMap;
+        int mUnigramCount;
+        int mBigramCount;
+    };
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPtGcEventListeners);
+};
+} // namespace latinime
+#endif /* LATINIME_DYNAMIC_PT_GC_EVENT_LISTENERS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.cpp
new file mode 100644
index 0000000..086d98b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.cpp
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h"
+#include "utils/char_utils.h"
+
+namespace latinime {
+
+// To avoid infinite loop caused by invalid or malicious forward links.
+const int DynamicPtReadingHelper::MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP = 100000;
+const int DynamicPtReadingHelper::MAX_PT_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP = 100000;
+const size_t DynamicPtReadingHelper::MAX_READING_STATE_STACK_SIZE = MAX_WORD_LENGTH;
+
+bool DynamicPtReadingHelper::TraversePolicyToGetAllTerminalPtNodePositions::onVisitingPtNode(
+        const PtNodeParams *const ptNodeParams) {
+    if (ptNodeParams->isTerminal() && !ptNodeParams->isDeleted()) {
+        mTerminalPositions->push_back(ptNodeParams->getHeadPos());
+    }
+    return true;
+}
+
+// Visits all PtNodes in post-order depth first manner.
+// For example, visits c -> b -> y -> x -> a for the following dictionary:
+// a _ b _ c
+//   \ x _ y
+bool DynamicPtReadingHelper::traverseAllPtNodesInPostorderDepthFirstManner(
+        TraversingEventListener *const listener) {
+    bool alreadyVisitedChildren = false;
+    // Descend from the root to the root PtNode array.
+    if (!listener->onDescend(getPosOfLastPtNodeArrayHead())) {
+        return false;
+    }
+    while (!isEnd()) {
+        const PtNodeParams ptNodeParams(getPtNodeParams());
+        if (!ptNodeParams.isValid()) {
+            break;
+        }
+        if (!alreadyVisitedChildren) {
+            if (ptNodeParams.hasChildren()) {
+                // Move to the first child.
+                if (!listener->onDescend(ptNodeParams.getChildrenPos())) {
+                    return false;
+                }
+                pushReadingStateToStack();
+                readChildNode(ptNodeParams);
+            } else {
+                alreadyVisitedChildren = true;
+            }
+        } else {
+            if (!listener->onVisitingPtNode(&ptNodeParams)) {
+                return false;
+            }
+            readNextSiblingNode(ptNodeParams);
+            if (isEnd()) {
+                // All PtNodes in current linked PtNode arrays have been visited.
+                // Return to the parent.
+                if (!listener->onReadingPtNodeArrayTail()) {
+                    return false;
+                }
+                if (mReadingStateStack.size() <= 0) {
+                    break;
+                }
+                if (!listener->onAscend()) {
+                    return false;
+                }
+                popReadingStateFromStack();
+                alreadyVisitedChildren = true;
+            } else {
+                // Process sibling PtNode.
+                alreadyVisitedChildren = false;
+            }
+        }
+    }
+    // Ascend from the root PtNode array to the root.
+    if (!listener->onAscend()) {
+        return false;
+    }
+    return !isError();
+}
+
+// Visits all PtNodes in PtNode array level pre-order depth first manner, which is the same order
+// that PtNodes are written in the dictionary buffer.
+// For example, visits a -> b -> x -> c -> y for the following dictionary:
+// a _ b _ c
+//   \ x _ y
+bool DynamicPtReadingHelper::traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
+        TraversingEventListener *const listener) {
+    bool alreadyVisitedAllPtNodesInArray = false;
+    bool alreadyVisitedChildren = false;
+    // Descend from the root to the root PtNode array.
+    if (!listener->onDescend(getPosOfLastPtNodeArrayHead())) {
+        return false;
+    }
+    if (isEnd()) {
+        // Empty dictionary. Needs to notify the listener of the tail of empty PtNode array.
+        if (!listener->onReadingPtNodeArrayTail()) {
+            return false;
+        }
+    }
+    pushReadingStateToStack();
+    while (!isEnd()) {
+        const PtNodeParams ptNodeParams(getPtNodeParams());
+        if (!ptNodeParams.isValid()) {
+            break;
+        }
+        if (alreadyVisitedAllPtNodesInArray) {
+            if (alreadyVisitedChildren) {
+                // Move to next sibling PtNode's children.
+                readNextSiblingNode(ptNodeParams);
+                if (isEnd()) {
+                    // Return to the parent PTNode.
+                    if (!listener->onAscend()) {
+                        return false;
+                    }
+                    if (mReadingStateStack.size() <= 0) {
+                        break;
+                    }
+                    popReadingStateFromStack();
+                    alreadyVisitedChildren = true;
+                    alreadyVisitedAllPtNodesInArray = true;
+                } else {
+                    alreadyVisitedChildren = false;
+                }
+            } else {
+                if (ptNodeParams.hasChildren()) {
+                    // Move to the first child.
+                    if (!listener->onDescend(ptNodeParams.getChildrenPos())) {
+                        return false;
+                    }
+                    pushReadingStateToStack();
+                    readChildNode(ptNodeParams);
+                    // Push state to return the head of PtNode array.
+                    pushReadingStateToStack();
+                    alreadyVisitedAllPtNodesInArray = false;
+                    alreadyVisitedChildren = false;
+                } else {
+                    alreadyVisitedChildren = true;
+                }
+            }
+        } else {
+            if (!listener->onVisitingPtNode(&ptNodeParams)) {
+                return false;
+            }
+            readNextSiblingNode(ptNodeParams);
+            if (isEnd()) {
+                if (!listener->onReadingPtNodeArrayTail()) {
+                    return false;
+                }
+                // Return to the head of current PtNode array.
+                popReadingStateFromStack();
+                alreadyVisitedAllPtNodesInArray = true;
+            }
+        }
+    }
+    popReadingStateFromStack();
+    // Ascend from the root PtNode array to the root.
+    if (!listener->onAscend()) {
+        return false;
+    }
+    return !isError();
+}
+
+int DynamicPtReadingHelper::getCodePointsAndProbabilityAndReturnCodePointCount(
+        const int maxCodePointCount, int *const outCodePoints, int *const outUnigramProbability) {
+    // This method traverses parent nodes from the terminal by following parent pointers; thus,
+    // node code points are stored in the buffer in the reverse order.
+    int reverseCodePoints[maxCodePointCount];
+    const PtNodeParams terminalPtNodeParams(getPtNodeParams());
+    // First, read the terminal node and get its probability.
+    if (!isValidTerminalNode(terminalPtNodeParams)) {
+        // Node at the ptNodePos is not a valid terminal node.
+        *outUnigramProbability = NOT_A_PROBABILITY;
+        return 0;
+    }
+    // Store terminal node probability.
+    *outUnigramProbability = terminalPtNodeParams.getProbability();
+    // Then, following parent node link to the dictionary root and fetch node code points.
+    int totalCodePointCount = 0;
+    while (!isEnd()) {
+        const PtNodeParams ptNodeParams(getPtNodeParams());
+        totalCodePointCount = getTotalCodePointCount(ptNodeParams);
+        if (!ptNodeParams.isValid() || totalCodePointCount > maxCodePointCount) {
+            // The ptNodePos is not a valid terminal node position in the dictionary.
+            *outUnigramProbability = NOT_A_PROBABILITY;
+            return 0;
+        }
+        // Store node code points to buffer in the reverse order.
+        fetchMergedNodeCodePointsInReverseOrder(ptNodeParams, getPrevTotalCodePointCount(),
+                reverseCodePoints);
+        // Follow parent node toward the root node.
+        readParentNode(ptNodeParams);
+    }
+    if (isError()) {
+        // The node position or the dictionary is invalid.
+        *outUnigramProbability = NOT_A_PROBABILITY;
+        return 0;
+    }
+    // Reverse the stored code points to output them.
+    for (int i = 0; i < totalCodePointCount; ++i) {
+        outCodePoints[i] = reverseCodePoints[totalCodePointCount - i - 1];
+    }
+    return totalCodePointCount;
+}
+
+int DynamicPtReadingHelper::getTerminalPtNodePositionOfWord(const int *const inWord,
+        const int length, const bool forceLowerCaseSearch) {
+    int searchCodePoints[length];
+    for (int i = 0; i < length; ++i) {
+        searchCodePoints[i] = forceLowerCaseSearch ? CharUtils::toLowerCase(inWord[i]) : inWord[i];
+    }
+    while (!isEnd()) {
+        const PtNodeParams ptNodeParams(getPtNodeParams());
+        const int matchedCodePointCount = getPrevTotalCodePointCount();
+        if (getTotalCodePointCount(ptNodeParams) > length
+                || !isMatchedCodePoint(ptNodeParams, 0 /* index */,
+                        searchCodePoints[matchedCodePointCount])) {
+            // Current node has too many code points or its first code point is different from
+            // target code point. Skip this node and read the next sibling node.
+            readNextSiblingNode(ptNodeParams);
+            continue;
+        }
+        // Check following merged node code points.
+        const int nodeCodePointCount = ptNodeParams.getCodePointCount();
+        for (int j = 1; j < nodeCodePointCount; ++j) {
+            if (!isMatchedCodePoint(ptNodeParams, j, searchCodePoints[matchedCodePointCount + j])) {
+                // Different code point is found. The given word is not included in the dictionary.
+                return NOT_A_DICT_POS;
+            }
+        }
+        // All characters are matched.
+        if (length == getTotalCodePointCount(ptNodeParams)) {
+            if (!ptNodeParams.isTerminal()) {
+                return NOT_A_DICT_POS;
+            }
+            // Terminal position is found.
+            return ptNodeParams.getHeadPos();
+        }
+        if (!ptNodeParams.hasChildren()) {
+            return NOT_A_DICT_POS;
+        }
+        // Advance to the children nodes.
+        readChildNode(ptNodeParams);
+    }
+    // If we already traversed the tree further than the word is long, there means
+    // there was no match (or we would have found it).
+    return NOT_A_DICT_POS;
+}
+
+// Read node array size and process empty node arrays. Nodes and arrays are counted up in this
+// method to avoid an infinite loop.
+void DynamicPtReadingHelper::nextPtNodeArray() {
+    int ptNodeCountInArray = 0;
+    int firstPtNodePos = NOT_A_DICT_POS;
+    if (!mPtNodeArrayReader->readPtNodeArrayInfoAndReturnIfValid(
+            mReadingState.mPos, &ptNodeCountInArray, &firstPtNodePos)) {
+        mIsError = true;
+        mReadingState.mPos = NOT_A_DICT_POS;
+        return;
+    }
+    mReadingState.mPosOfThisPtNodeArrayHead = mReadingState.mPos;
+    mReadingState.mRemainingPtNodeCountInThisArray = ptNodeCountInArray;
+    mReadingState.mPos = firstPtNodePos;
+    // Count up nodes and node arrays to avoid infinite loop.
+    mReadingState.mTotalPtNodeIndexInThisArrayChain +=
+            mReadingState.mRemainingPtNodeCountInThisArray;
+    mReadingState.mPtNodeArrayIndexInThisArrayChain++;
+    if (mReadingState.mRemainingPtNodeCountInThisArray < 0
+            || mReadingState.mTotalPtNodeIndexInThisArrayChain
+                    > MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP
+            || mReadingState.mPtNodeArrayIndexInThisArrayChain
+                    > MAX_PT_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP) {
+        // Invalid dictionary.
+        AKLOGI("Invalid dictionary. nodeCount: %d, totalNodeCount: %d, MAX_CHILD_COUNT: %d"
+                "nodeArrayCount: %d, MAX_NODE_ARRAY_COUNT: %d",
+                mReadingState.mRemainingPtNodeCountInThisArray,
+                mReadingState.mTotalPtNodeIndexInThisArrayChain,
+                MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP,
+                mReadingState.mPtNodeArrayIndexInThisArrayChain,
+                MAX_PT_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP);
+        ASSERT(false);
+        mIsError = true;
+        mReadingState.mPos = NOT_A_DICT_POS;
+        return;
+    }
+    if (mReadingState.mRemainingPtNodeCountInThisArray == 0) {
+        // Empty node array. Try following forward link.
+        followForwardLink();
+    }
+}
+
+// Follow the forward link and read the next node array if exists.
+void DynamicPtReadingHelper::followForwardLink() {
+    int nextPtNodeArrayPos = NOT_A_DICT_POS;
+    if (!mPtNodeArrayReader->readForwardLinkAndReturnIfValid(
+            mReadingState.mPos, &nextPtNodeArrayPos)) {
+        mIsError = true;
+        mReadingState.mPos = NOT_A_DICT_POS;
+        return;
+    }
+    mReadingState.mPosOfLastForwardLinkField = mReadingState.mPos;
+    if (nextPtNodeArrayPos != NOT_A_DICT_POS) {
+        // Follow the forward link.
+        mReadingState.mPos = nextPtNodeArrayPos;
+        nextPtNodeArray();
+    } else {
+        // All node arrays have been read.
+        mReadingState.mPos = NOT_A_DICT_POS;
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h
new file mode 100644
index 0000000..2e05bf3
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DYNAMIC_PT_READING_HELPER_H
+#define LATINIME_DYNAMIC_PT_READING_HELPER_H
+
+#include <cstddef>
+#include <vector>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h"
+
+namespace latinime {
+
+class DictionaryBigramsStructurePolicy;
+class DictionaryShortcutsStructurePolicy;
+class PtNodeArrayReader;
+
+/*
+ * This class is used for traversing dynamic patricia trie. This class supports iterating nodes and
+ * dealing with additional buffer. This class counts nodes and node arrays to avoid infinite loop.
+ */
+class DynamicPtReadingHelper {
+ public:
+    class TraversingEventListener {
+     public:
+        virtual ~TraversingEventListener() {};
+
+        // Returns whether the event handling was succeeded or not.
+        virtual bool onAscend() = 0;
+
+        // Returns whether the event handling was succeeded or not.
+        virtual bool onDescend(const int ptNodeArrayPos) = 0;
+
+        // Returns whether the event handling was succeeded or not.
+        virtual bool onReadingPtNodeArrayTail() = 0;
+
+        // Returns whether the event handling was succeeded or not.
+        virtual bool onVisitingPtNode(const PtNodeParams *const node) = 0;
+
+     protected:
+        TraversingEventListener() {};
+
+     private:
+        DISALLOW_COPY_AND_ASSIGN(TraversingEventListener);
+    };
+
+    class TraversePolicyToGetAllTerminalPtNodePositions : public TraversingEventListener {
+     public:
+        TraversePolicyToGetAllTerminalPtNodePositions(std::vector<int> *const terminalPositions)
+                : mTerminalPositions(terminalPositions) {}
+        bool onAscend() { return true; }
+        bool onDescend(const int ptNodeArrayPos) { return true; }
+        bool onReadingPtNodeArrayTail() { return true; }
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToGetAllTerminalPtNodePositions);
+
+        std::vector<int> *const mTerminalPositions;
+    };
+
+    DynamicPtReadingHelper(const PtNodeReader *const ptNodeReader,
+            const PtNodeArrayReader *const ptNodeArrayReader)
+            : mIsError(false), mReadingState(), mPtNodeReader(ptNodeReader),
+              mPtNodeArrayReader(ptNodeArrayReader), mReadingStateStack() {}
+
+    ~DynamicPtReadingHelper() {}
+
+    AK_FORCE_INLINE bool isError() const {
+        return mIsError;
+    }
+
+    AK_FORCE_INLINE bool isEnd() const {
+        return mReadingState.mPos == NOT_A_DICT_POS;
+    }
+
+    // Initialize reading state with the head position of a PtNode array.
+    AK_FORCE_INLINE void initWithPtNodeArrayPos(const int ptNodeArrayPos) {
+        if (ptNodeArrayPos == NOT_A_DICT_POS) {
+            mReadingState.mPos = NOT_A_DICT_POS;
+        } else {
+            mIsError = false;
+            mReadingState.mPos = ptNodeArrayPos;
+            mReadingState.mTotalCodePointCountSinceInitialization = 0;
+            mReadingState.mTotalPtNodeIndexInThisArrayChain = 0;
+            mReadingState.mPtNodeArrayIndexInThisArrayChain = 0;
+            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
+            mReadingStateStack.clear();
+            nextPtNodeArray();
+        }
+    }
+
+    // Initialize reading state with the head position of a node.
+    AK_FORCE_INLINE void initWithPtNodePos(const int ptNodePos) {
+        if (ptNodePos == NOT_A_DICT_POS) {
+            mReadingState.mPos = NOT_A_DICT_POS;
+        } else {
+            mIsError = false;
+            mReadingState.mPos = ptNodePos;
+            mReadingState.mRemainingPtNodeCountInThisArray = 1;
+            mReadingState.mTotalCodePointCountSinceInitialization = 0;
+            mReadingState.mTotalPtNodeIndexInThisArrayChain = 1;
+            mReadingState.mPtNodeArrayIndexInThisArrayChain = 1;
+            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
+            mReadingState.mPosOfThisPtNodeArrayHead = NOT_A_DICT_POS;
+            mReadingStateStack.clear();
+        }
+    }
+
+    AK_FORCE_INLINE const PtNodeParams getPtNodeParams() const {
+        if (isEnd()) {
+            return PtNodeParams();
+        }
+        return mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(mReadingState.mPos);
+    }
+
+    AK_FORCE_INLINE bool isValidTerminalNode(const PtNodeParams &ptNodeParams) const {
+        return !isEnd() && !ptNodeParams.isDeleted() && ptNodeParams.isTerminal();
+    }
+
+    AK_FORCE_INLINE bool isMatchedCodePoint(const PtNodeParams &ptNodeParams, const int index,
+            const int codePoint) const {
+        return ptNodeParams.getCodePoints()[index] == codePoint;
+    }
+
+    // Return code point count exclude the last read node's code points.
+    AK_FORCE_INLINE int getPrevTotalCodePointCount() const {
+        return mReadingState.mTotalCodePointCountSinceInitialization;
+    }
+
+    // Return code point count include the last read node's code points.
+    AK_FORCE_INLINE int getTotalCodePointCount(const PtNodeParams &ptNodeParams) const {
+        return mReadingState.mTotalCodePointCountSinceInitialization
+                + ptNodeParams.getCodePointCount();
+    }
+
+    AK_FORCE_INLINE void fetchMergedNodeCodePointsInReverseOrder(const PtNodeParams &ptNodeParams,
+            const int index, int *const outCodePoints) const {
+        const int nodeCodePointCount = ptNodeParams.getCodePointCount();
+        const int *const nodeCodePoints = ptNodeParams.getCodePoints();
+        for (int i =  0; i < nodeCodePointCount; ++i) {
+            outCodePoints[index + i] = nodeCodePoints[nodeCodePointCount - 1 - i];
+        }
+    }
+
+    AK_FORCE_INLINE void readNextSiblingNode(const PtNodeParams &ptNodeParams) {
+        mReadingState.mRemainingPtNodeCountInThisArray -= 1;
+        mReadingState.mPos = ptNodeParams.getSiblingNodePos();
+        if (mReadingState.mRemainingPtNodeCountInThisArray <= 0) {
+            // All nodes in the current node array have been read.
+            followForwardLink();
+        }
+    }
+
+    // Read the first child node of the current node.
+    AK_FORCE_INLINE void readChildNode(const PtNodeParams &ptNodeParams) {
+        if (ptNodeParams.hasChildren()) {
+            mReadingState.mTotalCodePointCountSinceInitialization +=
+                    ptNodeParams.getCodePointCount();
+            mReadingState.mTotalPtNodeIndexInThisArrayChain = 0;
+            mReadingState.mPtNodeArrayIndexInThisArrayChain = 0;
+            mReadingState.mPos = ptNodeParams.getChildrenPos();
+            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
+            // Read children node array.
+            nextPtNodeArray();
+        } else {
+            mReadingState.mPos = NOT_A_DICT_POS;
+        }
+    }
+
+    // Read the parent node of the current node.
+    AK_FORCE_INLINE void readParentNode(const PtNodeParams &ptNodeParams) {
+        if (ptNodeParams.getParentPos() != NOT_A_DICT_POS) {
+            mReadingState.mTotalCodePointCountSinceInitialization +=
+                    ptNodeParams.getCodePointCount();
+            mReadingState.mTotalPtNodeIndexInThisArrayChain = 1;
+            mReadingState.mPtNodeArrayIndexInThisArrayChain = 1;
+            mReadingState.mRemainingPtNodeCountInThisArray = 1;
+            mReadingState.mPos = ptNodeParams.getParentPos();
+            mReadingState.mPosOfLastForwardLinkField = NOT_A_DICT_POS;
+            mReadingState.mPosOfThisPtNodeArrayHead = NOT_A_DICT_POS;
+        } else {
+            mReadingState.mPos = NOT_A_DICT_POS;
+        }
+    }
+
+    AK_FORCE_INLINE int getPosOfLastForwardLinkField() const {
+        return mReadingState.mPosOfLastForwardLinkField;
+    }
+
+    AK_FORCE_INLINE int getPosOfLastPtNodeArrayHead() const {
+        return mReadingState.mPosOfThisPtNodeArrayHead;
+    }
+
+    bool traverseAllPtNodesInPostorderDepthFirstManner(TraversingEventListener *const listener);
+
+    bool traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
+            TraversingEventListener *const listener);
+
+    int getCodePointsAndProbabilityAndReturnCodePointCount(const int maxCodePointCount,
+            int *const outCodePoints, int *const outUnigramProbability);
+
+    int getTerminalPtNodePositionOfWord(const int *const inWord, const int length,
+            const bool forceLowerCaseSearch);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(DynamicPtReadingHelper);
+
+    // This class encapsulates the reading state of a position in the dictionary. It points at a
+    // specific PtNode in the dictionary.
+    class PtNodeReadingState {
+     public:
+        // Note that copy constructor and assignment operator are used for this class to use
+        // std::vector.
+        PtNodeReadingState() : mPos(NOT_A_DICT_POS), mRemainingPtNodeCountInThisArray(0),
+                mTotalCodePointCountSinceInitialization(0), mTotalPtNodeIndexInThisArrayChain(0),
+                mPtNodeArrayIndexInThisArrayChain(0), mPosOfLastForwardLinkField(NOT_A_DICT_POS),
+                mPosOfThisPtNodeArrayHead(NOT_A_DICT_POS) {}
+
+        int mPos;
+        // Remaining node count in the current array.
+        int mRemainingPtNodeCountInThisArray;
+        int mTotalCodePointCountSinceInitialization;
+        // Counter of PtNodes used to avoid infinite loops caused by broken or malicious links.
+        int mTotalPtNodeIndexInThisArrayChain;
+        // Counter of PtNode arrays used to avoid infinite loops caused by cyclic links of empty
+        // PtNode arrays.
+        int mPtNodeArrayIndexInThisArrayChain;
+        int mPosOfLastForwardLinkField;
+        int mPosOfThisPtNodeArrayHead;
+    };
+
+    static const int MAX_CHILD_COUNT_TO_AVOID_INFINITE_LOOP;
+    static const int MAX_PT_NODE_ARRAY_COUNT_TO_AVOID_INFINITE_LOOP;
+    static const size_t MAX_READING_STATE_STACK_SIZE;
+
+    // TODO: Introduce error code to track what caused the error.
+    bool mIsError;
+    PtNodeReadingState mReadingState;
+    const PtNodeReader *const mPtNodeReader;
+    const PtNodeArrayReader *const mPtNodeArrayReader;
+    std::vector<PtNodeReadingState> mReadingStateStack;
+
+    void nextPtNodeArray();
+
+    void followForwardLink();
+
+    AK_FORCE_INLINE void pushReadingStateToStack() {
+        if (mReadingStateStack.size() > MAX_READING_STATE_STACK_SIZE) {
+            AKLOGI("Reading state stack overflow. Max size: %zd", MAX_READING_STATE_STACK_SIZE);
+            ASSERT(false);
+            mIsError = true;
+            mReadingState.mPos = NOT_A_DICT_POS;
+        } else {
+            mReadingStateStack.push_back(mReadingState);
+        }
+    }
+
+    AK_FORCE_INLINE void popReadingStateFromStack() {
+        if (mReadingStateStack.empty()) {
+            mReadingState.mPos = NOT_A_DICT_POS;
+        } else {
+            mReadingState = mReadingStateStack.back();
+            mReadingStateStack.pop_back();
+        }
+    }
+};
+} // namespace latinime
+#endif /* LATINIME_DYNAMIC_PT_READING_HELPER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.cpp
new file mode 100644
index 0000000..3586b50
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+
+namespace latinime {
+
+const DynamicPtReadingUtils::NodeFlags DynamicPtReadingUtils::MASK_MOVED = 0xC0;
+const DynamicPtReadingUtils::NodeFlags DynamicPtReadingUtils::FLAG_IS_NOT_MOVED = 0xC0;
+const DynamicPtReadingUtils::NodeFlags DynamicPtReadingUtils::FLAG_IS_MOVED = 0x40;
+const DynamicPtReadingUtils::NodeFlags DynamicPtReadingUtils::FLAG_IS_DELETED = 0x80;
+const DynamicPtReadingUtils::NodeFlags DynamicPtReadingUtils::FLAG_WILL_BECOME_NON_TERMINAL = 0x00;
+
+// TODO: Make DICT_OFFSET_ZERO_OFFSET = 0.
+// Currently, DICT_OFFSET_INVALID is 0 in Java side but offset can be 0 during GC. So, the maximum
+// value of offsets, which is 0x7FFFFF is used to represent 0 offset.
+const int DynamicPtReadingUtils::DICT_OFFSET_INVALID = 0;
+const int DynamicPtReadingUtils::DICT_OFFSET_ZERO_OFFSET = 0x7FFFFF;
+
+/* static */ int DynamicPtReadingUtils::getForwardLinkPosition(const uint8_t *const buffer,
+        const int pos) {
+    int linkAddressPos = pos;
+    return ByteArrayUtils::readSint24AndAdvancePosition(buffer, &linkAddressPos);
+}
+
+/* static */ int DynamicPtReadingUtils::getParentPtNodePosOffsetAndAdvancePosition(
+        const uint8_t *const buffer, int *const pos) {
+    return ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
+}
+
+/* static */ int DynamicPtReadingUtils::getParentPtNodePos(const int parentOffset,
+        const int ptNodePos) {
+    if (parentOffset == DICT_OFFSET_INVALID) {
+        return NOT_A_DICT_POS;
+    } else if (parentOffset == DICT_OFFSET_ZERO_OFFSET) {
+        return ptNodePos;
+    } else {
+        return parentOffset + ptNodePos;
+    }
+}
+
+/* static */ int DynamicPtReadingUtils::readChildrenPositionAndAdvancePosition(
+        const uint8_t *const buffer, int *const pos) {
+    const int base = *pos;
+    const int offset = ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
+    if (offset == DICT_OFFSET_INVALID) {
+        // The PtNode does not have children.
+        return NOT_A_DICT_POS;
+    } else if (offset == DICT_OFFSET_ZERO_OFFSET) {
+        return base;
+    } else {
+        return base + offset;
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h
new file mode 100644
index 0000000..b13a075
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DYNAMIC_PT_READING_UTILS_H
+#define LATINIME_DYNAMIC_PT_READING_UTILS_H
+
+#include <cstdint>
+
+#include "defines.h"
+
+namespace latinime {
+
+class DynamicPtReadingUtils {
+ public:
+    typedef uint8_t NodeFlags;
+
+    static const int DICT_OFFSET_INVALID;
+    static const int DICT_OFFSET_ZERO_OFFSET;
+
+    static int getForwardLinkPosition(const uint8_t *const buffer, const int pos);
+
+    static AK_FORCE_INLINE bool isValidForwardLinkPosition(const int forwardLinkAddress) {
+        return forwardLinkAddress != 0;
+    }
+
+    static int getParentPtNodePosOffsetAndAdvancePosition(const uint8_t *const buffer,
+            int *const pos);
+
+    static int getParentPtNodePos(const int parentOffset, const int ptNodePos);
+
+    static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer, int *const pos);
+
+    /**
+     * Node Flags
+     */
+    static AK_FORCE_INLINE bool isMoved(const NodeFlags flags) {
+        return FLAG_IS_MOVED == (MASK_MOVED & flags);
+    }
+
+    static AK_FORCE_INLINE bool isDeleted(const NodeFlags flags) {
+        return FLAG_IS_DELETED == (MASK_MOVED & flags);
+    }
+
+    static AK_FORCE_INLINE bool willBecomeNonTerminal(const NodeFlags flags) {
+        return FLAG_WILL_BECOME_NON_TERMINAL == (MASK_MOVED & flags);
+    }
+
+    static AK_FORCE_INLINE NodeFlags updateAndGetFlags(const NodeFlags originalFlags,
+            const bool isMoved, const bool isDeleted, const bool willBecomeNonTerminal) {
+        NodeFlags flags = originalFlags;
+        flags = willBecomeNonTerminal ?
+                ((flags & (~MASK_MOVED)) | FLAG_WILL_BECOME_NON_TERMINAL) : flags;
+        flags = isMoved ? ((flags & (~MASK_MOVED)) | FLAG_IS_MOVED) : flags;
+        flags = isDeleted ? ((flags & (~MASK_MOVED)) | FLAG_IS_DELETED) : flags;
+        flags = (!isMoved && !isDeleted && !willBecomeNonTerminal) ?
+                ((flags & (~MASK_MOVED)) | FLAG_IS_NOT_MOVED) : flags;
+        return flags;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPtReadingUtils);
+
+    static const NodeFlags MASK_MOVED;
+    static const NodeFlags FLAG_IS_NOT_MOVED;
+    static const NodeFlags FLAG_IS_MOVED;
+    static const NodeFlags FLAG_IS_DELETED;
+    static const NodeFlags FLAG_WILL_BECOME_NON_TERMINAL;
+};
+} // namespace latinime
+#endif /* LATINIME_DYNAMIC_PT_READING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp
new file mode 100644
index 0000000..f31c914
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.cpp
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h"
+
+#include "suggest/core/dictionary/property/unigram_property.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+const int DynamicPtUpdatingHelper::CHILDREN_POSITION_FIELD_SIZE = 3;
+
+bool DynamicPtUpdatingHelper::addUnigramWord(
+        DynamicPtReadingHelper *const readingHelper,
+        const int *const wordCodePoints, const int codePointCount,
+        const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram) {
+    int parentPos = NOT_A_DICT_POS;
+    while (!readingHelper->isEnd()) {
+        const PtNodeParams ptNodeParams(readingHelper->getPtNodeParams());
+        if (!ptNodeParams.isValid()) {
+            break;
+        }
+        const int matchedCodePointCount = readingHelper->getPrevTotalCodePointCount();
+        if (!readingHelper->isMatchedCodePoint(ptNodeParams, 0 /* index */,
+                wordCodePoints[matchedCodePointCount])) {
+            // The first code point is different from target code point. Skip this node and read
+            // the next sibling node.
+            readingHelper->readNextSiblingNode(ptNodeParams);
+            continue;
+        }
+        // Check following merged node code points.
+        const int nodeCodePointCount = ptNodeParams.getCodePointCount();
+        for (int j = 1; j < nodeCodePointCount; ++j) {
+            const int nextIndex = matchedCodePointCount + j;
+            if (nextIndex >= codePointCount || !readingHelper->isMatchedCodePoint(ptNodeParams, j,
+                    wordCodePoints[matchedCodePointCount + j])) {
+                *outAddedNewUnigram = true;
+                return reallocatePtNodeAndAddNewPtNodes(&ptNodeParams, j, unigramProperty,
+                        wordCodePoints + matchedCodePointCount,
+                        codePointCount - matchedCodePointCount);
+            }
+        }
+        // All characters are matched.
+        if (codePointCount == readingHelper->getTotalCodePointCount(ptNodeParams)) {
+            return setPtNodeProbability(&ptNodeParams, unigramProperty, outAddedNewUnigram);
+        }
+        if (!ptNodeParams.hasChildren()) {
+            *outAddedNewUnigram = true;
+            return createChildrenPtNodeArrayAndAChildPtNode(&ptNodeParams, unigramProperty,
+                    wordCodePoints + readingHelper->getTotalCodePointCount(ptNodeParams),
+                    codePointCount - readingHelper->getTotalCodePointCount(ptNodeParams));
+        }
+        // Advance to the children nodes.
+        parentPos = ptNodeParams.getHeadPos();
+        readingHelper->readChildNode(ptNodeParams);
+    }
+    if (readingHelper->isError()) {
+        // The dictionary is invalid.
+        return false;
+    }
+    int pos = readingHelper->getPosOfLastForwardLinkField();
+    *outAddedNewUnigram = true;
+    return createAndInsertNodeIntoPtNodeArray(parentPos,
+            wordCodePoints + readingHelper->getPrevTotalCodePointCount(),
+            codePointCount - readingHelper->getPrevTotalCodePointCount(),
+            unigramProperty, &pos);
+}
+
+bool DynamicPtUpdatingHelper::addBigramWords(const int word0Pos, const int word1Pos,
+        const BigramProperty *const bigramProperty, bool *const outAddedNewBigram) {
+    const PtNodeParams sourcePtNodeParams(
+            mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(word0Pos));
+    const PtNodeParams targetPtNodeParams(
+            mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(word1Pos));
+    return mPtNodeWriter->addNewBigramEntry(&sourcePtNodeParams, &targetPtNodeParams,
+            bigramProperty, outAddedNewBigram);
+}
+
+// Remove a bigram relation from word0Pos to word1Pos.
+bool DynamicPtUpdatingHelper::removeBigramWords(const int word0Pos, const int word1Pos) {
+    const PtNodeParams sourcePtNodeParams(
+            mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(word0Pos));
+    const PtNodeParams targetPtNodeParams(
+            mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(word1Pos));
+    return mPtNodeWriter->removeBigramEntry(&sourcePtNodeParams, &targetPtNodeParams);
+}
+
+bool DynamicPtUpdatingHelper::addShortcutTarget(const int wordPos,
+        const int *const targetCodePoints, const int targetCodePointCount,
+        const int shortcutProbability) {
+    const PtNodeParams ptNodeParams(mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(wordPos));
+    return mPtNodeWriter->addShortcutTarget(&ptNodeParams, targetCodePoints, targetCodePointCount,
+            shortcutProbability);
+}
+
+bool DynamicPtUpdatingHelper::createAndInsertNodeIntoPtNodeArray(const int parentPos,
+        const int *const nodeCodePoints, const int nodeCodePointCount,
+        const UnigramProperty *const unigramProperty, int *const forwardLinkFieldPos) {
+    const int newPtNodeArrayPos = mBuffer->getTailPosition();
+    if (!DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
+            newPtNodeArrayPos, forwardLinkFieldPos)) {
+        return false;
+    }
+    return createNewPtNodeArrayWithAChildPtNode(parentPos, nodeCodePoints, nodeCodePointCount,
+            unigramProperty);
+}
+
+bool DynamicPtUpdatingHelper::setPtNodeProbability(const PtNodeParams *const originalPtNodeParams,
+        const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram) {
+    if (originalPtNodeParams->isTerminal() && !originalPtNodeParams->isDeleted()) {
+        // Overwrites the probability.
+        *outAddedNewUnigram = false;
+        return mPtNodeWriter->updatePtNodeUnigramProperty(originalPtNodeParams, unigramProperty);
+    } else {
+        // Make the node terminal and write the probability.
+        *outAddedNewUnigram = true;
+        const int movedPos = mBuffer->getTailPosition();
+        int writingPos = movedPos;
+        const PtNodeParams ptNodeParamsToWrite(getUpdatedPtNodeParams(originalPtNodeParams,
+                unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(),
+                true /* isTerminal */, originalPtNodeParams->getParentPos(),
+                originalPtNodeParams->getCodePointCount(), originalPtNodeParams->getCodePoints(),
+                unigramProperty->getProbability()));
+        if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite,
+                unigramProperty, &writingPos)) {
+            return false;
+        }
+        if (!mPtNodeWriter->markPtNodeAsMoved(originalPtNodeParams, movedPos, movedPos)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+bool DynamicPtUpdatingHelper::createChildrenPtNodeArrayAndAChildPtNode(
+        const PtNodeParams *const parentPtNodeParams, const UnigramProperty *const unigramProperty,
+        const int *const codePoints, const int codePointCount) {
+    const int newPtNodeArrayPos = mBuffer->getTailPosition();
+    if (!mPtNodeWriter->updateChildrenPosition(parentPtNodeParams, newPtNodeArrayPos)) {
+        return false;
+    }
+    return createNewPtNodeArrayWithAChildPtNode(parentPtNodeParams->getHeadPos(), codePoints,
+            codePointCount, unigramProperty);
+}
+
+bool DynamicPtUpdatingHelper::createNewPtNodeArrayWithAChildPtNode(
+        const int parentPtNodePos, const int *const nodeCodePoints, const int nodeCodePointCount,
+        const UnigramProperty *const unigramProperty) {
+    int writingPos = mBuffer->getTailPosition();
+    if (!DynamicPtWritingUtils::writePtNodeArraySizeAndAdvancePosition(mBuffer,
+            1 /* arraySize */, &writingPos)) {
+        return false;
+    }
+    const PtNodeParams ptNodeParamsToWrite(getPtNodeParamsForNewPtNode(
+            unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(), true /* isTerminal */,
+            parentPtNodePos, nodeCodePointCount, nodeCodePoints,
+            unigramProperty->getProbability()));
+    if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite,
+            unigramProperty, &writingPos)) {
+        return false;
+    }
+    if (!DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
+            NOT_A_DICT_POS /* forwardLinkPos */, &writingPos)) {
+        return false;
+    }
+    return true;
+}
+
+// Returns whether the dictionary updating was succeeded or not.
+bool DynamicPtUpdatingHelper::reallocatePtNodeAndAddNewPtNodes(
+        const PtNodeParams *const reallocatingPtNodeParams, const int overlappingCodePointCount,
+        const UnigramProperty *const unigramProperty, const int *const newNodeCodePoints,
+        const int newNodeCodePointCount) {
+    // When addsExtraChild is true, split the reallocating PtNode and add new child.
+    // Reallocating PtNode: abcde, newNode: abcxy.
+    // abc (1st, not terminal) __ de (2nd)
+    //                         \_ xy (extra child, terminal)
+    // Otherwise, this method makes 1st part terminal and write information in unigramProperty.
+    // Reallocating PtNode: abcde, newNode: abc.
+    // abc (1st, terminal) __ de (2nd)
+    const bool addsExtraChild = newNodeCodePointCount > overlappingCodePointCount;
+    const int firstPartOfReallocatedPtNodePos = mBuffer->getTailPosition();
+    int writingPos = firstPartOfReallocatedPtNodePos;
+    // Write the 1st part of the reallocating node. The children position will be updated later
+    // with actual children position.
+    if (addsExtraChild) {
+        const PtNodeParams ptNodeParamsToWrite(getPtNodeParamsForNewPtNode(
+                false /* isNotAWord */, false /* isBlacklisted */, false /* isTerminal */,
+                reallocatingPtNodeParams->getParentPos(), overlappingCodePointCount,
+                reallocatingPtNodeParams->getCodePoints(), NOT_A_PROBABILITY));
+        if (!mPtNodeWriter->writePtNodeAndAdvancePosition(&ptNodeParamsToWrite, &writingPos)) {
+            return false;
+        }
+    } else {
+        const PtNodeParams ptNodeParamsToWrite(getPtNodeParamsForNewPtNode(
+                unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(),
+                true /* isTerminal */, reallocatingPtNodeParams->getParentPos(),
+                overlappingCodePointCount, reallocatingPtNodeParams->getCodePoints(),
+                unigramProperty->getProbability()));
+        if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&ptNodeParamsToWrite,
+                unigramProperty, &writingPos)) {
+            return false;
+        }
+    }
+    const int actualChildrenPos = writingPos;
+    // Create new children PtNode array.
+    const size_t newPtNodeCount = addsExtraChild ? 2 : 1;
+    if (!DynamicPtWritingUtils::writePtNodeArraySizeAndAdvancePosition(mBuffer,
+            newPtNodeCount, &writingPos)) {
+        return false;
+    }
+    // Write the 2nd part of the reallocating node.
+    const int secondPartOfReallocatedPtNodePos = writingPos;
+    const PtNodeParams childPartPtNodeParams(getUpdatedPtNodeParams(reallocatingPtNodeParams,
+            reallocatingPtNodeParams->isNotAWord(), reallocatingPtNodeParams->isBlacklisted(),
+            reallocatingPtNodeParams->isTerminal(), firstPartOfReallocatedPtNodePos,
+            reallocatingPtNodeParams->getCodePointCount() - overlappingCodePointCount,
+            reallocatingPtNodeParams->getCodePoints() + overlappingCodePointCount,
+            reallocatingPtNodeParams->getProbability()));
+    if (!mPtNodeWriter->writePtNodeAndAdvancePosition(&childPartPtNodeParams, &writingPos)) {
+        return false;
+    }
+    if (addsExtraChild) {
+        const PtNodeParams extraChildPtNodeParams(getPtNodeParamsForNewPtNode(
+                unigramProperty->isNotAWord(), unigramProperty->isBlacklisted(),
+                true /* isTerminal */, firstPartOfReallocatedPtNodePos,
+                newNodeCodePointCount - overlappingCodePointCount,
+                newNodeCodePoints + overlappingCodePointCount, unigramProperty->getProbability()));
+        if (!mPtNodeWriter->writeNewTerminalPtNodeAndAdvancePosition(&extraChildPtNodeParams,
+                unigramProperty, &writingPos)) {
+            return false;
+        }
+    }
+    if (!DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(mBuffer,
+            NOT_A_DICT_POS /* forwardLinkPos */, &writingPos)) {
+        return false;
+    }
+    // Update original reallocating PtNode as moved.
+    if (!mPtNodeWriter->markPtNodeAsMoved(reallocatingPtNodeParams, firstPartOfReallocatedPtNodePos,
+            secondPartOfReallocatedPtNodePos)) {
+        return false;
+    }
+    // Load node info. Information of the 1st part will be fetched.
+    const PtNodeParams ptNodeParams(
+            mPtNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(firstPartOfReallocatedPtNodePos));
+    // Update children position.
+    return mPtNodeWriter->updateChildrenPosition(&ptNodeParams, actualChildrenPos);
+}
+
+const PtNodeParams DynamicPtUpdatingHelper::getUpdatedPtNodeParams(
+        const PtNodeParams *const originalPtNodeParams,
+        const bool isNotAWord, const bool isBlacklisted, const bool isTerminal, const int parentPos,
+        const int codePointCount, const int *const codePoints, const int probability) const {
+    const PatriciaTrieReadingUtils::NodeFlags flags = PatriciaTrieReadingUtils::createAndGetFlags(
+            isBlacklisted, isNotAWord, isTerminal, false /* hasShortcutTargets */,
+            false /* hasBigrams */, codePointCount > 1 /* hasMultipleChars */,
+            CHILDREN_POSITION_FIELD_SIZE);
+    return PtNodeParams(originalPtNodeParams, flags, parentPos, codePointCount, codePoints,
+            probability);
+}
+
+const PtNodeParams DynamicPtUpdatingHelper::getPtNodeParamsForNewPtNode(
+        const bool isNotAWord, const bool isBlacklisted, const bool isTerminal,
+        const int parentPos, const int codePointCount, const int *const codePoints,
+        const int probability) const {
+    const PatriciaTrieReadingUtils::NodeFlags flags = PatriciaTrieReadingUtils::createAndGetFlags(
+            isBlacklisted, isNotAWord, isTerminal, false /* hasShortcutTargets */,
+            false /* hasBigrams */, codePointCount > 1 /* hasMultipleChars */,
+            CHILDREN_POSITION_FIELD_SIZE);
+    return PtNodeParams(flags, parentPos, codePointCount, codePoints, probability);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
new file mode 100644
index 0000000..f10d15a
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DYNAMIC_PT_UPDATING_HELPER_H
+#define LATINIME_DYNAMIC_PT_UPDATING_HELPER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+
+namespace latinime {
+
+class BigramProperty;
+class BufferWithExtendableBuffer;
+class DynamicPtReadingHelper;
+class PtNodeReader;
+class PtNodeWriter;
+class UnigramProperty;
+
+class DynamicPtUpdatingHelper {
+ public:
+    DynamicPtUpdatingHelper(BufferWithExtendableBuffer *const buffer,
+            const PtNodeReader *const ptNodeReader, PtNodeWriter *const ptNodeWriter)
+            : mBuffer(buffer), mPtNodeReader(ptNodeReader), mPtNodeWriter(ptNodeWriter) {}
+
+    ~DynamicPtUpdatingHelper() {}
+
+    // Add a word to the dictionary. If the word already exists, update the probability.
+    bool addUnigramWord(DynamicPtReadingHelper *const readingHelper,
+            const int *const wordCodePoints, const int codePointCount,
+            const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram);
+
+    // Add a bigram relation from word0Pos to word1Pos.
+    bool addBigramWords(const int word0Pos, const int word1Pos,
+            const BigramProperty *const bigramProperty, bool *const outAddedNewBigram);
+
+    // Remove a bigram relation from word0Pos to word1Pos.
+    bool removeBigramWords(const int word0Pos, const int word1Pos);
+
+    // Add a shortcut target.
+    bool addShortcutTarget(const int wordPos, const int *const targetCodePoints,
+            const int targetCodePointCount, const int shortcutProbability);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPtUpdatingHelper);
+
+    static const int CHILDREN_POSITION_FIELD_SIZE;
+
+    BufferWithExtendableBuffer *const mBuffer;
+    const PtNodeReader *const mPtNodeReader;
+    PtNodeWriter *const mPtNodeWriter;
+
+    bool createAndInsertNodeIntoPtNodeArray(const int parentPos, const int *const nodeCodePoints,
+            const int nodeCodePointCount, const UnigramProperty *const unigramProperty,
+            int *const forwardLinkFieldPos);
+
+    bool setPtNodeProbability(const PtNodeParams *const originalPtNodeParams,
+            const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram);
+
+    bool createChildrenPtNodeArrayAndAChildPtNode(const PtNodeParams *const parentPtNodeParams,
+            const UnigramProperty *const unigramProperty, const int *const codePoints,
+            const int codePointCount);
+
+    bool createNewPtNodeArrayWithAChildPtNode(const int parentPos, const int *const nodeCodePoints,
+            const int nodeCodePointCount, const UnigramProperty *const unigramProperty);
+
+    bool reallocatePtNodeAndAddNewPtNodes(
+            const PtNodeParams *const reallocatingPtNodeParams, const int overlappingCodePointCount,
+            const UnigramProperty *const unigramProperty, const int *const newNodeCodePoints,
+            const int newNodeCodePointCount);
+
+    const PtNodeParams getUpdatedPtNodeParams(const PtNodeParams *const originalPtNodeParams,
+            const bool isNotAWord, const bool isBlacklisted, const bool isTerminal,
+            const int parentPos, const int codePointCount,
+            const int *const codePoints, const int probability) const;
+
+    const PtNodeParams getPtNodeParamsForNewPtNode(const bool isNotAWord, const bool isBlacklisted,
+            const bool isTerminal, const int parentPos,
+            const int codePointCount, const int *const codePoints, const int probability) const;
+};
+} // namespace latinime
+#endif /* LATINIME_DYNAMIC_PATRICIA_TRIE_UPDATING_HELPER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.cpp
new file mode 100644
index 0000000..664aeeb
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.cpp
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+
+#include <cstddef>
+#include <cstdint>
+#include <cstdlib>
+
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+const size_t DynamicPtWritingUtils::MAX_PTNODE_ARRAY_SIZE_TO_USE_SMALL_SIZE_FIELD = 0x7F;
+const size_t DynamicPtWritingUtils::MAX_PTNODE_ARRAY_SIZE = 0x7FFF;
+const int DynamicPtWritingUtils::SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE = 1;
+const int DynamicPtWritingUtils::LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE = 2;
+const int DynamicPtWritingUtils::LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG = 0x8000;
+const int DynamicPtWritingUtils::DICT_OFFSET_FIELD_SIZE = 3;
+const int DynamicPtWritingUtils::MAX_DICT_OFFSET_VALUE = 0x7FFFFF;
+const int DynamicPtWritingUtils::MIN_DICT_OFFSET_VALUE = -0x7FFFFF;
+const int DynamicPtWritingUtils::DICT_OFFSET_NEGATIVE_FLAG = 0x800000;
+const int DynamicPtWritingUtils::NODE_FLAG_FIELD_SIZE = 1;
+
+/* static */ bool DynamicPtWritingUtils::writeEmptyDictionary(
+        BufferWithExtendableBuffer *const buffer, const int rootPos) {
+    int writingPos = rootPos;
+    if (!writePtNodeArraySizeAndAdvancePosition(buffer, 0 /* arraySize */, &writingPos)) {
+        return false;
+    }
+    return writeForwardLinkPositionAndAdvancePosition(buffer, NOT_A_DICT_POS /* forwardLinkPos */,
+            &writingPos);
+}
+
+/* static */ bool DynamicPtWritingUtils::writeForwardLinkPositionAndAdvancePosition(
+        BufferWithExtendableBuffer *const buffer, const int forwardLinkPos,
+        int *const forwardLinkFieldPos) {
+    return writeDictOffset(buffer, forwardLinkPos, (*forwardLinkFieldPos), forwardLinkFieldPos);
+}
+
+/* static */ bool DynamicPtWritingUtils::writePtNodeArraySizeAndAdvancePosition(
+        BufferWithExtendableBuffer *const buffer, const size_t arraySize,
+        int *const arraySizeFieldPos) {
+    // Currently, all array size field to be created has LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE to
+    // simplify updating process.
+    // TODO: Use SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE for small arrays.
+    /*if (arraySize <= MAX_PTNODE_ARRAY_SIZE_TO_USE_SMALL_SIZE_FIELD) {
+        return buffer->writeUintAndAdvancePosition(arraySize, SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE,
+                arraySizeFieldPos);
+    } else */
+    if (arraySize <= MAX_PTNODE_ARRAY_SIZE) {
+        uint32_t data = arraySize | LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG;
+        return buffer->writeUintAndAdvancePosition(data, LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE,
+                arraySizeFieldPos);
+    } else {
+        AKLOGI("PtNode array size cannot be written because arraySize is too large: %zd",
+                arraySize);
+        ASSERT(false);
+        return false;
+    }
+}
+
+/* static */ bool DynamicPtWritingUtils::writeFlagsAndAdvancePosition(
+        BufferWithExtendableBuffer *const buffer,
+        const DynamicPtReadingUtils::NodeFlags nodeFlags, int *const nodeFlagsFieldPos) {
+    return buffer->writeUintAndAdvancePosition(nodeFlags, NODE_FLAG_FIELD_SIZE, nodeFlagsFieldPos);
+}
+
+// Note that parentOffset is offset from node's head position.
+/* static */ bool DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(
+        BufferWithExtendableBuffer *const buffer, const int parentPos, const int basePos,
+        int *const parentPosFieldPos) {
+    return writeDictOffset(buffer, parentPos, basePos, parentPosFieldPos);
+}
+
+/* static */ bool DynamicPtWritingUtils::writeCodePointsAndAdvancePosition(
+        BufferWithExtendableBuffer *const buffer, const int *const codePoints,
+        const int codePointCount, int *const codePointFieldPos) {
+    if (codePointCount <= 0) {
+        AKLOGI("code points cannot be written because codePointCount is invalid: %d",
+                codePointCount);
+        ASSERT(false);
+        return false;
+    }
+    const bool hasMultipleCodePoints = codePointCount > 1;
+    return buffer->writeCodePointsAndAdvancePosition(codePoints, codePointCount,
+            hasMultipleCodePoints, codePointFieldPos);
+}
+
+/* static */ bool DynamicPtWritingUtils::writeChildrenPositionAndAdvancePosition(
+        BufferWithExtendableBuffer *const buffer, const int childrenPosition,
+        int *const childrenPositionFieldPos) {
+    return writeDictOffset(buffer, childrenPosition, (*childrenPositionFieldPos),
+            childrenPositionFieldPos);
+}
+
+/* static */ bool DynamicPtWritingUtils::writeDictOffset(BufferWithExtendableBuffer *const buffer,
+        const int targetPos, const int basePos, int *const offsetFieldPos) {
+    int offset = targetPos - basePos;
+    if (targetPos == NOT_A_DICT_POS) {
+        offset = DynamicPtReadingUtils::DICT_OFFSET_INVALID;
+    } else if (offset == 0) {
+        offset = DynamicPtReadingUtils::DICT_OFFSET_ZERO_OFFSET;
+    }
+    if (offset > MAX_DICT_OFFSET_VALUE || offset < MIN_DICT_OFFSET_VALUE) {
+        AKLOGI("offset cannot be written because the offset is too large or too small: %d",
+                offset);
+        ASSERT(false);
+        return false;
+    }
+    uint32_t data = 0;
+    if (offset >= 0) {
+        data = offset;
+    } else {
+        data = abs(offset) | DICT_OFFSET_NEGATIVE_FLAG;
+    }
+    return buffer->writeUintAndAdvancePosition(data, DICT_OFFSET_FIELD_SIZE, offsetFieldPos);
+}
+}
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h
new file mode 100644
index 0000000..362fbd1
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DYNAMIC_PT_WRITING_UTILS_H
+#define LATINIME_DYNAMIC_PT_WRITING_UTILS_H
+
+#include <cstddef>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+
+namespace latinime {
+
+class BufferWithExtendableBuffer;
+
+class DynamicPtWritingUtils {
+ public:
+    static const int NODE_FLAG_FIELD_SIZE;
+
+    static bool writeEmptyDictionary(BufferWithExtendableBuffer *const buffer, const int rootPos);
+
+    static bool writeForwardLinkPositionAndAdvancePosition(
+            BufferWithExtendableBuffer *const buffer, const int forwardLinkPos,
+            int *const forwardLinkFieldPos);
+
+    static bool writePtNodeArraySizeAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
+            const size_t arraySize, int *const arraySizeFieldPos);
+
+    static bool writeFlags(BufferWithExtendableBuffer *const buffer,
+            const DynamicPtReadingUtils::NodeFlags nodeFlags,
+            const int nodeFlagsFieldPos) {
+        int writingPos = nodeFlagsFieldPos;
+        return writeFlagsAndAdvancePosition(buffer, nodeFlags, &writingPos);
+    }
+
+    static bool writeFlagsAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
+            const DynamicPtReadingUtils::NodeFlags nodeFlags,
+            int *const nodeFlagsFieldPos);
+
+    static bool writeParentPosOffsetAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
+            const int parentPosition, const int basePos, int *const parentPosFieldPos);
+
+    static bool writeCodePointsAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
+            const int *const codePoints, const int codePointCount, int *const codePointFieldPos);
+
+    static bool writeChildrenPositionAndAdvancePosition(BufferWithExtendableBuffer *const buffer,
+            const int childrenPosition, int *const childrenPositionFieldPos);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(DynamicPtWritingUtils);
+
+    static const size_t MAX_PTNODE_ARRAY_SIZE_TO_USE_SMALL_SIZE_FIELD;
+    static const size_t MAX_PTNODE_ARRAY_SIZE;
+    static const int SMALL_PTNODE_ARRAY_SIZE_FIELD_SIZE;
+    static const int LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE;
+    static const int LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG;
+    static const int DICT_OFFSET_FIELD_SIZE;
+    static const int MAX_DICT_OFFSET_VALUE;
+    static const int MIN_DICT_OFFSET_VALUE;
+    static const int DICT_OFFSET_NEGATIVE_FLAG;
+
+    static bool writeDictOffset(BufferWithExtendableBuffer *const buffer, const int targetPos,
+            const int basePos, int *const offsetFieldPos);
+};
+} // namespace latinime
+#endif /* LATINIME_DYNAMIC_PT_WRITING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.cpp
new file mode 100644
index 0000000..e64a13c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.cpp
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
+#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+
+namespace latinime {
+
+typedef PatriciaTrieReadingUtils PtReadingUtils;
+
+const PtReadingUtils::NodeFlags PtReadingUtils::MASK_CHILDREN_POSITION_TYPE = 0xC0;
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_NOPOSITION = 0x00;
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_ONEBYTE = 0x40;
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_TWOBYTES = 0x80;
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_CHILDREN_POSITION_TYPE_THREEBYTES = 0xC0;
+
+// Flag for single/multiple char group
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_HAS_MULTIPLE_CHARS = 0x20;
+// Flag for terminal PtNodes
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_TERMINAL = 0x10;
+// Flag for shortcut targets presence
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_HAS_SHORTCUT_TARGETS = 0x08;
+// Flag for bigram presence
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_HAS_BIGRAMS = 0x04;
+// Flag for non-words (typically, shortcut only entries)
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_NOT_A_WORD = 0x02;
+// Flag for blacklist
+const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_BLACKLISTED = 0x01;
+
+/* static */ int PtReadingUtils::getPtNodeArraySizeAndAdvancePosition(
+        const uint8_t *const buffer, int *const pos) {
+    const uint8_t firstByte = ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
+    if (firstByte < 0x80) {
+        return firstByte;
+    } else {
+        return ((firstByte & 0x7F) << 8) ^ ByteArrayUtils::readUint8AndAdvancePosition(
+                buffer, pos);
+    }
+}
+
+/* static */ PtReadingUtils::NodeFlags PtReadingUtils::getFlagsAndAdvancePosition(
+        const uint8_t *const buffer, int *const pos) {
+    return ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
+}
+
+/* static */ int PtReadingUtils::getCodePointAndAdvancePosition(const uint8_t *const buffer,
+        int *const pos) {
+    return ByteArrayUtils::readCodePointAndAdvancePosition(buffer, pos);
+}
+
+// Returns the number of read characters.
+/* static */ int PtReadingUtils::getCharsAndAdvancePosition(const uint8_t *const buffer,
+        const NodeFlags flags, const int maxLength, int *const outBuffer, int *const pos) {
+    int length = 0;
+    if (hasMultipleChars(flags)) {
+        length = ByteArrayUtils::readStringAndAdvancePosition(buffer, maxLength, outBuffer,
+                pos);
+    } else {
+        const int codePoint = getCodePointAndAdvancePosition(buffer, pos);
+        if (codePoint == NOT_A_CODE_POINT) {
+            // CAVEAT: codePoint == NOT_A_CODE_POINT means the code point is
+            // CHARACTER_ARRAY_TERMINATOR. The code point must not be CHARACTER_ARRAY_TERMINATOR
+            // when the PtNode has a single code point.
+            length = 0;
+            AKLOGE("codePoint is NOT_A_CODE_POINT. pos: %d, codePoint: 0x%x, buffer[pos - 1]: 0x%x",
+                    *pos - 1, codePoint, buffer[*pos - 1]);
+            ASSERT(false);
+        } else if (maxLength > 0) {
+            outBuffer[0] = codePoint;
+            length = 1;
+        }
+    }
+    return length;
+}
+
+// Returns the number of skipped characters.
+/* static */ int PtReadingUtils::skipCharacters(const uint8_t *const buffer, const NodeFlags flags,
+        const int maxLength, int *const pos) {
+    if (hasMultipleChars(flags)) {
+        return ByteArrayUtils::advancePositionToBehindString(buffer, maxLength, pos);
+    } else {
+        if (maxLength > 0) {
+            getCodePointAndAdvancePosition(buffer, pos);
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+}
+
+/* static */ int PtReadingUtils::readProbabilityAndAdvancePosition(const uint8_t *const buffer,
+        int *const pos) {
+    return ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
+}
+
+/* static */ int PtReadingUtils::readChildrenPositionAndAdvancePosition(
+        const uint8_t *const buffer, const NodeFlags flags, int *const pos) {
+    const int base = *pos;
+    int offset = 0;
+    switch (MASK_CHILDREN_POSITION_TYPE & flags) {
+        case FLAG_CHILDREN_POSITION_TYPE_ONEBYTE:
+            offset = ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
+            break;
+        case FLAG_CHILDREN_POSITION_TYPE_TWOBYTES:
+            offset = ByteArrayUtils::readUint16AndAdvancePosition(buffer, pos);
+            break;
+        case FLAG_CHILDREN_POSITION_TYPE_THREEBYTES:
+            offset = ByteArrayUtils::readUint24AndAdvancePosition(buffer, pos);
+            break;
+        default:
+            // If we come here, it means we asked for the children of a word with
+            // no children.
+            return NOT_A_DICT_POS;
+    }
+    return base + offset;
+}
+
+/* static */ void PtReadingUtils::readPtNodeInfo(const uint8_t *const dictBuf, const int ptNodePos,
+        const DictionaryShortcutsStructurePolicy *const shortcutPolicy,
+        const DictionaryBigramsStructurePolicy *const bigramPolicy,
+        NodeFlags *const outFlags, int *const outCodePointCount, int *const outCodePoint,
+        int *const outProbability, int *const outChildrenPos, int *const outShortcutPos,
+        int *const outBigramPos, int *const outSiblingPos) {
+    int readingPos = ptNodePos;
+    const NodeFlags flags = getFlagsAndAdvancePosition(dictBuf, &readingPos);
+    *outFlags = flags;
+    *outCodePointCount = getCharsAndAdvancePosition(
+            dictBuf, flags, MAX_WORD_LENGTH, outCodePoint, &readingPos);
+    *outProbability = isTerminal(flags) ?
+            readProbabilityAndAdvancePosition(dictBuf, &readingPos) : NOT_A_PROBABILITY;
+    *outChildrenPos = hasChildrenInFlags(flags) ?
+            readChildrenPositionAndAdvancePosition(dictBuf, flags, &readingPos) : NOT_A_DICT_POS;
+    *outShortcutPos = NOT_A_DICT_POS;
+    if (hasShortcutTargets(flags)) {
+        *outShortcutPos = readingPos;
+        shortcutPolicy->skipAllShortcuts(&readingPos);
+    }
+    *outBigramPos = NOT_A_DICT_POS;
+    if (hasBigrams(flags)) {
+        *outBigramPos = readingPos;
+        bigramPolicy->skipAllBigrams(&readingPos);
+    }
+    *outSiblingPos = readingPos;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h
new file mode 100644
index 0000000..c3f09c3
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PATRICIA_TRIE_READING_UTILS_H
+#define LATINIME_PATRICIA_TRIE_READING_UTILS_H
+
+#include <cstdint>
+
+#include "defines.h"
+
+namespace latinime {
+
+class DictionaryShortcutsStructurePolicy;
+class DictionaryBigramsStructurePolicy;
+
+class PatriciaTrieReadingUtils {
+ public:
+    typedef uint8_t NodeFlags;
+
+    static int getPtNodeArraySizeAndAdvancePosition(const uint8_t *const buffer, int *const pos);
+
+    static NodeFlags getFlagsAndAdvancePosition(const uint8_t *const buffer, int *const pos);
+
+    static int getCodePointAndAdvancePosition(const uint8_t *const buffer, int *const pos);
+
+    // Returns the number of read characters.
+    static int getCharsAndAdvancePosition(const uint8_t *const buffer, const NodeFlags flags,
+            const int maxLength, int *const outBuffer, int *const pos);
+
+    // Returns the number of skipped characters.
+    static int skipCharacters(const uint8_t *const buffer, const NodeFlags flags,
+            const int maxLength, int *const pos);
+
+    static int readProbabilityAndAdvancePosition(const uint8_t *const buffer, int *const pos);
+
+    static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer,
+            const NodeFlags flags, int *const pos);
+
+    /**
+     * Node Flags
+     */
+    static AK_FORCE_INLINE bool isBlacklisted(const NodeFlags flags) {
+        return (flags & FLAG_IS_BLACKLISTED) != 0;
+    }
+
+    static AK_FORCE_INLINE bool isNotAWord(const NodeFlags flags) {
+        return (flags & FLAG_IS_NOT_A_WORD) != 0;
+    }
+
+    static AK_FORCE_INLINE bool isTerminal(const NodeFlags flags) {
+        return (flags & FLAG_IS_TERMINAL) != 0;
+    }
+
+    static AK_FORCE_INLINE bool hasShortcutTargets(const NodeFlags flags) {
+        return (flags & FLAG_HAS_SHORTCUT_TARGETS) != 0;
+    }
+
+    static AK_FORCE_INLINE bool hasBigrams(const NodeFlags flags) {
+        return (flags & FLAG_HAS_BIGRAMS) != 0;
+    }
+
+    static AK_FORCE_INLINE bool hasMultipleChars(const NodeFlags flags) {
+        return (flags & FLAG_HAS_MULTIPLE_CHARS) != 0;
+    }
+
+    static AK_FORCE_INLINE bool hasChildrenInFlags(const NodeFlags flags) {
+        return FLAG_CHILDREN_POSITION_TYPE_NOPOSITION != (MASK_CHILDREN_POSITION_TYPE & flags);
+    }
+
+    static AK_FORCE_INLINE NodeFlags createAndGetFlags(const bool isBlacklisted,
+            const bool isNotAWord, const bool isTerminal, const bool hasShortcutTargets,
+            const bool hasBigrams, const bool hasMultipleChars,
+            const int childrenPositionFieldSize) {
+        NodeFlags nodeFlags = 0;
+        nodeFlags = isBlacklisted ? (nodeFlags | FLAG_IS_BLACKLISTED) : nodeFlags;
+        nodeFlags = isNotAWord ? (nodeFlags | FLAG_IS_NOT_A_WORD) : nodeFlags;
+        nodeFlags = isTerminal ? (nodeFlags | FLAG_IS_TERMINAL) : nodeFlags;
+        nodeFlags = hasShortcutTargets ? (nodeFlags | FLAG_HAS_SHORTCUT_TARGETS) : nodeFlags;
+        nodeFlags = hasBigrams ? (nodeFlags | FLAG_HAS_BIGRAMS) : nodeFlags;
+        nodeFlags = hasMultipleChars ? (nodeFlags | FLAG_HAS_MULTIPLE_CHARS) : nodeFlags;
+        if (childrenPositionFieldSize == 1) {
+            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_ONEBYTE;
+        } else if (childrenPositionFieldSize == 2) {
+            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_TWOBYTES;
+        } else if (childrenPositionFieldSize == 3) {
+            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_THREEBYTES;
+        } else {
+            nodeFlags |= FLAG_CHILDREN_POSITION_TYPE_NOPOSITION;
+        }
+        return nodeFlags;
+    }
+
+    static void readPtNodeInfo(const uint8_t *const dictBuf, const int ptNodePos,
+            const DictionaryShortcutsStructurePolicy *const shortcutPolicy,
+            const DictionaryBigramsStructurePolicy *const bigramPolicy,
+            NodeFlags *const outFlags, int *const outCodePointCount, int *const outCodePoint,
+            int *const outProbability, int *const outChildrenPos, int *const outShortcutPos,
+            int *const outBigramPos, int *const outSiblingPos);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(PatriciaTrieReadingUtils);
+
+    static const NodeFlags MASK_CHILDREN_POSITION_TYPE;
+    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_NOPOSITION;
+    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_ONEBYTE;
+    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_TWOBYTES;
+    static const NodeFlags FLAG_CHILDREN_POSITION_TYPE_THREEBYTES;
+
+    static const NodeFlags FLAG_HAS_MULTIPLE_CHARS;
+    static const NodeFlags FLAG_IS_TERMINAL;
+    static const NodeFlags FLAG_HAS_SHORTCUT_TARGETS;
+    static const NodeFlags FLAG_HAS_BIGRAMS;
+    static const NodeFlags FLAG_IS_NOT_A_WORD;
+    static const NodeFlags FLAG_IS_BLACKLISTED;
+};
+} // namespace latinime
+#endif /* LATINIME_PATRICIA_TRIE_NODE_READING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h
new file mode 100644
index 0000000..6078d82
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PT_NODE_ARRAY_READER_H
+#define LATINIME_PT_NODE_ARRAY_READER_H
+
+#include "defines.h"
+
+namespace latinime {
+
+// Interface class used to read PtNode array information.
+class PtNodeArrayReader {
+ public:
+    virtual ~PtNodeArrayReader() {}
+
+    // Returns if the position is valid or not.
+    virtual bool readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+            int *const outPtNodeCount, int *const outFirstPtNodePos) const = 0;
+
+    // Returns if the position is valid or not. NOT_A_DICT_POS is set to outNextPtNodeArrayPos when
+    // the next array doesn't exist.
+    virtual bool readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+            int *const outNextPtNodeArrayPos) const = 0;
+
+ protected:
+    PtNodeArrayReader() {};
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(PtNodeArrayReader);
+};
+} // namespace latinime
+#endif /* LATINIME_PT_NODE_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h
new file mode 100644
index 0000000..b2e60a8
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PT_NODE_PARAMS_H
+#define LATINIME_PT_NODE_PARAMS_H
+
+#include <cstring>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "utils/char_utils.h"
+
+namespace latinime {
+
+// This class has information of a PtNode. This class is immutable.
+class PtNodeParams {
+ public:
+    // Invalid PtNode.
+    PtNodeParams() : mHeadPos(NOT_A_DICT_POS), mFlags(0), mHasMovedFlag(false),
+            mParentPos(NOT_A_DICT_POS), mCodePointCount(0), mCodePoints(),
+            mTerminalIdFieldPos(NOT_A_DICT_POS), mTerminalId(Ver4DictConstants::NOT_A_TERMINAL_ID),
+            mProbabilityFieldPos(NOT_A_DICT_POS), mProbability(NOT_A_PROBABILITY),
+            mChildrenPosFieldPos(NOT_A_DICT_POS), mChildrenPos(NOT_A_DICT_POS),
+            mBigramLinkedNodePos(NOT_A_DICT_POS), mShortcutPos(NOT_A_DICT_POS),
+            mBigramPos(NOT_A_DICT_POS), mSiblingPos(NOT_A_DICT_POS) {}
+
+    PtNodeParams(const PtNodeParams& ptNodeParams)
+            : mHeadPos(ptNodeParams.mHeadPos), mFlags(ptNodeParams.mFlags),
+              mHasMovedFlag(ptNodeParams.mHasMovedFlag), mParentPos(ptNodeParams.mParentPos),
+              mCodePointCount(ptNodeParams.mCodePointCount), mCodePoints(),
+              mTerminalIdFieldPos(ptNodeParams.mTerminalIdFieldPos),
+              mTerminalId(ptNodeParams.mTerminalId),
+              mProbabilityFieldPos(ptNodeParams.mProbabilityFieldPos),
+              mProbability(ptNodeParams.mProbability),
+              mChildrenPosFieldPos(ptNodeParams.mChildrenPosFieldPos),
+              mChildrenPos(ptNodeParams.mChildrenPos),
+              mBigramLinkedNodePos(ptNodeParams.mBigramLinkedNodePos),
+              mShortcutPos(ptNodeParams.mShortcutPos), mBigramPos(ptNodeParams.mBigramPos),
+              mSiblingPos(ptNodeParams.mSiblingPos) {
+        memcpy(mCodePoints, ptNodeParams.getCodePoints(), sizeof(int) * mCodePointCount);
+    }
+
+    // PtNode read from version 2 dictionary.
+    PtNodeParams(const int headPos, const PatriciaTrieReadingUtils::NodeFlags flags,
+            const int codePointCount, const int *const codePoints, const int probability,
+            const int childrenPos, const int shortcutPos, const int bigramPos,
+            const int siblingPos)
+            : mHeadPos(headPos), mFlags(flags), mHasMovedFlag(false), mParentPos(NOT_A_DICT_POS),
+              mCodePointCount(codePointCount), mCodePoints(), mTerminalIdFieldPos(NOT_A_DICT_POS),
+              mTerminalId(Ver4DictConstants::NOT_A_TERMINAL_ID),
+              mProbabilityFieldPos(NOT_A_DICT_POS), mProbability(probability),
+              mChildrenPosFieldPos(NOT_A_DICT_POS), mChildrenPos(childrenPos),
+              mBigramLinkedNodePos(NOT_A_DICT_POS), mShortcutPos(shortcutPos),
+              mBigramPos(bigramPos), mSiblingPos(siblingPos) {
+        memcpy(mCodePoints, codePoints, sizeof(int) * mCodePointCount);
+    }
+
+    // PtNode with a terminal id.
+    PtNodeParams(const int headPos, const PatriciaTrieReadingUtils::NodeFlags flags,
+            const int parentPos, const int codePointCount, const int *const codePoints,
+            const int terminalIdFieldPos, const int terminalId, const int probability,
+            const int childrenPosFieldPos, const int childrenPos, const int siblingPos)
+            : mHeadPos(headPos), mFlags(flags), mHasMovedFlag(true), mParentPos(parentPos),
+              mCodePointCount(codePointCount), mCodePoints(),
+              mTerminalIdFieldPos(terminalIdFieldPos), mTerminalId(terminalId),
+              mProbabilityFieldPos(NOT_A_DICT_POS), mProbability(probability),
+              mChildrenPosFieldPos(childrenPosFieldPos), mChildrenPos(childrenPos),
+              mBigramLinkedNodePos(NOT_A_DICT_POS), mShortcutPos(terminalId),
+              mBigramPos(terminalId), mSiblingPos(siblingPos) {
+        memcpy(mCodePoints, codePoints, sizeof(int) * mCodePointCount);
+    }
+
+    // Construct new params by updating existing PtNode params.
+    PtNodeParams(const PtNodeParams *const ptNodeParams,
+            const PatriciaTrieReadingUtils::NodeFlags flags, const int parentPos,
+            const int codePointCount, const int *const codePoints, const int probability)
+            : mHeadPos(ptNodeParams->getHeadPos()), mFlags(flags), mHasMovedFlag(true),
+              mParentPos(parentPos), mCodePointCount(codePointCount), mCodePoints(),
+              mTerminalIdFieldPos(ptNodeParams->getTerminalIdFieldPos()),
+              mTerminalId(ptNodeParams->getTerminalId()),
+              mProbabilityFieldPos(ptNodeParams->getProbabilityFieldPos()),
+              mProbability(probability),
+              mChildrenPosFieldPos(ptNodeParams->getChildrenPosFieldPos()),
+              mChildrenPos(ptNodeParams->getChildrenPos()),
+              mBigramLinkedNodePos(ptNodeParams->getBigramLinkedNodePos()),
+              mShortcutPos(ptNodeParams->getShortcutPos()),
+              mBigramPos(ptNodeParams->getBigramsPos()),
+              mSiblingPos(ptNodeParams->getSiblingNodePos()) {
+        memcpy(mCodePoints, codePoints, sizeof(int) * mCodePointCount);
+    }
+
+    PtNodeParams(const PatriciaTrieReadingUtils::NodeFlags flags, const int parentPos,
+            const int codePointCount, const int *const codePoints, const int probability)
+            : mHeadPos(NOT_A_DICT_POS), mFlags(flags), mHasMovedFlag(true), mParentPos(parentPos),
+              mCodePointCount(codePointCount), mCodePoints(),
+              mTerminalIdFieldPos(NOT_A_DICT_POS),
+              mTerminalId(Ver4DictConstants::NOT_A_TERMINAL_ID),
+              mProbabilityFieldPos(NOT_A_DICT_POS), mProbability(probability),
+              mChildrenPosFieldPos(NOT_A_DICT_POS), mChildrenPos(NOT_A_DICT_POS),
+              mBigramLinkedNodePos(NOT_A_DICT_POS), mShortcutPos(NOT_A_DICT_POS),
+              mBigramPos(NOT_A_DICT_POS), mSiblingPos(NOT_A_DICT_POS) {
+        memcpy(mCodePoints, codePoints, sizeof(int) * mCodePointCount);
+    }
+
+    AK_FORCE_INLINE bool isValid() const {
+        return mCodePointCount > 0;
+    }
+
+    // Head position of the PtNode
+    AK_FORCE_INLINE int getHeadPos() const {
+        return mHeadPos;
+    }
+
+    // Flags
+    AK_FORCE_INLINE bool isDeleted() const {
+        return mHasMovedFlag && DynamicPtReadingUtils::isDeleted(mFlags);
+    }
+
+    AK_FORCE_INLINE bool willBecomeNonTerminal() const {
+        return mHasMovedFlag && DynamicPtReadingUtils::willBecomeNonTerminal(mFlags);
+    }
+
+    AK_FORCE_INLINE bool hasChildren() const {
+        return mChildrenPos != NOT_A_DICT_POS;
+    }
+
+    AK_FORCE_INLINE bool isTerminal() const {
+        return PatriciaTrieReadingUtils::isTerminal(mFlags);
+    }
+
+    AK_FORCE_INLINE bool isBlacklisted() const {
+        return PatriciaTrieReadingUtils::isBlacklisted(mFlags);
+    }
+
+    AK_FORCE_INLINE bool isNotAWord() const {
+        return PatriciaTrieReadingUtils::isNotAWord(mFlags);
+    }
+
+    AK_FORCE_INLINE bool hasBigrams() const {
+        return PatriciaTrieReadingUtils::hasBigrams(mFlags);
+    }
+
+    AK_FORCE_INLINE bool hasShortcutTargets() const {
+        return PatriciaTrieReadingUtils::hasShortcutTargets(mFlags);
+    }
+
+    AK_FORCE_INLINE bool representsNonWordInfo() const {
+        return getCodePointCount() > 0 && !CharUtils::isInUnicodeSpace(getCodePoints()[0])
+                && isNotAWord();
+    }
+
+    AK_FORCE_INLINE int representsBeginningOfSentence() const {
+        return getCodePointCount() > 0 && getCodePoints()[0] == CODE_POINT_BEGINNING_OF_SENTENCE
+                && isNotAWord();
+    }
+
+    // Parent node position
+    AK_FORCE_INLINE int getParentPos() const {
+        return mParentPos;
+    }
+
+    // Number of code points
+    AK_FORCE_INLINE uint8_t getCodePointCount() const {
+        return mCodePointCount;
+    }
+
+    AK_FORCE_INLINE const int *getCodePoints() const {
+        return mCodePoints;
+    }
+
+    // Probability
+    AK_FORCE_INLINE int getTerminalIdFieldPos() const {
+        return mTerminalIdFieldPos;
+    }
+
+    AK_FORCE_INLINE int getTerminalId() const {
+        return mTerminalId;
+    }
+
+    // Probability
+    AK_FORCE_INLINE int getProbabilityFieldPos() const {
+        return mProbabilityFieldPos;
+    }
+
+    AK_FORCE_INLINE int getProbability() const {
+        return mProbability;
+    }
+
+    // Children PtNode array position
+    AK_FORCE_INLINE int getChildrenPosFieldPos() const {
+        return mChildrenPosFieldPos;
+    }
+
+    AK_FORCE_INLINE int getChildrenPos() const {
+        return mChildrenPos;
+    }
+
+    // Bigram linked node position.
+    AK_FORCE_INLINE int getBigramLinkedNodePos() const {
+        return mBigramLinkedNodePos;
+    }
+
+    // Shortcutlist position
+    AK_FORCE_INLINE int getShortcutPos() const {
+        return mShortcutPos;
+    }
+
+    // Bigrams position
+    AK_FORCE_INLINE int getBigramsPos() const {
+        return mBigramPos;
+    }
+
+    // Sibling node position
+    AK_FORCE_INLINE int getSiblingNodePos() const {
+        return mSiblingPos;
+    }
+
+ private:
+    // This class have a public copy constructor to be used as a return value.
+    DISALLOW_ASSIGNMENT_OPERATOR(PtNodeParams);
+
+    const int mHeadPos;
+    const PatriciaTrieReadingUtils::NodeFlags mFlags;
+    const bool mHasMovedFlag;
+    const int mParentPos;
+    const uint8_t mCodePointCount;
+    int mCodePoints[MAX_WORD_LENGTH];
+    const int mTerminalIdFieldPos;
+    const int mTerminalId;
+    const int mProbabilityFieldPos;
+    const int mProbability;
+    const int mChildrenPosFieldPos;
+    const int mChildrenPos;
+    const int mBigramLinkedNodePos;
+    const int mShortcutPos;
+    const int mBigramPos;
+    const int mSiblingPos;
+};
+} // namespace latinime
+#endif /* LATINIME_PT_NODE_PARAMS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h
new file mode 100644
index 0000000..31299a7
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PT_NODE_READER_H
+#define LATINIME_PT_NODE_READER_H
+
+#include "defines.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+
+namespace latinime {
+
+// Interface class used to read PtNode information.
+class PtNodeReader {
+ public:
+    virtual ~PtNodeReader() {}
+    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(
+            const int ptNodePos) const = 0;
+
+ protected:
+    PtNodeReader() {};
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(PtNodeReader);
+};
+} // namespace latinime
+#endif /* LATINIME_PT_NODE_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
new file mode 100644
index 0000000..a8029f7
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PT_NODE_WRITER_H
+#define LATINIME_PT_NODE_WRITER_H
+
+#include <unordered_map>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+
+namespace latinime {
+
+class BigramProperty;
+class UnigramProperty;
+
+// Interface class used to write PtNode information.
+class PtNodeWriter {
+ public:
+    typedef std::unordered_map<int, int> PtNodeArrayPositionRelocationMap;
+    typedef std::unordered_map<int, int> PtNodePositionRelocationMap;
+    struct DictPositionRelocationMap {
+     public:
+        DictPositionRelocationMap()
+                : mPtNodeArrayPositionRelocationMap(), mPtNodePositionRelocationMap() {}
+
+        PtNodeArrayPositionRelocationMap mPtNodeArrayPositionRelocationMap;
+        PtNodePositionRelocationMap mPtNodePositionRelocationMap;
+
+     private:
+        DISALLOW_COPY_AND_ASSIGN(DictPositionRelocationMap);
+    };
+
+    virtual ~PtNodeWriter() {}
+
+    virtual bool markPtNodeAsDeleted(const PtNodeParams *const toBeUpdatedPtNodeParams) = 0;
+
+    virtual bool markPtNodeAsMoved(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int movedPos, const int bigramLinkedNodePos) = 0;
+
+    virtual bool markPtNodeAsWillBecomeNonTerminal(
+            const PtNodeParams *const toBeUpdatedPtNodeParams) = 0;
+
+    virtual bool updatePtNodeUnigramProperty(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const UnigramProperty *const unigramProperty) = 0;
+
+    virtual bool updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
+            const PtNodeParams *const toBeUpdatedPtNodeParams,
+            bool *const outNeedsToKeepPtNode) = 0;
+
+    virtual bool updateChildrenPosition(const PtNodeParams *const toBeUpdatedPtNodeParams,
+                const int newChildrenPosition) = 0;
+
+    virtual bool writePtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
+            int *const ptNodeWritingPos) = 0;
+
+    virtual bool writeNewTerminalPtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
+            const UnigramProperty *const unigramProperty, int *const ptNodeWritingPos) = 0;
+
+    virtual bool addNewBigramEntry(const PtNodeParams *const sourcePtNodeParams,
+            const PtNodeParams *const targetPtNodeParam, const BigramProperty *const bigramProperty,
+            bool *const outAddedNewBigram) = 0;
+
+    virtual bool removeBigramEntry(const PtNodeParams *const sourcePtNodeParams,
+            const PtNodeParams *const targetPtNodeParam) = 0;
+
+    virtual bool updateAllBigramEntriesAndDeleteUselessEntries(
+            const PtNodeParams *const sourcePtNodeParams, int *const outBigramEntryCount) = 0;
+
+    virtual bool updateAllPositionFields(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const DictPositionRelocationMap *const dictPositionRelocationMap,
+            int *const outBigramEntryCount) = 0;
+
+    virtual bool addShortcutTarget(const PtNodeParams *const ptNodeParams,
+            const int *const targetCodePoints, const int targetCodePointCount,
+            const int shortcutProbability) = 0;
+
+ protected:
+    PtNodeWriter() {};
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(PtNodeWriter);
+};
+} // namespace latinime
+#endif /* LATINIME_PT_NODE_WRITER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.cpp
new file mode 100644
index 0000000..91c7694
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
+
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+
+namespace latinime {
+
+// Flag for presence of more attributes
+const ShortcutListReadingUtils::ShortcutFlags
+        ShortcutListReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80;
+// Mask for attribute probability, stored on 4 bits inside the flags byte.
+const ShortcutListReadingUtils::ShortcutFlags
+        ShortcutListReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F;
+const int ShortcutListReadingUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2;
+// The numeric value of the shortcut probability that means 'whitelist'.
+const int ShortcutListReadingUtils::WHITELIST_SHORTCUT_PROBABILITY = 15;
+
+/* static */ ShortcutListReadingUtils::ShortcutFlags
+        ShortcutListReadingUtils::getFlagsAndForwardPointer(const uint8_t *const dictRoot,
+                int *const pos) {
+    return ByteArrayUtils::readUint8AndAdvancePosition(dictRoot, pos);
+}
+
+/* static */ int ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(
+        const uint8_t *const dictRoot, int *const pos) {
+    // readUint16andAdvancePosition() returns an offset *including* the uint16 field itself.
+    return ByteArrayUtils::readUint16AndAdvancePosition(dictRoot, pos)
+            - SHORTCUT_LIST_SIZE_FIELD_SIZE;
+}
+
+/* static */ int ShortcutListReadingUtils::readShortcutTarget(
+        const uint8_t *const dictRoot, const int maxLength, int *const outWord, int *const pos) {
+    return ByteArrayUtils::readStringAndAdvancePosition(dictRoot, maxLength, outWord, pos);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h
new file mode 100644
index 0000000..d065bf7
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SHORTCUT_LIST_READING_UTILS_H
+#define LATINIME_SHORTCUT_LIST_READING_UTILS_H
+
+#include <cstdint>
+
+#include "defines.h"
+
+namespace latinime {
+
+class ShortcutListReadingUtils {
+ public:
+    typedef uint8_t ShortcutFlags;
+
+    static ShortcutFlags getFlagsAndForwardPointer(const uint8_t *const dictRoot, int *const pos);
+
+    static AK_FORCE_INLINE int getProbabilityFromFlags(const ShortcutFlags flags) {
+        return flags & MASK_ATTRIBUTE_PROBABILITY;
+    }
+
+    static AK_FORCE_INLINE bool hasNext(const ShortcutFlags flags) {
+        return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0;
+    }
+
+    // This method returns the size of the shortcut list region excluding the shortcut list size
+    // field at the beginning.
+    static int getShortcutListSizeAndForwardPointer(const uint8_t *const dictRoot, int *const pos);
+
+    static AK_FORCE_INLINE int getShortcutListSizeFieldSize() {
+        return SHORTCUT_LIST_SIZE_FIELD_SIZE;
+    }
+
+    static AK_FORCE_INLINE void skipShortcuts(const uint8_t *const dictRoot, int *const pos) {
+        const int shortcutListSize = getShortcutListSizeAndForwardPointer(dictRoot, pos);
+        *pos += shortcutListSize;
+    }
+
+    static AK_FORCE_INLINE bool isWhitelist(const ShortcutFlags flags) {
+        return getProbabilityFromFlags(flags) == WHITELIST_SHORTCUT_PROBABILITY;
+    }
+
+    static int readShortcutTarget(const uint8_t *const dictRoot, const int maxLength,
+            int *const outWord, int *const pos);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutListReadingUtils);
+
+    static const ShortcutFlags FLAG_ATTRIBUTE_HAS_NEXT;
+    static const ShortcutFlags MASK_ATTRIBUTE_PROBABILITY;
+    static const int SHORTCUT_LIST_SIZE_FIELD_SIZE;
+    static const int WHITELIST_SHORTCUT_PROBABILITY;
+};
+} // namespace latinime
+#endif // LATINIME_SHORTCUT_LIST_READING_UTILS_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h
new file mode 100644
index 0000000..00bb502
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_BIGRAM_LIST_POLICY_H
+#define LATINIME_BIGRAM_LIST_POLICY_H
+
+#include <cstdint>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
+
+namespace latinime {
+
+class BigramListPolicy : public DictionaryBigramsStructurePolicy {
+ public:
+    explicit BigramListPolicy(const uint8_t *const bigramsBuf) : mBigramsBuf(bigramsBuf) {}
+
+    ~BigramListPolicy() {}
+
+    void getNextBigram(int *const outBigramPos, int *const outProbability, bool *const outHasNext,
+            int *const pos) const {
+        BigramListReadWriteUtils::BigramFlags flags;
+        BigramListReadWriteUtils::getBigramEntryPropertiesAndAdvancePosition(mBigramsBuf, &flags,
+                outBigramPos, pos);
+        *outProbability = BigramListReadWriteUtils::getProbabilityFromFlags(flags);
+        *outHasNext = BigramListReadWriteUtils::hasNext(flags);
+    }
+
+    void skipAllBigrams(int *const pos) const {
+        BigramListReadWriteUtils::skipExistingBigrams(mBigramsBuf, pos);
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(BigramListPolicy);
+
+    const uint8_t *const mBigramsBuf;
+};
+} // namespace latinime
+#endif // LATINIME_BIGRAM_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
new file mode 100644
index 0000000..91d7604
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
@@ -0,0 +1,435 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h"
+
+#include "defines.h"
+#include "suggest/core/dicnode/dic_node.h"
+#include "suggest/core/dicnode/dic_node_vector.h"
+#include "suggest/core/dictionary/binary_dictionary_bigrams_iterator.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/probability_utils.h"
+#include "utils/char_utils.h"
+
+namespace latinime {
+
+void PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNode,
+        DicNodeVector *const childDicNodes) const {
+    if (!dicNode->hasChildren()) {
+        return;
+    }
+    int nextPos = dicNode->getChildrenPtNodeArrayPos();
+    if (nextPos < 0 || nextPos >= mDictBufferSize) {
+        AKLOGE("Children PtNode array position is invalid. pos: %d, dict size: %d",
+                nextPos, mDictBufferSize);
+        mIsCorrupted = true;
+        ASSERT(false);
+        return;
+    }
+    const int childCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
+            mDictRoot, &nextPos);
+    for (int i = 0; i < childCount; i++) {
+        if (nextPos < 0 || nextPos >= mDictBufferSize) {
+            AKLOGE("Child PtNode position is invalid. pos: %d, dict size: %d, childCount: %d / %d",
+                    nextPos, mDictBufferSize, i, childCount);
+            mIsCorrupted = true;
+            ASSERT(false);
+            return;
+        }
+        nextPos = createAndGetLeavingChildNode(dicNode, nextPos, childDicNodes);
+    }
+}
+
+// This retrieves code points and the probability of the word by its terminal position.
+// Due to the fact that words are ordered in the dictionary in a strict breadth-first order,
+// it is possible to check for this with advantageous complexity. For each PtNode array, we search
+// for PtNodes with children and compare the children position with the position we look for.
+// When we shoot the position we look for, it means the word we look for is in the children
+// of the previous PtNode. The only tricky part is the fact that if we arrive at the end of a
+// PtNode array with the last PtNode's children position still less than what we are searching for,
+// we must descend the last PtNode's children (for example, if the word we are searching for starts
+// with a z, it's the last PtNode of the root array, so all children addresses will be smaller
+// than the position we look for, and we have to descend the z PtNode).
+/* Parameters :
+ * ptNodePos: the byte position of the terminal PtNode of the word we are searching for (this is
+ *   what is stored as the "bigram position" in each bigram)
+ * outCodePoints: an array to write the found word, with MAX_WORD_LENGTH size.
+ * outUnigramProbability: a pointer to an int to write the probability into.
+ * Return value : the code point count, of 0 if the word was not found.
+ */
+// TODO: Split this function to be more readable
+int PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
+        const int ptNodePos, const int maxCodePointCount, int *const outCodePoints,
+        int *const outUnigramProbability) const {
+    int pos = getRootPosition();
+    int wordPos = 0;
+    // One iteration of the outer loop iterates through PtNode arrays. As stated above, we will
+    // only traverse PtNodes that are actually a part of the terminal we are searching, so each
+    // time we enter this loop we are one depth level further than last time.
+    // The only reason we count PtNodes is because we want to reduce the probability of infinite
+    // looping in case there is a bug. Since we know there is an upper bound to the depth we are
+    // supposed to traverse, it does not hurt to count iterations.
+    for (int loopCount = maxCodePointCount; loopCount > 0; --loopCount) {
+        int lastCandidatePtNodePos = 0;
+        // Let's loop through PtNodes in this PtNode array searching for either the terminal
+        // or one of its ascendants.
+        if (pos < 0 || pos >= mDictBufferSize) {
+            AKLOGE("PtNode array position is invalid. pos: %d, dict size: %d",
+                    pos, mDictBufferSize);
+            mIsCorrupted = true;
+            ASSERT(false);
+            *outUnigramProbability = NOT_A_PROBABILITY;
+            return 0;
+        }
+        for (int ptNodeCount = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
+                mDictRoot, &pos); ptNodeCount > 0; --ptNodeCount) {
+            const int startPos = pos;
+            if (pos < 0 || pos >= mDictBufferSize) {
+                AKLOGE("PtNode position is invalid. pos: %d, dict size: %d", pos, mDictBufferSize);
+                mIsCorrupted = true;
+                ASSERT(false);
+                *outUnigramProbability = NOT_A_PROBABILITY;
+                return 0;
+            }
+            const PatriciaTrieReadingUtils::NodeFlags flags =
+                    PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(mDictRoot, &pos);
+            const int character = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
+                    mDictRoot, &pos);
+            if (ptNodePos == startPos) {
+                // We found the position. Copy the rest of the code points in the buffer and return
+                // the length.
+                outCodePoints[wordPos] = character;
+                if (PatriciaTrieReadingUtils::hasMultipleChars(flags)) {
+                    int nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
+                            mDictRoot, &pos);
+                    // We count code points in order to avoid infinite loops if the file is broken
+                    // or if there is some other bug
+                    int charCount = maxCodePointCount;
+                    while (NOT_A_CODE_POINT != nextChar && --charCount > 0) {
+                        outCodePoints[++wordPos] = nextChar;
+                        nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
+                                mDictRoot, &pos);
+                    }
+                }
+                *outUnigramProbability =
+                        PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot,
+                                &pos);
+                return ++wordPos;
+            }
+            // We need to skip past this PtNode, so skip any remaining code points after the
+            // first and possibly the probability.
+            if (PatriciaTrieReadingUtils::hasMultipleChars(flags)) {
+                PatriciaTrieReadingUtils::skipCharacters(mDictRoot, flags, MAX_WORD_LENGTH, &pos);
+            }
+            if (PatriciaTrieReadingUtils::isTerminal(flags)) {
+                PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot, &pos);
+            }
+            // The fact that this PtNode has children is very important. Since we already know
+            // that this PtNode does not match, if it has no children we know it is irrelevant
+            // to what we are searching for.
+            const bool hasChildren = PatriciaTrieReadingUtils::hasChildrenInFlags(flags);
+            // We will write in `found' whether we have passed the children position we are
+            // searching for. For example if we search for "beer", the children of b are less
+            // than the address we are searching for and the children of c are greater. When we
+            // come here for c, we realize this is too big, and that we should descend b.
+            bool found;
+            if (hasChildren) {
+                int currentPos = pos;
+                // Here comes the tricky part. First, read the children position.
+                const int childrenPos = PatriciaTrieReadingUtils
+                        ::readChildrenPositionAndAdvancePosition(mDictRoot, flags, &currentPos);
+                if (childrenPos > ptNodePos) {
+                    // If the children pos is greater than the position, it means the previous
+                    // PtNode, which position is stored in lastCandidatePtNodePos, was the right
+                    // one.
+                    found = true;
+                } else if (1 >= ptNodeCount) {
+                    // However if we are on the LAST PtNode of this array, and we have NOT shot the
+                    // position we should descend THIS PtNode. So we trick the
+                    // lastCandidatePtNodePos so that we will descend this PtNode, not the previous
+                    // one.
+                    lastCandidatePtNodePos = startPos;
+                    found = true;
+                } else {
+                    // Else, we should continue looking.
+                    found = false;
+                }
+            } else {
+                // Even if we don't have children here, we could still be on the last PtNode of
+                // this array. If this is the case, we should descend the last PtNode that had
+                // children, and their position is already in lastCandidatePtNodePos.
+                found = (1 >= ptNodeCount);
+            }
+
+            if (found) {
+                // Okay, we found the PtNode we should descend. Its position is in
+                // the lastCandidatePtNodePos variable, so we just re-read it.
+                if (0 != lastCandidatePtNodePos) {
+                    const PatriciaTrieReadingUtils::NodeFlags lastFlags =
+                            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(
+                                    mDictRoot, &lastCandidatePtNodePos);
+                    const int lastChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
+                            mDictRoot, &lastCandidatePtNodePos);
+                    // We copy all the characters in this PtNode to the buffer
+                    outCodePoints[wordPos] = lastChar;
+                    if (PatriciaTrieReadingUtils::hasMultipleChars(lastFlags)) {
+                        int nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
+                                mDictRoot, &lastCandidatePtNodePos);
+                        int charCount = maxCodePointCount;
+                        while (-1 != nextChar && --charCount > 0) {
+                            outCodePoints[++wordPos] = nextChar;
+                            nextChar = PatriciaTrieReadingUtils::getCodePointAndAdvancePosition(
+                                    mDictRoot, &lastCandidatePtNodePos);
+                        }
+                    }
+                    ++wordPos;
+                    // Now we only need to branch to the children address. Skip the probability if
+                    // it's there, read pos, and break to resume the search at pos.
+                    if (PatriciaTrieReadingUtils::isTerminal(lastFlags)) {
+                        PatriciaTrieReadingUtils::readProbabilityAndAdvancePosition(mDictRoot,
+                                &lastCandidatePtNodePos);
+                    }
+                    pos = PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
+                            mDictRoot, lastFlags, &lastCandidatePtNodePos);
+                    break;
+                } else {
+                    // Here is a little tricky part: we come here if we found out that all children
+                    // addresses in this PtNode are bigger than the address we are searching for.
+                    // Should we conclude the word is not in the dictionary? No! It could still be
+                    // one of the remaining PtNodes in this array, so we have to keep looking in
+                    // this array until we find it (or we realize it's not there either, in which
+                    // case it's actually not in the dictionary). Pass the end of this PtNode,
+                    // ready to start the next one.
+                    if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
+                        PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
+                                mDictRoot, flags, &pos);
+                    }
+                    if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
+                        mShortcutListPolicy.skipAllShortcuts(&pos);
+                    }
+                    if (PatriciaTrieReadingUtils::hasBigrams(flags)) {
+                        mBigramListPolicy.skipAllBigrams(&pos);
+                    }
+                }
+            } else {
+                // If we did not find it, we should record the last children address for the next
+                // iteration.
+                if (hasChildren) lastCandidatePtNodePos = startPos;
+                // Now skip the end of this PtNode (children pos and the attributes if any) so that
+                // our pos is after the end of this PtNode, at the start of the next one.
+                if (PatriciaTrieReadingUtils::hasChildrenInFlags(flags)) {
+                    PatriciaTrieReadingUtils::readChildrenPositionAndAdvancePosition(
+                            mDictRoot, flags, &pos);
+                }
+                if (PatriciaTrieReadingUtils::hasShortcutTargets(flags)) {
+                    mShortcutListPolicy.skipAllShortcuts(&pos);
+                }
+                if (PatriciaTrieReadingUtils::hasBigrams(flags)) {
+                    mBigramListPolicy.skipAllBigrams(&pos);
+                }
+            }
+
+        }
+    }
+    // If we have looked through all the PtNodes and found no match, the ptNodePos is
+    // not the position of a terminal in this dictionary.
+    return 0;
+}
+
+// This function gets the position of the terminal PtNode of the exact matching word in the
+// dictionary. If no match is found, it returns NOT_A_DICT_POS.
+int PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord,
+        const int length, const bool forceLowerCaseSearch) const {
+    DynamicPtReadingHelper readingHelper(&mPtNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(getRootPosition());
+    const int ptNodePos =
+            readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch);
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes().");
+    }
+    return ptNodePos;
+}
+
+int PatriciaTriePolicy::getProbability(const int unigramProbability,
+        const int bigramProbability) const {
+    // Due to space constraints, the probability for bigrams is approximate - the lower the unigram
+    // probability, the worse the precision. The theoritical maximum error in resulting probability
+    // is 8 - although in the practice it's never bigger than 3 or 4 in very bad cases. This means
+    // that sometimes, we'll see some bigrams interverted here, but it can't get too bad.
+    if (unigramProbability == NOT_A_PROBABILITY) {
+        return NOT_A_PROBABILITY;
+    } else if (bigramProbability == NOT_A_PROBABILITY) {
+        return ProbabilityUtils::backoff(unigramProbability);
+    } else {
+        return ProbabilityUtils::computeProbabilityForBigram(unigramProbability,
+                bigramProbability);
+    }
+}
+
+int PatriciaTriePolicy::getUnigramProbabilityOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_PROBABILITY;
+    }
+    const PtNodeParams ptNodeParams =
+            mPtNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+    if (ptNodeParams.isNotAWord() || ptNodeParams.isBlacklisted()) {
+        // If this is not a word, or if it's a blacklisted entry, it should behave as
+        // having no probability outside of the suggestion process (where it should be used
+        // for shortcuts).
+        return NOT_A_PROBABILITY;
+    }
+    return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY);
+}
+
+int PatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_DICT_POS;
+    }
+    return mPtNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos).getShortcutPos();
+}
+
+BinaryDictionaryBigramsIterator PatriciaTriePolicy::getBigramsIteratorOfPtNode(
+        const int ptNodePos) const {
+    const int bigramsPosition = getBigramsPositionOfPtNode(ptNodePos);
+    return BinaryDictionaryBigramsIterator(&mBigramListPolicy, bigramsPosition);
+}
+
+int PatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_DICT_POS;
+    }
+    return mPtNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos).getBigramsPos();
+}
+
+int PatriciaTriePolicy::createAndGetLeavingChildNode(const DicNode *const dicNode,
+        const int ptNodePos, DicNodeVector *childDicNodes) const {
+    PatriciaTrieReadingUtils::NodeFlags flags;
+    int mergedNodeCodePointCount = 0;
+    int mergedNodeCodePoints[MAX_WORD_LENGTH];
+    int probability = NOT_A_PROBABILITY;
+    int childrenPos = NOT_A_DICT_POS;
+    int shortcutPos = NOT_A_DICT_POS;
+    int bigramPos = NOT_A_DICT_POS;
+    int siblingPos = NOT_A_DICT_POS;
+    PatriciaTrieReadingUtils::readPtNodeInfo(mDictRoot, ptNodePos, getShortcutsStructurePolicy(),
+            &mBigramListPolicy, &flags, &mergedNodeCodePointCount, mergedNodeCodePoints,
+            &probability, &childrenPos, &shortcutPos, &bigramPos, &siblingPos);
+    // Skip PtNodes don't start with Unicode code point because they represent non-word information.
+    if (CharUtils::isInUnicodeSpace(mergedNodeCodePoints[0])) {
+        childDicNodes->pushLeavingChild(dicNode, ptNodePos, childrenPos, probability,
+                PatriciaTrieReadingUtils::isTerminal(flags),
+                PatriciaTrieReadingUtils::hasChildrenInFlags(flags),
+                PatriciaTrieReadingUtils::isBlacklisted(flags)
+                        || PatriciaTrieReadingUtils::isNotAWord(flags),
+                mergedNodeCodePointCount, mergedNodeCodePoints);
+    }
+    return siblingPos;
+}
+
+const WordProperty PatriciaTriePolicy::getWordProperty(const int *const codePoints,
+        const int codePointCount) const {
+    const int ptNodePos = getTerminalPtNodePositionOfWord(codePoints, codePointCount,
+            false /* forceLowerCaseSearch */);
+    if (ptNodePos == NOT_A_DICT_POS) {
+        AKLOGE("getWordProperty was called for invalid word.");
+        return WordProperty();
+    }
+    const PtNodeParams ptNodeParams =
+            mPtNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+    std::vector<int> codePointVector(ptNodeParams.getCodePoints(),
+            ptNodeParams.getCodePoints() + ptNodeParams.getCodePointCount());
+    // Fetch bigram information.
+    std::vector<BigramProperty> bigrams;
+    const int bigramListPos = getBigramsPositionOfPtNode(ptNodePos);
+    int bigramWord1CodePoints[MAX_WORD_LENGTH];
+    BinaryDictionaryBigramsIterator bigramsIt(&mBigramListPolicy, bigramListPos);
+    while (bigramsIt.hasNext()) {
+        // Fetch the next bigram information and forward the iterator.
+        bigramsIt.next();
+        // Skip the entry if the entry has been deleted. This never happens for ver2 dicts.
+        if (bigramsIt.getBigramPos() != NOT_A_DICT_POS) {
+            int word1Probability = NOT_A_PROBABILITY;
+            const int word1CodePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(
+                    bigramsIt.getBigramPos(), MAX_WORD_LENGTH, bigramWord1CodePoints,
+                    &word1Probability);
+            const std::vector<int> word1(bigramWord1CodePoints,
+                    bigramWord1CodePoints + word1CodePointCount);
+            const int probability = getProbability(word1Probability, bigramsIt.getProbability());
+            bigrams.emplace_back(&word1, probability,
+                    NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */);
+        }
+    }
+    // Fetch shortcut information.
+    std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+    int shortcutPos = getShortcutPositionOfPtNode(ptNodePos);
+    if (shortcutPos != NOT_A_DICT_POS) {
+        int shortcutTargetCodePoints[MAX_WORD_LENGTH];
+        ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(mDictRoot, &shortcutPos);
+        bool hasNext = true;
+        while (hasNext) {
+            const ShortcutListReadingUtils::ShortcutFlags shortcutFlags =
+                    ShortcutListReadingUtils::getFlagsAndForwardPointer(mDictRoot, &shortcutPos);
+            hasNext = ShortcutListReadingUtils::hasNext(shortcutFlags);
+            const int shortcutTargetLength = ShortcutListReadingUtils::readShortcutTarget(
+                    mDictRoot, MAX_WORD_LENGTH, shortcutTargetCodePoints, &shortcutPos);
+            const std::vector<int> shortcutTarget(shortcutTargetCodePoints,
+                    shortcutTargetCodePoints + shortcutTargetLength);
+            const int shortcutProbability =
+                    ShortcutListReadingUtils::getProbabilityFromFlags(shortcutFlags);
+            shortcuts.emplace_back(&shortcutTarget, shortcutProbability);
+        }
+    }
+    const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(),
+            ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(),
+            NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts);
+    return WordProperty(&codePointVector, &unigramProperty, &bigrams);
+}
+
+int PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints,
+        int *const outCodePointCount) {
+    *outCodePointCount = 0;
+    if (token == 0) {
+        // Start iterating the dictionary.
+        mTerminalPtNodePositionsForIteratingWords.clear();
+        DynamicPtReadingHelper::TraversePolicyToGetAllTerminalPtNodePositions traversePolicy(
+                &mTerminalPtNodePositionsForIteratingWords);
+        DynamicPtReadingHelper readingHelper(&mPtNodeReader, &mPtNodeArrayReader);
+        readingHelper.initWithPtNodeArrayPos(getRootPosition());
+        readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(&traversePolicy);
+    }
+    const int terminalPtNodePositionsVectorSize =
+            static_cast<int>(mTerminalPtNodePositionsForIteratingWords.size());
+    if (token < 0 || token >= terminalPtNodePositionsVectorSize) {
+        AKLOGE("Given token %d is invalid.", token);
+        return 0;
+    }
+    const int terminalPtNodePos = mTerminalPtNodePositionsForIteratingWords[token];
+    int unigramProbability = NOT_A_PROBABILITY;
+    *outCodePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(terminalPtNodePos,
+            MAX_WORD_LENGTH, outCodePoints, &unigramProbability);
+    const int nextToken = token + 1;
+    if (nextToken >= terminalPtNodePositionsVectorSize) {
+        // All words have been iterated.
+        mTerminalPtNodePositionsForIteratingWords.clear();
+        return 0;
+    }
+    return nextToken;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
new file mode 100644
index 0000000..7c0b9d3
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PATRICIA_TRIE_POLICY_H
+#define LATINIME_PATRICIA_TRIE_POLICY_H
+
+#include <cstdint>
+#include <vector>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v2/bigram/bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h"
+#include "suggest/policyimpl/dictionary/utils/format_utils.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+
+class DicNode;
+class DicNodeVector;
+
+class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
+ public:
+    PatriciaTriePolicy(MmappedBuffer::MmappedBufferPtr mmappedBuffer)
+            : mMmappedBuffer(std::move(mmappedBuffer)),
+              mHeaderPolicy(mMmappedBuffer->getBuffer(), FormatUtils::VERSION_2),
+              mDictRoot(mMmappedBuffer->getBuffer() + mHeaderPolicy.getSize()),
+              mDictBufferSize(mMmappedBuffer->getBufferSize() - mHeaderPolicy.getSize()),
+              mBigramListPolicy(mDictRoot), mShortcutListPolicy(mDictRoot),
+              mPtNodeReader(mDictRoot, mDictBufferSize, &mBigramListPolicy, &mShortcutListPolicy),
+              mPtNodeArrayReader(mDictRoot, mDictBufferSize),
+              mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {}
+
+    AK_FORCE_INLINE int getRootPosition() const {
+        return 0;
+    }
+
+    void createAndGetAllChildDicNodes(const DicNode *const dicNode,
+            DicNodeVector *const childDicNodes) const;
+
+    int getCodePointsAndProbabilityAndReturnCodePointCount(
+            const int terminalNodePos, const int maxCodePointCount, int *const outCodePoints,
+            int *const outUnigramProbability) const;
+
+    int getTerminalPtNodePositionOfWord(const int *const inWord,
+            const int length, const bool forceLowerCaseSearch) const;
+
+    int getProbability(const int unigramProbability, const int bigramProbability) const;
+
+    int getUnigramProbabilityOfPtNode(const int ptNodePos) const;
+
+    int getShortcutPositionOfPtNode(const int ptNodePos) const;
+
+    BinaryDictionaryBigramsIterator getBigramsIteratorOfPtNode(const int ptNodePos) const;
+
+    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
+        return &mHeaderPolicy;
+    }
+
+    const DictionaryShortcutsStructurePolicy *getShortcutsStructurePolicy() const {
+        return &mShortcutListPolicy;
+    }
+
+    bool addUnigramEntry(const int *const word, const int length,
+            const UnigramProperty *const unigramProperty) {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: addUnigramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    bool removeUnigramEntry(const int *const word, const int length) {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: removeUnigramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    bool addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+            const BigramProperty *const bigramProperty) {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: addNgramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    bool removeNgramEntry(const PrevWordsInfo *const prevWordsInfo, const int *const word,
+            const int length) {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: removeNgramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    bool flush(const char *const filePath) {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: flush() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    bool flushWithGC(const char *const filePath) {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    bool needsToRunGC(const bool mindsBlockByGC) const {
+        // This method should not be called for non-updatable dictionary.
+        AKLOGI("Warning: needsToRunGC() is called for non-updatable dictionary.");
+        return false;
+    }
+
+    void getProperty(const char *const query, const int queryLength, char *const outResult,
+            const int maxResultLength) {
+        // getProperty is not supported for this class.
+        if (maxResultLength > 0) {
+            outResult[0] = '\0';
+        }
+    }
+
+    const WordProperty getWordProperty(const int *const codePoints,
+            const int codePointCount) const;
+
+    int getNextWordAndNextToken(const int token, int *const outCodePoints,
+            int *const outCodePointCount);
+
+    bool isCorrupted() const {
+        return mIsCorrupted;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(PatriciaTriePolicy);
+
+    const MmappedBuffer::MmappedBufferPtr mMmappedBuffer;
+    const HeaderPolicy mHeaderPolicy;
+    const uint8_t *const mDictRoot;
+    const int mDictBufferSize;
+    const BigramListPolicy mBigramListPolicy;
+    const ShortcutListPolicy mShortcutListPolicy;
+    const Ver2ParticiaTrieNodeReader mPtNodeReader;
+    const Ver2PtNodeArrayReader mPtNodeArrayReader;
+    std::vector<int> mTerminalPtNodePositionsForIteratingWords;
+    mutable bool mIsCorrupted;
+
+    int getBigramsPositionOfPtNode(const int ptNodePos) const;
+    int createAndGetLeavingChildNode(const DicNode *const dicNode, const int ptNodePos,
+            DicNodeVector *const childDicNodes) const;
+};
+} // namespace latinime
+#endif // LATINIME_PATRICIA_TRIE_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h
new file mode 100644
index 0000000..8e16ccc
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/shortcut/shortcut_list_policy.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SHORTCUT_LIST_POLICY_H
+#define LATINIME_SHORTCUT_LIST_POLICY_H
+
+#include <cstdint>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
+
+namespace latinime {
+
+class ShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
+ public:
+    explicit ShortcutListPolicy(const uint8_t *const shortcutBuf)
+            : mShortcutsBuf(shortcutBuf) {}
+
+    ~ShortcutListPolicy() {}
+
+    int getStartPos(const int pos) const {
+        if (pos == NOT_A_DICT_POS) {
+            return NOT_A_DICT_POS;
+        }
+        int listPos = pos;
+        ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(mShortcutsBuf, &listPos);
+        return listPos;
+    }
+
+    void getNextShortcut(const int maxCodePointCount, int *const outCodePoint,
+            int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext,
+            int *const pos) const {
+        const ShortcutListReadingUtils::ShortcutFlags flags =
+                ShortcutListReadingUtils::getFlagsAndForwardPointer(mShortcutsBuf, pos);
+        if (outHasNext) {
+            *outHasNext = ShortcutListReadingUtils::hasNext(flags);
+        }
+        if (outIsWhitelist) {
+            *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(flags);
+        }
+        if (outCodePoint) {
+            *outCodePointCount = ShortcutListReadingUtils::readShortcutTarget(
+                        mShortcutsBuf, maxCodePointCount, outCodePoint, pos);
+        }
+    }
+
+    void skipAllShortcuts(int *const pos) const {
+        const int shortcutListSize = ShortcutListReadingUtils
+                ::getShortcutListSizeAndForwardPointer(mShortcutsBuf, pos);
+        *pos += shortcutListSize;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutListPolicy);
+
+    const uint8_t *const mShortcutsBuf;
+};
+} // namespace latinime
+#endif // LATINIME_SHORTCUT_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.cpp
new file mode 100644
index 0000000..c1e9387
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+
+namespace latinime {
+
+const PtNodeParams Ver2ParticiaTrieNodeReader::fetchPtNodeParamsInBufferFromPtNodePos(
+        const int ptNodePos) const {
+    if (ptNodePos < 0 || ptNodePos >= mDictSize) {
+        // Reading invalid position because of bug or broken dictionary.
+        AKLOGE("Fetching PtNode info from invalid dictionary position: %d, dictionary size: %d",
+                ptNodePos, mDictSize);
+        ASSERT(false);
+        return PtNodeParams();
+    }
+    PatriciaTrieReadingUtils::NodeFlags flags;
+    int mergedNodeCodePointCount = 0;
+    int mergedNodeCodePoints[MAX_WORD_LENGTH];
+    int probability = NOT_A_PROBABILITY;
+    int childrenPos = NOT_A_DICT_POS;
+    int shortcutPos = NOT_A_DICT_POS;
+    int bigramPos = NOT_A_DICT_POS;
+    int siblingPos = NOT_A_DICT_POS;
+    PatriciaTrieReadingUtils::readPtNodeInfo(mDictBuffer, ptNodePos, mShortuctPolicy,
+            mBigramPolicy, &flags, &mergedNodeCodePointCount, mergedNodeCodePoints, &probability,
+            &childrenPos, &shortcutPos, &bigramPos, &siblingPos);
+    if (mergedNodeCodePointCount <= 0) {
+        AKLOGE("Empty PtNode is not allowed. Code point count: %d", mergedNodeCodePointCount);
+        ASSERT(false);
+        return PtNodeParams();
+    }
+    return PtNodeParams(ptNodePos, flags, mergedNodeCodePointCount, mergedNodeCodePoints,
+            probability, childrenPos, shortcutPos, bigramPos, siblingPos);
+}
+
+}
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.h
new file mode 100644
index 0000000..f0725b6
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_patricia_trie_node_reader.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER2_PATRICIA_TRIE_NODE_READER_H
+#define LATINIME_VER2_PATRICIA_TRIE_NODE_READER_H
+
+#include <cstdint>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h"
+
+namespace latinime {
+
+class DictionaryBigramsStructurePolicy;
+class DictionaryShortcutsStructurePolicy;
+
+class Ver2ParticiaTrieNodeReader : public PtNodeReader {
+ public:
+    Ver2ParticiaTrieNodeReader(const uint8_t *const dictBuffer, const int dictSize,
+            const DictionaryBigramsStructurePolicy *const bigramPolicy,
+            const DictionaryShortcutsStructurePolicy *const shortcutPolicy)
+            : mDictBuffer(dictBuffer), mDictSize(dictSize), mBigramPolicy(bigramPolicy),
+              mShortuctPolicy(shortcutPolicy) {}
+
+    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const;
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver2ParticiaTrieNodeReader);
+
+    const uint8_t *const mDictBuffer;
+    const int mDictSize;
+    const DictionaryBigramsStructurePolicy *const mBigramPolicy;
+    const DictionaryShortcutsStructurePolicy *const mShortuctPolicy;
+};
+} // namespace latinime
+#endif /* LATINIME_VER2_PATRICIA_TRIE_NODE_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp
new file mode 100644
index 0000000..b46617d
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+
+namespace latinime {
+
+bool Ver2PtNodeArrayReader::readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+        int *const outPtNodeCount, int *const outFirstPtNodePos) const {
+    if (ptNodeArrayPos < 0 || ptNodeArrayPos >= mDictSize) {
+        // Reading invalid position because of a bug or a broken dictionary.
+        AKLOGE("Reading PtNode array info from invalid dictionary position: %d, dict size: %d",
+                ptNodeArrayPos, mDictSize);
+        ASSERT(false);
+        return false;
+    }
+    int readingPos = ptNodeArrayPos;
+    const int ptNodeCountInArray = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
+            mDictBuffer, &readingPos);
+    *outPtNodeCount = ptNodeCountInArray;
+    *outFirstPtNodePos = readingPos;
+    return true;
+}
+
+bool Ver2PtNodeArrayReader::readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+        int *const outNextPtNodeArrayPos) const {
+    if (forwordLinkPos < 0 || forwordLinkPos >= mDictSize) {
+        // Reading invalid position because of bug or broken dictionary.
+        AKLOGE("Reading forward link from invalid dictionary position: %d, dict size: %d",
+                forwordLinkPos, mDictSize);
+        ASSERT(false);
+        return false;
+    }
+    // Ver2 dicts don't have forward links.
+    *outNextPtNodeArrayPos = NOT_A_DICT_POS;
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h
new file mode 100644
index 0000000..5482721
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/ver2_pt_node_array_reader.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER2_PT_NODE_ARRAY_READER_H
+#define LATINIME_VER2_PT_NODE_ARRAY_READER_H
+
+#include <cstdint>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h"
+
+namespace latinime {
+
+class Ver2PtNodeArrayReader : public PtNodeArrayReader {
+ public:
+    Ver2PtNodeArrayReader(const uint8_t *const dictBuffer, const int dictSize)
+            : mDictBuffer(dictBuffer), mDictSize(dictSize) {};
+
+    virtual bool readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+            int *const outPtNodeCount, int *const outFirstPtNodePos) const;
+    virtual bool readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+            int *const outNextPtNodeArrayPos) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver2PtNodeArrayReader);
+
+    const uint8_t *const mDictBuffer;
+    const int mDictSize;
+};
+} // namespace latinime
+#endif /* LATINIME_VER2_PT_NODE_ARRAY_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp
new file mode 100644
index 0000000..08dc107
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.cpp
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
+
+#include "suggest/core/dictionary/property/bigram_property.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/bigram/bigram_list_read_write_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+
+void Ver4BigramListPolicy::getNextBigram(int *const outBigramPos, int *const outProbability,
+        bool *const outHasNext, int *const bigramEntryPos) const {
+    const BigramEntry bigramEntry =
+            mBigramDictContent->getBigramEntryAndAdvancePosition(bigramEntryPos);
+    if (outBigramPos) {
+        // Lookup target PtNode position.
+        *outBigramPos = mTerminalPositionLookupTable->getTerminalPtNodePosition(
+                bigramEntry.getTargetTerminalId());
+    }
+    if (outProbability) {
+        if (bigramEntry.hasHistoricalInfo()) {
+            *outProbability =
+                    ForgettingCurveUtils::decodeProbability(bigramEntry.getHistoricalInfo(),
+                            mHeaderPolicy);
+        } else {
+            *outProbability = bigramEntry.getProbability();
+        }
+    }
+    if (outHasNext) {
+        *outHasNext = bigramEntry.hasNext();
+    }
+}
+
+bool Ver4BigramListPolicy::addNewEntry(const int terminalId, const int newTargetTerminalId,
+        const BigramProperty *const bigramProperty, bool *const outAddedNewEntry) {
+    // 1. The word has no bigrams yet.
+    // 2. The word has bigrams, and there is the target in the list.
+    // 3. The word has bigrams, and there is an invalid entry that can be reclaimed.
+    // 4. The word has bigrams. We have to append new bigram entry to the list.
+    // 5. Same as 4, but the list is the last entry of the content file.
+    if (outAddedNewEntry) {
+        *outAddedNewEntry = false;
+    }
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Case 1. PtNode that doesn't have a bigram list.
+        // Create new bigram list.
+        if (!mBigramDictContent->createNewBigramList(terminalId)) {
+            return false;
+        }
+        const BigramEntry newBigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                newTargetTerminalId);
+        const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(&newBigramEntry,
+                bigramProperty);
+        // Write an entry.
+        int writingPos =  mBigramDictContent->getBigramListHeadPos(terminalId);
+        if (!mBigramDictContent->writeBigramEntryAndAdvancePosition(&bigramEntryToWrite,
+                &writingPos)) {
+            AKLOGE("Cannot write bigram entry. pos: %d.", writingPos);
+            return false;
+        }
+        if (!mBigramDictContent->writeTerminator(writingPos)) {
+            AKLOGE("Cannot write bigram list terminator. pos: %d.", writingPos);
+            return false;
+        }
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+        return true;
+    }
+
+    int tailEntryPos = NOT_A_DICT_POS;
+    const int entryPosToUpdate = getEntryPosToUpdate(newTargetTerminalId, bigramListPos,
+            &tailEntryPos);
+    if (entryPosToUpdate == NOT_A_DICT_POS) {
+        // Case 4, 5. Add new entry to the bigram list.
+        const int contentTailPos = mBigramDictContent->getContentTailPos();
+        // If the tail entry is at the tail of content buffer, the new entry can be written without
+        // link (Case 5).
+        const bool canAppendEntry =
+                contentTailPos == tailEntryPos + mBigramDictContent->getBigramEntrySize();
+        const int newEntryPos = canAppendEntry ? tailEntryPos : contentTailPos;
+        int writingPos = newEntryPos;
+        // Write new entry at the tail position of the bigram content.
+        const BigramEntry newBigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                newTargetTerminalId);
+        const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(
+                &newBigramEntry, bigramProperty);
+        if (!mBigramDictContent->writeBigramEntryAndAdvancePosition(&bigramEntryToWrite,
+                &writingPos)) {
+            AKLOGE("Cannot write bigram entry. pos: %d.", writingPos);
+            return false;
+        }
+        if (!mBigramDictContent->writeTerminator(writingPos)) {
+            AKLOGE("Cannot write bigram list terminator. pos: %d.", writingPos);
+            return false;
+        }
+        if (!canAppendEntry) {
+            // Update link of the current tail entry.
+            if (!mBigramDictContent->writeLink(newEntryPos, tailEntryPos)) {
+                AKLOGE("Cannot update bigram entry link. pos: %d, linked entry pos: %d.",
+                        tailEntryPos, newEntryPos);
+                return false;
+            }
+        }
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+        return true;
+    }
+
+    // Case 2. Overwrite the existing entry. Case 3. Reclaim and reuse the existing invalid entry.
+    const BigramEntry originalBigramEntry = mBigramDictContent->getBigramEntry(entryPosToUpdate);
+    if (!originalBigramEntry.isValid()) {
+        // Case 3. Reuse the existing invalid entry. outAddedNewEntry is false when an existing
+        // entry is updated.
+        if (outAddedNewEntry) {
+            *outAddedNewEntry = true;
+        }
+    }
+    const BigramEntry updatedBigramEntry =
+            originalBigramEntry.updateTargetTerminalIdAndGetEntry(newTargetTerminalId);
+    const BigramEntry bigramEntryToWrite = createUpdatedBigramEntryFrom(
+            &updatedBigramEntry, bigramProperty);
+    return mBigramDictContent->writeBigramEntry(&bigramEntryToWrite, entryPosToUpdate);
+}
+
+bool Ver4BigramListPolicy::removeEntry(const int terminalId, const int targetTerminalId) {
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Bigram list doesn't exist.
+        return false;
+    }
+    const int entryPosToUpdate = getEntryPosToUpdate(targetTerminalId, bigramListPos,
+            nullptr /* outTailEntryPos */);
+    if (entryPosToUpdate == NOT_A_DICT_POS) {
+        // Bigram entry doesn't exist.
+        return false;
+    }
+    const BigramEntry bigramEntry = mBigramDictContent->getBigramEntry(entryPosToUpdate);
+    if (targetTerminalId != bigramEntry.getTargetTerminalId()) {
+        // Bigram entry doesn't exist.
+        return false;
+    }
+    // Remove bigram entry by marking it as invalid entry and overwriting the original entry.
+    const BigramEntry updatedBigramEntry = bigramEntry.getInvalidatedEntry();
+    return mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPosToUpdate);
+}
+
+bool Ver4BigramListPolicy::updateAllBigramEntriesAndDeleteUselessEntries(const int terminalId,
+        int *const outBigramCount) {
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Bigram list doesn't exist.
+        return true;
+    }
+    bool hasNext = true;
+    int readingPos = bigramListPos;
+    while (hasNext) {
+        const BigramEntry bigramEntry =
+                mBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        const int entryPos = readingPos - mBigramDictContent->getBigramEntrySize();
+        hasNext = bigramEntry.hasNext();
+        if (!bigramEntry.isValid()) {
+            continue;
+        }
+        const int targetPtNodePos = mTerminalPositionLookupTable->getTerminalPtNodePosition(
+                bigramEntry.getTargetTerminalId());
+        if (targetPtNodePos == NOT_A_DICT_POS) {
+            // Invalidate bigram entry.
+            const BigramEntry updatedBigramEntry = bigramEntry.getInvalidatedEntry();
+            if (!mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPos)) {
+                return false;
+            }
+        } else if (bigramEntry.hasHistoricalInfo()) {
+            const HistoricalInfo historicalInfo = ForgettingCurveUtils::createHistoricalInfoToSave(
+                    bigramEntry.getHistoricalInfo(), mHeaderPolicy);
+            if (ForgettingCurveUtils::needsToKeep(&historicalInfo, mHeaderPolicy)) {
+                const BigramEntry updatedBigramEntry =
+                        bigramEntry.updateHistoricalInfoAndGetEntry(&historicalInfo);
+                if (!mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPos)) {
+                    return false;
+                }
+                *outBigramCount += 1;
+            } else {
+                // Remove entry.
+                const BigramEntry updatedBigramEntry = bigramEntry.getInvalidatedEntry();
+                if (!mBigramDictContent->writeBigramEntry(&updatedBigramEntry, entryPos)) {
+                    return false;
+                }
+            }
+        } else {
+            *outBigramCount += 1;
+        }
+    }
+    return true;
+}
+
+int Ver4BigramListPolicy::getBigramEntryConut(const int terminalId) {
+    const int bigramListPos = mBigramDictContent->getBigramListHeadPos(terminalId);
+    if (bigramListPos == NOT_A_DICT_POS) {
+        // Bigram list doesn't exist.
+        return 0;
+    }
+    int bigramCount = 0;
+    bool hasNext = true;
+    int readingPos = bigramListPos;
+    while (hasNext) {
+        const BigramEntry bigramEntry =
+                mBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = bigramEntry.hasNext();
+        if (bigramEntry.isValid()) {
+            bigramCount++;
+        }
+    }
+    return bigramCount;
+}
+
+int Ver4BigramListPolicy::getEntryPosToUpdate(const int targetTerminalIdToFind,
+        const int bigramListPos, int *const outTailEntryPos) const {
+    if (outTailEntryPos) {
+        *outTailEntryPos = NOT_A_DICT_POS;
+    }
+    int invalidEntryPos = NOT_A_DICT_POS;
+    int readingPos = bigramListPos;
+    while (true) {
+        const BigramEntry bigramEntry =
+                mBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        const int entryPos = readingPos - mBigramDictContent->getBigramEntrySize();
+        if (!bigramEntry.hasNext()) {
+            if (outTailEntryPos) {
+                *outTailEntryPos = entryPos;
+            }
+            break;
+        }
+        if (bigramEntry.getTargetTerminalId() == targetTerminalIdToFind) {
+            // Entry with same target is found.
+            return entryPos;
+        } else if (!bigramEntry.isValid()) {
+            // Invalid entry that can be reused is found.
+            invalidEntryPos = entryPos;
+        }
+    }
+    return invalidEntryPos;
+}
+
+const BigramEntry Ver4BigramListPolicy::createUpdatedBigramEntryFrom(
+        const BigramEntry *const originalBigramEntry,
+        const BigramProperty *const bigramProperty) const {
+    // TODO: Consolidate historical info and probability.
+    if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
+        const HistoricalInfo historicalInfoForUpdate(bigramProperty->getTimestamp(),
+                bigramProperty->getLevel(), bigramProperty->getCount());
+        const HistoricalInfo updatedHistoricalInfo =
+                ForgettingCurveUtils::createUpdatedHistoricalInfo(
+                        originalBigramEntry->getHistoricalInfo(), bigramProperty->getProbability(),
+                        &historicalInfoForUpdate, mHeaderPolicy);
+        return originalBigramEntry->updateHistoricalInfoAndGetEntry(&updatedHistoricalInfo);
+    } else {
+        return originalBigramEntry->updateProbabilityAndGetEntry(bigramProperty->getProbability());
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h
new file mode 100644
index 0000000..55ba613
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_BIGRAM_LIST_POLICY_H
+#define LATINIME_VER4_BIGRAM_LIST_POLICY_H
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_bigrams_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/bigram_entry.h"
+
+namespace latinime {
+
+class BigramDictContent;
+class BigramProperty;
+class HeaderPolicy;
+class TerminalPositionLookupTable;
+
+class Ver4BigramListPolicy : public DictionaryBigramsStructurePolicy {
+ public:
+    Ver4BigramListPolicy(BigramDictContent *const bigramDictContent,
+            const TerminalPositionLookupTable *const terminalPositionLookupTable,
+            const HeaderPolicy *const headerPolicy)
+            : mBigramDictContent(bigramDictContent),
+              mTerminalPositionLookupTable(terminalPositionLookupTable),
+              mHeaderPolicy(headerPolicy) {}
+
+    void getNextBigram(int *const outBigramPos, int *const outProbability,
+            bool *const outHasNext, int *const bigramEntryPos) const;
+
+    void skipAllBigrams(int *const pos) const {
+        // Do nothing because we don't need to skip bigram lists in ver4 dictionaries.
+    }
+
+    bool addNewEntry(const int terminalId, const int newTargetTerminalId,
+            const BigramProperty *const bigramProperty, bool *const outAddedNewEntry);
+
+    bool removeEntry(const int terminalId, const int targetTerminalId);
+
+    bool updateAllBigramEntriesAndDeleteUselessEntries(const int terminalId,
+            int *const outBigramCount);
+
+    int getBigramEntryConut(const int terminalId);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4BigramListPolicy);
+
+    int getEntryPosToUpdate(const int targetTerminalIdToFind, const int bigramListPos,
+            int *const outTailEntryPos) const;
+
+    const BigramEntry createUpdatedBigramEntryFrom(const BigramEntry *const originalBigramEntry,
+            const BigramProperty *const bigramProperty) const;
+
+    BigramDictContent *const mBigramDictContent;
+    const TerminalPositionLookupTable *const mTerminalPositionLookupTable;
+    const HeaderPolicy *const mHeaderPolicy;
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_BIGRAM_LIST_POLICY_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp
new file mode 100644
index 0000000..d7e1952
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.cpp
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+const int BigramDictContent::INVALID_LINKED_ENTRY_POS = Ver4DictConstants::NOT_A_TERMINAL_ID;
+
+const BigramEntry BigramDictContent::getBigramEntryAndAdvancePosition(
+        int *const bigramEntryPos) const {
+    const BufferWithExtendableBuffer *const bigramListBuffer = getContentBuffer();
+    const int bigramEntryTailPos = (*bigramEntryPos) + getBigramEntrySize();
+    if (*bigramEntryPos < 0 || bigramEntryTailPos > bigramListBuffer->getTailPosition()) {
+        AKLOGE("Invalid bigram entry position. bigramEntryPos: %d, bigramEntryTailPos: %d, "
+                "bufSize: %d", *bigramEntryPos, bigramEntryTailPos,
+                        bigramListBuffer->getTailPosition());
+        ASSERT(false);
+        return BigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                Ver4DictConstants::NOT_A_TERMINAL_ID);
+    }
+    const int bigramFlags = bigramListBuffer->readUintAndAdvancePosition(
+            Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE, bigramEntryPos);
+    const bool isLink = (bigramFlags & Ver4DictConstants::BIGRAM_IS_LINK_MASK) != 0;
+    int probability = NOT_A_PROBABILITY;
+    int timestamp = NOT_A_TIMESTAMP;
+    int level = 0;
+    int count = 0;
+    if (mHasHistoricalInfo) {
+        timestamp = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, bigramEntryPos);
+        level = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, bigramEntryPos);
+        count = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, bigramEntryPos);
+    } else {
+        probability = bigramListBuffer->readUintAndAdvancePosition(
+                Ver4DictConstants::PROBABILITY_SIZE, bigramEntryPos);
+    }
+    const int encodedTargetTerminalId = bigramListBuffer->readUintAndAdvancePosition(
+            Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE, bigramEntryPos);
+    const int targetTerminalId =
+            (encodedTargetTerminalId == Ver4DictConstants::INVALID_BIGRAM_TARGET_TERMINAL_ID) ?
+                    Ver4DictConstants::NOT_A_TERMINAL_ID : encodedTargetTerminalId;
+    if (isLink) {
+        const int linkedEntryPos = targetTerminalId;
+        if (linkedEntryPos == INVALID_LINKED_ENTRY_POS) {
+            // Bigram list terminator is found.
+            return BigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
+                    Ver4DictConstants::NOT_A_TERMINAL_ID);
+        }
+        *bigramEntryPos = linkedEntryPos;
+        return getBigramEntryAndAdvancePosition(bigramEntryPos);
+    }
+    // hasNext is always true because we should continue to read the next entry until the terminator
+    // is found.
+    if (mHasHistoricalInfo) {
+        const HistoricalInfo historicalInfo(timestamp, level, count);
+        return BigramEntry(true /* hasNext */, probability, &historicalInfo, targetTerminalId);
+    } else {
+        return BigramEntry(true /* hasNext */, probability, targetTerminalId);
+    }
+}
+
+bool BigramDictContent::writeBigramEntryAndAdvancePosition(
+        const BigramEntry *const bigramEntryToWrite, int *const entryWritingPos) {
+    return writeBigramEntryAttributesAndAdvancePosition(false /* isLink */,
+            bigramEntryToWrite->getProbability(), bigramEntryToWrite->getTargetTerminalId(),
+            bigramEntryToWrite->getHistoricalInfo()->getTimeStamp(),
+            bigramEntryToWrite->getHistoricalInfo()->getLevel(),
+            bigramEntryToWrite->getHistoricalInfo()->getCount(),
+            entryWritingPos);
+}
+
+bool BigramDictContent::writeBigramEntryAttributesAndAdvancePosition(
+        const bool isLink, const int probability, const int targetTerminalId,
+        const int timestamp, const int level, const int count, int *const entryWritingPos) {
+    BufferWithExtendableBuffer *const bigramListBuffer = getWritableContentBuffer();
+    const int bigramFlags = isLink ? Ver4DictConstants::BIGRAM_IS_LINK_MASK : 0;
+    if (!bigramListBuffer->writeUintAndAdvancePosition(bigramFlags,
+            Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE, entryWritingPos)) {
+        AKLOGE("Cannot write bigram flags. pos: %d, flags: %x", *entryWritingPos, bigramFlags);
+        return false;
+    }
+    if (mHasHistoricalInfo) {
+        if (!bigramListBuffer->writeUintAndAdvancePosition(timestamp,
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram timestamps. pos: %d, timestamp: %d", *entryWritingPos,
+                    timestamp);
+            return false;
+        }
+        if (!bigramListBuffer->writeUintAndAdvancePosition(level,
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram level. pos: %d, level: %d", *entryWritingPos,
+                    level);
+            return false;
+        }
+        if (!bigramListBuffer->writeUintAndAdvancePosition(count,
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram count. pos: %d, count: %d", *entryWritingPos,
+                    count);
+            return false;
+        }
+    } else {
+        if (!bigramListBuffer->writeUintAndAdvancePosition(probability,
+                Ver4DictConstants::PROBABILITY_SIZE, entryWritingPos)) {
+            AKLOGE("Cannot write bigram probability. pos: %d, probability: %d", *entryWritingPos,
+                    probability);
+            return false;
+        }
+    }
+    const int targetTerminalIdToWrite = (targetTerminalId == Ver4DictConstants::NOT_A_TERMINAL_ID) ?
+            Ver4DictConstants::INVALID_BIGRAM_TARGET_TERMINAL_ID : targetTerminalId;
+    if (!bigramListBuffer->writeUintAndAdvancePosition(targetTerminalIdToWrite,
+            Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE, entryWritingPos)) {
+        AKLOGE("Cannot write bigram target terminal id. pos: %d, target terminal id: %d",
+                *entryWritingPos, targetTerminalId);
+        return false;
+    }
+    return true;
+}
+
+bool BigramDictContent::writeLink(const int linkedEntryPos, const int writingPos) {
+    const int targetTerminalId = linkedEntryPos;
+    int pos = writingPos;
+    return writeBigramEntryAttributesAndAdvancePosition(true /* isLink */,
+            NOT_A_PROBABILITY /* probability */, targetTerminalId, NOT_A_TIMESTAMP, 0 /* level */,
+            0 /* count */, &pos);
+}
+
+bool BigramDictContent::runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        const BigramDictContent *const originalBigramDictContent,
+        int *const outBigramEntryCount) {
+    for (TerminalPositionLookupTable::TerminalIdMap::const_iterator it = terminalIdMap->begin();
+            it != terminalIdMap->end(); ++it) {
+        const int originalBigramListPos =
+                originalBigramDictContent->getBigramListHeadPos(it->first);
+        if (originalBigramListPos == NOT_A_DICT_POS) {
+            // This terminal does not have a bigram list.
+            continue;
+        }
+        const int bigramListPos = getContentBuffer()->getTailPosition();
+        int bigramEntryCount = 0;
+        // Copy bigram list with GC from original content.
+        if (!runGCBigramList(originalBigramListPos, originalBigramDictContent, bigramListPos,
+                terminalIdMap, &bigramEntryCount)) {
+            AKLOGE("Cannot complete GC for the bigram list. original pos: %d, pos: %d",
+                    originalBigramListPos, bigramListPos);
+            return false;
+        }
+        if (bigramEntryCount == 0) {
+            // All bigram entries are useless. This terminal does not have a bigram list.
+            continue;
+        }
+        *outBigramEntryCount += bigramEntryCount;
+        // Set bigram list position to the lookup table.
+        if (!getUpdatableAddressLookupTable()->set(it->second, bigramListPos)) {
+            AKLOGE("Cannot set bigram list position. terminal id: %d, pos: %d",
+                    it->second, bigramListPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+// Returns whether GC for the bigram list was succeeded or not.
+bool BigramDictContent::runGCBigramList(const int bigramListPos,
+        const BigramDictContent *const sourceBigramDictContent, const int toPos,
+        const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        int *const outEntryCount) {
+    bool hasNext = true;
+    int readingPos = bigramListPos;
+    int writingPos = toPos;
+    while (hasNext) {
+        const BigramEntry originalBigramEntry =
+                sourceBigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+        hasNext = originalBigramEntry.hasNext();
+        if (!originalBigramEntry.isValid()) {
+            continue;
+        }
+        TerminalPositionLookupTable::TerminalIdMap::const_iterator it =
+                terminalIdMap->find(originalBigramEntry.getTargetTerminalId());
+        if (it == terminalIdMap->end()) {
+            // Target word has been removed.
+            continue;
+        }
+        const BigramEntry updatedBigramEntry =
+                originalBigramEntry.updateTargetTerminalIdAndGetEntry(it->second);
+        if (!writeBigramEntryAndAdvancePosition(&updatedBigramEntry, &writingPos)) {
+            AKLOGE("Cannot write bigram entry to run GC. pos: %d", writingPos);
+            return false;
+        }
+        *outEntryCount += 1;
+    }
+    if (*outEntryCount > 0) {
+        if (!writeTerminator(writingPos)) {
+            AKLOGE("Cannot write terminator to run GC. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
new file mode 100644
index 0000000..361dd2c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_BIGRAM_DICT_CONTENT_H
+#define LATINIME_BIGRAM_DICT_CONTENT_H
+
+#include <cstdint>
+#include <cstdio>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/bigram_entry.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+
+namespace latinime {
+
+class BigramDictContent : public SparseTableDictContent {
+ public:
+    BigramDictContent(uint8_t *const *buffers, const int *bufferSizes, const bool hasHistoricalInfo)
+            : SparseTableDictContent(buffers, bufferSizes,
+                      Ver4DictConstants::BIGRAM_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::BIGRAM_ADDRESS_TABLE_DATA_SIZE),
+              mHasHistoricalInfo(hasHistoricalInfo) {}
+
+    BigramDictContent(const bool hasHistoricalInfo)
+            : SparseTableDictContent(Ver4DictConstants::BIGRAM_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::BIGRAM_ADDRESS_TABLE_DATA_SIZE),
+              mHasHistoricalInfo(hasHistoricalInfo) {}
+
+    int getContentTailPos() const {
+        return getContentBuffer()->getTailPosition();
+    }
+
+    const BigramEntry getBigramEntry(const int bigramEntryPos) const {
+        int readingPos = bigramEntryPos;
+        return getBigramEntryAndAdvancePosition(&readingPos);
+    }
+
+    const BigramEntry getBigramEntryAndAdvancePosition(int *const bigramEntryPos) const;
+
+    // Returns head position of bigram list for a PtNode specified by terminalId.
+    int getBigramListHeadPos(const int terminalId) const {
+        const SparseTable *const addressLookupTable = getAddressLookupTable();
+        if (!addressLookupTable->contains(terminalId)) {
+            return NOT_A_DICT_POS;
+        }
+        return addressLookupTable->get(terminalId);
+    }
+
+    bool writeBigramEntryAtTail(const BigramEntry *const bigramEntryToWrite) {
+        int writingPos = getContentBuffer()->getTailPosition();
+        return writeBigramEntryAndAdvancePosition(bigramEntryToWrite, &writingPos);
+    }
+
+    bool writeBigramEntry(const BigramEntry *const bigramEntryToWrite, const int entryWritingPos) {
+        int writingPos = entryWritingPos;
+        return writeBigramEntryAndAdvancePosition(bigramEntryToWrite, &writingPos);
+    }
+
+    bool writeBigramEntryAndAdvancePosition(const BigramEntry *const bigramEntryToWrite,
+            int *const entryWritingPos);
+
+    bool writeTerminator(const int writingPos) {
+        // Terminator is a link to the invalid position.
+        return writeLink(INVALID_LINKED_ENTRY_POS, writingPos);
+    }
+
+    bool writeLink(const int linkedPos, const int writingPos);
+
+    bool createNewBigramList(const int terminalId) {
+        const int bigramListPos = getContentBuffer()->getTailPosition();
+        return getUpdatableAddressLookupTable()->set(terminalId, bigramListPos);
+    }
+
+    bool flushToFile(FILE *const file) const {
+        return flush(file);
+    }
+
+    bool runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+            const BigramDictContent *const originalBigramDictContent,
+            int *const outBigramEntryCount);
+
+    int getBigramEntrySize() const {
+        if (mHasHistoricalInfo) {
+            return Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE
+                    + Ver4DictConstants::TIME_STAMP_FIELD_SIZE
+                    + Ver4DictConstants::WORD_LEVEL_FIELD_SIZE
+                    + Ver4DictConstants::WORD_COUNT_FIELD_SIZE
+                    + Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
+        } else {
+            return Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE
+                    + Ver4DictConstants::PROBABILITY_SIZE
+                    + Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
+        }
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(BigramDictContent);
+
+    static const int INVALID_LINKED_ENTRY_POS;
+
+    bool writeBigramEntryAttributesAndAdvancePosition(
+            const bool isLink, const int probability, const int targetTerminalId,
+            const int timestamp, const int level, const int count, int *const entryWritingPos);
+
+    bool runGCBigramList(const int bigramListPos,
+            const BigramDictContent *const sourceBigramDictContent, const int toPos,
+            const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+            int *const outEntryCount);
+
+    bool mHasHistoricalInfo;
+};
+} // namespace latinime
+#endif /* LATINIME_BIGRAM_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_entry.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_entry.h
new file mode 100644
index 0000000..2b0cbd9
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/bigram_entry.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_BIGRAM_ENTRY_H
+#define LATINIME_BIGRAM_ENTRY_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/historical_info.h"
+
+namespace latinime {
+
+class BigramEntry {
+ public:
+    BigramEntry(const BigramEntry& bigramEntry)
+            : mHasNext(bigramEntry.mHasNext), mProbability(bigramEntry.mProbability),
+              mHistoricalInfo(), mTargetTerminalId(bigramEntry.mTargetTerminalId) {}
+
+    // Entry with historical information.
+    BigramEntry(const bool hasNext, const int probability, const int targetTerminalId)
+            : mHasNext(hasNext), mProbability(probability), mHistoricalInfo(),
+              mTargetTerminalId(targetTerminalId) {}
+
+    // Entry with historical information.
+    BigramEntry(const bool hasNext, const int probability,
+            const HistoricalInfo *const historicalInfo, const int targetTerminalId)
+            : mHasNext(hasNext), mProbability(probability), mHistoricalInfo(*historicalInfo),
+              mTargetTerminalId(targetTerminalId) {}
+
+    const BigramEntry getInvalidatedEntry() const {
+        return updateTargetTerminalIdAndGetEntry(Ver4DictConstants::NOT_A_TERMINAL_ID);
+    }
+
+    const BigramEntry updateHasNextAndGetEntry(const bool hasNext) const {
+        return BigramEntry(hasNext, mProbability, &mHistoricalInfo, mTargetTerminalId);
+    }
+
+    const BigramEntry updateTargetTerminalIdAndGetEntry(const int newTargetTerminalId) const {
+        return BigramEntry(mHasNext, mProbability, &mHistoricalInfo, newTargetTerminalId);
+    }
+
+    const BigramEntry updateProbabilityAndGetEntry(const int probability) const {
+        return BigramEntry(mHasNext, probability, &mHistoricalInfo, mTargetTerminalId);
+    }
+
+    const BigramEntry updateHistoricalInfoAndGetEntry(
+            const HistoricalInfo *const historicalInfo) const {
+        return BigramEntry(mHasNext, mProbability, historicalInfo, mTargetTerminalId);
+    }
+
+    bool isValid() const {
+        return mTargetTerminalId != Ver4DictConstants::NOT_A_TERMINAL_ID;
+    }
+
+    bool hasNext() const {
+        return mHasNext;
+    }
+
+    int getProbability() const {
+        return mProbability;
+    }
+
+    bool hasHistoricalInfo() const {
+        return mHistoricalInfo.isValid();
+    }
+
+    const HistoricalInfo *getHistoricalInfo() const {
+        return &mHistoricalInfo;
+    }
+
+    int getTargetTerminalId() const {
+        return mTargetTerminalId;
+    }
+
+ private:
+    // Copy constructor is public to use this class as a type of return value.
+    DISALLOW_DEFAULT_CONSTRUCTOR(BigramEntry);
+    DISALLOW_ASSIGNMENT_OPERATOR(BigramEntry);
+
+    const bool mHasNext;
+    const int mProbability;
+    const HistoricalInfo mHistoricalInfo;
+    const int mTargetTerminalId;
+};
+} // namespace latinime
+#endif /* LATINIME_BIGRAM_ENTRY_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/dict_content.h
new file mode 100644
index 0000000..c264aea
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/dict_content.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DICT_CONTENT_H
+#define LATINIME_DICT_CONTENT_H
+
+#include "defines.h"
+
+namespace latinime {
+
+class DictContent {
+ public:
+    virtual ~DictContent() {}
+
+ protected:
+    DictContent() {}
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(DictContent);
+};
+} // namespace latinime
+#endif /* LATINIME_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.cpp
new file mode 100644
index 0000000..2425b3b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.cpp
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+const ProbabilityEntry ProbabilityDictContent::getProbabilityEntry(const int terminalId) const {
+    if (terminalId < 0 || terminalId >= mSize) {
+        // This method can be called with invalid terminal id during GC.
+        return ProbabilityEntry(0 /* flags */, NOT_A_PROBABILITY);
+    }
+    const BufferWithExtendableBuffer *const buffer = getBuffer();
+    int entryPos = getEntryPos(terminalId);
+    const int flags = buffer->readUintAndAdvancePosition(
+            Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE, &entryPos);
+    const int probability = buffer->readUintAndAdvancePosition(
+            Ver4DictConstants::PROBABILITY_SIZE, &entryPos);
+    if (mHasHistoricalInfo) {
+        const int timestamp = buffer->readUintAndAdvancePosition(
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, &entryPos);
+        const int level = buffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, &entryPos);
+        const int count = buffer->readUintAndAdvancePosition(
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, &entryPos);
+        const HistoricalInfo historicalInfo(timestamp, level, count);
+        return ProbabilityEntry(flags, probability, &historicalInfo);
+    } else {
+        return ProbabilityEntry(flags, probability);
+    }
+}
+
+bool ProbabilityDictContent::setProbabilityEntry(const int terminalId,
+        const ProbabilityEntry *const probabilityEntry) {
+    if (terminalId < 0) {
+        return false;
+    }
+    const int entryPos = getEntryPos(terminalId);
+    if (terminalId >= mSize) {
+        ProbabilityEntry dummyEntry;
+        // Write new entry.
+        int writingPos = getBuffer()->getTailPosition();
+        while (writingPos <= entryPos) {
+            // Fulfilling with dummy entries until writingPos.
+            if (!writeEntry(&dummyEntry, writingPos)) {
+                AKLOGE("Cannot write dummy entry. pos: %d, mSize: %d", writingPos, mSize);
+                return false;
+            }
+            writingPos += getEntrySize();
+            mSize++;
+        }
+    }
+    return writeEntry(probabilityEntry, entryPos);
+}
+
+bool ProbabilityDictContent::flushToFile(FILE *const file) const {
+    if (getEntryPos(mSize) < getBuffer()->getTailPosition()) {
+        ProbabilityDictContent probabilityDictContentToWrite(mHasHistoricalInfo);
+        for (int i = 0; i < mSize; ++i) {
+            const ProbabilityEntry probabilityEntry = getProbabilityEntry(i);
+            if (!probabilityDictContentToWrite.setProbabilityEntry(i, &probabilityEntry)) {
+                AKLOGE("Cannot set probability entry in flushToFile. terminalId: %d", i);
+                return false;
+            }
+        }
+        return probabilityDictContentToWrite.flush(file);
+    } else {
+        return flush(file);
+    }
+}
+
+bool ProbabilityDictContent::runGC(
+        const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        const ProbabilityDictContent *const originalProbabilityDictContent) {
+    mSize = 0;
+    for (TerminalPositionLookupTable::TerminalIdMap::const_iterator it = terminalIdMap->begin();
+            it != terminalIdMap->end(); ++it) {
+        const ProbabilityEntry probabilityEntry =
+                originalProbabilityDictContent->getProbabilityEntry(it->first);
+        if (!setProbabilityEntry(it->second, &probabilityEntry)) {
+            AKLOGE("Cannot set probability entry in runGC. terminalId: %d", it->second);
+            return false;
+        }
+        mSize++;
+    }
+    return true;
+}
+
+int ProbabilityDictContent::getEntrySize() const {
+    if (mHasHistoricalInfo) {
+        return Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE
+                + Ver4DictConstants::PROBABILITY_SIZE
+                + Ver4DictConstants::TIME_STAMP_FIELD_SIZE
+                + Ver4DictConstants::WORD_LEVEL_FIELD_SIZE
+                + Ver4DictConstants::WORD_COUNT_FIELD_SIZE;
+    } else {
+        return Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE
+                + Ver4DictConstants::PROBABILITY_SIZE;
+    }
+}
+
+int ProbabilityDictContent::getEntryPos(const int terminalId) const {
+    return terminalId * getEntrySize();
+}
+
+bool ProbabilityDictContent::writeEntry(const ProbabilityEntry *const probabilityEntry,
+        const int entryPos) {
+    BufferWithExtendableBuffer *const bufferToWrite = getWritableBuffer();
+    int writingPos = entryPos;
+    if (!bufferToWrite->writeUintAndAdvancePosition(probabilityEntry->getFlags(),
+            Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE, &writingPos)) {
+        AKLOGE("Cannot write flags in probability dict content. pos: %d", writingPos);
+        return false;
+    }
+    if (!bufferToWrite->writeUintAndAdvancePosition(probabilityEntry->getProbability(),
+            Ver4DictConstants::PROBABILITY_SIZE, &writingPos)) {
+        AKLOGE("Cannot write probability in probability dict content. pos: %d", writingPos);
+        return false;
+    }
+    if (mHasHistoricalInfo) {
+        const HistoricalInfo *const historicalInfo = probabilityEntry->getHistoricalInfo();
+        if (!bufferToWrite->writeUintAndAdvancePosition(historicalInfo->getTimeStamp(),
+                Ver4DictConstants::TIME_STAMP_FIELD_SIZE, &writingPos)) {
+            AKLOGE("Cannot write timestamp in probability dict content. pos: %d", writingPos);
+            return false;
+        }
+        if (!bufferToWrite->writeUintAndAdvancePosition(historicalInfo->getLevel(),
+                Ver4DictConstants::WORD_LEVEL_FIELD_SIZE, &writingPos)) {
+            AKLOGE("Cannot write level in probability dict content. pos: %d", writingPos);
+            return false;
+        }
+        if (!bufferToWrite->writeUintAndAdvancePosition(historicalInfo->getCount(),
+                Ver4DictConstants::WORD_COUNT_FIELD_SIZE, &writingPos)) {
+            AKLOGE("Cannot write count in probability dict content. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h
new file mode 100644
index 0000000..80e992c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PROBABILITY_DICT_CONTENT_H
+#define LATINIME_PROBABILITY_DICT_CONTENT_H
+
+#include <cstdint>
+#include <cstdio>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+class ProbabilityEntry;
+
+class ProbabilityDictContent : public SingleDictContent {
+ public:
+    ProbabilityDictContent(uint8_t *const buffer, const int bufferSize,
+            const bool hasHistoricalInfo)
+            : SingleDictContent(buffer, bufferSize),
+              mHasHistoricalInfo(hasHistoricalInfo),
+              mSize(getBuffer()->getTailPosition() / getEntrySize()) {}
+
+    ProbabilityDictContent(const bool hasHistoricalInfo)
+            : mHasHistoricalInfo(hasHistoricalInfo), mSize(0) {}
+
+    const ProbabilityEntry getProbabilityEntry(const int terminalId) const;
+
+    bool setProbabilityEntry(const int terminalId, const ProbabilityEntry *const probabilityEntry);
+
+    bool flushToFile(FILE *const file) const;
+
+    bool runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+            const ProbabilityDictContent *const originalProbabilityDictContent);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(ProbabilityDictContent);
+
+    int getEntrySize() const;
+
+    int getEntryPos(const int terminalId) const;
+
+    bool writeEntry(const ProbabilityEntry *const probabilityEntry, const int entryPos);
+
+    bool mHasHistoricalInfo;
+    int mSize;
+};
+} // namespace latinime
+#endif /* LATINIME_PROBABILITY_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h
new file mode 100644
index 0000000..36ba82b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_PROBABILITY_ENTRY_H
+#define LATINIME_PROBABILITY_ENTRY_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/historical_info.h"
+
+namespace latinime {
+
+class ProbabilityEntry {
+ public:
+    ProbabilityEntry(const ProbabilityEntry &probabilityEntry)
+            : mFlags(probabilityEntry.mFlags), mProbability(probabilityEntry.mProbability),
+              mHistoricalInfo(probabilityEntry.mHistoricalInfo) {}
+
+    // Dummy entry
+    ProbabilityEntry()
+            : mFlags(0), mProbability(NOT_A_PROBABILITY), mHistoricalInfo() {}
+
+    // Entry without historical information
+    ProbabilityEntry(const int flags, const int probability)
+            : mFlags(flags), mProbability(probability), mHistoricalInfo() {}
+
+    // Entry with historical information.
+    ProbabilityEntry(const int flags, const int probability,
+            const HistoricalInfo *const historicalInfo)
+            : mFlags(flags), mProbability(probability), mHistoricalInfo(*historicalInfo) {}
+
+    const ProbabilityEntry createEntryWithUpdatedProbability(const int probability) const {
+        return ProbabilityEntry(mFlags, probability, &mHistoricalInfo);
+    }
+
+    const ProbabilityEntry createEntryWithUpdatedHistoricalInfo(
+            const HistoricalInfo *const historicalInfo) const {
+        return ProbabilityEntry(mFlags, mProbability, historicalInfo);
+    }
+
+    bool hasHistoricalInfo() const {
+        return mHistoricalInfo.isValid();
+    }
+
+    int getFlags() const {
+        return mFlags;
+    }
+
+    int getProbability() const {
+        return mProbability;
+    }
+
+    const HistoricalInfo *getHistoricalInfo() const {
+        return &mHistoricalInfo;
+    }
+
+ private:
+    // Copy constructor is public to use this class as a type of return value.
+    DISALLOW_ASSIGNMENT_OPERATOR(ProbabilityEntry);
+
+    const int mFlags;
+    const int mProbability;
+    const HistoricalInfo mHistoricalInfo;
+};
+} // namespace latinime
+#endif /* LATINIME_PROBABILITY_ENTRY_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.cpp
new file mode 100644
index 0000000..41d9c54
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.cpp
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+void ShortcutDictContent::getShortcutEntryAndAdvancePosition(const int maxCodePointCount,
+        int *const outCodePoint, int *const outCodePointCount, int *const outProbability,
+        bool *const outhasNext, int *const shortcutEntryPos) const {
+    const BufferWithExtendableBuffer *const shortcutListBuffer = getContentBuffer();
+    if (*shortcutEntryPos < 0 || *shortcutEntryPos >=  shortcutListBuffer->getTailPosition()) {
+        AKLOGE("Invalid shortcut entry position. shortcutEntryPos: %d, bufSize: %d",
+                *shortcutEntryPos, shortcutListBuffer->getTailPosition());
+        ASSERT(false);
+        if (outhasNext) {
+            *outhasNext = false;
+        }
+        if (outCodePointCount) {
+            *outCodePointCount = 0;
+        }
+        return;
+    }
+
+    const int shortcutFlags = shortcutListBuffer->readUintAndAdvancePosition(
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos);
+    if (outProbability) {
+        *outProbability = shortcutFlags & Ver4DictConstants::SHORTCUT_PROBABILITY_MASK;
+    }
+    if (outhasNext) {
+        *outhasNext = shortcutFlags & Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK;
+    }
+    if (outCodePoint && outCodePointCount) {
+        shortcutListBuffer->readCodePointsAndAdvancePosition(
+                maxCodePointCount, outCodePoint, outCodePointCount, shortcutEntryPos);
+    }
+}
+
+int ShortcutDictContent::getShortcutListHeadPos(const int terminalId) const {
+    const SparseTable *const addressLookupTable = getAddressLookupTable();
+    if (!addressLookupTable->contains(terminalId)) {
+        return NOT_A_DICT_POS;
+    }
+    return addressLookupTable->get(terminalId);
+}
+
+bool ShortcutDictContent::runGC(
+        const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+        const ShortcutDictContent *const originalShortcutDictContent) {
+   for (TerminalPositionLookupTable::TerminalIdMap::const_iterator it = terminalIdMap->begin();
+           it != terminalIdMap->end(); ++it) {
+       const int originalShortcutListPos =
+               originalShortcutDictContent->getShortcutListHeadPos(it->first);
+       if (originalShortcutListPos == NOT_A_DICT_POS) {
+           continue;
+       }
+       const int shortcutListPos = getContentBuffer()->getTailPosition();
+       // Copy shortcut list from original content.
+       if (!copyShortcutListFromDictContent(originalShortcutListPos, originalShortcutDictContent,
+               shortcutListPos)) {
+           AKLOGE("Cannot copy shortcut list during GC. original pos: %d, pos: %d",
+                   originalShortcutListPos, shortcutListPos);
+           return false;
+       }
+       // Set shortcut list position to the lookup table.
+       if (!getUpdatableAddressLookupTable()->set(it->second, shortcutListPos)) {
+           AKLOGE("Cannot set shortcut list position. terminal id: %d, pos: %d",
+                   it->second, shortcutListPos);
+           return false;
+       }
+   }
+   return true;
+}
+
+bool ShortcutDictContent::createNewShortcutList(const int terminalId) {
+    const int shortcutListListPos = getContentBuffer()->getTailPosition();
+    return getUpdatableAddressLookupTable()->set(terminalId, shortcutListListPos);
+}
+
+bool ShortcutDictContent::copyShortcutList(const int shortcutListPos, const int toPos) {
+    return copyShortcutListFromDictContent(shortcutListPos, this, toPos);
+}
+
+bool ShortcutDictContent::copyShortcutListFromDictContent(const int shortcutListPos,
+        const ShortcutDictContent *const sourceShortcutDictContent, const int toPos) {
+    bool hasNext = true;
+    int readingPos = shortcutListPos;
+    int writingPos = toPos;
+    int codePoints[MAX_WORD_LENGTH];
+    while (hasNext) {
+        int probability = 0;
+        int codePointCount = 0;
+        sourceShortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH,
+                codePoints, &codePointCount, &probability, &hasNext, &readingPos);
+        if (!writeShortcutEntryAndAdvancePosition(codePoints, codePointCount, probability,
+                hasNext, &writingPos)) {
+            AKLOGE("Cannot write shortcut entry to copy. pos: %d", writingPos);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool ShortcutDictContent::setProbability(const int probability, const int shortcutEntryPos) {
+    BufferWithExtendableBuffer *const shortcutListBuffer = getWritableContentBuffer();
+    const int shortcutFlags = shortcutListBuffer->readUint(
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos);
+    const bool hasNext = shortcutFlags & Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK;
+    const int shortcutFlagsToWrite = createAndGetShortcutFlags(probability, hasNext);
+    return shortcutListBuffer->writeUint(shortcutFlagsToWrite,
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos);
+}
+
+bool ShortcutDictContent::writeShortcutEntryAndAdvancePosition(const int *const codePoint,
+        const int codePointCount, const int probability, const bool hasNext,
+        int *const shortcutEntryPos) {
+    BufferWithExtendableBuffer *const shortcutListBuffer = getWritableContentBuffer();
+    const int shortcutFlags = createAndGetShortcutFlags(probability, hasNext);
+    if (!shortcutListBuffer->writeUintAndAdvancePosition(shortcutFlags,
+            Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE, shortcutEntryPos)) {
+        AKLOGE("Cannot write shortcut flags. flags; %x, pos: %d", shortcutFlags, *shortcutEntryPos);
+        return false;
+    }
+    if (!shortcutListBuffer->writeCodePointsAndAdvancePosition(codePoint, codePointCount,
+            true /* writesTerminator */, shortcutEntryPos)) {
+        AKLOGE("Cannot write shortcut target code points. pos: %d", *shortcutEntryPos);
+        return false;
+    }
+    return true;
+}
+
+// Find a shortcut entry that has specified target and return its position.
+int ShortcutDictContent::findShortcutEntryAndGetPos(const int shortcutListPos,
+        const int *const targetCodePointsToFind, const int codePointCount) const {
+    bool hasNext = true;
+    int readingPos = shortcutListPos;
+    int targetCodePoints[MAX_WORD_LENGTH];
+    while (hasNext) {
+        const int entryPos = readingPos;
+        int probability = 0;
+        int targetCodePointCount = 0;
+        getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, targetCodePoints, &targetCodePointCount,
+                &probability, &hasNext, &readingPos);
+        if (targetCodePointCount != codePointCount) {
+            continue;
+        }
+        bool matched = true;
+        for (int i = 0; i < codePointCount; ++i) {
+            if (targetCodePointsToFind[i] != targetCodePoints[i]) {
+                matched = false;
+                break;
+            }
+        }
+        if (matched) {
+            return entryPos;
+        }
+    }
+    return NOT_A_DICT_POS;
+}
+
+int ShortcutDictContent::createAndGetShortcutFlags(const int probability,
+        const bool hasNext) const {
+    return (probability & Ver4DictConstants::SHORTCUT_PROBABILITY_MASK)
+            | (hasNext ? Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK : 0);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h
new file mode 100644
index 0000000..7b12aff
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SHORTCUT_DICT_CONTENT_H
+#define LATINIME_SHORTCUT_DICT_CONTENT_H
+
+#include <cstdint>
+#include <cstdio>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+
+namespace latinime {
+
+class ShortcutDictContent : public SparseTableDictContent {
+ public:
+    ShortcutDictContent(uint8_t *const *buffers, const int *bufferSizes)
+            : SparseTableDictContent(buffers, bufferSizes,
+                      Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_DATA_SIZE) {}
+
+    ShortcutDictContent()
+            : SparseTableDictContent(Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE,
+                      Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_DATA_SIZE) {}
+
+    void getShortcutEntry(const int maxCodePointCount, int *const outCodePoint,
+            int *const outCodePointCount, int *const outProbability, bool *const outhasNext,
+            const int shortcutEntryPos) {
+        int readingPos = shortcutEntryPos;
+        return getShortcutEntryAndAdvancePosition(maxCodePointCount, outCodePoint,
+                outCodePointCount, outProbability, outhasNext, &readingPos);
+    }
+
+    void getShortcutEntryAndAdvancePosition(const int maxCodePointCount,
+            int *const outCodePoint, int *const outCodePointCount, int *const outProbability,
+            bool *const outhasNext, int *const shortcutEntryPos) const;
+
+   // Returns head position of shortcut list for a PtNode specified by terminalId.
+   int getShortcutListHeadPos(const int terminalId) const;
+
+   bool flushToFile(FILE *const file) const {
+       return flush(file);
+   }
+
+   bool runGC(const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
+           const ShortcutDictContent *const originalShortcutDictContent);
+
+   bool createNewShortcutList(const int terminalId);
+
+   bool copyShortcutList(const int shortcutListPos, const int toPos);
+
+   bool setProbability(const int probability, const int shortcutEntryPos);
+
+   bool writeShortcutEntry(const int *const codePoint, const int codePointCount,
+           const int probability, const bool hasNext, const int shortcutEntryPos) {
+       int writingPos = shortcutEntryPos;
+       return writeShortcutEntryAndAdvancePosition(codePoint, codePointCount, probability,
+               hasNext, &writingPos);
+   }
+
+   bool writeShortcutEntryAndAdvancePosition(const int *const codePoint,
+           const int codePointCount, const int probability, const bool hasNext,
+           int *const shortcutEntryPos);
+
+   int findShortcutEntryAndGetPos(const int shortcutListPos,
+           const int *const targetCodePointsToFind, const int codePointCount) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(ShortcutDictContent);
+
+    bool copyShortcutListFromDictContent(const int shortcutListPos,
+            const ShortcutDictContent *const sourceShortcutDictContent, const int toPos);
+
+    int createAndGetShortcutFlags(const int probability, const bool hasNext) const;
+};
+} // namespace latinime
+#endif /* LATINIME_SHORTCUT_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h
new file mode 100644
index 0000000..69a1142
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SINGLE_DICT_CONTENT_H
+#define LATINIME_SINGLE_DICT_CONTENT_H
+
+#include <cstdint>
+#include <cstdio>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+
+namespace latinime {
+
+class SingleDictContent : public DictContent {
+ public:
+    SingleDictContent(uint8_t *const buffer, const int bufferSize)
+            : mExpandableContentBuffer(buffer, bufferSize,
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE) {}
+
+    SingleDictContent()
+            : mExpandableContentBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE) {}
+
+    virtual ~SingleDictContent() {}
+
+    bool isNearSizeLimit() const {
+        return mExpandableContentBuffer.isNearSizeLimit();
+    }
+
+ protected:
+    BufferWithExtendableBuffer *getWritableBuffer() {
+        return &mExpandableContentBuffer;
+    }
+
+    const BufferWithExtendableBuffer *getBuffer() const {
+        return &mExpandableContentBuffer;
+    }
+
+    bool flush(FILE *const file) const {
+        return DictFileWritingUtils::writeBufferToFileTail(file, &mExpandableContentBuffer);
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(SingleDictContent);
+
+    BufferWithExtendableBuffer mExpandableContentBuffer;
+};
+} // namespace latinime
+#endif /* LATINIME_SINGLE_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.cpp
new file mode 100644
index 0000000..896ce6b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h"
+
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+
+namespace latinime {
+
+const int SparseTableDictContent::LOOKUP_TABLE_BUFFER_INDEX = 0;
+const int SparseTableDictContent::ADDRESS_TABLE_BUFFER_INDEX = 1;
+const int SparseTableDictContent::CONTENT_BUFFER_INDEX = 2;
+
+bool SparseTableDictContent::flush(FILE *const file) const {
+    if (!DictFileWritingUtils::writeBufferToFileTail(file, &mExpandableLookupTableBuffer)) {
+        return false;
+    }
+    if (!DictFileWritingUtils::writeBufferToFileTail(file, &mExpandableAddressTableBuffer)) {
+        return false;
+    }
+    if (!DictFileWritingUtils::writeBufferToFileTail(file, &mExpandableContentBuffer)) {
+        return false;
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h
new file mode 100644
index 0000000..cdf870b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/sparse_table_dict_content.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SPARSE_TABLE_DICT_CONTENT_H
+#define LATINIME_SPARSE_TABLE_DICT_CONTENT_H
+
+#include <cstdint>
+#include <cstdio>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/sparse_table.h"
+
+namespace latinime {
+
+// TODO: Support multiple contents.
+class SparseTableDictContent : public DictContent {
+ public:
+    AK_FORCE_INLINE SparseTableDictContent(uint8_t *const *buffers, const int *bufferSizes,
+            const int sparseTableBlockSize, const int sparseTableDataSize)
+            : mExpandableLookupTableBuffer(buffers[LOOKUP_TABLE_BUFFER_INDEX],
+                      bufferSizes[LOOKUP_TABLE_BUFFER_INDEX],
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mExpandableAddressTableBuffer(buffers[ADDRESS_TABLE_BUFFER_INDEX],
+                      bufferSizes[ADDRESS_TABLE_BUFFER_INDEX],
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mExpandableContentBuffer(buffers[CONTENT_BUFFER_INDEX],
+                      bufferSizes[CONTENT_BUFFER_INDEX],
+                      BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+              mAddressLookupTable(&mExpandableLookupTableBuffer, &mExpandableAddressTableBuffer,
+                      sparseTableBlockSize, sparseTableDataSize) {}
+
+    SparseTableDictContent(const int sparseTableBlockSize, const int sparseTableDataSize)
+            : mExpandableLookupTableBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+              mExpandableAddressTableBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+              mExpandableContentBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+              mAddressLookupTable(&mExpandableLookupTableBuffer, &mExpandableAddressTableBuffer,
+                      sparseTableBlockSize, sparseTableDataSize) {}
+
+    virtual ~SparseTableDictContent() {}
+
+    bool isNearSizeLimit() const {
+        return mExpandableLookupTableBuffer.isNearSizeLimit()
+                || mExpandableAddressTableBuffer.isNearSizeLimit()
+                || mExpandableContentBuffer.isNearSizeLimit();
+    }
+
+ protected:
+    SparseTable *getUpdatableAddressLookupTable() {
+        return &mAddressLookupTable;
+    }
+
+    const SparseTable *getAddressLookupTable() const {
+        return &mAddressLookupTable;
+    }
+
+    BufferWithExtendableBuffer *getWritableContentBuffer() {
+        return &mExpandableContentBuffer;
+    }
+
+    const BufferWithExtendableBuffer *getContentBuffer() const {
+        return &mExpandableContentBuffer;
+    }
+
+    bool flush(FILE *const file) const;
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(SparseTableDictContent);
+
+    static const int LOOKUP_TABLE_BUFFER_INDEX;
+    static const int ADDRESS_TABLE_BUFFER_INDEX;
+    static const int CONTENT_BUFFER_INDEX;
+
+    BufferWithExtendableBuffer mExpandableLookupTableBuffer;
+    BufferWithExtendableBuffer mExpandableAddressTableBuffer;
+    BufferWithExtendableBuffer mExpandableContentBuffer;
+    SparseTable mAddressLookupTable;
+};
+} // namespace latinime
+#endif /* LATINIME_SPARSE_TABLE_DICT_CONTENT_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp
new file mode 100644
index 0000000..cf238ee
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.cpp
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+int TerminalPositionLookupTable::getTerminalPtNodePosition(const int terminalId) const {
+    if (terminalId < 0 || terminalId >= mSize) {
+        return NOT_A_DICT_POS;
+    }
+    const int terminalPos = getBuffer()->readUint(
+            Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(terminalId));
+    return (terminalPos == Ver4DictConstants::NOT_A_TERMINAL_ADDRESS) ?
+            NOT_A_DICT_POS : terminalPos;
+}
+
+bool TerminalPositionLookupTable::setTerminalPtNodePosition(
+        const int terminalId, const int terminalPtNodePos) {
+    if (terminalId < 0) {
+        return NOT_A_DICT_POS;
+    }
+    while (terminalId >= mSize) {
+        // Write new entry.
+        if (!getWritableBuffer()->writeUint(Ver4DictConstants::NOT_A_TERMINAL_ADDRESS,
+                Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(mSize))) {
+            return false;
+        }
+        mSize++;
+    }
+    const int terminalPos = (terminalPtNodePos != NOT_A_DICT_POS) ?
+            terminalPtNodePos : Ver4DictConstants::NOT_A_TERMINAL_ADDRESS;
+    return getWritableBuffer()->writeUint(terminalPos,
+            Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(terminalId));
+}
+
+bool TerminalPositionLookupTable::flushToFile(FILE *const file) const {
+    // If the used buffer size is smaller than the actual buffer size, regenerate the lookup
+    // table and write the new table to the file.
+    if (getEntryPos(mSize) < getBuffer()->getTailPosition()) {
+        TerminalPositionLookupTable lookupTableToWrite;
+        for (int i = 0; i < mSize; ++i) {
+            const int terminalPtNodePosition = getTerminalPtNodePosition(i);
+            if (!lookupTableToWrite.setTerminalPtNodePosition(i, terminalPtNodePosition)) {
+                AKLOGE("Cannot set terminal position to lookupTableToWrite."
+                        " terminalId: %d, position: %d", i, terminalPtNodePosition);
+                return false;
+            }
+        }
+        return lookupTableToWrite.flush(file);
+    } else {
+        // We can simply use this lookup table because the buffer size has not been
+        // changed.
+        return flush(file);
+    }
+}
+
+bool TerminalPositionLookupTable::runGCTerminalIds(TerminalIdMap *const terminalIdMap) {
+    int removedEntryCount = 0;
+    int nextNewTerminalId = 0;
+    for (int i = 0; i < mSize; ++i) {
+        const int terminalPos = getBuffer()->readUint(
+                Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE, getEntryPos(i));
+        if (terminalPos == Ver4DictConstants::NOT_A_TERMINAL_ADDRESS) {
+            // This entry is a garbage.
+            removedEntryCount++;
+        } else {
+            // Give a new terminal id to the entry.
+            if (!getWritableBuffer()->writeUint(terminalPos,
+                    Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE,
+                    getEntryPos(nextNewTerminalId))) {
+                return false;
+            }
+            // Memorize the mapping to the old terminal id to the new terminal id.
+            terminalIdMap->insert(TerminalIdMap::value_type(i, nextNewTerminalId));
+            nextNewTerminalId++;
+        }
+    }
+    mSize = nextNewTerminalId;
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
new file mode 100644
index 0000000..b2262bf
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_TERMINAL_POSITION_LOOKUP_TABLE_H
+#define LATINIME_TERMINAL_POSITION_LOOKUP_TABLE_H
+
+#include <cstdint>
+#include <cstdio>
+#include <unordered_map>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/single_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+
+namespace latinime {
+
+class TerminalPositionLookupTable : public SingleDictContent {
+ public:
+    typedef std::unordered_map<int, int> TerminalIdMap;
+
+    TerminalPositionLookupTable(uint8_t *const buffer, const int bufferSize)
+            : SingleDictContent(buffer, bufferSize),
+              mSize(getBuffer()->getTailPosition()
+                      / Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE) {}
+
+    TerminalPositionLookupTable() : mSize(0) {}
+
+    int getTerminalPtNodePosition(const int terminalId) const;
+
+    bool setTerminalPtNodePosition(const int terminalId, const int terminalPtNodePos);
+
+    int getNextTerminalId() const {
+        return mSize;
+    }
+
+    bool flushToFile(FILE *const file) const;
+
+    bool runGCTerminalIds(TerminalIdMap *const terminalIdMap);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(TerminalPositionLookupTable);
+
+    int getEntryPos(const int terminalId) const {
+        return terminalId * Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE;
+    }
+
+    int mSize;
+};
+} // namespace latinime
+#endif // LATINIME_TERMINAL_POSITION_LOOKUP_TABLE_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h
new file mode 100644
index 0000000..7902735
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_SHORTCUT_LIST_POLICY_H
+#define LATINIME_VER4_SHORTCUT_LIST_POLICY_H
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_shortcuts_structure_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/shortcut/shortcut_list_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+
+namespace latinime {
+
+class Ver4ShortcutListPolicy : public DictionaryShortcutsStructurePolicy {
+ public:
+    Ver4ShortcutListPolicy(ShortcutDictContent *const shortcutDictContent,
+            const TerminalPositionLookupTable *const terminalPositionLookupTable)
+            : mShortcutDictContent(shortcutDictContent) {}
+
+    ~Ver4ShortcutListPolicy() {}
+
+    int getStartPos(const int pos) const {
+        // The first shortcut entry is located at the head position of the shortcut list.
+        return pos;
+    }
+
+    void getNextShortcut(const int maxCodePointCount, int *const outCodePoint,
+            int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext,
+            int *const pos) const {
+        int probability = 0;
+        mShortcutDictContent->getShortcutEntryAndAdvancePosition(maxCodePointCount,
+                outCodePoint, outCodePointCount, &probability, outHasNext, pos);
+        if (outIsWhitelist) {
+            *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(probability);
+        }
+    }
+
+    void skipAllShortcuts(int *const pos) const {
+        // Do nothing because we don't need to skip shortcut lists in ver4 dictionaries.
+    }
+
+    bool addNewShortcut(const int terminalId, const int *const codePoints, const int codePointCount,
+            const int probability) {
+        const int shortcutListPos = mShortcutDictContent->getShortcutListHeadPos(terminalId);
+        if (shortcutListPos == NOT_A_DICT_POS) {
+            // Create shortcut list.
+            if (!mShortcutDictContent->createNewShortcutList(terminalId)) {
+                AKLOGE("Cannot create new shortcut list. terminal id: %d", terminalId);
+                return false;
+            }
+            const int writingPos =  mShortcutDictContent->getShortcutListHeadPos(terminalId);
+            return mShortcutDictContent->writeShortcutEntry(codePoints, codePointCount, probability,
+                    false /* hasNext */, writingPos);
+        }
+        const int entryPos = mShortcutDictContent->findShortcutEntryAndGetPos(shortcutListPos,
+                codePoints, codePointCount);
+        if (entryPos == NOT_A_DICT_POS) {
+            // Add new entry to the shortcut list.
+            // Create new shortcut list.
+            if (!mShortcutDictContent->createNewShortcutList(terminalId)) {
+                AKLOGE("Cannot create new shortcut list. terminal id: %d", terminalId);
+                return false;
+            }
+            int writingPos =  mShortcutDictContent->getShortcutListHeadPos(terminalId);
+            if (!mShortcutDictContent->writeShortcutEntryAndAdvancePosition(codePoints,
+                    codePointCount, probability, true /* hasNext */, &writingPos)) {
+                AKLOGE("Cannot write shortcut entry. terminal id: %d, pos: %d", terminalId,
+                        writingPos);
+                return false;
+            }
+            return mShortcutDictContent->copyShortcutList(shortcutListPos, writingPos);
+        }
+        // Overwrite existing entry.
+        bool hasNext = false;
+        mShortcutDictContent->getShortcutEntry(MAX_WORD_LENGTH, 0 /* outCodePoint */,
+                0 /* outCodePointCount */ , 0 /* probability */, &hasNext, entryPos);
+        if (!mShortcutDictContent->writeShortcutEntry(codePoints,
+                codePointCount, probability, hasNext, entryPos)) {
+            AKLOGE("Cannot overwrite shortcut entry. terminal id: %d, pos: %d", terminalId,
+                    entryPos);
+            return false;
+        }
+        return true;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4ShortcutListPolicy);
+
+    ShortcutDictContent *const mShortcutDictContent;
+};
+} // namespace latinime
+#endif // LATINIME_VER4_SHORTCUT_LIST_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
new file mode 100644
index 0000000..36ab996
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.cpp
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
+
+#include <cerrno>
+#include <cstring>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <vector>
+
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+#include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+
+namespace latinime {
+
+/* static */ Ver4DictBuffers::Ver4DictBuffersPtr Ver4DictBuffers::openVer4DictBuffers(
+        const char *const dictPath, MmappedBuffer::MmappedBufferPtr &&headerBuffer,
+        const FormatUtils::FORMAT_VERSION formatVersion) {
+    if (!headerBuffer) {
+        ASSERT(false);
+        AKLOGE("The header buffer must be valid to open ver4 dict buffers.");
+        return Ver4DictBuffersPtr(nullptr);
+    }
+    // TODO: take only dictDirPath, and open both header and trie files in the constructor below
+    const bool isUpdatable = headerBuffer->isUpdatable();
+    MmappedBuffer::MmappedBufferPtr bodyBuffer = MmappedBuffer::openBuffer(dictPath,
+            Ver4DictConstants::BODY_FILE_EXTENSION, isUpdatable);
+    if (!bodyBuffer) {
+        return Ver4DictBuffersPtr(nullptr);
+    }
+    std::vector<uint8_t *> buffers;
+    std::vector<int> bufferSizes;
+    uint8_t *const buffer = bodyBuffer->getBuffer();
+    int position = 0;
+    while (position < bodyBuffer->getBufferSize()) {
+        const int bufferSize = ByteArrayUtils::readUint32AndAdvancePosition(buffer, &position);
+        buffers.push_back(buffer + position);
+        bufferSizes.push_back(bufferSize);
+        position += bufferSize;
+        if (bufferSize < 0 || position < 0 || position > bodyBuffer->getBufferSize()) {
+            AKLOGE("The dict body file is corrupted.");
+            return Ver4DictBuffersPtr(nullptr);
+        }
+    }
+    if (buffers.size() != Ver4DictConstants::NUM_OF_CONTENT_BUFFERS_IN_BODY_FILE) {
+        AKLOGE("The dict body file is corrupted.");
+        return Ver4DictBuffersPtr(nullptr);
+    }
+    return Ver4DictBuffersPtr(new Ver4DictBuffers(std::move(headerBuffer), std::move(bodyBuffer),
+            formatVersion, buffers, bufferSizes));
+}
+
+bool Ver4DictBuffers::flushHeaderAndDictBuffers(const char *const dictDirPath,
+        const BufferWithExtendableBuffer *const headerBuffer) const {
+    // Create temporary directory.
+    const int tmpDirPathBufSize = FileUtils::getFilePathWithSuffixBufSize(dictDirPath,
+            DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE);
+    char tmpDirPath[tmpDirPathBufSize];
+    FileUtils::getFilePathWithSuffix(dictDirPath,
+            DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE, tmpDirPathBufSize,
+            tmpDirPath);
+    if (FileUtils::existsDir(tmpDirPath)) {
+        if (!FileUtils::removeDirAndFiles(tmpDirPath)) {
+            AKLOGE("Existing directory %s cannot be removed.", tmpDirPath);
+            ASSERT(false);
+            return false;
+        }
+    }
+    umask(S_IWGRP | S_IWOTH);
+    if (mkdir(tmpDirPath, S_IRWXU) == -1) {
+        AKLOGE("Cannot create directory: %s. errno: %d.", tmpDirPath, errno);
+        return false;
+    }
+    // Get dictionary base path.
+    const int dictNameBufSize = strlen(dictDirPath) + 1 /* terminator */;
+    char dictName[dictNameBufSize];
+    FileUtils::getBasename(dictDirPath, dictNameBufSize, dictName);
+    const int dictPathBufSize = FileUtils::getFilePathBufSize(tmpDirPath, dictName);
+    char dictPath[dictPathBufSize];
+    FileUtils::getFilePath(tmpDirPath, dictName, dictPathBufSize, dictPath);
+
+    // Write header file.
+    if (!DictFileWritingUtils::flushBufferToFileWithSuffix(dictPath,
+            Ver4DictConstants::HEADER_FILE_EXTENSION, headerBuffer)) {
+        AKLOGE("Dictionary header file %s%s cannot be written.", tmpDirPath,
+                Ver4DictConstants::HEADER_FILE_EXTENSION);
+        return false;
+    }
+
+    // Write body file.
+    const int bodyFilePathBufSize = FileUtils::getFilePathWithSuffixBufSize(dictPath,
+            Ver4DictConstants::BODY_FILE_EXTENSION);
+    char bodyFilePath[bodyFilePathBufSize];
+    FileUtils::getFilePathWithSuffix(dictPath, Ver4DictConstants::BODY_FILE_EXTENSION,
+            bodyFilePathBufSize, bodyFilePath);
+
+    const int fd = open(bodyFilePath, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+    if (fd == -1) {
+        AKLOGE("File %s cannot be opened. errno: %d", bodyFilePath, errno);
+        ASSERT(false);
+        return false;
+    }
+    FILE *const file = fdopen(fd, "wb");
+    if (!file) {
+        AKLOGE("fdopen failed for the file %s. errno: %d", filePath, errno);
+        ASSERT(false);
+        return false;
+    }
+
+    if (!flushDictBuffers(file)) {
+        fclose(file);
+        return false;
+    }
+    fclose(file);
+    // Remove existing dictionary.
+    if (!FileUtils::removeDirAndFiles(dictDirPath)) {
+        AKLOGE("Existing directory %s cannot be removed.", dictDirPath);
+        ASSERT(false);
+        return false;
+    }
+    // Rename temporary directory.
+    if (rename(tmpDirPath, dictDirPath) != 0) {
+        AKLOGE("%s cannot be renamed to %s", tmpDirPath, dictDirPath);
+        ASSERT(false);
+        return false;
+    }
+    return true;
+}
+
+bool Ver4DictBuffers::flushDictBuffers(FILE *const file) const {
+    // Write trie.
+    if (!DictFileWritingUtils::writeBufferToFileTail(file, &mExpandableTrieBuffer)) {
+        AKLOGE("Trie cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    // Write terminal position lookup table.
+    if (!mTerminalPositionLookupTable.flushToFile(file)) {
+        AKLOGE("Terminal position lookup table cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    // Write probability dict content.
+    if (!mProbabilityDictContent.flushToFile(file)) {
+        AKLOGE("Probability dict content cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    // Write bigram dict content.
+    if (!mBigramDictContent.flushToFile(file)) {
+        AKLOGE("Bigram dict content cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    // Write shortcut dict content.
+    if (!mShortcutDictContent.flushToFile(file)) {
+        AKLOGE("Shortcut dict content cannot be written. %s", tmpDirPath);
+        return false;
+    }
+    return true;
+}
+
+Ver4DictBuffers::Ver4DictBuffers(MmappedBuffer::MmappedBufferPtr &&headerBuffer,
+        MmappedBuffer::MmappedBufferPtr &&bodyBuffer,
+        const FormatUtils::FORMAT_VERSION formatVersion,
+        const std::vector<uint8_t *> &contentBuffers, const std::vector<int> &contentBufferSizes)
+        : mHeaderBuffer(std::move(headerBuffer)), mDictBuffer(std::move(bodyBuffer)),
+          mHeaderPolicy(mHeaderBuffer->getBuffer(), formatVersion),
+          mExpandableHeaderBuffer(mHeaderBuffer ? mHeaderBuffer->getBuffer() : nullptr,
+                  mHeaderPolicy.getSize(),
+                  BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+          mExpandableTrieBuffer(contentBuffers[Ver4DictConstants::TRIE_BUFFER_INDEX],
+                  contentBufferSizes[Ver4DictConstants::TRIE_BUFFER_INDEX],
+                  BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE),
+          mTerminalPositionLookupTable(
+                  contentBuffers[Ver4DictConstants::TERMINAL_ADDRESS_LOOKUP_TABLE_BUFFER_INDEX],
+                  contentBufferSizes[
+                          Ver4DictConstants::TERMINAL_ADDRESS_LOOKUP_TABLE_BUFFER_INDEX]),
+          mProbabilityDictContent(
+                  contentBuffers[Ver4DictConstants::PROBABILITY_BUFFER_INDEX],
+                  contentBufferSizes[Ver4DictConstants::PROBABILITY_BUFFER_INDEX],
+                  mHeaderPolicy.hasHistoricalInfoOfWords()),
+          mBigramDictContent(&contentBuffers[Ver4DictConstants::BIGRAM_BUFFERS_INDEX],
+                  &contentBufferSizes[Ver4DictConstants::BIGRAM_BUFFERS_INDEX],
+                  mHeaderPolicy.hasHistoricalInfoOfWords()),
+          mShortcutDictContent(&contentBuffers[Ver4DictConstants::SHORTCUT_BUFFERS_INDEX],
+                  &contentBufferSizes[Ver4DictConstants::SHORTCUT_BUFFERS_INDEX]),
+          mIsUpdatable(mDictBuffer->isUpdatable()) {}
+
+Ver4DictBuffers::Ver4DictBuffers(const HeaderPolicy *const headerPolicy, const int maxTrieSize)
+        : mHeaderBuffer(nullptr), mDictBuffer(nullptr), mHeaderPolicy(headerPolicy),
+          mExpandableHeaderBuffer(Ver4DictConstants::MAX_DICTIONARY_SIZE),
+          mExpandableTrieBuffer(maxTrieSize), mTerminalPositionLookupTable(),
+          mProbabilityDictContent(headerPolicy->hasHistoricalInfoOfWords()),
+          mBigramDictContent(headerPolicy->hasHistoricalInfoOfWords()), mShortcutDictContent(),
+          mIsUpdatable(true) {}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
new file mode 100644
index 0000000..433411c
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_DICT_BUFFER_H
+#define LATINIME_VER4_DICT_BUFFER_H
+
+#include <cstdio>
+#include <memory>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/bigram_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/shortcut_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+namespace latinime {
+
+class Ver4DictBuffers {
+ public:
+    typedef std::unique_ptr<Ver4DictBuffers> Ver4DictBuffersPtr;
+
+    static Ver4DictBuffersPtr openVer4DictBuffers(const char *const dictDirPath,
+            MmappedBuffer::MmappedBufferPtr &&headerBuffer,
+            const FormatUtils::FORMAT_VERSION formatVersion);
+
+    static AK_FORCE_INLINE Ver4DictBuffersPtr createVer4DictBuffers(
+            const HeaderPolicy *const headerPolicy, const int maxTrieSize) {
+        return Ver4DictBuffersPtr(new Ver4DictBuffers(headerPolicy, maxTrieSize));
+    }
+
+    AK_FORCE_INLINE bool isValid() const {
+        return mHeaderBuffer && mDictBuffer && mHeaderPolicy.isValid();
+    }
+
+    AK_FORCE_INLINE bool isNearSizeLimit() const {
+        return mExpandableTrieBuffer.isNearSizeLimit()
+                || mTerminalPositionLookupTable.isNearSizeLimit()
+                || mProbabilityDictContent.isNearSizeLimit()
+                || mBigramDictContent.isNearSizeLimit()
+                || mShortcutDictContent.isNearSizeLimit();
+    }
+
+    AK_FORCE_INLINE const HeaderPolicy *getHeaderPolicy() const {
+        return &mHeaderPolicy;
+    }
+
+    AK_FORCE_INLINE BufferWithExtendableBuffer *getWritableHeaderBuffer() {
+        return &mExpandableHeaderBuffer;
+    }
+
+    AK_FORCE_INLINE BufferWithExtendableBuffer *getWritableTrieBuffer() {
+        return &mExpandableTrieBuffer;
+    }
+
+    AK_FORCE_INLINE const BufferWithExtendableBuffer *getTrieBuffer() const {
+        return &mExpandableTrieBuffer;
+    }
+
+    AK_FORCE_INLINE TerminalPositionLookupTable *getMutableTerminalPositionLookupTable() {
+        return &mTerminalPositionLookupTable;
+    }
+
+    AK_FORCE_INLINE const TerminalPositionLookupTable *getTerminalPositionLookupTable() const {
+        return &mTerminalPositionLookupTable;
+    }
+
+    AK_FORCE_INLINE ProbabilityDictContent *getMutableProbabilityDictContent() {
+        return &mProbabilityDictContent;
+    }
+
+    AK_FORCE_INLINE const ProbabilityDictContent *getProbabilityDictContent() const {
+        return &mProbabilityDictContent;
+    }
+
+    AK_FORCE_INLINE BigramDictContent *getMutableBigramDictContent() {
+        return &mBigramDictContent;
+    }
+
+    AK_FORCE_INLINE const BigramDictContent *getBigramDictContent() const {
+        return &mBigramDictContent;
+    }
+
+    AK_FORCE_INLINE ShortcutDictContent *getMutableShortcutDictContent() {
+        return &mShortcutDictContent;
+    }
+
+    AK_FORCE_INLINE const ShortcutDictContent *getShortcutDictContent() const {
+        return &mShortcutDictContent;
+    }
+
+    AK_FORCE_INLINE bool isUpdatable() const {
+        return mIsUpdatable;
+    }
+
+    bool flush(const char *const dictDirPath) const {
+        return flushHeaderAndDictBuffers(dictDirPath, &mExpandableHeaderBuffer);
+    }
+
+    bool flushHeaderAndDictBuffers(const char *const dictDirPath,
+            const BufferWithExtendableBuffer *const headerBuffer) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4DictBuffers);
+
+    Ver4DictBuffers(MmappedBuffer::MmappedBufferPtr &&headerBuffer,
+            MmappedBuffer::MmappedBufferPtr &&bodyBuffer,
+            const FormatUtils::FORMAT_VERSION formatVersion,
+            const std::vector<uint8_t *> &contentBuffers,
+            const std::vector<int> &contentBufferSizes);
+
+    Ver4DictBuffers(const HeaderPolicy *const headerPolicy, const int maxTrieSize);
+
+    bool flushDictBuffers(FILE *const file) const;
+
+    const MmappedBuffer::MmappedBufferPtr mHeaderBuffer;
+    const MmappedBuffer::MmappedBufferPtr mDictBuffer;
+    const HeaderPolicy mHeaderPolicy;
+    BufferWithExtendableBuffer mExpandableHeaderBuffer;
+    BufferWithExtendableBuffer mExpandableTrieBuffer;
+    TerminalPositionLookupTable mTerminalPositionLookupTable;
+    ProbabilityDictContent mProbabilityDictContent;
+    BigramDictContent mBigramDictContent;
+    ShortcutDictContent mShortcutDictContent;
+    const int mIsUpdatable;
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_DICT_BUFFER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.cpp
new file mode 100644
index 0000000..d45dfe3
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.cpp
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+
+namespace latinime {
+
+const char *const Ver4DictConstants::BODY_FILE_EXTENSION = ".body";
+const char *const Ver4DictConstants::HEADER_FILE_EXTENSION = ".header";
+
+// Version 4 dictionary size is implicitly limited to 8MB due to 3-byte offsets.
+const int Ver4DictConstants::MAX_DICTIONARY_SIZE = 8 * 1024 * 1024;
+// Extended region size, which is not GCed region size in dict file + additional buffer size, is
+// limited to 1MB to prevent from inefficient traversing.
+const int Ver4DictConstants::MAX_DICT_EXTENDED_REGION_SIZE = 1 * 1024 * 1024;
+
+// NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT for Trie, TerminalAddressLookupTable and Probability.
+// NUM_OF_BUFFERS_FOR_SPARSE_TABLE_DICT_CONTENT for bigram and shortcut.
+const size_t Ver4DictConstants::NUM_OF_CONTENT_BUFFERS_IN_BODY_FILE =
+        NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT * 3
+                + NUM_OF_BUFFERS_FOR_SPARSE_TABLE_DICT_CONTENT * 2;
+const int Ver4DictConstants::TRIE_BUFFER_INDEX = 0;
+const int Ver4DictConstants::TERMINAL_ADDRESS_LOOKUP_TABLE_BUFFER_INDEX =
+        TRIE_BUFFER_INDEX + NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT;
+const int Ver4DictConstants::PROBABILITY_BUFFER_INDEX =
+        TERMINAL_ADDRESS_LOOKUP_TABLE_BUFFER_INDEX + NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT;
+const int Ver4DictConstants::BIGRAM_BUFFERS_INDEX =
+        PROBABILITY_BUFFER_INDEX + NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT;
+const int Ver4DictConstants::SHORTCUT_BUFFERS_INDEX =
+        BIGRAM_BUFFERS_INDEX + NUM_OF_BUFFERS_FOR_SPARSE_TABLE_DICT_CONTENT;
+
+const int Ver4DictConstants::NOT_A_TERMINAL_ID = -1;
+const int Ver4DictConstants::PROBABILITY_SIZE = 1;
+const int Ver4DictConstants::FLAGS_IN_PROBABILITY_FILE_SIZE = 1;
+const int Ver4DictConstants::TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE = 3;
+const int Ver4DictConstants::NOT_A_TERMINAL_ADDRESS = 0;
+const int Ver4DictConstants::TERMINAL_ID_FIELD_SIZE = 4;
+const int Ver4DictConstants::TIME_STAMP_FIELD_SIZE = 4;
+const int Ver4DictConstants::WORD_LEVEL_FIELD_SIZE = 1;
+const int Ver4DictConstants::WORD_COUNT_FIELD_SIZE = 1;
+
+const int Ver4DictConstants::BIGRAM_ADDRESS_TABLE_BLOCK_SIZE = 16;
+const int Ver4DictConstants::BIGRAM_ADDRESS_TABLE_DATA_SIZE = 4;
+const int Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE = 64;
+const int Ver4DictConstants::SHORTCUT_ADDRESS_TABLE_DATA_SIZE = 4;
+
+const int Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE = 3;
+// Unsigned int max value of BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE-byte is used for representing
+// invalid terminal ID in bigram lists.
+const int Ver4DictConstants::INVALID_BIGRAM_TARGET_TERMINAL_ID =
+        (1 << (BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE * 8)) - 1;
+const int Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE = 1;
+const int Ver4DictConstants::BIGRAM_PROBABILITY_MASK = 0x0F;
+const int Ver4DictConstants::BIGRAM_IS_LINK_MASK = 0x80;
+const int Ver4DictConstants::BIGRAM_LARGE_PROBABILITY_FIELD_SIZE = 1;
+
+const int Ver4DictConstants::SHORTCUT_FLAGS_FIELD_SIZE = 1;
+const int Ver4DictConstants::SHORTCUT_PROBABILITY_MASK = 0x0F;
+const int Ver4DictConstants::SHORTCUT_HAS_NEXT_MASK = 0x80;
+
+const size_t Ver4DictConstants::NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT = 1;
+const size_t Ver4DictConstants::NUM_OF_BUFFERS_FOR_SPARSE_TABLE_DICT_CONTENT = 3;
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h
new file mode 100644
index 0000000..e8f6739
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_DICT_CONSTANTS_H
+#define LATINIME_VER4_DICT_CONSTANTS_H
+
+#include "defines.h"
+
+#include <cstddef>
+
+namespace latinime {
+
+// TODO: Create PtConstants under the pt_common and move some constant values there.
+// Note that there are corresponding definitions in FormatSpec.java.
+class Ver4DictConstants {
+ public:
+    static const char *const BODY_FILE_EXTENSION;
+    static const char *const HEADER_FILE_EXTENSION;
+    static const int MAX_DICTIONARY_SIZE;
+    static const int MAX_DICT_EXTENDED_REGION_SIZE;
+
+    static const size_t NUM_OF_CONTENT_BUFFERS_IN_BODY_FILE;
+    static const int TRIE_BUFFER_INDEX;
+    static const int TERMINAL_ADDRESS_LOOKUP_TABLE_BUFFER_INDEX;
+    static const int PROBABILITY_BUFFER_INDEX;
+    static const int BIGRAM_BUFFERS_INDEX;
+    static const int SHORTCUT_BUFFERS_INDEX;
+
+    static const int NOT_A_TERMINAL_ID;
+    static const int PROBABILITY_SIZE;
+    static const int FLAGS_IN_PROBABILITY_FILE_SIZE;
+    static const int TERMINAL_ADDRESS_TABLE_ADDRESS_SIZE;
+    static const int NOT_A_TERMINAL_ADDRESS;
+    static const int TERMINAL_ID_FIELD_SIZE;
+    static const int TIME_STAMP_FIELD_SIZE;
+    static const int WORD_LEVEL_FIELD_SIZE;
+    static const int WORD_COUNT_FIELD_SIZE;
+
+    static const int BIGRAM_ADDRESS_TABLE_BLOCK_SIZE;
+    static const int BIGRAM_ADDRESS_TABLE_DATA_SIZE;
+    static const int SHORTCUT_ADDRESS_TABLE_BLOCK_SIZE;
+    static const int SHORTCUT_ADDRESS_TABLE_DATA_SIZE;
+
+    static const int BIGRAM_FLAGS_FIELD_SIZE;
+    static const int BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
+    static const int INVALID_BIGRAM_TARGET_TERMINAL_ID;
+    static const int BIGRAM_IS_LINK_MASK;
+    static const int BIGRAM_PROBABILITY_MASK;
+    // Used when bigram list has time stamp.
+    static const int BIGRAM_LARGE_PROBABILITY_FIELD_SIZE;
+
+    static const int SHORTCUT_FLAGS_FIELD_SIZE;
+    static const int SHORTCUT_PROBABILITY_MASK;
+    static const int SHORTCUT_HAS_NEXT_MASK;
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4DictConstants);
+
+    static const size_t NUM_OF_BUFFERS_FOR_SINGLE_DICT_CONTENT;
+    static const size_t NUM_OF_BUFFERS_FOR_SPARSE_TABLE_DICT_CONTENT;
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_DICT_CONSTANTS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp
new file mode 100644
index 0000000..0a435e9
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.cpp
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_dict_content.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+
+const PtNodeParams Ver4PatriciaTrieNodeReader::fetchPtNodeInfoFromBufferAndProcessMovedPtNode(
+        const int ptNodePos, const int siblingNodePos) const {
+    if (ptNodePos < 0 || ptNodePos >= mBuffer->getTailPosition()) {
+        // Reading invalid position because of bug or broken dictionary.
+        AKLOGE("Fetching PtNode info from invalid dictionary position: %d, dictionary size: %d",
+                ptNodePos, mBuffer->getTailPosition());
+        ASSERT(false);
+        return PtNodeParams();
+    }
+    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(ptNodePos);
+    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
+    int pos = ptNodePos;
+    const int headPos = ptNodePos;
+    if (usesAdditionalBuffer) {
+        pos -= mBuffer->getOriginalBufferSize();
+    }
+    const PatriciaTrieReadingUtils::NodeFlags flags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const int parentPosOffset =
+            DynamicPtReadingUtils::getParentPtNodePosOffsetAndAdvancePosition(
+                    dictBuf, &pos);
+    const int parentPos =
+            DynamicPtReadingUtils::getParentPtNodePos(parentPosOffset, headPos);
+    int codePoints[MAX_WORD_LENGTH];
+    const int codePonitCount = PatriciaTrieReadingUtils::getCharsAndAdvancePosition(
+            dictBuf, flags, MAX_WORD_LENGTH, codePoints, &pos);
+    int terminalIdFieldPos = NOT_A_DICT_POS;
+    int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
+    int probability = NOT_A_PROBABILITY;
+    if (PatriciaTrieReadingUtils::isTerminal(flags)) {
+        terminalIdFieldPos = pos;
+        if (usesAdditionalBuffer) {
+            terminalIdFieldPos += mBuffer->getOriginalBufferSize();
+        }
+        terminalId = Ver4PatriciaTrieReadingUtils::getTerminalIdAndAdvancePosition(dictBuf, &pos);
+        const ProbabilityEntry probabilityEntry =
+                mProbabilityDictContent->getProbabilityEntry(terminalId);
+        if (probabilityEntry.hasHistoricalInfo()) {
+            probability = ForgettingCurveUtils::decodeProbability(
+                    probabilityEntry.getHistoricalInfo(), mHeaderPolicy);
+        } else {
+            probability = probabilityEntry.getProbability();
+        }
+    }
+    int childrenPosFieldPos = pos;
+    if (usesAdditionalBuffer) {
+        childrenPosFieldPos += mBuffer->getOriginalBufferSize();
+    }
+    int childrenPos = DynamicPtReadingUtils::readChildrenPositionAndAdvancePosition(
+            dictBuf, &pos);
+    if (usesAdditionalBuffer && childrenPos != NOT_A_DICT_POS) {
+        childrenPos += mBuffer->getOriginalBufferSize();
+    }
+    if (usesAdditionalBuffer) {
+        pos += mBuffer->getOriginalBufferSize();
+    }
+    // Sibling position is the tail position of original PtNode.
+    int newSiblingNodePos = (siblingNodePos == NOT_A_DICT_POS) ? pos : siblingNodePos;
+    // Read destination node if the read node is a moved node.
+    if (DynamicPtReadingUtils::isMoved(flags)) {
+        // The destination position is stored at the same place as the parent position.
+        return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(parentPos, newSiblingNodePos);
+    } else {
+        return PtNodeParams(headPos, flags, parentPos, codePonitCount, codePoints,
+                terminalIdFieldPos, terminalId, probability, childrenPosFieldPos, childrenPos,
+                newSiblingNodePos);
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h
new file mode 100644
index 0000000..22ed4a6
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_PATRICIA_TRIE_NODE_READER_H
+#define LATINIME_VER4_PATRICIA_TRIE_NODE_READER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h"
+
+namespace latinime {
+
+class BufferWithExtendableBuffer;
+class HeaderPolicy;
+class ProbabilityDictContent;
+
+/*
+ * This class is used for helping to read nodes of ver4 patricia trie. This class handles moved
+ * node and reads node attributes including probability form probabilityBuffer.
+ */
+class Ver4PatriciaTrieNodeReader : public PtNodeReader {
+ public:
+    Ver4PatriciaTrieNodeReader(const BufferWithExtendableBuffer *const buffer,
+            const ProbabilityDictContent *const probabilityDictContent,
+            const HeaderPolicy *const headerPolicy)
+            : mBuffer(buffer), mProbabilityDictContent(probabilityDictContent),
+              mHeaderPolicy(headerPolicy) {}
+
+    ~Ver4PatriciaTrieNodeReader() {}
+
+    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const {
+        return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(ptNodePos,
+                NOT_A_DICT_POS /* siblingNodePos */);
+    }
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4PatriciaTrieNodeReader);
+
+    const BufferWithExtendableBuffer *const mBuffer;
+    const ProbabilityDictContent *const mProbabilityDictContent;
+    const HeaderPolicy *const mHeaderPolicy;
+
+    const PtNodeParams fetchPtNodeInfoFromBufferAndProcessMovedPtNode(const int ptNodePos,
+            const int siblingNodePos) const;
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_PATRICIA_TRIE_NODE_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
new file mode 100644
index 0000000..3d8da91
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
@@ -0,0 +1,390 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h"
+
+#include "suggest/core/dictionary/property/unigram_property.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h"
+#include "suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+
+const int Ver4PatriciaTrieNodeWriter::CHILDREN_POSITION_FIELD_SIZE = 3;
+
+bool Ver4PatriciaTrieNodeWriter::markPtNodeAsDeleted(
+        const PtNodeParams *const toBeUpdatedPtNodeParams) {
+    int pos = toBeUpdatedPtNodeParams->getHeadPos();
+    const bool usesAdditionalBuffer = mTrieBuffer->isInAdditionalBuffer(pos);
+    const uint8_t *const dictBuf = mTrieBuffer->getBuffer(usesAdditionalBuffer);
+    if (usesAdditionalBuffer) {
+        pos -= mTrieBuffer->getOriginalBufferSize();
+    }
+    // Read original flags
+    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
+            DynamicPtReadingUtils::updateAndGetFlags(originalFlags, false /* isMoved */,
+                    true /* isDeleted */, false /* willBecomeNonTerminal */);
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
+    // Update flags.
+    if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
+            &writingPos)) {
+        return false;
+    }
+    if (toBeUpdatedPtNodeParams->isTerminal()) {
+        // The PtNode is a terminal. Delete entry from the terminal position lookup table.
+        return mBuffers->getMutableTerminalPositionLookupTable()->setTerminalPtNodePosition(
+                toBeUpdatedPtNodeParams->getTerminalId(), NOT_A_DICT_POS /* ptNodePos */);
+    } else {
+        return true;
+    }
+}
+
+bool Ver4PatriciaTrieNodeWriter::markPtNodeAsMoved(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const int movedPos, const int bigramLinkedNodePos) {
+    int pos = toBeUpdatedPtNodeParams->getHeadPos();
+    const bool usesAdditionalBuffer = mTrieBuffer->isInAdditionalBuffer(pos);
+    const uint8_t *const dictBuf = mTrieBuffer->getBuffer(usesAdditionalBuffer);
+    if (usesAdditionalBuffer) {
+        pos -= mTrieBuffer->getOriginalBufferSize();
+    }
+    // Read original flags
+    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
+            DynamicPtReadingUtils::updateAndGetFlags(originalFlags, true /* isMoved */,
+                    false /* isDeleted */, false /* willBecomeNonTerminal */);
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
+    // Update flags.
+    if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
+            &writingPos)) {
+        return false;
+    }
+    // Update moved position, which is stored in the parent offset field.
+    if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(
+            mTrieBuffer, movedPos, toBeUpdatedPtNodeParams->getHeadPos(), &writingPos)) {
+        return false;
+    }
+    if (toBeUpdatedPtNodeParams->hasChildren()) {
+        // Update children's parent position.
+        mReadingHelper.initWithPtNodeArrayPos(toBeUpdatedPtNodeParams->getChildrenPos());
+        while (!mReadingHelper.isEnd()) {
+            const PtNodeParams childPtNodeParams(mReadingHelper.getPtNodeParams());
+            int parentOffsetFieldPos = childPtNodeParams.getHeadPos()
+                    + DynamicPtWritingUtils::NODE_FLAG_FIELD_SIZE;
+            if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(
+                    mTrieBuffer, bigramLinkedNodePos, childPtNodeParams.getHeadPos(),
+                    &parentOffsetFieldPos)) {
+                // Parent offset cannot be written because of a bug or a broken dictionary; thus,
+                // we give up to update dictionary.
+                return false;
+            }
+            mReadingHelper.readNextSiblingNode(childPtNodeParams);
+        }
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::markPtNodeAsWillBecomeNonTerminal(
+        const PtNodeParams *const toBeUpdatedPtNodeParams) {
+    int pos = toBeUpdatedPtNodeParams->getHeadPos();
+    const bool usesAdditionalBuffer = mTrieBuffer->isInAdditionalBuffer(pos);
+    const uint8_t *const dictBuf = mTrieBuffer->getBuffer(usesAdditionalBuffer);
+    if (usesAdditionalBuffer) {
+        pos -= mTrieBuffer->getOriginalBufferSize();
+    }
+    // Read original flags
+    const PatriciaTrieReadingUtils::NodeFlags originalFlags =
+            PatriciaTrieReadingUtils::getFlagsAndAdvancePosition(dictBuf, &pos);
+    const PatriciaTrieReadingUtils::NodeFlags updatedFlags =
+            DynamicPtReadingUtils::updateAndGetFlags(originalFlags, false /* isMoved */,
+                    false /* isDeleted */, true /* willBecomeNonTerminal */);
+    if (!mBuffers->getMutableTerminalPositionLookupTable()->setTerminalPtNodePosition(
+            toBeUpdatedPtNodeParams->getTerminalId(), NOT_A_DICT_POS /* ptNodePos */)) {
+        AKLOGE("Cannot update terminal position lookup table. terminal id: %d",
+                toBeUpdatedPtNodeParams->getTerminalId());
+        return false;
+    }
+    // Update flags.
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos();
+    return DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer, updatedFlags,
+            &writingPos);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeUnigramProperty(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const UnigramProperty *const unigramProperty) {
+    // Update probability and historical information.
+    // TODO: Update other information in the unigram property.
+    if (!toBeUpdatedPtNodeParams->isTerminal()) {
+        return false;
+    }
+    const ProbabilityEntry originalProbabilityEntry =
+            mBuffers->getProbabilityDictContent()->getProbabilityEntry(
+                    toBeUpdatedPtNodeParams->getTerminalId());
+    const ProbabilityEntry probabilityEntry = createUpdatedEntryFrom(&originalProbabilityEntry,
+            unigramProperty);
+    return mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(
+            toBeUpdatedPtNodeParams->getTerminalId(), &probabilityEntry);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
+        const PtNodeParams *const toBeUpdatedPtNodeParams, bool *const outNeedsToKeepPtNode) {
+    if (!toBeUpdatedPtNodeParams->isTerminal()) {
+        AKLOGE("updatePtNodeProbabilityAndGetNeedsToSaveForGC is called for non-terminal PtNode.");
+        return false;
+    }
+    const ProbabilityEntry originalProbabilityEntry =
+            mBuffers->getProbabilityDictContent()->getProbabilityEntry(
+                    toBeUpdatedPtNodeParams->getTerminalId());
+    if (originalProbabilityEntry.hasHistoricalInfo()) {
+        const HistoricalInfo historicalInfo = ForgettingCurveUtils::createHistoricalInfoToSave(
+                originalProbabilityEntry.getHistoricalInfo(), mHeaderPolicy);
+        const ProbabilityEntry probabilityEntry =
+                originalProbabilityEntry.createEntryWithUpdatedHistoricalInfo(&historicalInfo);
+        if (!mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(
+                toBeUpdatedPtNodeParams->getTerminalId(), &probabilityEntry)) {
+            AKLOGE("Cannot write updated probability entry. terminalId: %d",
+                    toBeUpdatedPtNodeParams->getTerminalId());
+            return false;
+        }
+        const bool isValid = ForgettingCurveUtils::needsToKeep(&historicalInfo, mHeaderPolicy);
+        if (!isValid) {
+            if (!markPtNodeAsWillBecomeNonTerminal(toBeUpdatedPtNodeParams)) {
+                AKLOGE("Cannot mark PtNode as willBecomeNonTerminal.");
+                return false;
+            }
+        }
+        *outNeedsToKeepPtNode = isValid;
+    } else {
+        // No need to update probability.
+        *outNeedsToKeepPtNode = true;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateChildrenPosition(
+        const PtNodeParams *const toBeUpdatedPtNodeParams, const int newChildrenPosition) {
+    int childrenPosFieldPos = toBeUpdatedPtNodeParams->getChildrenPosFieldPos();
+    return DynamicPtWritingUtils::writeChildrenPositionAndAdvancePosition(mTrieBuffer,
+            newChildrenPosition, &childrenPosFieldPos);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateTerminalId(const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const int newTerminalId) {
+    return mTrieBuffer->writeUint(newTerminalId, Ver4DictConstants::TERMINAL_ID_FIELD_SIZE,
+            toBeUpdatedPtNodeParams->getTerminalIdFieldPos());
+}
+
+bool Ver4PatriciaTrieNodeWriter::writePtNodeAndAdvancePosition(
+        const PtNodeParams *const ptNodeParams, int *const ptNodeWritingPos) {
+    return writePtNodeAndGetTerminalIdAndAdvancePosition(ptNodeParams, 0 /* outTerminalId */,
+            ptNodeWritingPos);
+}
+
+
+bool Ver4PatriciaTrieNodeWriter::writeNewTerminalPtNodeAndAdvancePosition(
+        const PtNodeParams *const ptNodeParams, const UnigramProperty *const unigramProperty,
+        int *const ptNodeWritingPos) {
+    int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
+    if (!writePtNodeAndGetTerminalIdAndAdvancePosition(ptNodeParams, &terminalId,
+            ptNodeWritingPos)) {
+        return false;
+    }
+    // Write probability.
+    ProbabilityEntry newProbabilityEntry;
+    const ProbabilityEntry probabilityEntryToWrite = createUpdatedEntryFrom(
+            &newProbabilityEntry, unigramProperty);
+    return mBuffers->getMutableProbabilityDictContent()->setProbabilityEntry(terminalId,
+            &probabilityEntryToWrite);
+}
+
+bool Ver4PatriciaTrieNodeWriter::addNewBigramEntry(
+        const PtNodeParams *const sourcePtNodeParams, const PtNodeParams *const targetPtNodeParam,
+        const BigramProperty *const bigramProperty, bool *const outAddedNewBigram) {
+    if (!mBigramPolicy->addNewEntry(sourcePtNodeParams->getTerminalId(),
+            targetPtNodeParam->getTerminalId(), bigramProperty, outAddedNewBigram)) {
+        AKLOGE("Cannot add new bigram entry. terminalId: %d, targetTerminalId: %d",
+                sourcePtNodeParams->getTerminalId(), targetPtNodeParam->getTerminalId());
+        return false;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::removeBigramEntry(
+        const PtNodeParams *const sourcePtNodeParams, const PtNodeParams *const targetPtNodeParam) {
+    return mBigramPolicy->removeEntry(sourcePtNodeParams->getTerminalId(),
+            targetPtNodeParam->getTerminalId());
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateAllBigramEntriesAndDeleteUselessEntries(
+            const PtNodeParams *const sourcePtNodeParams, int *const outBigramEntryCount) {
+    return mBigramPolicy->updateAllBigramEntriesAndDeleteUselessEntries(
+            sourcePtNodeParams->getTerminalId(), outBigramEntryCount);
+}
+
+bool Ver4PatriciaTrieNodeWriter::updateAllPositionFields(
+        const PtNodeParams *const toBeUpdatedPtNodeParams,
+        const DictPositionRelocationMap *const dictPositionRelocationMap,
+        int *const outBigramEntryCount) {
+    int parentPos = toBeUpdatedPtNodeParams->getParentPos();
+    if (parentPos != NOT_A_DICT_POS) {
+        PtNodeWriter::PtNodePositionRelocationMap::const_iterator it =
+                dictPositionRelocationMap->mPtNodePositionRelocationMap.find(parentPos);
+        if (it != dictPositionRelocationMap->mPtNodePositionRelocationMap.end()) {
+            parentPos = it->second;
+        }
+    }
+    int writingPos = toBeUpdatedPtNodeParams->getHeadPos()
+            + DynamicPtWritingUtils::NODE_FLAG_FIELD_SIZE;
+    // Write updated parent offset.
+    if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(mTrieBuffer,
+            parentPos, toBeUpdatedPtNodeParams->getHeadPos(), &writingPos)) {
+        return false;
+    }
+
+    // Updates children position.
+    int childrenPos = toBeUpdatedPtNodeParams->getChildrenPos();
+    if (childrenPos != NOT_A_DICT_POS) {
+        PtNodeWriter::PtNodeArrayPositionRelocationMap::const_iterator it =
+                dictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.find(childrenPos);
+        if (it != dictPositionRelocationMap->mPtNodeArrayPositionRelocationMap.end()) {
+            childrenPos = it->second;
+        }
+    }
+    if (!updateChildrenPosition(toBeUpdatedPtNodeParams, childrenPos)) {
+        return false;
+    }
+
+    // Counts bigram entries.
+    if (outBigramEntryCount) {
+        *outBigramEntryCount = mBigramPolicy->getBigramEntryConut(
+                toBeUpdatedPtNodeParams->getTerminalId());
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::addShortcutTarget(const PtNodeParams *const ptNodeParams,
+        const int *const targetCodePoints, const int targetCodePointCount,
+        const int shortcutProbability) {
+    if (!mShortcutPolicy->addNewShortcut(ptNodeParams->getTerminalId(),
+            targetCodePoints, targetCodePointCount, shortcutProbability)) {
+        AKLOGE("Cannot add new shortuct entry. terminalId: %d", ptNodeParams->getTerminalId());
+        return false;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieNodeWriter::writePtNodeAndGetTerminalIdAndAdvancePosition(
+        const PtNodeParams *const ptNodeParams, int *const outTerminalId,
+        int *const ptNodeWritingPos) {
+    const int nodePos = *ptNodeWritingPos;
+    // Write dummy flags. The Node flags are updated with appropriate flags at the last step of the
+    // PtNode writing.
+    if (!DynamicPtWritingUtils::writeFlagsAndAdvancePosition(mTrieBuffer,
+            0 /* nodeFlags */, ptNodeWritingPos)) {
+        return false;
+    }
+    // Calculate a parent offset and write the offset.
+    if (!DynamicPtWritingUtils::writeParentPosOffsetAndAdvancePosition(mTrieBuffer,
+            ptNodeParams->getParentPos(), nodePos, ptNodeWritingPos)) {
+        return false;
+    }
+    // Write code points
+    if (!DynamicPtWritingUtils::writeCodePointsAndAdvancePosition(mTrieBuffer,
+            ptNodeParams->getCodePoints(), ptNodeParams->getCodePointCount(), ptNodeWritingPos)) {
+        return false;
+    }
+    int terminalId = Ver4DictConstants::NOT_A_TERMINAL_ID;
+    if (!ptNodeParams->willBecomeNonTerminal()) {
+        if (ptNodeParams->getTerminalId() != Ver4DictConstants::NOT_A_TERMINAL_ID) {
+            terminalId = ptNodeParams->getTerminalId();
+        } else if (ptNodeParams->isTerminal()) {
+            // Write terminal information using a new terminal id.
+            // Get a new unused terminal id.
+            terminalId = mBuffers->getTerminalPositionLookupTable()->getNextTerminalId();
+        }
+    }
+    const int isTerminal = terminalId != Ver4DictConstants::NOT_A_TERMINAL_ID;
+    if (isTerminal) {
+        // Update the lookup table.
+        if (!mBuffers->getMutableTerminalPositionLookupTable()->setTerminalPtNodePosition(
+                terminalId, nodePos)) {
+            return false;
+        }
+        // Write terminal Id.
+        if (!mTrieBuffer->writeUintAndAdvancePosition(terminalId,
+                Ver4DictConstants::TERMINAL_ID_FIELD_SIZE, ptNodeWritingPos)) {
+            return false;
+        }
+        if (outTerminalId) {
+            *outTerminalId = terminalId;
+        }
+    }
+    // Write children position
+    if (!DynamicPtWritingUtils::writeChildrenPositionAndAdvancePosition(mTrieBuffer,
+            ptNodeParams->getChildrenPos(), ptNodeWritingPos)) {
+        return false;
+    }
+    return updatePtNodeFlags(nodePos, ptNodeParams->isBlacklisted(), ptNodeParams->isNotAWord(),
+            isTerminal, ptNodeParams->getCodePointCount() > 1 /* hasMultipleChars */);
+}
+
+const ProbabilityEntry Ver4PatriciaTrieNodeWriter::createUpdatedEntryFrom(
+        const ProbabilityEntry *const originalProbabilityEntry,
+        const UnigramProperty *const unigramProperty) const {
+    // TODO: Consolidate historical info and probability.
+    if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
+        const HistoricalInfo historicalInfoForUpdate(unigramProperty->getTimestamp(),
+                unigramProperty->getLevel(), unigramProperty->getCount());
+        const HistoricalInfo updatedHistoricalInfo =
+                ForgettingCurveUtils::createUpdatedHistoricalInfo(
+                        originalProbabilityEntry->getHistoricalInfo(),
+                        unigramProperty->getProbability(), &historicalInfoForUpdate, mHeaderPolicy);
+        return originalProbabilityEntry->createEntryWithUpdatedHistoricalInfo(
+                &updatedHistoricalInfo);
+    } else {
+        return originalProbabilityEntry->createEntryWithUpdatedProbability(
+                unigramProperty->getProbability());
+    }
+}
+
+bool Ver4PatriciaTrieNodeWriter::updatePtNodeFlags(const int ptNodePos,
+        const bool isBlacklisted, const bool isNotAWord, const bool isTerminal,
+        const bool hasMultipleChars) {
+    // Create node flags and write them.
+    PatriciaTrieReadingUtils::NodeFlags nodeFlags =
+            PatriciaTrieReadingUtils::createAndGetFlags(isBlacklisted, isNotAWord, isTerminal,
+                    false /* hasShortcutTargets */, false /* hasBigrams */, hasMultipleChars,
+                    CHILDREN_POSITION_FIELD_SIZE);
+    if (!DynamicPtWritingUtils::writeFlags(mTrieBuffer, nodeFlags, ptNodePos)) {
+        AKLOGE("Cannot write PtNode flags. flags: %x, pos: %d", nodeFlags, ptNodePos);
+        return false;
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h
new file mode 100644
index 0000000..162dc9b
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_PATRICIA_TRIE_NODE_WRITER_H
+#define LATINIME_VER4_PATRICIA_TRIE_NODE_WRITER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_writer.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/probability_entry.h"
+
+namespace latinime {
+
+class BufferWithExtendableBuffer;
+class HeaderPolicy;
+class Ver4BigramListPolicy;
+class Ver4DictBuffers;
+class Ver4PatriciaTrieNodeReader;
+class Ver4PtNodeArrayReader;
+class Ver4ShortcutListPolicy;
+
+/*
+ * This class is used for helping to writes nodes of ver4 patricia trie.
+ */
+class Ver4PatriciaTrieNodeWriter : public PtNodeWriter {
+ public:
+    Ver4PatriciaTrieNodeWriter(BufferWithExtendableBuffer *const trieBuffer,
+            Ver4DictBuffers *const buffers, const HeaderPolicy *const headerPolicy,
+            const PtNodeReader *const ptNodeReader,
+            const PtNodeArrayReader *const ptNodeArrayReader,
+            Ver4BigramListPolicy *const bigramPolicy, Ver4ShortcutListPolicy *const shortcutPolicy)
+            : mTrieBuffer(trieBuffer), mBuffers(buffers), mHeaderPolicy(headerPolicy),
+              mReadingHelper(ptNodeReader, ptNodeArrayReader), mBigramPolicy(bigramPolicy),
+              mShortcutPolicy(shortcutPolicy) {}
+
+    virtual ~Ver4PatriciaTrieNodeWriter() {}
+
+    virtual bool markPtNodeAsDeleted(const PtNodeParams *const toBeUpdatedPtNodeParams);
+
+    virtual bool markPtNodeAsMoved(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int movedPos, const int bigramLinkedNodePos);
+
+    virtual bool markPtNodeAsWillBecomeNonTerminal(
+            const PtNodeParams *const toBeUpdatedPtNodeParams);
+
+    virtual bool updatePtNodeUnigramProperty(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const UnigramProperty *const unigramProperty);
+
+    virtual bool updatePtNodeProbabilityAndGetNeedsToKeepPtNodeAfterGC(
+            const PtNodeParams *const toBeUpdatedPtNodeParams, bool *const outNeedsToKeepPtNode);
+
+    virtual bool updateChildrenPosition(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int newChildrenPosition);
+
+    bool updateTerminalId(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const int newTerminalId);
+
+    virtual bool writePtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
+            int *const ptNodeWritingPos);
+
+    virtual bool writeNewTerminalPtNodeAndAdvancePosition(const PtNodeParams *const ptNodeParams,
+            const UnigramProperty *const unigramProperty, int *const ptNodeWritingPos);
+
+    virtual bool addNewBigramEntry(const PtNodeParams *const sourcePtNodeParams,
+            const PtNodeParams *const targetPtNodeParam, const BigramProperty *const bigramProperty,
+            bool *const outAddedNewBigram);
+
+    virtual bool removeBigramEntry(const PtNodeParams *const sourcePtNodeParams,
+            const PtNodeParams *const targetPtNodeParam);
+
+    virtual bool updateAllBigramEntriesAndDeleteUselessEntries(
+            const PtNodeParams *const sourcePtNodeParams, int *const outBigramEntryCount);
+
+    virtual bool updateAllPositionFields(const PtNodeParams *const toBeUpdatedPtNodeParams,
+            const DictPositionRelocationMap *const dictPositionRelocationMap,
+            int *const outBigramEntryCount);
+
+    virtual bool addShortcutTarget(const PtNodeParams *const ptNodeParams,
+            const int *const targetCodePoints, const int targetCodePointCount,
+            const int shortcutProbability);
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4PatriciaTrieNodeWriter);
+
+    bool writePtNodeAndGetTerminalIdAndAdvancePosition(
+            const PtNodeParams *const ptNodeParams, int *const outTerminalId,
+            int *const ptNodeWritingPos);
+
+    // Create updated probability entry using given unigram property. In addition to the
+    // probability, this method updates historical information if needed.
+    // TODO: Update flags belonging to the unigram property.
+    const ProbabilityEntry createUpdatedEntryFrom(
+            const ProbabilityEntry *const originalProbabilityEntry,
+            const UnigramProperty *const unigramProperty) const;
+
+    bool updatePtNodeFlags(const int ptNodePos, const bool isBlacklisted, const bool isNotAWord,
+            const bool isTerminal, const bool hasMultipleChars);
+
+    static const int CHILDREN_POSITION_FIELD_SIZE;
+
+    BufferWithExtendableBuffer *const mTrieBuffer;
+    Ver4DictBuffers *const mBuffers;
+    const HeaderPolicy *const mHeaderPolicy;
+    DynamicPtReadingHelper mReadingHelper;
+    Ver4BigramListPolicy *const mBigramPolicy;
+    Ver4ShortcutListPolicy *const mShortcutPolicy;
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_PATRICIA_TRIE_NODE_WRITER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
new file mode 100644
index 0000000..0b5764a
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
@@ -0,0 +1,528 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h"
+
+#include <vector>
+
+#include "suggest/core/dicnode/dic_node.h"
+#include "suggest/core/dicnode/dic_node_vector.h"
+#include "suggest/core/dictionary/property/bigram_property.h"
+#include "suggest/core/dictionary/property/unigram_property.h"
+#include "suggest/core/dictionary/property/word_property.h"
+#include "suggest/core/session/prev_words_info.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_helper.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+#include "suggest/policyimpl/dictionary/utils/probability_utils.h"
+
+namespace latinime {
+
+// Note that there are corresponding definitions in Java side in BinaryDictionaryTests and
+// BinaryDictionaryDecayingTests.
+const char *const Ver4PatriciaTriePolicy::UNIGRAM_COUNT_QUERY = "UNIGRAM_COUNT";
+const char *const Ver4PatriciaTriePolicy::BIGRAM_COUNT_QUERY = "BIGRAM_COUNT";
+const char *const Ver4PatriciaTriePolicy::MAX_UNIGRAM_COUNT_QUERY = "MAX_UNIGRAM_COUNT";
+const char *const Ver4PatriciaTriePolicy::MAX_BIGRAM_COUNT_QUERY = "MAX_BIGRAM_COUNT";
+const int Ver4PatriciaTriePolicy::MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS = 1024;
+const int Ver4PatriciaTriePolicy::MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS =
+        Ver4DictConstants::MAX_DICTIONARY_SIZE - MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS;
+
+void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNode,
+        DicNodeVector *const childDicNodes) const {
+    if (!dicNode->hasChildren()) {
+        return;
+    }
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(dicNode->getChildrenPtNodeArrayPos());
+    while (!readingHelper.isEnd()) {
+        const PtNodeParams ptNodeParams = readingHelper.getPtNodeParams();
+        if (!ptNodeParams.isValid()) {
+            break;
+        }
+        bool isTerminal = ptNodeParams.isTerminal() && !ptNodeParams.isDeleted();
+        if (isTerminal && mHeaderPolicy->isDecayingDict()) {
+            // A DecayingDict may have a terminal PtNode that has a terminal DicNode whose
+            // probability is NOT_A_PROBABILITY. In such case, we don't want to treat it as a
+            // valid terminal DicNode.
+            isTerminal = ptNodeParams.getProbability() != NOT_A_PROBABILITY;
+        }
+        readingHelper.readNextSiblingNode(ptNodeParams);
+        if (ptNodeParams.representsNonWordInfo()) {
+            // Skip PtNodes that represent non-word information.
+            continue;
+        }
+        childDicNodes->pushLeavingChild(dicNode, ptNodeParams.getHeadPos(),
+                ptNodeParams.getChildrenPos(), ptNodeParams.getProbability(), isTerminal,
+                ptNodeParams.hasChildren(),
+                ptNodeParams.isBlacklisted()
+                        || ptNodeParams.isNotAWord() /* isBlacklistedOrNotAWord */,
+                ptNodeParams.getCodePointCount(), ptNodeParams.getCodePoints());
+    }
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes().");
+    }
+}
+
+int Ver4PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount(
+        const int ptNodePos, const int maxCodePointCount, int *const outCodePoints,
+        int *const outUnigramProbability) const {
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodePos(ptNodePos);
+    const int codePointCount =  readingHelper.getCodePointsAndProbabilityAndReturnCodePointCount(
+            maxCodePointCount, outCodePoints, outUnigramProbability);
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in getCodePointsAndProbabilityAndReturnCodePointCount().");
+    }
+    return codePointCount;
+}
+
+int Ver4PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord,
+        const int length, const bool forceLowerCaseSearch) const {
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(getRootPosition());
+    const int ptNodePos =
+            readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch);
+    if (readingHelper.isError()) {
+        mIsCorrupted = true;
+        AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes().");
+    }
+    return ptNodePos;
+}
+
+int Ver4PatriciaTriePolicy::getProbability(const int unigramProbability,
+        const int bigramProbability) const {
+    if (mHeaderPolicy->isDecayingDict()) {
+        // Both probabilities are encoded. Decode them and get probability.
+        return ForgettingCurveUtils::getProbability(unigramProbability, bigramProbability);
+    } else {
+        if (unigramProbability == NOT_A_PROBABILITY) {
+            return NOT_A_PROBABILITY;
+        } else if (bigramProbability == NOT_A_PROBABILITY) {
+            return ProbabilityUtils::backoff(unigramProbability);
+        } else {
+            return bigramProbability;
+        }
+    }
+}
+
+int Ver4PatriciaTriePolicy::getUnigramProbabilityOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_PROBABILITY;
+    }
+    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
+    if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) {
+        return NOT_A_PROBABILITY;
+    }
+    return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY);
+}
+
+int Ver4PatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_DICT_POS;
+    }
+    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
+    if (ptNodeParams.isDeleted()) {
+        return NOT_A_DICT_POS;
+    }
+    return mBuffers->getShortcutDictContent()->getShortcutListHeadPos(
+            ptNodeParams.getTerminalId());
+}
+
+BinaryDictionaryBigramsIterator Ver4PatriciaTriePolicy::getBigramsIteratorOfPtNode(
+        const int ptNodePos) const {
+    const int bigramsPosition = getBigramsPositionOfPtNode(ptNodePos);
+    return BinaryDictionaryBigramsIterator(&mBigramPolicy, bigramsPosition);
+}
+
+int Ver4PatriciaTriePolicy::getBigramsPositionOfPtNode(const int ptNodePos) const {
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return NOT_A_DICT_POS;
+    }
+    const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos));
+    if (ptNodeParams.isDeleted()) {
+        return NOT_A_DICT_POS;
+    }
+    return mBuffers->getBigramDictContent()->getBigramListHeadPos(
+            ptNodeParams.getTerminalId());
+}
+
+bool Ver4PatriciaTriePolicy::addUnigramEntry(const int *const word, const int length,
+        const UnigramProperty *const unigramProperty) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: addUnigramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
+        AKLOGE("The dictionary is too large to dynamically update. Dictionary size: %d",
+                mDictBuffer->getTailPosition());
+        return false;
+    }
+    if (length > MAX_WORD_LENGTH) {
+        AKLOGE("The word is too long to insert to the dictionary, length: %d", length);
+        return false;
+    }
+    for (const auto &shortcut : unigramProperty->getShortcuts()) {
+        if (shortcut.getTargetCodePoints()->size() > MAX_WORD_LENGTH) {
+            AKLOGE("One of shortcut targets is too long to insert to the dictionary, length: %d",
+                    shortcut.getTargetCodePoints()->size());
+            return false;
+        }
+    }
+    DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(getRootPosition());
+    bool addedNewUnigram = false;
+    int codePointsToAdd[MAX_WORD_LENGTH];
+    int codePointCountToAdd = length;
+    memmove(codePointsToAdd, word, sizeof(int) * length);
+    if (unigramProperty->representsBeginningOfSentence()) {
+        codePointCountToAdd = CharUtils::attachBeginningOfSentenceMarker(codePointsToAdd,
+                codePointCountToAdd, MAX_WORD_LENGTH);
+    }
+    if (codePointCountToAdd <= 0) {
+        return false;
+    }
+    if (mUpdatingHelper.addUnigramWord(&readingHelper, codePointsToAdd, codePointCountToAdd,
+            unigramProperty, &addedNewUnigram)) {
+        if (addedNewUnigram && !unigramProperty->representsBeginningOfSentence()) {
+            mUnigramCount++;
+        }
+        if (unigramProperty->getShortcuts().size() > 0) {
+            // Add shortcut target.
+            const int wordPos = getTerminalPtNodePositionOfWord(word, length,
+                    false /* forceLowerCaseSearch */);
+            if (wordPos == NOT_A_DICT_POS) {
+                AKLOGE("Cannot find terminal PtNode position to add shortcut target.");
+                return false;
+            }
+            for (const auto &shortcut : unigramProperty->getShortcuts()) {
+                if (!mUpdatingHelper.addShortcutTarget(wordPos,
+                        shortcut.getTargetCodePoints()->data(),
+                        shortcut.getTargetCodePoints()->size(), shortcut.getProbability())) {
+                    AKLOGE("Cannot add new shortcut target. PtNodePos: %d, length: %d, "
+                            "probability: %d", wordPos, shortcut.getTargetCodePoints()->size(),
+                            shortcut.getProbability());
+                    return false;
+                }
+            }
+        }
+        return true;
+    } else {
+        return false;
+    }
+}
+
+bool Ver4PatriciaTriePolicy::removeUnigramEntry(const int *const word, const int length) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: removeUnigramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    const int ptNodePos = getTerminalPtNodePositionOfWord(word, length,
+            false /* forceLowerCaseSearch */);
+    if (ptNodePos == NOT_A_DICT_POS) {
+        return false;
+    }
+    const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+    if (!mNodeWriter.markPtNodeAsDeleted(&ptNodeParams)) {
+        AKLOGE("Cannot remove unigram. ptNodePos: %d", ptNodePos);
+        return false;
+    }
+    if (!ptNodeParams.representsNonWordInfo()) {
+        mUnigramCount--;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+        const BigramProperty *const bigramProperty) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: addNgramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
+        AKLOGE("The dictionary is too large to dynamically update. Dictionary size: %d",
+                mDictBuffer->getTailPosition());
+        return false;
+    }
+    if (!prevWordsInfo->isValid()) {
+        AKLOGE("prev words info is not valid for adding n-gram entry to the dictionary.");
+        return false;
+    }
+    if (bigramProperty->getTargetCodePoints()->size() > MAX_WORD_LENGTH) {
+        AKLOGE("The word is too long to insert the ngram to the dictionary. "
+                "length: %d", bigramProperty->getTargetCodePoints()->size());
+        return false;
+    }
+    int prevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
+            false /* tryLowerCaseSearch */);
+    // TODO: Support N-gram.
+    if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) {
+        if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)) {
+            const std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+            const UnigramProperty beginningOfSentenceUnigramProperty(
+                    true /* representsBeginningOfSentence */, true /* isNotAWord */,
+                    false /* isBlacklisted */, MAX_PROBABILITY /* probability */,
+                    NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts);
+            if (!addUnigramEntry(prevWordsInfo->getNthPrevWordCodePoints(1 /* n */),
+                    prevWordsInfo->getNthPrevWordCodePointCount(1 /* n */),
+                    &beginningOfSentenceUnigramProperty)) {
+                AKLOGE("Cannot add unigram entry for the beginning-of-sentence.");
+                return false;
+            }
+            // Refresh Terminal PtNode positions.
+            prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
+                    false /* tryLowerCaseSearch */);
+        } else {
+            return false;
+        }
+    }
+    const int word1Pos = getTerminalPtNodePositionOfWord(
+            bigramProperty->getTargetCodePoints()->data(),
+            bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */);
+    if (word1Pos == NOT_A_DICT_POS) {
+        return false;
+    }
+    bool addedNewBigram = false;
+    if (mUpdatingHelper.addBigramWords(prevWordsPtNodePos[0], word1Pos, bigramProperty,
+            &addedNewBigram)) {
+        if (addedNewBigram) {
+            mBigramCount++;
+        }
+        return true;
+    } else {
+        return false;
+    }
+}
+
+bool Ver4PatriciaTriePolicy::removeNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+        const int *const word, const int length) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: removeNgramEntry() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS) {
+        AKLOGE("The dictionary is too large to dynamically update. Dictionary size: %d",
+                mDictBuffer->getTailPosition());
+        return false;
+    }
+    if (!prevWordsInfo->isValid()) {
+        AKLOGE("prev words info is not valid for removing n-gram entry form the dictionary.");
+        return false;
+    }
+    if (length > MAX_WORD_LENGTH) {
+        AKLOGE("word is too long to remove n-gram entry form the dictionary. length: %d", length);
+    }
+    int prevWordsPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+    prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
+            false /* tryLowerCaseSerch */);
+    // TODO: Support N-gram.
+    if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) {
+        return false;
+    }
+    const int wordPos = getTerminalPtNodePositionOfWord(word, length,
+            false /* forceLowerCaseSearch */);
+    if (wordPos == NOT_A_DICT_POS) {
+        return false;
+    }
+    if (mUpdatingHelper.removeBigramWords(prevWordsPtNodePos[0], wordPos)) {
+        mBigramCount--;
+        return true;
+    } else {
+        return false;
+    }
+}
+
+bool Ver4PatriciaTriePolicy::flush(const char *const filePath) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: flush() is called for non-updatable dictionary. filePath: %s", filePath);
+        return false;
+    }
+    if (!mWritingHelper.writeToDictFile(filePath, mUnigramCount, mBigramCount)) {
+        AKLOGE("Cannot flush the dictionary to file.");
+        mIsCorrupted = true;
+        return false;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTriePolicy::flushWithGC(const char *const filePath) {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (!mWritingHelper.writeToDictFileWithGC(getRootPosition(), filePath)) {
+        AKLOGE("Cannot flush the dictionary to file with GC.");
+        mIsCorrupted = true;
+        return false;
+    }
+    return true;
+}
+
+bool Ver4PatriciaTriePolicy::needsToRunGC(const bool mindsBlockByGC) const {
+    if (!mBuffers->isUpdatable()) {
+        AKLOGI("Warning: needsToRunGC() is called for non-updatable dictionary.");
+        return false;
+    }
+    if (mBuffers->isNearSizeLimit()) {
+        // Additional buffer size is near the limit.
+        return true;
+    } else if (mHeaderPolicy->getExtendedRegionSize() + mDictBuffer->getUsedAdditionalBufferSize()
+            > Ver4DictConstants::MAX_DICT_EXTENDED_REGION_SIZE) {
+        // Total extended region size of the trie exceeds the limit.
+        return true;
+    } else if (mDictBuffer->getTailPosition() >= MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS
+            && mDictBuffer->getUsedAdditionalBufferSize() > 0) {
+        // Needs to reduce dictionary size.
+        return true;
+    } else if (mHeaderPolicy->isDecayingDict()) {
+        return ForgettingCurveUtils::needsToDecay(mindsBlockByGC, mUnigramCount, mBigramCount,
+                mHeaderPolicy);
+    }
+    return false;
+}
+
+void Ver4PatriciaTriePolicy::getProperty(const char *const query, const int queryLength,
+        char *const outResult, const int maxResultLength) {
+    const int compareLength = queryLength + 1 /* terminator */;
+    if (strncmp(query, UNIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d", mUnigramCount);
+    } else if (strncmp(query, BIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d", mBigramCount);
+    } else if (strncmp(query, MAX_UNIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d",
+                mHeaderPolicy->isDecayingDict() ?
+                        ForgettingCurveUtils::getUnigramCountHardLimit(
+                                mHeaderPolicy->getMaxUnigramCount()) :
+                        static_cast<int>(Ver4DictConstants::MAX_DICTIONARY_SIZE));
+    } else if (strncmp(query, MAX_BIGRAM_COUNT_QUERY, compareLength) == 0) {
+        snprintf(outResult, maxResultLength, "%d",
+                mHeaderPolicy->isDecayingDict() ?
+                        ForgettingCurveUtils::getBigramCountHardLimit(
+                                mHeaderPolicy->getMaxBigramCount()) :
+                        static_cast<int>(Ver4DictConstants::MAX_DICTIONARY_SIZE));
+    }
+}
+
+const WordProperty Ver4PatriciaTriePolicy::getWordProperty(const int *const codePoints,
+        const int codePointCount) const {
+    const int ptNodePos = getTerminalPtNodePositionOfWord(codePoints, codePointCount,
+            false /* forceLowerCaseSearch */);
+    if (ptNodePos == NOT_A_DICT_POS) {
+        AKLOGE("getWordProperty is called for invalid word.");
+        return WordProperty();
+    }
+    const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+    std::vector<int> codePointVector(ptNodeParams.getCodePoints(),
+            ptNodeParams.getCodePoints() + ptNodeParams.getCodePointCount());
+    const ProbabilityEntry probabilityEntry =
+            mBuffers->getProbabilityDictContent()->getProbabilityEntry(
+                    ptNodeParams.getTerminalId());
+    const HistoricalInfo *const historicalInfo = probabilityEntry.getHistoricalInfo();
+    // Fetch bigram information.
+    std::vector<BigramProperty> bigrams;
+    const int bigramListPos = getBigramsPositionOfPtNode(ptNodePos);
+    if (bigramListPos != NOT_A_DICT_POS) {
+        int bigramWord1CodePoints[MAX_WORD_LENGTH];
+        const BigramDictContent *const bigramDictContent = mBuffers->getBigramDictContent();
+        const TerminalPositionLookupTable *const terminalPositionLookupTable =
+                mBuffers->getTerminalPositionLookupTable();
+        bool hasNext = true;
+        int readingPos = bigramListPos;
+        while (hasNext) {
+            const BigramEntry bigramEntry =
+                    bigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+            hasNext = bigramEntry.hasNext();
+            const int word1TerminalId = bigramEntry.getTargetTerminalId();
+            const int word1TerminalPtNodePos =
+                    terminalPositionLookupTable->getTerminalPtNodePosition(word1TerminalId);
+            if (word1TerminalPtNodePos == NOT_A_DICT_POS) {
+                continue;
+            }
+            // Word (unigram) probability
+            int word1Probability = NOT_A_PROBABILITY;
+            const int codePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(
+                    word1TerminalPtNodePos, MAX_WORD_LENGTH, bigramWord1CodePoints,
+                    &word1Probability);
+            const std::vector<int> word1(bigramWord1CodePoints,
+                    bigramWord1CodePoints + codePointCount);
+            const HistoricalInfo *const historicalInfo = bigramEntry.getHistoricalInfo();
+            const int probability = bigramEntry.hasHistoricalInfo() ?
+                    ForgettingCurveUtils::decodeProbability(
+                            bigramEntry.getHistoricalInfo(), mHeaderPolicy) :
+                    bigramEntry.getProbability();
+            bigrams.emplace_back(&word1, probability,
+                    historicalInfo->getTimeStamp(), historicalInfo->getLevel(),
+                    historicalInfo->getCount());
+        }
+    }
+    // Fetch shortcut information.
+    std::vector<UnigramProperty::ShortcutProperty> shortcuts;
+    int shortcutPos = getShortcutPositionOfPtNode(ptNodePos);
+    if (shortcutPos != NOT_A_DICT_POS) {
+        int shortcutTarget[MAX_WORD_LENGTH];
+        const ShortcutDictContent *const shortcutDictContent =
+                mBuffers->getShortcutDictContent();
+        bool hasNext = true;
+        while (hasNext) {
+            int shortcutTargetLength = 0;
+            int shortcutProbability = NOT_A_PROBABILITY;
+            shortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, shortcutTarget,
+                    &shortcutTargetLength, &shortcutProbability, &hasNext, &shortcutPos);
+            const std::vector<int> target(shortcutTarget, shortcutTarget + shortcutTargetLength);
+            shortcuts.emplace_back(&target, shortcutProbability);
+        }
+    }
+    const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(),
+            ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(),
+            historicalInfo->getTimeStamp(), historicalInfo->getLevel(),
+            historicalInfo->getCount(), &shortcuts);
+    return WordProperty(&codePointVector, &unigramProperty, &bigrams);
+}
+
+int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints,
+        int *const outCodePointCount) {
+    *outCodePointCount = 0;
+    if (token == 0) {
+        mTerminalPtNodePositionsForIteratingWords.clear();
+        DynamicPtReadingHelper::TraversePolicyToGetAllTerminalPtNodePositions traversePolicy(
+                &mTerminalPtNodePositionsForIteratingWords);
+        DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader);
+        readingHelper.initWithPtNodeArrayPos(getRootPosition());
+        readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(&traversePolicy);
+    }
+    const int terminalPtNodePositionsVectorSize =
+            static_cast<int>(mTerminalPtNodePositionsForIteratingWords.size());
+    if (token < 0 || token >= terminalPtNodePositionsVectorSize) {
+        AKLOGE("Given token %d is invalid.", token);
+        return 0;
+    }
+    const int terminalPtNodePos = mTerminalPtNodePositionsForIteratingWords[token];
+    int unigramProbability = NOT_A_PROBABILITY;
+    *outCodePointCount = getCodePointsAndProbabilityAndReturnCodePointCount(
+            terminalPtNodePos, MAX_WORD_LENGTH, outCodePoints, &unigramProbability);
+    const int nextToken = token + 1;
+    if (nextToken >= terminalPtNodePositionsVectorSize) {
+        // All words have been iterated.
+        mTerminalPtNodePositionsForIteratingWords.clear();
+        return 0;
+    }
+    return nextToken;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
new file mode 100644
index 0000000..85929b7
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_PATRICIA_TRIE_POLICY_H
+#define LATINIME_VER4_PATRICIA_TRIE_POLICY_H
+
+#include <vector>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+class DicNode;
+class DicNodeVector;
+
+class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
+ public:
+    Ver4PatriciaTriePolicy(Ver4DictBuffers::Ver4DictBuffersPtr buffers)
+            : mBuffers(std::move(buffers)), mHeaderPolicy(mBuffers->getHeaderPolicy()),
+              mDictBuffer(mBuffers->getWritableTrieBuffer()),
+              mBigramPolicy(mBuffers->getMutableBigramDictContent(),
+                      mBuffers->getTerminalPositionLookupTable(), mHeaderPolicy),
+              mShortcutPolicy(mBuffers->getMutableShortcutDictContent(),
+                      mBuffers->getTerminalPositionLookupTable()),
+              mNodeReader(mDictBuffer, mBuffers->getProbabilityDictContent(), mHeaderPolicy),
+              mPtNodeArrayReader(mDictBuffer),
+              mNodeWriter(mDictBuffer, mBuffers.get(), mHeaderPolicy, &mNodeReader,
+                      &mPtNodeArrayReader, &mBigramPolicy, &mShortcutPolicy),
+              mUpdatingHelper(mDictBuffer, &mNodeReader, &mNodeWriter),
+              mWritingHelper(mBuffers.get()),
+              mUnigramCount(mHeaderPolicy->getUnigramCount()),
+              mBigramCount(mHeaderPolicy->getBigramCount()),
+              mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {};
+
+    AK_FORCE_INLINE int getRootPosition() const {
+        return 0;
+    }
+
+    void createAndGetAllChildDicNodes(const DicNode *const dicNode,
+            DicNodeVector *const childDicNodes) const;
+
+    int getCodePointsAndProbabilityAndReturnCodePointCount(
+            const int terminalPtNodePos, const int maxCodePointCount, int *const outCodePoints,
+            int *const outUnigramProbability) const;
+
+    int getTerminalPtNodePositionOfWord(const int *const inWord,
+            const int length, const bool forceLowerCaseSearch) const;
+
+    int getProbability(const int unigramProbability, const int bigramProbability) const;
+
+    int getUnigramProbabilityOfPtNode(const int ptNodePos) const;
+
+    int getShortcutPositionOfPtNode(const int ptNodePos) const;
+
+    BinaryDictionaryBigramsIterator getBigramsIteratorOfPtNode(const int ptNodePos) const;
+
+    const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const {
+        return mHeaderPolicy;
+    }
+
+    const DictionaryShortcutsStructurePolicy *getShortcutsStructurePolicy() const {
+        return &mShortcutPolicy;
+    }
+
+    bool addUnigramEntry(const int *const word, const int length,
+            const UnigramProperty *const unigramProperty);
+
+    bool removeUnigramEntry(const int *const word, const int length);
+
+    bool addNgramEntry(const PrevWordsInfo *const prevWordsInfo,
+            const BigramProperty *const bigramProperty);
+
+    bool removeNgramEntry(const PrevWordsInfo *const prevWordsInfo, const int *const word1,
+            const int length1);
+
+    bool flush(const char *const filePath);
+
+    bool flushWithGC(const char *const filePath);
+
+    bool needsToRunGC(const bool mindsBlockByGC) const;
+
+    void getProperty(const char *const query, const int queryLength, char *const outResult,
+            const int maxResultLength);
+
+    const WordProperty getWordProperty(const int *const codePoints,
+            const int codePointCount) const;
+
+    int getNextWordAndNextToken(const int token, int *const outCodePoints,
+            int *const outCodePointCount);
+
+    bool isCorrupted() const {
+        return mIsCorrupted;
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTriePolicy);
+
+    static const char *const UNIGRAM_COUNT_QUERY;
+    static const char *const BIGRAM_COUNT_QUERY;
+    static const char *const MAX_UNIGRAM_COUNT_QUERY;
+    static const char *const MAX_BIGRAM_COUNT_QUERY;
+    // When the dictionary size is near the maximum size, we have to refuse dynamic operations to
+    // prevent the dictionary from overflowing.
+    static const int MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS;
+    static const int MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS;
+
+    const Ver4DictBuffers::Ver4DictBuffersPtr mBuffers;
+    const HeaderPolicy *const mHeaderPolicy;
+    BufferWithExtendableBuffer *const mDictBuffer;
+    Ver4BigramListPolicy mBigramPolicy;
+    Ver4ShortcutListPolicy mShortcutPolicy;
+    Ver4PatriciaTrieNodeReader mNodeReader;
+    Ver4PtNodeArrayReader mPtNodeArrayReader;
+    Ver4PatriciaTrieNodeWriter mNodeWriter;
+    DynamicPtUpdatingHelper mUpdatingHelper;
+    Ver4PatriciaTrieWritingHelper mWritingHelper;
+    int mUnigramCount;
+    int mBigramCount;
+    std::vector<int> mTerminalPtNodePositionsForIteratingWords;
+    mutable bool mIsCorrupted;
+
+    int getBigramsPositionOfPtNode(const int ptNodePos) const;
+};
+} // namespace latinime
+#endif // LATINIME_VER4_PATRICIA_TRIE_POLICY_H
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.cpp
new file mode 100644
index 0000000..254022d
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.cpp
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h"
+
+#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"
+
+namespace latinime {
+
+/* static */ int Ver4PatriciaTrieReadingUtils::getTerminalIdAndAdvancePosition(
+        const uint8_t *const buffer, int *pos) {
+    return ByteArrayUtils::readUint32AndAdvancePosition(buffer, pos);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h
new file mode 100644
index 0000000..466ff55
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_reading_utils.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_PATRICIA_TRIE_READING_UTILS_H
+#define LATINIME_VER4_PATRICIA_TRIE_READING_UTILS_H
+
+#include <cstdint>
+
+#include "defines.h"
+
+namespace latinime {
+
+class BufferWithExtendableBuffer;
+
+class Ver4PatriciaTrieReadingUtils {
+ public:
+    static int getTerminalIdAndAdvancePosition(const uint8_t *const buffer,
+            int *const pos);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTrieReadingUtils);
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_PATRICIA_TRIE_READING_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp
new file mode 100644
index 0000000..0e658f8
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp
@@ -0,0 +1,294 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.h"
+
+#include <cstring>
+#include <queue>
+
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/bigram/ver4_bigram_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/shortcut/ver4_shortcut_list_policy.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_constants.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_reader.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
+
+namespace latinime {
+
+bool Ver4PatriciaTrieWritingHelper::writeToDictFile(const char *const dictDirPath,
+        const int unigramCount, const int bigramCount) const {
+    const HeaderPolicy *const headerPolicy = mBuffers->getHeaderPolicy();
+    BufferWithExtendableBuffer headerBuffer(
+            BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE);
+    const int extendedRegionSize = headerPolicy->getExtendedRegionSize()
+            + mBuffers->getTrieBuffer()->getUsedAdditionalBufferSize();
+    if (!headerPolicy->fillInAndWriteHeaderToBuffer(false /* updatesLastDecayedTime */,
+            unigramCount, bigramCount, extendedRegionSize, &headerBuffer)) {
+        AKLOGE("Cannot write header structure to buffer. "
+                "updatesLastDecayedTime: %d, unigramCount: %d, bigramCount: %d, "
+                "extendedRegionSize: %d", false, unigramCount, bigramCount,
+                extendedRegionSize);
+        return false;
+    }
+    return mBuffers->flushHeaderAndDictBuffers(dictDirPath, &headerBuffer);
+}
+
+bool Ver4PatriciaTrieWritingHelper::writeToDictFileWithGC(const int rootPtNodeArrayPos,
+        const char *const dictDirPath) {
+    const HeaderPolicy *const headerPolicy = mBuffers->getHeaderPolicy();
+    Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers(
+            Ver4DictBuffers::createVer4DictBuffers(headerPolicy,
+                    Ver4DictConstants::MAX_DICTIONARY_SIZE));
+    int unigramCount = 0;
+    int bigramCount = 0;
+    if (!runGC(rootPtNodeArrayPos, headerPolicy, dictBuffers.get(), &unigramCount, &bigramCount)) {
+        return false;
+    }
+    BufferWithExtendableBuffer headerBuffer(
+            BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE);
+    if (!headerPolicy->fillInAndWriteHeaderToBuffer(true /* updatesLastDecayedTime */,
+            unigramCount, bigramCount, 0 /* extendedRegionSize */, &headerBuffer)) {
+        return false;
+    }
+    return dictBuffers->flushHeaderAndDictBuffers(dictDirPath, &headerBuffer);
+}
+
+bool Ver4PatriciaTrieWritingHelper::runGC(const int rootPtNodeArrayPos,
+        const HeaderPolicy *const headerPolicy, Ver4DictBuffers *const buffersToWrite,
+        int *const outUnigramCount, int *const outBigramCount) {
+    Ver4PatriciaTrieNodeReader ptNodeReader(mBuffers->getTrieBuffer(),
+            mBuffers->getProbabilityDictContent(), headerPolicy);
+    Ver4PtNodeArrayReader ptNodeArrayReader(mBuffers->getTrieBuffer());
+    Ver4BigramListPolicy bigramPolicy(mBuffers->getMutableBigramDictContent(),
+            mBuffers->getTerminalPositionLookupTable(), headerPolicy);
+    Ver4ShortcutListPolicy shortcutPolicy(mBuffers->getMutableShortcutDictContent(),
+            mBuffers->getTerminalPositionLookupTable());
+    Ver4PatriciaTrieNodeWriter ptNodeWriter(mBuffers->getWritableTrieBuffer(),
+            mBuffers, headerPolicy, &ptNodeReader, &ptNodeArrayReader, &bigramPolicy,
+            &shortcutPolicy);
+
+    DynamicPtReadingHelper readingHelper(&ptNodeReader, &ptNodeArrayReader);
+    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    DynamicPtGcEventListeners
+            ::TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
+                    traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted(
+                            &ptNodeWriter);
+    if (!readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
+            &traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted)) {
+        return false;
+    }
+    const int unigramCount = traversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted
+            .getValidUnigramCount();
+    const int maxUnigramCount = headerPolicy->getMaxUnigramCount();
+    if (headerPolicy->isDecayingDict() && unigramCount > maxUnigramCount) {
+        if (!truncateUnigrams(&ptNodeReader, &ptNodeWriter, maxUnigramCount)) {
+            AKLOGE("Cannot remove unigrams. current: %d, max: %d", unigramCount,
+                    maxUnigramCount);
+            return false;
+        }
+    }
+
+    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    DynamicPtGcEventListeners::TraversePolicyToUpdateBigramProbability
+            traversePolicyToUpdateBigramProbability(&ptNodeWriter);
+    if (!readingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
+            &traversePolicyToUpdateBigramProbability)) {
+        return false;
+    }
+    const int bigramCount = traversePolicyToUpdateBigramProbability.getValidBigramEntryCount();
+    const int maxBigramCount = headerPolicy->getMaxBigramCount();
+    if (headerPolicy->isDecayingDict() && bigramCount > maxBigramCount) {
+        if (!truncateBigrams(maxBigramCount)) {
+            AKLOGE("Cannot remove bigrams. current: %d, max: %d", bigramCount, maxBigramCount);
+            return false;
+        }
+    }
+
+    // Mapping from positions in mBuffer to positions in bufferToWrite.
+    PtNodeWriter::DictPositionRelocationMap dictPositionRelocationMap;
+    readingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    Ver4PatriciaTrieNodeWriter ptNodeWriterForNewBuffers(buffersToWrite->getWritableTrieBuffer(),
+            buffersToWrite, headerPolicy, &ptNodeReader, &ptNodeArrayReader, &bigramPolicy,
+            &shortcutPolicy);
+    DynamicPtGcEventListeners::TraversePolicyToPlaceAndWriteValidPtNodesToBuffer
+            traversePolicyToPlaceAndWriteValidPtNodesToBuffer(&ptNodeWriterForNewBuffers,
+                    buffersToWrite->getWritableTrieBuffer(), &dictPositionRelocationMap);
+    if (!readingHelper.traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
+            &traversePolicyToPlaceAndWriteValidPtNodesToBuffer)) {
+        return false;
+    }
+
+    // Create policy instances for the GCed dictionary.
+    Ver4PatriciaTrieNodeReader newPtNodeReader(buffersToWrite->getTrieBuffer(),
+            buffersToWrite->getProbabilityDictContent(), headerPolicy);
+    Ver4PtNodeArrayReader newPtNodeArrayreader(buffersToWrite->getTrieBuffer());
+    Ver4BigramListPolicy newBigramPolicy(buffersToWrite->getMutableBigramDictContent(),
+            buffersToWrite->getTerminalPositionLookupTable(), headerPolicy);
+    Ver4ShortcutListPolicy newShortcutPolicy(buffersToWrite->getMutableShortcutDictContent(),
+            buffersToWrite->getTerminalPositionLookupTable());
+    Ver4PatriciaTrieNodeWriter newPtNodeWriter(buffersToWrite->getWritableTrieBuffer(),
+            buffersToWrite, headerPolicy, &newPtNodeReader, &newPtNodeArrayreader, &newBigramPolicy,
+            &newShortcutPolicy);
+    // Re-assign terminal IDs for valid terminal PtNodes.
+    TerminalPositionLookupTable::TerminalIdMap terminalIdMap;
+    if(!buffersToWrite->getMutableTerminalPositionLookupTable()->runGCTerminalIds(
+            &terminalIdMap)) {
+        return false;
+    }
+    // Run GC for probability dict content.
+    if (!buffersToWrite->getMutableProbabilityDictContent()->runGC(&terminalIdMap,
+            mBuffers->getProbabilityDictContent())) {
+        return false;
+    }
+    // Run GC for bigram dict content.
+    if(!buffersToWrite->getMutableBigramDictContent()->runGC(&terminalIdMap,
+            mBuffers->getBigramDictContent(), outBigramCount)) {
+        return false;
+    }
+    // Run GC for shortcut dict content.
+    if(!buffersToWrite->getMutableShortcutDictContent()->runGC(&terminalIdMap,
+            mBuffers->getShortcutDictContent())) {
+        return false;
+    }
+    DynamicPtReadingHelper newDictReadingHelper(&newPtNodeReader, &newPtNodeArrayreader);
+    newDictReadingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    DynamicPtGcEventListeners::TraversePolicyToUpdateAllPositionFields
+            traversePolicyToUpdateAllPositionFields(&newPtNodeWriter, &dictPositionRelocationMap);
+    if (!newDictReadingHelper.traverseAllPtNodesInPtNodeArrayLevelPreorderDepthFirstManner(
+            &traversePolicyToUpdateAllPositionFields)) {
+        return false;
+    }
+    newDictReadingHelper.initWithPtNodeArrayPos(rootPtNodeArrayPos);
+    TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds
+            traversePolicyToUpdateAllPtNodeFlagsAndTerminalIds(&newPtNodeWriter, &terminalIdMap);
+    if (!newDictReadingHelper.traverseAllPtNodesInPostorderDepthFirstManner(
+            &traversePolicyToUpdateAllPtNodeFlagsAndTerminalIds)) {
+        return false;
+    }
+    *outUnigramCount = traversePolicyToUpdateAllPositionFields.getUnigramCount();
+    return true;
+}
+
+bool Ver4PatriciaTrieWritingHelper::truncateUnigrams(
+        const Ver4PatriciaTrieNodeReader *const ptNodeReader,
+        Ver4PatriciaTrieNodeWriter *const ptNodeWriter, const int maxUnigramCount) {
+    const TerminalPositionLookupTable *const terminalPosLookupTable =
+            mBuffers->getTerminalPositionLookupTable();
+    const int nextTerminalId = terminalPosLookupTable->getNextTerminalId();
+    std::priority_queue<DictProbability, std::vector<DictProbability>, DictProbabilityComparator>
+            priorityQueue;
+    for (int i = 0; i < nextTerminalId; ++i) {
+        const int terminalPos = terminalPosLookupTable->getTerminalPtNodePosition(i);
+        if (terminalPos == NOT_A_DICT_POS) {
+            continue;
+        }
+        const ProbabilityEntry probabilityEntry =
+                mBuffers->getProbabilityDictContent()->getProbabilityEntry(i);
+        const int probability = probabilityEntry.hasHistoricalInfo() ?
+                ForgettingCurveUtils::decodeProbability(
+                        probabilityEntry.getHistoricalInfo(), mBuffers->getHeaderPolicy()) :
+                probabilityEntry.getProbability();
+        priorityQueue.push(DictProbability(terminalPos, probability,
+                probabilityEntry.getHistoricalInfo()->getTimeStamp()));
+    }
+
+    // Delete unigrams.
+    while (static_cast<int>(priorityQueue.size()) > maxUnigramCount) {
+        const int ptNodePos = priorityQueue.top().getDictPos();
+        priorityQueue.pop();
+        const PtNodeParams ptNodeParams =
+                ptNodeReader->fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos);
+        if (ptNodeParams.representsNonWordInfo()) {
+            continue;
+        }
+        if (!ptNodeWriter->markPtNodeAsWillBecomeNonTerminal(&ptNodeParams)) {
+            AKLOGE("Cannot mark PtNode as willBecomeNonterminal. PtNode pos: %d", ptNodePos);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieWritingHelper::truncateBigrams(const int maxBigramCount) {
+    const TerminalPositionLookupTable *const terminalPosLookupTable =
+            mBuffers->getTerminalPositionLookupTable();
+    const int nextTerminalId = terminalPosLookupTable->getNextTerminalId();
+    std::priority_queue<DictProbability, std::vector<DictProbability>, DictProbabilityComparator>
+            priorityQueue;
+    BigramDictContent *const bigramDictContent = mBuffers->getMutableBigramDictContent();
+    for (int i = 0; i < nextTerminalId; ++i) {
+        const int bigramListPos = bigramDictContent->getBigramListHeadPos(i);
+        if (bigramListPos == NOT_A_DICT_POS) {
+            continue;
+        }
+        bool hasNext = true;
+        int readingPos = bigramListPos;
+        while (hasNext) {
+            const BigramEntry bigramEntry =
+                    bigramDictContent->getBigramEntryAndAdvancePosition(&readingPos);
+            const int entryPos = readingPos - bigramDictContent->getBigramEntrySize();
+            hasNext = bigramEntry.hasNext();
+            if (!bigramEntry.isValid()) {
+                continue;
+            }
+            const int probability = bigramEntry.hasHistoricalInfo() ?
+                    ForgettingCurveUtils::decodeProbability(
+                            bigramEntry.getHistoricalInfo(), mBuffers->getHeaderPolicy()) :
+                    bigramEntry.getProbability();
+            priorityQueue.push(DictProbability(entryPos, probability,
+                    bigramEntry.getHistoricalInfo()->getTimeStamp()));
+        }
+    }
+
+    // Delete bigrams.
+    while (static_cast<int>(priorityQueue.size()) > maxBigramCount) {
+        const int entryPos = priorityQueue.top().getDictPos();
+        const BigramEntry bigramEntry = bigramDictContent->getBigramEntry(entryPos);
+        const BigramEntry invalidatedBigramEntry = bigramEntry.getInvalidatedEntry();
+        if (!bigramDictContent->writeBigramEntry(&invalidatedBigramEntry, entryPos)) {
+            AKLOGE("Cannot write bigram entry to remove. pos: %d", entryPos);
+            return false;
+        }
+        priorityQueue.pop();
+    }
+    return true;
+}
+
+bool Ver4PatriciaTrieWritingHelper::TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds
+        ::onVisitingPtNode(const PtNodeParams *const ptNodeParams) {
+    if (!ptNodeParams->isTerminal()) {
+        return true;
+    }
+    TerminalPositionLookupTable::TerminalIdMap::const_iterator it =
+            mTerminalIdMap->find(ptNodeParams->getTerminalId());
+    if (it == mTerminalIdMap->end()) {
+        AKLOGE("terminal Id %d is not in the terminal position map. map size: %zd",
+                ptNodeParams->getTerminalId(), mTerminalIdMap->size());
+        return false;
+    }
+    if (!mPtNodeWriter->updateTerminalId(ptNodeParams, it->second)) {
+        AKLOGE("Cannot update terminal id. %d -> %d", it->first, it->second);
+        return false;
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.h
new file mode 100644
index 0000000..bb464ad
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.h
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_PATRICIA_TRIE_WRITING_HELPER_H
+#define LATINIME_VER4_PATRICIA_TRIE_WRITING_HELPER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_gc_event_listeners.h"
+#include "suggest/policyimpl/dictionary/structure/v4/content/terminal_position_lookup_table.h"
+
+namespace latinime {
+
+class HeaderPolicy;
+class Ver4DictBuffers;
+class Ver4PatriciaTrieNodeReader;
+class Ver4PatriciaTrieNodeWriter;
+
+class Ver4PatriciaTrieWritingHelper {
+ public:
+    Ver4PatriciaTrieWritingHelper(Ver4DictBuffers *const buffers)
+            : mBuffers(buffers) {}
+
+    bool writeToDictFile(const char *const dictDirPath, const int unigramCount,
+            const int bigramCount) const;
+
+    // This method cannot be const because the original dictionary buffer will be updated to detect
+    // useless PtNodes during GC.
+    bool writeToDictFileWithGC(const int rootPtNodeArrayPos, const char *const dictDirPath);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTrieWritingHelper);
+
+    class TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds
+            : public DynamicPtReadingHelper::TraversingEventListener {
+     public:
+        TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds(
+                Ver4PatriciaTrieNodeWriter *const ptNodeWriter,
+                const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap)
+                : mPtNodeWriter(ptNodeWriter), mTerminalIdMap(terminalIdMap) {}
+
+        bool onAscend() { return true; }
+
+        bool onDescend(const int ptNodeArrayPos) { return true; }
+
+        bool onReadingPtNodeArrayTail() { return true; }
+
+        bool onVisitingPtNode(const PtNodeParams *const ptNodeParams);
+
+     private:
+        DISALLOW_IMPLICIT_CONSTRUCTORS(TraversePolicyToUpdateAllPtNodeFlagsAndTerminalIds);
+
+        Ver4PatriciaTrieNodeWriter *const mPtNodeWriter;
+        const TerminalPositionLookupTable::TerminalIdMap *const mTerminalIdMap;
+    };
+
+    // For truncateUnigrams() and truncateBigrams().
+    class DictProbability {
+     public:
+        DictProbability(const int dictPos, const int probability, const int timestamp)
+                : mDictPos(dictPos), mProbability(probability), mTimestamp(timestamp) {}
+
+        int getDictPos() const {
+            return mDictPos;
+        }
+
+        int getProbability() const {
+            return mProbability;
+        }
+
+        int getTimestamp() const {
+            return mTimestamp;
+        }
+
+     private:
+        DISALLOW_DEFAULT_CONSTRUCTOR(DictProbability);
+
+        int mDictPos;
+        int mProbability;
+        int mTimestamp;
+    };
+
+    // For truncateUnigrams() and truncateBigrams().
+    class DictProbabilityComparator {
+     public:
+        bool operator()(const DictProbability &left, const DictProbability &right) {
+            if (left.getProbability() != right.getProbability()) {
+                return left.getProbability() > right.getProbability();
+            }
+            if (left.getTimestamp() != right.getTimestamp()) {
+                return left.getTimestamp() < right.getTimestamp();
+            }
+            return left.getDictPos() > right.getDictPos();
+        }
+
+     private:
+        DISALLOW_ASSIGNMENT_OPERATOR(DictProbabilityComparator);
+    };
+
+    bool runGC(const int rootPtNodeArrayPos, const HeaderPolicy *const headerPolicy,
+            Ver4DictBuffers *const buffersToWrite, int *const outUnigramCount,
+            int *const outBigramCount);
+
+    bool truncateUnigrams(const Ver4PatriciaTrieNodeReader *const ptNodeReader,
+            Ver4PatriciaTrieNodeWriter *const ptNodeWriter, const int maxUnigramCount);
+
+    bool truncateBigrams(const int maxBigramCount);
+
+    Ver4DictBuffers *const mBuffers;
+};
+} // namespace latinime
+
+#endif /* LATINIME_VER4_PATRICIA_TRIE_WRITING_HELPER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.cpp
new file mode 100644
index 0000000..b014c52
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.cpp
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h"
+
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_reading_utils.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/patricia_trie_reading_utils.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+bool Ver4PtNodeArrayReader::readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+        int *const outPtNodeCount, int *const outFirstPtNodePos) const {
+    if (ptNodeArrayPos < 0 || ptNodeArrayPos >= mBuffer->getTailPosition()) {
+        // Reading invalid position because of a bug or a broken dictionary.
+        AKLOGE("Reading PtNode array info from invalid dictionary position: %d, dict size: %d",
+                ptNodeArrayPos, mBuffer->getTailPosition());
+        ASSERT(false);
+        return false;
+    }
+    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(ptNodeArrayPos);
+    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
+    int readingPos = ptNodeArrayPos;
+    if (usesAdditionalBuffer) {
+        readingPos -= mBuffer->getOriginalBufferSize();
+    }
+    const int ptNodeCountInArray = PatriciaTrieReadingUtils::getPtNodeArraySizeAndAdvancePosition(
+            dictBuf, &readingPos);
+    if (usesAdditionalBuffer) {
+        readingPos += mBuffer->getOriginalBufferSize();
+    }
+    if (ptNodeCountInArray < 0) {
+        AKLOGE("Invalid PtNode count in an array: %d.", ptNodeCountInArray);
+        return false;
+    }
+    *outPtNodeCount = ptNodeCountInArray;
+    *outFirstPtNodePos = readingPos;
+    return true;
+}
+
+bool Ver4PtNodeArrayReader::readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+        int *const outNextPtNodeArrayPos) const {
+    if (forwordLinkPos < 0 || forwordLinkPos >= mBuffer->getTailPosition()) {
+        // Reading invalid position because of bug or broken dictionary.
+        AKLOGE("Reading forward link from invalid dictionary position: %d, dict size: %d",
+                forwordLinkPos, mBuffer->getTailPosition());
+        ASSERT(false);
+        return false;
+    }
+    const bool usesAdditionalBuffer = mBuffer->isInAdditionalBuffer(forwordLinkPos);
+    const uint8_t *const dictBuf = mBuffer->getBuffer(usesAdditionalBuffer);
+    int readingPos = forwordLinkPos;
+    if (usesAdditionalBuffer) {
+        readingPos -= mBuffer->getOriginalBufferSize();
+    }
+    const int nextPtNodeArrayOffset =
+            DynamicPtReadingUtils::getForwardLinkPosition(dictBuf, readingPos);
+    if (DynamicPtReadingUtils::isValidForwardLinkPosition(nextPtNodeArrayOffset)) {
+        *outNextPtNodeArrayPos = forwordLinkPos + nextPtNodeArrayOffset;
+    } else {
+        *outNextPtNodeArrayPos = NOT_A_DICT_POS;
+    }
+    return true;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h
new file mode 100644
index 0000000..d81808e
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_pt_node_array_reader.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_VER4_PT_NODE_ARRAY_READER_H
+#define LATINIME_VER4_PT_NODE_ARRAY_READER_H
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_array_reader.h"
+
+namespace latinime {
+
+class BufferWithExtendableBuffer;
+
+class Ver4PtNodeArrayReader : public PtNodeArrayReader {
+ public:
+    Ver4PtNodeArrayReader(const BufferWithExtendableBuffer *const buffer) : mBuffer(buffer) {};
+
+    virtual bool readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
+            int *const outPtNodeCount, int *const outFirstPtNodePos) const;
+    virtual bool readForwardLinkAndReturnIfValid(const int forwordLinkPos,
+            int *const outNextPtNodeArrayPos) const;
+
+ private:
+    DISALLOW_COPY_AND_ASSIGN(Ver4PtNodeArrayReader);
+
+    const BufferWithExtendableBuffer *const mBuffer;
+};
+} // namespace latinime
+#endif /* LATINIME_VER4_PT_NODE_ARRAY_READER_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp
index f692882..259dae4 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.cpp
@@ -18,11 +18,42 @@
 
 namespace latinime {
 
-const size_t BufferWithExtendableBuffer::MAX_ADDITIONAL_BUFFER_SIZE = 1024 * 1024;
+const size_t BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE = 1024 * 1024;
 const int BufferWithExtendableBuffer::NEAR_BUFFER_LIMIT_THRESHOLD_PERCENTILE = 90;
 // TODO: Needs to allocate larger memory corresponding to the current vector size.
 const size_t BufferWithExtendableBuffer::EXTEND_ADDITIONAL_BUFFER_SIZE_STEP = 128 * 1024;
 
+uint32_t BufferWithExtendableBuffer::readUint(const int size, const int pos) const {
+    const bool readingPosIsInAdditionalBuffer = isInAdditionalBuffer(pos);
+    const int posInBuffer = readingPosIsInAdditionalBuffer ? pos - mOriginalBufferSize : pos;
+    return ByteArrayUtils::readUint(getBuffer(readingPosIsInAdditionalBuffer), size, posInBuffer);
+}
+
+uint32_t BufferWithExtendableBuffer::readUintAndAdvancePosition(const int size,
+        int *const pos) const {
+    const int value = readUint(size, *pos);
+    *pos += size;
+    return value;
+}
+
+void BufferWithExtendableBuffer::readCodePointsAndAdvancePosition(const int maxCodePointCount,
+        int *const outCodePoints, int *outCodePointCount, int *const pos) const {
+    const bool readingPosIsInAdditionalBuffer = isInAdditionalBuffer(*pos);
+    if (readingPosIsInAdditionalBuffer) {
+        *pos -= mOriginalBufferSize;
+    }
+    *outCodePointCount = ByteArrayUtils::readStringAndAdvancePosition(
+            getBuffer(readingPosIsInAdditionalBuffer), maxCodePointCount, outCodePoints, pos);
+    if (readingPosIsInAdditionalBuffer) {
+        *pos += mOriginalBufferSize;
+    }
+}
+
+bool BufferWithExtendableBuffer::writeUint(const uint32_t data, const int size, const int pos) {
+    int writingPos = pos;
+    return writeUintAndAdvancePosition(data, size, &writingPos);
+}
+
 bool BufferWithExtendableBuffer::writeUintAndAdvancePosition(const uint32_t data, const int size,
         int *const pos) {
     if (!(size >= 1 && size <= 4)) {
@@ -46,7 +77,7 @@
 }
 
 bool BufferWithExtendableBuffer::writeCodePointsAndAdvancePosition(const int *const codePoints,
-        const int codePointCount, const bool writesTerminator ,int *const pos) {
+        const int codePointCount, const bool writesTerminator, int *const pos) {
     const size_t size = ByteArrayUtils::calculateRequiredByteCountToStoreCodePoints(
             codePoints, codePointCount, writesTerminator);
     if (!checkAndPrepareWriting(*pos, size)) {
@@ -100,4 +131,21 @@
     return true;
 }
 
+bool BufferWithExtendableBuffer::copy(const BufferWithExtendableBuffer *const sourceBuffer) {
+    int copyingPos = 0;
+    const int tailPos = sourceBuffer->getTailPosition();
+    const int maxDataChunkSize = sizeof(uint32_t);
+    while (copyingPos < tailPos) {
+        const int remainingSize = tailPos - copyingPos;
+        const int copyingSize = (remainingSize >= maxDataChunkSize) ?
+                maxDataChunkSize : remainingSize;
+        const uint32_t data = sourceBuffer->readUint(copyingSize, copyingPos);
+        if (!writeUint(data, copyingSize, copyingPos)) {
+            return false;
+        }
+        copyingPos += copyingSize;
+    }
+    return true;
+}
+
 }
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h
index 9dc3482..a2e88a4 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h
@@ -18,7 +18,7 @@
 #define LATINIME_BUFFER_WITH_EXTENDABLE_BUFFER_H
 
 #include <cstddef>
-#include <stdint.h>
+#include <cstdint>
 #include <vector>
 
 #include "defines.h"
@@ -32,10 +32,18 @@
 // raw pointer but provides several methods that handle boundary checking for writing data.
 class BufferWithExtendableBuffer {
  public:
+    static const size_t DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE;
+
     BufferWithExtendableBuffer(uint8_t *const originalBuffer, const int originalBufferSize,
-            const int maxAdditionalBufferSize = MAX_ADDITIONAL_BUFFER_SIZE)
+            const int maxAdditionalBufferSize)
             : mOriginalBuffer(originalBuffer), mOriginalBufferSize(originalBufferSize),
-              mAdditionalBuffer(EXTEND_ADDITIONAL_BUFFER_SIZE_STEP), mUsedAdditionalBufferSize(0),
+              mAdditionalBuffer(0), mUsedAdditionalBufferSize(0),
+              mMaxAdditionalBufferSize(maxAdditionalBufferSize) {}
+
+    // Without original buffer.
+    BufferWithExtendableBuffer(const int maxAdditionalBufferSize)
+            : mOriginalBuffer(0), mOriginalBufferSize(0),
+              mAdditionalBuffer(0), mUsedAdditionalBufferSize(0),
               mMaxAdditionalBufferSize(maxAdditionalBufferSize) {}
 
     AK_FORCE_INLINE int getTailPosition() const {
@@ -63,6 +71,13 @@
         }
     }
 
+    uint32_t readUint(const int size, const int pos) const;
+
+    uint32_t readUintAndAdvancePosition(const int size, int *const pos) const;
+
+    void readCodePointsAndAdvancePosition(const int maxCodePointCount,
+            int *const outCodePoints, int *outCodePointCount, int *const pos) const;
+
     AK_FORCE_INLINE int getOriginalBufferSize() const {
         return mOriginalBufferSize;
     }
@@ -78,15 +93,18 @@
      * Writing is allowed for original buffer, already written region of additional buffer and the
      * tail of additional buffer.
      */
+    bool writeUint(const uint32_t data, const int size, const int pos);
+
     bool writeUintAndAdvancePosition(const uint32_t data, const int size, int *const pos);
 
     bool writeCodePointsAndAdvancePosition(const int *const codePoints, const int codePointCount,
             const bool writesTerminator, int *const pos);
 
+    bool copy(const BufferWithExtendableBuffer *const sourceBuffer);
+
  private:
     DISALLOW_COPY_AND_ASSIGN(BufferWithExtendableBuffer);
 
-    static const size_t MAX_ADDITIONAL_BUFFER_SIZE;
     static const int NEAR_BUFFER_LIMIT_THRESHOLD_PERCENTILE;
     static const size_t EXTEND_ADDITIONAL_BUFFER_SIZE_STEP;
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/byte_array_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/byte_array_utils.h
index 0c15768..c0a9fcb 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/byte_array_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/byte_array_utils.h
@@ -17,7 +17,7 @@
 #ifndef LATINIME_BYTE_ARRAY_UTILS_H
 #define LATINIME_BYTE_ARRAY_UTILS_H
 
-#include <stdint.h>
+#include <cstdint>
 
 #include "defines.h"
 
@@ -114,6 +114,24 @@
         return buffer[(*pos)++];
     }
 
+    static AK_FORCE_INLINE int readUint(const uint8_t *const buffer,
+            const int size, const int pos) {
+        // size must be in 1 to 4.
+        ASSERT(size >= 1 && size <= 4);
+        switch (size) {
+            case 1:
+                return ByteArrayUtils::readUint8(buffer, pos);
+            case 2:
+                return ByteArrayUtils::readUint16(buffer, pos);
+            case 3:
+                return ByteArrayUtils::readUint24(buffer, pos);
+            case 4:
+                return ByteArrayUtils::readUint32(buffer, pos);
+            default:
+                return 0;
+        }
+    }
+
     /**
      * Code Point Reading
      *
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
index 994826f..b7e2a72 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp
@@ -17,90 +17,125 @@
 #include "suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h"
 
 #include <cstdio>
-#include <cstring>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
 
 #include "suggest/policyimpl/dictionary/header/header_policy.h"
-#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
+#include "suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_writing_utils.h"
+#include "suggest/policyimpl/dictionary/structure/v4/ver4_dict_buffers.h"
 #include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
 #include "suggest/policyimpl/dictionary/utils/format_utils.h"
+#include "utils/time_keeper.h"
 
 namespace latinime {
 
 const char *const DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE = ".tmp";
+// Enough size to describe buffer size.
+const int DictFileWritingUtils::SIZE_OF_BUFFER_SIZE_FIELD = 4;
 
 /* static */ bool DictFileWritingUtils::createEmptyDictFile(const char *const filePath,
-        const int dictVersion, const HeaderReadWriteUtils::AttributeMap *const attributeMap) {
-    switch (dictVersion) {
-        case 3:
-            return createEmptyV3DictFile(filePath, attributeMap);
+        const int dictVersion, const std::vector<int> localeAsCodePointVector,
+        const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap) {
+    TimeKeeper::setCurrentTime();
+    const FormatUtils::FORMAT_VERSION formatVersion = FormatUtils::getFormatVersion(dictVersion);
+    switch (formatVersion) {
+        case FormatUtils::VERSION_4:
+            return createEmptyV4DictFile<backward::v402::Ver4DictConstants,
+                    backward::v402::Ver4DictBuffers,
+                    backward::v402::Ver4DictBuffers::Ver4DictBuffersPtr>(
+                            filePath, localeAsCodePointVector, attributeMap, formatVersion);
+        case FormatUtils::VERSION_4_ONLY_FOR_TESTING:
+        case FormatUtils::VERSION_4_DEV:
+            return createEmptyV4DictFile<Ver4DictConstants, Ver4DictBuffers,
+                    Ver4DictBuffers::Ver4DictBuffersPtr>(
+                            filePath, localeAsCodePointVector, attributeMap, formatVersion);
         default:
-            // Only version 3 dictionary is supported for now.
+            AKLOGE("Cannot create dictionary %s because format version %d is not supported.",
+                    filePath, dictVersion);
             return false;
     }
 }
 
-/* static */ bool DictFileWritingUtils::createEmptyV3DictFile(const char *const filePath,
-        const HeaderReadWriteUtils::AttributeMap *const attributeMap) {
-    BufferWithExtendableBuffer headerBuffer(0 /* originalBuffer */, 0 /* originalBufferSize */);
-    HeaderPolicy headerPolicy(FormatUtils::VERSION_3, attributeMap);
-    headerPolicy.writeHeaderToBuffer(&headerBuffer, true /* updatesLastUpdatedTime */,
-            true /* updatesLastDecayedTime */, 0 /* unigramCount */, 0 /* bigramCount */,
-            0 /* extendedRegionSize */);
-    BufferWithExtendableBuffer bodyBuffer(0 /* originalBuffer */, 0 /* originalBufferSize */);
-    if (!DynamicPatriciaTrieWritingUtils::writeEmptyDictionary(&bodyBuffer, 0 /* rootPos */)) {
+template<class DictConstants, class DictBuffers, class DictBuffersPtr>
+/* static */ bool DictFileWritingUtils::createEmptyV4DictFile(const char *const dirPath,
+        const std::vector<int> localeAsCodePointVector,
+        const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap,
+        const FormatUtils::FORMAT_VERSION formatVersion) {
+    HeaderPolicy headerPolicy(formatVersion, localeAsCodePointVector, attributeMap);
+    DictBuffersPtr dictBuffers = DictBuffers::createVer4DictBuffers(&headerPolicy,
+            DictConstants::MAX_DICT_EXTENDED_REGION_SIZE);
+    headerPolicy.fillInAndWriteHeaderToBuffer(true /* updatesLastDecayedTime */,
+            0 /* unigramCount */, 0 /* bigramCount */,
+            0 /* extendedRegionSize */, dictBuffers->getWritableHeaderBuffer());
+    if (!DynamicPtWritingUtils::writeEmptyDictionary(
+            dictBuffers->getWritableTrieBuffer(), 0 /* rootPos */)) {
+        AKLOGE("Empty ver4 dictionary structure cannot be created on memory.");
         return false;
     }
-    return flushAllHeaderAndBodyToFile(filePath, &headerBuffer, &bodyBuffer);
+    return dictBuffers->flush(dirPath);
 }
 
-/* static */ bool DictFileWritingUtils::flushAllHeaderAndBodyToFile(const char *const filePath,
-        BufferWithExtendableBuffer *const dictHeader, BufferWithExtendableBuffer *const dictBody) {
-    const int tmpFileNameBufSize = strlen(filePath)
-            + strlen(TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE) + 1 /* terminator */;
-    // Name of a temporary file used for writing that is a connected string of original name and
-    // TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE.
-    char tmpFileName[tmpFileNameBufSize];
-    snprintf(tmpFileName, tmpFileNameBufSize, "%s%s", filePath,
-            TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE);
-    FILE *const file = fopen(tmpFileName, "wb");
+/* static */ bool DictFileWritingUtils::flushBufferToFileWithSuffix(const char *const basePath,
+        const char *const suffix, const BufferWithExtendableBuffer *const buffer) {
+    const int filePathBufSize = FileUtils::getFilePathWithSuffixBufSize(basePath, suffix);
+    char filePath[filePathBufSize];
+    FileUtils::getFilePathWithSuffix(basePath, suffix, filePathBufSize, filePath);
+    return flushBufferToFile(filePath, buffer);
+}
+
+/* static */ bool DictFileWritingUtils::writeBufferToFileTail(FILE *const file,
+        const BufferWithExtendableBuffer *const buffer) {
+    uint8_t bufferSize[SIZE_OF_BUFFER_SIZE_FIELD];
+    int writingPos = 0;
+    ByteArrayUtils::writeUintAndAdvancePosition(bufferSize, buffer->getTailPosition(),
+            SIZE_OF_BUFFER_SIZE_FIELD, &writingPos);
+    if (fwrite(bufferSize, SIZE_OF_BUFFER_SIZE_FIELD, 1 /* count */, file) < 1) {
+        return false;
+    }
+    return writeBufferToFile(file, buffer);
+}
+
+/* static */ bool DictFileWritingUtils::flushBufferToFile(const char *const filePath,
+        const BufferWithExtendableBuffer *const buffer) {
+    const int fd = open(filePath, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+    if (fd == -1) {
+        AKLOGE("File %s cannot be opened. errno: %d", filePath, errno);
+        ASSERT(false);
+        return false;
+    }
+    FILE *const file = fdopen(fd, "wb");
     if (!file) {
-        AKLOGE("Dictionary file %s cannnot be opened.", tmpFileName);
+        AKLOGE("fdopen failed for the file %s. errno: %d", filePath, errno);
         ASSERT(false);
         return false;
     }
-    // Write the dictionary header.
-    if (!writeBufferToFile(file, dictHeader)) {
-        remove(tmpFileName);
-        AKLOGE("Dictionary header cannnot be written. size: %d", dictHeader->getTailPosition());
-        ASSERT(false);
-        return false;
-    }
-    // Write the dictionary body.
-    if (!writeBufferToFile(file, dictBody)) {
-        remove(tmpFileName);
-        AKLOGE("Dictionary body cannnot be written. size: %d", dictBody->getTailPosition());
+    if (!writeBufferToFile(file, buffer)) {
+        fclose(file);
+        remove(filePath);
+        AKLOGE("Buffer cannot be written to the file %s. size: %d", filePath,
+                buffer->getTailPosition());
         ASSERT(false);
         return false;
     }
     fclose(file);
-    rename(tmpFileName, filePath);
     return true;
 }
 
-// This closes file pointer when an error is caused and returns whether the writing was succeeded
-// or not.
+// Returns whether the writing was succeeded or not.
 /* static */ bool DictFileWritingUtils::writeBufferToFile(FILE *const file,
         const BufferWithExtendableBuffer *const buffer) {
     const int originalBufSize = buffer->getOriginalBufferSize();
     if (originalBufSize > 0 && fwrite(buffer->getBuffer(false /* usesAdditionalBuffer */),
             originalBufSize, 1, file) < 1) {
-        fclose(file);
         return false;
     }
     const int additionalBufSize = buffer->getUsedAdditionalBufferSize();
     if (additionalBufSize > 0 && fwrite(buffer->getBuffer(true /* usesAdditionalBuffer */),
             additionalBufSize, 1, file) < 1) {
-        fclose(file);
         return false;
     }
     return true;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
index bd4ac66..4843b3b 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.h
@@ -21,6 +21,7 @@
 
 #include "defines.h"
 #include "suggest/policyimpl/dictionary/header/header_read_write_utils.h"
+#include "suggest/policyimpl/dictionary/utils/format_utils.h"
 
 namespace latinime {
 
@@ -28,20 +29,36 @@
 
 class DictFileWritingUtils {
  public:
-    static bool createEmptyDictFile(const char *const filePath, const int dictVersion,
-            const HeaderReadWriteUtils::AttributeMap *const attributeMap);
+    static const char *const TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE;
 
-    static bool flushAllHeaderAndBodyToFile(const char *const filePath,
-            BufferWithExtendableBuffer *const dictHeader,
-            BufferWithExtendableBuffer *const dictBody);
+    static bool createEmptyDictFile(const char *const filePath, const int dictVersion,
+            const std::vector<int> localeAsCodePointVector,
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap);
+
+    static bool flushBufferToFileWithSuffix(const char *const basePath, const char *const suffix,
+            const BufferWithExtendableBuffer *const buffer);
+
+    static bool writeBufferToFileTail(FILE *const file,
+            const BufferWithExtendableBuffer *const buffer);
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(DictFileWritingUtils);
 
-    static const char *const TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE;
+    static const int SIZE_OF_BUFFER_SIZE_FIELD;
 
-    static bool createEmptyV3DictFile(const char *const filePath,
-            const HeaderReadWriteUtils::AttributeMap *const attributeMap);
+    static bool createEmptyV401DictFile(const char *const filePath,
+            const std::vector<int> localeAsCodePointVector,
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap,
+            const FormatUtils::FORMAT_VERSION formatVersion);
+
+    template<class DictConstants, class DictBuffers, class DictBuffersPtr>
+    static bool createEmptyV4DictFile(const char *const filePath,
+            const std::vector<int> localeAsCodePointVector,
+            const DictionaryHeaderStructurePolicy::AttributeMap *const attributeMap,
+            const FormatUtils::FORMAT_VERSION formatVersion);
+
+    static bool flushBufferToFile(const char *const filePath,
+            const BufferWithExtendableBuffer *const buffer);
 
     static bool writeBufferToFile(FILE *const file,
             const BufferWithExtendableBuffer *const buffer);
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp
new file mode 100644
index 0000000..fb80f38
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.cpp
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+
+#include <cstdio>
+#include <cstring>
+#include <dirent.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+namespace latinime {
+
+// Returns -1 on error.
+/* static */ int FileUtils::getFileSize(const char *const filePath) {
+    const int fd = open(filePath, O_RDONLY);
+    if (fd == -1) {
+        return -1;
+    }
+    struct stat statBuf;
+    if (fstat(fd, &statBuf) != 0) {
+        close(fd);
+        return -1;
+    }
+    close(fd);
+    return static_cast<int>(statBuf.st_size);
+}
+
+/* static */ bool FileUtils::existsDir(const char *const dirPath) {
+    DIR *const dir = opendir(dirPath);
+    if (dir == NULL) {
+        return false;
+    }
+    closedir(dir);
+    return true;
+}
+
+// Remove a directory and all files in the directory.
+/* static */ bool FileUtils::removeDirAndFiles(const char *const dirPath) {
+    return removeDirAndFiles(dirPath, 5 /* maxTries */);
+}
+
+// Remove a directory and all files in the directory, trying up to maxTimes.
+/* static */ bool FileUtils::removeDirAndFiles(const char *const dirPath, const int maxTries) {
+    DIR *const dir = opendir(dirPath);
+    if (dir == NULL) {
+        AKLOGE("Cannot open dir %s.", dirPath);
+        return true;
+    }
+    struct dirent *dirent;
+    while ((dirent = readdir(dir)) != NULL) {
+        if (dirent->d_type == DT_DIR) {
+            continue;
+        }
+        if (strcmp(dirent->d_name, ".") == 0 || strcmp(dirent->d_name, "..") == 0) {
+            continue;
+        }
+        const int filePathBufSize = getFilePathBufSize(dirPath, dirent->d_name);
+        char filePath[filePathBufSize];
+        getFilePath(dirPath, dirent->d_name, filePathBufSize, filePath);
+        if (remove(filePath) != 0) {
+            AKLOGE("Cannot remove file %s.", filePath);
+            closedir(dir);
+            return false;
+        }
+    }
+    closedir(dir);
+    if (remove(dirPath) != 0) {
+        if (maxTries > 0) {
+            // On NFS, deleting files sometimes creates new files. I'm not sure what the
+            // correct way of dealing with this is, but for the time being, this seems to work.
+            removeDirAndFiles(dirPath, maxTries - 1);
+        } else {
+            AKLOGE("Cannot remove directory %s.", dirPath);
+            return false;
+        }
+    }
+    return true;
+}
+
+/* static */ int FileUtils::getFilePathWithSuffixBufSize(const char *const filePath,
+        const char *const suffix) {
+    return strlen(filePath) + strlen(suffix) + 1 /* terminator */;
+}
+
+/* static */ void FileUtils::getFilePathWithSuffix(const char *const filePath,
+        const char *const suffix, const int filePathBufSize, char *const outFilePath) {
+    snprintf(outFilePath, filePathBufSize, "%s%s", filePath, suffix);
+}
+
+/* static */ int FileUtils::getFilePathBufSize(const char *const dirPath,
+        const char *const fileName) {
+    return strlen(dirPath) + 1 /* '/' */ + strlen(fileName) + 1 /* terminator */;
+}
+
+/* static */ void FileUtils::getFilePath(const char *const dirPath, const char *const fileName,
+        const int filePathBufSize, char *const outFilePath) {
+    snprintf(outFilePath, filePathBufSize, "%s/%s", dirPath, fileName);
+}
+
+/* static */ bool FileUtils::getFilePathWithoutSuffix(const char *const filePath,
+        const char *const suffix, const int outDirPathBufSize, char *const outDirPath) {
+    const int filePathLength = strlen(filePath);
+    const int suffixLength = strlen(suffix);
+    if (filePathLength <= suffixLength) {
+        AKLOGE("File path length (%s:%d) is shorter that suffix length (%s:%d).",
+                filePath, filePathLength, suffix, suffixLength);
+        return false;
+    }
+    const int resultFilePathLength = filePathLength - suffixLength;
+    if (outDirPathBufSize <= resultFilePathLength) {
+        AKLOGE("outDirPathBufSize is too small. filePath: %s, suffix: %s, outDirPathBufSize: %d",
+                filePath, suffix, outDirPathBufSize);
+        return false;
+    }
+    if (strncmp(filePath + resultFilePathLength, suffix, suffixLength) != 0) {
+        AKLOGE("File Path %s does not have %s as a suffix", filePath, suffix);
+        return false;
+    }
+    snprintf(outDirPath, resultFilePathLength + 1 /* terminator */, "%s", filePath);
+    return true;
+}
+
+/* static */ void FileUtils::getDirPath(const char *const filePath, const int outDirPathBufSize,
+        char *const outDirPath) {
+    for (int i = strlen(filePath) - 1; i >= 0; --i) {
+        if (filePath[i] == '/') {
+            if (i >= outDirPathBufSize) {
+                AKLOGE("outDirPathBufSize is too small. filePath: %s, outDirPathBufSize: %d",
+                        filePath, outDirPathBufSize);
+                ASSERT(false);
+                return;
+            }
+            snprintf(outDirPath, i + 1 /* terminator */, "%s", filePath);
+            return;
+        }
+    }
+}
+
+/* static */ void FileUtils::getBasename(const char *const filePath,
+        const int outNameBufSize, char *const outName) {
+    const int filePathBufSize = strlen(filePath) + 1 /* terminator */;
+    char filePathBuf[filePathBufSize];
+    snprintf(filePathBuf, filePathBufSize, "%s", filePath);
+    const char *const baseName = basename(filePathBuf);
+    const int baseNameLength = strlen(baseName);
+    if (baseNameLength >= outNameBufSize) {
+        AKLOGE("outNameBufSize is too small. filePath: %s, outNameBufSize: %d",
+                filePath, outNameBufSize);
+        return;
+    }
+    snprintf(outName, baseNameLength + 1 /* terminator */, "%s", baseName);
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.h
new file mode 100644
index 0000000..4f1b93a
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/file_utils.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_FILE_UTILS_H
+#define LATINIME_FILE_UTILS_H
+
+#include "defines.h"
+
+namespace latinime {
+
+class FileUtils {
+ public:
+    // Returns -1 on error.
+    static int getFileSize(const char *const filePath);
+
+    static bool existsDir(const char *const dirPath);
+
+    // Remove a directory and all files in the directory.
+    static bool removeDirAndFiles(const char *const dirPath);
+
+    static int getFilePathWithSuffixBufSize(const char *const filePath, const char *const suffix);
+
+    static void getFilePathWithSuffix(const char *const filePath, const char *const suffix,
+            const int filePathBufSize, char *const outFilePath);
+
+    static int getFilePathBufSize(const char *const dirPath, const char *const fileName);
+
+    static void getFilePath(const char *const dirPath, const char *const fileName,
+            const int filePathBufSize, char *const outFilePath);
+
+    // Returns whether the filePath have the suffix.
+    static bool getFilePathWithoutSuffix(const char *const filePath, const char *const suffix,
+            const int dirPathBufSize, char *const outDirPath);
+
+    static void getDirPath(const char *const filePath, const int dirPathBufSize,
+            char *const outDirPath);
+
+    static void getBasename(const char *const filePath, const int outNameBufSize,
+            char *const outName);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(FileUtils);
+
+    static bool removeDirAndFiles(const char *const dirPath, const int maxTries);
+};
+} // namespace latinime
+#endif /* LATINIME_FILE_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp
index 1632fd0..fed0ae7 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.cpp
@@ -14,141 +14,225 @@
  * limitations under the License.
  */
 
-#include <cmath>
-#include <ctime>
-#include <stdlib.h>
-
 #include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"
 
-#include "suggest/core/policy/dictionary_header_structure_policy.h"
+#include <algorithm>
+#include <cmath>
+#include <stdlib.h>
+
+#include "suggest/policyimpl/dictionary/header/header_policy.h"
 #include "suggest/policyimpl/dictionary/utils/probability_utils.h"
+#include "utils/time_keeper.h"
 
 namespace latinime {
 
-const int ForgettingCurveUtils::MAX_UNIGRAM_COUNT = 12000;
-const int ForgettingCurveUtils::MAX_UNIGRAM_COUNT_AFTER_GC = 10000;
-const int ForgettingCurveUtils::MAX_BIGRAM_COUNT = 12000;
-const int ForgettingCurveUtils::MAX_BIGRAM_COUNT_AFTER_GC = 10000;
-
-const int ForgettingCurveUtils::MAX_COMPUTED_PROBABILITY = 127;
-const int ForgettingCurveUtils::MAX_ENCODED_PROBABILITY = 15;
-const int ForgettingCurveUtils::MIN_VALID_ENCODED_PROBABILITY = 3;
-const int ForgettingCurveUtils::ENCODED_PROBABILITY_STEP = 1;
-// Currently, we try to decay each uni/bigram once every 2 hours. Accordingly, the expected
-// duration of the decay is approximately 66hours.
-const float ForgettingCurveUtils::MIN_PROBABILITY_TO_DECAY = 0.03f;
+const int ForgettingCurveUtils::MULTIPLIER_TWO_IN_PROBABILITY_SCALE = 8;
 const int ForgettingCurveUtils::DECAY_INTERVAL_SECONDS = 2 * 60 * 60;
 
+const int ForgettingCurveUtils::MAX_LEVEL = 3;
+const int ForgettingCurveUtils::MIN_VISIBLE_LEVEL = 1;
+const int ForgettingCurveUtils::MAX_ELAPSED_TIME_STEP_COUNT = 15;
+const int ForgettingCurveUtils::DISCARD_LEVEL_ZERO_ENTRY_TIME_STEP_COUNT_THRESHOLD = 14;
+
+const float ForgettingCurveUtils::UNIGRAM_COUNT_HARD_LIMIT_WEIGHT = 1.2;
+const float ForgettingCurveUtils::BIGRAM_COUNT_HARD_LIMIT_WEIGHT = 1.2;
+
 const ForgettingCurveUtils::ProbabilityTable ForgettingCurveUtils::sProbabilityTable;
-ForgettingCurveUtils::TimeKeeper ForgettingCurveUtils::sTimeKeeper;
 
-void ForgettingCurveUtils::TimeKeeper::setCurrentTime() {
-    mCurrentTime = time(0);
-}
-
-/* static */ int ForgettingCurveUtils::getProbability(const int encodedUnigramProbability,
-        const int encodedBigramProbability) {
-    if (encodedUnigramProbability == NOT_A_PROBABILITY) {
-        return NOT_A_PROBABILITY;
-    } else if (encodedBigramProbability == NOT_A_PROBABILITY) {
-        return backoff(decodeProbability(encodedUnigramProbability));
+// TODO: Revise the logic to decide the initial probability depending on the given probability.
+/* static */ const HistoricalInfo ForgettingCurveUtils::createUpdatedHistoricalInfo(
+        const HistoricalInfo *const originalHistoricalInfo, const int newProbability,
+        const HistoricalInfo *const newHistoricalInfo, const HeaderPolicy *const headerPolicy) {
+    const int timestamp = newHistoricalInfo->getTimeStamp();
+    if (newProbability != NOT_A_PROBABILITY && originalHistoricalInfo->getLevel() == 0) {
+        // Add entry as a valid word.
+        const int level = clampToVisibleEntryLevelRange(newHistoricalInfo->getLevel());
+        const int count = clampToValidCountRange(newHistoricalInfo->getCount(), headerPolicy);
+        return HistoricalInfo(timestamp, level, count);
+    } else if (!originalHistoricalInfo->isValid()
+            || originalHistoricalInfo->getLevel() < newHistoricalInfo->getLevel()
+            || (originalHistoricalInfo->getLevel() == newHistoricalInfo->getLevel()
+                    && originalHistoricalInfo->getCount() < newHistoricalInfo->getCount())) {
+        // Initial information.
+        const int level = clampToValidLevelRange(newHistoricalInfo->getLevel());
+        const int count = clampToValidCountRange(newHistoricalInfo->getCount(), headerPolicy);
+        return HistoricalInfo(timestamp, level, count);
     } else {
-        const int unigramProbability = decodeProbability(encodedUnigramProbability);
-        const int bigramProbability = decodeProbability(encodedBigramProbability);
-        return min(max(unigramProbability, bigramProbability), MAX_COMPUTED_PROBABILITY);
-    }
-}
-
-// Caveat: Unlike getProbability(), this method doesn't assume special bigram probability encoding
-// (i.e. unigram probability + bigram probability delta).
-/* static */ int ForgettingCurveUtils::getUpdatedEncodedProbability(
-        const int originalEncodedProbability, const int newProbability) {
-    if (originalEncodedProbability == NOT_A_PROBABILITY) {
-        // The bigram relation is not in this dictionary.
-        if (newProbability == NOT_A_PROBABILITY) {
-            // The bigram target is not in other dictionaries.
-            return 0;
+        const int updatedCount = originalHistoricalInfo->getCount() + 1;
+        if (updatedCount >= headerPolicy->getForgettingCurveOccurrencesToLevelUp()) {
+            // The count exceeds the max value the level can be incremented.
+            if (originalHistoricalInfo->getLevel() >= MAX_LEVEL) {
+                // The level is already max.
+                return HistoricalInfo(timestamp,
+                        originalHistoricalInfo->getLevel(), originalHistoricalInfo->getCount());
+            } else {
+                // Level up.
+                return HistoricalInfo(timestamp,
+                        originalHistoricalInfo->getLevel() + 1, 0 /* count */);
+            }
         } else {
-            return MIN_VALID_ENCODED_PROBABILITY;
+            return HistoricalInfo(timestamp, originalHistoricalInfo->getLevel(), updatedCount);
         }
+    }
+}
+
+/* static */ int ForgettingCurveUtils::decodeProbability(
+        const HistoricalInfo *const historicalInfo, const HeaderPolicy *const headerPolicy) {
+    const int elapsedTimeStepCount = getElapsedTimeStepCount(historicalInfo->getTimeStamp(),
+            headerPolicy->getForgettingCurveDurationToLevelDown());
+    return sProbabilityTable.getProbability(
+            headerPolicy->getForgettingCurveProbabilityValuesTableId(),
+            clampToValidLevelRange(historicalInfo->getLevel()),
+            clampToValidTimeStepCountRange(elapsedTimeStepCount));
+}
+
+/* static */ int ForgettingCurveUtils::getProbability(const int unigramProbability,
+        const int bigramProbability) {
+    if (unigramProbability == NOT_A_PROBABILITY) {
+        return NOT_A_PROBABILITY;
+    } else if (bigramProbability == NOT_A_PROBABILITY) {
+        return std::min(backoff(unigramProbability), MAX_PROBABILITY);
     } else {
-        if (newProbability != NOT_A_PROBABILITY
-                && originalEncodedProbability < MIN_VALID_ENCODED_PROBABILITY) {
-            return MIN_VALID_ENCODED_PROBABILITY;
-        }
-        return min(originalEncodedProbability + ENCODED_PROBABILITY_STEP, MAX_ENCODED_PROBABILITY);
+        // TODO: Investigate better way to handle bigram probability.
+        return std::min(std::max(unigramProbability,
+                bigramProbability + MULTIPLIER_TWO_IN_PROBABILITY_SCALE), MAX_PROBABILITY);
     }
 }
 
-/* static */ int ForgettingCurveUtils::isValidEncodedProbability(const int encodedProbability) {
-    return encodedProbability >= MIN_VALID_ENCODED_PROBABILITY;
+/* static */ bool ForgettingCurveUtils::needsToKeep(const HistoricalInfo *const historicalInfo,
+        const HeaderPolicy *const headerPolicy) {
+    return historicalInfo->getLevel() > 0
+            || getElapsedTimeStepCount(historicalInfo->getTimeStamp(),
+                    headerPolicy->getForgettingCurveDurationToLevelDown())
+                            < DISCARD_LEVEL_ZERO_ENTRY_TIME_STEP_COUNT_THRESHOLD;
 }
 
-/* static */ int ForgettingCurveUtils::getEncodedProbabilityToSave(const int encodedProbability,
-        const DictionaryHeaderStructurePolicy *const headerPolicy) {
-    const int elapsedTime = sTimeKeeper.peekCurrentTime() - headerPolicy->getLastDecayedTime();
-    const int decayIterationCount = max(elapsedTime / DECAY_INTERVAL_SECONDS, 1);
-    int currentEncodedProbability = max(min(encodedProbability, MAX_ENCODED_PROBABILITY), 0);
-    // TODO: Implement the decay in more proper way.
-    for (int i = 0; i < decayIterationCount; ++i) {
-        const float currentRate = static_cast<float>(currentEncodedProbability)
-                / static_cast<float>(MAX_ENCODED_PROBABILITY);
-        const float thresholdToDecay = (1.0f - MIN_PROBABILITY_TO_DECAY) * currentRate;
-        const float randValue = static_cast<float>(rand()) / static_cast<float>(RAND_MAX);
-        if (thresholdToDecay < randValue) {
-            currentEncodedProbability = max(currentEncodedProbability - ENCODED_PROBABILITY_STEP,
-                    0);
-        }
+/* static */ const HistoricalInfo ForgettingCurveUtils::createHistoricalInfoToSave(
+        const HistoricalInfo *const originalHistoricalInfo,
+        const HeaderPolicy *const headerPolicy) {
+    if (originalHistoricalInfo->getTimeStamp() == NOT_A_TIMESTAMP) {
+        return HistoricalInfo();
     }
-    return currentEncodedProbability;
+    const int durationToLevelDownInSeconds = headerPolicy->getForgettingCurveDurationToLevelDown();
+    const int elapsedTimeStep = getElapsedTimeStepCount(
+            originalHistoricalInfo->getTimeStamp(), durationToLevelDownInSeconds);
+    if (elapsedTimeStep <= MAX_ELAPSED_TIME_STEP_COUNT) {
+        // No need to update historical info.
+        return *originalHistoricalInfo;
+    }
+    // Level down.
+    const int maxLevelDownAmonut = elapsedTimeStep / (MAX_ELAPSED_TIME_STEP_COUNT + 1);
+    const int levelDownAmount = (maxLevelDownAmonut >= originalHistoricalInfo->getLevel()) ?
+            originalHistoricalInfo->getLevel() : maxLevelDownAmonut;
+    const int adjustedTimestampInSeconds = originalHistoricalInfo->getTimeStamp() +
+            levelDownAmount * durationToLevelDownInSeconds;
+    return HistoricalInfo(adjustedTimestampInSeconds,
+            originalHistoricalInfo->getLevel() - levelDownAmount, 0 /* count */);
 }
 
 /* static */ bool ForgettingCurveUtils::needsToDecay(const bool mindsBlockByDecay,
-        const int unigramCount, const int bigramCount,
-        const DictionaryHeaderStructurePolicy *const headerPolicy) {
-    if (unigramCount >= ForgettingCurveUtils::MAX_UNIGRAM_COUNT) {
+        const int unigramCount, const int bigramCount, const HeaderPolicy *const headerPolicy) {
+    if (unigramCount >= getUnigramCountHardLimit(headerPolicy->getMaxUnigramCount())) {
         // Unigram count exceeds the limit.
         return true;
-    } else if (bigramCount >= ForgettingCurveUtils::MAX_BIGRAM_COUNT) {
+    } else if (bigramCount >= getBigramCountHardLimit(headerPolicy->getMaxBigramCount())) {
         // Bigram count exceeds the limit.
         return true;
     }
     if (mindsBlockByDecay) {
         return false;
     }
-    if (headerPolicy->getLastDecayedTime() + DECAY_INTERVAL_SECONDS < time(0)) {
+    if (headerPolicy->getLastDecayedTime() + DECAY_INTERVAL_SECONDS
+            < TimeKeeper::peekCurrentTime()) {
         // Time to decay.
         return true;
     }
     return false;
 }
 
-/* static */ int ForgettingCurveUtils::decodeProbability(const int encodedProbability) {
-    if (encodedProbability < MIN_VALID_ENCODED_PROBABILITY) {
-        return NOT_A_PROBABILITY;
-    } else {
-        return min(sProbabilityTable.getProbability(encodedProbability), MAX_ENCODED_PROBABILITY);
-    }
-}
-
 // See comments in ProbabilityUtils::backoff().
 /* static */ int ForgettingCurveUtils::backoff(const int unigramProbability) {
-    if (unigramProbability == NOT_A_PROBABILITY) {
-        return NOT_A_PROBABILITY;
-    } else {
-        return max(unigramProbability - 8, 0);
+    // See TODO comments in ForgettingCurveUtils::getProbability().
+    return unigramProbability;
+}
+
+/* static */ int ForgettingCurveUtils::getElapsedTimeStepCount(const int timestamp,
+        const int durationToLevelDownInSeconds) {
+    const int elapsedTimeInSeconds = TimeKeeper::peekCurrentTime() - timestamp;
+    const int timeStepDurationInSeconds =
+            durationToLevelDownInSeconds / (MAX_ELAPSED_TIME_STEP_COUNT + 1);
+    return elapsedTimeInSeconds / timeStepDurationInSeconds;
+}
+
+/* static */ int ForgettingCurveUtils::clampToVisibleEntryLevelRange(const int level) {
+    return std::min(std::max(level, MIN_VISIBLE_LEVEL), MAX_LEVEL);
+}
+
+/* static */ int ForgettingCurveUtils::clampToValidCountRange(const int count,
+        const HeaderPolicy *const headerPolicy) {
+    return std::min(std::max(count, 0), headerPolicy->getForgettingCurveOccurrencesToLevelUp() - 1);
+}
+
+/* static */ int ForgettingCurveUtils::clampToValidLevelRange(const int level) {
+    return std::min(std::max(level, 0), MAX_LEVEL);
+}
+
+/* static */ int ForgettingCurveUtils::clampToValidTimeStepCountRange(const int timeStepCount) {
+    return std::min(std::max(timeStepCount, 0), MAX_ELAPSED_TIME_STEP_COUNT);
+}
+
+const int ForgettingCurveUtils::ProbabilityTable::PROBABILITY_TABLE_COUNT = 4;
+const int ForgettingCurveUtils::ProbabilityTable::WEAK_PROBABILITY_TABLE_ID = 0;
+const int ForgettingCurveUtils::ProbabilityTable::MODEST_PROBABILITY_TABLE_ID = 1;
+const int ForgettingCurveUtils::ProbabilityTable::STRONG_PROBABILITY_TABLE_ID = 2;
+const int ForgettingCurveUtils::ProbabilityTable::AGGRESSIVE_PROBABILITY_TABLE_ID = 3;
+const int ForgettingCurveUtils::ProbabilityTable::WEAK_MAX_PROBABILITY = 127;
+const int ForgettingCurveUtils::ProbabilityTable::MODEST_BASE_PROBABILITY = 32;
+const int ForgettingCurveUtils::ProbabilityTable::STRONG_BASE_PROBABILITY = 35;
+const int ForgettingCurveUtils::ProbabilityTable::AGGRESSIVE_BASE_PROBABILITY = 40;
+
+
+ForgettingCurveUtils::ProbabilityTable::ProbabilityTable() : mTables() {
+    mTables.resize(PROBABILITY_TABLE_COUNT);
+    for (int tableId = 0; tableId < PROBABILITY_TABLE_COUNT; ++tableId) {
+        mTables[tableId].resize(MAX_LEVEL + 1);
+        for (int level = 0; level <= MAX_LEVEL; ++level) {
+            mTables[tableId][level].resize(MAX_ELAPSED_TIME_STEP_COUNT + 1);
+            const float initialProbability = getBaseProbabilityForLevel(tableId, level);
+            const float endProbability = getBaseProbabilityForLevel(tableId, level - 1);
+            for (int timeStepCount = 0; timeStepCount <= MAX_ELAPSED_TIME_STEP_COUNT;
+                    ++timeStepCount) {
+                if (level == 0) {
+                    mTables[tableId][level][timeStepCount] = NOT_A_PROBABILITY;
+                    continue;
+                }
+                const float probability = initialProbability
+                        * powf(initialProbability / endProbability,
+                                -1.0f * static_cast<float>(timeStepCount)
+                                        / static_cast<float>(MAX_ELAPSED_TIME_STEP_COUNT + 1));
+                mTables[tableId][level][timeStepCount] =
+                        std::min(std::max(static_cast<int>(probability), 1), MAX_PROBABILITY);
+            }
+        }
     }
 }
 
-ForgettingCurveUtils::ProbabilityTable::ProbabilityTable() : mTable() {
-    // Table entry is as follows:
-    // 1, 1, 1, 2, 3, 5, 6, 9, 13, 18, 25, 34, 48, 66, 91, 127.
-    // Note that first MIN_VALID_ENCODED_PROBABILITY values are not used.
-    mTable.resize(MAX_ENCODED_PROBABILITY + 1);
-    for (int i = 0; i <= MAX_ENCODED_PROBABILITY; ++i) {
-        const int probability = static_cast<int>(powf(static_cast<float>(MAX_COMPUTED_PROBABILITY),
-                static_cast<float>(i) / static_cast<float>(MAX_ENCODED_PROBABILITY)));
-         mTable[i] = min(MAX_COMPUTED_PROBABILITY, max(0, probability));
+/* static */ int ForgettingCurveUtils::ProbabilityTable::getBaseProbabilityForLevel(
+        const int tableId, const int level) {
+    if (tableId == WEAK_PROBABILITY_TABLE_ID) {
+        // Max probability is 127.
+        return static_cast<float>(WEAK_MAX_PROBABILITY / (1 << (MAX_LEVEL - level)));
+    } else if (tableId == MODEST_PROBABILITY_TABLE_ID) {
+        // Max probability is 128.
+        return static_cast<float>(MODEST_BASE_PROBABILITY * (level + 1));
+    } else if (tableId == STRONG_PROBABILITY_TABLE_ID) {
+        // Max probability is 140.
+        return static_cast<float>(STRONG_BASE_PROBABILITY * (level + 1));
+    } else if (tableId == AGGRESSIVE_PROBABILITY_TABLE_ID) {
+        // Max probability is 160.
+        return static_cast<float>(AGGRESSIVE_BASE_PROBABILITY * (level + 1));
+    } else {
+        return NOT_A_PROBABILITY;
     }
 }
 
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h
index 2ad4238..3ff80ae 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h
@@ -20,48 +20,43 @@
 #include <vector>
 
 #include "defines.h"
+#include "suggest/policyimpl/dictionary/utils/historical_info.h"
 
 namespace latinime {
 
-class DictionaryHeaderStructurePolicy;
+class HeaderPolicy;
 
-// TODO: Check the elapsed time and decrease the probability depending on the time. Time field is
-// required to introduced to each terminal PtNode and bigram entry.
-// TODO: Quit using bigram probability to indicate the delta.
 class ForgettingCurveUtils {
  public:
-    class TimeKeeper {
-     public:
-        TimeKeeper() : mCurrentTime(0) {}
-        void setCurrentTime();
-        int peekCurrentTime() const { return mCurrentTime; };
+    static const HistoricalInfo createUpdatedHistoricalInfo(
+            const HistoricalInfo *const originalHistoricalInfo, const int newProbability,
+            const HistoricalInfo *const newHistoricalInfo, const HeaderPolicy *const headerPolicy);
 
-     private:
-        DISALLOW_COPY_AND_ASSIGN(TimeKeeper);
+    static const HistoricalInfo createHistoricalInfoToSave(
+            const HistoricalInfo *const originalHistoricalInfo,
+            const HeaderPolicy *const headerPolicy);
 
-        int mCurrentTime;
-    };
-
-    static const int MAX_UNIGRAM_COUNT;
-    static const int MAX_UNIGRAM_COUNT_AFTER_GC;
-    static const int MAX_BIGRAM_COUNT;
-    static const int MAX_BIGRAM_COUNT_AFTER_GC;
-
-    static TimeKeeper sTimeKeeper;
+    static int decodeProbability(const HistoricalInfo *const historicalInfo,
+            const HeaderPolicy *const headerPolicy);
 
     static int getProbability(const int encodedUnigramProbability,
             const int encodedBigramProbability);
 
-    static int getUpdatedEncodedProbability(const int originalEncodedProbability,
-            const int newProbability);
-
-    static int isValidEncodedProbability(const int encodedProbability);
-
-    static int getEncodedProbabilityToSave(const int encodedProbability,
-            const DictionaryHeaderStructurePolicy *const headerPolicy);
+    static bool needsToKeep(const HistoricalInfo *const historicalInfo,
+            const HeaderPolicy *const headerPolicy);
 
     static bool needsToDecay(const bool mindsBlockByDecay, const int unigramCount,
-            const int bigramCount, const DictionaryHeaderStructurePolicy *const headerPolicy);
+            const int bigramCount, const HeaderPolicy *const headerPolicy);
+
+    AK_FORCE_INLINE static int getUnigramCountHardLimit(const int maxUnigramCount) {
+        return static_cast<int>(static_cast<float>(maxUnigramCount)
+                * UNIGRAM_COUNT_HARD_LIMIT_WEIGHT);
+    }
+
+    AK_FORCE_INLINE static int getBigramCountHardLimit(const int maxBigramCount) {
+        return static_cast<int>(static_cast<float>(maxBigramCount)
+                * BIGRAM_COUNT_HARD_LIMIT_WEIGHT);
+    }
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(ForgettingCurveUtils);
@@ -70,31 +65,49 @@
      public:
         ProbabilityTable();
 
-        int getProbability(const int encodedProbability) const {
-            if (encodedProbability < 0 || encodedProbability > static_cast<int>(mTable.size())) {
-                return NOT_A_PROBABILITY;
-            }
-            return mTable[encodedProbability];
+        int getProbability(const int tableId, const int level,
+                const int elapsedTimeStepCount) const {
+            return mTables[tableId][level][elapsedTimeStepCount];
         }
 
      private:
         DISALLOW_COPY_AND_ASSIGN(ProbabilityTable);
 
-        std::vector<int> mTable;
+        static const int PROBABILITY_TABLE_COUNT;
+        static const int WEAK_PROBABILITY_TABLE_ID;
+        static const int MODEST_PROBABILITY_TABLE_ID;
+        static const int STRONG_PROBABILITY_TABLE_ID;
+        static const int AGGRESSIVE_PROBABILITY_TABLE_ID;
+
+        static const int WEAK_MAX_PROBABILITY;
+        static const int MODEST_BASE_PROBABILITY;
+        static const int STRONG_BASE_PROBABILITY;
+        static const int AGGRESSIVE_BASE_PROBABILITY;
+
+        std::vector<std::vector<std::vector<int> > > mTables;
+
+        static int getBaseProbabilityForLevel(const int tableId, const int level);
     };
 
-    static const int MAX_COMPUTED_PROBABILITY;
-    static const int MAX_ENCODED_PROBABILITY;
-    static const int MIN_VALID_ENCODED_PROBABILITY;
-    static const int ENCODED_PROBABILITY_STEP;
-    static const float MIN_PROBABILITY_TO_DECAY;
+    static const int MULTIPLIER_TWO_IN_PROBABILITY_SCALE;
     static const int DECAY_INTERVAL_SECONDS;
 
+    static const int MAX_LEVEL;
+    static const int MIN_VISIBLE_LEVEL;
+    static const int MAX_ELAPSED_TIME_STEP_COUNT;
+    static const int DISCARD_LEVEL_ZERO_ENTRY_TIME_STEP_COUNT_THRESHOLD;
+
+    static const float UNIGRAM_COUNT_HARD_LIMIT_WEIGHT;
+    static const float BIGRAM_COUNT_HARD_LIMIT_WEIGHT;
+
     static const ProbabilityTable sProbabilityTable;
 
-    static int decodeProbability(const int encodedProbability);
-
     static int backoff(const int unigramProbability);
+    static int getElapsedTimeStepCount(const int timestamp, const int durationToLevelDown);
+    static int clampToVisibleEntryLevelRange(const int level);
+    static int clampToValidLevelRange(const int level);
+    static int clampToValidCountRange(const int count, const HeaderPolicy *const headerPolicy);
+    static int clampToValidTimeStepCountRange(const int timeStepCount);
 };
 } // namespace latinime
 #endif /* LATINIME_FORGETTING_CURVE_UTILS_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp
index 1d77d5c..1916ea5 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.cpp
@@ -25,6 +25,20 @@
 // Magic number (4 bytes), version (2 bytes), flags (2 bytes), header size (4 bytes) = 12
 const int FormatUtils::DICTIONARY_MINIMUM_SIZE = 12;
 
+/* static */ FormatUtils::FORMAT_VERSION FormatUtils::getFormatVersion(const int formatVersion) {
+    switch (formatVersion) {
+        case VERSION_2:
+            return VERSION_2;
+        case VERSION_4_ONLY_FOR_TESTING:
+            return VERSION_4_ONLY_FOR_TESTING;
+        case VERSION_4:
+            return VERSION_4;
+        case VERSION_4_DEV:
+            return VERSION_4_DEV;
+        default:
+            return UNKNOWN_VERSION;
+    }
+}
 /* static */ FormatUtils::FORMAT_VERSION FormatUtils::detectFormatVersion(
         const uint8_t *const dict, const int dictSize) {
     // The magic number is stored big-endian.
@@ -36,18 +50,15 @@
     const uint32_t magicNumber = ByteArrayUtils::readUint32(dict, 0);
     switch (magicNumber) {
         case MAGIC_NUMBER:
-            // Version 2 header is as follows:
+            // The layout of the header is as follows:
             // Magic number (4 bytes) 0x9B 0xC1 0x3A 0xFE
             // Dictionary format version number (2 bytes)
             // Options (2 bytes)
             // Header size (4 bytes) : integer, big endian
-            if (ByteArrayUtils::readUint16(dict, 4) == 2) {
-                return VERSION_2;
-            } else if (ByteArrayUtils::readUint16(dict, 4) == 3) {
-                return VERSION_3;
-            } else {
-                return UNKNOWN_VERSION;
-            }
+            // Conceptually this converts the hardcoded value of the bytes in the file into
+            // the symbolic value we use in the code. But we want the constants to be the
+            // same so we use them for both here.
+            return getFormatVersion(ByteArrayUtils::readUint16(dict, 4));
         default:
             return UNKNOWN_VERSION;
     }
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h
index 79ed0de..55ad579 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/format_utils.h
@@ -17,7 +17,7 @@
 #ifndef LATINIME_FORMAT_UTILS_H
 #define LATINIME_FORMAT_UTILS_H
 
-#include <stdint.h>
+#include <cstdint>
 
 #include "defines.h"
 
@@ -29,15 +29,19 @@
 class FormatUtils {
  public:
     enum FORMAT_VERSION {
-        VERSION_2,
-        VERSION_3,
-        UNKNOWN_VERSION
+        // These MUST have the same values as the relevant constants in FormatSpec.java.
+        VERSION_2 = 2,
+        VERSION_4_ONLY_FOR_TESTING = 399,
+        VERSION_4 = 402,
+        VERSION_4_DEV = 403,
+        UNKNOWN_VERSION = -1
     };
 
     // 32 bit magic number is stored at the beginning of the dictionary header to reject
     // unsupported or obsolete dictionary formats.
     static const uint32_t MAGIC_NUMBER;
 
+    static FORMAT_VERSION getFormatVersion(const int formatVersion);
     static FORMAT_VERSION detectFormatVersion(const uint8_t *const dict, const int dictSize);
 
  private:
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/historical_info.h b/native/jni/src/suggest/policyimpl/dictionary/utils/historical_info.h
new file mode 100644
index 0000000..428ca86
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/historical_info.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_HISTORICAL_INFO_H
+#define LATINIME_HISTORICAL_INFO_H
+
+#include "defines.h"
+
+namespace latinime {
+
+class HistoricalInfo {
+ public:
+    // Invalid historical info.
+    HistoricalInfo()
+            : mTimestamp(NOT_A_TIMESTAMP), mLevel(0), mCount(0) {}
+
+    HistoricalInfo(const int timestamp, const int level, const int count)
+            : mTimestamp(timestamp), mLevel(level), mCount(count) {}
+
+    bool isValid() const {
+        return mTimestamp != NOT_A_TIMESTAMP;
+    }
+
+    int getTimeStamp() const {
+        return mTimestamp;
+    }
+
+    int getLevel() const {
+        return mLevel;
+    }
+
+    int getCount() const {
+        return mCount;
+    }
+
+ private:
+    // Copy constructor is public to use this class as a type of return value.
+    DISALLOW_ASSIGNMENT_OPERATOR(HistoricalInfo);
+
+    const int mTimestamp;
+    const int mLevel;
+    const int mCount;
+};
+} // namespace latinime
+#endif /* LATINIME_HISTORICAL_INFO_H */
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.cpp
new file mode 100644
index 0000000..4a126ff
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.cpp
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/utils/mmapped_buffer.h"
+
+#include <cerrno>
+#include <climits>
+#include <cstdio>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+#include "suggest/policyimpl/dictionary/utils/file_utils.h"
+
+namespace latinime {
+
+/* static */ MmappedBuffer::MmappedBufferPtr MmappedBuffer::openBuffer(
+        const char *const path, const int bufferOffset, const int bufferSize,
+        const bool isUpdatable) {
+    const int mmapFd = open(path, O_RDONLY);
+    if (mmapFd < 0) {
+        AKLOGE("DICT: Can't open the source. path=%s errno=%d", path, errno);
+        return nullptr;
+    }
+    const int pagesize = sysconf(_SC_PAGESIZE);
+    const int offset = bufferOffset % pagesize;
+    int alignedOffset = bufferOffset - offset;
+    int alignedSize = bufferSize + offset;
+    const int protMode = isUpdatable ? PROT_READ | PROT_WRITE : PROT_READ;
+    void *const mmappedBuffer = mmap(0, alignedSize, protMode, MAP_PRIVATE, mmapFd,
+            alignedOffset);
+    if (mmappedBuffer == MAP_FAILED) {
+        AKLOGE("DICT: Can't mmap dictionary. errno=%d", errno);
+        close(mmapFd);
+        return nullptr;
+    }
+    uint8_t *const buffer = static_cast<uint8_t *>(mmappedBuffer) + offset;
+    if (!buffer) {
+        AKLOGE("DICT: buffer is null");
+        close(mmapFd);
+        return nullptr;
+    }
+    return MmappedBufferPtr(new MmappedBuffer(buffer, bufferSize, mmappedBuffer, alignedSize,
+            mmapFd, isUpdatable));
+}
+
+/* static */ MmappedBuffer::MmappedBufferPtr MmappedBuffer::openBuffer(
+        const char *const path, const bool isUpdatable) {
+    const int fileSize = FileUtils::getFileSize(path);
+    if (fileSize == -1) {
+        return nullptr;
+    } else if (fileSize == 0) {
+        return MmappedBufferPtr(new MmappedBuffer(isUpdatable));
+    } else {
+        return openBuffer(path, 0 /* bufferOffset */, fileSize, isUpdatable);
+    }
+}
+
+/* static */ MmappedBuffer::MmappedBufferPtr MmappedBuffer::openBuffer(
+        const char *const dirPath, const char *const fileName, const bool isUpdatable) {
+    const int filePathBufferSize = PATH_MAX + 1 /* terminator */;
+    char filePath[filePathBufferSize];
+    const int filePathLength = snprintf(filePath, filePathBufferSize, "%s%s", dirPath,
+            fileName);
+    if (filePathLength >= filePathBufferSize) {
+        return nullptr;
+    }
+    return openBuffer(filePath, isUpdatable);
+}
+
+MmappedBuffer::~MmappedBuffer() {
+    if (mAlignedSize == 0) {
+        return;
+    }
+    int ret = munmap(mMmappedBuffer, mAlignedSize);
+    if (ret != 0) {
+        AKLOGE("DICT: Failure in munmap. ret=%d errno=%d", ret, errno);
+    }
+    ret = close(mMmapFd);
+    if (ret != 0) {
+        AKLOGE("DICT: Failure in close. ret=%d errno=%d", ret, errno);
+    }
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.h b/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.h
index 6b69116..8460087 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/mmapped_buffer.h
@@ -17,11 +17,8 @@
 #ifndef LATINIME_MMAPPED_BUFFER_H
 #define LATINIME_MMAPPED_BUFFER_H
 
-#include <cerrno>
-#include <fcntl.h>
-#include <stdint.h>
-#include <sys/mman.h>
-#include <unistd.h>
+#include <cstdint>
+#include <memory>
 
 #include "defines.h"
 
@@ -29,46 +26,18 @@
 
 class MmappedBuffer {
  public:
-    static MmappedBuffer* openBuffer(const char *const path, const int bufferOffset,
-            const int bufferSize, const bool isUpdatable) {
-        const int openMode = isUpdatable ? O_RDWR : O_RDONLY;
-        const int mmapFd = open(path, openMode);
-        if (mmapFd < 0) {
-            AKLOGE("DICT: Can't open the source. path=%s errno=%d", path, errno);
-            return 0;
-        }
-        const int pagesize = getpagesize();
-        const int offset = bufferOffset % pagesize;
-        int alignedOffset = bufferOffset - offset;
-        int alignedSize = bufferSize + offset;
-        const int protMode = isUpdatable ? PROT_READ | PROT_WRITE : PROT_READ;
-        void *const mmappedBuffer = mmap(0, alignedSize, protMode, MAP_PRIVATE, mmapFd,
-                alignedOffset);
-        if (mmappedBuffer == MAP_FAILED) {
-            AKLOGE("DICT: Can't mmap dictionary. errno=%d", errno);
-            close(mmapFd);
-            return 0;
-        }
-        uint8_t *const buffer = static_cast<uint8_t *>(mmappedBuffer) + offset;
-        if (!buffer) {
-            AKLOGE("DICT: buffer is null");
-            close(mmapFd);
-            return 0;
-        }
-        return new MmappedBuffer(buffer, bufferSize, mmappedBuffer, alignedSize, mmapFd,
-                isUpdatable);
-    }
+    typedef std::unique_ptr<const MmappedBuffer> MmappedBufferPtr;
 
-    ~MmappedBuffer() {
-        int ret = munmap(mMmappedBuffer, mAlignedSize);
-        if (ret != 0) {
-            AKLOGE("DICT: Failure in munmap. ret=%d errno=%d", ret, errno);
-        }
-        ret = close(mMmapFd);
-        if (ret != 0) {
-            AKLOGE("DICT: Failure in close. ret=%d errno=%d", ret, errno);
-        }
-    }
+    static MmappedBufferPtr openBuffer(const char *const path,
+            const int bufferOffset, const int bufferSize, const bool isUpdatable);
+
+    // Mmap entire file.
+    static MmappedBufferPtr openBuffer(const char *const path, const bool isUpdatable);
+
+    static MmappedBufferPtr openBuffer(const char *const dirPath, const char *const fileName,
+            const bool isUpdatable);
+
+    ~MmappedBuffer();
 
     AK_FORCE_INLINE uint8_t *getBuffer() const {
         return mBuffer;
@@ -89,6 +58,11 @@
             : mBuffer(buffer), mBufferSize(bufferSize), mMmappedBuffer(mmappedBuffer),
               mAlignedSize(alignedSize), mMmapFd(mmapFd), mIsUpdatable(isUpdatable) {}
 
+    // Empty file. We have to handle an empty file as a valid part of a dictionary.
+    AK_FORCE_INLINE MmappedBuffer(const bool isUpdatable)
+            : mBuffer(nullptr), mBufferSize(0), mMmappedBuffer(nullptr), mAlignedSize(0),
+              mMmapFd(0), mIsUpdatable(isUpdatable) {}
+
     DISALLOW_IMPLICIT_CONSTRUCTORS(MmappedBuffer);
 
     uint8_t *const mBuffer;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.h b/native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.h
index 21fe355..3b339e6 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.h
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/probability_utils.h
@@ -17,12 +17,11 @@
 #ifndef LATINIME_PROBABILITY_UTILS_H
 #define LATINIME_PROBABILITY_UTILS_H
 
-#include <stdint.h>
-
 #include "defines.h"
 
 namespace latinime {
 
+// TODO: Quit using bigram probability to indicate the delta.
 class ProbabilityUtils {
  public:
     static AK_FORCE_INLINE int backoff(const int unigramProbability) {
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp
new file mode 100644
index 0000000..d336306
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/policyimpl/dictionary/utils/sparse_table.h"
+
+namespace latinime {
+
+const int SparseTable::NOT_EXIST = -1;
+const int SparseTable::INDEX_SIZE = 4;
+
+bool SparseTable::contains(const int id) const {
+    const int readingPos = getPosInIndexTable(id);
+    if (id < 0 || mIndexTableBuffer->getTailPosition() <= readingPos) {
+        return false;
+    }
+    const int index = mIndexTableBuffer->readUint(INDEX_SIZE, readingPos);
+    return index != NOT_EXIST;
+}
+
+uint32_t SparseTable::get(const int id) const {
+    const int indexTableReadingPos = getPosInIndexTable(id);
+    const int index = mIndexTableBuffer->readUint(INDEX_SIZE, indexTableReadingPos);
+    const int contentTableReadingPos = getPosInContentTable(id, index);
+    if (contentTableReadingPos < 0
+            || contentTableReadingPos >= mContentTableBuffer->getTailPosition()) {
+        AKLOGE("contentTableReadingPos(%d) is invalid. id: %d, index: %d",
+                contentTableReadingPos, id, index);
+        return NOT_A_DICT_POS;
+    }
+    const int contentValue = mContentTableBuffer->readUint(mDataSize, contentTableReadingPos);
+    return contentValue == NOT_EXIST ? NOT_A_DICT_POS : contentValue;
+}
+
+bool SparseTable::set(const int id, const uint32_t value) {
+    const int posInIndexTable = getPosInIndexTable(id);
+    // Extends the index table if needed.
+    int tailPos = mIndexTableBuffer->getTailPosition();
+    while (tailPos <= posInIndexTable) {
+        if (!mIndexTableBuffer->writeUintAndAdvancePosition(NOT_EXIST, INDEX_SIZE, &tailPos)) {
+            AKLOGE("cannot extend index table. tailPos: %d to: %d", tailPos, posInIndexTable);
+            return false;
+        }
+    }
+    if (contains(id)) {
+        // The entry is already in the content table.
+        const int index = mIndexTableBuffer->readUint(INDEX_SIZE, posInIndexTable);
+        if (!mContentTableBuffer->writeUint(value, mDataSize, getPosInContentTable(id, index))) {
+            AKLOGE("cannot update value %d. pos: %d, tailPos: %d, mDataSize: %d", value,
+                    getPosInContentTable(id, index), mContentTableBuffer->getTailPosition(),
+                    mDataSize);
+            return false;
+        }
+        return true;
+    }
+    // The entry is not in the content table.
+    // Create new entry in the content table.
+    const int index = getIndexFromContentTablePos(mContentTableBuffer->getTailPosition());
+    if (!mIndexTableBuffer->writeUint(index, INDEX_SIZE, posInIndexTable)) {
+        AKLOGE("cannot write index %d. pos %d", index, posInIndexTable);
+        return false;
+    }
+    // Write a new block that containing the entry to be set.
+    int writingPos = getPosInContentTable(0 /* id */, index);
+    for (int i = 0; i < mBlockSize; ++i) {
+        if (!mContentTableBuffer->writeUintAndAdvancePosition(NOT_EXIST, mDataSize,
+                &writingPos)) {
+            AKLOGE("cannot write content table to extend. writingPos: %d, tailPos: %d, "
+                    "mDataSize: %d", writingPos, mContentTableBuffer->getTailPosition(), mDataSize);
+            return false;
+        }
+    }
+    return mContentTableBuffer->writeUint(value, mDataSize, getPosInContentTable(id, index));
+}
+
+int SparseTable::getIndexFromContentTablePos(const int contentTablePos) const {
+    return contentTablePos / mDataSize / mBlockSize;
+}
+
+int SparseTable::getPosInIndexTable(const int id) const {
+    return (id / mBlockSize) * INDEX_SIZE;
+}
+
+int SparseTable::getPosInContentTable(const int id, const int index) const {
+    const int offset = id % mBlockSize;
+    return (index * mBlockSize + offset) * mDataSize;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.h b/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.h
new file mode 100644
index 0000000..fca8120
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_SPARSE_TABLE_H
+#define LATINIME_SPARSE_TABLE_H
+
+#include <cstdint>
+
+#include "defines.h"
+#include "suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
+
+namespace latinime {
+
+// Note that there is a corresponding implementation in SparseTable.java.
+// TODO: Support multiple content buffers.
+class SparseTable {
+ public:
+    SparseTable(BufferWithExtendableBuffer *const indexTableBuffer,
+            BufferWithExtendableBuffer *const contentTableBuffer, const int blockSize,
+            const int dataSize)
+            : mIndexTableBuffer(indexTableBuffer), mContentTableBuffer(contentTableBuffer),
+              mBlockSize(blockSize), mDataSize(dataSize) {}
+
+    bool contains(const int id) const;
+
+    uint32_t get(const int id) const;
+
+    bool set(const int id, const uint32_t value);
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(SparseTable);
+
+    int getIndexFromContentTablePos(const int contentTablePos) const;
+
+    int getPosInIndexTable(const int id) const;
+
+    int getPosInContentTable(const int id, const int index) const;
+
+    static const int NOT_EXIST;
+    static const int INDEX_SIZE;
+
+    BufferWithExtendableBuffer *const mIndexTableBuffer;
+    BufferWithExtendableBuffer *const mContentTableBuffer;
+    const int mBlockSize;
+    const int mDataSize;
+};
+} // namespace latinime
+#endif /* LATINIME_SPARSE_TABLE_H */
diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
index 104eb2a..3fc566e 100644
--- a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
+++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
@@ -22,6 +22,12 @@
 const int ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY = 40;
 const int ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY_FOR_CAPPED = 120;
 const float ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD = 1.0f;
+
+const float ScoringParams::EXACT_MATCH_PROMOTION = 1.1f;
+const float ScoringParams::CASE_ERROR_PENALTY_FOR_EXACT_MATCH = 0.01f;
+const float ScoringParams::ACCENT_ERROR_PENALTY_FOR_EXACT_MATCH = 0.02f;
+const float ScoringParams::DIGRAPH_PENALTY_FOR_EXACT_MATCH = 0.03f;
+
 // TODO: Unlimit max cache dic node size
 const int ScoringParams::MAX_CACHE_DIC_NODE_SIZE = 170;
 const int ScoringParams::MAX_CACHE_DIC_NODE_SIZE_FOR_SINGLE_POINT = 310;
@@ -31,8 +37,9 @@
 const float ScoringParams::PROXIMITY_COST = 0.0694f;
 const float ScoringParams::FIRST_CHAR_PROXIMITY_COST = 0.072f;
 const float ScoringParams::FIRST_PROXIMITY_COST = 0.07788f;
-const float ScoringParams::OMISSION_COST = 0.4676f;
-const float ScoringParams::OMISSION_COST_SAME_CHAR = 0.399f;
+const float ScoringParams::INTENTIONAL_OMISSION_COST = 0.1f;
+const float ScoringParams::OMISSION_COST = 0.467f;
+const float ScoringParams::OMISSION_COST_SAME_CHAR = 0.345f;
 const float ScoringParams::OMISSION_COST_FIRST_CHAR = 0.5256f;
 const float ScoringParams::INSERTION_COST = 0.7248f;
 const float ScoringParams::TERMINAL_INSERTION_COST = 0.8128f;
@@ -40,18 +47,18 @@
 const float ScoringParams::INSERTION_COST_PROXIMITY_CHAR = 0.674f;
 const float ScoringParams::INSERTION_COST_FIRST_CHAR = 0.639f;
 const float ScoringParams::TRANSPOSITION_COST = 0.5608f;
-const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.339f;
+const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.334f;
 const float ScoringParams::ADDITIONAL_PROXIMITY_COST = 0.4576f;
 const float ScoringParams::SUBSTITUTION_COST = 0.3806f;
-const float ScoringParams::COST_NEW_WORD = 0.0312f;
+const float ScoringParams::COST_NEW_WORD = 0.0314f;
 const float ScoringParams::COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE = 0.3224f;
 const float ScoringParams::DISTANCE_WEIGHT_LANGUAGE = 1.1214f;
-const float ScoringParams::COST_FIRST_LOOKAHEAD = 0.4836f;
-const float ScoringParams::COST_LOOKAHEAD = 0.00624f;
-const float ScoringParams::HAS_PROXIMITY_TERMINAL_COST = 0.06836f;
+const float ScoringParams::COST_FIRST_COMPLETION = 0.4836f;
+const float ScoringParams::COST_COMPLETION = 0.00624f;
+const float ScoringParams::HAS_PROXIMITY_TERMINAL_COST = 0.0683f;
 const float ScoringParams::HAS_EDIT_CORRECTION_TERMINAL_COST = 0.0362f;
 const float ScoringParams::HAS_MULTI_WORD_TERMINAL_COST = 0.4182f;
 const float ScoringParams::TYPING_BASE_OUTPUT_SCORE = 1.0f;
 const float ScoringParams::TYPING_MAX_OUTPUT_SCORE_PER_INPUT = 0.1f;
-const float ScoringParams::NORMALIZED_SPATIAL_DISTANCE_THRESHOLD_FOR_EDIT = 0.045f;
+const float ScoringParams::NORMALIZED_SPATIAL_DISTANCE_THRESHOLD_FOR_EDIT = 0.095f;
 } // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.h b/native/jni/src/suggest/policyimpl/typing/scoring_params.h
index 7d4b5c3..b12de6d 100644
--- a/native/jni/src/suggest/policyimpl/typing/scoring_params.h
+++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.h
@@ -32,6 +32,11 @@
     static const int MAX_CACHE_DIC_NODE_SIZE_FOR_SINGLE_POINT;
     static const int THRESHOLD_SHORT_WORD_LENGTH;
 
+    static const float EXACT_MATCH_PROMOTION;
+    static const float CASE_ERROR_PENALTY_FOR_EXACT_MATCH;
+    static const float ACCENT_ERROR_PENALTY_FOR_EXACT_MATCH;
+    static const float DIGRAPH_PENALTY_FOR_EXACT_MATCH;
+
     // Numerically optimized parameters (currently for tap typing only).
     // TODO: add ability to modify these constants programmatically.
     // TODO: explore optimization of gesture parameters.
@@ -39,6 +44,7 @@
     static const float PROXIMITY_COST;
     static const float FIRST_CHAR_PROXIMITY_COST;
     static const float FIRST_PROXIMITY_COST;
+    static const float INTENTIONAL_OMISSION_COST;
     static const float OMISSION_COST;
     static const float OMISSION_COST_SAME_CHAR;
     static const float OMISSION_COST_FIRST_CHAR;
@@ -54,8 +60,8 @@
     static const float COST_NEW_WORD;
     static const float COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE;
     static const float DISTANCE_WEIGHT_LANGUAGE;
-    static const float COST_FIRST_LOOKAHEAD;
-    static const float COST_LOOKAHEAD;
+    static const float COST_FIRST_COMPLETION;
+    static const float COST_COMPLETION;
     static const float HAS_PROXIMITY_TERMINAL_COST;
     static const float HAS_EDIT_CORRECTION_TERMINAL_COST;
     static const float HAS_MULTI_WORD_TERMINAL_COST;
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_scoring.h b/native/jni/src/suggest/policyimpl/typing/typing_scoring.h
index 56ffcc9..66ea624 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_scoring.h
+++ b/native/jni/src/suggest/policyimpl/typing/typing_scoring.h
@@ -18,7 +18,9 @@
 #define LATINIME_TYPING_SCORING_H
 
 #include "defines.h"
+#include "suggest/core/dictionary/error_type_utils.h"
 #include "suggest/core/policy/scoring.h"
+#include "suggest/core/session/dic_traverse_session.h"
 #include "suggest/policyimpl/typing/scoring_params.h"
 
 namespace latinime {
@@ -30,40 +32,40 @@
  public:
     static const TypingScoring *getInstance() { return &sInstance; }
 
-    AK_FORCE_INLINE bool getMostProbableString(
-            const DicTraverseSession *const traverseSession, const int terminalSize,
-            const float languageWeight, int *const outputCodePoints, int *const type,
-            int *const freq) const {
-        return false;
-    }
-
-    AK_FORCE_INLINE void safetyNetForMostProbableString(const int terminalSize,
-            const int maxScore, int *const outputCodePoints, int *const frequencies) const {
-    }
-
-    AK_FORCE_INLINE void searchWordWithDoubleLetter(DicNode *terminals,
-            const int terminalSize, int *doubleLetterTerminalIndex,
-            DoubleLetterLevel *doubleLetterLevel) const {
-    }
+    AK_FORCE_INLINE void getMostProbableString(const DicTraverseSession *const traverseSession,
+            const float languageWeight, SuggestionResults *const outSuggestionResults) const {}
 
     AK_FORCE_INLINE float getAdjustedLanguageWeight(DicTraverseSession *const traverseSession,
-             DicNode *const terminals, const int size) const {
+            DicNode *const terminals, const int size) const {
         return 1.0f;
     }
 
-    AK_FORCE_INLINE int calculateFinalScore(const float compoundDistance,
-            const int inputSize, const bool forceCommit) const {
+    AK_FORCE_INLINE int calculateFinalScore(const float compoundDistance, const int inputSize,
+            const ErrorTypeUtils::ErrorType containedErrorTypes, const bool forceCommit,
+            const bool boostExactMatches) const {
         const float maxDistance = ScoringParams::DISTANCE_WEIGHT_LANGUAGE
                 + static_cast<float>(inputSize) * ScoringParams::TYPING_MAX_OUTPUT_SCORE_PER_INPUT;
-        const float score = ScoringParams::TYPING_BASE_OUTPUT_SCORE
-                - compoundDistance / maxDistance
-                + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f);
+        float score = ScoringParams::TYPING_BASE_OUTPUT_SCORE - compoundDistance / maxDistance;
+        if (forceCommit) {
+            score += ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD;
+        }
+        if (boostExactMatches && ErrorTypeUtils::isExactMatch(containedErrorTypes)) {
+            score += ScoringParams::EXACT_MATCH_PROMOTION;
+            if ((ErrorTypeUtils::MATCH_WITH_CASE_ERROR & containedErrorTypes) != 0) {
+                score -= ScoringParams::CASE_ERROR_PENALTY_FOR_EXACT_MATCH;
+            }
+            if ((ErrorTypeUtils::MATCH_WITH_ACCENT_ERROR & containedErrorTypes) != 0) {
+                score -= ScoringParams::ACCENT_ERROR_PENALTY_FOR_EXACT_MATCH;
+            }
+            if ((ErrorTypeUtils::MATCH_WITH_DIGRAPH & containedErrorTypes) != 0) {
+                score -= ScoringParams::DIGRAPH_PENALTY_FOR_EXACT_MATCH;
+            }
+        }
         return static_cast<int>(score * SUGGEST_INTERFACE_OUTPUT_SCALE);
     }
 
-    AK_FORCE_INLINE float getDoubleLetterDemotionDistanceCost(const int terminalIndex,
-            const int doubleLetterTerminalIndex,
-            const DoubleLetterLevel doubleLetterLevel) const {
+    AK_FORCE_INLINE float getDoubleLetterDemotionDistanceCost(
+            const DicNode *const terminalDicNode) const {
         return 0.0f;
     }
 
@@ -71,6 +73,16 @@
         return false;
     }
 
+    AK_FORCE_INLINE bool autoCorrectsToMultiWordSuggestionIfTop() const {
+        return true;
+    }
+
+    AK_FORCE_INLINE bool sameAsTyped(const DicTraverseSession *const traverseSession,
+            const DicNode *const dicNode) const {
+        return traverseSession->getProximityInfoState(0)->sameAsTyped(
+                dicNode->getOutputWordBuf(), dicNode->getNodeCodePointCount());
+    }
+
  private:
     DISALLOW_COPY_AND_ASSIGN(TypingScoring);
     static const TypingScoring sInstance;
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
index 007c19e..cb3dfac 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
+++ b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
@@ -17,7 +17,7 @@
 #ifndef LATINIME_TYPING_TRAVERSAL_H
 #define LATINIME_TYPING_TRAVERSAL_H
 
-#include <stdint.h>
+#include <cstdint>
 
 #include "defines.h"
 #include "suggest/core/dicnode/dic_node.h"
@@ -81,7 +81,7 @@
             return false;
         }
         const int point0Index = dicNode->getInputIndex(0);
-        return dicNode->isTerminalWordNode()
+        return dicNode->isTerminalDicNode()
                 && traverseSession->getProximityInfoState(0)->
                         hasSpaceProximity(point0Index);
     }
@@ -96,7 +96,7 @@
         if (dicNode->isCompletion(inputSize)) {
             return false;
         }
-        if (!dicNode->isTerminalWordNode()) {
+        if (!dicNode->isTerminalDicNode()) {
             return false;
         }
         const int16_t pointIndex = dicNode->getInputIndex(0);
@@ -137,25 +137,19 @@
         return ScoringParams::MAX_SPATIAL_DISTANCE;
     }
 
-    AK_FORCE_INLINE bool autoCorrectsToMultiWordSuggestionIfTop() const {
-        return true;
-    }
-
     AK_FORCE_INLINE int getDefaultExpandDicNodeSize() const {
         return DicNodeVector::DEFAULT_NODES_SIZE_FOR_OPTIMIZATION;
     }
 
-    AK_FORCE_INLINE bool sameAsTyped(
-            const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const {
-        return traverseSession->getProximityInfoState(0)->sameAsTyped(
-                dicNode->getOutputWordBuf(), dicNode->getNodeCodePointCount());
-    }
-
     AK_FORCE_INLINE int getMaxCacheSize(const int inputSize) const {
         return (inputSize <= 1) ? ScoringParams::MAX_CACHE_DIC_NODE_SIZE_FOR_SINGLE_POINT
                 : ScoringParams::MAX_CACHE_DIC_NODE_SIZE;
     }
 
+    AK_FORCE_INLINE int getTerminalCacheSize() const {
+        return MAX_RESULTS;
+    }
+
     AK_FORCE_INLINE bool isPossibleOmissionChildNode(
             const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode,
             const DicNode *const dicNode) const {
@@ -172,9 +166,8 @@
         if (probability < ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY) {
             return false;
         }
-        const int c = dicNode->getOutputWordBuf()[0];
         const bool shortCappedWord = dicNode->getNodeCodePointCount()
-                < ScoringParams::THRESHOLD_SHORT_WORD_LENGTH && CharUtils::isAsciiUpper(c);
+                < ScoringParams::THRESHOLD_SHORT_WORD_LENGTH && dicNode->isFirstCharUppercase();
         return !shortCappedWord
                 || probability >= ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY_FOR_CAPPED;
     }
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
index 5b6b5e8..54f65c7 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
+++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
@@ -23,39 +23,64 @@
 
 const TypingWeighting TypingWeighting::sInstance;
 
-ErrorType TypingWeighting::getErrorType(const CorrectionType correctionType,
+ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType correctionType,
         const DicTraverseSession *const traverseSession, const DicNode *const parentDicNode,
         const DicNode *const dicNode) const {
     switch (correctionType) {
         case CT_MATCH:
             if (isProximityDicNode(traverseSession, dicNode)) {
-                return ET_PROXIMITY_CORRECTION;
+                return ErrorTypeUtils::PROXIMITY_CORRECTION;
+            } else if (dicNode->isInDigraph()) {
+                return ErrorTypeUtils::MATCH_WITH_DIGRAPH;
             } else {
-                return ET_NOT_AN_ERROR;
+                // Compare the node code point with original primary code point on the keyboard.
+                const ProximityInfoState *const pInfoState =
+                        traverseSession->getProximityInfoState(0);
+                const int primaryOriginalCodePoint = pInfoState->getPrimaryOriginalCodePointAt(
+                        dicNode->getInputIndex(0));
+                const int nodeCodePoint = dicNode->getNodeCodePoint();
+                if (primaryOriginalCodePoint == nodeCodePoint) {
+                    // Node code point is same as original code point on the keyboard.
+                    return ErrorTypeUtils::NOT_AN_ERROR;
+                } else if (CharUtils::toLowerCase(primaryOriginalCodePoint) ==
+                        CharUtils::toLowerCase(nodeCodePoint)) {
+                    // Only cases of the code points are different.
+                    return ErrorTypeUtils::MATCH_WITH_CASE_ERROR;
+                } else if (CharUtils::toBaseCodePoint(primaryOriginalCodePoint) ==
+                        CharUtils::toBaseCodePoint(nodeCodePoint)) {
+                    // Node code point is a variant of original code point.
+                    return ErrorTypeUtils::MATCH_WITH_ACCENT_ERROR;
+                } else {
+                    // Node code point is a variant of original code point and the cases are also
+                    // different.
+                    return ErrorTypeUtils::MATCH_WITH_ACCENT_ERROR
+                            | ErrorTypeUtils::MATCH_WITH_CASE_ERROR;
+                }
             }
+            break;
         case CT_ADDITIONAL_PROXIMITY:
-            return ET_PROXIMITY_CORRECTION;
+            return  ErrorTypeUtils::PROXIMITY_CORRECTION;
         case CT_OMISSION:
             if (parentDicNode->canBeIntentionalOmission()) {
-                return ET_INTENTIONAL_OMISSION;
+                return ErrorTypeUtils::INTENTIONAL_OMISSION;
             } else {
-                return ET_EDIT_CORRECTION;
+                return ErrorTypeUtils::EDIT_CORRECTION;
             }
             break;
         case CT_SUBSTITUTION:
         case CT_INSERTION:
         case CT_TERMINAL_INSERTION:
         case CT_TRANSPOSITION:
-            return ET_EDIT_CORRECTION;
+            return ErrorTypeUtils::EDIT_CORRECTION;
         case CT_NEW_WORD_SPACE_OMISSION:
         case CT_NEW_WORD_SPACE_SUBSTITUTION:
-            return ET_NEW_WORD;
+            return ErrorTypeUtils::NEW_WORD;
         case CT_TERMINAL:
-            return ET_NOT_AN_ERROR;
+            return ErrorTypeUtils::NOT_AN_ERROR;
         case CT_COMPLETION:
-            return ET_COMPLETION;
+            return ErrorTypeUtils::COMPLETION;
         default:
-            return ET_NOT_AN_ERROR;
+            return ErrorTypeUtils::NOT_AN_ERROR;
     }
 }
 }  // namespace latinime
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.h b/native/jni/src/suggest/policyimpl/typing/typing_weighting.h
index 9f0a331..8407717 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.h
+++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.h
@@ -19,6 +19,7 @@
 
 #include "defines.h"
 #include "suggest/core/dicnode/dic_node_utils.h"
+#include "suggest/core/dictionary/error_type_utils.h"
 #include "suggest/core/layout/touch_position_correction_utils.h"
 #include "suggest/core/policy/weighting.h"
 #include "suggest/core/session/dic_traverse_session.h"
@@ -53,12 +54,15 @@
 
     float getOmissionCost(const DicNode *const parentDicNode, const DicNode *const dicNode) const {
         const bool isZeroCostOmission = parentDicNode->isZeroCostOmission();
+        const bool isIntentionalOmission = parentDicNode->canBeIntentionalOmission();
         const bool sameCodePoint = dicNode->isSameNodeCodePoint(parentDicNode);
         // If the traversal omitted the first letter then the dicNode should now be on the second.
         const bool isFirstLetterOmission = dicNode->getNodeCodePointCount() == 2;
         float cost = 0.0f;
         if (isZeroCostOmission) {
             cost = 0.0f;
+        } else if (isIntentionalOmission) {
+            cost = ScoringParams::INTENTIONAL_OMISSION_COST;
         } else if (isFirstLetterOmission) {
             cost = ScoringParams::OMISSION_COST_FIRST_CHAR;
         } else {
@@ -71,8 +75,6 @@
     float getMatchedCost(const DicTraverseSession *const traverseSession,
             const DicNode *const dicNode, DicNode_InputStateG *inputStateG) const {
         const int pointIndex = dicNode->getInputIndex(0);
-        // Note: min() required since length can be MAX_POINT_TO_KEY_LENGTH for characters not on
-        // the keyboard (like accented letters)
         const float normalizedSquaredLength = traverseSession->getProximityInfoState(0)
                 ->getPointToKeyLength(pointIndex,
                         CharUtils::toBaseLowerCase(dicNode->getNodeCodePoint()));
@@ -167,8 +169,8 @@
         const bool firstCompletion = dicNode->getInputIndex(0)
                 == traverseSession->getInputSize();
         // TODO: Change the cost for the first completion for the gesture?
-        const float cost = firstCompletion ? ScoringParams::COST_FIRST_LOOKAHEAD
-                : ScoringParams::COST_LOOKAHEAD;
+        const float cost = firstCompletion ? ScoringParams::COST_FIRST_COMPLETION
+                : ScoringParams::COST_COMPLETION;
         return cost;
     }
 
@@ -204,7 +206,7 @@
         return cost * traverseSession->getMultiWordCostMultiplier();
     }
 
-    ErrorType getErrorType(const CorrectionType correctionType,
+    ErrorTypeUtils::ErrorType getErrorType(const CorrectionType correctionType,
             const DicTraverseSession *const traverseSession,
             const DicNode *const parentDicNode, const DicNode *const dicNode) const;
 
diff --git a/native/jni/src/suggest/policyimpl/utils/edit_distance.h b/native/jni/src/suggest/policyimpl/utils/edit_distance.h
index 0871c37..4cfd0b3 100644
--- a/native/jni/src/suggest/policyimpl/utils/edit_distance.h
+++ b/native/jni/src/suggest/policyimpl/utils/edit_distance.h
@@ -17,6 +17,8 @@
 #ifndef LATINIME_EDIT_DISTANCE_H
 #define LATINIME_EDIT_DISTANCE_H
 
+#include <algorithm>
+
 #include "defines.h"
 #include "suggest/policyimpl/utils/edit_distance_policy.h"
 
@@ -38,13 +40,13 @@
 
         for (int i = 0; i < beforeLength; ++i) {
             for (int j = 0; j < afterLength; ++j) {
-                dp[(afterLength + 1) * (i + 1) + (j + 1)] = min(
+                dp[(afterLength + 1) * (i + 1) + (j + 1)] = std::min(
                         dp[(afterLength + 1) * i + (j + 1)] + policy->getInsertionCost(i, j),
-                        min(dp[(afterLength + 1) * (i + 1) + j] + policy->getDeletionCost(i, j),
-                                dp[(afterLength + 1) * i + j]
-                                        + policy->getSubstitutionCost(i, j)));
+                        std::min(
+                                dp[(afterLength + 1) * (i + 1) + j] + policy->getDeletionCost(i, j),
+                                dp[(afterLength + 1) * i + j] + policy->getSubstitutionCost(i, j)));
                 if (policy->allowTransposition(i, j)) {
-                    dp[(afterLength + 1) * (i + 1) + (j + 1)] = min(
+                    dp[(afterLength + 1) * (i + 1) + (j + 1)] = std::min(
                             dp[(afterLength + 1) * (i + 1) + (j + 1)],
                             dp[(afterLength + 1) * (i - 1) + (j - 1)]
                                     + policy->getTranspositionCost(i, j));
diff --git a/native/jni/src/utils/autocorrection_threshold_utils.cpp b/native/jni/src/utils/autocorrection_threshold_utils.cpp
index 1f8ee08..349786a 100644
--- a/native/jni/src/utils/autocorrection_threshold_utils.cpp
+++ b/native/jni/src/utils/autocorrection_threshold_utils.cpp
@@ -16,6 +16,7 @@
 
 #include "utils/autocorrection_threshold_utils.h"
 
+#include <algorithm>
 #include <cmath>
 
 #include "defines.h"
@@ -99,7 +100,7 @@
     const float maxScore = score >= S_INT_MAX ? static_cast<float>(S_INT_MAX)
             : static_cast<float>(MAX_INITIAL_SCORE)
                     * powf(static_cast<float>(TYPED_LETTER_MULTIPLIER),
-                            static_cast<float>(min(beforeLength, afterLength - spaceCount)))
+                            static_cast<float>(std::min(beforeLength, afterLength - spaceCount)))
                     * static_cast<float>(FULL_WORD_MULTIPLIER);
 
     return (static_cast<float>(score) / maxScore) * weight;
diff --git a/native/jni/src/utils/char_utils.cpp b/native/jni/src/utils/char_utils.cpp
index 0e70396..b17e084 100644
--- a/native/jni/src/utils/char_utils.cpp
+++ b/native/jni/src/utils/char_utils.cpp
@@ -22,6 +22,9 @@
 
 namespace latinime {
 
+const int CharUtils::MIN_UNICODE_CODE_POINT = 0;
+const int CharUtils::MAX_UNICODE_CODE_POINT = 0x10FFFF;
+
 struct LatinCapitalSmallPair {
   unsigned short capital;
   unsigned short small;
@@ -1118,7 +1121,8 @@
     /* U+0118 */ 0x0045, 0x0065, 0x0045, 0x0065, 0x0047, 0x0067, 0x0047, 0x0067,
     /* U+0120 */ 0x0047, 0x0067, 0x0047, 0x0067, 0x0048, 0x0068, 0x0126, 0x0127,
     /* U+0128 */ 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, 0x0069,
-    /* U+0130 */ 0x0049, 0x0131, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B,
+        // U+0131: Manually changed from 0131 to 0049
+    /* U+0130 */ 0x0049, 0x0049, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B,
     /* U+0138 */ 0x0138, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C,
     /* U+0140 */ 0x006C, 0x004C, 0x006C, 0x004E, 0x006E, 0x004E, 0x006E, 0x004E,
         // U+0141: Manually changed from 0141 to 004C
@@ -1273,4 +1277,6 @@
     /* U+04F0 */ 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, 0x04F6, 0x04F7,
     /* U+04F8 */ 0x042B, 0x044B, 0x04FA, 0x04FB, 0x04FC, 0x04FD, 0x04FE, 0x04FF,
 };
+
+/* static */ const std::vector<int> CharUtils::EMPTY_STRING(1 /* size */, '\0' /* value */);
 } // namespace latinime
diff --git a/native/jni/src/utils/char_utils.h b/native/jni/src/utils/char_utils.h
index 41663c8..6378650 100644
--- a/native/jni/src/utils/char_utils.h
+++ b/native/jni/src/utils/char_utils.h
@@ -18,6 +18,8 @@
 #define LATINIME_CHAR_UTILS_H
 
 #include <cctype>
+#include <cstring>
+#include <vector>
 
 #include "defines.h"
 
@@ -85,11 +87,36 @@
         return spaceCount;
     }
 
+    static AK_FORCE_INLINE int isInUnicodeSpace(const int codePoint) {
+        return codePoint >= MIN_UNICODE_CODE_POINT && codePoint <= MAX_UNICODE_CODE_POINT;
+    }
+
     static unsigned short latin_tolower(const unsigned short c);
+    static const std::vector<int> EMPTY_STRING;
+
+    // Returns updated code point count. Returns 0 when the code points cannot be marked as a
+    // Beginning-of-Sentence.
+    static AK_FORCE_INLINE int attachBeginningOfSentenceMarker(int *const codePoints,
+            const int codePointCount, const int maxCodePoint) {
+        if (codePointCount > 0 && codePoints[0] == CODE_POINT_BEGINNING_OF_SENTENCE) {
+            // Marker has already been attached.
+            return codePointCount;
+        }
+        if (codePointCount >= maxCodePoint) {
+            // the code points cannot be marked as a Beginning-of-Sentence.
+            return 0;
+        }
+        memmove(codePoints + 1, codePoints, sizeof(int) * codePointCount);
+        codePoints[0] = CODE_POINT_BEGINNING_OF_SENTENCE;
+        return codePointCount + 1;
+    }
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(CharUtils);
 
+    static const int MIN_UNICODE_CODE_POINT;
+    static const int MAX_UNICODE_CODE_POINT;
+
     /**
      * Table mapping most combined Latin, Greek, and Cyrillic characters
      * to their base characters.  If c is in range, BASE_CHARS[c] == c
diff --git a/native/jni/src/utils/hash_map_compat.h b/native/jni/src/utils/hash_map_compat.h
deleted file mode 100644
index a1e982b..0000000
--- a/native/jni/src/utils/hash_map_compat.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef LATINIME_HASH_MAP_COMPAT_H
-#define LATINIME_HASH_MAP_COMPAT_H
-
-// TODO: Use std::unordered_map that has been standardized in C++11
-
-#ifdef __APPLE__
-#include <ext/hash_map>
-#else // __APPLE__
-#include <hash_map>
-#endif // __APPLE__
-
-#ifdef __SGI_STL_PORT
-#define hash_map_compat stlport::hash_map
-#else // __SGI_STL_PORT
-#define hash_map_compat __gnu_cxx::hash_map
-#endif // __SGI_STL_PORT
-
-#endif // LATINIME_HASH_MAP_COMPAT_H
diff --git a/native/jni/src/utils/jni_data_utils.cpp b/native/jni/src/utils/jni_data_utils.cpp
new file mode 100644
index 0000000..5555293
--- /dev/null
+++ b/native/jni/src/utils/jni_data_utils.cpp
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "utils/jni_data_utils.h"
+
+namespace latinime {
+
+const int JniDataUtils::CODE_POINT_REPLACEMENT_CHARACTER = 0xFFFD;
+const int JniDataUtils::CODE_POINT_NULL = 0;
+
+} // namespace latinime
diff --git a/native/jni/src/utils/jni_data_utils.h b/native/jni/src/utils/jni_data_utils.h
new file mode 100644
index 0000000..cb82d3c
--- /dev/null
+++ b/native/jni/src/utils/jni_data_utils.h
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_JNI_DATA_UTILS_H
+#define LATINIME_JNI_DATA_UTILS_H
+
+#include <vector>
+
+#include "defines.h"
+#include "jni.h"
+#include "suggest/core/session/prev_words_info.h"
+#include "suggest/core/policy/dictionary_header_structure_policy.h"
+#include "suggest/policyimpl/dictionary/header/header_read_write_utils.h"
+#include "utils/char_utils.h"
+
+namespace latinime {
+
+class JniDataUtils {
+ public:
+    static void jintarrayToVector(JNIEnv *env, jintArray array, std::vector<int> *const outVector) {
+        if (!array) {
+            outVector->clear();
+            return;
+        }
+        const jsize arrayLength = env->GetArrayLength(array);
+        outVector->resize(arrayLength);
+        env->GetIntArrayRegion(array, 0 /* start */, arrayLength, outVector->data());
+    }
+
+    static DictionaryHeaderStructurePolicy::AttributeMap constructAttributeMap(JNIEnv *env,
+            jobjectArray attributeKeyStringArray, jobjectArray attributeValueStringArray) {
+        DictionaryHeaderStructurePolicy::AttributeMap attributeMap;
+        const int keyCount = env->GetArrayLength(attributeKeyStringArray);
+        for (int i = 0; i < keyCount; i++) {
+            jstring keyString = static_cast<jstring>(
+                    env->GetObjectArrayElement(attributeKeyStringArray, i));
+            const jsize keyUtf8Length = env->GetStringUTFLength(keyString);
+            char keyChars[keyUtf8Length + 1];
+            env->GetStringUTFRegion(keyString, 0, env->GetStringLength(keyString), keyChars);
+            keyChars[keyUtf8Length] = '\0';
+            DictionaryHeaderStructurePolicy::AttributeMap::key_type key;
+            HeaderReadWriteUtils::insertCharactersIntoVector(keyChars, &key);
+
+            jstring valueString = static_cast<jstring>(
+                    env->GetObjectArrayElement(attributeValueStringArray, i));
+            const jsize valueUtf8Length = env->GetStringUTFLength(valueString);
+            char valueChars[valueUtf8Length + 1];
+            env->GetStringUTFRegion(valueString, 0, env->GetStringLength(valueString), valueChars);
+            valueChars[valueUtf8Length] = '\0';
+            DictionaryHeaderStructurePolicy::AttributeMap::mapped_type value;
+            HeaderReadWriteUtils::insertCharactersIntoVector(valueChars, &value);
+            attributeMap[key] = value;
+        }
+        return attributeMap;
+    }
+
+    static void outputCodePoints(JNIEnv *env, jintArray intArrayToOutputCodePoints, const int start,
+            const int maxLength, const int *const codePoints, const int codePointCount,
+            const bool needsNullTermination) {
+        const int codePointBufSize = std::min(maxLength, codePointCount);
+        int outputCodePonts[codePointBufSize];
+        int outputCodePointCount = 0;
+        for (int i = 0; i < codePointBufSize; ++i) {
+            const int codePoint = codePoints[i];
+            int codePointToOutput = codePoint;
+            if (!CharUtils::isInUnicodeSpace(codePoint)) {
+                if (codePoint == CODE_POINT_BEGINNING_OF_SENTENCE) {
+                    // Just skip Beginning-of-Sentence marker.
+                    continue;
+                }
+                codePointToOutput = CODE_POINT_REPLACEMENT_CHARACTER;
+            } else if (codePoint >= 0x01 && codePoint <= 0x1F) {
+                // Control code.
+                codePointToOutput = CODE_POINT_REPLACEMENT_CHARACTER;
+            }
+            outputCodePonts[outputCodePointCount++] = codePointToOutput;
+        }
+        env->SetIntArrayRegion(intArrayToOutputCodePoints, start, outputCodePointCount,
+                outputCodePonts);
+        if (needsNullTermination && outputCodePointCount < maxLength) {
+            env->SetIntArrayRegion(intArrayToOutputCodePoints, start + outputCodePointCount,
+                    1 /* len */, &CODE_POINT_NULL);
+        }
+    }
+
+    static PrevWordsInfo constructPrevWordsInfo(JNIEnv *env, jobjectArray prevWordCodePointArrays,
+            jbooleanArray isBeginningOfSentenceArray) {
+        int prevWordCodePoints[MAX_PREV_WORD_COUNT_FOR_N_GRAM][MAX_WORD_LENGTH];
+        int prevWordCodePointCount[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        bool isBeginningOfSentence[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+        jsize prevWordsCount = env->GetArrayLength(prevWordCodePointArrays);
+        for (size_t i = 0; i < NELEMS(prevWordCodePoints); ++i) {
+            prevWordCodePointCount[i] = 0;
+            isBeginningOfSentence[i] = false;
+            if (prevWordsCount <= static_cast<int>(i)) {
+                continue;
+            }
+            jintArray prevWord = (jintArray)env->GetObjectArrayElement(prevWordCodePointArrays, i);
+            if (!prevWord) {
+                continue;
+            }
+            jsize prevWordLength = env->GetArrayLength(prevWord);
+            if (prevWordLength > MAX_WORD_LENGTH) {
+                continue;
+            }
+            env->GetIntArrayRegion(prevWord, 0, prevWordLength, prevWordCodePoints[i]);
+            prevWordCodePointCount[i] = prevWordLength;
+            jboolean isBeginningOfSentenceBoolean = JNI_FALSE;
+            env->GetBooleanArrayRegion(isBeginningOfSentenceArray, i, 1 /* len */,
+                    &isBeginningOfSentenceBoolean);
+            isBeginningOfSentence[i] = isBeginningOfSentenceBoolean == JNI_TRUE;
+        }
+        return PrevWordsInfo(prevWordCodePoints, prevWordCodePointCount, isBeginningOfSentence,
+                MAX_PREV_WORD_COUNT_FOR_N_GRAM);
+    }
+
+    static void putBooleanToArray(JNIEnv *env, jbooleanArray array, const int index,
+            const jboolean value) {
+        env->SetBooleanArrayRegion(array, index, 1 /* len */, &value);
+    }
+
+    static void putIntToArray(JNIEnv *env, jintArray array, const int index, const int value) {
+        env->SetIntArrayRegion(array, index, 1 /* len */, &value);
+    }
+
+    static void putFloatToArray(JNIEnv *env, jfloatArray array, const int index,
+            const float value) {
+        env->SetFloatArrayRegion(array, index, 1 /* len */, &value);
+    }
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(JniDataUtils);
+
+    static const int CODE_POINT_REPLACEMENT_CHARACTER;
+    static const int CODE_POINT_NULL;
+};
+} // namespace latinime
+#endif // LATINIME_JNI_DATA_UTILS_H
diff --git a/native/jni/src/utils/time_keeper.cpp b/native/jni/src/utils/time_keeper.cpp
new file mode 100644
index 0000000..0262840
--- /dev/null
+++ b/native/jni/src/utils/time_keeper.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "utils/time_keeper.h"
+
+#include <ctime>
+
+namespace latinime {
+
+int TimeKeeper::sCurrentTime;
+bool TimeKeeper::sSetForTesting;
+
+/* static  */ void TimeKeeper::setCurrentTime() {
+    if (!sSetForTesting) {
+        sCurrentTime = time(0);
+    }
+}
+
+/* static */ void TimeKeeper::startTestModeWithForceCurrentTime(const int currentTime) {
+    sCurrentTime = currentTime;
+    sSetForTesting = true;
+}
+
+/* static */ void TimeKeeper::stopTestMode() {
+    sSetForTesting = false;
+}
+
+} // namespace latinime
diff --git a/native/jni/src/utils/time_keeper.h b/native/jni/src/utils/time_keeper.h
new file mode 100644
index 0000000..d066757
--- /dev/null
+++ b/native/jni/src/utils/time_keeper.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_TIME_KEEPER_H
+#define LATINIME_TIME_KEEPER_H
+
+#include "defines.h"
+
+namespace latinime {
+
+class TimeKeeper {
+ public:
+    static void setCurrentTime();
+
+    static void startTestModeWithForceCurrentTime(const int currentTime);
+
+    static void stopTestMode();
+
+    static int peekCurrentTime() { return sCurrentTime; };
+
+ private:
+    DISALLOW_IMPLICIT_CONSTRUCTORS(TimeKeeper);
+
+    static int sCurrentTime;
+    static bool sSetForTesting;
+};
+} // namespace latinime
+#endif /* LATINIME_TIME_KEEPER_H */
diff --git a/native/jni/tests/defines_test.cpp b/native/jni/tests/defines_test.cpp
new file mode 100644
index 0000000..f7b80b2
--- /dev/null
+++ b/native/jni/tests/defines_test.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "defines.h"
+
+#include <gtest/gtest.h>
+
+namespace latinime {
+namespace {
+
+TEST(DefinesTest, NELEMSForFixedLengthArray) {
+    const size_t SMALL_ARRAY_SIZE = 1;
+    const size_t LARGE_ARRAY_SIZE = 100;
+    int smallArray[SMALL_ARRAY_SIZE];
+    int largeArray[LARGE_ARRAY_SIZE];
+    EXPECT_EQ(SMALL_ARRAY_SIZE, NELEMS(smallArray));
+    EXPECT_EQ(LARGE_ARRAY_SIZE, NELEMS(largeArray));
+}
+
+}  // namespace
+}  // namespace latinime
diff --git a/native/jni/tests/suggest/core/dictionary/bloom_filter_test.cpp b/native/jni/tests/suggest/core/dictionary/bloom_filter_test.cpp
new file mode 100644
index 0000000..b620217
--- /dev/null
+++ b/native/jni/tests/suggest/core/dictionary/bloom_filter_test.cpp
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/dictionary/bloom_filter.h"
+
+#include <gtest/gtest.h>
+
+#include <algorithm>
+#include <cstdlib>
+#include <functional>
+#include <random>
+#include <unordered_set>
+#include <vector>
+
+namespace latinime {
+namespace {
+
+TEST(BloomFilterTest, TestFilter) {
+    static const int TEST_RANDOM_DATA_MAX = 65536;
+    static const int ELEMENT_COUNT = 1000;
+    std::vector<int> elements;
+
+    // Initialize data set with random integers.
+    {
+        // Use the uniform integer distribution [0, TEST_RANDOM_DATA_MAX].
+        std::uniform_int_distribution<int> distribution(0, TEST_RANDOM_DATA_MAX);
+        auto randomNumberGenerator = std::bind(distribution, std::mt19937());
+        for (int i = 0; i < ELEMENT_COUNT; ++i) {
+            elements.push_back(randomNumberGenerator());
+        }
+    }
+
+    // Make sure BloomFilter contains nothing by default.
+    BloomFilter bloomFilter;
+    for (const int elem : elements) {
+        ASSERT_FALSE(bloomFilter.isInFilter(elem));
+    }
+
+    // Copy some of the test vector into bloom filter.
+    std::unordered_set<int> elementsThatHaveBeenSetInFilter;
+    {
+        // Use the uniform integer distribution [0, 1].
+        std::uniform_int_distribution<int> distribution(0, 1);
+        auto randomBitGenerator = std::bind(distribution, std::mt19937());
+        for (const int elem : elements) {
+            if (randomBitGenerator() == 0) {
+                bloomFilter.setInFilter(elem);
+                elementsThatHaveBeenSetInFilter.insert(elem);
+            }
+        }
+    }
+
+    for (const int elem : elements) {
+        const bool existsInFilter = bloomFilter.isInFilter(elem);
+        const bool hasBeenSetInFilter =
+                elementsThatHaveBeenSetInFilter.find(elem) != elementsThatHaveBeenSetInFilter.end();
+        if (hasBeenSetInFilter) {
+            EXPECT_TRUE(existsInFilter) << "elem: " << elem;
+        }
+        if (!existsInFilter) {
+            EXPECT_FALSE(hasBeenSetInFilter) << "elem: " << elem;
+        }
+    }
+}
+
+}  // namespace
+}  // namespace latinime
diff --git a/native/jni/tests/suggest/core/layout/normal_distribution_2d_test.cpp b/native/jni/tests/suggest/core/layout/normal_distribution_2d_test.cpp
new file mode 100644
index 0000000..1d6a27c
--- /dev/null
+++ b/native/jni/tests/suggest/core/layout/normal_distribution_2d_test.cpp
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "suggest/core/layout/normal_distribution_2d.h"
+
+#include <gtest/gtest.h>
+
+#include <vector>
+
+namespace latinime {
+namespace {
+
+static const float ORIGIN_X = 0.0f;
+static const float ORIGIN_Y = 0.0f;
+static const float LARGE_STANDARD_DEVIATION = 100.0f;
+static const float SMALL_STANDARD_DEVIATION = 10.0f;
+static const float ZERO_RADIAN = 0.0f;
+
+TEST(NormalDistribution2DTest, ProbabilityDensity) {
+    const NormalDistribution2D distribution(ORIGIN_X, LARGE_STANDARD_DEVIATION, ORIGIN_Y,
+            SMALL_STANDARD_DEVIATION, ZERO_RADIAN);
+
+    static const float SMALL_COORDINATE = 10.0f;
+    static const float LARGE_COORDINATE = 20.0f;
+    // The probability density of the point near the distribution center is larger than the
+    // probability density of the point that is far from distribution center.
+    EXPECT_GE(distribution.getProbabilityDensity(SMALL_COORDINATE, SMALL_COORDINATE),
+            distribution.getProbabilityDensity(LARGE_COORDINATE, LARGE_COORDINATE));
+    // The probability density of the point shifted toward the direction that has larger standard
+    // deviation is larger than the probability density of the point shifted towards another
+    // direction.
+    EXPECT_GE(distribution.getProbabilityDensity(LARGE_COORDINATE, SMALL_COORDINATE),
+            distribution.getProbabilityDensity(SMALL_COORDINATE, LARGE_COORDINATE));
+}
+
+TEST(NormalDistribution2DTest, Rotate) {
+    static const float COORDINATES[] = {0.0f, 10.0f, 100.0f, -20.0f};
+    static const float EPSILON = 0.01f;
+    const NormalDistribution2D distribution(ORIGIN_X, LARGE_STANDARD_DEVIATION, ORIGIN_Y,
+            SMALL_STANDARD_DEVIATION, ZERO_RADIAN);
+    const NormalDistribution2D rotatedDistribution(ORIGIN_X, LARGE_STANDARD_DEVIATION, ORIGIN_Y,
+            SMALL_STANDARD_DEVIATION, M_PI_4);
+    for (const float x : COORDINATES) {
+        for (const float y : COORDINATES) {
+            // The probability density of the rotated distribution at the point and the probability
+            // density of the original distribution at the rotated point are the same.
+            const float probabilityDensity0 = distribution.getProbabilityDensity(x, y);
+            const float probabilityDensity1 = rotatedDistribution.getProbabilityDensity(-y, x);
+            EXPECT_NEAR(probabilityDensity0, probabilityDensity1, EPSILON);
+        }
+    }
+}
+
+}  // namespace
+}  // namespace latinime
diff --git a/native/jni/tests/utils/autocorrection_threshold_utils_test.cpp b/native/jni/tests/utils/autocorrection_threshold_utils_test.cpp
new file mode 100644
index 0000000..cc8db70
--- /dev/null
+++ b/native/jni/tests/utils/autocorrection_threshold_utils_test.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "utils/autocorrection_threshold_utils.h"
+
+#include <gtest/gtest.h>
+
+#include <vector>
+
+namespace latinime {
+namespace {
+
+int CalcEditDistance(const std::vector<int> &before,
+        const std::vector<int> &after) {
+    return AutocorrectionThresholdUtils::editDistance(
+            &before[0], before.size(), &after[0], after.size());
+}
+
+TEST(AutocorrectionThresholdUtilsTest, SameData) {
+    EXPECT_EQ(0, CalcEditDistance({1}, {1}));
+    EXPECT_EQ(0, CalcEditDistance({2, 2}, {2, 2}));
+    EXPECT_EQ(0, CalcEditDistance({3, 3, 3}, {3, 3, 3}));
+}
+
+}  // namespace
+}  // namespace latinime
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 09a63c5..4ca846b 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.inputmethod.latin.tests">
 
-    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
 
     <uses-permission android:name="android.permission.READ_CONTACTS" />
 
diff --git a/tests/res/values/donottranslate.xml b/tests/res/values/donottranslate.xml
index 3f7634a..263d0af 100644
--- a/tests/res/values/donottranslate.xml
+++ b/tests/res/values/donottranslate.xml
@@ -58,5 +58,5 @@
     <string name="upper_indirect_string_with_literal">x,!TEXT/MULTIPLE_CHARS,y</string>
     <string name="upper_indirect2_string">!TEXT/UPPER_INDIRECT_STRING</string>
     <string name="upper_infinite_indirection">infinite,!TEXT/INFINITE_INDIRECTION,loop</string>
-    <string name="indirect_navigate_actions_as_more_key">!fixedColumnOrder!2,!text/action_previous_as_more_key,!text/action_next_as_more_key</string>
+    <string name="keyspec_indirect_navigate_actions">!fixedColumnOrder!2,!text/keyspec_action_previous,!text/keyspec_action_next</string>
 </resources>
diff --git a/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java
new file mode 100644
index 0000000..319302c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/compat/LocaleSpanCompatUtilsTests.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.graphics.Typeface;
+import android.os.Build;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.StyleSpan;
+
+import java.util.Locale;
+
+@SmallTest
+public class LocaleSpanCompatUtilsTests extends AndroidTestCase {
+    public void testInstantiatable() {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            // LocaleSpan isn't yet available.
+            return;
+        }
+        assertTrue(LocaleSpanCompatUtils.isLocaleSpanAvailable());
+        final Object japaneseLocaleSpan = LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE);
+        assertNotNull(japaneseLocaleSpan);
+        assertEquals(Locale.JAPANESE,
+                LocaleSpanCompatUtils.getLocaleFromLocaleSpan(japaneseLocaleSpan));
+    }
+
+    private static void assertLocaleSpan(final Spanned spanned, final int index,
+            final int expectedStart, final int expectedEnd,
+            final Locale expectedLocale, final int expectedSpanFlags) {
+        final Object span = spanned.getSpans(0, spanned.length(), Object.class)[index];
+        assertEquals(expectedLocale, LocaleSpanCompatUtils.getLocaleFromLocaleSpan(span));
+        assertEquals(expectedStart, spanned.getSpanStart(span));
+        assertEquals(expectedEnd, spanned.getSpanEnd(span));
+        assertEquals(expectedSpanFlags, spanned.getSpanFlags(span));
+    }
+
+    private static void assertSpanEquals(final Object expectedSpan, final Spanned spanned,
+            final int index) {
+        final Object[] spans = spanned.getSpans(0, spanned.length(), Object.class);
+        assertEquals(expectedSpan, spans[index]);
+    }
+
+    private static void assertSpanCount(final int expectedCount, final Spanned spanned) {
+        final Object[] spans = spanned.getSpans(0, spanned.length(), Object.class);
+        assertEquals(expectedCount, spans.length);
+    }
+
+    public void testUpdateLocaleSpan() {
+        if (!LocaleSpanCompatUtils.isLocaleSpanAvailable()) {
+            return;
+        }
+
+        // Test if the simplest case works.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 1, 5, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 5, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if only LocaleSpans are updated.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            final StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
+            text.setSpan(styleSpan, 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 1, 5, Locale.JAPANESE);
+            assertSpanCount(2, text);
+            assertSpanEquals(styleSpan, text, 0);
+            assertLocaleSpan(text, 1, 1, 5, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if two jointed spans are merged into one span.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 1, 3,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 3, 5, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 5, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if two overlapped spans are merged into one span.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 1, 4,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 3, 5, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 5, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if three overlapped spans are merged into one span.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 1, 4,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 5, 6,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 2, 8, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 8, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if disjoint spans remain disjoint.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 1, 3,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 5, 6,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 8, 9, Locale.JAPANESE);
+            assertSpanCount(3, text);
+            assertLocaleSpan(text, 0, 1, 3, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            assertLocaleSpan(text, 1, 5, 6, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            assertLocaleSpan(text, 2, 8, 9, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if existing span flags are preserved during merge.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 1, 5,
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE | Spannable.SPAN_INTERMEDIATE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 3, 4, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 5, Locale.JAPANESE,
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE | Spannable.SPAN_INTERMEDIATE);
+        }
+
+        // Test if existing span flags are preserved even when partially overlapped (leading edge).
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 1, 5,
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE | Spannable.SPAN_INTERMEDIATE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 3, 7, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 7, Locale.JAPANESE,
+                    Spannable.SPAN_INCLUSIVE_EXCLUSIVE | Spannable.SPAN_INTERMEDIATE);
+        }
+
+        // Test if existing span flags are preserved even when partially overlapped (trailing edge).
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.JAPANESE), 3, 7,
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE | Spannable.SPAN_INTERMEDIATE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 1, 5, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 7, Locale.JAPANESE,
+                    Spannable.SPAN_EXCLUSIVE_INCLUSIVE | Spannable.SPAN_INTERMEDIATE);
+        }
+
+        // Test if existing locale span will be removed when the locale doesn't match.
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.ENGLISH), 3, 5,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 1, 7, Locale.JAPANESE);
+            assertSpanCount(1, text);
+            assertLocaleSpan(text, 0, 1, 7, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if existing locale span will be removed when the locale doesn't match. (case 2)
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.ENGLISH), 3, 7,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 5, 6, Locale.JAPANESE);
+            assertSpanCount(3, text);
+            assertLocaleSpan(text, 0, 3, 5, Locale.ENGLISH, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            assertLocaleSpan(text, 1, 6, 7, Locale.ENGLISH, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            assertLocaleSpan(text, 2, 5, 6, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if existing locale span will be removed when the locale doesn't match. (case 3)
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.ENGLISH), 3, 7,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 2, 5, Locale.JAPANESE);
+            assertSpanCount(2, text);
+            assertLocaleSpan(text, 0, 5, 7, Locale.ENGLISH, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            assertLocaleSpan(text, 1, 2, 5, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+
+        // Test if existing locale span will be removed when the locale doesn't match. (case 3)
+        {
+            final SpannableString text = new SpannableString("0123456789");
+            text.setSpan(LocaleSpanCompatUtils.newLocaleSpan(Locale.ENGLISH), 3, 7,
+                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            LocaleSpanCompatUtils.updateLocaleSpan(text, 5, 8, Locale.JAPANESE);
+            assertSpanCount(2, text);
+            assertLocaleSpan(text, 0, 3, 5, Locale.ENGLISH, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+            assertLocaleSpan(text, 1, 5, 8, Locale.JAPANESE, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java
new file mode 100644
index 0000000..c399cce
--- /dev/null
+++ b/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.compat;
+
+import android.graphics.Typeface;
+import android.os.Parcel;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.TextUtils;
+import android.text.style.StyleSpan;
+import android.text.style.URLSpan;
+import android.view.textservice.TextInfo;
+
+import java.util.Arrays;
+
+@SmallTest
+public class TextInfoCompatUtilsTests extends AndroidTestCase {
+    final private static String TEST_TEXT = "0123456789";
+    final private static int TEST_COOKIE = 0x1234;
+    final private static int TEST_SEQUENCE_NUMBER = 0x4321;
+    final private static int TEST_CHAR_SEQUENCE_START = 1;
+    final private static int TEST_CHAR_SEQUENCE_END = 6;
+    final private static StyleSpan TEST_STYLE_SPAN = new StyleSpan(Typeface.BOLD);
+    final private static int TEST_STYLE_SPAN_START = 4;
+    final private static int TEST_STYLE_SPAN_END = 5;
+    final private static int TEST_STYLE_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_INCLUSIVE;
+    final private static URLSpan TEST_URL_SPAN_URL = new URLSpan("http://example.com");
+    final private static int TEST_URL_SPAN_START = 3;
+    final private static int TEST_URL_SPAN_END = 7;
+    final private static int TEST_URL_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
+
+    public void testGetCharSequence() {
+        final SpannableString text = new SpannableString(TEST_TEXT);
+        text.setSpan(TEST_STYLE_SPAN, TEST_STYLE_SPAN_START, TEST_STYLE_SPAN_END,
+                TEST_STYLE_SPAN_FLAGS);
+        text.setSpan(TEST_URL_SPAN_URL, TEST_URL_SPAN_START, TEST_URL_SPAN_END,
+                TEST_URL_SPAN_FLAGS);
+
+        final TextInfo textInfo = TextInfoCompatUtils.newInstance(text,
+                TEST_CHAR_SEQUENCE_START, TEST_CHAR_SEQUENCE_END, TEST_COOKIE,
+                TEST_SEQUENCE_NUMBER);
+        final Spanned expectedSpanned = (Spanned) text.subSequence(TEST_CHAR_SEQUENCE_START,
+                TEST_CHAR_SEQUENCE_END);
+        final CharSequence actualCharSequence =
+                TextInfoCompatUtils.getCharSequenceOrString(textInfo);
+
+        // This should be valid even if TextInfo#getCharSequence is not supported.
+        assertTrue(TextUtils.equals(expectedSpanned, actualCharSequence));
+
+        if (TextInfoCompatUtils.isCharSequenceSupported()) {
+            // This is valid only if TextInfo#getCharSequence is supported.
+            assertTrue("should be Spanned", actualCharSequence instanceof Spanned);
+            assertTrue(Arrays.equals(marshall(expectedSpanned), marshall(actualCharSequence)));
+        }
+    }
+
+    private static byte[] marshall(final CharSequence cahrSequence) {
+        Parcel parcel = null;
+        try {
+            parcel = Parcel.obtain();
+            TextUtils.writeToParcel(cahrSequence, parcel, 0);
+            return parcel.marshall();
+        } finally {
+            if (parcel != null) {
+                parcel.recycle();
+                parcel = null;
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetActionLabelKlpTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetActionLabelKlpTests.java
new file mode 100644
index 0000000..96f9255
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetActionLabelKlpTests.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.content.res.Resources;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.text.InputType;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.RunInLocale;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+@MediumTest
+public class KeyboardLayoutSetActionLabelKlpTests extends KeyboardLayoutSetTestsBase {
+    @Override
+    protected int getKeyboardThemeForTests() {
+        return KeyboardTheme.THEME_ID_KLP;
+    }
+
+    private static void doTestActionKey(final String tag, final KeyboardLayoutSet layoutSet,
+            final int elementId, final CharSequence label, final int iconId) {
+        final Keyboard keyboard = layoutSet.getKeyboard(elementId);
+        final Key enterKey = keyboard.getKey(Constants.CODE_ENTER);
+        assertNotNull(tag + " enter key on " + keyboard.mId, enterKey);
+        assertEquals(tag + " enter label " + enterKey, label, enterKey.getLabel());
+        assertEquals(tag + " enter icon " + enterKey, iconId, enterKey.getIconId());
+    }
+
+    protected void doTestActionLabel(final String tag, final InputMethodSubtype subtype,
+            final int actionId, final int labelResId) {
+        final EditorInfo editorInfo = new EditorInfo();
+        editorInfo.imeOptions = actionId;
+        final RunInLocale<String> job = new RunInLocale<String>() {
+            @Override
+            protected String job(final Resources res) {
+                return res.getString(labelResId);
+            }
+        };
+        final Resources res = getContext().getResources();
+        final String label;
+        if (subtype.getLocale().equals(SubtypeLocaleUtils.NO_LANGUAGE)) {
+            // Using system locale.
+            label = res.getString(labelResId);
+        } else {
+            label = job.runInLocale(res, SubtypeLocaleUtils.getSubtypeLocale(subtype));
+        }
+        doTestActionLabel(tag, subtype, editorInfo, label);
+    }
+
+    protected void doTestActionLabel(final String tag, final InputMethodSubtype subtype,
+            final EditorInfo editorInfo, final CharSequence label) {
+        // Test text layouts.
+        editorInfo.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
+        final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_ALPHABET,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS_SHIFTED,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+        // Test phone number layouts.
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE_SYMBOLS,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+        // Test normal number layout.
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_NUMBER,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+        // Test number password layouts.
+        editorInfo.inputType =
+                InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD;
+        final KeyboardLayoutSet passwordSet = createKeyboardLayoutSet(subtype, editorInfo);
+        doTestActionKey(tag, passwordSet, KeyboardId.ELEMENT_NUMBER,
+                label, KeyboardIconsSet.ICON_UNDEFINED);
+    }
+
+    protected void doTestActionKeyIcon(final String tag, final InputMethodSubtype subtype,
+            final int actionId, final String iconName) {
+        final int iconId = KeyboardIconsSet.getIconId(iconName);
+        final EditorInfo editorInfo = new EditorInfo();
+        editorInfo.imeOptions = actionId;
+        // Test text layouts.
+        editorInfo.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL;
+        final KeyboardLayoutSet layoutSet = createKeyboardLayoutSet(subtype, editorInfo);
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_ALPHABET, null /* label */, iconId);
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS, null /* label */, iconId);
+        doTestActionKey(
+                tag, layoutSet, KeyboardId.ELEMENT_SYMBOLS_SHIFTED, null /* label */, iconId);
+        // Test phone number layouts.
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_PHONE, null /* label */, iconId);
+        doTestActionKey(
+                tag, layoutSet, KeyboardId.ELEMENT_PHONE_SYMBOLS, null /* label */, iconId);
+        // Test normal number layout.
+        doTestActionKey(tag, layoutSet, KeyboardId.ELEMENT_NUMBER, null /* label */, iconId);
+        // Test number password layout.
+        editorInfo.inputType =
+                InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD;
+        final KeyboardLayoutSet passwordSet = createKeyboardLayoutSet(subtype, editorInfo);
+        doTestActionKey(tag, passwordSet, KeyboardId.ELEMENT_NUMBER, null /* label */, iconId);
+    }
+
+    public void testActionUnspecified() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "unspecifiled "
+                    + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_UNSPECIFIED,
+                    KeyboardIconsSet.NAME_ENTER_KEY);
+        }
+    }
+
+    public void testActionNone() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "none " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_NONE,
+                    KeyboardIconsSet.NAME_ENTER_KEY);
+        }
+    }
+
+    public void testActionGo() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "go " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionLabel(tag, subtype, EditorInfo.IME_ACTION_GO, R.string.label_go_key);
+        }
+    }
+
+    public void testActionSearch() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "search " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_SEARCH,
+                    KeyboardIconsSet.NAME_SEARCH_KEY);
+        }
+    }
+
+    public void testActionSend() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "send " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionLabel(tag, subtype, EditorInfo.IME_ACTION_SEND, R.string.label_send_key);
+        }
+    }
+
+    public void testActionNext() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "next " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionLabel(tag, subtype, EditorInfo.IME_ACTION_NEXT, R.string.label_next_key);
+        }
+    }
+
+    public void testActionDone() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "done " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionLabel(tag, subtype, EditorInfo.IME_ACTION_DONE, R.string.label_done_key);
+        }
+    }
+
+    public void testActionPrevious() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "previous " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionLabel(
+                    tag, subtype, EditorInfo.IME_ACTION_PREVIOUS, R.string.label_previous_key);
+        }
+    }
+
+    public void testActionCustom() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "custom " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            final CharSequence customLabel = "customLabel";
+            final EditorInfo editorInfo = new EditorInfo();
+            editorInfo.imeOptions = EditorInfo.IME_ACTION_UNSPECIFIED;
+            editorInfo.actionLabel = customLabel;
+            doTestActionLabel(tag, subtype, editorInfo, customLabel);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetActionLabelLxxTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetActionLabelLxxTests.java
new file mode 100644
index 0000000..7747ac5
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetActionLabelLxxTests.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.test.suitebuilder.annotation.MediumTest;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+@MediumTest
+public class KeyboardLayoutSetActionLabelLxxTests extends KeyboardLayoutSetActionLabelKlpTests {
+    @Override
+    protected int getKeyboardThemeForTests() {
+        return KeyboardTheme.THEME_ID_LXX_DARK;
+    }
+
+    @Override
+    public void testActionUnspecified() {
+        super.testActionUnspecified();
+    }
+
+    @Override
+    public void testActionNone() {
+        super.testActionNone();
+    }
+
+    @Override
+    public void testActionGo() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "go " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_GO,
+                    KeyboardIconsSet.NAME_GO_KEY);
+        }
+    }
+
+    @Override
+    public void testActionSearch() {
+        super.testActionSearch();
+    }
+
+    @Override
+    public void testActionSend() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "send " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_SEND,
+                    KeyboardIconsSet.NAME_SEND_KEY);
+        }
+    }
+
+    @Override
+    public void testActionNext() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "next " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_NEXT,
+                    KeyboardIconsSet.NAME_NEXT_KEY);
+        }
+    }
+
+    @Override
+    public void testActionDone() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "done " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_DONE,
+                    KeyboardIconsSet.NAME_DONE_KEY);
+        }
+    }
+
+    @Override
+    public void testActionPrevious() {
+        for (final InputMethodSubtype subtype : getAllSubtypesList()) {
+            final String tag = "previous " + SubtypeLocaleUtils.getSubtypeNameForLogging(subtype);
+            doTestActionKeyIcon(tag, subtype, EditorInfo.IME_ACTION_PREVIOUS,
+                    KeyboardIconsSet.NAME_PREVIOUS_KEY);
+        }
+    }
+
+    @Override
+    public void testActionCustom() {
+        super.testActionCustom();
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
new file mode 100644
index 0000000..eb67bc1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+import java.util.ArrayList;
+
+@SmallTest
+public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
+    private static final int NUMBER_OF_SUBTYPES = 77;
+    private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 45;
+    private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
+
+    @Override
+    protected int getKeyboardThemeForTests() {
+        return KeyboardTheme.THEME_ID_KLP;
+    }
+
+    private static String toString(final ArrayList<InputMethodSubtype> subtypeList) {
+        final StringBuilder sb = new StringBuilder();
+        for (int index = 0; index < subtypeList.size(); index++) {
+            final InputMethodSubtype subtype = subtypeList.get(index);
+            sb.append(index + ": ");
+            sb.append(SubtypeLocaleUtils.getSubtypeNameForLogging(subtype));
+            sb.append("\n");
+        }
+        return sb.toString();
+    }
+
+    public final void testAllSubtypesCount() {
+        final ArrayList<InputMethodSubtype> allSubtypesList = getAllSubtypesList();
+        assertEquals(toString(allSubtypesList), NUMBER_OF_SUBTYPES, allSubtypesList.size());
+    }
+
+    public final void testAsciiCapableSubtypesCount() {
+        final ArrayList<InputMethodSubtype> asciiCapableSubtypesList =
+                getAsciiCapableSubtypesList();
+        assertEquals(toString(asciiCapableSubtypesList),
+                NUMBER_OF_ASCII_CAPABLE_SUBTYPES, asciiCapableSubtypesList.size());
+    }
+
+    public final void testAdditionalSubtypesCount() {
+        final ArrayList<InputMethodSubtype> additionalSubtypesList = getAdditionalSubtypesList();
+        assertEquals(toString(additionalSubtypesList),
+                NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES, additionalSubtypesList.size());
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
new file mode 100644
index 0000000..cf884bf
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetTestsBase.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.view.ContextThemeWrapper;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
+import com.android.inputmethod.keyboard.KeyboardLayoutSet.Builder;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.RichInputMethodManager;
+import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
+import com.android.inputmethod.latin.utils.ResourceUtils;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
+    // All input method subtypes of LatinIME.
+    private final ArrayList<InputMethodSubtype> mAllSubtypesList = new ArrayList<>();
+    private final ArrayList<InputMethodSubtype> mAsciiCapableSubtypesList = new ArrayList<>();
+    private final ArrayList<InputMethodSubtype> mAdditionalSubtypesList = new ArrayList<>();
+
+    private Context mThemeContext;
+    private int mScreenMetrics;
+
+    protected abstract int getKeyboardThemeForTests();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mScreenMetrics = mContext.getResources().getInteger(R.integer.config_screen_metrics);
+
+        final KeyboardTheme keyboardTheme = KeyboardTheme.searchKeyboardThemeById(
+                getKeyboardThemeForTests());
+        mThemeContext = new ContextThemeWrapper(mContext, keyboardTheme.mStyleId);
+        RichInputMethodManager.init(mThemeContext);
+        final RichInputMethodManager richImm = RichInputMethodManager.getInstance();
+
+        final InputMethodInfo imi = richImm.getInputMethodInfoOfThisIme();
+        final int subtypeCount = imi.getSubtypeCount();
+        for (int index = 0; index < subtypeCount; index++) {
+            final InputMethodSubtype subtype = imi.getSubtypeAt(index);
+            if (AdditionalSubtypeUtils.isAdditionalSubtype(subtype)) {
+                mAdditionalSubtypesList.add(subtype);
+                continue;
+            }
+            mAllSubtypesList.add(subtype);
+            if (InputMethodSubtypeCompatUtils.isAsciiCapable(subtype)) {
+                mAsciiCapableSubtypesList.add(subtype);
+            }
+        }
+    }
+
+    protected final ArrayList<InputMethodSubtype> getAllSubtypesList() {
+        return mAllSubtypesList;
+    }
+
+    protected final ArrayList<InputMethodSubtype> getAsciiCapableSubtypesList() {
+        return mAsciiCapableSubtypesList;
+    }
+
+    protected final ArrayList<InputMethodSubtype> getAdditionalSubtypesList() {
+        return mAdditionalSubtypesList;
+    }
+
+    protected final boolean isPhone() {
+        return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_PHONE
+                || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_PHONE;
+    }
+
+    protected final InputMethodSubtype getSubtype(final Locale locale,
+            final String keyboardLayout) {
+        for (final InputMethodSubtype subtype : mAllSubtypesList) {
+            final Locale subtypeLocale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
+            final String subtypeLayout = SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype);
+            if (locale.equals(subtypeLocale) && keyboardLayout.equals(subtypeLayout)) {
+                // Found subtype that matches locale and keyboard layout.
+                return subtype;
+            }
+        }
+        for (final InputMethodSubtype subtype : mAsciiCapableSubtypesList) {
+            final Locale subtypeLocale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
+            if (locale.equals(subtypeLocale)) {
+                // Create additional subtype.
+                return AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                        locale.toString(), keyboardLayout);
+            }
+        }
+        throw new RuntimeException(
+                "Unknown subtype: locale=" + locale + " keyboardLayout=" + keyboardLayout);
+    }
+
+    protected final KeyboardLayoutSet createKeyboardLayoutSet(final InputMethodSubtype subtype,
+            final EditorInfo editorInfo) {
+        return createKeyboardLayoutSet(subtype, editorInfo, false /* voiceInputKeyEnabled */,
+                false /* languageSwitchKeyEnabled */);
+    }
+
+    protected final KeyboardLayoutSet createKeyboardLayoutSet(final InputMethodSubtype subtype,
+            final EditorInfo editorInfo, final boolean voiceInputKeyEnabled,
+            final boolean languageSwitchKeyEnabled) {
+        final Context context = mThemeContext;
+        final Resources res = context.getResources();
+        final int keyboardWidth = ResourceUtils.getDefaultKeyboardWidth(res);
+        final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
+        final Builder builder = new Builder(context, editorInfo);
+        builder.setKeyboardGeometry(keyboardWidth, keyboardHeight)
+                .setSubtype(subtype)
+                .setVoiceInputKeyEnabled(voiceInputKeyEnabled)
+                .setLanguageSwitchKeyEnabled(languageSwitchKeyEnabled);
+        return builder.build();
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
new file mode 100644
index 0000000..0c7e400
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_ICS;
+import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_KLP;
+import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_DARK;
+import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_LIGHT;
+
+import android.content.SharedPreferences;
+import android.os.Build.VERSION_CODES;
+import android.preference.PreferenceManager;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class KeyboardThemeTests extends AndroidTestCase {
+    private SharedPreferences mPrefs;
+
+    // TODO: Remove this constant once the *next* version becomes available.
+    private static final int VERSION_CODES_LXX = VERSION_CODES.CUR_DEVELOPMENT;
+
+    private static final int THEME_ID_NULL = -1;
+    private static final int THEME_ID_UNKNOWN = -2;
+    private static final int THEME_ID_ILLEGAL = -3;
+    private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption";
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+    }
+
+    /*
+     * Helper functions.
+     */
+
+    private static boolean isValidKeyboardThemeId(final int themeId) {
+        switch (themeId) {
+        case THEME_ID_ICS:
+        case THEME_ID_KLP:
+        case THEME_ID_LXX_LIGHT:
+        case THEME_ID_LXX_DARK:
+            return true;
+        default:
+            return false;
+        }
+    }
+
+    private void setKeyboardThemePreference(final String prefKey, final int themeId) {
+        final String themeIdString = Integer.toString(themeId);
+        if (isValidKeyboardThemeId(themeId) || themeId == THEME_ID_UNKNOWN) {
+            // Set valid theme id to preference.
+            mPrefs.edit().putString(prefKey, themeIdString).apply();
+            return;
+        }
+        if (themeId == THEME_ID_NULL) {
+            // Simulate undefined preference.
+            mPrefs.edit().remove(prefKey).apply();
+            return;
+        }
+        // themeId == THEME_ID_ILLEGAL
+        // Simulate illegal format theme id in preference.
+        mPrefs.edit().putString(prefKey, ILLEGAL_THEME_ID_STRING).apply();
+    }
+
+    private void assertKeyboardTheme(final int sdkVersion, final int expectedThemeId) {
+        assertEquals(expectedThemeId, KeyboardTheme.getKeyboardTheme(mPrefs, sdkVersion).mThemeId);
+    }
+
+    /*
+     * Test keyboard theme preference on the same platform version and the same keyboard version.
+     */
+
+    private void assertKeyboardThemePreference(final int sdkVersion, final int previousThemeId,
+            final int expectedThemeId) {
+        // Clear preferences before testing.
+        setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL);
+        setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL);
+        // Set the preference of the sdkVersion to previousThemeId.
+        final String prefKey = KeyboardTheme.getPreferenceKey(sdkVersion);
+        setKeyboardThemePreference(prefKey, previousThemeId);
+        assertKeyboardTheme(sdkVersion, expectedThemeId);
+    }
+
+    private void assertKeyboardThemePreferenceOnKlp(final int sdkVersion) {
+        final int defaultThemeId = THEME_ID_KLP;
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
+    }
+
+    public void testKeyboardThemePreferenceOnKlp() {
+        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN);
+        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN_MR1);
+        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.JELLY_BEAN_MR2);
+        assertKeyboardThemePreferenceOnKlp(VERSION_CODES.KITKAT);
+    }
+
+    private void assertKeyboardThemePreferenceOnLxx(final int sdkVersion) {
+        final int defaultThemeId = THEME_ID_LXX_LIGHT;
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId);
+        assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId);
+    }
+
+    public void testKeyboardThemePreferenceOnLxx() {
+        assertKeyboardThemePreferenceOnLxx(VERSION_CODES_LXX);
+    }
+
+    /*
+     * Test default keyboard theme based on the platform version.
+     */
+
+    private void assertDefaultKeyboardTheme(final int sdkVersion, final int previousThemeId,
+            final int expectedThemeId) {
+        final String oldPrefKey = KeyboardTheme.KLP_KEYBOARD_THEME_KEY;
+        setKeyboardThemePreference(oldPrefKey, previousThemeId);
+
+        final KeyboardTheme defaultTheme =
+                KeyboardTheme.getDefaultKeyboardTheme(mPrefs, sdkVersion);
+
+        assertNotNull(defaultTheme);
+        assertEquals(expectedThemeId, defaultTheme.mThemeId);
+        if (sdkVersion <= VERSION_CODES.KITKAT) {
+            // Old preference must be retained if it is valid. Otherwise it must be pruned.
+            assertEquals(isValidKeyboardThemeId(previousThemeId), mPrefs.contains(oldPrefKey));
+            return;
+        }
+        // Old preference must be removed.
+        assertFalse(mPrefs.contains(oldPrefKey));
+    }
+
+    private void assertDefaultKeyboardThemeOnKlp(final int sdkVersion) {
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_KLP);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_KLP);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP);
+    }
+
+    public void testDefaultKeyboardThemeOnKlp() {
+        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN);
+        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN_MR1);
+        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.JELLY_BEAN_MR2);
+        assertDefaultKeyboardThemeOnKlp(VERSION_CODES.KITKAT);
+    }
+
+    private void assertDefaultKeyboardThemeOnLxx(final int sdkVersion) {
+        // Forced to switch to LXX theme.
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
+        assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
+    }
+
+    public void testDefaultKeyboardThemeOnLxx() {
+        assertDefaultKeyboardThemeOnLxx(VERSION_CODES_LXX);
+    }
+
+    /*
+     * Test keyboard theme preference while upgrading the keyboard that doesn't support LXX theme
+     * to the keyboard that supports LXX theme.
+     */
+
+    private void assertUpgradeKeyboardToLxxOn(final int sdkVersion, final int previousThemeId,
+            final int expectedThemeId) {
+        setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, previousThemeId);
+        // Clean up new keyboard theme preference to simulate "upgrade to LXX keyboard".
+        setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL);
+
+        final KeyboardTheme theme = KeyboardTheme.getKeyboardTheme(mPrefs, sdkVersion);
+
+        assertNotNull(theme);
+        assertEquals(expectedThemeId, theme.mThemeId);
+        if (sdkVersion <= VERSION_CODES.KITKAT) {
+            // New preference must not exist.
+            assertFalse(mPrefs.contains(KeyboardTheme.LXX_KEYBOARD_THEME_KEY));
+            // Old preference must be retained if it is valid. Otherwise it must be pruned.
+            assertEquals(isValidKeyboardThemeId(previousThemeId),
+                    mPrefs.contains(KeyboardTheme.KLP_KEYBOARD_THEME_KEY));
+            if (isValidKeyboardThemeId(previousThemeId)) {
+                // Old preference must have an expected value.
+                assertEquals(mPrefs.getString(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, null),
+                        Integer.toString(expectedThemeId));
+            }
+            return;
+        }
+        // Old preference must be removed.
+        assertFalse(mPrefs.contains(KeyboardTheme.KLP_KEYBOARD_THEME_KEY));
+        // New preference must not exist.
+        assertFalse(mPrefs.contains(KeyboardTheme.LXX_KEYBOARD_THEME_KEY));
+    }
+
+    private void assertUpgradeKeyboardToLxxOnKlp(final int sdkVersion) {
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_KLP);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_KLP);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP);
+    }
+
+    // Upgrading keyboard on I,J and K.
+    public void testUpgradeKeyboardToLxxOnKlp() {
+        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN);
+        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN_MR1);
+        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.JELLY_BEAN_MR2);
+        assertUpgradeKeyboardToLxxOnKlp(VERSION_CODES.KITKAT);
+    }
+
+    private void assertUpgradeKeyboardToLxxOnLxx(final int sdkVersion) {
+        // Forced to switch to LXX theme.
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
+        assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
+    }
+
+    // Upgrading keyboard on L.
+    public void testUpgradeKeyboardToLxxOnLxx() {
+        assertUpgradeKeyboardToLxxOnLxx(VERSION_CODES_LXX);
+    }
+
+    /*
+     * Test keyboard theme preference while upgrading platform version.
+     */
+
+    private void assertUpgradePlatformFromTo(final int oldSdkVersion, final int newSdkVersion,
+            final int previousThemeId, final int expectedThemeId) {
+        if (newSdkVersion < oldSdkVersion) {
+            // No need to test.
+            return;
+        }
+        // Clean up preferences.
+        setKeyboardThemePreference(KeyboardTheme.KLP_KEYBOARD_THEME_KEY, THEME_ID_NULL);
+        setKeyboardThemePreference(KeyboardTheme.LXX_KEYBOARD_THEME_KEY, THEME_ID_NULL);
+
+        final String oldPrefKey = KeyboardTheme.getPreferenceKey(oldSdkVersion);
+        setKeyboardThemePreference(oldPrefKey, previousThemeId);
+
+        assertKeyboardTheme(newSdkVersion, expectedThemeId);
+    }
+
+    private void assertUpgradePlatformFromKlpToKlp(final int oldSdkVersion,
+            final int newSdkVersion) {
+        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_KLP);
+        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_KLP);
+        assertUpgradePlatformFromTo(oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_KLP);
+    }
+
+    private void assertUpgradePlatformToKlpFrom(final int oldSdkVersion) {
+        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN);
+        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN_MR1);
+        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.JELLY_BEAN_MR2);
+        assertUpgradePlatformFromKlpToKlp(oldSdkVersion, VERSION_CODES.KITKAT);
+    }
+
+    // Update platform from I,J, and K to I,J, and K
+    public void testUpgradePlatformToKlpFromKlp() {
+        assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertUpgradePlatformToKlpFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+        assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN);
+        assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN_MR1);
+        assertUpgradePlatformToKlpFrom(VERSION_CODES.JELLY_BEAN_MR2);
+        assertUpgradePlatformToKlpFrom(VERSION_CODES.KITKAT);
+    }
+
+    private void assertUpgradePlatformToLxxFrom(final int oldSdkVersion) {
+        // Forced to switch to LXX theme.
+        final int newSdkVersion = VERSION_CODES_LXX;
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
+    }
+
+    // Update platform from I,J, and K to L
+    public void testUpgradePlatformToLxx() {
+        assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH);
+        assertUpgradePlatformToLxxFrom(VERSION_CODES.ICE_CREAM_SANDWICH_MR1);
+        assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN);
+        assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN_MR1);
+        assertUpgradePlatformToLxxFrom(VERSION_CODES.JELLY_BEAN_MR2);
+        assertUpgradePlatformToLxxFrom(VERSION_CODES.KITKAT);
+    }
+
+    // Update platform from L to L.
+    public void testUpgradePlatformToLxxFromLxx() {
+        final int oldSdkVersion = VERSION_CODES_LXX;
+        final int newSdkVersion = VERSION_CODES_LXX;
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT);
+        assertUpgradePlatformFromTo(
+                oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserSplitTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserSplitTests.java
deleted file mode 100644
index 2eb448c..0000000
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserSplitTests.java
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.keyboard.internal;
-
-import android.app.Instrumentation;
-import android.content.Context;
-import android.content.res.Resources;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.RunInLocale;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Locale;
-
-@MediumTest
-public class KeySpecParserSplitTests extends InstrumentationTestCase {
-    private static final Locale TEST_LOCALE = Locale.ENGLISH;
-    final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        final Instrumentation instrumentation = getInstrumentation();
-        final Context targetContext = instrumentation.getTargetContext();
-        mTextsSet.setLanguage(TEST_LOCALE.getLanguage());
-        new RunInLocale<Void>() {
-            @Override
-            protected Void job(final Resources res) {
-                mTextsSet.loadStringResources(targetContext);
-                return null;
-            }
-        }.runInLocale(targetContext.getResources(), TEST_LOCALE);
-        final String[] testResourceNames = getAllResourceIdNames(
-                com.android.inputmethod.latin.tests.R.string.class);
-        mTextsSet.loadStringResourcesInternal(instrumentation.getContext(), testResourceNames,
-                // This dummy raw resource is needed to be able to load string resources from a test
-                // APK successfully.
-                com.android.inputmethod.latin.tests.R.raw.dummy_resource_for_testing);
-    }
-
-    private static String[] getAllResourceIdNames(final Class<?> resourceIdClass) {
-        final ArrayList<String> names = CollectionUtils.newArrayList();
-        for (final Field field : resourceIdClass.getFields()) {
-            if (field.getType() == Integer.TYPE) {
-                names.add(field.getName());
-            }
-        }
-        return names.toArray(new String[names.size()]);
-    }
-
-    private static <T> void assertArrayEquals(final String message, final T[] expected,
-            final T[] actual) {
-        if (expected == actual) {
-            return;
-        }
-        if (expected == null || actual == null) {
-            assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
-            return;
-        }
-        if (expected.length != actual.length) {
-            assertEquals(message + " [length]", Arrays.toString(expected), Arrays.toString(actual));
-            return;
-        }
-        for (int i = 0; i < expected.length; i++) {
-            final T e = expected[i];
-            final T a = actual[i];
-            if (e == a) {
-                continue;
-            }
-            assertEquals(message + " [" + i + "]", e, a);
-        }
-    }
-
-    private void assertTextArray(final String message, final String value,
-            final String ... expectedArray) {
-        final String resolvedActual = KeySpecParser.resolveTextReference(value, mTextsSet);
-        final String[] actual = KeySpecParser.splitKeySpecs(resolvedActual);
-        final String[] expected = (expectedArray.length == 0) ? null : expectedArray;
-        assertArrayEquals(message, expected, actual);
-    }
-
-    private void assertError(final String message, final String value, final String ... expected) {
-        try {
-            assertTextArray(message, value, expected);
-            fail(message);
-        } catch (Exception pcpe) {
-            // success.
-        }
-    }
-
-    // \U001d11e: MUSICAL SYMBOL G CLEF
-    private static final String PAIR1 = "\ud834\udd1e";
-    // \U001d122: MUSICAL SYMBOL F CLEF
-    private static final String PAIR2 = "\ud834\udd22";
-    // \U002f8a6: CJK COMPATIBILITY IDEOGRAPH-2F8A6; variant character of \u6148.
-    private static final String PAIR3 = "\ud87e\udca6";
-    private static final String SURROGATE1 = PAIR1 + PAIR2;
-    private static final String SURROGATE2 = PAIR1 + PAIR2 + PAIR3;
-
-    public void testSplitZero() {
-        assertTextArray("Empty string", "");
-        assertTextArray("Empty entry", ",");
-        assertTextArray("Empty entry at beginning", ",a", "a");
-        assertTextArray("Empty entry at end", "a,", "a");
-        assertTextArray("Empty entry at middle", "a,,b", "a", "b");
-        assertTextArray("Empty entries with escape", ",a,b\\,c,,d,", "a", "b\\,c", "d");
-    }
-
-    public void testSplitSingle() {
-        assertTextArray("Single char", "a", "a");
-        assertTextArray("Surrogate pair", PAIR1, PAIR1);
-        assertTextArray("Single escape", "\\", "\\");
-        assertTextArray("Space", " ", " ");
-        assertTextArray("Single label", "abc", "abc");
-        assertTextArray("Single surrogate pairs label", SURROGATE2, SURROGATE2);
-        assertTextArray("Spaces", "   ", "   ");
-        assertTextArray("Spaces in label", "a b c", "a b c");
-        assertTextArray("Spaces at beginning of label", " abc", " abc");
-        assertTextArray("Spaces at end of label", "abc ", "abc ");
-        assertTextArray("Label surrounded by spaces", " abc ", " abc ");
-        assertTextArray("Surrogate pair surrounded by space",
-                " " + PAIR1 + " ",
-                " " + PAIR1 + " ");
-        assertTextArray("Surrogate pair within characters",
-                "ab" + PAIR2 + "cd",
-                "ab" + PAIR2 + "cd");
-        assertTextArray("Surrogate pairs within characters",
-                "ab" + SURROGATE1 + "cd",
-                "ab" + SURROGATE1 + "cd");
-
-        assertTextArray("Incomplete resource reference 1", "text", "text");
-        assertTextArray("Incomplete resource reference 2", "!text", "!text");
-        assertTextArray("Incomplete RESOURCE REFERENCE 2", "!TEXT", "!TEXT");
-        assertTextArray("Incomplete resource reference 3", "text/", "text/");
-        assertTextArray("Incomplete resource reference 4", "!" + SURROGATE2, "!" + SURROGATE2);
-    }
-
-    public void testSplitSingleEscaped() {
-        assertTextArray("Escaped char", "\\a", "\\a");
-        assertTextArray("Escaped surrogate pair", "\\" + PAIR1, "\\" + PAIR1);
-        assertTextArray("Escaped comma", "\\,", "\\,");
-        assertTextArray("Escaped comma escape", "a\\,\\", "a\\,\\");
-        assertTextArray("Escaped escape", "\\\\", "\\\\");
-        assertTextArray("Escaped label", "a\\bc", "a\\bc");
-        assertTextArray("Escaped surrogate", "a\\" + PAIR1 + "c", "a\\" + PAIR1 + "c");
-        assertTextArray("Escaped label at beginning", "\\abc", "\\abc");
-        assertTextArray("Escaped surrogate at beginning", "\\" + SURROGATE2, "\\" + SURROGATE2);
-        assertTextArray("Escaped label at end", "abc\\", "abc\\");
-        assertTextArray("Escaped surrogate at end", SURROGATE2 + "\\", SURROGATE2 + "\\");
-        assertTextArray("Escaped label with comma", "a\\,c", "a\\,c");
-        assertTextArray("Escaped surrogate with comma",
-                PAIR1 + "\\," + PAIR2, PAIR1 + "\\," + PAIR2);
-        assertTextArray("Escaped label with comma at beginning", "\\,bc", "\\,bc");
-        assertTextArray("Escaped surrogate with comma at beginning",
-                "\\," + SURROGATE1, "\\," + SURROGATE1);
-        assertTextArray("Escaped label with comma at end", "ab\\,", "ab\\,");
-        assertTextArray("Escaped surrogate with comma at end",
-                SURROGATE2 + "\\,", SURROGATE2 + "\\,");
-        assertTextArray("Escaped label with successive", "\\,\\\\bc", "\\,\\\\bc");
-        assertTextArray("Escaped surrogate with successive",
-                "\\,\\\\" + SURROGATE1, "\\,\\\\" + SURROGATE1);
-        assertTextArray("Escaped label with escape", "a\\\\c", "a\\\\c");
-        assertTextArray("Escaped surrogate with escape",
-                PAIR1 + "\\\\" + PAIR2, PAIR1 + "\\\\" + PAIR2);
-
-        assertTextArray("Escaped !text", "\\!text", "\\!text");
-        assertTextArray("Escaped !text/", "\\!text/", "\\!text/");
-        assertTextArray("Escaped !TEXT/", "\\!TEXT/", "\\!TEXT/");
-        assertTextArray("Escaped !text/name", "\\!text/empty_string", "\\!text/empty_string");
-        assertTextArray("Escaped !TEXT/NAME", "\\!TEXT/EMPTY_STRING", "\\!TEXT/EMPTY_STRING");
-    }
-
-    public void testSplitMulti() {
-        assertTextArray("Multiple chars", "a,b,c", "a", "b", "c");
-        assertTextArray("Multiple chars", "a,b,\\c", "a", "b", "\\c");
-        assertTextArray("Multiple chars and escape at beginning and end",
-                "\\a,b,\\c\\", "\\a", "b", "\\c\\");
-        assertTextArray("Multiple surrogates", PAIR1 + "," + PAIR2 + "," + PAIR3,
-                PAIR1, PAIR2, PAIR3);
-        assertTextArray("Multiple chars surrounded by spaces", " a , b , c ", " a ", " b ", " c ");
-        assertTextArray("Multiple labels", "abc,def,ghi", "abc", "def", "ghi");
-        assertTextArray("Multiple surrogated", SURROGATE1 + "," + SURROGATE2,
-                SURROGATE1, SURROGATE2);
-        assertTextArray("Multiple labels surrounded by spaces", " abc , def , ghi ",
-                " abc ", " def ", " ghi ");
-    }
-
-    public void testSplitMultiEscaped() {
-        assertTextArray("Multiple chars with comma", "a,\\,,c", "a", "\\,", "c");
-        assertTextArray("Multiple chars with comma surrounded by spaces", " a , \\, , c ",
-                " a ", " \\, ", " c ");
-        assertTextArray("Multiple labels with escape",
-                "\\abc,d\\ef,gh\\i", "\\abc", "d\\ef", "gh\\i");
-        assertTextArray("Multiple labels with escape surrounded by spaces",
-                " \\abc , d\\ef , gh\\i ", " \\abc ", " d\\ef ", " gh\\i ");
-        assertTextArray("Multiple labels with comma and escape",
-                "ab\\\\,d\\\\\\,,g\\,i", "ab\\\\", "d\\\\\\,", "g\\,i");
-        assertTextArray("Multiple labels with comma and escape surrounded by spaces",
-                " ab\\\\ , d\\\\\\, , g\\,i ", " ab\\\\ ", " d\\\\\\, ", " g\\,i ");
-
-        assertTextArray("Multiple escaped !text", "\\!,\\!text/empty_string",
-                "\\!", "\\!text/empty_string");
-        assertTextArray("Multiple escaped !TEXT", "\\!,\\!TEXT/EMPTY_STRING",
-                "\\!", "\\!TEXT/EMPTY_STRING");
-    }
-
-    public void testSplitResourceError() {
-        assertError("Incomplete resource name", "!text/", "!text/");
-        assertError("Non existing resource", "!text/non_existing");
-    }
-
-    public void testSplitResourceZero() {
-        assertTextArray("Empty string",
-                "!text/empty_string");
-    }
-
-    public void testSplitResourceSingle() {
-        assertTextArray("Single char",
-                "!text/single_char", "a");
-        assertTextArray("Space",
-                "!text/space", " ");
-        assertTextArray("Single label",
-                "!text/single_label", "abc");
-        assertTextArray("Spaces",
-                "!text/spaces", "   ");
-        assertTextArray("Spaces in label",
-                "!text/spaces_in_label", "a b c");
-        assertTextArray("Spaces at beginning of label",
-                "!text/spaces_at_beginning_of_label", " abc");
-        assertTextArray("Spaces at end of label",
-                "!text/spaces_at_end_of_label", "abc ");
-        assertTextArray("label surrounded by spaces",
-                "!text/label_surrounded_by_spaces", " abc ");
-
-        assertTextArray("Escape and single char",
-                "\\\\!text/single_char", "\\\\a");
-    }
-
-    public void testSplitResourceSingleEscaped() {
-        assertTextArray("Escaped char",
-                "!text/escaped_char", "\\a");
-        assertTextArray("Escaped comma",
-                "!text/escaped_comma", "\\,");
-        assertTextArray("Escaped comma escape",
-                "!text/escaped_comma_escape", "a\\,\\");
-        assertTextArray("Escaped escape",
-                "!text/escaped_escape", "\\\\");
-        assertTextArray("Escaped label",
-                "!text/escaped_label", "a\\bc");
-        assertTextArray("Escaped label at beginning",
-                "!text/escaped_label_at_beginning", "\\abc");
-        assertTextArray("Escaped label at end",
-                "!text/escaped_label_at_end", "abc\\");
-        assertTextArray("Escaped label with comma",
-                "!text/escaped_label_with_comma", "a\\,c");
-        assertTextArray("Escaped label with comma at beginning",
-                "!text/escaped_label_with_comma_at_beginning", "\\,bc");
-        assertTextArray("Escaped label with comma at end",
-                "!text/escaped_label_with_comma_at_end", "ab\\,");
-        assertTextArray("Escaped label with successive",
-                "!text/escaped_label_with_successive", "\\,\\\\bc");
-        assertTextArray("Escaped label with escape",
-                "!text/escaped_label_with_escape", "a\\\\c");
-    }
-
-    public void testSplitResourceMulti() {
-        assertTextArray("Multiple chars",
-                "!text/multiple_chars", "a", "b", "c");
-        assertTextArray("Multiple chars surrounded by spaces",
-                "!text/multiple_chars_surrounded_by_spaces",
-                " a ", " b ", " c ");
-        assertTextArray("Multiple labels",
-                "!text/multiple_labels", "abc", "def", "ghi");
-        assertTextArray("Multiple labels surrounded by spaces",
-                "!text/multiple_labels_surrounded_by_spaces", " abc ", " def ", " ghi ");
-    }
-
-    public void testSplitResourcetMultiEscaped() {
-        assertTextArray("Multiple chars with comma",
-                "!text/multiple_chars_with_comma",
-                "a", "\\,", "c");
-        assertTextArray("Multiple chars with comma surrounded by spaces",
-                "!text/multiple_chars_with_comma_surrounded_by_spaces",
-                " a ", " \\, ", " c ");
-        assertTextArray("Multiple labels with escape",
-                "!text/multiple_labels_with_escape",
-                "\\abc", "d\\ef", "gh\\i");
-        assertTextArray("Multiple labels with escape surrounded by spaces",
-                "!text/multiple_labels_with_escape_surrounded_by_spaces",
-                " \\abc ", " d\\ef ", " gh\\i ");
-        assertTextArray("Multiple labels with comma and escape",
-                "!text/multiple_labels_with_comma_and_escape",
-                "ab\\\\", "d\\\\\\,", "g\\,i");
-        assertTextArray("Multiple labels with comma and escape surrounded by spaces",
-                "!text/multiple_labels_with_comma_and_escape_surrounded_by_spaces",
-                " ab\\\\ ", " d\\\\\\, ", " g\\,i ");
-    }
-
-    public void testSplitMultipleResources() {
-        assertTextArray("Literals and resources",
-                "1,!text/multiple_chars,z", "1", "a", "b", "c", "z");
-        assertTextArray("Literals and resources and escape at end",
-                "\\1,!text/multiple_chars,z\\", "\\1", "a", "b", "c", "z\\");
-        assertTextArray("Multiple single resource chars and labels",
-                "!text/single_char,!text/single_label,!text/escaped_comma",
-                "a", "abc", "\\,");
-        assertTextArray("Multiple single resource chars and labels 2",
-                "!text/single_char,!text/single_label,!text/escaped_comma_escape",
-                "a", "abc", "a\\,\\");
-        assertTextArray("Multiple multiple resource chars and labels",
-                "!text/multiple_chars,!text/multiple_labels,!text/multiple_chars_with_comma",
-                "a", "b", "c", "abc", "def", "ghi", "a", "\\,", "c");
-        assertTextArray("Concatenated resources",
-                "!text/multiple_chars!text/multiple_labels!text/multiple_chars_with_comma",
-                "a", "b", "cabc", "def", "ghia", "\\,", "c");
-        assertTextArray("Concatenated resource and literal",
-                "abc!text/multiple_labels",
-                "abcabc", "def", "ghi");
-    }
-
-    public void testSplitIndirectReference() {
-        assertTextArray("Indirect",
-                "!text/indirect_string", "a", "b", "c");
-        assertTextArray("Indirect with literal",
-                "1,!text/indirect_string_with_literal,2", "1", "x", "a", "b", "c", "y", "2");
-        assertTextArray("Indirect2",
-                "!text/indirect2_string", "a", "b", "c");
-    }
-
-    public void testSplitInfiniteIndirectReference() {
-        assertError("Infinite indirection",
-                "1,!text/infinite_indirection,2", "1", "infinite", "<infinite>", "loop", "2");
-    }
-
-    public void testLabelReferece() {
-        assertTextArray("Label time am", "!text/label_time_am", "AM");
-
-        assertTextArray("More keys for am pm", "!text/more_keys_for_am_pm",
-                "!fixedColumnOrder!2", "!hasLabels!", "AM", "PM");
-
-        assertTextArray("Settings as more key", "!text/settings_as_more_key",
-                "!icon/settings_key|!code/key_settings");
-
-        assertTextArray("Indirect naviagte actions as more key",
-                "!text/indirect_navigate_actions_as_more_key",
-                "!fixedColumnOrder!2",
-                "!hasLabels!", "Prev|!code/key_action_previous",
-                "!hasLabels!", "Next|!code/key_action_next");
-    }
-
-    public void testUselessUpperCaseSpecifier() {
-        assertTextArray("EMPTY STRING",
-                "!TEXT/EMPTY_STRING", "!TEXT/EMPTY_STRING");
-
-        assertTextArray("SINGLE CHAR",
-                "!TEXT/SINGLE_CHAR", "!TEXT/SINGLE_CHAR");
-        assertTextArray("Escape and SINGLE CHAR",
-                "\\\\!TEXT/SINGLE_CHAR", "\\\\!TEXT/SINGLE_CHAR");
-
-        assertTextArray("MULTIPLE CHARS",
-                "!TEXT/MULTIPLE_CHARS", "!TEXT/MULTIPLE_CHARS");
-
-        assertTextArray("Literals and RESOURCES",
-                "1,!TEXT/MULTIPLE_CHARS,z", "1", "!TEXT/MULTIPLE_CHARS", "z");
-        assertTextArray("Multiple single RESOURCE chars and LABELS 2",
-                "!TEXT/SINGLE_CHAR,!TEXT/SINGLE_LABEL,!TEXT/ESCAPED_COMMA_ESCAPE",
-                "!TEXT/SINGLE_CHAR", "!TEXT/SINGLE_LABEL", "!TEXT/ESCAPED_COMMA_ESCAPE");
-
-        assertTextArray("INDIRECT",
-                "!TEXT/INDIRECT_STRING", "!TEXT/INDIRECT_STRING");
-        assertTextArray("INDIRECT with literal",
-                "1,!TEXT/INDIRECT_STRING_WITH_LITERAL,2",
-                "1", "!TEXT/INDIRECT_STRING_WITH_LITERAL", "2");
-        assertTextArray("INDIRECT2",
-                "!TEXT/INDIRECT2_STRING", "!TEXT/INDIRECT2_STRING");
-
-        assertTextArray("Upper indirect",
-                "!text/upper_indirect_string", "!TEXT/MULTIPLE_CHARS");
-        assertTextArray("Upper indirect with literal",
-                "1,!text/upper_indirect_string_with_literal,2",
-                "1", "x", "!TEXT/MULTIPLE_CHARS", "y", "2");
-        assertTextArray("Upper indirect2",
-                "!text/upper_indirect2_string", "!TEXT/UPPER_INDIRECT_STRING");
-
-        assertTextArray("UPPER INDIRECT",
-                "!TEXT/upper_INDIRECT_STRING", "!TEXT/upper_INDIRECT_STRING");
-        assertTextArray("Upper INDIRECT with literal",
-                "1,!TEXT/upper_INDIRECT_STRING_WITH_LITERAL,2",
-                "1", "!TEXT/upper_INDIRECT_STRING_WITH_LITERAL", "2");
-        assertTextArray("Upper INDIRECT2",
-                "!TEXT/upper_INDIRECT2_STRING", "!TEXT/upper_INDIRECT2_STRING");
-
-        assertTextArray("INFINITE INDIRECTION",
-                "1,!TEXT/INFINITE_INDIRECTION,2", "1", "!TEXT/INFINITE_INDIRECTION", "2");
-
-        assertTextArray("Upper infinite indirection",
-                "1,!text/upper_infinite_indirection,2",
-                "1", "infinite", "!TEXT/INFINITE_INDIRECTION", "loop", "2");
-        assertTextArray("Upper INFINITE INDIRECTION",
-                "1,!TEXT/UPPER_INFINITE_INDIRECTION,2",
-                "1", "!TEXT/UPPER_INFINITE_INDIRECTION", "2");
-
-        assertTextArray("LABEL TIME AM", "!TEXT/LABEL_TIME_AM", "!TEXT/LABEL_TIME_AM");
-        assertTextArray("MORE KEYS FOR AM OM", "!TEXT/MORE_KEYS_FOR_AM_PM",
-                "!TEXT/MORE_KEYS_FOR_AM_PM");
-        assertTextArray("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY",
-                "!TEXT/SETTINGS_AS_MORE_KEY");
-        assertTextArray("INDIRECT NAVIGATE ACTIONS AS MORE KEY",
-                "!TEXT/INDIRECT_NAVIGATE_ACTIONS_AS_MORE_KEY",
-                "!TEXT/INDIRECT_NAVIGATE_ACTIONS_AS_MORE_KEY");
-     }
-}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
index afb2b03..8e26e7f 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2014 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,643 +17,39 @@
 package com.android.inputmethod.keyboard.internal;
 
 import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED;
-import static com.android.inputmethod.latin.Constants.CODE_OUTPUT_TEXT;
 import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
 
-import android.content.Context;
-import android.content.res.Resources;
-import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.inputmethod.latin.Constants;
-import com.android.inputmethod.latin.utils.RunInLocale;
-
-import java.util.Arrays;
-import java.util.Locale;
 
 @SmallTest
-public class KeySpecParserTests extends AndroidTestCase {
-    private final static Locale TEST_LOCALE = Locale.ENGLISH;
-    final KeyboardCodesSet mCodesSet = new KeyboardCodesSet();
-    final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
-
-    private static final String CODE_SETTINGS = "!code/key_settings";
-    private static final String ICON_SETTINGS = "!icon/settings_key";
-    private static final String CODE_SETTINGS_UPPERCASE = CODE_SETTINGS.toUpperCase(Locale.ROOT);
-    private static final String ICON_SETTINGS_UPPERCASE = ICON_SETTINGS.toUpperCase(Locale.ROOT);
-    private static final String CODE_NON_EXISTING = "!code/non_existing";
-    private static final String ICON_NON_EXISTING = "!icon/non_existing";
-
-    private int mCodeSettings;
-    private int mCodeActionNext;
-    private int mSettingsIconId;
-
+public final class KeySpecParserTests extends KeySpecParserTestsBase {
     @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        final String language = TEST_LOCALE.getLanguage();
-        mCodesSet.setLanguage(language);
-        mTextsSet.setLanguage(language);
-        final Context context = getContext();
-        new RunInLocale<Void>() {
-            @Override
-            protected Void job(final Resources res) {
-                mTextsSet.loadStringResources(context);
-                return null;
-            }
-        }.runInLocale(context.getResources(), TEST_LOCALE);
-
-        mCodeSettings = KeySpecParser.parseCode(
-                CODE_SETTINGS, mCodesSet, CODE_UNSPECIFIED);
-        mCodeActionNext = KeySpecParser.parseCode(
-                "!code/key_action_next", mCodesSet, CODE_UNSPECIFIED);
-        mSettingsIconId = KeySpecParser.getIconId(ICON_SETTINGS);
-    }
-
-    private void assertParser(String message, String moreKeySpec, String expectedLabel,
-            String expectedOutputText, int expectedIcon, int expectedCode) {
-        final String labelResolved = KeySpecParser.resolveTextReference(moreKeySpec, mTextsSet);
-        final MoreKeySpec spec = new MoreKeySpec(labelResolved, false /* needsToUpperCase */,
-                Locale.US, mCodesSet);
-        assertEquals(message + " [label]", expectedLabel, spec.mLabel);
-        assertEquals(message + " [ouptputText]", expectedOutputText, spec.mOutputText);
+    protected void assertParser(final String message, final String keySpec,
+            final String expectedLabel, final String expectedOutputText, final int expectedIcon,
+            final int expectedCode) {
+        final String keySpecResolved = mTextsSet.resolveTextReference(keySpec);
+        final String actualLabel = KeySpecParser.getLabel(keySpecResolved);
+        final String actualOutputText = KeySpecParser.getOutputText(keySpecResolved);
+        final int actualIcon = KeySpecParser.getIconId(keySpecResolved);
+        final int actualCode = KeySpecParser.getCode(keySpecResolved);
+        assertEquals(message + " [label]", expectedLabel, actualLabel);
+        assertEquals(message + " [ouptputText]", expectedOutputText, actualOutputText);
         assertEquals(message + " [icon]",
                 KeyboardIconsSet.getIconName(expectedIcon),
-                KeyboardIconsSet.getIconName(spec.mIconId));
+                KeyboardIconsSet.getIconName(actualIcon));
         assertEquals(message + " [code]",
                 Constants.printableCode(expectedCode),
-                Constants.printableCode(spec.mCode));
+                Constants.printableCode(actualCode));
     }
 
-    private void assertParserError(String message, String moreKeySpec, String expectedLabel,
-            String expectedOutputText, int expectedIcon, int expectedCode) {
-        try {
-            assertParser(message, moreKeySpec, expectedLabel, expectedOutputText, expectedIcon,
-                    expectedCode);
-            fail(message);
-        } catch (Exception pcpe) {
-            // success.
-        }
-    }
-
-    // \U001d11e: MUSICAL SYMBOL G CLEF
-    private static final String PAIR1 = "\ud834\udd1e";
-    private static final int CODE1 = PAIR1.codePointAt(0);
-    // \U001d122: MUSICAL SYMBOL F CLEF
-    private static final String PAIR2 = "\ud834\udd22";
-    private static final int CODE2 = PAIR2.codePointAt(0);
-    // \U002f8a6: CJK COMPATIBILITY IDEOGRAPH-2F8A6; variant character of \u6148.
-    private static final String PAIR3 = "\ud87e\udca6";
-    private static final String SURROGATE1 = PAIR1 + PAIR2;
-    private static final String SURROGATE2 = PAIR1 + PAIR2 + PAIR3;
-
-    public void testSingleLetter() {
-        assertParser("Single letter", "a",
-                "a", null, ICON_UNDEFINED, 'a');
-        assertParser("Single surrogate", PAIR1,
-                PAIR1, null, ICON_UNDEFINED, CODE1);
-        assertParser("Single escaped bar", "\\|",
-                "|", null, ICON_UNDEFINED, '|');
-        assertParser("Single escaped escape", "\\\\",
-                "\\", null, ICON_UNDEFINED, '\\');
-        assertParser("Single comma", ",",
-                ",", null, ICON_UNDEFINED, ',');
-        assertParser("Single escaped comma", "\\,",
-                ",", null, ICON_UNDEFINED, ',');
-        assertParser("Single escaped letter", "\\a",
-                "a", null, ICON_UNDEFINED, 'a');
-        assertParser("Single escaped surrogate", "\\" + PAIR2,
-                PAIR2, null, ICON_UNDEFINED, CODE2);
-        assertParser("Single bang", "!",
-                "!", null, ICON_UNDEFINED, '!');
-        assertParser("Single escaped bang", "\\!",
-                "!", null, ICON_UNDEFINED, '!');
-        assertParser("Single output text letter", "a|a",
-                "a", null, ICON_UNDEFINED, 'a');
-        assertParser("Single surrogate pair outputText", "G Clef|" + PAIR1,
-                "G Clef", null, ICON_UNDEFINED, CODE1);
-        assertParser("Single letter with outputText", "a|abc",
-                "a", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with surrogate outputText", "a|" + SURROGATE1,
-                "a", SURROGATE1, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single surrogate with outputText", PAIR3 + "|abc",
-                PAIR3, "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with escaped outputText", "a|a\\|c",
-                "a", "a|c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with escaped surrogate outputText",
-                "a|" + PAIR1 + "\\|" + PAIR2,
-                "a", PAIR1 + "|" + PAIR2, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with comma outputText", "a|a,b",
-                "a", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with escaped comma outputText", "a|a\\,b",
-                "a", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with outputText starts with bang", "a|!bc",
-                "a", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with surrogate outputText starts with bang", "a|!" + SURROGATE2,
-                "a", "!" + SURROGATE2, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with outputText contains bang", "a|a!c",
-                "a", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single letter with escaped bang outputText", "a|\\!bc",
-                "a", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Single escaped escape with single outputText", "\\\\|\\\\",
-                "\\", null, ICON_UNDEFINED, '\\');
-        assertParser("Single escaped bar with single outputText", "\\||\\|",
-                "|", null, ICON_UNDEFINED, '|');
-        assertParser("Single letter with code", "a|" + CODE_SETTINGS,
-                "a", null, ICON_UNDEFINED, mCodeSettings);
-    }
-
-    public void testLabel() {
-        assertParser("Simple label", "abc",
-                "abc", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Simple surrogate label", SURROGATE1,
-                SURROGATE1, SURROGATE1, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped bar", "a\\|c",
-                "a|c", "a|c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Surrogate label with escaped bar", PAIR1 + "\\|" + PAIR2,
-                PAIR1 + "|" + PAIR2, PAIR1 + "|" + PAIR2,
-                ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped escape", "a\\\\c",
-                "a\\c", "a\\c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with comma", "a,c",
-                "a,c", "a,c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped comma", "a\\,c",
-                "a,c", "a,c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label starts with bang", "!bc",
-                "!bc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Surrogate label starts with bang", "!" + SURROGATE1,
-                "!" + SURROGATE1, "!" + SURROGATE1, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label contains bang", "a!c",
-                "a!c", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped bang", "\\!bc",
-                "!bc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped letter", "\\abc",
-                "abc", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with outputText", "abc|def",
-                "abc", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with comma and outputText", "a,c|def",
-                "a,c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped comma label with outputText", "a\\,c|def",
-                "a,c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped label with outputText", "a\\|c|def",
-                "a|c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped bar outputText", "abc|d\\|f",
-                "abc", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped escape label with outputText", "a\\\\|def",
-                "a\\", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label starts with bang and outputText", "!bc|def",
-                "!bc", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label contains bang label and outputText", "a!c|def",
-                "a!c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped bang label with outputText", "\\!bc|def",
-                "!bc", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with comma outputText", "abc|a,b",
-                "abc", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped comma outputText", "abc|a\\,b",
-                "abc", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with outputText starts with bang", "abc|!bc",
-                "abc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with outputText contains bang", "abc|a!c",
-                "abc", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped bang outputText", "abc|\\!bc",
-                "abc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with escaped bar outputText", "abc|d\\|f",
-                "abc", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f",
-                "a|c", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with code", "abc|" + CODE_SETTINGS,
-                "abc", null, ICON_UNDEFINED, mCodeSettings);
-        assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS,
-                "a|c", null, ICON_UNDEFINED, mCodeSettings);
-    }
-
-    public void testIconAndCode() {
-        assertParser("Icon with outputText", ICON_SETTINGS + "|abc",
-                null, "abc", mSettingsIconId, CODE_OUTPUT_TEXT);
-        assertParser("Icon with outputText starts with bang", ICON_SETTINGS + "|!bc",
-                null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT);
-        assertParser("Icon with outputText contains bang", ICON_SETTINGS + "|a!c",
-                null, "a!c", mSettingsIconId, CODE_OUTPUT_TEXT);
-        assertParser("Icon with escaped bang outputText", ICON_SETTINGS + "|\\!bc",
-                null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT);
-        assertParser("Label starts with bang and code", "!bc|" + CODE_SETTINGS,
-                "!bc", null, ICON_UNDEFINED, mCodeSettings);
-        assertParser("Label contains bang and code", "a!c|" + CODE_SETTINGS,
-                "a!c", null, ICON_UNDEFINED, mCodeSettings);
-        assertParser("Escaped bang label with code", "\\!bc|" + CODE_SETTINGS,
-                "!bc", null, ICON_UNDEFINED, mCodeSettings);
-        assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS,
-                null, null, mSettingsIconId, mCodeSettings);
-    }
-
-    public void testResourceReference() {
-        assertParser("Settings as more key", "!text/settings_as_more_key",
-                null, null, mSettingsIconId, mCodeSettings);
-
-        assertParser("Action next as more key", "!text/label_next_key|!code/key_action_next",
-                "Next", null, ICON_UNDEFINED, mCodeActionNext);
-
-        assertParser("Popular domain",
-                "!text/keylabel_for_popular_domain|!text/keylabel_for_popular_domain ",
-                ".com", ".com ", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-    }
-
-    public void testFormatError() {
-        assertParserError("Empty spec", "", null,
-                null, ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Empty label with outputText", "|a",
-                null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Empty label with code", "|" + CODE_SETTINGS,
-                null, null, ICON_UNDEFINED, mCodeSettings);
-        assertParserError("Empty outputText with label", "a|",
-                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
-                null, null, mSettingsIconId, CODE_UNSPECIFIED);
-        assertParserError("Empty icon and code", "|",
+    // TODO: Remove this method.
+    // These should throw {@link KeySpecParserError} when Key.keyLabel attribute become mandatory.
+    public void testEmptySpec() {
+        assertParser("Null spec", null,
                 null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Icon without code", ICON_SETTINGS,
-                null, null, mSettingsIconId, CODE_UNSPECIFIED);
-        assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc",
-                null, "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING,
-                "abc", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Third bar at end", "a|b|",
-                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Multiple bar", "a|b|c",
-                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
-        assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c",
-                "a", null, ICON_UNDEFINED, mCodeSettings);
-        assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c",
-                null, null, mSettingsIconId, CODE_UNSPECIFIED);
-        assertParserError("Multiple bar with icon and code",
-                ICON_SETTINGS + "|" + CODE_SETTINGS + "|c",
-                null, null, mSettingsIconId, mCodeSettings);
-    }
-
-    public void testUselessUpperCaseSpecifier() {
-        assertParser("Single letter with CODE", "a|" + CODE_SETTINGS_UPPERCASE,
-                "a", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label with CODE", "abc|" + CODE_SETTINGS_UPPERCASE,
-                "abc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped label with CODE", "a\\|c|" + CODE_SETTINGS_UPPERCASE,
-                "a|c", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("ICON with outputText", ICON_SETTINGS_UPPERCASE + "|abc",
-                "!ICON/SETTINGS_KEY", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("ICON with outputText starts with bang", ICON_SETTINGS_UPPERCASE + "|!bc",
-                "!ICON/SETTINGS_KEY", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("ICON with outputText contains bang", ICON_SETTINGS_UPPERCASE + "|a!c",
-                "!ICON/SETTINGS_KEY", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("ICON with escaped bang outputText", ICON_SETTINGS_UPPERCASE + "|\\!bc",
-                "!ICON/SETTINGS_KEY", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label starts with bang and CODE", "!bc|" + CODE_SETTINGS_UPPERCASE,
-                "!bc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Label contains bang and CODE", "a!c|" + CODE_SETTINGS_UPPERCASE,
-                "a!c", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("Escaped bang label with CODE", "\\!bc|" + CODE_SETTINGS_UPPERCASE,
-                "!bc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("ICON with CODE", ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE,
-                "!ICON/SETTINGS_KEY", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParser("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY",
-                "!TEXT/SETTINGS_AS_MORE_KEY", "!TEXT/SETTINGS_AS_MORE_KEY", ICON_UNDEFINED,
-                CODE_OUTPUT_TEXT);
-        assertParser("ACTION NEXT AS MORE KEY", "!TEXT/LABEL_NEXT_KEY|!CODE/KEY_ACTION_NEXT",
-                "!TEXT/LABEL_NEXT_KEY", "!CODE/KEY_ACTION_NEXT", ICON_UNDEFINED,
-                CODE_OUTPUT_TEXT);
-        assertParser("POPULAR DOMAIN",
-                "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN|!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ",
-                "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN", "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ",
-                ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParserError("Empty label with CODE", "|" + CODE_SETTINGS_UPPERCASE,
-                null, null, ICON_UNDEFINED, mCodeSettings);
-        assertParserError("Empty outputText with ICON", ICON_SETTINGS_UPPERCASE + "|",
-                null, null, mSettingsIconId, CODE_UNSPECIFIED);
-        assertParser("ICON without code", ICON_SETTINGS_UPPERCASE,
-                "!ICON/SETTINGS_KEY", "!ICON/SETTINGS_KEY", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
-        assertParserError("Multiple bar with label and CODE", "a|" + CODE_SETTINGS_UPPERCASE + "|c",
-                "a", null, ICON_UNDEFINED, mCodeSettings);
-        assertParserError("Multiple bar with ICON and outputText", ICON_SETTINGS_UPPERCASE + "|b|c",
-                null, null, mSettingsIconId, CODE_UNSPECIFIED);
-        assertParserError("Multiple bar with ICON and CODE",
-                ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE + "|c",
-                null, null, mSettingsIconId, mCodeSettings);
-    }
-
-    private static void assertArrayEquals(String message, Object[] expected, Object[] actual) {
-        if (expected == actual) {
-            return;
-        }
-        if (expected == null || actual == null) {
-            assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
-            return;
-        }
-        if (expected.length != actual.length) {
-            assertEquals(message + " [length]", Arrays.toString(expected), Arrays.toString(actual));
-            return;
-        }
-        for (int i = 0; i < expected.length; i++) {
-            assertEquals(message + " [" + i + "]",
-                    Arrays.toString(expected), Arrays.toString(actual));
-        }
-    }
-
-    private static void assertInsertAdditionalMoreKeys(String message, String[] moreKeys,
-            String[] additionalMoreKeys, String[] expected) {
-        final String[] actual =
-                KeySpecParser.insertAdditionalMoreKeys( moreKeys, additionalMoreKeys);
-        assertArrayEquals(message, expected, actual);
-    }
-
-    public void testEmptyEntry() {
-        assertInsertAdditionalMoreKeys("null more keys and null additons",
-                null,
-                null,
-                null);
-        assertInsertAdditionalMoreKeys("null more keys and empty additons",
-                null,
-                new String[0],
-                null);
-        assertInsertAdditionalMoreKeys("empty more keys and null additons",
-                new String[0],
-                null,
-                null);
-        assertInsertAdditionalMoreKeys("empty more keys and empty additons",
-                new String[0],
-                new String[0],
-                null);
-
-        assertInsertAdditionalMoreKeys("filter out empty more keys",
-                new String[] { null, "a", "", "b", null },
-                null,
-                new String[] { "a", "b" });
-        assertInsertAdditionalMoreKeys("filter out empty additons",
-                new String[] { "a", "%", "b", "%", "c", "%", "d" },
-                new String[] { null, "A", "", "B", null },
-                new String[] { "a", "A", "b", "B", "c", "d" });
-    }
-
-    public void testInsertAdditionalMoreKeys() {
-        // Escaped marker.
-        assertInsertAdditionalMoreKeys("escaped marker",
-                new String[] { "\\%", "%-)" },
-                new String[] { "1", "2" },
-                new String[] { "1", "2", "\\%", "%-)" });
-
-        // 0 more key.
-        assertInsertAdditionalMoreKeys("null & null", null, null, null);
-        assertInsertAdditionalMoreKeys("null & 1 additon",
-                null,
-                new String[] { "1" },
-                new String[] { "1" });
-        assertInsertAdditionalMoreKeys("null & 2 additons",
-                null,
-                new String[] { "1", "2" },
-                new String[] { "1", "2" });
-
-        // 0 additional more key.
-        assertInsertAdditionalMoreKeys("1 more key & null",
-                new String[] { "A" },
-                null,
-                new String[] { "A" });
-        assertInsertAdditionalMoreKeys("2 more keys & null",
-                new String[] { "A", "B" },
-                null,
-                new String[] { "A", "B" });
-
-        // No marker.
-        assertInsertAdditionalMoreKeys("1 more key & 1 addtional & no marker",
-                new String[] { "A" },
-                new String[] { "1" },
-                new String[] { "1", "A" });
-        assertInsertAdditionalMoreKeys("1 more key & 2 addtionals & no marker",
-                new String[] { "A" },
-                new String[] { "1", "2" },
-                new String[] { "1", "2", "A" });
-        assertInsertAdditionalMoreKeys("2 more keys & 1 addtional & no marker",
-                new String[] { "A", "B" },
-                new String[] { "1" },
-                new String[] { "1", "A", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 addtionals & no marker",
-                new String[] { "A", "B" },
-                new String[] { "1", "2" },
-                new String[] { "1", "2", "A", "B" });
-
-        // 1 marker.
-        assertInsertAdditionalMoreKeys("1 more key & 1 additon & marker at head",
-                new String[] { "%", "A" },
-                new String[] { "1" },
-                new String[] { "1", "A" });
-        assertInsertAdditionalMoreKeys("1 more key & 1 additon & marker at tail",
-                new String[] { "A", "%" },
-                new String[] { "1" },
-                new String[] { "A", "1" });
-        assertInsertAdditionalMoreKeys("2 more keys & 1 additon & marker at middle",
-                new String[] { "A", "%", "B" },
-                new String[] { "1" },
-                new String[] { "A", "1", "B" });
-
-        // 1 marker & excess additional more keys.
-        assertInsertAdditionalMoreKeys("1 more key & 2 additons & marker at head",
-                new String[] { "%", "A", "B" },
-                new String[] { "1", "2" },
-                new String[] { "1", "A", "B", "2" });
-        assertInsertAdditionalMoreKeys("1 more key & 2 additons & marker at tail",
-                new String[] { "A", "B", "%" },
-                new String[] { "1", "2" },
-                new String[] { "A", "B", "1", "2" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & marker at middle",
-                new String[] { "A", "%", "B" },
-                new String[] { "1", "2" },
-                new String[] { "A", "1", "B", "2" });
-
-        // 2 markers.
-        assertInsertAdditionalMoreKeys("0 more key & 2 addtional & 2 markers",
-                new String[] { "%", "%" },
-                new String[] { "1", "2" },
-                new String[] { "1", "2" });
-        assertInsertAdditionalMoreKeys("1 more key & 2 addtional & 2 markers at head",
-                new String[] { "%", "%", "A" },
-                new String[] { "1", "2" },
-                new String[] { "1", "2", "A" });
-        assertInsertAdditionalMoreKeys("1 more key & 2 addtional & 2 markers at tail",
-                new String[] { "A", "%", "%" },
-                new String[] { "1", "2" },
-                new String[] { "A", "1", "2" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at middle",
-                new String[] { "A", "%", "%", "B" },
-                new String[] { "1", "2" },
-                new String[] { "A", "1", "2", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at head & middle",
-                new String[] { "%", "A", "%", "B" },
-                new String[] { "1", "2" },
-                new String[] { "1", "A", "2", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at head & tail",
-                new String[] { "%", "A", "B", "%" },
-                new String[] { "1", "2" },
-                new String[] { "1", "A", "B", "2" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at middle & tail",
-                new String[] { "A", "%", "B", "%" },
-                new String[] { "1", "2" },
-                new String[] { "A", "1", "B", "2" });
-
-        // 2 markers & excess additional more keys.
-        assertInsertAdditionalMoreKeys("0 more key & 2 additons & 2 markers",
-                new String[] { "%", "%" },
-                new String[] { "1", "2", "3" },
-                new String[] { "1", "2", "3" });
-        assertInsertAdditionalMoreKeys("1 more key & 2 additons & 2 markers at head",
-                new String[] { "%", "%", "A" },
-                new String[] { "1", "2", "3" },
-                new String[] { "1", "2", "A", "3" });
-        assertInsertAdditionalMoreKeys("1 more key & 2 additons & 2 markers at tail",
-                new String[] { "A", "%", "%" },
-                new String[] { "1", "2", "3" },
-                new String[] { "A", "1", "2", "3" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at middle",
-                new String[] { "A", "%", "%", "B" },
-                new String[] { "1", "2", "3" },
-                new String[] { "A", "1", "2", "B", "3" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at head & middle",
-                new String[] { "%", "A", "%", "B" },
-                new String[] { "1", "2", "3" },
-                new String[] { "1", "A", "2", "B", "3" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at head & tail",
-                new String[] { "%", "A", "B", "%" },
-                new String[] { "1", "2", "3" },
-                new String[] { "1", "A", "B", "2", "3" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at middle & tail",
-                new String[] { "A", "%", "B", "%" },
-                new String[] { "1", "2", "3" },
-                new String[] { "A", "1", "B", "2", "3" });
-
-        // 0 addtional more key and excess markers.
-        assertInsertAdditionalMoreKeys("0 more key & null & excess marker",
-                new String[] { "%" },
-                null,
-                null);
-        assertInsertAdditionalMoreKeys("1 more key & null & excess marker at head",
-                new String[] { "%", "A" },
-                null,
-                new String[] { "A" });
-        assertInsertAdditionalMoreKeys("1 more key & null & excess marker at tail",
-                new String[] { "A", "%" },
-                null,
-                new String[] { "A" });
-        assertInsertAdditionalMoreKeys("2 more keys & null & excess marker at middle",
-                new String[] { "A", "%", "B" },
-                null,
-                new String[] { "A", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & null & excess markers",
-                new String[] { "%", "A", "%", "B", "%" },
-                null,
-                new String[] { "A", "B" });
-
-        // Excess markers.
-        assertInsertAdditionalMoreKeys("0 more key & 1 additon & excess marker",
-                new String[] { "%", "%" },
-                new String[] { "1" },
-                new String[] { "1" });
-        assertInsertAdditionalMoreKeys("1 more key & 1 additon & excess marker at head",
-                new String[] { "%", "%", "A" },
-                new String[] { "1" },
-                new String[] { "1", "A" });
-        assertInsertAdditionalMoreKeys("1 more key & 1 additon & excess marker at tail",
-                new String[] { "A", "%", "%" },
-                new String[] { "1" },
-                new String[] { "A", "1" });
-        assertInsertAdditionalMoreKeys("2 more keys & 1 additon & excess marker at middle",
-                new String[] { "A", "%", "%", "B" },
-                new String[] { "1" },
-                new String[] { "A", "1", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & 1 additon & excess markers",
-                new String[] { "%", "A", "%", "B", "%" },
-                new String[] { "1" },
-                new String[] { "1", "A", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & excess markers",
-                new String[] { "%", "A", "%", "B", "%" },
-                new String[] { "1", "2" },
-                new String[] { "1", "A", "2", "B" });
-        assertInsertAdditionalMoreKeys("2 more keys & 3 additons & excess markers",
-                new String[] { "%", "A", "%", "%", "B", "%" },
-                new String[] { "1", "2", "3" },
-                new String[] { "1", "A", "2", "3", "B" });
-    }
-
-    private static final String HAS_LABEL = "!hasLabel!";
-    private static final String NEEDS_DIVIDER = "!needsDividers!";
-    private static final String AUTO_COLUMN_ORDER = "!autoColumnOrder!";
-    private static final String FIXED_COLUMN_ORDER = "!fixedColumnOrder!";
-
-    private static void assertGetBooleanValue(String message, String key, String[] moreKeys,
-            String[] expected, boolean expectedValue) {
-        final String[] actual = Arrays.copyOf(moreKeys, moreKeys.length);
-        final boolean actualValue = KeySpecParser.getBooleanValue(actual, key);
-        assertEquals(message + " [value]", expectedValue, actualValue);
-        assertArrayEquals(message, expected, actual);
-    }
-
-    public void testGetBooleanValue() {
-        assertGetBooleanValue("Has label", HAS_LABEL,
-                new String[] { HAS_LABEL, "a", "b", "c" },
-                new String[] { null, "a", "b", "c" }, true);
-        // Upper case specification will not work.
-        assertGetBooleanValue("HAS LABEL", HAS_LABEL,
-                new String[] { HAS_LABEL.toUpperCase(Locale.ROOT), "a", "b", "c" },
-                new String[] { "!HASLABEL!", "a", "b", "c" }, false);
-
-        assertGetBooleanValue("No has label", HAS_LABEL,
-                new String[] { "a", "b", "c" },
-                new String[] { "a", "b", "c" }, false);
-        assertGetBooleanValue("No has label with fixed clumn order", HAS_LABEL,
-                new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" },
-                new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" }, false);
-
-        // Upper case specification will not work.
-        assertGetBooleanValue("Multiple has label", HAS_LABEL,
-                new String[] {
-                    "a", HAS_LABEL.toUpperCase(Locale.ROOT), "b", "c", HAS_LABEL, "d" },
-                new String[] {
-                    "a", "!HASLABEL!", "b", "c", null, "d" }, true);
-        // Upper case specification will not work.
-        assertGetBooleanValue("Multiple has label with needs dividers", HAS_LABEL,
-                new String[] {
-                    "a", HAS_LABEL, "b", NEEDS_DIVIDER, HAS_LABEL.toUpperCase(Locale.ROOT), "d" },
-                new String[] {
-                    "a", null, "b", NEEDS_DIVIDER, "!HASLABEL!", "d" }, true);
-    }
-
-    private static void assertGetIntValue(String message, String key, int defaultValue,
-            String[] moreKeys, String[] expected, int expectedValue) {
-        final String[] actual = Arrays.copyOf(moreKeys, moreKeys.length);
-        final int actualValue = KeySpecParser.getIntValue(actual, key, defaultValue);
-        assertEquals(message + " [value]", expectedValue, actualValue);
-        assertArrayEquals(message, expected, actual);
-    }
-
-    public void testGetIntValue() {
-        assertGetIntValue("Fixed column order 3", FIXED_COLUMN_ORDER, -1,
-                new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" },
-                new String[] { null, "a", "b", "c" }, 3);
-        // Upper case specification will not work.
-        assertGetIntValue("FIXED COLUMN ORDER 3", FIXED_COLUMN_ORDER, -1,
-                new String[] { FIXED_COLUMN_ORDER.toUpperCase(Locale.ROOT) + "3", "a", "b", "c" },
-                new String[] { "!FIXEDCOLUMNORDER!3", "a", "b", "c" }, -1);
-
-        assertGetIntValue("No fixed column order", FIXED_COLUMN_ORDER, -1,
-                new String[] { "a", "b", "c" },
-                new String[] { "a", "b", "c" }, -1);
-        assertGetIntValue("No fixed column order with auto column order", FIXED_COLUMN_ORDER, -1,
-                new String[] { AUTO_COLUMN_ORDER + "5", "a", "b", "c" },
-                new String[] { AUTO_COLUMN_ORDER + "5", "a", "b", "c" }, -1);
-
-        assertGetIntValue("Multiple fixed column order 3,5", FIXED_COLUMN_ORDER, -1,
-                new String[] { FIXED_COLUMN_ORDER + "3", "a", FIXED_COLUMN_ORDER + "5", "b" },
-                new String[] { null, "a", null, "b" }, 3);
-        // Upper case specification will not work.
-        assertGetIntValue("Multiple fixed column order 5,3 with has label", FIXED_COLUMN_ORDER, -1,
-                new String[] {
-                    FIXED_COLUMN_ORDER.toUpperCase(Locale.ROOT) + "5", HAS_LABEL, "a",
-                    FIXED_COLUMN_ORDER + "3", "b" },
-                new String[] { "!FIXEDCOLUMNORDER!5", HAS_LABEL, "a", null, "b" }, 3);
+        assertParser("Empty spec", "",
+                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
     }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
new file mode 100644
index 0000000..b8cb11b
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeySpecParserTestsBase.java
@@ -0,0 +1,340 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import static com.android.inputmethod.keyboard.internal.KeyboardCodesSet.PREFIX_CODE;
+import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED;
+import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.PREFIX_ICON;
+import static com.android.inputmethod.latin.Constants.CODE_OUTPUT_TEXT;
+import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
+
+import android.test.AndroidTestCase;
+
+import java.util.Locale;
+
+abstract class KeySpecParserTestsBase extends AndroidTestCase {
+    private final static Locale TEST_LOCALE = Locale.ENGLISH;
+    protected final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
+
+    private static final String CODE_SETTINGS_NAME = "key_settings";
+    private static final String CODE_SETTINGS = PREFIX_CODE + CODE_SETTINGS_NAME;
+    private static final String ICON_SETTINGS_NAME = "settings_key";
+    private static final String ICON_SETTINGS = PREFIX_ICON + ICON_SETTINGS_NAME;
+    private static final String CODE_SETTINGS_UPPERCASE = CODE_SETTINGS.toUpperCase(Locale.ROOT);
+    private static final String ICON_SETTINGS_UPPERCASE = ICON_SETTINGS.toUpperCase(Locale.ROOT);
+    private static final String CODE_NON_EXISTING = PREFIX_CODE + "non_existing";
+    private static final String ICON_NON_EXISTING = PREFIX_ICON + "non_existing";
+
+    private int mCodeSettings;
+    private int mCodeActionNext;
+    private int mSettingsIconId;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mTextsSet.setLocale(TEST_LOCALE, getContext());
+        mCodeSettings = KeyboardCodesSet.getCode(CODE_SETTINGS_NAME);
+        mCodeActionNext = KeyboardCodesSet.getCode("key_action_next");
+        mSettingsIconId = KeyboardIconsSet.getIconId(ICON_SETTINGS_NAME);
+    }
+
+    abstract protected void assertParser(final String message, final String keySpec,
+            final String expectedLabel, final String expectedOutputText, final int expectedIcon,
+            final int expectedCode);
+
+    protected void assertParserError(final String message, final String keySpec,
+            final String expectedLabel, final String expectedOutputText, final int expectedIconId,
+            final int expectedCode) {
+        try {
+            assertParser(message, keySpec, expectedLabel, expectedOutputText, expectedIconId,
+                    expectedCode);
+            fail(message);
+        } catch (Exception pcpe) {
+            // success.
+        }
+    }
+
+    // \U001d11e: MUSICAL SYMBOL G CLEF
+    private static final String SURROGATE_PAIR1 = "\ud834\udd1e";
+    private static final int SURROGATE_CODE1 = SURROGATE_PAIR1.codePointAt(0);
+    // \U001d122: MUSICAL SYMBOL F CLEF
+    private static final String SURROGATE_PAIR2 = "\ud834\udd22";
+    private static final int SURROGATE_CODE2 = SURROGATE_PAIR2.codePointAt(0);
+    // \U002f8a6: CJK COMPATIBILITY IDEOGRAPH-2F8A6; variant character of \u6148.
+    private static final String SURROGATE_PAIR3 = "\ud87e\udca6";
+    private static final String SURROGATE_PAIRS4 = SURROGATE_PAIR1 + SURROGATE_PAIR2;
+    private static final String SURROGATE_PAIRS5 = SURROGATE_PAIRS4 + SURROGATE_PAIR3;
+
+    public void testSingleLetter() {
+        assertParser("Single letter", "a",
+                "a", null, ICON_UNDEFINED, 'a');
+        assertParser("Single surrogate", SURROGATE_PAIR1,
+                SURROGATE_PAIR1, null, ICON_UNDEFINED, SURROGATE_CODE1);
+        assertParser("Sole vertical bar", "|",
+                "|", null, ICON_UNDEFINED, '|');
+        assertParser("Single escaped vertical bar", "\\|",
+                "|", null, ICON_UNDEFINED, '|');
+        assertParser("Single escaped escape", "\\\\",
+                "\\", null, ICON_UNDEFINED, '\\');
+        assertParser("Single comma", ",",
+                ",", null, ICON_UNDEFINED, ',');
+        assertParser("Single escaped comma", "\\,",
+                ",", null, ICON_UNDEFINED, ',');
+        assertParser("Single escaped letter", "\\a",
+                "a", null, ICON_UNDEFINED, 'a');
+        assertParser("Single escaped surrogate", "\\" + SURROGATE_PAIR2,
+                SURROGATE_PAIR2, null, ICON_UNDEFINED, SURROGATE_CODE2);
+        assertParser("Single bang", "!",
+                "!", null, ICON_UNDEFINED, '!');
+        assertParser("Single escaped bang", "\\!",
+                "!", null, ICON_UNDEFINED, '!');
+        assertParser("Single output text letter", "a|a",
+                "a", null, ICON_UNDEFINED, 'a');
+        assertParser("Single surrogate pair outputText", "G Clef|" + SURROGATE_PAIR1,
+                "G Clef", null, ICON_UNDEFINED, SURROGATE_CODE1);
+        assertParser("Single letter with outputText", "a|abc",
+                "a", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with surrogate outputText", "a|" + SURROGATE_PAIRS4,
+                "a", SURROGATE_PAIRS4, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single surrogate with outputText", SURROGATE_PAIR3 + "|abc",
+                SURROGATE_PAIR3, "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with escaped outputText", "a|a\\|c",
+                "a", "a|c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with escaped surrogate outputText",
+                "a|" + SURROGATE_PAIR1 + "\\|" + SURROGATE_PAIR2,
+                "a", SURROGATE_PAIR1 + "|" + SURROGATE_PAIR2, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with comma outputText", "a|a,b",
+                "a", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with escaped comma outputText", "a|a\\,b",
+                "a", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with outputText starts with bang", "a|!bc",
+                "a", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with surrogate outputText starts with bang",
+                "a|!" + SURROGATE_PAIRS5,
+                "a", "!" + SURROGATE_PAIRS5, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with outputText contains bang", "a|a!c",
+                "a", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single letter with escaped bang outputText", "a|\\!bc",
+                "a", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Single escaped escape with single outputText", "\\\\|\\\\",
+                "\\", null, ICON_UNDEFINED, '\\');
+        assertParser("Single escaped bar with single outputText", "\\||\\|",
+                "|", null, ICON_UNDEFINED, '|');
+        assertParser("Single letter with code", "a|" + CODE_SETTINGS,
+                "a", null, ICON_UNDEFINED, mCodeSettings);
+    }
+
+    public void testLabel() {
+        assertParser("Simple label", "abc",
+                "abc", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Simple surrogate label", SURROGATE_PAIRS4,
+                SURROGATE_PAIRS4, SURROGATE_PAIRS4, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped bar", "a\\|c",
+                "a|c", "a|c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Surrogate label with escaped bar", SURROGATE_PAIR1 + "\\|" + SURROGATE_PAIR2,
+                SURROGATE_PAIR1 + "|" + SURROGATE_PAIR2, SURROGATE_PAIR1 + "|" + SURROGATE_PAIR2,
+                ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped escape", "a\\\\c",
+                "a\\c", "a\\c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with comma", "a,c",
+                "a,c", "a,c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped comma", "a\\,c",
+                "a,c", "a,c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label starts with bang", "!bc",
+                "!bc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Surrogate label starts with bang", "!" + SURROGATE_PAIRS4,
+                "!" + SURROGATE_PAIRS4, "!" + SURROGATE_PAIRS4, ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label contains bang", "a!c",
+                "a!c", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped bang", "\\!bc",
+                "!bc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped letter", "\\abc",
+                "abc", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with outputText", "abc|def",
+                "abc", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with comma and outputText", "a,c|def",
+                "a,c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped comma label with outputText", "a\\,c|def",
+                "a,c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped label with outputText", "a\\|c|def",
+                "a|c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped bar outputText", "abc|d\\|f",
+                "abc", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped escape label with outputText", "a\\\\|def",
+                "a\\", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label starts with bang and outputText", "!bc|def",
+                "!bc", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label contains bang label and outputText", "a!c|def",
+                "a!c", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped bang label with outputText", "\\!bc|def",
+                "!bc", "def", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with comma outputText", "abc|a,b",
+                "abc", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped comma outputText", "abc|a\\,b",
+                "abc", "a,b", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with outputText starts with bang", "abc|!bc",
+                "abc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with outputText contains bang", "abc|a!c",
+                "abc", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped bang outputText", "abc|\\!bc",
+                "abc", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with escaped bar outputText", "abc|d\\|f",
+                "abc", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped bar label with escaped bar outputText", "a\\|c|d\\|f",
+                "a|c", "d|f", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with code", "abc|" + CODE_SETTINGS,
+                "abc", null, ICON_UNDEFINED, mCodeSettings);
+        assertParser("Escaped label with code", "a\\|c|" + CODE_SETTINGS,
+                "a|c", null, ICON_UNDEFINED, mCodeSettings);
+    }
+
+    public void testCodes() {
+        assertParser("Hexadecimal code", "a|0x1000",
+                "a", null, ICON_UNDEFINED, 0x1000);
+        assertParserError("Illegal hexadecimal code", "a|0x100X",
+                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParser("Escaped hexadecimal code 1", "a|\\0x1000",
+                "a", "0x1000", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped hexadecimal code 2", "a|0\\x1000",
+                "a", "0x1000", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped hexadecimal code 2", "a|0\\x1000",
+                "a", "0x1000", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParserError("Illegally escaped hexadecimal code", "a|0x1\\000",
+                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        // This is a workaround to have a key that has a supplementary code point. We can't put a
+        // string in resource as a XML entity of a supplementary code point or a surrogate pair.
+        // TODO: Should pass this test.
+//        assertParser("Hexadecimal supplementary code", String.format("a|0x%06x", SURROGATE_CODE2),
+//                SURROGATE_PAIR2, null, ICON_UNDEFINED, SURROGATE_CODE2);
+        assertParser("Zero is treated as output text", "a|0",
+                "a", null, ICON_UNDEFINED, '0');
+        assertParser("Digit is treated as output text", "a|3",
+                "a", null, ICON_UNDEFINED, '3');
+        assertParser("Decimal number is treated as an output text", "a|2014",
+                "a", "2014", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+    }
+
+    public void testIcons() {
+        assertParser("Icon with single letter", ICON_SETTINGS + "|a",
+                null, null, mSettingsIconId, 'a');
+        assertParser("Icon with outputText", ICON_SETTINGS + "|abc",
+                null, "abc", mSettingsIconId, CODE_OUTPUT_TEXT);
+        assertParser("Icon with outputText starts with bang", ICON_SETTINGS + "|!bc",
+                null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT);
+        assertParser("Icon with outputText contains bang", ICON_SETTINGS + "|a!c",
+                null, "a!c", mSettingsIconId, CODE_OUTPUT_TEXT);
+        assertParser("Icon with escaped bang outputText", ICON_SETTINGS + "|\\!bc",
+                null, "!bc", mSettingsIconId, CODE_OUTPUT_TEXT);
+        assertParser("Label starts with bang and code", "!bc|" + CODE_SETTINGS,
+                "!bc", null, ICON_UNDEFINED, mCodeSettings);
+        assertParser("Label contains bang and code", "a!c|" + CODE_SETTINGS,
+                "a!c", null, ICON_UNDEFINED, mCodeSettings);
+        assertParser("Escaped bang label with code", "\\!bc|" + CODE_SETTINGS,
+                "!bc", null, ICON_UNDEFINED, mCodeSettings);
+        assertParser("Icon with code", ICON_SETTINGS + "|" + CODE_SETTINGS,
+                null, null, mSettingsIconId, mCodeSettings);
+    }
+
+    public void testResourceReference() {
+        assertParser("Settings as more key", "!text/keyspec_settings",
+                null, null, mSettingsIconId, mCodeSettings);
+
+        assertParser("Action next as more key", "!text/label_next_key|!code/key_action_next",
+                "Next", null, ICON_UNDEFINED, mCodeActionNext);
+
+        assertParser("Popular domain",
+                "!text/keyspec_popular_domain|!text/keyspec_popular_domain ",
+                ".com", ".com ", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+    }
+
+    public void testFormatError() {
+        assertParserError("Empty label with outputText", "|a",
+                null, "a", ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Empty label with code", "|" + CODE_SETTINGS,
+                null, null, ICON_UNDEFINED, mCodeSettings);
+        assertParserError("Empty outputText with label", "a|",
+                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Empty outputText with icon", ICON_SETTINGS + "|",
+                null, null, mSettingsIconId, CODE_UNSPECIFIED);
+        assertParserError("Icon without code", ICON_SETTINGS,
+                null, null, mSettingsIconId, CODE_UNSPECIFIED);
+        assertParserError("Non existing icon", ICON_NON_EXISTING + "|abc",
+                null, "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParserError("Non existing code", "abc|" + CODE_NON_EXISTING,
+                "abc", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Third bar at end", "a|b|",
+                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Multiple bar", "a|b|c",
+                "a", null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Multiple bar with label and code", "a|" + CODE_SETTINGS + "|c",
+                "a", null, ICON_UNDEFINED, mCodeSettings);
+        assertParserError("Multiple bar with icon and outputText", ICON_SETTINGS + "|b|c",
+                null, null, mSettingsIconId, CODE_UNSPECIFIED);
+        assertParserError("Multiple bar with icon and code",
+                ICON_SETTINGS + "|" + CODE_SETTINGS + "|c",
+                null, null, mSettingsIconId, mCodeSettings);
+    }
+
+    public void testUselessUpperCaseSpecifier() {
+        assertParser("Single letter with CODE", "a|" + CODE_SETTINGS_UPPERCASE,
+                "a", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label with CODE", "abc|" + CODE_SETTINGS_UPPERCASE,
+                "abc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped label with CODE", "a\\|c|" + CODE_SETTINGS_UPPERCASE,
+                "a|c", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("ICON with outputText", ICON_SETTINGS_UPPERCASE + "|abc",
+                "!ICON/SETTINGS_KEY", "abc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("ICON with outputText starts with bang", ICON_SETTINGS_UPPERCASE + "|!bc",
+                "!ICON/SETTINGS_KEY", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("ICON with outputText contains bang", ICON_SETTINGS_UPPERCASE + "|a!c",
+                "!ICON/SETTINGS_KEY", "a!c", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("ICON with escaped bang outputText", ICON_SETTINGS_UPPERCASE + "|\\!bc",
+                "!ICON/SETTINGS_KEY", "!bc", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label starts with bang and CODE", "!bc|" + CODE_SETTINGS_UPPERCASE,
+                "!bc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Label contains bang and CODE", "a!c|" + CODE_SETTINGS_UPPERCASE,
+                "a!c", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("Escaped bang label with CODE", "\\!bc|" + CODE_SETTINGS_UPPERCASE,
+                "!bc", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("ICON with CODE", ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE,
+                "!ICON/SETTINGS_KEY", "!CODE/KEY_SETTINGS", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParser("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY",
+                "!TEXT/SETTINGS_AS_MORE_KEY", "!TEXT/SETTINGS_AS_MORE_KEY", ICON_UNDEFINED,
+                CODE_OUTPUT_TEXT);
+        assertParser("ACTION NEXT AS MORE KEY", "!TEXT/LABEL_NEXT_KEY|!CODE/KEY_ACTION_NEXT",
+                "!TEXT/LABEL_NEXT_KEY", "!CODE/KEY_ACTION_NEXT", ICON_UNDEFINED,
+                CODE_OUTPUT_TEXT);
+        assertParser("POPULAR DOMAIN",
+                "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN|!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ",
+                "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN", "!TEXT/KEYLABEL_FOR_POPULAR_DOMAIN ",
+                ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParserError("Empty label with CODE", "|" + CODE_SETTINGS_UPPERCASE,
+                null, null, ICON_UNDEFINED, mCodeSettings);
+        assertParserError("Empty outputText with ICON", ICON_SETTINGS_UPPERCASE + "|",
+                null, null, mSettingsIconId, CODE_UNSPECIFIED);
+        assertParser("ICON without code", ICON_SETTINGS_UPPERCASE,
+                "!ICON/SETTINGS_KEY", "!ICON/SETTINGS_KEY", ICON_UNDEFINED, CODE_OUTPUT_TEXT);
+        assertParserError("Multiple bar with label and CODE", "a|" + CODE_SETTINGS_UPPERCASE + "|c",
+                "a", null, ICON_UNDEFINED, mCodeSettings);
+        assertParserError("Multiple bar with ICON and outputText", ICON_SETTINGS_UPPERCASE + "|b|c",
+                null, null, mSettingsIconId, CODE_UNSPECIFIED);
+        assertParserError("Multiple bar with ICON and CODE",
+                ICON_SETTINGS_UPPERCASE + "|" + CODE_SETTINGS_UPPERCASE + "|c",
+                null, null, mSettingsIconId, mCodeSettings);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java
new file mode 100644
index 0000000..7221101
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSetTests.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.content.Context;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.RichInputMethodManager;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+@SmallTest
+public final class KeyboardTextsSetTests extends AndroidTestCase {
+    // All input method subtypes of LatinIME.
+    private List<InputMethodSubtype> mAllSubtypesList;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        RichInputMethodManager.init(getContext());
+        final RichInputMethodManager richImm = RichInputMethodManager.getInstance();
+
+        final ArrayList<InputMethodSubtype> allSubtypesList = new ArrayList<>();
+        final InputMethodInfo imi = richImm.getInputMethodInfoOfThisIme();
+        final int subtypeCount = imi.getSubtypeCount();
+        for (int index = 0; index < subtypeCount; index++) {
+            final InputMethodSubtype subtype = imi.getSubtypeAt(index);
+            allSubtypesList.add(subtype);
+        }
+        mAllSubtypesList = Collections.unmodifiableList(allSubtypesList);
+    }
+
+    // Test that the text {@link KeyboardTextsSet#SWITCH_TO_ALPHA_KEY_LABEL} exists for all
+    // subtypes. The text is needed to implement Emoji Keyboard, see
+    // {@link KeyboardSwitcher#setEmojiKeyboard()}.
+    public void testSwitchToAlphaKeyLabel() {
+        final Context context = getContext();
+        final KeyboardTextsSet textsSet = new KeyboardTextsSet();
+        for (final InputMethodSubtype subtype : mAllSubtypesList) {
+            final Locale locale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
+            textsSet.setLocale(locale, context);
+            final String switchToAlphaKeyLabel = textsSet.getText(
+                    KeyboardTextsSet.SWITCH_TO_ALPHA_KEY_LABEL);
+            assertNotNull("Switch to alpha key label of " + locale, switchToAlphaKeyLabel);
+            assertFalse("Switch to alpha key label of " + locale, switchToAlphaKeyLabel.isEmpty());
+        }
+    }
+
+    private static final String[] TEXT_NAMES_FROM_RESOURCE = {
+        // Labels for action.
+        "label_go_key",
+        "label_send_key",
+        "label_next_key",
+        "label_done_key",
+        "label_previous_key",
+        // Other labels.
+        "label_pause_key",
+        "label_wait_key",
+    };
+
+    // Test that the text from resources are correctly loaded for all subtypes.
+    public void testTextFromResources() {
+        final Context context = getContext();
+        final KeyboardTextsSet textsSet = new KeyboardTextsSet();
+        for (final InputMethodSubtype subtype : mAllSubtypesList) {
+            final Locale locale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
+            textsSet.setLocale(locale, context);
+            for (final String name : TEXT_NAMES_FROM_RESOURCE) {
+                final String text = textsSet.getText(name);
+                assertNotNull(name + " of " + locale, text);
+                assertFalse(name + " of " + locale, text.isEmpty());
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelperTests.java b/tests/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelperTests.java
new file mode 100644
index 0000000..6ea2758
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/LanguageOnSpacebarHelperTests.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_FULL_LOCALE;
+import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_LANGUAGE_ONLY;
+import static com.android.inputmethod.keyboard.internal.LanguageOnSpacebarHelper.FORMAT_TYPE_NONE;
+
+import android.content.Context;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.RichInputMethodManager;
+import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+@SmallTest
+public class LanguageOnSpacebarHelperTests extends AndroidTestCase {
+    private final LanguageOnSpacebarHelper mLanguageOnSpacebarHelper =
+            new LanguageOnSpacebarHelper();
+
+    private RichInputMethodManager mRichImm;
+
+    InputMethodSubtype EN_US_QWERTY;
+    InputMethodSubtype EN_GB_QWERTY;
+    InputMethodSubtype FR_AZERTY;
+    InputMethodSubtype FR_CA_QWERTY;
+    InputMethodSubtype FR_CH_SWISS;
+    InputMethodSubtype FR_CH_QWERTY;
+    InputMethodSubtype FR_CH_QWERTZ;
+    InputMethodSubtype ZZ_QWERTY;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        final Context context = getContext();
+        RichInputMethodManager.init(context);
+        mRichImm = RichInputMethodManager.getInstance();
+        SubtypeLocaleUtils.init(context);
+
+        EN_US_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.US.toString(), "qwerty");
+        EN_GB_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.UK.toString(), "qwerty");
+        FR_AZERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.FRENCH.toString(), "azerty");
+        FR_CA_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.CANADA_FRENCH.toString(), "qwerty");
+        FR_CH_SWISS = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                "fr_CH", "swiss");
+        FR_CH_QWERTZ = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                "fr_CH", "qwertz");
+        FR_CH_QWERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                "fr_CH", "qwerty");
+        ZZ_QWERTY = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
+    }
+
+    private static List<InputMethodSubtype> asList(final InputMethodSubtype ... subtypes) {
+        return Arrays.asList(subtypes);
+    }
+
+    public void testOneSubtype() {
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(EN_US_QWERTY));
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
+        assertEquals("one same English (US)", FORMAT_TYPE_NONE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
+        assertEquals("one same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
+
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(FR_AZERTY));
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
+        assertEquals("one diff English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
+        assertEquals("one diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
+    }
+
+    public void testTwoSubtypes() {
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(asList(EN_US_QWERTY, FR_AZERTY));
+
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
+        assertEquals("two same English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
+        assertEquals("two same French)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
+        assertEquals("two same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
+
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
+        assertEquals("two diff English (US)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
+        assertEquals("two diff French", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
+        assertEquals("two diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
+    }
+
+    public void testSameLanuageSubtypes() {
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(
+                asList(EN_US_QWERTY, EN_GB_QWERTY, FR_AZERTY, ZZ_QWERTY));
+
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
+        assertEquals("two same English (US)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
+        assertEquals("two same English (UK)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_GB_QWERTY));
+        assertEquals("two same NoLanguage", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
+
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
+        assertEquals("two diff English (US)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_US_QWERTY));
+        assertEquals("two diff English (UK)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(EN_GB_QWERTY));
+        assertEquals("two diff NoLanguage", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(ZZ_QWERTY));
+    }
+
+    public void testMultiSameLanuageSubtypes() {
+        mLanguageOnSpacebarHelper.updateEnabledSubtypes(
+                asList(FR_AZERTY, FR_CA_QWERTY, FR_CH_SWISS, FR_CH_QWERTY, FR_CH_QWERTZ));
+
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(true /* isSame */);
+        assertEquals("multi same French", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
+        assertEquals("multi same French (CA)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CA_QWERTY));
+        assertEquals("multi same French (CH)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_SWISS));
+        assertEquals("multi same French (CH) (QWERTY)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTY));
+        assertEquals("multi same French (CH) (QWERTZ)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTZ));
+
+        mLanguageOnSpacebarHelper.updateIsSystemLanguageSameAsInputLanguage(false /* isSame */);
+        assertEquals("multi diff French", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_AZERTY));
+        assertEquals("multi diff French (CA)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CA_QWERTY));
+        assertEquals("multi diff French (CH)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_SWISS));
+        assertEquals("multi diff French (CH) (QWERTY)", FORMAT_TYPE_FULL_LOCALE,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTY));
+        assertEquals("multi diff French (CH) (QWERTZ)", FORMAT_TYPE_LANGUAGE_ONLY,
+                mLanguageOnSpacebarHelper.getLanguageOnSpacebarFormatType(FR_CH_QWERTZ));
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
index 6e3e37a..a353e5a 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
@@ -125,8 +125,9 @@
     }
 
     @Override
-    public void requestUpdatingShiftState() {
-        mState.onUpdateShiftState(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
+    public void requestUpdatingShiftState(final int currentAutoCapsState,
+            final int currentRecapitalizeState) {
+        mState.onUpdateShiftState(currentAutoCapsState, currentRecapitalizeState);
     }
 
     @Override
@@ -149,7 +150,7 @@
     }
 
     public void loadKeyboard() {
-        mState.onLoadKeyboard();
+        mState.onLoadKeyboard(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
     }
 
     public void saveKeyboardState() {
@@ -157,11 +158,17 @@
     }
 
     public void onPressKey(final int code, final boolean isSinglePointer) {
-        mState.onPressKey(code, isSinglePointer, mAutoCapsState);
+        mState.onPressKey(code, isSinglePointer, mAutoCapsState,
+                RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
     }
 
     public void onReleaseKey(final int code, final boolean withSliding) {
-        mState.onReleaseKey(code, withSliding);
+        onReleaseKey(code, withSliding, mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
+    }
+
+    public void onReleaseKey(final int code, final boolean withSliding,
+            final int currentAutoCapsState, final int currentRecapitalizeState) {
+        mState.onReleaseKey(code, withSliding, currentAutoCapsState, currentRecapitalizeState);
         if (mLongPressTimeoutCode == code) {
             mLongPressTimeoutCode = 0;
         }
@@ -176,10 +183,10 @@
         } else {
             mAutoCapsState = mAutoCapsMode;
         }
-        mState.onCodeInput(code, mAutoCapsState);
+        mState.onCodeInput(code, mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
     }
 
     public void onFinishSlidingInput() {
-        mState.onFinishSlidingInput();
+        mState.onFinishSlidingInput(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
     }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java
new file mode 100644
index 0000000..29b169d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecSplitTests.java
@@ -0,0 +1,432 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Locale;
+
+@MediumTest
+public class MoreKeySpecSplitTests extends InstrumentationTestCase {
+    private static final Locale TEST_LOCALE = Locale.ENGLISH;
+    final KeyboardTextsSet mTextsSet = new KeyboardTextsSet();
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        final Instrumentation instrumentation = getInstrumentation();
+        final Context targetContext = instrumentation.getTargetContext();
+        mTextsSet.setLocale(TEST_LOCALE, targetContext);
+        final String[] testResourceNames = getAllResourceIdNames(
+                com.android.inputmethod.latin.tests.R.string.class);
+        final Context testContext = instrumentation.getContext();
+        final Resources testRes = testContext.getResources();
+        final String testResPackageName = testRes.getResourcePackageName(
+                // This dummy raw resource is needed to be able to load string resources from a test
+                // APK successfully.
+                com.android.inputmethod.latin.tests.R.raw.dummy_resource_for_testing);
+        mTextsSet.loadStringResourcesInternal(testRes, testResourceNames, testResPackageName);
+    }
+
+    private static String[] getAllResourceIdNames(final Class<?> resourceIdClass) {
+        final ArrayList<String> names = new ArrayList<>();
+        for (final Field field : resourceIdClass.getFields()) {
+            if (field.getType() == Integer.TYPE) {
+                names.add(field.getName());
+            }
+        }
+        return names.toArray(new String[names.size()]);
+    }
+
+    private static <T> void assertArrayEquals(final String message, final T[] expected,
+            final T[] actual) {
+        if (expected == actual) {
+            return;
+        }
+        if (expected == null || actual == null) {
+            assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
+            return;
+        }
+        if (expected.length != actual.length) {
+            assertEquals(message + " [length]", Arrays.toString(expected), Arrays.toString(actual));
+            return;
+        }
+        for (int i = 0; i < expected.length; i++) {
+            final T e = expected[i];
+            final T a = actual[i];
+            if (e == a) {
+                continue;
+            }
+            assertEquals(message + " [" + i + "]", e, a);
+        }
+    }
+
+    private void assertTextArray(final String message, final String value,
+            final String ... expectedArray) {
+        final String resolvedActual = mTextsSet.resolveTextReference(value);
+        final String[] actual = MoreKeySpec.splitKeySpecs(resolvedActual);
+        final String[] expected = (expectedArray.length == 0) ? null : expectedArray;
+        assertArrayEquals(message, expected, actual);
+    }
+
+    private void assertError(final String message, final String value, final String ... expected) {
+        try {
+            assertTextArray(message, value, expected);
+            fail(message);
+        } catch (Exception pcpe) {
+            // success.
+        }
+    }
+
+    // \U001d11e: MUSICAL SYMBOL G CLEF
+    private static final String PAIR1 = "\ud834\udd1e";
+    // \U001d122: MUSICAL SYMBOL F CLEF
+    private static final String PAIR2 = "\ud834\udd22";
+    // \U002f8a6: CJK COMPATIBILITY IDEOGRAPH-2F8A6; variant character of \u6148.
+    private static final String PAIR3 = "\ud87e\udca6";
+    private static final String SURROGATE1 = PAIR1 + PAIR2;
+    private static final String SURROGATE2 = PAIR1 + PAIR2 + PAIR3;
+
+    public void testResolveNullText() {
+        assertNull("resolve null", mTextsSet.resolveTextReference(null));
+    }
+
+    public void testResolveEmptyText() {
+        assertNull("resolve empty text", mTextsSet.resolveTextReference("!text/empty_string"));
+    }
+
+    public void testSplitZero() {
+        assertTextArray("Empty string", "");
+        assertTextArray("Empty entry", ",");
+        assertTextArray("Empty entry at beginning", ",a", "a");
+        assertTextArray("Empty entry at end", "a,", "a");
+        assertTextArray("Empty entry at middle", "a,,b", "a", "b");
+        assertTextArray("Empty entries with escape", ",a,b\\,c,,d,", "a", "b\\,c", "d");
+    }
+
+    public void testSplitSingle() {
+        assertTextArray("Single char", "a", "a");
+        assertTextArray("Surrogate pair", PAIR1, PAIR1);
+        assertTextArray("Single escape", "\\", "\\");
+        assertTextArray("Space", " ", " ");
+        assertTextArray("Single label", "abc", "abc");
+        assertTextArray("Single surrogate pairs label", SURROGATE2, SURROGATE2);
+        assertTextArray("Spaces", "   ", "   ");
+        assertTextArray("Spaces in label", "a b c", "a b c");
+        assertTextArray("Spaces at beginning of label", " abc", " abc");
+        assertTextArray("Spaces at end of label", "abc ", "abc ");
+        assertTextArray("Label surrounded by spaces", " abc ", " abc ");
+        assertTextArray("Surrogate pair surrounded by space",
+                " " + PAIR1 + " ",
+                " " + PAIR1 + " ");
+        assertTextArray("Surrogate pair within characters",
+                "ab" + PAIR2 + "cd",
+                "ab" + PAIR2 + "cd");
+        assertTextArray("Surrogate pairs within characters",
+                "ab" + SURROGATE1 + "cd",
+                "ab" + SURROGATE1 + "cd");
+
+        assertTextArray("Incomplete resource reference 1", "text", "text");
+        assertTextArray("Incomplete resource reference 2", "!text", "!text");
+        assertTextArray("Incomplete RESOURCE REFERENCE 2", "!TEXT", "!TEXT");
+        assertTextArray("Incomplete resource reference 3", "text/", "text/");
+        assertTextArray("Incomplete resource reference 4", "!" + SURROGATE2, "!" + SURROGATE2);
+    }
+
+    public void testSplitSingleEscaped() {
+        assertTextArray("Escaped char", "\\a", "\\a");
+        assertTextArray("Escaped surrogate pair", "\\" + PAIR1, "\\" + PAIR1);
+        assertTextArray("Escaped comma", "\\,", "\\,");
+        assertTextArray("Escaped comma escape", "a\\,\\", "a\\,\\");
+        assertTextArray("Escaped escape", "\\\\", "\\\\");
+        assertTextArray("Escaped label", "a\\bc", "a\\bc");
+        assertTextArray("Escaped surrogate", "a\\" + PAIR1 + "c", "a\\" + PAIR1 + "c");
+        assertTextArray("Escaped label at beginning", "\\abc", "\\abc");
+        assertTextArray("Escaped surrogate at beginning", "\\" + SURROGATE2, "\\" + SURROGATE2);
+        assertTextArray("Escaped label at end", "abc\\", "abc\\");
+        assertTextArray("Escaped surrogate at end", SURROGATE2 + "\\", SURROGATE2 + "\\");
+        assertTextArray("Escaped label with comma", "a\\,c", "a\\,c");
+        assertTextArray("Escaped surrogate with comma",
+                PAIR1 + "\\," + PAIR2, PAIR1 + "\\," + PAIR2);
+        assertTextArray("Escaped label with comma at beginning", "\\,bc", "\\,bc");
+        assertTextArray("Escaped surrogate with comma at beginning",
+                "\\," + SURROGATE1, "\\," + SURROGATE1);
+        assertTextArray("Escaped label with comma at end", "ab\\,", "ab\\,");
+        assertTextArray("Escaped surrogate with comma at end",
+                SURROGATE2 + "\\,", SURROGATE2 + "\\,");
+        assertTextArray("Escaped label with successive", "\\,\\\\bc", "\\,\\\\bc");
+        assertTextArray("Escaped surrogate with successive",
+                "\\,\\\\" + SURROGATE1, "\\,\\\\" + SURROGATE1);
+        assertTextArray("Escaped label with escape", "a\\\\c", "a\\\\c");
+        assertTextArray("Escaped surrogate with escape",
+                PAIR1 + "\\\\" + PAIR2, PAIR1 + "\\\\" + PAIR2);
+
+        assertTextArray("Escaped !text", "\\!text", "\\!text");
+        assertTextArray("Escaped !text/", "\\!text/", "\\!text/");
+        assertTextArray("Escaped !TEXT/", "\\!TEXT/", "\\!TEXT/");
+        assertTextArray("Escaped !text/name", "\\!text/empty_string", "\\!text/empty_string");
+        assertTextArray("Escaped !TEXT/NAME", "\\!TEXT/EMPTY_STRING", "\\!TEXT/EMPTY_STRING");
+    }
+
+    public void testSplitMulti() {
+        assertTextArray("Multiple chars", "a,b,c", "a", "b", "c");
+        assertTextArray("Multiple chars", "a,b,\\c", "a", "b", "\\c");
+        assertTextArray("Multiple chars and escape at beginning and end",
+                "\\a,b,\\c\\", "\\a", "b", "\\c\\");
+        assertTextArray("Multiple surrogates", PAIR1 + "," + PAIR2 + "," + PAIR3,
+                PAIR1, PAIR2, PAIR3);
+        assertTextArray("Multiple chars surrounded by spaces", " a , b , c ", " a ", " b ", " c ");
+        assertTextArray("Multiple labels", "abc,def,ghi", "abc", "def", "ghi");
+        assertTextArray("Multiple surrogated", SURROGATE1 + "," + SURROGATE2,
+                SURROGATE1, SURROGATE2);
+        assertTextArray("Multiple labels surrounded by spaces", " abc , def , ghi ",
+                " abc ", " def ", " ghi ");
+    }
+
+    public void testSplitMultiEscaped() {
+        assertTextArray("Multiple chars with comma", "a,\\,,c", "a", "\\,", "c");
+        assertTextArray("Multiple chars with comma surrounded by spaces", " a , \\, , c ",
+                " a ", " \\, ", " c ");
+        assertTextArray("Multiple labels with escape",
+                "\\abc,d\\ef,gh\\i", "\\abc", "d\\ef", "gh\\i");
+        assertTextArray("Multiple labels with escape surrounded by spaces",
+                " \\abc , d\\ef , gh\\i ", " \\abc ", " d\\ef ", " gh\\i ");
+        assertTextArray("Multiple labels with comma and escape",
+                "ab\\\\,d\\\\\\,,g\\,i", "ab\\\\", "d\\\\\\,", "g\\,i");
+        assertTextArray("Multiple labels with comma and escape surrounded by spaces",
+                " ab\\\\ , d\\\\\\, , g\\,i ", " ab\\\\ ", " d\\\\\\, ", " g\\,i ");
+
+        assertTextArray("Multiple escaped !text", "\\!,\\!text/empty_string",
+                "\\!", "\\!text/empty_string");
+        assertTextArray("Multiple escaped !TEXT", "\\!,\\!TEXT/EMPTY_STRING",
+                "\\!", "\\!TEXT/EMPTY_STRING");
+    }
+
+    public void testSplitResourceError() {
+        assertError("Incomplete resource name", "!text/", "!text/");
+        assertError("Non existing resource", "!text/non_existing");
+    }
+
+    public void testSplitResourceZero() {
+        assertTextArray("Empty string",
+                "!text/empty_string");
+    }
+
+    public void testSplitResourceSingle() {
+        assertTextArray("Single char",
+                "!text/single_char", "a");
+        assertTextArray("Space",
+                "!text/space", " ");
+        assertTextArray("Single label",
+                "!text/single_label", "abc");
+        assertTextArray("Spaces",
+                "!text/spaces", "   ");
+        assertTextArray("Spaces in label",
+                "!text/spaces_in_label", "a b c");
+        assertTextArray("Spaces at beginning of label",
+                "!text/spaces_at_beginning_of_label", " abc");
+        assertTextArray("Spaces at end of label",
+                "!text/spaces_at_end_of_label", "abc ");
+        assertTextArray("label surrounded by spaces",
+                "!text/label_surrounded_by_spaces", " abc ");
+
+        assertTextArray("Escape and single char",
+                "\\\\!text/single_char", "\\\\a");
+    }
+
+    public void testSplitResourceSingleEscaped() {
+        assertTextArray("Escaped char",
+                "!text/escaped_char", "\\a");
+        assertTextArray("Escaped comma",
+                "!text/escaped_comma", "\\,");
+        assertTextArray("Escaped comma escape",
+                "!text/escaped_comma_escape", "a\\,\\");
+        assertTextArray("Escaped escape",
+                "!text/escaped_escape", "\\\\");
+        assertTextArray("Escaped label",
+                "!text/escaped_label", "a\\bc");
+        assertTextArray("Escaped label at beginning",
+                "!text/escaped_label_at_beginning", "\\abc");
+        assertTextArray("Escaped label at end",
+                "!text/escaped_label_at_end", "abc\\");
+        assertTextArray("Escaped label with comma",
+                "!text/escaped_label_with_comma", "a\\,c");
+        assertTextArray("Escaped label with comma at beginning",
+                "!text/escaped_label_with_comma_at_beginning", "\\,bc");
+        assertTextArray("Escaped label with comma at end",
+                "!text/escaped_label_with_comma_at_end", "ab\\,");
+        assertTextArray("Escaped label with successive",
+                "!text/escaped_label_with_successive", "\\,\\\\bc");
+        assertTextArray("Escaped label with escape",
+                "!text/escaped_label_with_escape", "a\\\\c");
+    }
+
+    public void testSplitResourceMulti() {
+        assertTextArray("Multiple chars",
+                "!text/multiple_chars", "a", "b", "c");
+        assertTextArray("Multiple chars surrounded by spaces",
+                "!text/multiple_chars_surrounded_by_spaces",
+                " a ", " b ", " c ");
+        assertTextArray("Multiple labels",
+                "!text/multiple_labels", "abc", "def", "ghi");
+        assertTextArray("Multiple labels surrounded by spaces",
+                "!text/multiple_labels_surrounded_by_spaces", " abc ", " def ", " ghi ");
+    }
+
+    public void testSplitResourcetMultiEscaped() {
+        assertTextArray("Multiple chars with comma",
+                "!text/multiple_chars_with_comma",
+                "a", "\\,", "c");
+        assertTextArray("Multiple chars with comma surrounded by spaces",
+                "!text/multiple_chars_with_comma_surrounded_by_spaces",
+                " a ", " \\, ", " c ");
+        assertTextArray("Multiple labels with escape",
+                "!text/multiple_labels_with_escape",
+                "\\abc", "d\\ef", "gh\\i");
+        assertTextArray("Multiple labels with escape surrounded by spaces",
+                "!text/multiple_labels_with_escape_surrounded_by_spaces",
+                " \\abc ", " d\\ef ", " gh\\i ");
+        assertTextArray("Multiple labels with comma and escape",
+                "!text/multiple_labels_with_comma_and_escape",
+                "ab\\\\", "d\\\\\\,", "g\\,i");
+        assertTextArray("Multiple labels with comma and escape surrounded by spaces",
+                "!text/multiple_labels_with_comma_and_escape_surrounded_by_spaces",
+                " ab\\\\ ", " d\\\\\\, ", " g\\,i ");
+    }
+
+    public void testSplitMultipleResources() {
+        assertTextArray("Literals and resources",
+                "1,!text/multiple_chars,z", "1", "a", "b", "c", "z");
+        assertTextArray("Literals and resources and escape at end",
+                "\\1,!text/multiple_chars,z\\", "\\1", "a", "b", "c", "z\\");
+        assertTextArray("Multiple single resource chars and labels",
+                "!text/single_char,!text/single_label,!text/escaped_comma",
+                "a", "abc", "\\,");
+        assertTextArray("Multiple single resource chars and labels 2",
+                "!text/single_char,!text/single_label,!text/escaped_comma_escape",
+                "a", "abc", "a\\,\\");
+        assertTextArray("Multiple multiple resource chars and labels",
+                "!text/multiple_chars,!text/multiple_labels,!text/multiple_chars_with_comma",
+                "a", "b", "c", "abc", "def", "ghi", "a", "\\,", "c");
+        assertTextArray("Concatenated resources",
+                "!text/multiple_chars!text/multiple_labels!text/multiple_chars_with_comma",
+                "a", "b", "cabc", "def", "ghia", "\\,", "c");
+        assertTextArray("Concatenated resource and literal",
+                "abc!text/multiple_labels",
+                "abcabc", "def", "ghi");
+    }
+
+    public void testSplitIndirectReference() {
+        assertTextArray("Indirect",
+                "!text/indirect_string", "a", "b", "c");
+        assertTextArray("Indirect with literal",
+                "1,!text/indirect_string_with_literal,2", "1", "x", "a", "b", "c", "y", "2");
+        assertTextArray("Indirect2",
+                "!text/indirect2_string", "a", "b", "c");
+    }
+
+    public void testSplitInfiniteIndirectReference() {
+        assertError("Infinite indirection",
+                "1,!text/infinite_indirection,2", "1", "infinite", "<infinite>", "loop", "2");
+    }
+
+    public void testLabelReferece() {
+        assertTextArray("Label time am", "!text/keylabel_time_am", "AM");
+
+        assertTextArray("More keys for am pm", "!text/morekeys_am_pm",
+                "!fixedColumnOrder!2", "!hasLabels!", "AM", "PM");
+
+        assertTextArray("Settings as more key", "!text/keyspec_settings",
+                "!icon/settings_key|!code/key_settings");
+
+        assertTextArray("Indirect naviagte actions as more key",
+                "!text/keyspec_indirect_navigate_actions",
+                "!fixedColumnOrder!2",
+                "!hasLabels!", "Prev|!code/key_action_previous",
+                "!hasLabels!", "Next|!code/key_action_next");
+    }
+
+    public void testUselessUpperCaseSpecifier() {
+        assertTextArray("EMPTY STRING",
+                "!TEXT/EMPTY_STRING", "!TEXT/EMPTY_STRING");
+
+        assertTextArray("SINGLE CHAR",
+                "!TEXT/SINGLE_CHAR", "!TEXT/SINGLE_CHAR");
+        assertTextArray("Escape and SINGLE CHAR",
+                "\\\\!TEXT/SINGLE_CHAR", "\\\\!TEXT/SINGLE_CHAR");
+
+        assertTextArray("MULTIPLE CHARS",
+                "!TEXT/MULTIPLE_CHARS", "!TEXT/MULTIPLE_CHARS");
+
+        assertTextArray("Literals and RESOURCES",
+                "1,!TEXT/MULTIPLE_CHARS,z", "1", "!TEXT/MULTIPLE_CHARS", "z");
+        assertTextArray("Multiple single RESOURCE chars and LABELS 2",
+                "!TEXT/SINGLE_CHAR,!TEXT/SINGLE_LABEL,!TEXT/ESCAPED_COMMA_ESCAPE",
+                "!TEXT/SINGLE_CHAR", "!TEXT/SINGLE_LABEL", "!TEXT/ESCAPED_COMMA_ESCAPE");
+
+        assertTextArray("INDIRECT",
+                "!TEXT/INDIRECT_STRING", "!TEXT/INDIRECT_STRING");
+        assertTextArray("INDIRECT with literal",
+                "1,!TEXT/INDIRECT_STRING_WITH_LITERAL,2",
+                "1", "!TEXT/INDIRECT_STRING_WITH_LITERAL", "2");
+        assertTextArray("INDIRECT2",
+                "!TEXT/INDIRECT2_STRING", "!TEXT/INDIRECT2_STRING");
+
+        assertTextArray("Upper indirect",
+                "!text/upper_indirect_string", "!TEXT/MULTIPLE_CHARS");
+        assertTextArray("Upper indirect with literal",
+                "1,!text/upper_indirect_string_with_literal,2",
+                "1", "x", "!TEXT/MULTIPLE_CHARS", "y", "2");
+        assertTextArray("Upper indirect2",
+                "!text/upper_indirect2_string", "!TEXT/UPPER_INDIRECT_STRING");
+
+        assertTextArray("UPPER INDIRECT",
+                "!TEXT/upper_INDIRECT_STRING", "!TEXT/upper_INDIRECT_STRING");
+        assertTextArray("Upper INDIRECT with literal",
+                "1,!TEXT/upper_INDIRECT_STRING_WITH_LITERAL,2",
+                "1", "!TEXT/upper_INDIRECT_STRING_WITH_LITERAL", "2");
+        assertTextArray("Upper INDIRECT2",
+                "!TEXT/upper_INDIRECT2_STRING", "!TEXT/upper_INDIRECT2_STRING");
+
+        assertTextArray("INFINITE INDIRECTION",
+                "1,!TEXT/INFINITE_INDIRECTION,2", "1", "!TEXT/INFINITE_INDIRECTION", "2");
+
+        assertTextArray("Upper infinite indirection",
+                "1,!text/upper_infinite_indirection,2",
+                "1", "infinite", "!TEXT/INFINITE_INDIRECTION", "loop", "2");
+        assertTextArray("Upper INFINITE INDIRECTION",
+                "1,!TEXT/UPPER_INFINITE_INDIRECTION,2",
+                "1", "!TEXT/UPPER_INFINITE_INDIRECTION", "2");
+
+        assertTextArray("LABEL TIME AM", "!TEXT/LABEL_TIME_AM", "!TEXT/LABEL_TIME_AM");
+        assertTextArray("MORE KEYS FOR AM OM", "!TEXT/MORE_KEYS_FOR_AM_PM",
+                "!TEXT/MORE_KEYS_FOR_AM_PM");
+        assertTextArray("SETTINGS AS MORE KEY", "!TEXT/SETTINGS_AS_MORE_KEY",
+                "!TEXT/SETTINGS_AS_MORE_KEY");
+        assertTextArray("INDIRECT NAVIGATE ACTIONS AS MORE KEY",
+                "!TEXT/INDIRECT_NAVIGATE_ACTIONS_AS_MORE_KEY",
+                "!TEXT/INDIRECT_NAVIGATE_ACTIONS_AS_MORE_KEY");
+     }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java
new file mode 100644
index 0000000..6c0d749
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MoreKeySpecTests.java
@@ -0,0 +1,374 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import static com.android.inputmethod.keyboard.internal.KeyboardIconsSet.ICON_UNDEFINED;
+import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Arrays;
+import java.util.Locale;
+
+@SmallTest
+public final class MoreKeySpecTests extends KeySpecParserTestsBase {
+    @Override
+    protected void assertParser(final String message, final String moreKeySpec,
+            final String expectedLabel, final String expectedOutputText, final int expectedIconId,
+            final int expectedCode) {
+        final String labelResolved = mTextsSet.resolveTextReference(moreKeySpec);
+        final MoreKeySpec spec = new MoreKeySpec(
+                labelResolved, false /* needsToUpperCase */, Locale.US);
+        assertEquals(message + " [label]", expectedLabel, spec.mLabel);
+        assertEquals(message + " [ouptputText]", expectedOutputText, spec.mOutputText);
+        assertEquals(message + " [icon]",
+                KeyboardIconsSet.getIconName(expectedIconId),
+                KeyboardIconsSet.getIconName(spec.mIconId));
+        assertEquals(message + " [code]",
+                Constants.printableCode(expectedCode),
+                Constants.printableCode(spec.mCode));
+    }
+
+    // TODO: Move this method to {@link KeySpecParserBase}.
+    public void testEmptySpec() {
+        assertParserError("Null spec", null,
+                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+        assertParserError("Empty spec", "",
+                null, null, ICON_UNDEFINED, CODE_UNSPECIFIED);
+    }
+
+    private static void assertArrayEquals(final String message, final Object[] expected,
+            final Object[] actual) {
+        if (expected == actual) {
+            return;
+        }
+        if (expected == null || actual == null) {
+            assertEquals(message, Arrays.toString(expected), Arrays.toString(actual));
+            return;
+        }
+        if (expected.length != actual.length) {
+            assertEquals(message + " [length]", Arrays.toString(expected), Arrays.toString(actual));
+            return;
+        }
+        for (int i = 0; i < expected.length; i++) {
+            assertEquals(message + " [" + i + "]",
+                    Arrays.toString(expected), Arrays.toString(actual));
+        }
+    }
+
+    private static void assertInsertAdditionalMoreKeys(final String message,
+            final String[] moreKeys, final String[] additionalMoreKeys, final String[] expected) {
+        final String[] actual = MoreKeySpec.insertAdditionalMoreKeys(moreKeys, additionalMoreKeys);
+        assertArrayEquals(message, expected, actual);
+    }
+
+    public void testEmptyEntry() {
+        assertInsertAdditionalMoreKeys("null more keys and null additons",
+                null,
+                null,
+                null);
+        assertInsertAdditionalMoreKeys("null more keys and empty additons",
+                null,
+                new String[0],
+                null);
+        assertInsertAdditionalMoreKeys("empty more keys and null additons",
+                new String[0],
+                null,
+                null);
+        assertInsertAdditionalMoreKeys("empty more keys and empty additons",
+                new String[0],
+                new String[0],
+                null);
+
+        assertInsertAdditionalMoreKeys("filter out empty more keys",
+                new String[] { null, "a", "", "b", null },
+                null,
+                new String[] { "a", "b" });
+        assertInsertAdditionalMoreKeys("filter out empty additons",
+                new String[] { "a", "%", "b", "%", "c", "%", "d" },
+                new String[] { null, "A", "", "B", null },
+                new String[] { "a", "A", "b", "B", "c", "d" });
+    }
+
+    public void testInsertAdditionalMoreKeys() {
+        // Escaped marker.
+        assertInsertAdditionalMoreKeys("escaped marker",
+                new String[] { "\\%", "%-)" },
+                new String[] { "1", "2" },
+                new String[] { "1", "2", "\\%", "%-)" });
+
+        // 0 more key.
+        assertInsertAdditionalMoreKeys("null & null", null, null, null);
+        assertInsertAdditionalMoreKeys("null & 1 additon",
+                null,
+                new String[] { "1" },
+                new String[] { "1" });
+        assertInsertAdditionalMoreKeys("null & 2 additons",
+                null,
+                new String[] { "1", "2" },
+                new String[] { "1", "2" });
+
+        // 0 additional more key.
+        assertInsertAdditionalMoreKeys("1 more key & null",
+                new String[] { "A" },
+                null,
+                new String[] { "A" });
+        assertInsertAdditionalMoreKeys("2 more keys & null",
+                new String[] { "A", "B" },
+                null,
+                new String[] { "A", "B" });
+
+        // No marker.
+        assertInsertAdditionalMoreKeys("1 more key & 1 addtional & no marker",
+                new String[] { "A" },
+                new String[] { "1" },
+                new String[] { "1", "A" });
+        assertInsertAdditionalMoreKeys("1 more key & 2 addtionals & no marker",
+                new String[] { "A" },
+                new String[] { "1", "2" },
+                new String[] { "1", "2", "A" });
+        assertInsertAdditionalMoreKeys("2 more keys & 1 addtional & no marker",
+                new String[] { "A", "B" },
+                new String[] { "1" },
+                new String[] { "1", "A", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 addtionals & no marker",
+                new String[] { "A", "B" },
+                new String[] { "1", "2" },
+                new String[] { "1", "2", "A", "B" });
+
+        // 1 marker.
+        assertInsertAdditionalMoreKeys("1 more key & 1 additon & marker at head",
+                new String[] { "%", "A" },
+                new String[] { "1" },
+                new String[] { "1", "A" });
+        assertInsertAdditionalMoreKeys("1 more key & 1 additon & marker at tail",
+                new String[] { "A", "%" },
+                new String[] { "1" },
+                new String[] { "A", "1" });
+        assertInsertAdditionalMoreKeys("2 more keys & 1 additon & marker at middle",
+                new String[] { "A", "%", "B" },
+                new String[] { "1" },
+                new String[] { "A", "1", "B" });
+
+        // 1 marker & excess additional more keys.
+        assertInsertAdditionalMoreKeys("1 more key & 2 additons & marker at head",
+                new String[] { "%", "A", "B" },
+                new String[] { "1", "2" },
+                new String[] { "1", "A", "B", "2" });
+        assertInsertAdditionalMoreKeys("1 more key & 2 additons & marker at tail",
+                new String[] { "A", "B", "%" },
+                new String[] { "1", "2" },
+                new String[] { "A", "B", "1", "2" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & marker at middle",
+                new String[] { "A", "%", "B" },
+                new String[] { "1", "2" },
+                new String[] { "A", "1", "B", "2" });
+
+        // 2 markers.
+        assertInsertAdditionalMoreKeys("0 more key & 2 addtional & 2 markers",
+                new String[] { "%", "%" },
+                new String[] { "1", "2" },
+                new String[] { "1", "2" });
+        assertInsertAdditionalMoreKeys("1 more key & 2 addtional & 2 markers at head",
+                new String[] { "%", "%", "A" },
+                new String[] { "1", "2" },
+                new String[] { "1", "2", "A" });
+        assertInsertAdditionalMoreKeys("1 more key & 2 addtional & 2 markers at tail",
+                new String[] { "A", "%", "%" },
+                new String[] { "1", "2" },
+                new String[] { "A", "1", "2" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at middle",
+                new String[] { "A", "%", "%", "B" },
+                new String[] { "1", "2" },
+                new String[] { "A", "1", "2", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at head & middle",
+                new String[] { "%", "A", "%", "B" },
+                new String[] { "1", "2" },
+                new String[] { "1", "A", "2", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at head & tail",
+                new String[] { "%", "A", "B", "%" },
+                new String[] { "1", "2" },
+                new String[] { "1", "A", "B", "2" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 addtional & 2 markers at middle & tail",
+                new String[] { "A", "%", "B", "%" },
+                new String[] { "1", "2" },
+                new String[] { "A", "1", "B", "2" });
+
+        // 2 markers & excess additional more keys.
+        assertInsertAdditionalMoreKeys("0 more key & 2 additons & 2 markers",
+                new String[] { "%", "%" },
+                new String[] { "1", "2", "3" },
+                new String[] { "1", "2", "3" });
+        assertInsertAdditionalMoreKeys("1 more key & 2 additons & 2 markers at head",
+                new String[] { "%", "%", "A" },
+                new String[] { "1", "2", "3" },
+                new String[] { "1", "2", "A", "3" });
+        assertInsertAdditionalMoreKeys("1 more key & 2 additons & 2 markers at tail",
+                new String[] { "A", "%", "%" },
+                new String[] { "1", "2", "3" },
+                new String[] { "A", "1", "2", "3" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at middle",
+                new String[] { "A", "%", "%", "B" },
+                new String[] { "1", "2", "3" },
+                new String[] { "A", "1", "2", "B", "3" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at head & middle",
+                new String[] { "%", "A", "%", "B" },
+                new String[] { "1", "2", "3" },
+                new String[] { "1", "A", "2", "B", "3" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at head & tail",
+                new String[] { "%", "A", "B", "%" },
+                new String[] { "1", "2", "3" },
+                new String[] { "1", "A", "B", "2", "3" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & 2 markers at middle & tail",
+                new String[] { "A", "%", "B", "%" },
+                new String[] { "1", "2", "3" },
+                new String[] { "A", "1", "B", "2", "3" });
+
+        // 0 addtional more key and excess markers.
+        assertInsertAdditionalMoreKeys("0 more key & null & excess marker",
+                new String[] { "%" },
+                null,
+                null);
+        assertInsertAdditionalMoreKeys("1 more key & null & excess marker at head",
+                new String[] { "%", "A" },
+                null,
+                new String[] { "A" });
+        assertInsertAdditionalMoreKeys("1 more key & null & excess marker at tail",
+                new String[] { "A", "%" },
+                null,
+                new String[] { "A" });
+        assertInsertAdditionalMoreKeys("2 more keys & null & excess marker at middle",
+                new String[] { "A", "%", "B" },
+                null,
+                new String[] { "A", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & null & excess markers",
+                new String[] { "%", "A", "%", "B", "%" },
+                null,
+                new String[] { "A", "B" });
+
+        // Excess markers.
+        assertInsertAdditionalMoreKeys("0 more key & 1 additon & excess marker",
+                new String[] { "%", "%" },
+                new String[] { "1" },
+                new String[] { "1" });
+        assertInsertAdditionalMoreKeys("1 more key & 1 additon & excess marker at head",
+                new String[] { "%", "%", "A" },
+                new String[] { "1" },
+                new String[] { "1", "A" });
+        assertInsertAdditionalMoreKeys("1 more key & 1 additon & excess marker at tail",
+                new String[] { "A", "%", "%" },
+                new String[] { "1" },
+                new String[] { "A", "1" });
+        assertInsertAdditionalMoreKeys("2 more keys & 1 additon & excess marker at middle",
+                new String[] { "A", "%", "%", "B" },
+                new String[] { "1" },
+                new String[] { "A", "1", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & 1 additon & excess markers",
+                new String[] { "%", "A", "%", "B", "%" },
+                new String[] { "1" },
+                new String[] { "1", "A", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & 2 additons & excess markers",
+                new String[] { "%", "A", "%", "B", "%" },
+                new String[] { "1", "2" },
+                new String[] { "1", "A", "2", "B" });
+        assertInsertAdditionalMoreKeys("2 more keys & 3 additons & excess markers",
+                new String[] { "%", "A", "%", "%", "B", "%" },
+                new String[] { "1", "2", "3" },
+                new String[] { "1", "A", "2", "3", "B" });
+    }
+
+    private static final String HAS_LABEL = "!hasLabel!";
+    private static final String NEEDS_DIVIDER = "!needsDividers!";
+    private static final String AUTO_COLUMN_ORDER = "!autoColumnOrder!";
+    private static final String FIXED_COLUMN_ORDER = "!fixedColumnOrder!";
+
+    private static void assertGetBooleanValue(final String message, final String key,
+            final String[] moreKeys, final String[] expected, final boolean expectedValue) {
+        final String[] actual = Arrays.copyOf(moreKeys, moreKeys.length);
+        final boolean actualValue = MoreKeySpec.getBooleanValue(actual, key);
+        assertEquals(message + " [value]", expectedValue, actualValue);
+        assertArrayEquals(message, expected, actual);
+    }
+
+    public void testGetBooleanValue() {
+        assertGetBooleanValue("Has label", HAS_LABEL,
+                new String[] { HAS_LABEL, "a", "b", "c" },
+                new String[] { null, "a", "b", "c" }, true);
+        // Upper case specification will not work.
+        assertGetBooleanValue("HAS LABEL", HAS_LABEL,
+                new String[] { HAS_LABEL.toUpperCase(Locale.ROOT), "a", "b", "c" },
+                new String[] { "!HASLABEL!", "a", "b", "c" }, false);
+
+        assertGetBooleanValue("No has label", HAS_LABEL,
+                new String[] { "a", "b", "c" },
+                new String[] { "a", "b", "c" }, false);
+        assertGetBooleanValue("No has label with fixed clumn order", HAS_LABEL,
+                new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" },
+                new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" }, false);
+
+        // Upper case specification will not work.
+        assertGetBooleanValue("Multiple has label", HAS_LABEL,
+                new String[] {
+                    "a", HAS_LABEL.toUpperCase(Locale.ROOT), "b", "c", HAS_LABEL, "d" },
+                new String[] {
+                    "a", "!HASLABEL!", "b", "c", null, "d" }, true);
+        // Upper case specification will not work.
+        assertGetBooleanValue("Multiple has label with needs dividers", HAS_LABEL,
+                new String[] {
+                    "a", HAS_LABEL, "b", NEEDS_DIVIDER, HAS_LABEL.toUpperCase(Locale.ROOT), "d" },
+                new String[] {
+                    "a", null, "b", NEEDS_DIVIDER, "!HASLABEL!", "d" }, true);
+    }
+
+    private static void assertGetIntValue(final String message, final String key,
+            final int defaultValue, final String[] moreKeys, final String[] expected,
+            final int expectedValue) {
+        final String[] actual = Arrays.copyOf(moreKeys, moreKeys.length);
+        final int actualValue = MoreKeySpec.getIntValue(actual, key, defaultValue);
+        assertEquals(message + " [value]", expectedValue, actualValue);
+        assertArrayEquals(message, expected, actual);
+    }
+
+    public void testGetIntValue() {
+        assertGetIntValue("Fixed column order 3", FIXED_COLUMN_ORDER, -1,
+                new String[] { FIXED_COLUMN_ORDER + "3", "a", "b", "c" },
+                new String[] { null, "a", "b", "c" }, 3);
+        // Upper case specification will not work.
+        assertGetIntValue("FIXED COLUMN ORDER 3", FIXED_COLUMN_ORDER, -1,
+                new String[] { FIXED_COLUMN_ORDER.toUpperCase(Locale.ROOT) + "3", "a", "b", "c" },
+                new String[] { "!FIXEDCOLUMNORDER!3", "a", "b", "c" }, -1);
+
+        assertGetIntValue("No fixed column order", FIXED_COLUMN_ORDER, -1,
+                new String[] { "a", "b", "c" },
+                new String[] { "a", "b", "c" }, -1);
+        assertGetIntValue("No fixed column order with auto column order", FIXED_COLUMN_ORDER, -1,
+                new String[] { AUTO_COLUMN_ORDER + "5", "a", "b", "c" },
+                new String[] { AUTO_COLUMN_ORDER + "5", "a", "b", "c" }, -1);
+
+        assertGetIntValue("Multiple fixed column order 3,5", FIXED_COLUMN_ORDER, -1,
+                new String[] { FIXED_COLUMN_ORDER + "3", "a", FIXED_COLUMN_ORDER + "5", "b" },
+                new String[] { null, "a", null, "b" }, 3);
+        // Upper case specification will not work.
+        assertGetIntValue("Multiple fixed column order 5,3 with has label", FIXED_COLUMN_ORDER, -1,
+                new String[] {
+                    FIXED_COLUMN_ORDER.toUpperCase(Locale.ROOT) + "5", HAS_LABEL, "a",
+                    FIXED_COLUMN_ORDER + "3", "b" },
+                new String[] { "!FIXEDCOLUMNORDER!5", HAS_LABEL, "a", null, "b" }, 3);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java
index 279559c..7908b26 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueueTests.java
@@ -27,7 +27,7 @@
 
         public final int mId;
         public boolean mIsModifier;
-        public boolean mIsInSlidingKeyInput;
+        public boolean mIsInDraggingFinger;
         public long mPhantomUpEventTime = NOT_HAPPENED;
 
         public Element(int id) {
@@ -40,8 +40,8 @@
         }
 
         @Override
-        public boolean isInSlidingKeyInput() {
-            return mIsInSlidingKeyInput;
+        public boolean isInDraggingFinger() {
+            return mIsInDraggingFinger;
         }
 
         @Override
@@ -297,19 +297,19 @@
         assertEquals(Element.NOT_HAPPENED, mElement4.mPhantomUpEventTime);
     }
 
-    public void testIsAnyInSlidingKeyInput() {
+    public void testIsAnyInDraggingFinger() {
         Element.sPhantomUpCount = 0;
-        assertFalse(mQueue.isAnyInSlidingKeyInput());
+        assertFalse(mQueue.isAnyInDraggingFinger());
 
         mQueue.add(mElement1);
         mQueue.add(mElement2);
         mQueue.add(mElement3);
         mQueue.add(mElement4);
 
-        assertFalse(mQueue.isAnyInSlidingKeyInput());
+        assertFalse(mQueue.isAnyInDraggingFinger());
 
-        mElement3.mIsInSlidingKeyInput = true;
-        assertTrue(mQueue.isAnyInSlidingKeyInput());
+        mElement3.mIsInDraggingFinger = true;
+        assertTrue(mQueue.isAnyInDraggingFinger());
 
         assertEquals(0, Element.sPhantomUpCount);
         assertEquals(4, mQueue.size());
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
new file mode 100644
index 0000000..fa81865
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.Symbols.RtlSymbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted.RtlSymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+public final class Arabic extends LayoutBase {
+    private static final String LAYOUT_NAME = "arabic";
+
+    public Arabic(final LayoutCustomizer customizer) {
+        super(customizer, ArabicSymbols.class, ArabicSymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class ArabicCustomizer extends LayoutCustomizer {
+        public ArabicCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return ARABIC_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getSymbolsKey() { return ARABIC_SYMBOLS_KEY; }
+
+        @Override
+        public ExpectedKey getBackToSymbolsKey() { return ARABIC_BACK_TO_SYMBOLS_KEY; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() {
+            return RtlSymbols.DOUBLE_ANGLE_QUOTES_LR_RTL;
+        }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() {
+            return RtlSymbols.SINGLE_ANGLE_QUOTES_LR_RTL;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            if (isPhone) {
+                // U+060C: "،" ARABIC COMMA
+                return joinKeys(key("\u060C", SETTINGS_KEY));
+            }
+            // U+060C: "،" ARABIC COMMA
+            // U+061F: "؟" ARABIC QUESTION MARK
+            // U+061B: "؛" ARABIC SEMICOLON
+            return joinKeys(key("\u060C", joinMoreKeys(
+                    ":", "!", "\u061F", "\u061B", "-", "\"", "'", SETTINGS_KEY)),
+                    "_");
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            if (isPhone) {
+                return super.getKeysRightToSpacebar(isPhone);
+            }
+            // U+060C: "،" ARABIC COMMA
+            // U+061F: "؟" ARABIC QUESTION MARK
+            // U+061B: "؛" ARABIC SEMICOLON
+            return joinKeys("/", key(".", getPunctuationMoreKeys(isPhone)));
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return ARABIC_DIACRITICS;
+        }
+
+        // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
+        // U+200C: ZERO WIDTH NON-JOINER
+        // U+0628: "ب" ARABIC LETTER BEH
+        // U+062C: "ج" ARABIC LETTER JEEM
+        private static final ExpectedKey ARABIC_ALPHABET_KEY = key(
+                "\u0623\u200C\u0628\u200C\u062C", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        // U+0663: "٣" ARABIC-INDIC DIGIT THREE
+        // U+0662: "٢" ARABIC-INDIC DIGIT TWO
+        // U+0661: "١" ARABIC-INDIC DIGIT ONE
+        // U+061F: "؟" ARABIC QUESTION MARK
+        private static final ExpectedKey ARABIC_SYMBOLS_KEY = key(
+                "\u0663\u0662\u0661\u061F", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        private static final ExpectedKey ARABIC_BACK_TO_SYMBOLS_KEY = key(
+                "\u0663\u0662\u0661\u061F", Constants.CODE_SHIFT);
+
+        private static final ExpectedKey[] ARABIC_DIACRITICS = {
+                // U+0655: "ٕ" ARABIC HAMZA BELOW
+                // U+0654: "ٔ" ARABIC HAMZA ABOVE
+                // U+0652: "ْ" ARABIC SUKUN
+                // U+064D: "ٍ" ARABIC KASRATAN
+                // U+064C: "ٌ" ARABIC DAMMATAN
+                // U+064B: "ً" ARABIC FATHATAN
+                // U+0651: "ّ" ARABIC SHADDA
+                // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+                // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+                // U+0653: "ٓ" ARABIC MADDAH ABOVE
+                // U+0650: "ِ" ARABIC KASRA
+                // U+064F: "ُ" ARABIC DAMMA
+                // U+064E: "َ" ARABIC FATHA
+                // U+0640: "ـ" ARABIC TATWEEL
+                moreKey(" \u0655", "\u0655"), moreKey(" \u0654", "\u0654"),
+                moreKey(" \u0652", "\u0652"), moreKey(" \u064D", "\u064D"),
+                moreKey(" \u064C", "\u064C"), moreKey(" \u064B", "\u064B"),
+                moreKey(" \u0651", "\u0651"), moreKey(" \u0656", "\u0656"),
+                moreKey(" \u0670", "\u0670"), moreKey(" \u0653", "\u0653"),
+                moreKey(" \u0650", "\u0650"), moreKey(" \u064F", "\u064F"),
+                moreKey(" \u064E", "\u064E"), moreKey("\u0640\u0640\u0640", "\u0640")
+        };
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        if (isPhone) {
+            return ALPHABET_COMMON;
+        } else {
+            final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+            // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
+            builder.insertKeysAtRow(3, 2, "\u0626");
+            return builder.build();
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0636: "ض" ARABIC LETTER DAD
+                    // U+0661: "١" ARABIC-INDIC DIGIT ONE
+                    key("\u0636", joinMoreKeys("1", "\u0661")),
+                    // U+0635: "ص" ARABIC LETTER SAD
+                    // U+0662: "٢" ARABIC-INDIC DIGIT TWO
+                    key("\u0635", joinMoreKeys("2", "\u0662")),
+                    // U+062B: "ث" ARABIC LETTER THEH
+                    // U+0663: "٣" ARABIC-INDIC DIGIT THREE
+                    key("\u062B", joinMoreKeys("3", "\u0663")),
+                    // U+0642: "ق" ARABIC LETTER QAF
+                    // U+0664: "٤" ARABIC-INDIC DIGIT FOUR
+                    // U+06A8: "ڨ" ARABIC LETTER QAF WITH THREE DOTS ABOVE
+                    key("\u0642", joinMoreKeys("4", "\u0664", "\u06A8")),
+                    // U+0641: "ف" ARABIC LETTER FEH
+                    // U+0665: "٥" ARABIC-INDIC DIGIT FIVE
+                    // U+06A4: "ڤ" ARABIC LETTER VEH
+                    // U+06A2: "ڢ" ARABIC LETTER FEH WITH DOT MOVED BELOW
+                    // U+06A5: "ڥ" ARABIC LETTER FEH WITH THREE DOTS BELOW
+                    key("\u0641", joinMoreKeys("5", "\u0665", "\u06A4", "\u06A2", "\u06A5")),
+                    // U+063A: "غ" ARABIC LETTER GHAIN
+                    // U+0666: "٦" ARABIC-INDIC DIGIT SIX
+                    key("\u063A", joinMoreKeys("6", "\u0666")),
+                    // U+0639: "ع" ARABIC LETTER AIN
+                    // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN
+                    key("\u0639", joinMoreKeys("7", "\u0667")),
+                    // U+0647: "ه" ARABIC LETTER HEH
+                    // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
+                    // U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM
+                    // U+0647 U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER
+                    key("\u0647", joinMoreKeys("8", "\u0668", moreKey("\uFEEB", "\u0647\u200D"))),
+                    // U+062E: "خ" ARABIC LETTER KHAH
+                    // U+0669: "٩" ARABIC-INDIC DIGIT NINE
+                    key("\u062E", joinMoreKeys("9", "\u0669")),
+                    // U+062D: "ح" ARABIC LETTER HAH
+                    // U+0660: "٠" ARABIC-INDIC DIGIT ZERO
+                    key("\u062D", joinMoreKeys("0", "\u0660")),
+                    // U+062C: "ج" ARABIC LETTER JEEM
+                    // U+0686: "چ" ARABIC LETTER TCHEH
+                    key("\u062C", moreKey("\u0686")))
+            .setKeysOfRow(2,
+                    // U+0634: "ش" ARABIC LETTER SHEEN
+                    // U+069C: "ڜ" ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+                    key("\u0634", moreKey("\u069C")),
+                    // U+0633: "س" ARABIC LETTER SEEN
+                    "\u0633",
+                    // U+064A: "ي" ARABIC LETTER YEH
+                    // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
+                    // U+0649: "ى" ARABIC LETTER ALEF MAKSURA
+                    key("\u064A", joinMoreKeys("\u0626", "\u0649")),
+                    // U+0628: "ب" ARABIC LETTER BEH
+                    // U+067E: "پ" ARABIC LETTER PEH
+                    key("\u0628", moreKey("\u067E")),
+                    // U+0644: "ل" ARABIC LETTER LAM
+                    // U+FEFB: "ﻻ" ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+                    // U+0627: "ا" ARABIC LETTER ALEF
+                    // U+FEF7: "ﻷ" ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+                    // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
+                    // U+FEF9: "ﻹ" ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+                    // U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW
+                    // U+FEF5: "ﻵ" ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+                    // U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
+                    key("\u0644",
+                            moreKey("\uFEFB", "\u0644\u0627"), moreKey("\uFEF7", "\u0644\u0623"),
+                            moreKey("\uFEF9", "\u0644\u0625"), moreKey("\uFEF5", "\u0644\u0622")),
+                    // U+0627: "ا" ARABIC LETTER ALEF
+                    // U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
+                    // U+0621: "ء" ARABIC LETTER HAMZA
+                    // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
+                    // U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW
+                    // U+0671: "ٱ" ARABIC LETTER ALEF WASLA
+                    key("\u0627", joinMoreKeys("\u0622", "\u0621", "\u0623", "\u0625", "\u0671")),
+                    // U+062A: "ت" ARABIC LETTER TEH
+                    // U+0646: "ن" ARABIC LETTER NOON
+                    // U+0645: "م" ARABIC LETTER MEEM
+                    "\u062A", "\u0646", "\u0645",
+                    // U+0643: "ك" ARABIC LETTER KAF
+                    // U+06AF: "گ" ARABIC LETTER GAF
+                    // U+06A9: "ک" ARABIC LETTER KEHEH
+                    key("\u0643", joinMoreKeys("\u06AF", "\u06A9")),
+                    // U+0637: "ط" ARABIC LETTER TAH
+                    "\u0637")
+            .setKeysOfRow(3,
+                    // U+0630: "ذ" ARABIC LETTER THAL
+                    // U+0621: "ء" ARABIC LETTER HAMZA
+                    // U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE
+                    // U+0631: "ر" ARABIC LETTER REH
+                    "\u0630", "\u0621", "\u0624", "\u0631",
+                    // U+0649: "ى" ARABIC LETTER ALEF MAKSURA
+                    // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
+                    key("\u0649", moreKey("\u0626")),
+                    // U+0629: "ة" ARABIC LETTER TEH MARBUTA
+                    // U+0648: "و" ARABIC LETTER WAW
+                    "\u0629", "\u0648",
+                    // U+0632: "ز" ARABIC LETTER ZAIN
+                    // U+0698: "ژ" ARABIC LETTER JEH
+                    key("\u0632", moreKey("\u0698")),
+                    // U+0638: "ظ" ARABIC LETTER ZAH
+                    // U+062F: "د" ARABIC LETTER DAL
+                    "\u0638", "\u062F")
+            .build();
+
+    private static class ArabicSymbols extends RtlSymbols {
+        public ArabicSymbols(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    // U+0661: "١" ARABIC-INDIC DIGIT ONE
+                    // 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
+                    .replaceKeyOfLabel("1", key("\u0661",
+                            joinMoreKeys("1", "\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")))
+                    // U+0662: "٢" ARABIC-INDIC DIGIT TWO
+                    // U+00B2: "²" SUPERSCRIPT TWO
+                    // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+                    .replaceKeyOfLabel("2", key("\u0662", joinMoreKeys("2", "\u00B2", "\u2154")))
+                    // U+0663: "٣" ARABIC-INDIC DIGIT THREE
+                    // U+00B3: "³" SUPERSCRIPT THREE
+                    // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+                    // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+                    .replaceKeyOfLabel("3", key("\u0663",
+                            joinMoreKeys("3", "\u00B3", "\u00BE", "\u215C")))
+                    // U+0664: "٤" ARABIC-INDIC DIGIT FOUR
+                    // U+2074: "⁴" SUPERSCRIPT FOUR
+                    .replaceKeyOfLabel("4", key("\u0664", joinMoreKeys("4", "\u2074")))
+                    // U+0665: "٥" ARABIC-INDIC DIGIT FIVE
+                    // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+                    .replaceKeyOfLabel("5", key("\u0665", joinMoreKeys("5", "\u215D")))
+                    // U+0666: "٦" ARABIC-INDIC DIGIT SIX
+                    .replaceKeyOfLabel("6", key("\u0666", moreKey("6")))
+                    // U+0667: "٧" ARABIC-INDIC DIGIT SEVEN
+                    // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+                    .replaceKeyOfLabel("7", key("\u0667", joinMoreKeys("7", "\u215E")))
+                    // U+0668: "٨" ARABIC-INDIC DIGIT EIGHT
+                    .replaceKeyOfLabel("8", key("\u0668", moreKey("8")))
+                    // U+0669: "٩" ARABIC-INDIC DIGIT NINE
+                    .replaceKeyOfLabel("9", key("\u0669", moreKey("9")))
+                    // U+0660: "٠" ARABIC-INDIC DIGIT ZERO
+                    // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+                    // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+                    // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+                    // U+2205: "∅" EMPTY SET
+                    .replaceKeyOfLabel("0", key("\u0660",
+                            joinMoreKeys("0", "\u066B", "\u066C", "\u207F", "\u2205")))
+                    // U+066A: "٪" ARABIC PERCENT SIGN
+                    // U+2030: "‰" PER MILLE SIGN
+                    .replaceKeyOfLabel("%", key("\u066A", joinMoreKeys("%", "\u2030")))
+                    // U+061B: "؛" ARABIC SEMICOLON
+                    .replaceKeyOfLabel(";", key("\u061B", moreKey(";")))
+                    // U+061F: "؟" ARABIC QUESTION MARK
+                    // U+00BF: "¿" INVERTED QUESTION MARK
+                    .replaceKeyOfLabel("?", key("\u061F", joinMoreKeys("?", "\u00BF")))
+                    // U+060C: "،" ARABIC COMMA
+                    .replaceKeyOfLabel(",", "\u060C")
+                    // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+                    // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
+                    .replaceKeyOfLabel("(", key("(", ")",
+                            moreKey("\uFD3E", "\uFD3F"), moreKey("<", ">"), moreKey("{", "}"),
+                            moreKey("[", "]")))
+                    // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
+                    // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+                    .replaceKeyOfLabel(")", key(")", "(",
+                            moreKey("\uFD3F", "\uFD3E"), moreKey(">", "<"), moreKey("}", "{"),
+                            moreKey("]", "[")))
+                    // U+2605: "★" BLACK STAR
+                    // U+066D: "٭" ARABIC FIVE POINTED STAR
+                    .setMoreKeysOf("*", "\u2605", "\u066D")
+                    .build();
+        }
+    }
+
+    private static class ArabicSymbolsShifted extends RtlSymbolsShifted {
+        public ArabicSymbolsShifted(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    // U+2022: "•" BULLET
+                    // U+266A: "♪" EIGHTH NOTE
+                    .setMoreKeysOf("\u2022", "\u266A")
+                    // U+060C: "،" ARABIC COMMA
+                    .replaceKeyOfLabel(",", "\u060C")
+                    .build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
new file mode 100644
index 0000000..42ce0c1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/ArmenianPhonetic.java
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Armenian Phonetic alphabet keyboard.
+ */
+public final class ArmenianPhonetic extends LayoutBase {
+    private static final String LAYOUT_NAME = "armenian_phonetic";
+
+    public ArmenianPhonetic(final LayoutCustomizer customizer) {
+        super(customizer, ArmenianSymbols.class, ArmenianSymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class ArmenianPhoneticCustomizer extends LayoutCustomizer {
+        public ArmenianPhoneticCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return ARMENIAN_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            if (isPhone) {
+                return EMPTY_KEYS;
+            }
+            // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+            // U+00A1: "¡" INVERTED EXCLAMATION MARK
+            // U+055E: "՞" ARMENIAN QUESTION MARK
+            // U+00BF: "¿" INVERTED QUESTION MARK
+            return joinKeys(key("!", joinMoreKeys("\u055C", "\u00A1")),
+                    key("?", joinMoreKeys("\u055E", "\u00BF")),
+                    SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            // U+055D: "՝" ARMENIAN COMMA
+            return isPhone ? joinKeys(key("\u055D", SETTINGS_KEY))
+                    : joinKeys(key("\u055D", SETTINGS_KEY), "_");
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            // U+0589: "։" ARMENIAN FULL STOP
+            final ExpectedKey fullStopKey = key("\u0589", getPunctuationMoreKeys(isPhone));
+            return isPhone ? joinKeys(fullStopKey) : joinKeys("/", fullStopKey);
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return ARMENIAN_PUNCTUATION_MORE_KEYS;
+        }
+
+        // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
+        // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
+        // U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM
+        private static final ExpectedKey ARMENIAN_ALPHABET_KEY = key(
+                "\u0531\u0532\u0533", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+055E: "՞" ARMENIAN QUESTION MARK
+        // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+        // U+055A: "՚" ARMENIAN APOSTROPHE
+        // U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+        // U+055D: "՝" ARMENIAN COMMA
+        // U+055B: "՛" ARMENIAN EMPHASIS MARK
+        // U+058A: "֊" ARMENIAN HYPHEN
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+055F: "՟" ARMENIAN ABBREVIATION MARK
+        private static final ExpectedKey[] ARMENIAN_PUNCTUATION_MORE_KEYS = joinMoreKeys(
+                ",", "\u055E", "\u055C", ".", "\u055A", "\u0559", "?", "!",
+                "\u055D", "\u055B", "\u058A", "\u00BB", "\u00AB", "\u055F", ";", ":");
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        if (isPhone) {
+            // U+056D: "խ" ARMENIAN SMALL LETTER XEH
+            // U+0577: "շ" ARMENIAN SMALL LETTER SHA
+            builder.addKeysOnTheRightOfRow(3, "\u056D")
+                    .addKeysOnTheRightOfRow(4, "\u0577");
+        } else {
+            // U+056D: "խ" ARMENIAN SMALL LETTER XEH
+            // U+0577: "շ" ARMENIAN SMALL LETTER SHA
+            builder.addKeysOnTheRightOfRow(2, "\u056D")
+                    .addKeysOnTheRightOfRow(3, "\u0577");
+        }
+        return builder.build();
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0567: "է" ARMENIAN SMALL LETTER EH
+                    key("\u0567", moreKey("1")),
+                    // U+0569: "թ" ARMENIAN SMALL LETTER TO
+                    key("\u0569", moreKey("2")),
+                    // U+0583: "փ" ARMENIAN SMALL LETTER PIWR
+                    key("\u0583", moreKey("3")),
+                    // U+0571: "ձ" ARMENIAN SMALL LETTER JA
+                    key("\u0571", moreKey("4")),
+                    // U+057B: "ջ" ARMENIAN SMALL LETTER JHEH
+                    key("\u057B", moreKey("5")),
+                    // U+0580: "ր" ARMENIAN SMALL LETTER REH
+                    key("\u0580", moreKey("6")),
+                    // U+0579: "չ" ARMENIAN SMALL LETTER CHA
+                    key("\u0579", moreKey("7")),
+                    // U+0573: "ճ" ARMENIAN SMALL LETTER CHEH
+                    key("\u0573", moreKey("8")),
+                    // U+056A: "ժ" ARMENIAN SMALL LETTER ZHE
+                    key("\u056A", moreKey("9")),
+                    // U+056E: "ծ" ARMENIAN SMALL LETTER CA
+                    key("\u056E", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+0584: "ք" ARMENIAN SMALL LETTER KEH
+                    // U+0578: "ո" ARMENIAN SMALL LETTER VO
+                    "\u0584", "\u0578",
+                    // U+0565: "ե" ARMENIAN SMALL LETTER ECH
+                    // U+0587: "և" ARMENIAN SMALL LIGATURE ECH YIWN
+                    key("\u0565", moreKey("\u0587")),
+                    // U+057C: "ռ" ARMENIAN SMALL LETTER RA
+                    // U+057F: "տ" ARMENIAN SMALL LETTER TIWN
+                    // U+0568: "ը" ARMENIAN SMALL LETTER ET
+                    // U+0582: "ւ" ARMENIAN SMALL LETTER YIWN
+                    // U+056B: "ի" ARMENIAN SMALL LETTER INI
+                    // U+0585: "օ" ARMENIAN SMALL LETTER OH
+                    // U+057A: "պ" ARMENIAN SMALL LETTER PEH
+                    "\u057C", "\u057F", "\u0568", "\u0582", "\u056B", "\u0585", "\u057A")
+            .setKeysOfRow(3,
+                    // U+0561: "ա" ARMENIAN SMALL LETTER AYB
+                    // U+057D: "ս" ARMENIAN SMALL LETTER SEH
+                    // U+0564: "դ" ARMENIAN SMALL LETTER DA
+                    // U+0586: "ֆ" ARMENIAN SMALL LETTER FEH
+                    // U+0563: "գ" ARMENIAN SMALL LETTER GIM
+                    // U+0570: "հ" ARMENIAN SMALL LETTER HO
+                    // U+0575: "յ" ARMENIAN SMALL LETTER YI
+                    // U+056F: "կ" ARMENIAN SMALL LETTER KEN
+                    // U+056C: "լ" ARMENIAN SMALL LETTER LIWN
+                    "\u0561", "\u057D", "\u0564", "\u0586", "\u0563", "\u0570", "\u0575", "\u056F",
+                    "\u056C")
+            .setKeysOfRow(4,
+                    // U+0566: "զ" ARMENIAN SMALL LETTER ZA
+                    // U+0572: "ղ" ARMENIAN SMALL LETTER GHAD
+                    // U+0581: "ց" ARMENIAN SMALL LETTER CO
+                    // U+057E: "վ" ARMENIAN SMALL LETTER VEW
+                    // U+0562: "բ" ARMENIAN SMALL LETTER BEN
+                    // U+0576: "ն" ARMENIAN SMALL LETTER NOW
+                    // U+0574: "մ" ARMENIAN SMALL LETTER MEN
+                    "\u0566", "\u0572", "\u0581", "\u057E", "\u0562", "\u0576", "\u0574")
+            .build();
+
+    private static final class ArmenianSymbols extends Symbols {
+        public ArmenianSymbols(final LayoutCustomizer customizer) { super(customizer); }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                    super.getLayout(isPhone));
+            // U+055D: "՝" ARMENIAN COMMA
+            builder.replaceKeyOfLabel(",", "\u055D");
+            // U+055C: "՜" ARMENIAN EXCLAMATION MARK
+            // U+00A1: "¡" INVERTED EXCLAMATION MARK
+            // U+055E: "՞" ARMENIAN QUESTION MARK
+            // U+00BF: "¿" INVERTED QUESTION MARK
+            builder.setMoreKeysOf("!", "\u055C", "\u00A1")
+                    .setMoreKeysOf("?", "\u055E", "\u00BF");
+            return builder.build();
+        }
+    }
+
+    private static final class ArmenianSymbolsShifted extends SymbolsShifted {
+        public ArmenianSymbolsShifted(final LayoutCustomizer customizer) { super(customizer); }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                    super.getLayout(isPhone));
+            // U+055D: "՝" ARMENIAN COMMA
+            builder.replaceKeyOfLabel(",", "\u055D");
+            return builder.build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java b/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java
new file mode 100644
index 0000000..a094963
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Azerty.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+/**
+ * The AZERTY alphabet keyboard.
+ */
+public final class Azerty extends LayoutBase {
+    public Azerty(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return "azerty"; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        customizer.setAccentedLetters(builder);
+        builder.replaceKeyOfLabel(ROW3_QUOTE, key("'", joinMoreKeys(
+                customizer.getSingleQuoteMoreKeys(),
+                customizer.getSingleAngleQuoteKeys())));
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        final ExpectedKeyboardBuilder builder;
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED
+                || elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) {
+            builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone));
+        } else {
+            builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+            getCustomizer().setAccentedLetters(builder);
+            builder.replaceKeyOfLabel(ROW3_QUOTE, "?");
+        }
+        builder.toUpperCase(getLocale());
+        return builder.build();
+    }
+
+    private static final String ROW3_QUOTE = "ROW3_QUOUTE";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("a", additionalMoreKey("1")),
+                    key("z", additionalMoreKey("2")),
+                    key("e", additionalMoreKey("3")),
+                    key("r", additionalMoreKey("4")),
+                    key("t", additionalMoreKey("5")),
+                    key("y", additionalMoreKey("6")),
+                    key("u", additionalMoreKey("7")),
+                    key("i", additionalMoreKey("8")),
+                    key("o", additionalMoreKey("9")),
+                    key("p", additionalMoreKey("0")))
+            .setKeysOfRow(2, "q", "s", "d", "f", "g", "h", "j", "k", "l", "m")
+            .setKeysOfRow(3, "w", "x", "c", "v", "b", "n", ROW3_QUOTE)
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java b/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java
new file mode 100644
index 0000000..2101ddf
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Bengali keyboard.
+ */
+public final class Bengali extends LayoutBase {
+    private static final String LAYOUT_NAME = "bengali";
+
+    public Bengali(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class BengaliCustomizer extends LayoutCustomizer {
+        public BengaliCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return BENGALI_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0995: "क" BENGALI LETTER KA
+        // U+0996: "ख" BENGALI LETTER KHA
+        // U+0997: "ग" BENGALI LETTER GA
+        private static final ExpectedKey BENGALI_ALPHABET_KEY = key(
+                "\u0995\u0996\u0997", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0994: "ঔ" BENGALI LETTER AU
+                    // U+09CC: "ৌ" BENGALI VOWEL SIGN AU
+                    // U+09E7: "১" BENGALI DIGIT ONE
+                    key("\u0994", joinMoreKeys("\u09CC", "\u09E7", "1")),
+                    // U+0990: "ঐ" BENGALI LETTER AI
+                    // U+09C8: "ৈ" BENGALI VOWEL SIGN AI
+                    // U+09E8: "২" BENGALI DIGIT TWO
+                    key("\u0990", joinMoreKeys("\u09C8", "\u09E8", "2")),
+                    // U+0986: "আ" BENGALI LETTER AA
+                    // U+09BE: "া" BENGALI VOWEL SIGN AA
+                    // U+09E9: "৩" BENGALI DIGIT THREE
+                    key("\u0986", joinMoreKeys("\u09BE", "\u09E9", "3")),
+                    // U+0988: "ঈ" BENGALI LETTER II
+                    // U+09C0: "ী" BENGALI VOWEL SIGN II
+                    // U+09EA: "৪" BENGALI DIGIT FOUR
+                    key("\u0988", joinMoreKeys("\u09C0", "\u09EA", "4")),
+                    // U+098A: "ঊ" BENGALI LETTER UU
+                    // U+09C2: "ূ" BENGALI VOWEL SIGN UU
+                    // U+09EB: "৫" BENGALI DIGIT FIVE
+                    key("\u098A", joinMoreKeys("\u09C2", "\u09EB", "5")),
+                    // U+09AC: "ব" BENGALI LETTER BA
+                    // U+09AD: "ভ" BENGALI LETTER BHA
+                    // U+09EC: "৬" BENGALI DIGIT SIX
+                    key("\u09AC", joinMoreKeys("\u09AD", "\u09EC", "6")),
+                    // U+09B9: "হ" BENGALI LETTER HA
+                    // U+09ED: "৭" BENGALI DIGIT SEVEN
+                    key("\u09B9", joinMoreKeys("\u09ED", "7")),
+                    // U+0997: "গ" BENGALI LETTER GA
+                    // U+0998: "ঘ" BENGALI LETTER GHA
+                    // U+09EE: "৮" BENGALI DIGIT EIGHT
+                    key("\u0997", joinMoreKeys("\u0998", "\u09EE", "8")),
+                    // U+09A6: "দ" BENGALI LETTER DA
+                    // U+09A7: "ধ" BENGALI LETTER DHA
+                    // U+09EF: "৯" BENGALI DIGIT NINE
+                    key("\u09A6", joinMoreKeys("\u09A7", "\u09EF", "9")),
+                    // U+099C: "জ" BENGALI LETTER JA
+                    // U+099D: "ঝ" BENGALI LETTER JHA
+                    // U+099C/U+09CD/U+099E:
+                    //     "জ্ঞ" BENGALI LETTER JA/BENGALI SIGN VIRAMA/BENGALI LETTER NYA
+                    // U+09E6: "০" BENGALI DIGIT ZERO
+                    key("\u099C", joinMoreKeys("\u099D", "\u099C\u09CD\u099E", "\u09E6", "0")),
+                    // U+09A1: "ড" BENGALI LETTER DDA
+                    // U+09A1/U+09BC: "ড়" BENGALI LETTER DDA/BENGALI SIGN NUKTA
+                    key("\u09A1", moreKey("\u09A1\u09BC")))
+            .setKeysOfRow(2,
+                    // U+0993: "ও" BENGALI LETTER O
+                    // U+09CB: "ো" BENGALI VOWEL SIGN O
+                    key("\u0993", moreKey("\u09CB")),
+                    // U+098F: "এ" BENGALI LETTER E
+                    // U+09C7: "ে" BENGALI VOWEL SIGN E
+                    key("\u098F", moreKey("\u09C7")),
+                    // U+0985: "অ" BENGALI LETTER A
+                    // U+09CD: "্" BENGALI SIGN VIRAMA
+                    key("\u0985", moreKey("\u09CD")),
+                    // U+0987: "ই" BENGALI LETTER I
+                    // U+09BF: "ি" BENGALI VOWEL SIGN I
+                    key("\u0987", moreKey("\u09BF")),
+                    // U+0989: "উ" BENGALI LETTER U
+                    // U+09C1: "ু" BENGALI VOWEL SIGN U
+                    key("\u0989", moreKey("\u09C1")),
+                    // U+09AA: "প" BENGALI LETTER PA
+                    // U+09AB: "ফ" BENGALI LETTER PHA
+                    key("\u09AA", moreKey("\u09AB")),
+                    // U+09B0: "র" BENGALI LETTER RA
+                    // U+09C3: "ৃ" BENGALI VOWEL SIGN VOCALIC R
+                    // U+098B: "ঋ" BENGALI LETTER VOCALIC R
+                    // U+09A4/U+09CD/U+09B0:
+                    //     "ত্র" BENGALI LETTER TA/BENGALI SIGN VIRAMA/BENGALI LETTER RA
+                    key("\u09B0", joinMoreKeys("\u09C3", "\u098B", "\u09A4\u09CD\u09B0")),
+                    // U+0995: "ক" BENGALI LETTER KA
+                    // U+0996: "খ" BENGALI LETTER KHA
+                    key("\u0995", moreKey("\u0996")),
+                    // U+09A4: "ত" BENGALI LETTER TA
+                    // U+09CE: "ৎ" BENGALI LETTER KHANDA TA
+                    // U+09A5: "থ" BENGALI LETTER THA
+                    // U+09A4/U+09CD/U+09A4:
+                    //     "ত্ত" BENGALI LETTER TA/BENGALI SIGN VIRAMA/BENGALI LETTER TA
+                    key("\u09A4", joinMoreKeys("\u09CE", "\u09A5", "\u09A4\u09CD\u09A4")),
+                    // U+099A: "চ" BENGALI LETTER CA
+                    // U+099B: "ছ" BENGALI LETTER CHA
+                    key("\u099A", moreKey("\u099B")),
+                    // U+099F: "ট" BENGALI LETTER TTA
+                    // U+09A0: "ঠ" BENGALI LETTER TTHA
+                    key("\u099F", moreKey("\u09A0")))
+            .setKeysOfRow(3,
+                    // U+0981: "ঁ" BENGALI SIGN CANDRABINDU
+                    // U+0983: "ঃ" BENGALI SIGN VISARGA
+                    // U+0982: "ং" BENGALI SIGN ANUSVARA
+                    key("\u0981", joinMoreKeys("\u0983", "\u0982")),
+                    // U+09A2: "ঢ" BENGALI LETTER DDHA
+                    // U+09A2/U+09BC: "ঢ়" BENGALI LETTER DDHA/BENGALI SIGN NUKTA
+                    key("\u09A2", moreKey("\u09A2\u09BC")),
+                    // U+09AE: "ম" BENGALI LETTER MA
+                    "\u09AE",
+                    // U+09A8: "ন" BENGALI LETTER NA
+                    // U+09A3: "ণ" BENGALI LETTER NNA
+                    key("\u09A8", moreKey("\u09A3")),
+                    // U+099E: "ঞ" BENGALI LETTER NYA
+                    // U+0999: "ঙ" BENGALI LETTER NGA
+                    // U+099E/U+09CD/U+099C:
+                    //     "ঞ্জ" BENGALI LETTER NYA/BENGALI SIGN VIRAMA/BENGALI LETTER JA
+                    key("\u099E", joinMoreKeys("\u0999", "\u099E\u09CD\u099C")),
+                    // U+09B2: "ল" BENGALI LETTER LA
+                    "\u09B2",
+                    // U+09B7: "ষ" BENGALI LETTER SSA
+                    // U+0995/U+09CD/U+09B7:
+                    //     "ক্ষ" BENGALI LETTER KA/BENGALI SIGN VIRAMA/BENGALI LETTER SSA
+                    key("\u09B7", moreKey("\u0995\u09CD\u09B7")),
+                    // U+09B8: "স" BENGALI LETTER SA
+                    // U+09B6: "শ" BENGALI LETTER SHA
+                    key("\u09B8", moreKey("\u09B6")),
+                    // U+09DF: "য়" BENGALI LETTER YYA
+                    // U+09AF: "য" BENGALI LETTER YA
+                    key("\u09DF", moreKey("\u09AF")),
+                    // U+0964: "।" DEVANAGARI DANDA
+                    // U+0965: "॥" DEVANAGARI DOUBLE DANDA
+                    key("\u0964", moreKey("\u0965")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java b/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java
new file mode 100644
index 0000000..3282e44
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Bulgarian.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+public final class Bulgarian extends LayoutBase {
+    private static final String LAYOUT_NAME = "bulgarian";
+
+    public Bulgarian(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class BulgarianCustomizer extends LayoutCustomizer {
+        private final EastSlavicCustomizer mEastSlavicCustomizer;
+
+        public BulgarianCustomizer(final Locale locale) {
+            super(locale);
+            mEastSlavicCustomizer = new EastSlavicCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKey getAlphabetKey() {
+            return mEastSlavicCustomizer.getAlphabetKey();
+        }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+044F: "я" CYRILLIC SMALL LETTER YA
+                    key("\u044F", moreKey("1")),
+                    // U+0432: "в" CYRILLIC SMALL LETTER VE
+                    key("\u0432", moreKey("2")),
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    key("\u0435", moreKey("3")),
+                    // U+0440: "р" CYRILLIC SMALL LETTER ER
+                    key("\u0440", moreKey("4")),
+                    // U+0442: "т" CYRILLIC SMALL LETTER TE
+                    key("\u0442", moreKey("5")),
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    key("\u044A", moreKey("6")),
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    key("\u0443", moreKey("7")),
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+                    key("\u0438", joinMoreKeys("8", "\u045D")),
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    key("\u043E", moreKey("9")),
+                    // U+043F: "п" CYRILLIC SMALL LETTER PE
+                    key("\u043F", moreKey("0")),
+                    // U+0447: "ч" CYRILLIC SMALL LETTER CHE
+                    "\u0447")
+            .setKeysOfRow(2,
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+0441: "с" CYRILLIC SMALL LETTER ES
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    // U+0444: "ф" CYRILLIC SMALL LETTER EF
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    // U+0448: "ш" CYRILLIC SMALL LETTER SHA
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    "\u0430", "\u0441", "\u0434", "\u0444", "\u0433", "\u0445", "\u0439", "\u043A",
+                    "\u043B", "\u0448", "\u0449")
+            .setKeysOfRow(3,
+                    // U+0437: "з" CYRILLIC SMALL LETTER ZE
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+                    // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    // U+043C: "м" CYRILLIC SMALL LETTER EM
+                    // U+044E: "ю" CYRILLIC SMALL LETTER YU
+                    "\u0437", "\u044C", "\u0446", "\u0436", "\u0431", "\u043D", "\u043C", "\u044E")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java b/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java
new file mode 100644
index 0000000..20a5f7d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/BulgarianBds.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+public final class BulgarianBds extends LayoutBase {
+    private static final String LAYOUT_NAME = "bulgarian_bds";
+
+    public BulgarianBds(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class BulgarianBdsCustomizer extends EastSlavicCustomizer {
+        public BulgarianBdsCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    key("\u0443", moreKey("1")),
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    key("\u0435", moreKey("2")),
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+                    key("\u0438", joinMoreKeys("3", "\u045D")),
+                    // U+0448: "ш" CYRILLIC SMALL LETTER SHA
+                    key("\u0448", moreKey("4")),
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    key("\u0449", moreKey("5")),
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    key("\u043A", moreKey("6")),
+                    // U+0441: "с" CYRILLIC SMALL LETTER ES
+                    key("\u0441", moreKey("7")),
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    key("\u0434", moreKey("8")),
+                    // U+0437: "з" CYRILLIC SMALL LETTER ZE
+                    key("\u0437", moreKey("9")),
+                    // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+                    key("\u0446", moreKey("0")),
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    "\u0431")
+            .setKeysOfRow(2,
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044F: "я" CYRILLIC SMALL LETTER YA
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    // U+0442: "т" CYRILLIC SMALL LETTER TE
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    // U+0432: "в" CYRILLIC SMALL LETTER VE
+                    // U+043C: "м" CYRILLIC SMALL LETTER EM
+                    // U+0447: "ч" CYRILLIC SMALL LETTER CHE
+                    "\u044C", "\u044F", "\u0430", "\u043E", "\u0436", "\u0433", "\u0442", "\u043D",
+                    "\u0432", "\u043C", "\u0447")
+            .setKeysOfRow(3,
+                    // U+044E: "ю" CYRILLIC SMALL LETTER YU
+                    // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    // U+044D: "э" CYRILLIC SMALL LETTER E
+                    // U+0444: "ф" CYRILLIC SMALL LETTER EF
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    // U+043F: "п" CYRILLIC SMALL LETTER PE
+                    // U+0440: "р" CYRILLIC SMALL LETTER ER
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    "\u044E", "\u0439", "\u044A", "\u044D", "\u0444", "\u0445", "\u043F", "\u0440",
+                    "\u043B")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Colemak.java b/tests/src/com/android/inputmethod/keyboard/layout/Colemak.java
new file mode 100644
index 0000000..a4a9701
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Colemak.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+/**
+ * The Colemak alphabet keyboard.
+ */
+public final class Colemak extends LayoutBase {
+    private static final String LAYOUT_NAME = "colemak";
+
+    public Colemak(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        getCustomizer().setAccentedLetters(builder);
+        builder.replaceKeyOfLabel(ROW1_10, key(";", additionalMoreKey("0"), moreKey(":")));
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        final ExpectedKeyboardBuilder builder;
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED
+                || elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) {
+            builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone));
+        } else {
+            builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+            getCustomizer().setAccentedLetters(builder);
+            builder.replaceKeyOfLabel(ROW1_10, key(":", additionalMoreKey("0")));
+        }
+        builder.toUpperCase(getLocale());
+        return builder.build();
+    }
+
+    private static final String ROW1_10 = "ROW1_10";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("q", additionalMoreKey("1")),
+                    key("w", additionalMoreKey("2")),
+                    key("f", additionalMoreKey("3")),
+                    key("p", additionalMoreKey("4")),
+                    key("g", additionalMoreKey("5")),
+                    key("j", additionalMoreKey("6")),
+                    key("l", additionalMoreKey("7")),
+                    key("u", additionalMoreKey("8")),
+                    key("y", additionalMoreKey("9")),
+                    ROW1_10)
+            .setKeysOfRow(2, "a", "r", "s", "t", "d", "h", "n", "e", "i", "o")
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "k", "m")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/DevanagariLetterConstants.java b/tests/src/com/android/inputmethod/keyboard/layout/DevanagariLetterConstants.java
new file mode 100644
index 0000000..bcf06f0
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/DevanagariLetterConstants.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import android.os.Build;
+
+/**
+ * This class offers label strings of Devanagari letters that need the dotted circle to draw
+ * its glyph.
+ */
+class DevanagariLetterConstants {
+    private static final boolean NEEDS_DOTTED_CIRCLE =
+            Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN;
+    // U+25CC: "◌" DOTTED CIRCLE
+    private static final String DOTTED_CIRCLE = NEEDS_DOTTED_CIRCLE ? "\u25CC" : "";
+
+    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+    static final String SIGN_CANDRABINDU = DOTTED_CIRCLE + "\u0901";
+    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+    static final String SIGN_ANUSVARA = DOTTED_CIRCLE + "\u0902";
+    // U+0903: "ः" DEVANAGARI SIGN VISARGA
+    static final String SIGN_VISARGA = DOTTED_CIRCLE + "\u0903";
+    // U+093C: "़" DEVANAGARI SIGN NUKTA
+    static final String SIGN_NUKTA = DOTTED_CIRCLE + "\u093C";
+    // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+    static final String SIGN_AVAGRAHA = DOTTED_CIRCLE + "\u093D";
+    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+    static final String VOWEL_SIGN_AA = DOTTED_CIRCLE + "\u093E";
+    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+    static final String VOWEL_SIGN_I = DOTTED_CIRCLE + "\u093F";
+    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+    static final String VOWEL_SIGN_II = DOTTED_CIRCLE + "\u0940";
+    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+    static final String VOWEL_SIGN_U = DOTTED_CIRCLE + "\u0941";
+    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+    static final String VOWEL_SIGN_UU = DOTTED_CIRCLE + "\u0942";
+    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+    static final String VOWEL_SIGN_VOCALIC_R = DOTTED_CIRCLE + "\u0943";
+    // U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR
+    static final String VOWEL_SIGN_VOCALIC_RR = DOTTED_CIRCLE + "\u0944";
+    // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+    static final String VOWEL_SIGN_CANDRA_E = DOTTED_CIRCLE + "\u0945";
+    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+    static final String VOWEL_SIGN_E = DOTTED_CIRCLE + "\u0947";
+    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+    static final String VOWEL_SIGN_AI = DOTTED_CIRCLE + "\u0948";
+    // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
+    static final String VOWEL_SIGN_CANDRA_O = DOTTED_CIRCLE + "\u0949";
+    // U+094A: "ॊ" DEVANAGARI VOWEL SIGN SHORT O
+    static final String VOWEL_SIGN_SHORT_O = DOTTED_CIRCLE + "\u094A";
+    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+    static final String VOWEL_SIGN_O = DOTTED_CIRCLE + "\u094B";
+    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+    static final String VOWEL_SIGN_AU = DOTTED_CIRCLE + "\u094C";
+    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+    static final String SIGN_VIRAMA = DOTTED_CIRCLE + "\u094D";
+    // U+0970: "॰" DEVANAGARI ABBREVIATION SIGN
+    static final String ABBREVIATION_SIGN = DOTTED_CIRCLE + "\u0970";
+    // U+097D: "ॽ" DEVANAGARI LETTER GLOTTAL STOP
+    static final String LETTER_GLOTTAL_STOP = DOTTED_CIRCLE + "\u097D";
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
new file mode 100644
index 0000000..e75cfd0
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Dvorak.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey.ExpectedAdditionalMoreKey;
+
+import java.util.Locale;
+
+/**
+ * The QWERTY alphabet keyboard.
+ */
+public final class Dvorak extends LayoutBase {
+    private static final String LAYOUT_NAME = "dvorak";
+
+    public Dvorak(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class DvorakCustomizer extends LayoutCustomizer {
+        public DvorakCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return isPhone ? joinKeys(SHIFT_KEY): joinKeys(SHIFT_KEY, key("q"));
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : joinKeys(key("z"), SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            return isPhone ? joinKeys(key("q", SETTINGS_KEY)) :
+                joinKeys(SETTINGS_KEY, key("_", moreKey("-")));
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            final ExpectedAdditionalMoreKey[] punctuationMoreKeys =
+                    convertToAdditionalMoreKeys(getPunctuationMoreKeys(isPhone));
+            return isPhone
+                    ? joinKeys(key("z", punctuationMoreKeys))
+                    : joinKeys("/", key("?", moreKey("!")));
+        }
+
+        private static ExpectedAdditionalMoreKey[] convertToAdditionalMoreKeys(
+                final ExpectedKey ... moreKeys) {
+            final ExpectedAdditionalMoreKey[] additionalMoreKeys =
+                    new ExpectedAdditionalMoreKey[moreKeys.length];
+            for (int index = 0; index < moreKeys.length; index++) {
+                additionalMoreKeys[index] = ExpectedAdditionalMoreKey.newInstance(moreKeys[index]);
+            }
+            return additionalMoreKeys;
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    public ExpectedKey[][] getLayout(final boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_SYMBOLS
+                || elementId == KeyboardId.ELEMENT_SYMBOLS_SHIFTED) {
+            return super.getLayout(isPhone, elementId);
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                getCommonAlphabetLayout(isPhone));
+        if (elementId == KeyboardId.ELEMENT_ALPHABET
+                || elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            builder.addKeysOnTheLeftOfRow(1,
+                    key("'", joinMoreKeys(additionalMoreKey("1"), "!", "\"")),
+                    key(",", joinMoreKeys(additionalMoreKey("2"), "?", "<")),
+                    key(".", joinMoreKeys(additionalMoreKey("3"), ">")));
+        } else {
+            builder.addKeysOnTheLeftOfRow(1,
+                    key("\"", additionalMoreKey("1")),
+                    key("<", additionalMoreKey("2")),
+                    key(">", additionalMoreKey("3")));
+        }
+        convertCommonLayoutToKeyboard(builder, isPhone);
+        getCustomizer().setAccentedLetters(builder);
+        if (elementId != KeyboardId.ELEMENT_ALPHABET) {
+            builder.toUpperCase(getLocale());
+            builder.replaceKeysOfAll(SHIFT_KEY, SHIFTED_SHIFT_KEY);
+        }
+        return builder.build();
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("p", additionalMoreKey("4")),
+                    key("y", additionalMoreKey("5")),
+                    key("f", additionalMoreKey("6")),
+                    key("g", additionalMoreKey("7")),
+                    key("c", additionalMoreKey("8")),
+                    key("r", additionalMoreKey("9")),
+                    key("l", additionalMoreKey("0")))
+            .setKeysOfRow(2, "a", "o", "e", "u", "i", "d", "h", "t", "n", "s")
+            .setKeysOfRow(3, "j", "k", "x", "b", "m", "w", "v")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java b/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java
new file mode 100644
index 0000000..7fcc974
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/EastSlavic.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+public final class EastSlavic extends LayoutBase {
+    private static final String LAYOUT_NAME = "east_slavic";
+
+    public EastSlavic(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class EastSlavicCustomizer extends LayoutCustomizer {
+        public EastSlavicCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public final ExpectedKey getAlphabetKey() { return EAST_SLAVIC_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        private static final ExpectedKey EAST_SLAVIC_ALPHABET_KEY = key(
+                "\u0410\u0411\u0412", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    public static final String ROW1_9 = "ROW1_9";
+    public static final String ROW2_2 = "ROW2_2";
+    public static final String ROW2_11 = "ROW2_11";
+    public static final String ROW3_5 = "ROW3_5";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    key("\u0439", additionalMoreKey("1")),
+                    // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+                    key("\u0446", additionalMoreKey("2")),
+                    // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+                    key("\u0443", additionalMoreKey("3")),
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    key("\u043A", additionalMoreKey("4")),
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    key("\u0435", additionalMoreKey("5")),
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    key("\u043D", additionalMoreKey("6")),
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    key("\u0433", additionalMoreKey("7")),
+                    // U+0448: "ш" CYRILLIC SMALL LETTER SHA
+                    key("\u0448", additionalMoreKey("8")),
+                    key(ROW1_9, additionalMoreKey("9")),
+                    // U+0437: "з" CYRILLIC SMALL LETTER ZE
+                    key("\u0437", additionalMoreKey("0")),
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    "\u0445")
+            .setKeysOfRow(2,
+                    // U+0444: "ф" CYRILLIC SMALL LETTER EF
+                    // U+0432: "в" CYRILLIC SMALL LETTER VE
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+043F: "п" CYRILLIC SMALL LETTER PE
+                    // U+0440: "р" CYRILLIC SMALL LETTER ER
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
+                    "\u0444", ROW2_2, "\u0432", "\u0430", "\u043F", "\u0440", "\u043E", "\u043B",
+                    "\u0434", "\u0436", ROW2_11)
+            .setKeysOfRow(3,
+                    // U+044F: "я" CYRILLIC SMALL LETTER YA
+                    // U+0447: "ч" CYRILLIC SMALL LETTER CHE
+                    // U+0441: "с" CYRILLIC SMALL LETTER ES
+                    // U+043C: "м" CYRILLIC SMALL LETTER EM
+                    // U+0442: "т" CYRILLIC SMALL LETTER TE
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    // U+044E: "ю" CYRILLIC SMALL LETTER YU
+                    "\u044F", "\u0447", "\u0441", "\u043C", ROW3_5, "\u0442", "\u044C", "\u0431",
+                    "\u044E")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
new file mode 100644
index 0000000..a513740
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Farsi.java
@@ -0,0 +1,364 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.Symbols.RtlSymbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted.RtlSymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+public final class Farsi extends LayoutBase {
+    private static final String LAYOUT_NAME = "farsi";
+
+    public Farsi(final LayoutCustomizer customizer) {
+        super(customizer, FarsiSymbols.class, FarsiSymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class FarsiCustomizer extends LayoutCustomizer {
+        public FarsiCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return FARSI_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getSymbolsKey() { return FARSI_SYMBOLS_KEY; }
+
+        @Override
+        public ExpectedKey getBackToSymbolsKey() { return FARSI_BACK_TO_SYMBOLS_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RIAL; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            if (isPhone) {
+                // U+060C: "،" ARABIC COMMA
+                return joinKeys(key("\u060C", SETTINGS_KEY));
+            }
+            // U+060C: "،" ARABIC COMMA
+            // U+061F: "؟" ARABIC QUESTION MARK
+            // U+061B: "؛" ARABIC SEMICOLON
+            return joinKeys(key("\u060C", joinMoreKeys(
+                    ":", "!", "\u061F", "\u061B", "-", RtlSymbols.DOUBLE_ANGLE_QUOTES_LR_RTL,
+                    SETTINGS_KEY)),
+                    "_");
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            if (isPhone) {
+                return super.getKeysRightToSpacebar(isPhone);
+            }
+            return joinKeys("/", key(".", getPunctuationMoreKeys(isPhone)));
+        }
+
+        @Override
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return FARSI_DIACRITICS;
+        }
+
+        // U+0627: "ا" ARABIC LETTER ALEF
+        // U+200C: ZERO WIDTH NON-JOINER
+        // U+0628: "ب" ARABIC LETTER BEH
+        // U+067E: "پ" ARABIC LETTER PEH
+        private static final ExpectedKey FARSI_ALPHABET_KEY = key(
+                "\u0627\u200C\u0628\u200C\u067E", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
+        // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
+        // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
+        // U+061F: "؟" ARABIC QUESTION MARK
+        private static final ExpectedKey FARSI_SYMBOLS_KEY = key(
+                "\u06F3\u06F2\u06F1\u061F", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        private static final ExpectedKey FARSI_BACK_TO_SYMBOLS_KEY = key(
+                "\u06F3\u06F2\u06F1\u061F", Constants.CODE_SHIFT);
+        // U+FDFC: "﷼" RIAL SIGN
+        private static final ExpectedKey CURRENCY_RIAL = key("\uFDFC",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+        private static final ExpectedKey[] FARSI_DIACRITICS = {
+                // U+0655: "ٕ" ARABIC HAMZA BELOW
+                // U+0652: "ْ" ARABIC SUKUN
+                // U+0651: "ّ" ARABIC SHADDA
+                // U+064C: "ٌ" ARABIC DAMMATAN
+                // U+064D: "ٍ" ARABIC KASRATAN
+                // U+064B: "ً" ARABIC FATHATAN
+                // U+0654: "ٔ" ARABIC HAMZA ABOVE
+                // U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+                // U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+                // U+0653: "ٓ" ARABIC MADDAH ABOVE
+                // U+064F: "ُ" ARABIC DAMMA
+                // U+0650: "ِ" ARABIC KASRA
+                // U+064E: "َ" ARABIC FATHA
+                // U+0640: "ـ" ARABIC TATWEEL
+                moreKey(" \u0655", "\u0655"), moreKey(" \u0652", "\u0652"),
+                moreKey(" \u0651", "\u0651"), moreKey(" \u064C", "\u064C"),
+                moreKey(" \u064D", "\u064D"), moreKey(" \u064B", "\u064B"),
+                moreKey(" \u0654", "\u0654"), moreKey(" \u0656", "\u0656"),
+                moreKey(" \u0670", "\u0670"), moreKey(" \u0653", "\u0653"),
+                moreKey(" \u064F", "\u064F"), moreKey(" \u0650", "\u0650"),
+                moreKey(" \u064E", "\u064E"), moreKey("\u0640\u0640\u0640", "\u0640")
+        };
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        if (isPhone) {
+            return ALPHABET_COMMON;
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        // U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
+        builder.insertKeysAtRow(3, 10, "\u0622");
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0636: "ض" ARABIC LETTER DAD
+                    // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
+                    key("\u0636", joinMoreKeys("\u06F1", "1")),
+                    // U+0635: "ص" ARABIC LETTER SAD
+                    // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
+                    key("\u0635", joinMoreKeys("\u06F2", "2")),
+                    // U+062B: "ث" ARABIC LETTER THEH
+                    // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
+                    key("\u062B", joinMoreKeys("\u06F3", "3")),
+                    // U+0642: "ق" ARABIC LETTER QAF
+                    // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR
+                    key("\u0642", joinMoreKeys("\u06F4", "4")),
+                    // U+0641: "ف" ARABIC LETTER FEH
+                    // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE
+                    key("\u0641", joinMoreKeys("\u06F5", "5")),
+                    // U+063A: "غ" ARABIC LETTER GHAIN
+                    // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX
+                    key("\u063A", joinMoreKeys("\u06F6", "6")),
+                    // U+0639: "ع" ARABIC LETTER AIN
+                    // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN
+                    key("\u0639", joinMoreKeys("\u06F7", "7")),
+                    // U+0647: "ه" ARABIC LETTER HEH
+                    // U+FEEB: "ﻫ" ARABIC LETTER HEH INITIAL FORM
+                    // U+0647/U+200D: ARABIC LETTER HEH + ZERO WIDTH JOINER
+                    // U+0647/U+0654: ARABIC LETTER HEH + ARABIC HAMZA ABOVE
+                    // U+0629: "ة" ARABIC LETTER TEH MARBUTA
+                    // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT
+                    key("\u0647", joinMoreKeys(moreKey("\uFEEB", "\u0647\u200D"), "\u0647\u0654",
+                            "\u0629", "\u06F8", "8")),
+                    // U+062E: "خ" ARABIC LETTER KHAH
+                    // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE
+                    key("\u062E", joinMoreKeys("\u06F9", "9")),
+                    // U+062D: "ح" ARABIC LETTER HAH
+                    // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
+                    key("\u062D", joinMoreKeys("\u06F0", "0")),
+                    // U+062C: "ج" ARABIC LETTER JEEM
+                    "\u062C")
+            .setKeysOfRow(2,
+                    // U+0634: "ش" ARABIC LETTER SHEEN
+                    // U+0633: "س" ARABIC LETTER SEEN
+                    "\u0634", "\u0633",
+                    // U+06CC: "ی" ARABIC LETTER FARSI YEH
+                    // U+0626: "ئ" ARABIC LETTER YEH WITH HAMZA ABOVE
+                    // U+064A: "ي" ARABIC LETTER YEH
+                    // U+FBE8: "ﯨ" ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+                    // U+0649: "ى" ARABIC LETTER ALEF MAKSURA
+                    key("\u06CC", joinMoreKeys("\u0626", "\u064A", moreKey("\uFBE8", "\u0649"))),
+                    // U+0628: "ب" ARABIC LETTER BEH
+                    // U+0644: "ل" ARABIC LETTER LAM
+                    "\u0628", "\u0644",
+                    // U+0627: "ا" ARABIC LETTER ALEF
+                    // U+0671: "ٱ" ARABIC LETTER ALEF WASLA
+                    // U+0621: "ء" ARABIC LETTER HAMZA
+                    // U+0622: "آ" ARABIC LETTER ALEF WITH MADDA ABOVE
+                    // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
+                    // U+0625: "إ" ARABIC LETTER ALEF WITH HAMZA BELOW
+                    key("\u0627", joinMoreKeys("\u0671", "\u0621", "\u0622", "\u0623", "\u0625")),
+                    // U+062A: "ت" ARABIC LETTER TEH
+                    // U+0629: "ة": ARABIC LETTER TEH MARBUTA
+                    key("\u062A", moreKey("\u0629")),
+                    // U+0646: "ن" ARABIC LETTER NOON
+                    // U+0645: "م" ARABIC LETTER MEEM
+                    "\u0646", "\u0645",
+                    // U+06A9: "ک" ARABIC LETTER KEHEH
+                    // U+0643: "ك" ARABIC LETTER KAF
+                    key("\u06A9", moreKey("\u0643")),
+                    // U+06AF: "گ" ARABIC LETTER GAF
+                    "\u06AF")
+            .setKeysOfRow(3,
+                    // U+0638: "ظ" ARABIC LETTER ZAH
+                    // U+0637: "ط" ARABIC LETTER TAH
+                    // U+0698: "ژ" ARABIC LETTER JEH
+                    // U+0632: "ز" ARABIC LETTER ZAIN
+                    // U+0631: "ر" ARABIC LETTER REH
+                    // U+0630: "ذ" ARABIC LETTER THAL
+                    // U+062F: "د" ARABIC LETTER DAL
+                    // U+067E: "پ" ARABIC LETTER PEH
+                    "\u0638", "\u0637", "\u0698", "\u0632", "\u0631", "\u0630", "\u062F", "\u067E",
+                    // U+0648: "و" ARABIC LETTER WAW
+                    // U+0624: "ؤ" ARABIC LETTER WAW WITH HAMZA ABOVE
+                    key("\u0648", moreKey("\u0624")),
+                    // U+0686: "چ" ARABIC LETTER TCHEH
+                    "\u0686")
+            .build();
+
+    private static class FarsiSymbols extends RtlSymbols {
+        public FarsiSymbols(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
+                    // 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
+                    .replaceKeyOfLabel("1", key("\u06F1",
+                            joinMoreKeys("1", "\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")))
+                    // U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO
+                    // U+00B2: "²" SUPERSCRIPT TWO
+                    // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+                    .replaceKeyOfLabel("2", key("\u06F2", joinMoreKeys("2", "\u00B2", "\u2154")))
+                    // U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE
+                    // U+00B3: "³" SUPERSCRIPT THREE
+                    // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+                    // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+                    .replaceKeyOfLabel("3", key("\u06F3",
+                            joinMoreKeys("3", "\u00B3", "\u00BE", "\u215C")))
+                    // U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR
+                    // U+2074: "⁴" SUPERSCRIPT FOUR
+                    .replaceKeyOfLabel("4", key("\u06F4", joinMoreKeys("4", "\u2074")))
+                    // U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE
+                    // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+                    .replaceKeyOfLabel("5", key("\u06F5", joinMoreKeys("5", "\u215D")))
+                    // U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX
+                    .replaceKeyOfLabel("6", key("\u06F6", moreKey("6")))
+                    // U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN
+                    // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+                    .replaceKeyOfLabel("7", key("\u06F7", joinMoreKeys("7", "\u215E")))
+                    // U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT
+                    .replaceKeyOfLabel("8", key("\u06F8", moreKey("8")))
+                    // U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE
+                    .replaceKeyOfLabel("9", key("\u06F9", moreKey("9")))
+                    // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+                    .replaceKeyOfLabel("@", key("\u066C", moreKey("@")))
+                    // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+                    .replaceKeyOfLabel("#", key("\u066B", moreKey("#")))
+                    // U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO
+                    // U+066B: "٫" ARABIC DECIMAL SEPARATOR
+                    // U+066C: "٬" ARABIC THOUSANDS SEPARATOR
+                    // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+                    // U+2205: "∅" EMPTY SET
+                    .replaceKeyOfLabel("0", key("\u06F0",
+                            joinMoreKeys("0", "\u066B", "\u066C", "\u207F", "\u2205")))
+                    // U+066A: "٪" ARABIC PERCENT SIGN
+                    // U+2030: "‰" PER MILLE SIGN
+                    .replaceKeyOfLabel("%", key("\u066A", joinMoreKeys("%", "\u2030")))
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                    // U+2264: "≤" LESS-THAN OR EQUAL TO
+                    .replaceKeyOfLabel("\"", key("\u00AB", "\u00BB", joinMoreKeys(
+                            DOUBLE_QUOTES_9LR, DOUBLE_ANGLE_QUOTES_LR_RTL)))
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                    // U+2265: "≥" GREATER-THAN EQUAL TO
+                    .replaceKeyOfLabel("'", key("\u00BB", "\u00AB", joinMoreKeys(
+                            SINGLE_QUOTES_9LR, SINGLE_ANGLE_QUOTES_LR_RTL)))
+                    // U+061B: "؛" ARABIC SEMICOLON
+                    .replaceKeyOfLabel(";", key("\u061B", moreKey(";")))
+                    // U+061F: "؟" ARABIC QUESTION MARK
+                    // U+00BF: "¿" INVERTED QUESTION MARK
+                    .replaceKeyOfLabel("?", key("\u061F", joinMoreKeys("?", "\u00BF")))
+                    // U+060C: "،" ARABIC COMMA
+                    .replaceKeyOfLabel(",", "\u060C")
+                    // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+                    // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
+                    .replaceKeyOfLabel("(", key("(", ")",
+                            moreKey("\uFD3E", "\uFD3F"), moreKey("<", ">"), moreKey("{", "}"),
+                            moreKey("[", "]")))
+                    // U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS
+                    // U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+                    .replaceKeyOfLabel(")", key(")", "(",
+                            moreKey("\uFD3F", "\uFD3E"), moreKey(">", "<"), moreKey("}", "{"),
+                            moreKey("]", "[")))
+                    // U+2605: "★" BLACK STAR
+                    // U+066D: "٭" ARABIC FIVE POINTED STAR
+                    .setMoreKeysOf("*", "\u2605", "\u066D")
+                    .build();
+        }
+    }
+
+    private static class FarsiSymbolsShifted extends RtlSymbolsShifted {
+        public FarsiSymbolsShifted(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    // U+2022: "•" BULLET
+                    // U+266A: "♪" EIGHTH NOTE
+                    .setMoreKeysOf("\u2022", "\u266A")
+                    // U+060C: "،" ARABIC COMMA
+                    .replaceKeyOfLabel(",", "\u060C")
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                    // U+2264: "≤" LESS-THAN OR EQUAL TO
+                    .replaceKeyOfLabel("<", key("\u00AB", "\u00BB",
+                            moreKey("\u2039", "\u203A"), moreKey("\u2264", "\u2265"),
+                            moreKey("<", ">")))
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                    // U+2265: "≥" GREATER-THAN EQUAL TO
+                    .replaceKeyOfLabel(">", key("\u00BB", "\u00AB",
+                            moreKey("\u203A", "\u2039"), moreKey("\u2265", "\u2264"),
+                            moreKey(">", "<")))
+                    .build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java b/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java
new file mode 100644
index 0000000..6f20dfc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Georgian.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Georgian alphabet keyboard.
+ */
+public final class Georgian extends LayoutBase {
+    private static final String LAYOUT_NAME = "georgian";
+
+    public Georgian(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class GeorgianCustomizer extends LayoutCustomizer {
+        public GeorgianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return GEORGIAN_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        // U+10D0: "ა" GEORGIAN LETTER AN
+        // U+10D1: "ბ" GEORGIAN LETTER BAN
+        // U+10D2: "გ" GEORGIAN LETTER GAN
+        private static final ExpectedKey GEORGIAN_ALPHABET_KEY = key(
+                "\u10D0\u10D1\u10D2", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        return ALPHABET_COMMON;
+    }
+
+    @Override
+    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+            final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+10E5: "ქ" GEORGIAN LETTER GHAN
+                    key("\u10E5", moreKey("1")),
+                    // U+10EC: "წ" GEORGIAN LETTER CIL
+                    key("\u10EC", moreKey("2")),
+                    // U+10D4: "ე" GEORGIAN LETTER EN
+                    // U+10F1: "ჱ" GEORGIAN LETTER HE
+                    key("\u10D4", joinMoreKeys("3", "\u10F1")),
+                    // U+10E0: "რ" GEORGIAN LETTER RAE
+                    key("\u10E0", moreKey("4")),
+                    // U+10E2: "ტ" GEORGIAN LETTER TAR
+                    key("\u10E2", moreKey("5")),
+                    // U+10E7: "ყ" GEORGIAN LETTER QAR
+                    // U+10F8: "ჸ" GEORGIAN LETTER ELIFI
+                    key("\u10E7", joinMoreKeys("6", "\u10F8")),
+                    // U+10E3: "უ" GEORGIAN LETTER UN
+                    key("\u10E3", moreKey("7")),
+                    // U+10D8: "ი" GEORGIAN LETTER IN
+                    // U+10F2: "ჲ" GEORGIAN LETTER HIE
+                    key("\u10D8", joinMoreKeys("8", "\u10F2")),
+                    // U+10DD: "ო" GEORGIAN LETTER ON
+                    key("\u10DD", moreKey("9")),
+                    // U+10DE: "პ" GEORGIAN LETTER PAR
+                    key("\u10DE", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+10D0: "ა" GEORGIAN LETTER AN
+                    // U+10FA: "ჺ" GEORGIAN LETTER AIN
+                    key("\u10D0", moreKey("\u10FA")),
+                    // U+10E1: "ს" GEORGIAN LETTER SAN
+                    // U+10D3: "დ" GEORGIAN LETTER DON
+                    "\u10E1", "\u10D3",
+                    // U+10E4: "ფ" GEORGIAN LETTER PHAR
+                    // U+10F6: "ჶ" GEORGIAN LETTER FI
+                    key("\u10E4", moreKey("\u10F6")),
+                    // U+10D2: "გ" GEORGIAN LETTER GAN
+                    // U+10F9: "ჹ" GEORGIAN LETTER TURNED GAN
+                    key("\u10D2", moreKey("\u10F9")),
+                    // U+10F0: "ჰ" GEORGIAN LETTER HAE
+                    // U+10F5: "ჵ" GEORGIAN LETTER HOE
+                    key("\u10F0", moreKey("\u10F5")),
+                    // U+10EF: "ჯ" GEORGIAN LETTER JHAN
+                    // U+10F7: "ჷ" GEORGIAN LETTER YN
+                    key("\u10EF", moreKey("\u10F7")),
+                    // U+10D9: "კ" GEORGIAN LETTER KAN
+                    // U+10DA: "ლ" GEORGIAN LETTER LAS
+                    "\u10D9", "\u10DA")
+            .setKeysOfRow(3,
+                    // U+10D6: "ზ" GEORGIAN LETTER ZEN
+                    "\u10D6",
+                    // U+10EE: "ხ" GEORGIAN LETTER XAN
+                    // U+10F4: "ჴ" GEORGIAN LETTER HAR
+                    key("\u10EE", moreKey("\u10F4")),
+                    // U+10EA: "ც" GEORGIAN LETTER CAN
+                    "\u10EA",
+                    // U+10D5: "ვ" GEORGIAN LETTER VIN
+                    // U+10F3: "ჳ" GEORGIAN LETTER WE
+                    key("\u10D5", moreKey("\u10F3")),
+                    // U+10D1: "ბ" GEORGIAN LETTER BAN
+                    "\u10D1",
+                    // U+10DC: "ნ" GEORGIAN LETTER NAR
+                    // U+10FC: "ჼ" MODIFIER LETTER GEORGIAN NAR
+                    key("\u10DC", moreKey("\u10FC")),
+                    // U+10DB: "მ" GEORGIAN LETTER MAN
+                    "\u10DB")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("Q", moreKey("1")),
+                    // U+10ED: "ჭ" GEORGIAN LETTER CHAR
+                    key("\u10ED", moreKey("2")),
+                    key("E", moreKey("3")),
+                    // U+10E6: "ღ" GEORGIAN LETTER GHAN
+                    key("\u10E6", moreKey("4")),
+                    // U+10D7: "თ" GEORGIAN LETTER TAN
+                    key("\u10D7", moreKey("5")),
+                    key("Y", moreKey("6")),
+                    key("U", moreKey("7")),
+                    key("I", moreKey("8")),
+                    key("O", moreKey("9")),
+                    key("P", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+10E8: "შ" GEORGIAN LETTER SHIN
+                    // U+10DF: "ჟ" GEORGIAN LETTER ZHAR
+                    "A", "\u10E8", "D", "F", "G", "H", "\u10DF", "K", "L")
+            .setKeysOfRow(3,
+                    // U+10EB: "ძ" GEORGIAN LETTER JIL
+                    // U+10E9: "ჩ" GEORGIAN LETTER CHIN
+                    "\u10EB", "X", "\u10E9", "V", "B", "N", "M")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Greek.java b/tests/src/com/android/inputmethod/keyboard/layout/Greek.java
new file mode 100644
index 0000000..475052c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Greek.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Greek alphabet keyboard.
+ */
+public final class Greek extends LayoutBase {
+    private static final String LAYOUT_NAME = "greek";
+
+    public Greek(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class GreekCustomizer extends EuroCustomizer {
+        public GreekCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return GREEK_ALPHABET_KEY; }
+
+        // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
+        // U+0392: "Β" GREEK CAPITAL LETTER BETA
+        // U+0393: "Γ" GREEK CAPITAL LETTER GAMMA
+        private static final ExpectedKey GREEK_ALPHABET_KEY = key(
+                "\u0391\u0392\u0393", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        builder.replaceKeyOfLabel(ROW1_1, ROW1_1_SEMICOLON);
+        builder.replaceKeyOfLabel(ROW1_2, ROW1_2_FINAL_SIGMA);
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        builder.toUpperCase(getLocale());
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED
+                || elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED) {
+            builder.replaceKeyOfLabel(ROW1_1, ROW1_1_COLON);
+        } else {
+            builder.replaceKeyOfLabel(ROW1_1, ROW1_1_SEMICOLON);
+        }
+        builder.replaceKeyOfLabel(ROW1_2, ROW1_2_FINAL_SIGMA);
+        return builder.build();
+    }
+
+    private static final String ROW1_1 = "ROW1_1";
+    private static final ExpectedKey ROW1_1_SEMICOLON = key(";", joinMoreKeys("1", ":"));
+    private static final ExpectedKey ROW1_1_COLON = key(":", joinMoreKeys("1", ";"));
+
+    private static final String ROW1_2 = "ROW2_2";
+    // U+03C2: "ς" GREEK SMALL LETTER FINAL SIGMA
+    private static final ExpectedKey ROW1_2_FINAL_SIGMA = key("\u03C2", moreKey("2"));
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key(ROW1_1, moreKey("1")),
+                    key(ROW1_2, moreKey("2")),
+                    // U+03B5: "ε" GREEK SMALL LETTER EPSILON
+                    // U+03AD: "έ" GREEK SMALL LETTER EPSILON WITH TONOS
+                    key("\u03B5", joinMoreKeys("\u03AD", "3")),
+                    // U+03C1: "ρ" GREEK SMALL LETTER RHO
+                    key("\u03C1", moreKey("4")),
+                    // U+03C4: "τ" GREEK SMALL LETTER TAU
+                    key("\u03C4", moreKey("5")),
+                    // U+03C5: "υ" GREEK SMALL LETTER UPSILON
+                    // U+03CD: "ύ" GREEK SMALL LETTER UPSILON WITH TONOS
+                    // U+03CB: "ϋ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+                    // U+03B0: "ΰ" GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+                    key("\u03C5", joinMoreKeys("\u03CD", "6", "\u03CB", "\u03B0")),
+                    // U+03B8: "θ" GREEK SMALL LETTER THETA
+                    key("\u03B8", moreKey("7")),
+                    // U+03B9: "ι" GREEK SMALL LETTER IOTA
+                    // U+03AF: "ί" GREEK SMALL LETTER IOTA WITH TONOS
+                    // U+03CA: "ϊ" GREEK SMALL LETTER IOTA WITH DIALYTIKA
+                    // U+0390: "ΐ" GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+                    key("\u03B9", joinMoreKeys("\u03AF", "8", "\u03CA", "\u0390")),
+                    // U+03BF: "ο" GREEK SMALL LETTER OMICRON
+                    // U+03CC: "ό" GREEK SMALL LETTER OMICRON WITH TONOS
+                    key("\u03BF", joinMoreKeys("\u03CC", "9")),
+                    // U+03C0: "π" GREEK SMALL LETTER PI
+                    key("\u03C0", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+03B1: "α" GREEK SMALL LETTER ALPHA
+                    // U+03AC: "ά" GREEK SMALL LETTER ALPHA WITH TONOS
+                    key("\u03B1", moreKey("\u03AC")),
+                    // U+03C3: "σ" GREEK SMALL LETTER SIGMA
+                    // U+03B4: "δ" GREEK SMALL LETTER DELTA
+                    // U+03C6: "φ" GREEK SMALL LETTER PHI
+                    // U+03B3: "γ" GREEK SMALL LETTER GAMMA
+                    "\u03C3", "\u03B4", "\u03C6", "\u03B3",
+                    // U+03B7: "η" GREEK SMALL LETTER ETA
+                    // U+03AE: "ή" GREEK SMALL LETTER ETA WITH TONOS
+                    key("\u03B7", moreKey("\u03AE")),
+                    // U+03BE: "ξ" GREEK SMALL LETTER XI
+                    // U+03BA: "κ" GREEK SMALL LETTER KAPPA
+                    // U+03BB: "λ" GREEK SMALL LETTER LAMDA
+                    "\u03BE", "\u03BA", "\u03BB")
+            .setKeysOfRow(3,
+                    // U+03B6: "ζ" GREEK SMALL LETTER ZETA
+                    // U+03C7: "χ" GREEK SMALL LETTER CHI
+                    // U+03C8: "ψ" GREEK SMALL LETTER PSI
+                    "\u03B6", "\u03C7", "\u03C8",
+                    // U+03C9: "ω" GREEK SMALL LETTER OMEGA
+                    // U+03CE: "ώ" GREEK SMALL LETTER OMEGA WITH TONOS
+                    key("\u03C9", moreKey("\u03CE")),
+                    // U+03B2: "β" GREEK SMALL LETTER BETA
+                    // U+03BD: "ν" GREEK SMALL LETTER NU
+                    // U+03BC: "μ" GREEK SMALL LETTER MU
+                    "\u03B2", "\u03BD", "\u03BC")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java b/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
new file mode 100644
index 0000000..552f0d3
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hebrew.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.Symbols.RtlSymbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted.RtlSymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+public final class Hebrew extends LayoutBase {
+    private static final String LAYOUT_NAME = "hebrew";
+
+    public Hebrew(final LayoutCustomizer customizer) {
+        super(customizer, HebrewSymbols.class, RtlSymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class HebrewCustomizer extends LayoutCustomizer {
+        public HebrewCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return HEBREW_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_NEW_SHEQEL; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_LR9; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_LR9; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() {
+            return RtlSymbols.DOUBLE_ANGLE_QUOTES_LR_RTL;
+        }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() {
+            return RtlSymbols.SINGLE_ANGLE_QUOTES_LR_RTL;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return isPhone ? RTL_PHONE_PUNCTUATION_MORE_KEYS
+                    : RTL_TABLET_PUNCTUATION_MORE_KEYS;
+        }
+
+        // U+05D0: "א" HEBREW LETTER ALEF
+        // U+05D1: "ב" HEBREW LETTER BET
+        // U+05D2: "ג" HEBREW LETTER GIMEL
+        private static final ExpectedKey HEBREW_ALPHABET_KEY = key(
+                "\u05D0\u05D1\u05D2", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        // U+20AA: "₪" NEW SHEQEL SIGN
+        private static final ExpectedKey CURRENCY_NEW_SHEQEL = key("\u20AA",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+        private static final ExpectedKey[] RTL_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+                ",", "?", "!", "#", key(")", "("), key("(", ")"), "/", ";",
+                "'", "@", ":", "-", "\"", "+", "%", "&");
+        // Punctuation more keys for tablet form factor.
+        private static final ExpectedKey[] RTL_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+                ",", "'", "#", key(")", "("), key("(", ")"), "/", ";",
+                "@", ":", "-", "\"", "+", "%", "&");
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("'", joinMoreKeys("1", "\"")),
+                    key("-", joinMoreKeys("2", "_")),
+                    // U+05E7: "ק" HEBREW LETTER QOF
+                    key("\u05E7", moreKey("3")),
+                    // U+05E8: "ר" HEBREW LETTER RESH
+                    key("\u05E8", moreKey("4")),
+                    // U+05D0: "א" HEBREW LETTER ALEF
+                    key("\u05D0", moreKey("5")),
+                    // U+05D8: "ט" HEBREW LETTER TET
+                    key("\u05D8", moreKey("6")),
+                    // U+05D5: "ו" HEBREW LETTER VAV
+                    key("\u05D5", moreKey("7")),
+                    // U+05DF: "ן" HEBREW LETTER FINAL NUN
+                    key("\u05DF", moreKey("8")),
+                    // U+05DD: "ם" HEBREW LETTER FINAL MEM
+                    key("\u05DD", moreKey("9")),
+                    // U+05E4: "פ" HEBREW LETTER PE
+                    key("\u05E4", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+05E9: "ש" HEBREW LETTER SHIN
+                    // U+05D3: "ד" HEBREW LETTER DALET
+                    "\u05E9", "\u05D3",
+                    // U+05D2: "ג" HEBREW LETTER GIMEL
+                    // U+05D2 U+05F3: "ג׳" HEBREW LETTER GIMEL + HEBREW PUNCTUATION GERESH
+                    key("\u05D2", moreKey("\u05D2\u05F3")),
+                    // U+05DB: "כ" HEBREW LETTER KAF
+                    // U+05E2: "ע" HEBREW LETTER AYIN
+                    "\u05DB", "\u05E2",
+                    // U+05D9: "י" HEBREW LETTER YOD
+                    // U+05F2 U+05B7: "ײַ" HEBREW LIGATURE YIDDISH DOUBLE YOD + HEBREW POINT PATAH
+                    key("\u05D9", moreKey("\u05F2\u05B7")),
+                    // U+05D7: "ח" HEBREW LETTER HET
+                    // U+05D7 U+05F3: "ח׳" HEBREW LETTER HET + HEBREW PUNCTUATION GERESH
+                    key("\u05D7", moreKey("\u05D7\u05F3")),
+                    // U+05DC: "ל" HEBREW LETTER LAMED
+                    // U+05DA: "ך" HEBREW LETTER FINAL KAF
+                    // U+05E3: "ף" HEBREW LETTER FINAL PE
+                    "\u05DC", "\u05DA", "\u05E3")
+            .setKeysOfRow(3,
+                    // U+05D6: "ז" HEBREW LETTER ZAYIN
+                    // U+05D6 U+05F3: "ז׳" HEBREW LETTER ZAYIN + HEBREW PUNCTUATION GERESH
+                    key("\u05D6", moreKey("\u05D6\u05F3")),
+                    // U+05E1: "ס" HEBREW LETTER SAMEKH
+                    // U+05D1: "ב" HEBREW LETTER BET
+                    // U+05D4: "ה" HEBREW LETTER HE
+                    // U+05E0: "נ" HEBREW LETTER NUN
+                    // U+05DE: "מ" HEBREW LETTER MEM
+                    "\u05E1", "\u05D1", "\u05D4", "\u05E0", "\u05DE",
+                    // U+05E6: "צ" HEBREW LETTER TSADI
+                    // U+05E6 U+05F3: "צ׳" HEBREW LETTER TSADI + HEBREW PUNCTUATION GERESH
+                    key("\u05E6", moreKey("\u05E6\u05F3")),
+                    // U+05EA: "ת" HEBREW LETTER TAV
+                    // U+05EA U+05F3: "ת׳" HEBREW LETTER TAV + HEBREW PUNCTUATION GERESH
+                    key("\u05EA", moreKey("\u05EA\u05F3")),
+                    // U+05E5: "ץ" HEBREW LETTER FINAL TSADI
+                    // U+05E5 U+05F3: "ץ׳" HEBREW LETTER FINAL TSADI + HEBREW PUNCTUATION GERESH
+                    key("\u05E5", moreKey("\u05E5\u05F3")))
+            .build();
+
+    private static class HebrewSymbols extends RtlSymbols {
+        public HebrewSymbols(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    // U+00B1: "±" PLUS-MINUS SIGN
+                    // U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
+                    .setMoreKeysOf("+", "\u00B1", "\uFB29")
+                    // U+2605: "★" BLACK STAR
+                    .setMoreKeysOf("*", "\u2605")
+                    .build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
new file mode 100644
index 0000000..b12b8be
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
@@ -0,0 +1,378 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Hindi keyboard.
+ */
+public final class Hindi extends LayoutBase {
+    private static final String LAYOUT_NAME = "hindi";
+
+    public Hindi(final LayoutCustomizer customizer) {
+        super(customizer, HindiSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class HindiCustomizer extends LayoutCustomizer {
+        public HindiCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return HINDI_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getSymbolsKey() { return HINDI_SYMBOLS_KEY; }
+
+        @Override
+        public ExpectedKey getBackToSymbolsKey() { return HINDI_BACK_TO_SYMBOLS_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0915: "क" DEVANAGARI LETTER KA
+        // U+0916: "ख" DEVANAGARI LETTER KHA
+        // U+0917: "ग" DEVANAGARI LETTER GA
+        private static final ExpectedKey HINDI_ALPHABET_KEY = key(
+                "\u0915\u0916\u0917", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        // U+0967: "१" DEVANAGARI DIGIT ONE
+        // U+0968: "२" DEVANAGARI DIGIT TWO
+        // U+0969: "३" DEVANAGARI DIGIT THREE
+        private static final String HINDI_SYMBOLS_LABEL = "?\u0967\u0968\u0969";
+        private static final ExpectedKey HINDI_SYMBOLS_KEY = key(HINDI_SYMBOLS_LABEL,
+                Constants.CODE_SWITCH_ALPHA_SYMBOL);
+        private static final ExpectedKey HINDI_BACK_TO_SYMBOLS_KEY = key(HINDI_SYMBOLS_LABEL,
+                Constants.CODE_SHIFT);
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    // U+094C/U+0902: "ौं" DEVANAGARI VOWEL SIGN AU/DEVANAGARI SIGN ANUSVARA
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    key(VOWEL_SIGN_AU, "\u094C", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_AU + "\u0902", "\u094C\u0902"),
+                            "\u0967", "1")),
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0948/U+0902: "ैं" DEVANAGARI VOWEL SIGN AI/DEVANAGARI SIGN ANUSVARA
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    key(VOWEL_SIGN_AI, "\u0948", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_AI + "\u0902", "\u0948\u0902"),
+                            "\u0968", "2")),
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    // U+093E/U+0902: "ां" DEVANAGARI VOWEL SIGN AA/DEVANAGARI SIGN ANUSVARA
+                    // U+093E/U+0901: "ाँ" DEVANAGARI VOWEL SIGN AA/DEVANAGARI SIGN CANDRABINDU
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    key(VOWEL_SIGN_AA, "\u093E", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_AA + "\u0902", "\u093E\u0902"),
+                            moreKey(VOWEL_SIGN_AA + "\u0901", "\u093E\u0901"),
+                            "\u0969", "3")),
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    // U+0940/U+0902: "ीं" DEVANAGARI VOWEL SIGN II/DEVANAGARI SIGN ANUSVARA
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    key(VOWEL_SIGN_II, "\u0940", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_II + "\u0902", "\u0940\u0902"),
+                            "\u096A", "4")),
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    // U+0942/U+0902: "ूं" DEVANAGARI VOWEL SIGN UU/DEVANAGARI SIGN ANUSVARA
+                    // U+0942/U+0901: "ूँ" DEVANAGARI VOWEL SIGN UU/DEVANAGARI SIGN CANDRABINDU
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    key(VOWEL_SIGN_UU, "\u0942", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_UU + "\u0902", "\u0942\u0902"),
+                            moreKey(VOWEL_SIGN_UU + "\u0901", "\u0942\u0901"),
+                            "\u096B", "5")),
+                    // U+092C: "ब" DEVANAGARI LETTER BA
+                    // U+092C/U+0952: "ब॒" DEVANAGARI LETTER BA/DEVANAGARI STRESS SIGN ANUDATTA
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    key("\u092C", joinMoreKeys("\u092C\u0952", "\u096C", "6")),
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    key("\u0939", joinMoreKeys("\u096D", "7")),
+                    // U+0917: "ग" DEVANAGARI LETTER GA
+                    // U+091C/U+094D/U+091E:
+                    //     "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
+                    // U+0917/U+093C: "ग़" DEVANAGARI LETTER GA/DEVANAGARI SIGN NUKTA
+                    // U+0917/U+0952: "ग॒" DEVANAGARI LETTER GA/DEVANAGARI STRESS SIGN ANUDATTA
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    key("\u0917", joinMoreKeys("\u091C\u094D\u091E", "\u0917\u093C", "\u0917\u0952",
+                            "\u096E", "8")),
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    key("\u0926", joinMoreKeys("\u096F", "9")),
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+091C/U+0952: "ज॒" DEVANAGARI LETTER JA/DEVANAGARI STRESS SIGN ANUDATTA
+                    // U+091C/U+094D/U+091E:
+                    //     "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
+                    // U+091C/U+093C: "ज़" DEVANAGARI LETTER JA/DEVANAGARI SIGN NUKTA
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    key("\u091C", joinMoreKeys("\u091C\u0952", "\u091C\u094D\u091E", "\u091C\u093C",
+                            "\u0966", "0")),
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    // U+0921/U+0952: "ड॒" DEVANAGARI LETTER DDA/DEVANAGARI STRESS SIGN ANUDATTA
+                    // U+0921/U+093C: "ड़" DEVANAGARI LETTER DDA/DEVANAGARI SIGN NUKTA
+                    key("\u0921", joinMoreKeys("\u0921\u0952", "\u0921\u093C")))
+            .setKeysOfRow(2,
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    // U+094B/U+0902: "қं" DEVANAGARI VOWEL SIGN O/DEVANAGARI SIGN ANUSVARA
+                    // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
+                    // U+094A: "ॊ" DEVANAGARI VOWEL SIGN SHORT O
+                    key(VOWEL_SIGN_O, "\u094B", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_O + "\u0902", "\u094B\u0902"),
+                            moreKey(VOWEL_SIGN_CANDRA_O, "\u0949"),
+                            moreKey(VOWEL_SIGN_SHORT_O, "\u094A"))),
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    // U+0947/U+0902: "ें" DEVANAGARI VOWEL SIGN E/DEVANAGARI SIGN ANUSVARA
+                    key(VOWEL_SIGN_E, "\u0947",
+                            moreKey(VOWEL_SIGN_E + "\u0902", "\u0947\u0902")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    key(SIGN_VIRAMA, "\u094D"),
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    // U+093F/U+0902: "िं" DEVANAGARI VOWEL SIGN I/DEVANAGARI SIGN ANUSVARA
+                    key(VOWEL_SIGN_I, "\u093F",
+                            moreKey("\u093F" + SIGN_ANUSVARA, "\u093F\u0902")),
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+                    // U+0941/U+0902: "ुं" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN ANUSVARA
+                    // U+0941/U+0901: "ुँ" DEVANAGARI VOWEL SIGN U/DEVANAGARI SIGN CANDRABINDU
+                    key(VOWEL_SIGN_U, "\u0941", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_U + "\u0902", "\u0941\u0902"),
+                            moreKey(VOWEL_SIGN_U + "\u0901", "\u0941\u0901"))),
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    "\u092A",
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0930/U+093C: "ऱ" DEVANAGARI LETTER RA/DEVANAGARI SIGN NUKTA
+                    // U+0960: "ॠ" DEVANAGARI LETTER VOCALIC RR
+                    key("\u0930", joinMoreKeys("\u090B", "\u0930\u093C", "\u0960")),
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+0915/U+093C: "क़" DEVANAGARI LETTER KA/DEVANAGARI SIGN NUKTA
+                    key("\u0915", moreKey("\u0915\u093C")),
+                    // U+0924: "त" DEVANAGARI LETTER TA
+                    // U+0924/U+094D/U+0930:
+                    //     "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0924", moreKey("\u0924\u094D\u0930")),
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    "\u091A","\u091F")
+            .setKeysOfRow(3,
+                    // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
+                    key(VOWEL_SIGN_CANDRA_O, "\u0949"),
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    key(SIGN_ANUSVARA, "\u0902"),
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    // U+0950: "ॐ" DEVANAGARI OM
+                    key("\u092E", moreKey("\u0950")),
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    // U+0928/U+093C: "ऩ" DEVANAGARI LETTER NA/DEVANAGARI SIGN NUKTA
+                    key("\u0928", joinMoreKeys("\u091E", "\u0919", "\u0928\u093C")),
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    "\u0935",
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    // U+090C: "ऌ" DEVANAGARI LETTER VOCALIC L
+                    // U+0961: "ॡ" DEVANAGARI LETTER VOCALIC LL
+                    key("\u0932", joinMoreKeys("\u090C", "\u0961")),
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    "\u0938",
+                    // U+092F: "य" DEVANAGARI LETTER YA
+                    // U+095F: "य़" DEVANAGARI LETTER YYA
+                    key("\u092F", moreKey("\u095F")),
+                    // U+093C: "़" DEVANAGARI SIGN NUKTA
+                    // U+097D: "ॽ" DEVANAGARI LETTER GLOTTAL STOP
+                    // U+0970: "॰" DEVANAGARI ABBREVIATION SIGN
+                    // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+                    key(SIGN_NUKTA, "\u093C", joinMoreKeys(
+                            moreKey(LETTER_GLOTTAL_STOP, "\u097D"),
+                            moreKey(ABBREVIATION_SIGN, "\u0970"),
+                            moreKey(SIGN_AVAGRAHA, "\u093D"))))
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    // U+0912/U+0902: "ऒं" DEVANAGARI LETTER SHORT O//DEVANAGARI SIGN ANUSVARA
+                    key("\u0914", moreKey("\u0912\u0902")),
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0910/U+0902: "ऐं" DEVANAGARI LETTER AI/DEVANAGARI SIGN ANUSVARA
+                    key("\u0910", moreKey("\u0910\u0902")),
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0906/U+0902: "आं" DEVANAGARI LETTER AA/DEVANAGARI SIGN ANUSVARA
+                    // U+0906/U+0901: "आँ" DEVANAGARI LETTER AA/DEVANAGARI SIGN CANDRABINDU
+                    key("\u0906", joinMoreKeys("\u0906\u0902", "\u0906\u0901")),
+                    // U+0908: "ई" DEVANAGARI LETTER II
+                    // U+0908/U+0902: "ईं" DEVANAGARI LETTER II/DEVANAGARI SIGN ANUSVARA
+                    key("\u0908", moreKey("\u0908\u0902")),
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+090A/U+0902: "ऊं" DEVANAGARI LETTER UU/DEVANAGARI SIGN ANUSVARA
+                    // U+090A/U+0901: "ऊँ" DEVANAGARI LETTER UU/DEVANAGARI SIGN CANDRABINDU
+                    key("\u090A", joinMoreKeys("\u090A\u0902", "\u090A\u0901")),
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+0903: "ः" DEVANAGARI SIGN VISARGA
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    "\u092D", key(SIGN_VISARGA, "\u0903"), "\u0918",
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+0915/U+094D/U+0937:
+                    //     "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
+                    // U+0936/U+094D/U+0930:
+                    //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0927", joinMoreKeys("\u0915\u094D\u0937", "\u0936\u094D\u0930")),
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    "\u091D", "\u0922")
+            .setKeysOfRow(2,
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    // U+0913/U+0902: "ओं" DEVANAGARI LETTER O/DEVANAGARI SIGN ANUSVARA
+                    // U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
+                    // U+0912: "ऒ" DEVANAGARI LETTER SHORT O
+                    key("\u0913", joinMoreKeys("\u0913\u0902", "\u0911", "\u0912")),
+                    // U+090F: "ए" DEVANAGARI LETTER E
+                    // U+090F/U+0902: "एं" DEVANAGARI LETTER E/DEVANAGARI SIGN ANUSVARA
+                    // U+090F/U+0901: "एँ" DEVANAGARI LETTER E/DEVANAGARI SIGN CANDRABINDU
+                    // U+090D: "ऍ" DEVANAGARI LETTER CANDRA E
+                    // U+090E: "ऎ" DEVANAGARI LETTER SHORT E
+                    key("\u090F", joinMoreKeys("\u090F\u0902", "\u090F\u0901", "\u090D", "\u090E")),
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    // U+0905/U+0902: "अं" DEVANAGARI LETTER A/DEVANAGARI SIGN ANUSVARA
+                    // U+0905/U+0901: "अँ" DEVANAGARI LETTER A/DEVANAGARI SIGN CANDRABINDU
+                    key("\u0905", joinMoreKeys("\u0905\u0902", "\u0905\u0901")),
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    // U+0907/U+0902: "इं" DEVANAGARI LETTER I/DEVANAGARI SIGN ANUSVARA
+                    // U+0907/U+0901: "इं" DEVANAGARI LETTER I/DEVANAGARI SIGN CANDRABINDU
+                    key("\u0907", joinMoreKeys("\u0907\u0902", "\u0907\u0901")),
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    // U+0909/U+0902: "उं" DEVANAGARI LETTER U/DEVANAGARI SIGN ANUSVARA
+                    // U+0909/U+0901: "उँ" DEVANAGARI LETTER U/DEVANAGARI SIGN CANDRABINDU
+                    key("\u0909", joinMoreKeys("\u0909\u0902", "\u0909\u0901")),
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    // U+092B/U+093C: "फ़" DEVANAGARI LETTER PHA/DEVANAGARI SIGN NUKTA
+                    key("\u092B", moreKey("\u092B\u093C")),
+                    // U+0931: "ऱ" DEVANAGARI LETTER RRA
+                    // U+094D/U+0930: "्र" DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    // U+0930/U+094D: "र्" DEVANAGARI LETTER RA/DEVANAGARI SIGN VIRAMA
+                    key("\u0931", joinMoreKeys("\u094D\u0930", "\u0930\u094D")),
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    // U+0916/U+093C: "ख़" DEVANAGARI LETTER KHA/DEVANAGARI SIGN NUKTA
+                    key("\u0916", moreKey("\u0916\u093C")),
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    "\u0925", "\u091B", "\u0920")
+            .setKeysOfRow(3,
+                    // U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
+                    "\u0911",
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                    key(SIGN_CANDRABINDU, "\u0901", moreKey(VOWEL_SIGN_CANDRA_E, "\u0945")),
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    // U+0929: "ऩ" DEVANAGARI LETTER NNNA
+                    "\u0923", "\u0929",
+                    // U+0933: "ळ" DEVANAGARI LETTER LLA
+                    // U+0934: "ऴ" DEVANAGARI LETTER LLLA
+                    key("\u0933", moreKey("\u0934")),
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    "\u0936", "\u0937",
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    // U+0944: "ॄ" DEVANAGARI VOWEL SIGN VOCALIC RR
+                    key(VOWEL_SIGN_VOCALIC_R, "\u0943", moreKey(VOWEL_SIGN_VOCALIC_RR, "\u0944")),
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    "\u091E")
+            .build();
+
+    static class HindiSymbols extends Symbols {
+        public HindiSymbols(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    // 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
+                    .replaceKeyOfLabel("1", key("\u0967",
+                            joinMoreKeys("1", "\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")))
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    // U+00B2: "²" SUPERSCRIPT TWO
+                    // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+                    .replaceKeyOfLabel("2", key("\u0968", joinMoreKeys("2", "\u00B2", "\u2154")))
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    // U+00B3: "³" SUPERSCRIPT THREE
+                    // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+                    // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+                    .replaceKeyOfLabel("3", key("\u0969",
+                            joinMoreKeys("3", "\u00B3", "\u00BE","\u215C")))
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    // U+2074: "⁴" SUPERSCRIPT FOUR
+                    .replaceKeyOfLabel("4", key("\u096A", joinMoreKeys("4", "\u2074")))
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+                    .replaceKeyOfLabel("5", key("\u096B", joinMoreKeys("5", "\u215D")))
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    .replaceKeyOfLabel("6", key("\u096C", moreKey("6")))
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+                    .replaceKeyOfLabel("7", key("\u096D", joinMoreKeys("7", "\u215E")))
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    .replaceKeyOfLabel("8", key("\u096E", moreKey("8")))
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    .replaceKeyOfLabel("9", key("\u096F", moreKey("9")))
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+                    // U+2205: "∅" EMPTY SET
+                    .replaceKeyOfLabel("0", key("\u0966", joinMoreKeys("0", "\u207F", "\u2205")))
+                    .build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
new file mode 100644
index 0000000..2b625c3
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/HindiCompact.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
+
+import com.android.inputmethod.keyboard.layout.Hindi.HindiCustomizer;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiSymbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The Hindi Compact keyboard.
+ */
+public final class HindiCompact extends LayoutBase {
+    private static final String LAYOUT_NAME = "hindi_compact";
+
+    public HindiCompact(final LayoutCustomizer customizer) {
+        super(customizer, HindiSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class HindiCompactCustomizer extends HindiCustomizer {
+        public HindiCompactCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            // U+0964: "।" DEVANAGARI DANDA
+            final ExpectedKey periodKey = key("\u0964", getPunctuationMoreKeys(isPhone));
+            return isPhone ? joinKeys(periodKey) : joinKeys("/", periodKey);
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return isPhone ? HINDI_PHONE_PUNCTUATION_MORE_KEYS : HINDI_TABLET_PUNCTUATION_MORE_KEYS;
+        }
+
+        // Punctuation more keys for phone form factor.
+        private static final ExpectedKey[] HINDI_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+                ",", ".", "?", "!", "#", ")", "(", "/", ";",
+                "'", "@", ":", "-", "\"", "+", "%", "&");
+        // Punctuation more keys for tablet form factor.
+        private static final ExpectedKey[] HINDI_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+                ",", ".", "'", "#", ")", "(", "/", ";",
+                "@", ":", "-", "\"", "+", "%", "&");
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    key("\u0914", joinMoreKeys(moreKey(VOWEL_SIGN_AU, "\u094C"), "\u0967", "1")),
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    key("\u0910", joinMoreKeys(moreKey(VOWEL_SIGN_AI, "\u0948"), "\u0968", "2")),
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    key("\u0906", joinMoreKeys(moreKey(VOWEL_SIGN_AA, "\u093E"), "\u0969", "3")),
+                    // U+0908: "ई" DEVANAGARI LETTER II
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    key("\u0908", joinMoreKeys(moreKey(VOWEL_SIGN_II, "\u0940"), "\u096A", "4")),
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    key("\u090A", joinMoreKeys(moreKey(VOWEL_SIGN_UU, "\u0942"), "\u096B", "5")),
+                    // U+092C: "ब" DEVANAGARI LETTER BA
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    key("\u092C", joinMoreKeys("\u092D", "\u096C", "6")),
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    key("\u0939", joinMoreKeys("\u096D", "7")),
+                    // U+0917: "ग" DEVANAGARI LETTER GA
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    key("\u0917", joinMoreKeys("\u0918", "\u096E", "8")),
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    key("\u0926", joinMoreKeys("\u0927", "\u096F", "9")),
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+091C/U+094D/U+091E:
+                    //     "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    key("\u091C", joinMoreKeys("\u091D", "\u091C\u094D\u091E", "\u0966", "0")),
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    key("\u0921", moreKey("\u0922")))
+            .setKeysOfRow(2,
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    key("\u0913", moreKey(VOWEL_SIGN_O, "\u094B")),
+                    // U+090F: "ए" DEVANAGARI LETTER E
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    key("\u090F", moreKey(VOWEL_SIGN_E, "\u0947")),
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    key("\u0905", moreKey(SIGN_VIRAMA, "\u094D")),
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    key("\u0907", moreKey(VOWEL_SIGN_I, "\u093F")),
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+                    key("\u0909", moreKey(VOWEL_SIGN_U, "\u0941")),
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    key("\u092A", moreKey("\u092B")),
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    key("\u0930", joinMoreKeys("\u090B", moreKey(VOWEL_SIGN_VOCALIC_R, "\u0943"))),
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    key("\u0915", moreKey("\u0916")),
+                    // U+0924: "त" DEVANAGARI LETTER TA
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+0924/U+094D/U+0930:
+                    //     "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0924", joinMoreKeys("\u0925", "\u0924\u094D\u0930")),
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    key("\u091A", moreKey("\u091B")),
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    key("\u091F", moreKey("\u0920")))
+            .setKeysOfRow(3,
+                    // U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
+                    // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
+                    key("\u0911", moreKey(VOWEL_SIGN_CANDRA_O, "\u0949")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                    // U+090D: "ऍ" DEVANAGARI LETTER CANDRA E
+                    key(SIGN_VIRAMA, "\u094D", joinMoreKeys(
+                            moreKey(VOWEL_SIGN_CANDRA_E, "\u0945"), "\u090D")),
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    // U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    // U+093C: "़" DEVANAGARI SIGN NUKTA
+                    key(SIGN_ANUSVARA, "\u0902", joinMoreKeys(
+                            moreKey(SIGN_VISARGA, "\u0903"),
+                            moreKey(SIGN_CANDRABINDU, "\u0901"),
+                            moreKey(SIGN_NUKTA, "\u093C"))),
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    // U+0950: "ॐ" DEVANAGARI OM
+                    key("\u092E", moreKey("\u0950")),
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    key("\u0928", joinMoreKeys("\u0923", "\u091E", "\u0919")),
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    "\u0935", "\u0932",
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    // U+0936/U+094D/U+0930:
+                    //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0938", joinMoreKeys("\u0936", "\u0937", "\u0936\u094D\u0930")),
+                    // U+092F: "य" DEVANAGARI LETTER YA
+                    // U+0915/U+094D/U+0937:
+                    //     "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
+                    "\u092F", "\u0915\u094D\u0937")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java b/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java
new file mode 100644
index 0000000..5ce7f4d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Kannada keyboard.
+ */
+public final class Kannada extends LayoutBase {
+    private static final String LAYOUT_NAME = "kannada";
+
+    public Kannada(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class KannadaCustomizer extends LayoutCustomizer {
+        public KannadaCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return KANNADA_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        @Override
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+        }
+
+        // U+0C85: "ಅ" KANNADA LETTER A
+        // U+0C86: "ಆ" KANNADA LETTER AA
+        // U+0C87: "ಇ" KANNADA LETTER I
+        private static final ExpectedKey KANNADA_ALPHABET_KEY = key(
+                "\u0C85\u0C86\u0C87", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0CCC: "ೌ" KANNADA VOWEL SIGN AU
+                    // U+0C94: "ಔ" KANNADA LETTER AU
+                    // U+0CE7: "೧" KANNADA DIGIT ONE
+                    key("\u0CCC", joinMoreKeys("\u0C94", "\u0CE7", "1")),
+                    // U+0CC8: "ೈ" KANNADA VOWEL SIGN AI
+                    // U+0C90: "ಐ" KANNADA LETTER AI
+                    // U+0CE8: "೨" KANNADA DIGIT TWO
+                    key("\u0CC8", joinMoreKeys("\u0C90", "\u0CE8", "2")),
+                    // U+0CBE: "ಾ" KANNADA VOWEL SIGN AA
+                    // U+0C86: "ಆ" KANNADA LETTER AA
+                    // U+0CE9: "೩" KANNADA DIGIT THREE
+                    key("\u0CBE", joinMoreKeys("\u0C86", "\u0CE9", "3")),
+                    // U+0CC0: "ೀ" KANNADA VOWEL SIGN II
+                    // U+0C88: "ಈ" KANNADA LETTER II
+                    // U+0CEA: "೪" KANNADA DIGIT FOUR
+                    key("\u0CC0", joinMoreKeys("\u0C88", "\u0CEA", "4")),
+                    // U+0CC2: "ೂ" KANNADA VOWEL SIGN UU
+                    // U+0C8A: "ಊ" KANNADA LETTER UU
+                    // U+0CEB: "೫" KANNADA DIGIT FIVE
+                    key("\u0CC2", joinMoreKeys("\u0C8A", "\u0CEB", "5")),
+                    // U+0CAC: "ಬ" KANNADA LETTER BA
+                    // U+0CAD: "ಭ" KANNADA LETTER BHA
+                    // U+0CEC: "೬" KANNADA DIGIT SIX
+                    key("\u0CAC", joinMoreKeys("\u0CAD", "\u0CEC", "6")),
+                    // U+0CB9: "ಹ" KANNADA LETTER HA
+                    // U+0C99: "ಙ" KANNADA LETTER NGA
+                    // U+0CED: "೭" KANNADA DIGIT SEVEN
+                    key("\u0CB9", joinMoreKeys("\u0C99", "\u0CED", "7")),
+                    // U+0C97: "ಗ" KANNADA LETTER GA
+                    // U+0C98: "ಘ" KANNADA LETTER GHA
+                    // U+0CEE: "೮" KANNADA DIGIT EIGHT
+                    key("\u0C97", joinMoreKeys("\u0C98", "\u0CEE", "8")),
+                    // U+0CA6: "ದ" KANNADA LETTER DA
+                    // U+0CA7: "ಧ" KANNADA LETTER DHA
+                    // U+0CEF: "೯" KANNADA DIGIT NINE
+                    key("\u0CA6", joinMoreKeys("\u0CA7", "\u0CEF", "9")),
+                    // U+0C9C: "ಜ" KANNADA LETTER JA
+                    // U+0C9D: "ಝ" KANNADA LETTER JHA
+                    // U+0CE6: "೦" KANNADA DIGIT ZERO
+                    key("\u0C9C", joinMoreKeys("\u0C9D", "\u0CE6", "0")),
+                    // U+0CA1: "ಡ" KANNADA LETTER DDA
+                    // U+0CA2: "ಢ" KANNADA LETTER DDHA
+                    key("\u0CA1", moreKey("\u0CA2")))
+            .setKeysOfRow(2,
+                    // U+0CCB: "ೋ" KANNADA VOWEL SIGN OO
+                    // U+0C93: "ಓ" KANNADA LETTER OO
+                    key("\u0CCB", moreKey("\u0C93")),
+                    // U+0CC7: "ೇ" KANNADA VOWEL SIGN EE
+                    // U+0C8F: "ಏ" KANNADA LETTER EE
+                    key("\u0CC7", moreKey("\u0C8F")),
+                    // U+0CCD: "್" KANNADA SIGN VIRAMA
+                    // U+0C85: "ಅ" KANNADA LETTER A
+                    key("\u0CCD", moreKey("\u0C85")),
+                    // U+0CBF: "ಿ" KANNADA VOWEL SIGN I
+                    // U+0C87: "ಇ" KANNADA LETTER I
+                    key("\u0CBF", moreKey("\u0C87")),
+                    // U+0CC1: "ು" KANNADA VOWEL SIGN U
+                    // U+0C89: "ಉ" KANNADA LETTER U
+                    key("\u0CC1", moreKey("\u0C89")),
+                    // U+0CAA: "ಪ" KANNADA LETTER PA
+                    // U+0CAB: "ಫ" KANNADA LETTER PHA
+                    key("\u0CAA", moreKey("\u0CAB")),
+                    // U+0CB0: "ರ" KANNADA LETTER RA
+                    // U+0CB1: "ಱ" KANNADA LETTER RRA
+                    // U+0CC3: "ೃ" KANNADA VOWEL SIGN VOCALIC R
+                    key("\u0CB0", joinMoreKeys("\u0CB1", "\u0CC3")),
+                    // U+0C95: "ಕ" KANNADA LETTER KA
+                    // U+0C96: "ಖ" KANNADA LETTER KHA
+                    key("\u0C95", moreKey("\u0C96")),
+                    // U+0CA4: "ತ" KANNADA LETTER TA
+                    // U+0CA5: "ಥ" KANNADA LETTER THA
+                    key("\u0CA4", moreKey("\u0CA5")),
+                    // U+0C9A: "ಚ" KANNADA LETTER CA
+                    // U+0C9B: "ಛ" KANNADA LETTER CHA
+                    key("\u0C9A", moreKey("\u0C9B")),
+                    // U+0C9F: "ಟ" KANNADA LETTER TTA
+                    // U+0CA0: "ಠ" KANNADA LETTER TTHA
+                    key("\u0C9F", moreKey("\u0CA0")))
+            .setKeysOfRow(3,
+                    // U+0CC6: "ೆ" KANNADA VOWEL SIGN E
+                    // U+0C92: "ಒ" KANNADA LETTER O
+                    key("\u0CC6", moreKey("\u0C92")),
+                    // U+0C82: "ಂ" KANNADA SIGN ANUSVARA
+                    // U+0C8E: "ಎ" KANNADA LETTER E
+                    key("\u0C82", moreKey("\u0C8E")),
+                    // U+0CAE: "ಮ" KANNADA LETTER MA
+                    // U+0CA3: "ಣ" KANNADA LETTER NNA
+                    key("\u0CAE", moreKey("\u0CA3")),
+                    // U+0CA8: "ನ" KANNADA LETTER NA
+                    // U+0CB5: "ವ" KANNADA LETTER VA
+                    "\u0CA8", "\u0CB5",
+                    // U+0CB2: "ಲ" KANNADA LETTER LA
+                    // U+0CB3: "ಳ" KANNADA LETTER LLA
+                    key("\u0CB2", moreKey("\u0CB3")),
+                    // U+0CB8: "ಸ" KANNADA LETTER SA
+                    // U+0CB6: "ಶ" KANNADA LETTER SHA
+                    key("\u0CB8", moreKey("\u0CB6")),
+                    // U+0C8B: "ಋ" KANNADA LETTER VOCALIC R
+                    // U+0CCD/U+0CB0: "್ರ" KANNADA SIGN VIRAMA/KANNADA LETTER RA
+                    key("\u0C8B", moreKey("\u0CCD\u0CB0")),
+                    // U+0CB7: "ಷ" KANNADA LETTER SSA
+                    // U+0C95/U+0CCD/U+0CB7:
+                    //     "ಕ್ಷ" KANNADA LETTER RA/KANNADA SIGN VIRAMA/KANNADA LETTER SSA
+                    key("\u0CB7", moreKey("\u0C95\u0CCD\u0CB7")),
+                    // U+0CAF: "ಯ" KANNADA LETTER YA
+                    // U+0C9C/U+0CCD/U+0C9E:
+                    //     "ಜ್ಞ" KANNADA LETTER JA/KANNADA SIGN VIRAMA/KANNADA LETTER NYA
+                    key("\u0CAF", moreKey("\u0C9C\u0CCD\u0C9E")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
new file mode 100644
index 0000000..143ccf6
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Khmer alphabet keyboard.
+ */
+public final class Khmer extends LayoutBase {
+    private static final String LAYOUT_NAME = "khmer";
+
+    public Khmer(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class KhmerCustomizer extends LayoutCustomizer {
+        public KhmerCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return KHMER_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_DOLLAR_WITH_RIEL; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
+
+        // U+1780: "ក" KHMER LETTER KA
+        // U+1781: "ខ" KHMER LETTER KHA
+        // U+1782: "គ" KHMER LETTER KO
+        private static final ExpectedKey KHMER_ALPHABET_KEY = key(
+                "\u1780\u1781\u1782", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
+        private static final ExpectedKey CURRENCY_DOLLAR_WITH_RIEL = key(Symbols.DOLLAR_SIGN,
+                moreKey("\u17DB"), Symbols.CENT_SIGN, Symbols.POUND_SIGN, Symbols.EURO_SIGN,
+                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        if (isPhone) {
+            return ALPHABET_COMMON;
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        builder.addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
+        return builder.build();
+    }
+
+    @Override
+    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+            final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+17E1: "១" KHMER DIGIT ONE
+                    // U+17F1: "៱" KHMER SYMBOL LEK ATTAK MUOY
+                    key("\u17E1", joinMoreKeys("1", "\u17F1")),
+                    // U+17E2: "២" KHMER DIGIT TWO
+                    // U+17F2: "៲" KHMER SYMBOL LEK ATTAK PII
+                    key("\u17E2", joinMoreKeys("2", "\u17F2")),
+                    // U+17E3: "៣" KHMER DIGIT THREE
+                    // U+17F3: "៳" KHMER SYMBOL LEK ATTAK BEI
+                    key("\u17E3", joinMoreKeys("3", "\u17F3")),
+                    // U+17E4: "៤" KHMER DIGIT FOUR
+                    // U+17F4: "៴" KHMER SYMBOL LEK ATTAK BUON
+                    key("\u17E4", joinMoreKeys("4", "\u17F4")),
+                    // U+17E5: "៥" KHMER DIGIT FIVE
+                    // U+17F5: "៵" KHMER SYMBOL LEK ATTAK PRAM
+                    key("\u17E5", joinMoreKeys("5", "\u17F5")),
+                    // U+17E6: "៦" KHMER DIGIT SIX
+                    // U+17F6: "៶" KHMER SYMBOL LEK ATTAK PRAM-MUOY
+                    key("\u17E6", joinMoreKeys("6", "\u17F6")),
+                    // U+17E7: "៧" KHMER DIGIT SEVEN
+                    // U+17F7: "៷" KHMER SYMBOL LEK ATTAK PRAM-PII
+                    key("\u17E7", joinMoreKeys("7", "\u17F7")),
+                    // U+17E8: "៨" KHMER DIGIT EIGHT
+                    // U+17F8: "៸" KHMER SYMBOL LEK ATTAK PRAM-BEI
+                    key("\u17E8", joinMoreKeys("8", "\u17F8")),
+                    // U+17E9: "៩" KHMER DIGIT NINE
+                    // U+17F9: "៹" KHMER SYMBOL LEK ATTAK PRAM-BUON
+                    key("\u17E9", joinMoreKeys("9", "\u17F9")),
+                    // U+17E0: "០" KHMER DIGIT ZERO
+                    // U+17F0: "៰" KHMER SYMBOL LEK ATTAK SON
+                    key("\u17E0", joinMoreKeys("0", "\u17F0")),
+                    // U+17A5: "ឥ" KHMER INDEPENDENT VOWEL QI
+                    // U+17A6: "ឦ" KHMER INDEPENDENT VOWEL QII
+                    key("\u17A5", moreKey("\u17A6")),
+                    // U+17B2: "ឲ" KHMER INDEPENDENT VOWEL QOO TYPE TWO
+                    // U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
+                    key("\u17B2", moreKey("\u17B1")))
+            .setKeysOfRow(2,
+                    // U+1786: "ឆ" KHMER LETTER CHA
+                    // U+17B9: "ឹ" KHMER VOWEL SIGN Y
+                    // U+17C1: "េ" KHMER VOWEL SIGN E
+                    // U+179A: "រ" KHMER LETTER RO
+                    // U+178F: "ត" KHMER LETTER TA
+                    // U+1799: "យ" KHMER LETTER YO
+                    // U+17BB: "ុ" KHMER VOWEL SIGN U
+                    // U+17B7: "ិ" KHMER VOWEL SIGN I
+                    // U+17C4: "ោ" KHMER VOWEL SIGN OO
+                    // U+1795: "ផ" KHMER LETTER PHA
+                    // U+17C0: "ៀ" KHMER VOWEL SIGN IE
+                    "\u1786", "\u17B9", "\u17C1", "\u179A", "\u178F", "\u1799", "\u17BB", "\u17B7",
+                    "\u17C4", "\u1795", "\u17C0",
+                    // U+17AA: "ឪ" KHMER INDEPENDENT VOWEL QUUV
+                    // U+17A7: "ឧ" KHMER INDEPENDENT VOWEL QU
+                    // U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
+                    // U+17B3: "ឳ" KHMER INDEPENDENT VOWEL QAU
+                    // U+17A9: "ឩ" KHMER INDEPENDENT VOWEL QUU
+                    // U+17A8: "ឨ" KHMER INDEPENDENT VOWEL QUK
+                    key("\u17AA", joinMoreKeys("\u17A7", "\u17B1", "\u17B3", "\u17A9", "\u17A8")))
+            .setKeysOfRow(3,
+                    // U+17B6: "ា" KHMER VOWEL SIGN AA
+                    // U+179F: "ស" KHMER LETTER SA
+                    // U+178A: "ដ" KHMER LETTER DA
+                    // U+1790: "ថ" KHMER LETTER THA
+                    // U+1784: "ង" KHMER LETTER NGO
+                    // U+17A0: "ហ" KHMER LETTER HA
+                    // U+17D2: "្" KHMER SIGN COENG
+                    // U+1780: "ក" KHMER LETTER KA
+                    // U+179B: "ល" KHMER LETTER LO
+                    // U+17BE: "ើ" KHMER VOWEL SIGN OE
+                    // U+17CB: "់" KHMER SIGN BANTOC
+                    "\u17B6", "\u179F", "\u178A", "\u1790", "\u1784", "\u17A0", "\u17D2", "\u1780",
+                    "\u179B", "\u17BE", "\u17CB",
+                    // U+17AE: "ឮ" KHMER INDEPENDENT VOWEL LYY
+                    // U+17AD: "ឭ" KHMER INDEPENDENT VOWEL LY
+                    // U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
+                    key("\u17AE", joinMoreKeys("\u17AD", "\u17B0")))
+            .setKeysOfRow(4,
+                    // U+178B: "ឋ" KHMER LETTER TTHA
+                    // U+1781: "ខ" KHMER LETTER KHA
+                    // U+1785: "ច" KHMER LETTER CA
+                    // U+179C: "វ" KHMER LETTER VO
+                    // U+1794: "ប" KHMER LETTER BA
+                    // U+1793: "ន" KHMER LETTER NO
+                    // U+1798: "ម" KHMER LETTER MO
+                    // U+17BB/U+17C6: "ុំ" KHMER VOWEL SIGN U/KHMER SIGN NIKAHIT
+                    // U+17D4: "។" KHMER SIGN KHAN
+                    // U+17CA: "៊" KHMER SIGN TRIISAP
+                    "\u178B", "\u1781", "\u1785", "\u179C", "\u1794", "\u1793", "\u1798",
+                    "\u17BB\u17C6", "\u17D4", "\u17CA")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("!", ZWJ_KEY),
+                    // U+17D7: "ៗ" KHMER SIGN LEK TOO
+                    key("\u17D7", ZWNJ_KEY),
+                    // U+17D1: "៑" KHMER SIGN VIRIAM
+                    key("\"", moreKey("\u17D1")),
+                    // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
+                    key("\u17DB", joinMoreKeys(Symbols.DOLLAR_SIGN, Symbols.EURO_SIGN)),
+                    // U+17D6: "៖" KHMER SIGN CAMNUC PII KUUH
+                    key("%", moreKey("\u17D6")),
+                    // U+17CD: "៍" KHMER SIGN TOANDAKHIAT
+                    // U+17D9: "៙" KHMER SIGN PHNAEK MUAN
+                    key("\u17CD", moreKey("\u17D9")),
+                    // U+17D0: "័" KHMER SIGN SAMYOK SANNYA
+                    // U+17DA: "៚" KHMER SIGN KOOMUUT
+                    key("\u17D0", moreKey("\u17DA")),
+                    // U+17CF: "៏" KHMER SIGN AHSDA
+                    key("\u17CF", moreKey("*")),
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    key("(", joinMoreKeys("{", "\u00AB")),
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    key(")", joinMoreKeys("}", "\u00BB")),
+                    // U+17CC: "៌" KHMER SIGN ROBAT
+                    // U+00D7: "×" MULTIPLICATION SIGN
+                    key("\u17CC", moreKey("\u00D7")),
+                    // U+17CE: "៎" KHMER SIGN KAKABAT
+                    "\u17CE")
+            .setKeysOfRow(2,
+                    // U+1788: "ឈ" KHMER LETTER CHO
+                    // U+17DC: "ៜ" KHMER SIGN AVAKRAHASANYA
+                    key("\u1788", moreKey("\u17DC")),
+                    // U+17BA: "ឺ" KHMER VOWEL SIGN YY
+                    // U+17DD: "៝" KHMER SIGN ATTHACAN
+                    key("\u17BA", moreKey("\u17DD")),
+                    // U+17C2: "ែ" KHMER VOWEL SIGN AE
+                    "\u17C2",
+                    // U+17AC: "ឬ" KHMER INDEPENDENT VOWEL RYY
+                    // U+17AB: "ឫ" KHMER INDEPENDENT VOWEL RY
+                    key("\u17AC", moreKey("\u17AB")),
+                    // U+1791: "ទ" KHMER LETTER TO
+                    // U+17BD: "ួ" KHMER VOWEL SIGN UA
+                    // U+17BC: "ូ" KHMER VOWEL SIGN UU
+                    // U+17B8: "ី" KHMER VOWEL SIGN II
+                    // U+17C5: "ៅ" KHMER VOWEL SIGN AU
+                    // U+1797: "ភ" KHMER LETTER PHO
+                    // U+17BF: "ឿ" KHMER VOWEL SIGN YA
+                    // U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
+                    "\u1791", "\u17BD", "\u17BC", "\u17B8", "\u17C5", "\u1797", "\u17BF", "\u17B0")
+            .setKeysOfRow(3,
+                    // U+17B6/U+17C6: "ាំ" KHMER VOWEL SIGN AA/KHMER SIGN NIKAHIT
+                    // U+17C3: "ៃ" KHMER VOWEL SIGN AI
+                    // U+178C: "ឌ" KHMER LETTER DO
+                    // U+1792: "ធ" KHMER LETTER THO
+                    // U+17A2: "អ" KHMER LETTER QAE
+                    "\u17B6\u17C6", "\u17C3", "\u178C", "\u1792", "\u17A2",
+                    // U+17C7: "ះ" KHMER SIGN REAHMUK
+                    // U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU
+                    key("\u17C7", moreKey("\u17C8")),
+                    // U+1789: "ញ" KHMER LETTER NYO
+                    "\u1789",
+                    // U+1782: "គ" KHMER LETTER KO
+                    // U+179D: "ឝ" KHMER LETTER SHA
+                    key("\u1782", moreKey("\u179D")),
+                    // U+17A1: "ឡ" KHMER LETTER LA
+                    // U+17C4/U+17C7: "ោះ" KHMER VOWEL SIGN OO/KHMER SIGN REAHMUK
+                    // U+17C9: "៉" KHMER SIGN MUUSIKATOAN
+                    // U+17AF: "ឯ" KHMER INDEPENDENT VOWEL QE
+                    "\u17A1", "\u17C4\u17C7", "\u17C9", "\u17AF")
+            .setKeysOfRow(4,
+                    // U+178D: "ឍ" KHMER LETTER TTHO
+                    // U+1783: "ឃ" KHMER LETTER KHO
+                    // U+1787: "ជ" KHMER LETTER CO
+                    // U+17C1/U+17C7: "េះ" KHMER VOWEL SIGN E/KHMER SIGN REAHMUK
+                    "\u178D", "\u1783", "\u1787", "\u17C1\u17C7",
+                    // U+1796: "ព" KHMER LETTER PO
+                    // U+179E: "ឞ" KHMER LETTER SSO
+                    key("\u1796", moreKey("\u179E")),
+                    // U+178E: "ណ" KHMER LETTER NNO
+                    // U+17C6: "ំ" KHMER SIGN NIKAHIT
+                    // U+17BB/U+17C7: "ុះ" KHMER VOWEL SIGN U/KHMER SIGN REAHMUK
+                    // U+17D5: "៕" KHMER SIGN BARIYOOSAN
+                    "\u178E", "\u17C6", "\u17BB\u17C7", "\u17D5", "?")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Lao.java b/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
new file mode 100644
index 0000000..e7be998
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Lao.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Khmer alphabet keyboard.
+ */
+public final class Lao extends LayoutBase {
+    private static final String LAYOUT_NAME = "lao";
+
+    public Lao(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class LaoCustomizer extends LayoutCustomizer {
+        public LaoCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return LAO_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_KIP; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
+
+        // U+0E81: "ກ" LAO LETTER KO
+        // U+0E82: "ຂ" LAO LETTER KHO SUNG
+        // U+0E84: "ຄ" LAO LETTER KHO TAM
+        private static final ExpectedKey LAO_ALPHABET_KEY = key(
+                "\u0E81\u0E82\u0E84", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+20AD: "₭" KIP SIGN
+        private static final ExpectedKey CURRENCY_KIP = key("\u20AD",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        if (isPhone) {
+            return ALPHABET_COMMON;
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        builder.addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
+        return builder.build();
+    }
+
+    @Override
+    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+            final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0EA2: "ຢ" LAO LETTER YO
+                    // U+0ED1: "໑" LAO DIGIT ONE
+                    key("\u0EA2", joinMoreKeys("1", "\u0ED1")),
+                    // U+0E9F: "ຟ" LAO LETTER FO SUNG
+                    // U+0ED2: "໒" LAO DIGIT TWO
+                    key("\u0E9F", joinMoreKeys("2", "\u0ED2")),
+                    // U+0EC2: "ໂ" LAO VOWEL SIGN O
+                    // U+0ED3: "໓" LAO DIGIT THREE
+                    key("\u0EC2", joinMoreKeys("3", "\u0ED3")),
+                    // U+0E96: "ຖ" LAO LETTER THO SUNG
+                    // U+0ED4: "໔" LAO DIGIT FOUR
+                    key("\u0E96", joinMoreKeys("4", "\u0ED4")),
+                    // U+0EB8: "ຸ" LAO VOWEL SIGN U
+                    // U+0EB9: "ູ" LAO VOWEL SIGN UU
+                    "\u0EB8", "\u0EB9",
+                    // U+0E84: "ຄ" LAO LETTER KHO TAM
+                    // U+0ED5: "໕" LAO DIGIT FIVE
+                    key("\u0E84", joinMoreKeys("5", "\u0ED5")),
+                    // U+0E95: "ຕ" LAO LETTER TO
+                    // U+0ED6: "໖" LAO DIGIT SIX
+                    key("\u0E95", joinMoreKeys("6", "\u0ED6")),
+                    // U+0E88: "ຈ" LAO LETTER CO
+                    // U+0ED7: "໗" LAO DIGIT SEVEN
+                    key("\u0E88", joinMoreKeys("7", "\u0ED7")),
+                    // U+0E82: "ຂ" LAO LETTER KHO SUNG
+                    // U+0ED8: "໘" LAO DIGIT EIGHT
+                    key("\u0E82", joinMoreKeys("8", "\u0ED8")),
+                    // U+0E8A: "ຊ" LAO LETTER SO TAM
+                    // U+0ED9: "໙" LAO DIGIT NINE
+                    key("\u0E8A", joinMoreKeys("9", "\u0ED9")),
+                    // U+0ECD: "ໍ" LAO NIGGAHITA
+                    "\u0ECD")
+            .setKeysOfRow(2,
+                    // U+0EBB: "ົ" LAO VOWEL SIGN MAI KON
+                    "\u0EBB",
+                    // U+0EC4: "ໄ" LAO VOWEL SIGN AI
+                    // U+0ED0: "໐" LAO DIGIT ZERO
+                    key("\u0EC4", joinMoreKeys("0", "\u0ED0")),
+                    // U+0EB3: "ຳ" LAO VOWEL SIGN AM
+                    // U+0E9E: "ພ" LAO LETTER PHO TAM
+                    // U+0EB0: "ະ" LAO VOWEL SIGN A
+                    // U+0EB4: "ິ" LAO VOWEL SIGN I
+                    // U+0EB5: "ີ" LAO VOWEL SIGN II
+                    // U+0EAE: "ຮ" LAO LETTER HO TAM
+                    // U+0E99: "ນ" LAO LETTER NO
+                    // U+0E8D: "ຍ" LAO LETTER NYO
+                    // U+0E9A: "ບ" LAO LETTER BO
+                    // U+0EA5: "ລ" LAO LETTER LO LOOT
+                    "\u0EB3", "\u0E9E", "\u0EB0", "\u0EB4", "\u0EB5", "\u0EAE", "\u0E99", "\u0E8D",
+                    "\u0E9A", "\u0EA5")
+            .setKeysOfRow(3,
+                    // U+0EB1: "ັ" LAO VOWEL SIGN MAI KAN
+                    // U+0EAB: "ຫ" LAO LETTER HO SUNG
+                    // U+0E81: "ກ" LAO LETTER KO
+                    // U+0E94: "ດ" LAO LETTER DO
+                    // U+0EC0: "ເ" LAO VOWEL SIGN E
+                    // U+0EC9: "້" LAO TONE MAI THO
+                    // U+0EC8: "່" LAO TONE MAI EK
+                    // U+0EB2: "າ" LAO VOWEL SIGN AA
+                    // U+0EAA: "ສ" LAO LETTER SO SUNG
+                    // U+0EA7: "ວ" LAO LETTER WO
+                    // U+0E87: "ງ" LAO LETTER NGO
+                    // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+                    "\u0EB1", "\u0EAB", "\u0E81", "\u0E94", "\u0EC0", "\u0EC9", "\u0EC8", "\u0EB2",
+                    "\u0EAA", "\u0EA7", "\u0E87", "\u201C")
+            .setKeysOfRow(4,
+                    // U+0E9C: "ຜ" LAO LETTER PHO SUNG
+                    // U+0E9B: "ປ" LAO LETTER PO
+                    // U+0EC1: "ແ" LAO VOWEL SIGN EI
+                    // U+0EAD: "ອ" LAO LETTER O
+                    // U+0EB6: "ຶ" LAO VOWEL SIGN Y
+                    // U+0EB7: "ື" LAO VOWEL SIGN YY
+                    // U+0E97: "ທ" LAO LETTER THO TAM
+                    // U+0EA1: "ມ" LAO LETTER MO
+                    // U+0EC3: "ໃ" LAO VOWEL SIGN AY
+                    // U+0E9D: "ຝ" LAO LETTER FO TAM
+                    "\u0E9C", "\u0E9B", "\u0EC1", "\u0EAD", "\u0EB6", "\u0EB7", "\u0E97", "\u0EA1",
+                    "\u0EC3", "\u0E9D")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0ED1: "໑" LAO DIGIT ONE
+                    // U+0ED2: "໒" LAO DIGIT TWO
+                    // U+0ED3: "໓" LAO DIGIT THREE
+                    // U+0ED4: "໔" LAO DIGIT FOUR
+                    // U+0ECC: "໌" LAO CANCELLATION MARK
+                    // U+0EBC: "ຼ" LAO SEMIVOWEL SIGN LO
+                    // U+0ED5: "໕" LAO DIGIT FIVE
+                    // U+0ED6: "໖" LAO DIGIT SIX
+                    // U+0ED7: "໗" LAO DIGIT SEVEN
+                    // U+0ED8: "໘" LAO DIGIT EIGHT
+                    // U+0ED9: "໙" LAO DIGIT NINE
+                    // U+0ECD/U+0EC8: "ໍ່" LAO NIGGAHITA/LAO TONE MAI EK
+                    "\u0ED1", "\u0ED2", "\u0ED3", "\u0ED4", "\u0ECC", "\u0EBC", "\u0ED5", "\u0ED6",
+                    "\u0ED7", "\u0ED8", "\u0ED9", "\u0ECD\u0EC8")
+            .setKeysOfRow(2,
+                    // U+0EBB/U+0EC9: "" LAO VOWEL SIGN MAI KON/LAO TONE MAI THO
+                    // U+0ED0: "໐" LAO DIGIT ZERO
+                    // U+0EB3/U+0EC9: "ຳ້" LAO VOWEL SIGN AM/LAO TONE MAI THO
+                    // U+0EB4/U+0EC9: "ິ້" LAO VOWEL SIGN I/LAO TONE MAI THO
+                    // U+0EB5/U+0EC9: "ີ້" LAO VOWEL SIGN II/LAO TONE MAI THO
+                    // U+0EA3: "ຣ" LAO LETTER LO LING
+                    // U+0EDC: "ໜ" LAO HO NO
+                    // U+0EBD: "ຽ" LAO SEMIVOWEL SIGN NYO
+                    // U+0EAB/U+0EBC: "" LAO LETTER HO SUNG/LAO SEMIVOWEL SIGN LO
+                    // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+                    "\u0EBB\u0EC9", "\u0ED0", "\u0EB3\u0EC9", "_", "+", "\u0EB4\u0EC9",
+                    "\u0EB5\u0EC9", "\u0EA3", "\u0EDC", "\u0EBD", "\u0EAB\u0EBC", "\u201D")
+            .setKeysOfRow(3,
+                    // U+0EB1/U+0EC9: "ັ້" LAO VOWEL SIGN MAI KAN/LAO TONE MAI THO
+                    // U+0ECA: "໊" LAO TONE MAI TI
+                    // U+0ECB: "໋" LAO TONE MAI CATAWA
+                    // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+                    "\u0EB1\u0EC9", ";", ".", ",", ":", "\u0ECA", "\u0ECB", "!", "?", "%", "=",
+                    "\u201C")
+            .setKeysOfRow(4,
+                    // U+20AD: "₭" KIP SIGN
+                    // U+0EAF: "ຯ" LAO ELLIPSIS
+                    // U+0EB6/U+0EC9: "ຶ້" LAO VOWEL SIGN Y/LAO TONE MAI THO
+                    // U+0EB7/U+0EC9: "ື້" LAO VOWEL SIGN YY/LAO TONE MAI THO
+                    // U+0EC6: "ໆ" LAO KO LA
+                    // U+0EDD: "ໝ" LAO HO MO
+                    "\u20AD", "(", "\u0EAF", "@", "\u0EB6\u0EC9", "\u0EB7\u0EC9", "\u0EC6",
+                    "\u0EDD", "$", ")")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
new file mode 100644
index 0000000..c522372
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -0,0 +1,371 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.keyboard.layout.expected.AbstractLayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The base class of keyboard layout.
+ */
+public abstract class LayoutBase extends AbstractLayoutBase {
+    /**
+     * This class is used to customize common keyboard layout to language specific layout.
+     */
+    public static class LayoutCustomizer {
+        private final Locale mLocale;
+
+        // Empty keys definition to remove keys by adding this.
+        protected static final ExpectedKey[] EMPTY_KEYS = joinKeys();
+
+        public LayoutCustomizer(final Locale locale) {
+            mLocale = locale;
+        }
+
+        public final Locale getLocale() {
+            return mLocale;
+        }
+
+        /**
+         * Set accented letters to common layout.
+         * @param builder the {@link ExpectedKeyboardBuilder} object that contains common keyboard
+         *        layout.
+         * @return the {@link ExpectedKeyboardBuilder} object that contains accented letters as
+         *        "more keys".
+         */
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder;
+        }
+
+        /**
+         * Get the function key to switch to alphabet layout.
+         * @return the {@link ExpectedKey} of the alphabet key.
+         */
+        public ExpectedKey getAlphabetKey() { return ALPHABET_KEY; }
+
+        /**
+         * Get the function key to switch to symbols layout.
+         * @return the {@link ExpectedKey} of the symbols key.
+         */
+        public ExpectedKey getSymbolsKey() { return SYMBOLS_KEY; }
+
+        /**
+         * Get the function key to switch to symbols shift layout.
+         * @param isPhone true if requesting phone's key.
+         * @return the {@link ExpectedKey} of the symbols shift key.
+         */
+        public ExpectedKey getSymbolsShiftKey(boolean isPhone) {
+            return isPhone ? SYMBOLS_SHIFT_KEY : TABLET_SYMBOLS_SHIFT_KEY;
+        }
+
+        /**
+         * Get the function key to switch from symbols shift to symbols layout.
+         * @return the {@link ExpectedKey} of the back to symbols key.
+         */
+        public ExpectedKey getBackToSymbolsKey() { return BACK_TO_SYMBOLS_KEY; }
+
+        /**
+         * Get the currency key.
+         * @return the {@link ExpectedKey} of the currency key.
+         */
+        public ExpectedKey getCurrencyKey() { return Symbols.CURRENCY_DOLLAR; }
+
+        /**
+         * Get other currencies keys.
+         * @return the array of {@link ExpectedKey} that represents other currency keys.
+         */
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_THAN_DOLLAR;
+        }
+
+        /**
+         * Get "more keys" of double quotation mark.
+         * @return the array of {@link ExpectedKey} of more double quotation marks in natural order.
+         */
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_9LR; }
+
+        /**
+         * Get "more keys" of single quotation mark.
+         * @return the array of {@link ExpectedKey} of more single quotation marks in natural order.
+         */
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_9LR; }
+
+        /**
+         * Get double angle quotation marks in natural order.
+         * @return the array of {@link ExpectedKey} of double angle quotation marks in natural
+         *         order.
+         */
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_LR; }
+
+        /**
+         * Get single angle quotation marks in natural order.
+         * @return the array of {@link ExpectedKey} of single angle quotation marks in natural
+         *         order.
+         */
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_LR; }
+
+        /**
+         * Get the left shift keys.
+         * @param isPhone true if requesting phone's keys.
+         * @return the array of {@link ExpectedKey} that should be placed at left edge of the
+         *         keyboard.
+         */
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return joinKeys(SHIFT_KEY);
+        }
+
+        /**
+         * Get the right shift keys.
+         * @param isPhone true if requesting phone's keys.
+         * @return the array of {@link ExpectedKey} that should be placed at right edge of the
+         *         keyboard.
+         */
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : joinKeys(EXCLAMATION_AND_QUESTION_MARKS, SHIFT_KEY);
+        }
+
+        /**
+         * Get the space keys.
+         * @param isPhone true if requesting phone's keys.
+         * @return the array of {@link ExpectedKey} that should be placed at the center of the
+         *         keyboard.
+         */
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY);
+        }
+
+        /**
+         * Get the keys left to the spacebar.
+         * @param isPhone true if requesting phone's keys.
+         * @return the array of {@link ExpectedKey} that should be placed at left of the spacebar.
+         */
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            // U+002C: "," COMMA
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
+                    : joinKeys(key("\u002C", SETTINGS_KEY), "_");
+        }
+
+        /**
+         * Get the keys right to the spacebar.
+         * @param isPhone true if requesting phone's keys.
+         * @return the array of {@link ExpectedKey} that should be placed at right of the spacebar.
+         */
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            final ExpectedKey periodKey = key(".", getPunctuationMoreKeys(isPhone));
+            return isPhone ? joinKeys(periodKey) : joinKeys("/", periodKey);
+        }
+
+        /**
+         * Get "more keys" for the punctuation key (usually the period key).
+         * @param isPhone true if requesting phone's keys.
+         * @return the array of {@link ExpectedKey} that are "more keys" of the punctuation key.
+         */
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return isPhone ? PHONE_PUNCTUATION_MORE_KEYS : TABLET_PUNCTUATION_MORE_KEYS;
+        }
+    }
+
+    /**
+     * The layout customize class for countries that use Euro.
+     */
+    public static class EuroCustomizer extends LayoutCustomizer {
+        public EuroCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public final ExpectedKey getCurrencyKey() { return Symbols.CURRENCY_EURO; }
+
+        @Override
+        public final ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_THAN_EURO;
+        }
+    }
+
+    private final LayoutCustomizer mCustomizer;
+    private final Symbols mSymbols;
+    private final SymbolsShifted mSymbolsShifted;
+
+    LayoutBase(final LayoutCustomizer customizer, final Class<? extends Symbols> symbolsClass,
+            final Class<? extends SymbolsShifted> symbolsShiftedClass) {
+        mCustomizer = customizer;
+        try {
+            mSymbols = symbolsClass.getDeclaredConstructor(LayoutCustomizer.class)
+                    .newInstance(customizer);
+            mSymbolsShifted = symbolsShiftedClass.getDeclaredConstructor(LayoutCustomizer.class)
+                    .newInstance(customizer);
+        } catch (final Exception e) {
+            throw new RuntimeException("Unknown Symbols/SymbolsShifted class", e);
+        }
+    }
+
+    /**
+     * The layout name.
+     * @return the name of this layout.
+     */
+    public abstract String getName();
+
+    /**
+     * The locale of this layout.
+     * @return the locale of this layout.
+     */
+    public final Locale getLocale() { return mCustomizer.getLocale(); }
+
+    /**
+     * The layout customizer for this layout.
+     * @return the layout customizer;
+     */
+    public final LayoutCustomizer getCustomizer() { return mCustomizer; }
+
+    // Icon id.
+    private static final int ICON_SHIFT = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_SHIFT_KEY);
+    private static final int ICON_SHIFTED_SHIFT = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_SHIFT_KEY_SHIFTED);
+    private static final int ICON_ZWNJ = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_ZWNJ_KEY);
+    private static final int ICON_ZWJ = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_ZWJ_KEY);
+
+    // Functional key.
+    static final ExpectedKey CAPSLOCK_MORE_KEY = key(" ", Constants.CODE_CAPSLOCK);
+    static final ExpectedKey SHIFT_KEY = key(ICON_SHIFT,
+            Constants.CODE_SHIFT, CAPSLOCK_MORE_KEY);
+    static final ExpectedKey SHIFTED_SHIFT_KEY = key(ICON_SHIFTED_SHIFT,
+            Constants.CODE_SHIFT, CAPSLOCK_MORE_KEY);
+    static final ExpectedKey ALPHABET_KEY = key("ABC", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    static final ExpectedKey SYMBOLS_KEY = key("?123", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    static final ExpectedKey BACK_TO_SYMBOLS_KEY = key("?123", Constants.CODE_SHIFT);
+    static final ExpectedKey SYMBOLS_SHIFT_KEY = key("= \\ <", Constants.CODE_SHIFT);
+    static final ExpectedKey TABLET_SYMBOLS_SHIFT_KEY = key("~ [ <", Constants.CODE_SHIFT);
+
+    // U+00A1: "¡" INVERTED EXCLAMATION MARK
+    // U+00BF: "¿" INVERTED QUESTION MARK
+    static final ExpectedKey[] EXCLAMATION_AND_QUESTION_MARKS = joinKeys(
+            key("!", moreKey("\u00A1")), key("?", moreKey("\u00BF")));
+    // U+200C: ZERO WIDTH NON-JOINER
+    // U+200D: ZERO WIDTH JOINER
+    static final ExpectedKey ZWNJ_KEY = key(ICON_ZWNJ, "\u200C");
+    static final ExpectedKey ZWJ_KEY = key(ICON_ZWJ, "\u200D");
+
+    // Punctuation more keys for phone form factor.
+    public static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+            ",", "?", "!", "#", ")", "(", "/", ";",
+            "'", "@", ":", "-", "\"", "+", "%", "&");
+    // Punctuation more keys for tablet form factor.
+    public static final ExpectedKey[] TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+            ",", "'", "#", ")", "(", "/", ";",
+            "@", ":", "-", "\"", "+", "%", "&");
+
+   /**
+     * Helper method to create alphabet layout adding special function keys.
+     * @param builder the {@link ExpectedKeyboardBuilder} object that contains common keyboard
+     *     layout
+     * @param isPhone true if requesting phone's layout.
+     * @return the {@link ExpectedKeyboardBuilder} object that is customized and have special keys.
+     */
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(4, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(4, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(3, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(4, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(4, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(2, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(4, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(4, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(3, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(3, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    /**
+     * Get common alphabet layout. This layout doesn't contain any special keys.
+     *
+     * A keyboard layout is an array of rows, and a row consists of an array of
+     * {@link ExpectedKey}s. Each row may have different number of {@link ExpectedKey}s.
+     *
+     * @param isPhone true if requesting phone's layout.
+     * @return the common alphabet keyboard layout.
+     */
+    abstract ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone);
+
+    /**
+     * Get common alphabet shifted layout. This layout doesn't contain any special keys.
+     *
+     * A keyboard layout is an array of rows, and a row consists of an array of
+     * {@link ExpectedKey}s. Each row may have different number of {@link ExpectedKey}s.
+     *
+     * @param isPhone true if requesting phone's layout.
+     * @param elementId the element id of the requesting shifted mode.
+     * @return the common alphabet shifted keyboard layout.
+     */
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                getCommonAlphabetLayout(isPhone));
+        getCustomizer().setAccentedLetters(builder);
+        builder.toUpperCase(getLocale());
+        return builder.build();
+    }
+
+    /**
+     * Get the complete expected keyboard layout.
+     *
+     * A keyboard layout is an array of rows, and a row consists of an array of
+     * {@link ExpectedKey}s. Each row may have different number of {@link ExpectedKey}s.
+     *
+     * @param isPhone true if requesting phone's layout.
+     * @param elementId the element id of the requesting keyboard mode.
+     * @return the keyboard layout of the <code>elementId</code>.
+     */
+    public ExpectedKey[][] getLayout(final boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_SYMBOLS) {
+            return mSymbols.getLayout(isPhone);
+        }
+        if (elementId == KeyboardId.ELEMENT_SYMBOLS_SHIFTED) {
+            return mSymbolsShifted.getLayout(isPhone);
+        }
+        final ExpectedKeyboardBuilder builder;
+        if (elementId == KeyboardId.ELEMENT_ALPHABET) {
+            builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone));
+            getCustomizer().setAccentedLetters(builder);
+        } else {
+            final ExpectedKey[][] commonLayout = getCommonAlphabetShiftLayout(isPhone, elementId);
+            if (commonLayout == null) {
+                return null;
+            }
+            builder = new ExpectedKeyboardBuilder(commonLayout);
+        }
+        convertCommonLayoutToKeyboard(builder, isPhone);
+        if (elementId != KeyboardId.ELEMENT_ALPHABET) {
+            builder.replaceKeysOfAll(SHIFT_KEY, SHIFTED_SHIFT_KEY);
+        }
+        return builder.build();
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Malayalam.java b/tests/src/com/android/inputmethod/keyboard/layout/Malayalam.java
new file mode 100644
index 0000000..b44b888
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Malayalam.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Malayalam keyboard.
+ */
+public final class Malayalam extends LayoutBase {
+    private static final String LAYOUT_NAME = "malayalam";
+
+    public Malayalam(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class MalayalamCustomizer extends LayoutCustomizer {
+        public MalayalamCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return MALAYALAM_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0D05: "അ" MALAYALAM LETTER A
+        private static final ExpectedKey MALAYALAM_ALPHABET_KEY = key(
+                "\u0D05", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0D4D: "്" MALAYALAM SIGN VIRAMA
+                    // U+0D05: "അ" MALAYALAM LETTER A
+                    key("\u0D4D", joinMoreKeys("\u0D05", "1")),
+                    // U+0D3E: "ാ" MALAYALAM VOWEL SIGN AA
+                    // U+0D06: "ആ" MALAYALAM LETTER AA
+                    key("\u0D3E", joinMoreKeys("\u0D06", "2")),
+                    // U+0D3F: "ി" MALAYALAM VOWEL SIGN I
+                    // U+0D07: "ഇ" MALAYALAM LETTER I
+                    key("\u0D3F", joinMoreKeys("\u0D07", "3")),
+                    // U+0D40: "ീ" MALAYALAM VOWEL SIGN II
+                    // U+0D08: "ഈ" MALAYALAM LETTER II
+                    key("\u0D40", joinMoreKeys("\u0D08", "4")),
+                    // U+0D41: "ു" MALAYALAM VOWEL SIGN U
+                    // U+0D09: "ഉ" MALAYALAM LETTER U
+                    key("\u0D41", joinMoreKeys("\u0D09", "5")),
+                    // U+0D42: "ൂ" MALAYALAM VOWEL SIGN UU
+                    // U+0D0A: "ഊ" MALAYALAM LETTER UU
+                    key("\u0D42", joinMoreKeys("\u0D0A", "6")),
+                    // U+0D43: "ൃ" MALAYALAM VOWEL SIGN VOCALIC R
+                    // U+0D0B: "ഋ" MALAYALAM LETTER VOCALIC R
+                    key("\u0D43", joinMoreKeys("\u0D0B", "7")),
+                    // U+0D46: "െ" MALAYALAM VOWEL SIGN E
+                    // U+0D0E: "എ" MALAYALAM LETTER E
+                    // U+0D10: "ഐ" MALAYALAM LETTER AI
+                    // U+0D48: "ൈ" MALAYALAM VOWEL SIGN AI
+                    key("\u0D46", joinMoreKeys("\u0D0E", "\u0D10", "\u0D48", "8")),
+                    // U+0D47: "േ" MALAYALAM VOWEL SIGN EE
+                    // U+0D0F: "ഏ" MALAYALAM LETTER EE
+                    key("\u0D47", joinMoreKeys("\u0D0F", "9")),
+                    // U+0D4A: "ൊ" MALAYALAM VOWEL SIGN O
+                    // U+0D12: "ഒ" MALAYALAM LETTER O
+                    key("\u0D4A", joinMoreKeys("\u0D12", "0")),
+                    // U+0D4B: "ോ" MALAYALAM VOWEL SIGN OO
+                    // U+0D13: "ഓ" MALAYALAM LETTER OO
+                    // U+0D14: "ഔ" MALAYALAM LETTER AU
+                    // U+0D57: "ൗ" MALAYALAM AU LENGTH MARK
+                    key("\u0D4B", joinMoreKeys("\u0D13", "\u0D14", "\u0D57")))
+            .setKeysOfRow(2,
+                    // U+0D15: "ക" MALAYALAM LETTER KA
+                    // U+0D16: "ഖ" MALAYALAM LETTER KHA
+                    key("\u0D15", moreKey("\u0D16")),
+                    // U+0D17: "ഗ" MALAYALAM LETTER GA
+                    // U+0D18: "ഘ" MALAYALAM LETTER GHA
+                    key("\u0D17", moreKey("\u0D18")),
+                    // U+0D19: "ങ" MALAYALAM LETTER NGA
+                    // U+0D1E: "ഞ" MALAYALAM LETTER NYA
+                    key("\u0D19", moreKey("\u0D1E")),
+                    // U+0D1A: "ച" MALAYALAM LETTER CA
+                    // U+0D1B: "ഛ" MALAYALAM LETTER CHA
+                    key("\u0D1A", moreKey("\u0D1B")),
+                    // U+0D1C: "ജ" MALAYALAM LETTER JA
+                    // U+0D1D: "ഝ" MALAYALAM LETTER JHA
+                    key("\u0D1C", moreKey("\u0D1D")),
+                    // U+0D1F: "ട" MALAYALAM LETTER TTA
+                    // U+0D20: "ഠ" MALAYALAM LETTER TTHA
+                    key("\u0D1F", moreKey("\u0D20")),
+                    // U+0D21: "ഡ" MALAYALAM LETTER DDA
+                    // U+0D22: "ഢ" MALAYALAM LETTER DDHA
+                    key("\u0D21", moreKey("\u0D22")),
+                    // U+0D23: "ണ" MALAYALAM LETTER NNA
+                    // U+0D7A: "ൺ" MALAYALAM LETTER CHILLU NN
+                    key("\u0D23", moreKey("\u0D7A")),
+                    // U+0D24: "ത" MALAYALAM LETTER TA
+                    // U+0D25: "ഥ" MALAYALAM LETTER THA
+                    key("\u0D24", moreKey("\u0D25")),
+                    // U+0D26: "ദ" MALAYALAM LETTER DA
+                    // U+0D27: "ധ" MALAYALAM LETTER DHA
+                    key("\u0D26", moreKey("\u0D27")),
+                    // U+0D28: "ഗന" MALAYALAM LETTER NA
+                    // U+0D7B: "ൻ" MALAYALAM LETTER CHILLU N
+                    key("\u0D28", moreKey("\u0D7B")))
+            .setKeysOfRow(3,
+                    // U+0D2A: "പ" MALAYALAM LETTER PA
+                    // U+0D2B: "ഫ" MALAYALAM LETTER PHA
+                    key("\u0D2A", moreKey("\u0D2B")),
+                    // U+0D2C: "ബ" MALAYALAM LETTER BA
+                    // U+0D2D: "ഭ" MALAYALAM LETTER BHA
+                    key("\u0D2C", moreKey("\u0D2D")),
+                    // U+0D2E: "മ" MALAYALAM LETTER MA
+                    // U+0D02: "ം" MALAYALAM SIGN ANUSVARA
+                    key("\u0D2E", moreKey("\u0D02")),
+                    // U+0D2F: "യ" MALAYALAM LETTER YA
+                    // U+0D4D/U+0D2F: "്യ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER YA
+                    key("\u0D2F", moreKey("\u0D4D\u0D2F")),
+                    // U+0D30: "ര" MALAYALAM LETTER RA
+                    // U+0D4D/U+0D30: "്ര" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER RA
+                    // U+0D7C: "ർ" MALAYALAM LETTER CHILLU RR
+                    // U+0D31: "റ" MALAYALAM LETTER RRA
+                    key("\u0D30", joinMoreKeys("\u0D4D\u0D30", "\u0D7C", "\u0D31")),
+                    // U+0D32: "ല" MALAYALAM LETTER LA
+                    // U+0D7D: "ൽ" MALAYALAM LETTER CHILLU L
+                    key("\u0D32", moreKey("\u0D7D")),
+                    // U+0D35: "വ" MALAYALAM LETTER VA
+                    // U+0D4D/U+0D35: "്വ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER VA
+                    key("\u0D35", moreKey("\u0D4D\u0D35")),
+                    // U+0D36: "ശ" MALAYALAM LETTER SHA
+                    // U+0D37: "ഷ" MALAYALAM LETTER SSA
+                    // U+0D38: "സ" MALAYALAM LETTER SA
+                    key("\u0D36", joinMoreKeys("\u0D37", "\u0D38")),
+                    // U+0D39: "ഹ" MALAYALAM LETTER HA
+                    // U+0D03: "ഃ" MALAYALAM SIGN VISARGA
+                    key("\u0D39", moreKey("\u0D03")),
+                    // U+0D33: "ള" MALAYALAM LETTER LLA
+                    // U+0D7E: "ൾ" MALAYALAM LETTER CHILLU LL
+                    // U+0D34: "ഴ" MALAYALAM LETTER LLLA
+                    key("\u0D33", joinMoreKeys("\u0D7E", "\u0D34")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Marathi.java b/tests/src/com/android/inputmethod/keyboard/layout/Marathi.java
new file mode 100644
index 0000000..00cf838
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Marathi.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
+
+import com.android.inputmethod.keyboard.layout.Hindi.HindiCustomizer;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiSymbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The Marathi keyboard.
+ */
+public final class Marathi extends LayoutBase {
+    private static final String LAYOUT_NAME = "marathi";
+
+    public Marathi(final LayoutCustomizer customizer) {
+        super(customizer, HindiSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class MarathiCustomizer extends HindiCustomizer {
+        public MarathiCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    key(VOWEL_SIGN_AU, "\u094C", joinMoreKeys("\u0914", "\u0967", "1")),
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    key(VOWEL_SIGN_AI, "\u0948", joinMoreKeys("\u0910", "\u0968", "2")),
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    key(VOWEL_SIGN_AA, "\u093E", joinMoreKeys("\u0906", "\u0969", "3")),
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    // U+0908: "ई" DEVANAGARI LETTER II
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    key(VOWEL_SIGN_II, "\u0940", joinMoreKeys("\u0908", "\u096A", "4")),
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    key(VOWEL_SIGN_UU, "\u0942", joinMoreKeys("\u090A", "\u096B", "5")),
+                    // U+092C: "ब" DEVANAGARI LETTER BA
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    key("\u092C", joinMoreKeys("\u092D", "\u096C", "6")),
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    key("\u0939", joinMoreKeys("\u096D", "7")),
+                    // U+0917: "ग" DEVANAGARI LETTER GA
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    key("\u0917", joinMoreKeys("\u0918", "\u096E", "8")),
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    key("\u0926", joinMoreKeys("\u0927", "\u096F", "9")),
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+091C/U+094D/U+091E:
+                    //     "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER NYA
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    key("\u091C", joinMoreKeys("\u091D", "\u091C\u094D\u091E", "\u0966", "0")),
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    key("\u0921", moreKey("\u0922")))
+            .setKeysOfRow(2,
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    key(VOWEL_SIGN_O, "\u094B", moreKey("\u0913")),
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    // U+090F: "ए" DEVANAGARI LETTER SHORT E
+                    key(VOWEL_SIGN_E, "\u0947", moreKey("\u090F")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    key(SIGN_VIRAMA, "\u094D", moreKey("\u0905")),
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    key(VOWEL_SIGN_I, "\u093F", moreKey("\u0907")),
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    key(VOWEL_SIGN_U, "\u0941", moreKey("\u0909")),
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    key("\u092A", moreKey("\u092B")),
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    // U+0931: "ऱ" DEVANAGARI LETTER RRA
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    key("\u0930", joinMoreKeys(
+                            "\u0931", "\u090B", moreKey(VOWEL_SIGN_VOCALIC_R, "\u0943"))),
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    key("\u0915", moreKey("\u0916")),
+                    // U+0924: "त" DEVANAGARI LETTER TA
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+0924/U+094D/U+0930:
+                    //     "त्र" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0924", joinMoreKeys("\u0925", "\u0924\u094D\u0930")),
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    key("\u091A", moreKey("\u091B")),
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    key("\u091F", moreKey("\u0920")))
+            .setKeysOfRow(3,
+                    // U+0949: "ॉ" DEVANAGARI VOWEL SIGN CANDRA O
+                    // U+0911: "ऑ" DEVANAGARI LETTER CANDRA O
+                    key(VOWEL_SIGN_CANDRA_O, "\u0949", moreKey("\u0911")),
+                    // U+0945: "ॅ" DEVANAGARI VOWEL SIGN CANDRA E
+                    // U+090D: "ऍ" DEVANAGARI LETTER CANDRA E
+                    key(VOWEL_SIGN_CANDRA_E, "\u0945", moreKey("\u090D")),
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    // U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    key(SIGN_ANUSVARA, "\u0902", joinMoreKeys(
+                            moreKey(SIGN_VISARGA, "\u0903"), moreKey(SIGN_CANDRABINDU, "\u0901"))),
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    "\u092E",
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    key("\u0928", joinMoreKeys("\u0923", "\u091E", "\u0919")),
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    "\u0935",
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    // U+0933: "ळ" DEVANAGARI LETTER LLA
+                    key("\u0932", moreKey("\u0933")),
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    // U+0936/U+094D/U+0930:
+                    //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key("\u0938", joinMoreKeys("\u0936", "\u0937", "\u0936\u094D\u0930")),
+                    // U+092F: "य" DEVANAGARI LETTER YA
+                    "\u092F",
+                    // U+0915/U+094D/U+0937:
+                    //     "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
+                    "\u0915\u094D\u0937")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java b/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java
new file mode 100644
index 0000000..3c6c058
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Mongolian.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+public final class Mongolian extends LayoutBase {
+    private static final String LAYOUT_NAME = "mongolian";
+
+    public Mongolian(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class MongolianMNCustomizer extends EastSlavicCustomizer {
+        public MongolianMNCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_TUGRIK; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        // U+20AE: "₮" TUGRIK SIGN
+        private static final ExpectedKey CURRENCY_TUGRIK = key("\u20AE",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0444: "ф" CYRILLIC SMALL LETTER EF
+                    key("\u0444", moreKey("1")),
+                    // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+                    key("\u0446", moreKey("2")),
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    key("\u0443", moreKey("3")),
+                    // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
+                    key("\u0436", moreKey("4")),
+                    // U+044D: "э" CYRILLIC SMALL LETTER E
+                    key("\u044D", moreKey("5")),
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    key("\u043D", moreKey("6")),
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    key("\u0433", moreKey("7")),
+                    // U+0448: "ш" CYRILLIC SMALL LETTER SHA
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    key("\u0448", joinMoreKeys("8", "\u0449")),
+                    // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
+                    key("\u04AF", moreKey("9")),
+                    // U+0437: "з" CYRILLIC SMALL LETTER ZE
+                    key("\u0437", moreKey("0")),
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    "\u043A")
+            .setKeysOfRow(2,
+                    // U+0439: "й" CYRILLIC SMALL LETTER SHORT I
+                    // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    // U+0440: "р" CYRILLIC SMALL LETTER ER
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    // U+043F: "п" CYRILLIC SMALL LETTER PE
+                    "\u0439", "\u044B", "\u0431", "\u04E9", "\u0430", "\u0445", "\u0440", "\u043E",
+                    "\u043B", "\u0434", "\u043F")
+            .setKeysOfRow(3,
+                    // U+044F: "я" CYRILLIC SMALL LETTER YA
+                    // U+0447: "ч" CYRILLIC SMALL LETTER CHE
+                    "\u044F", "\u0447",
+                    // U+0451: "ё" CYRILLIC SMALL LETTER IO
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    key("\u0451", moreKey("\u0435")),
+                    // U+0441: "с" CYRILLIC SMALL LETTER ES
+                    // U+043C: "м" CYRILLIC SMALL LETTER EM
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    // U+0442: "т" CYRILLIC SMALL LETTER TE
+                    "\u0441", "\u043C", "\u0438", "\u0442",
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    key("\u044C", moreKey("\u044A")),
+                    // U+0432: "в" CYRILLIC SMALL LETTER VE
+                    // U+044E: "ю" CYRILLIC SMALL LETTER YU
+                    key("\u0432", moreKey("\u044E")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
new file mode 100644
index 0000000..f2a2dfd
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Myanmar alphabet keyboard.
+ */
+public final class Myanmar extends LayoutBase {
+    private static final String LAYOUT_NAME = "myanmar";
+
+    public Myanmar(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class MyanmarCustomizer extends LayoutCustomizer {
+        public MyanmarCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return MYANMAR_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            // U+002C: "," COMMA
+            // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+            return isPhone ? joinKeys(key("\u002C", SETTINGS_KEY))
+                    : joinKeys(key("\u104A", moreKey(","), SETTINGS_KEY), "_");
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            // U+104B: "။" MYANMAR SIGN SECTION
+            final ExpectedKey periodKey = key("\u104B", getPunctuationMoreKeys(isPhone));
+            return isPhone ? joinKeys(periodKey) : joinKeys("/", periodKey);
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return isPhone ? MYANMAR_PHONE_PUNCTUATION_MORE_KEYS
+                    : MYANMAR_TABLET_PUNCTUATION_MORE_KEYS;
+        }
+
+        // U+1000: "က" MYANMAR LETTER KA
+        // U+1001: "ခ" MYANMAR LETTER KHA
+        // U+1002: "ဂ" MYANMAR LETTER GA
+        private static final ExpectedKey MYANMAR_ALPHABET_KEY = key(
+                "\u1000\u1001\u1002", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+        // Punctuation more keys for phone form factor.
+        private static final ExpectedKey[] MYANMAR_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+                "\u104A", ".", "?", "!", "#", ")", "(", "/", ";",
+                "...", "'", "@", ":", "-", "\"", "+", "%", "&");
+        // Punctuation more keys for tablet form factor.
+        private static final ExpectedKey[] MYANMAR_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+                ".", "'", "#", ")", "(", "/", ";", "@",
+                "...", ":", "-", "\"", "+", "%", "&");
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+            final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+1041: "၁" MYANMAR DIGIT ONE
+                    key("\u1041", moreKey("1")),
+                    // U+1042: "၂" MYANMAR DIGIT TWO
+                    key("\u1042", moreKey("2")),
+                    // U+1043: "၃" MYANMAR DIGIT THREE
+                    key("\u1043", moreKey("3")),
+                    // U+1044: "၄" MYANMAR DIGIT FOUR
+                    key("\u1044", moreKey("4")),
+                    // U+1045: "၅" MYANMAR DIGIT FIVE
+                    key("\u1045", moreKey("5")),
+                    // U+1046: "၆" MYANMAR DIGIT SIX
+                    key("\u1046", moreKey("6")),
+                    // U+1047: "၇" MYANMAR DIGIT SEVEN
+                    key("\u1047", moreKey("7")),
+                    // U+1048: "၈" MYANMAR DIGIT EIGHT
+                    key("\u1048", moreKey("8")),
+                    // U+1049: "၉" MYANMAR DIGIT NINE
+                    key("\u1049", moreKey("9")),
+                    // U+1040: "၀" MYANMAR DIGIT ZERO
+                    key("\u1040", moreKey("0")))
+            .setKeysOfRow(2,
+                    // U+1006: "ဆ" MYANMAR LETTER CHA
+                    // U+1039/U+1006: "္ဆ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CHA
+                    key("\u1006", moreKey("\u1039\u1006")),
+                    // U+1010: "တ" MYANMAR LETTER TA
+                    // U+1039/U+1010: "္တ" MYANMAR SIGN VIRAMA/MYANMAR LETTER TA
+                    key("\u1010", moreKey("\u1039\u1010")),
+                    // U+1014: "န" MYANMAR LETTER NA
+                    // U+1039/U+1014: "္န" MYANMAR SIGN VIRAMA/MYANMAR LETTER NA
+                    key("\u1014", moreKey("\u1039\u1014")),
+                    // U+1019: "မ" MYANMAR LETTER MA
+                    // U+1039/U+1019: "္မ" MYANMAR SIGN VIRAMA/MYANMAR LETTER MA
+                    key("\u1019", moreKey("\u1039\u1019")),
+                    // U+1021: "အ" MYANMAR LETTER A
+                    // U+1015: "ပ" MYANMAR LETTER PA
+                    "\u1021", "\u1015",
+                    // U+1000: "က" MYANMAR LETTER KA
+                    // U+1039/U+1000: "္က" MYANMAR SIGN VIRAMA/MYANMAR LETTER KA
+                    key("\u1000", moreKey("\u1039\u1000")),
+                    // U+1004: "င" MYANMAR LETTER NGA
+                    // U+101E: "သ" MYANMAR LETTER SA
+                    "\u1004", "\u101E",
+                    // U+1005: "စ" MYANMAR LETTER CA
+                    // U+1039/U+1005: "္စ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CA
+                    key("\u1005", moreKey("\u1039\u1005")))
+            .setKeysOfRow(3,
+                    // U+1031: "ေ" MYANMAR VOWEL SIGN E
+                    // U+103B: "ျ" MYANMAR CONSONANT SIGN MEDIAL YA
+                    // U+103C: "ြ" MYANMAR CONSONANT SIGN MEDIAL RA
+                    "\u1031", "\u103B", "\u103C",
+                    // U+103D: "ွ" MYANMAR CONSONANT SIGN MEDIAL WA
+                    // U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
+                    // U+103D/U+103E:
+                    //     "ွှ" MYANMAR CONSONANT SIGN MEDIAL WA/MYANMAR CONSONANT SIGN MEDIAL HA
+                    key("\u103D", joinMoreKeys("\u103E", "\u103D\u103E")),
+                    // U+102D: "ိ" MYANMAR VOWEL SIGN I
+                    // U+102E: "ီ" MYANMAR VOWEL SIGN II
+                    key("\u102D", moreKey("\u102E")),
+                    // U+102F: "ု" MYANMAR VOWEL SIGN U
+                    // U+1030: "ူ" MYANMAR VOWEL SIGN UU
+                    key("\u102F", moreKey("\u1030")),
+                    // U+102C: "ာ" MYANMAR VOWEL SIGN AA
+                    // U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA
+                    key("\u102C", moreKey("\u102B")),
+                    // U+103A: "်" MYANMAR SIGN ASAT
+                    // U+1032: "ဲ" MYANMAR VOWEL SIGN AI
+                    key("\u103A", moreKey("\u1032")),
+                    // U+1037: "့" MYANMAR SIGN DOT BELOW
+                    // U+1036: "ံ" MYANMAR SIGN ANUSVARA
+                    key("\u1037", moreKey("\u1036")),
+                    // U+1038: "း" MYANMAR SIGN VISARGA
+                    "\u1038")
+            .setKeysOfRow(4,
+                    // U+1016: "ဖ" MYANMAR LETTER PHA
+                    "\u1016",
+                    // U+1011: "ထ" MYANMAR LETTER THA
+                    // U+1039/U+1011: "္ထ" MYANMAR SIGN VIRAMA/MYANMAR LETTER THA
+                    key("\u1011", moreKey("\u1039\u1011")),
+                    // U+1001: "ခ" MYANMAR LETTER KHA
+                    // U+1039/U+1001: "္ခ" MYANMAR SIGN VIRAMA/MYANMAR LETTER KHA
+                    key("\u1001", moreKey("\u1039\u1001")),
+                    // U+101C: "လ" MYANMAR LETTER LA
+                    // U+1039/U+101C: "္လ" MYANMAR SIGN VIRAMA/MYANMAR LETTER LA
+                    key("\u101C", moreKey("\u1039\u101C")),
+                    // U+1018: "ဘ" MYANMAR LETTER BHA
+                    // U+1039/U+1018: "္ဘ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BHA
+                    key("\u1018", moreKey("\u1039\u1018")),
+                    // U+100A: "ည" MYANMAR LETTER NNYA
+                    // U+1009: "ဉ" MYANMAR LETTER NYA
+                    key("\u100A", moreKey("\u1009")),
+                    // U+101B: "ရ" MYANMAR LETTER RA
+                    // U+101D: "ဝ" MYANMAR LETTER WA
+                    "\u101B", "\u101D")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+1027: "ဧ" MYANMAR LETTER E
+                    // U+104F: "၏" MYANMAR SYMBOL GENITIVE
+                    // U+1024: "ဤ" MYANMAR LETTER II
+                    // U+1023: "ဣ" MYANMAR LETTER I
+                    // U+104E: "၎" MYANMAR SYMBOL AFOREMENTIONED
+                    // U+1000/U+103B/U+1015/U+103A: "ကျပ်" MYANMAR LETTER KA
+                    //     /MYANMAR CONSONANT SIGN MEDIAL YA/MYANMAR LETTER PA/MYANMAR SIGN ASAT
+                    // U+1029: "ဩ" MYANMAR LETTER O
+                    // U+102A: "ဪ" MYANMAR LETTER AU
+                    // U+104D: "၍" MYANMAR SYMBOL COMPLETED
+                    // U+104C: "၌" MYANMAR SYMBOL LOCATIVE
+                    "\u1027", "\u104F", "\u1024", "\u1023", "\u104E", "\u1000\u103B\u1015\u103A",
+                    "\u1029", "\u102A", "\u104D", "\u104C")
+            .setKeysOfRow(2,
+                    // U+1017: "ဗ" MYANMAR LETTER BA
+                    // U+1039/U+1017: "္ဗ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BA
+                    key("\u1017", moreKey("\u1039\u1017")),
+                    // U+1012: "ဒ" MYANMAR LETTER DA
+                    // U+1039/U+1012: "္ဒ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DA
+                    key("\u1012", moreKey("\u1039\u1012")),
+                    // U+1013: "ဓ" MYANMAR LETTER DHA
+                    // U+1039/U+1013: "္ဓ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DHA
+                    key("\u1013", moreKey("\u1039\u1013")),
+                    // U+1003: "ဃ" MYANMAR LETTER GHA
+                    // U+100E: "ဎ" MYANMAR LETTER DDHA
+                    // U+103F: "ဿ" MYANMAR LETTER GREAT SA
+                    // U+100F: "ဏ" MYANMAR LETTER NNA
+                    "\u1003", "\u100E", "\u103F", "\u100F",
+                    // U+1008: "ဈ" MYANMAR LETTER JHA
+                    // U+1039/U+1008: "္ဈ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JHA
+                    key("\u1008", moreKey("\u1039\u1008")),
+                    // U+1007: "ဇ" MYANMAR LETTER JA
+                    // U+1039/U+1007: "္ဇ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JA
+                    key("\u1007", moreKey("\u1039\u1007")),
+                    // U+1002: "ဂ" MYANMAR LETTER GA
+                    // U+1039/U+1002: "္ဂ" MYANMAR SIGN VIRAMA/MYANMAR LETTER GA
+                    key("\u1002", moreKey("\u1039\u1002")))
+            .setKeysOfRow(3,
+                    // U+101A: "ယ" MYANMAR LETTER YA
+                    // U+1039: "္" MYANMAR SIGN VIRAMA
+                    // U+1004/U+103A/U+1039: "င်္င" MYANMAR LETTER NGA
+                    //     /MYANMAR SIGN ASAT/MYANMAR SIGN VIRAMA
+                    // U+103E: "ှ" MYANMAR CONSONANT SIGN MEDIAL HA
+                    // U+102E: "ီ" MYANMAR VOWEL SIGN II
+                    // U+1030: "ူ" MYANMAR VOWEL SIGN UU
+                    // U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA
+                    // U+1032: "ဲ" MYANMAR VOWEL SIGN AI
+                    // U+1036: "ံ" MYANMAR SIGN ANUSVARA
+                    // U+101F: "ဟ" MYANMAR LETTER HA
+                    "\u101A", "\u1039", "\u1004\u103A\u1039", "\u103E", "\u102E", "\u1030",
+                    "\u102B", "\u1032", "\u1036", "\u101F")
+            .setKeysOfRow(4,
+                    // U+1025: "ဥ" MYANMAR LETTER U
+                    // U+1026: "ဦ" MYANMAR LETTER UU
+                    // U+100C: "ဌ" MYANMAR LETTER TTHA
+                    // U+100B: "ဋ" MYANMAR LETTER TTA
+                    // U+100D: "ဍ" MYANMAR LETTER DDA
+                    // U+1020: "ဠ" MYANMAR LETTER LLA
+                    // U+100B/U+1039/U+100C: "ဋ္ဌ" MYANMAR LETTER TTA
+                    //     /MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA
+                    "\u1025", "\u1026", "\u100C", "\u100B", "\u100D", "\u1020",
+                    "\u100B\u1039\u100C",
+                    // U+100F/U+1039/U+100D: "ဏ္ဍ" MYANMAR LETTER NNA
+                    //     /MYANMAR SIGN VIRAMA/MYANMAR LETTER DDA
+                    // U+100F/U+1039/U+100C: "ဏ္ဌ" MYANMAR LETTER NNA
+                    //     /MYANMAR SIGN VIRAMA/MYANMAR LETTER TTHA
+                    key("\u100F\u1039\u100D", moreKey("\u100F\u1039\u100C")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
new file mode 100644
index 0000000..7933d07
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiCustomizer;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiSymbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The nepali_romanized layout
+ */
+public final class NepaliRomanized extends LayoutBase {
+    private static final String LAYOUT_NAME = "nepali_romanized";
+
+    public NepaliRomanized(final LayoutCustomizer customizer) {
+        super(customizer, HindiSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class NepaliRomanizedCustomizer extends HindiCustomizer {
+        public NepaliRomanizedCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_NEPALI; }
+
+        @Override
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+        }
+
+        // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
+        private static final ExpectedKey CURRENCY_NEPALI = key("\u0930\u0941\u002E",
+                Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
+                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    // U+093C: "़" DEVANAGARI SIGN NUKTA
+                    key("\u091F", joinMoreKeys("\u0967", "1", key(SIGN_NUKTA, "\u093C"))),
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    key(VOWEL_SIGN_AU, "\u094C", joinMoreKeys("\u0968", "2")),
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    key(VOWEL_SIGN_E, "\u0947", joinMoreKeys("\u0969", "3")),
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    key("\u0930", joinMoreKeys("\u096A", "4")),
+                    // U+0924: "त" DEVANAGARI LETTER TA
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    key("\u0924", joinMoreKeys("\u096B", "5")),
+                    // U+092F: "य" DEVANAGARI LETTER YA
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    key("\u092F", joinMoreKeys("\u096C", "6")),
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    key(VOWEL_SIGN_U, "\u0941", joinMoreKeys("\u096D", "7")),
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    key(VOWEL_SIGN_I, "\u093F", joinMoreKeys("\u096E", "8")),
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    key(VOWEL_SIGN_O, "\u094B", joinMoreKeys("\u096F", "9")),
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    key("\u092A", joinMoreKeys("\u0966", "0")),
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    "\u0907")
+            .setKeysOfRow(2,
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    key(VOWEL_SIGN_AA, "\u093E"),
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    // U+0917: "ग" DEVANAGARI LETTER GA
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    // U+090F: "ए" DEVANAGARI LETTER E
+                    // U+0950: "ॐ" DEVANAGARI OM
+                    "\u0938", "\u0926", "\u0909", "\u0917", "\u0939", "\u091C", "\u0915", "\u0932",
+                    "\u090F", "\u0950")
+            .setKeysOfRow(3,
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    // U+092C: "ब" DEVANAGARI LETTER BHA
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    "\u0937", "\u0921", "\u091A", "\u0935", "\u092C", "\u0928", "\u092E",
+                    // U+0964: "।" DEVANAGARI DANDA
+                    // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+                    key("\u0964", moreKey("\u093D")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    key(SIGN_VIRAMA, "\u094D"))
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    "\u0920", "\u0914",
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    key(VOWEL_SIGN_AI, "\u0948"),
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    key(VOWEL_SIGN_VOCALIC_R, "\u0943"),
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    "\u0925", "\u091E",
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    key(VOWEL_SIGN_UU, "\u0942"),
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    key(VOWEL_SIGN_II, "\u0940"),
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    // U+0908: "ई" DEVANAGARI LETTER II
+                    "\u0913", "\u092B", "\u0908")
+            .setKeysOfRow(2,
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    // U+0965: "॥" DEVANAGARI DOUBLE DANDA
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0903: "ः" DEVANAGARI SIGN VISARGA
+                    "\u0906", "\u0936", "\u0927", "\u090A", "\u0918", "\u0905", "\u091D", "\u0916",
+                    "\u0965", "\u0910", key(SIGN_VISARGA, "\u0903"))
+            .setKeysOfRow(3,
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    "\u090B", "\u0922", "\u091B",
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    key(SIGN_CANDRABINDU, "\u0901"),
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    "\u092D", "\u0923",
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    key(SIGN_ANUSVARA, "\u0902"),
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    "\u0919",
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    key(SIGN_VIRAMA, "\u094D"))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
new file mode 100644
index 0000000..4d6cded
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import static com.android.inputmethod.keyboard.layout.DevanagariLetterConstants.*;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiSymbols;
+import com.android.inputmethod.keyboard.layout.NepaliRomanized.NepaliRomanizedCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The nepali_traditional keyboard.
+ */
+public final class NepaliTraditional extends LayoutBase {
+    private static final String LAYOUT_NAME = "nepali_traditional";
+
+    public NepaliTraditional(final LayoutCustomizer customizer) {
+        super(customizer, HindiSymbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class NepaliTraditionalCustomizer extends NepaliRomanizedCustomizer {
+        public NepaliTraditionalCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            if (isPhone) {
+                // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                return joinKeys(key(SIGN_VIRAMA, "\u094D", PHONE_PUNCTUATION_MORE_KEYS));
+            }
+            return super.getKeysRightToSpacebar(isPhone);
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(3,
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    // U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+                    // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+                    key(VOWEL_SIGN_E, "\u0947", joinMoreKeys(
+                            moreKey(SIGN_VISARGA, "\u0903"), "\u093D")),
+                    // U+0964: "।" DEVANAGARI DANDA
+                    "\u0964",
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
+                    key("\u0930", moreKey("\u0930\u0941")));
+        } else {
+            builder.addKeysOnTheRightOfRow(3,
+                    // U+0903: "ः" DEVANAGARI SIGN VISARGA
+                    // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+                    key(SIGN_VISARGA, "\u0903", moreKey("\u093D")),
+                    // U+0947: "े" DEVANAGARI VOWEL SIGN E
+                    key(VOWEL_SIGN_E, "\u0947"),
+                    // U+0964: "।" DEVANAGARI DANDA
+                    "\u0964",
+                    // U+0930: "र" DEVANAGARI LETTER RA
+                    key("\u0930", moreKey("!")),
+                    // U+094D: "्" DEVANAGARI SIGN VIRAMA
+                    key(SIGN_VIRAMA, "\u094D", moreKey("?")));
+        }
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                ALPHABET_SHIFTED_COMMON);
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(3,
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    key(SIGN_ANUSVARA, "\u0902"),
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    "\u0919",
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0936/U+094D/U+0930:
+                    //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key(VOWEL_SIGN_AI, "\u0948", moreKey("\u0936\u094D\u0930")));
+        } else {
+            builder.addKeysOnTheRightOfRow(3,
+                    // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+                    key(SIGN_ANUSVARA, "\u0902"),
+                    // U+0919: "ङ" DEVANAGARI LETTER NGA
+                    "\u0919",
+                    // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+                    // U+0936/U+094D/U+0930:
+                    //     "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+                    key(VOWEL_SIGN_AI, "\u0948", moreKey("\u0936\u094D\u0930")),
+                    // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
+                    key("\u0930\u0941", moreKey("!")),
+                    "?");
+        }
+        return builder.build();
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    // U+0967: "१" DEVANAGARI DIGIT ONE
+                    key("\u091F", joinMoreKeys("\u0967", "1")),
+                    // U+0927: "ध" DEVANAGARI LETTER DHA
+                    // U+0968: "२" DEVANAGARI DIGIT TWO
+                    key("\u0927", joinMoreKeys("\u0968", "2")),
+                    // U+092D: "भ" DEVANAGARI LETTER BHA
+                    // U+0969: "३" DEVANAGARI DIGIT THREE
+                    key("\u092D", joinMoreKeys("\u0969", "3")),
+                    // U+091A: "च" DEVANAGARI LETTER CA
+                    // U+096A: "४" DEVANAGARI DIGIT FOUR
+                    key("\u091A", joinMoreKeys("\u096A", "4")),
+                    // U+0924: "त" DEVANAGARI LETTER TA
+                    // U+096B: "५" DEVANAGARI DIGIT FIVE
+                    key("\u0924", joinMoreKeys("\u096B", "5")),
+                    // U+0925: "थ" DEVANAGARI LETTER THA
+                    // U+096C: "६" DEVANAGARI DIGIT SIX
+                    key("\u0925", joinMoreKeys("\u096C", "6")),
+                    // U+0917: "ग" DEVANAGARI LETTER G
+                    // U+096D: "७" DEVANAGARI DIGIT SEVEN
+                    key("\u0917", joinMoreKeys("\u096D", "7")),
+                    // U+0937: "ष" DEVANAGARI LETTER SSA
+                    // U+096E: "८" DEVANAGARI DIGIT EIGHT
+                    key("\u0937", joinMoreKeys("\u096E", "8")),
+                    // U+092F: "य" DEVANAGARI LETTER YA
+                    // U+096F: "९" DEVANAGARI DIGIT NINE
+                    key("\u092F", joinMoreKeys("\u096F", "9")),
+                    // U+0909: "उ" DEVANAGARI LETTER U
+                    // U+0966: "०" DEVANAGARI DIGIT ZERO
+                    key("\u0909", joinMoreKeys("\u0966", "0")),
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    // U+0914: "औ" DEVANAGARI LETTER AU
+                    key("\u0907", moreKey("\u0914")))
+            .setKeysOfRow(2,
+                    // U+092C: "ब" DEVANAGARI LETTER BA
+                    // U+0915: "क" DEVANAGARI LETTER KA
+                    // U+092E: "म" DEVANAGARI LETTER MA
+                    "\u092C", "\u0915", "\u092E",
+                    // U+093E: "ा" DEVANAGARI VOWEL SIGN AA
+                    key(VOWEL_SIGN_AA, "\u093E"),
+                    // U+0928: "न" DEVANAGARI LETTER NA
+                    // U+091C: "ज" DEVANAGARI LETTER JA
+                    // U+0935: "व" DEVANAGARI LETTER VA
+                    // U+092A: "प" DEVANAGARI LETTER PA
+                    "\u0928", "\u091C", "\u0935", "\u092A",
+                    // U+093F: "ि" DEVANAGARI VOWEL SIGN I
+                    key(VOWEL_SIGN_I, "\u093F"),
+                    // U+0938: "स" DEVANAGARI LETTER SA
+                    "\u0938",
+                    // U+0941: "ु" DEVANAGARI VOWEL SIGN U
+                    key(VOWEL_SIGN_U, "\u0941"))
+            .setKeysOfRow(3,
+                    // U+0936: "श" DEVANAGARI LETTER SHA
+                    // U+0939: "ह" DEVANAGARI LETTER HA
+                    // U+0905: "अ" DEVANAGARI LETTER A
+                    // U+0916: "ख" DEVANAGARI LETTER KHA
+                    // U+0926: "द" DEVANAGARI LETTER DA
+                    // U+0932: "ल" DEVANAGARI LETTER LA
+                    "\u0936", "\u0939", "\u0905", "\u0916", "\u0926", "\u0932")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0924/U+094D/U+0924:
+                    // "त्त" DEVANAGARI LETTER TA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TA
+                    // U+091E: "ञ" DEVANAGARI LETTER NYA
+                    // U+091C/U+094D/U+091E: "ज्ञ" DEVANAGARI LETTER JA/DEVANAGARI SIGN
+                    // VIRAMA/DEVANAGARI LETTER NYA
+                    // U+0965: "॥" DEVANAGARI DOUBLE DANDA
+                    key("\u0924\u094D\u0924",
+                            joinMoreKeys("\u091E", "\u091C\u094D\u091E", "\u0965")),
+                    // U+0921/U+094D/U+0922:
+                    // "ड्ढ" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDHA
+                    // U+0908: "ई" DEVANAGARI LETTER II
+                    key("\u0921\u094D\u0922", moreKey("\u0908")),
+                    // U+0910: "ऐ" DEVANAGARI LETTER AI
+                    // U+0918: "घ" DEVANAGARI LETTER GHA
+                    key("\u0910", moreKey("\u0918")),
+                    // U+0926/U+094D/U+0935:
+                    // "द्व" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER VA
+                    // U+0926/U+094D/U+0927:
+                    // "द्ध" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DHA
+                    key("\u0926\u094D\u0935", moreKey("\u0926\u094D\u0927")),
+                    // U+091F/U+094D/U+091F:
+                    // "ट्ट" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTA
+                    // U+091B: "छ" DEVANAGARI LETTER CHA
+                    key("\u091F\u094D\u091F", moreKey("\u091B")),
+                    // U+0920/U+094D/U+0920:
+                    // "ठ्ठ" DEVANAGARI LETTER TTHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA
+                    // U+091F: "ट" DEVANAGARI LETTER TTA
+                    key("\u0920\u094D\u0920", moreKey("\u091F")),
+                    // U+090A: "ऊ" DEVANAGARI LETTER UU
+                    // U+0920: "ठ" DEVANAGARI LETTER TTHA
+                    key("\u090A", moreKey("\u0920")),
+                    // U+0915/U+094D/U+0937:
+                    // "क्ष" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER SSA
+                    // U+0921: "ड" DEVANAGARI LETTER DDA
+                    key("\u0915\u094D\u0937", moreKey("\u0921")),
+                    // U+0907: "इ" DEVANAGARI LETTER I
+                    // U+0922: "ढ" DEVANAGARI LETTER DDHA
+                    key("\u0907", moreKey("\u0922")),
+                    // U+090F: "ए" DEVANAGARI LETTER E
+                    // U+0923: "ण" DEVANAGARI LETTER NNA
+                    key("\u090F", moreKey("\u0923")),
+                    // U+0943: "ृ" DEVANAGARI VOWEL SIGN VOCALIC R
+                    // U+0913: "ओ" DEVANAGARI LETTER O
+                    key(VOWEL_SIGN_VOCALIC_R, "\u0943", moreKey("\u0913")))
+            .setKeysOfRow(2,
+                    // U+0906: "आ" DEVANAGARI LETTER AA
+                    // U+0919/U+094D: "ङ्" DEVANAGARI LETTER NGA/DEVANAGARI SIGN VIRAMA
+                    // U+0921/U+094D/U+0921:
+                    //     "ड्ड" DEVANAGARI LETTER DDA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DDA
+                    "\u0906", "\u0919\u094D", "\u0921\u094D\u0921",
+                    // U+0901: "ँ" DEVANAGARI SIGN CANDRABINDU
+                    key(SIGN_CANDRABINDU, "\u0901"),
+                    // U+0926/U+094D/U+0926:
+                    //     "द्द" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER DA
+                    // U+091D: "झ" DEVANAGARI LETTER JHA
+                    "\u0926\u094D\u0926", "\u091D",
+                    // U+094B: "ो" DEVANAGARI VOWEL SIGN O
+                    key(VOWEL_SIGN_O, "\u094B"),
+                    // U+092B: "फ" DEVANAGARI LETTER PHA
+                    "\u092B",
+                    // U+0940: "ी" DEVANAGARI VOWEL SIGN II
+                    key(VOWEL_SIGN_II, "\u0940"),
+                    // U+091F/U+094D/U+0920:
+                    //     "ट्ठ" DEVANAGARI LETTER TTA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER TTHA
+                    "\u091F\u094D\u0920",
+                    // U+0942: "ू" DEVANAGARI VOWEL SIGN UU
+                    key(VOWEL_SIGN_UU, "\u0942"))
+            .setKeysOfRow(3,
+                    // U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA
+                    // U+0939/U+094D/U+092E:
+                    //     "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA
+                    // U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R
+                    // U+0950: "ॐ" DEVANAGARI OM
+                    "\u0915\u094D", "\u0939\u094D\u092E", "\u090B", "\u0950",
+                    // U+094C: "ौ" DEVANAGARI VOWEL SIGN AU
+                    key(VOWEL_SIGN_AU, "\u094C"),
+                    // U+0926/U+094D/U+092F:
+                    //     "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA
+                    "\u0926\u094D\u092F")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java b/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java
new file mode 100644
index 0000000..c791c40
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Nordic.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+/**
+ * The Nordic alphabet keyboard.
+ */
+public final class Nordic extends LayoutBase {
+    private static final String LAYOUT_NAME = "nordic";
+
+    public Nordic(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    public static final String ROW1_11 = "ROW1_11";
+    public static final String ROW2_10 = "ROW2_10";
+    public static final String ROW2_11 = "ROW2_11";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("q", additionalMoreKey("1")),
+                    key("w", additionalMoreKey("2")),
+                    key("e", additionalMoreKey("3")),
+                    key("r", additionalMoreKey("4")),
+                    key("t", additionalMoreKey("5")),
+                    key("y", additionalMoreKey("6")),
+                    key("u", additionalMoreKey("7")),
+                    key("i", additionalMoreKey("8")),
+                    key("o", additionalMoreKey("9")),
+                    key("p", additionalMoreKey("0")),
+                    ROW1_11)
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10, ROW2_11)
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "n", "m")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/PcQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/PcQwerty.java
new file mode 100644
index 0000000..9da6dcc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/PcQwerty.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * The PC QWERTY alphabet keyboard.
+ */
+public final class PcQwerty extends LayoutBase {
+    private static final String LAYOUT_NAME = "pcqwerty";
+
+    public PcQwerty(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class PcQwertyCustomizer extends LayoutCustomizer {
+        public PcQwertyCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return joinKeys(SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return joinKeys(SHIFT_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysLeftToSpacebar(final boolean isPhone) {
+            return joinKeys(SETTINGS_KEY);
+        }
+
+        @Override
+        public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+            return isPhone ? joinKeys(key(ENTER_KEY, EMOJI_KEY)) : joinKeys(EMOJI_KEY);
+        }
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        customizer.setAccentedLetters(builder);
+        builder.replaceKeyOfLabel(ROW1_1, key("`", moreKey("~")))
+                .replaceKeyOfLabel(ROW2_11, key("[", moreKey("{")))
+                .replaceKeyOfLabel(ROW2_12, key("]", moreKey("}")))
+                .replaceKeyOfLabel(ROW2_13, key("\\", moreKey("|")))
+                .replaceKeyOfLabel(ROW3_10, key(";", moreKey(":")))
+                .replaceKeyOfLabel(ROW3_11, key("'", joinMoreKeys(additionalMoreKey("\""),
+                        customizer.getDoubleQuoteMoreKeys(),
+                        customizer.getSingleQuoteMoreKeys())))
+                .setAdditionalMoreKeysPositionOf("'", 4)
+                .replaceKeyOfLabel(ROW4_8, key(",", moreKey("<")))
+                .replaceKeyOfLabel(ROW4_9, key(".", moreKey(">")))
+                // U+00BF: "¿" INVERTED QUESTION MARK
+                .replaceKeyOfLabel(ROW4_10, key("/", joinMoreKeys("?", "\u00BF")));
+        if (isPhone) {
+            // U+221E: "∞" INFINITY
+            // U+2260: "≠" NOT EQUAL TO
+            // U+2248: "≈" ALMOST EQUAL TO
+            builder.replaceKeyOfLabel(ROW1_13, key("=",
+                    joinMoreKeys("\u221E", "\u2260", "\u2248", "+")));
+        } else {
+            // U+221E: "∞" INFINITY
+            // U+2260: "≠" NOT EQUAL TO
+            // U+2248: "≈" ALMOST EQUAL TO
+            builder.replaceKeyOfLabel(ROW1_13, key("=",
+                    joinMoreKeys("+", "\u221E", "\u2260", "\u2248")));
+        }
+        return builder.build();
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
+        final ExpectedKeyboardBuilder builder;
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED
+                || elementId == KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED) {
+            builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone));
+        } else {
+            builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+            final LayoutCustomizer customizer = getCustomizer();
+            customizer.setAccentedLetters(builder);
+            builder.setKeysOfRow(1,
+                    "~",
+                    // U+00A1: "¡" INVERTED EXCLAMATION MARK
+                    key("!", moreKey("\u00A1")),
+                    "@", "#",
+                    customizer.getCurrencyKey(),
+                    // U+2030: "‰" PER MILLE SIGN
+                    key("%", moreKey("\u2030")),
+                    "^", "&",
+                    // U+2020: "†" DAGGER
+                    // U+2021: "‡" DOUBLE DAGGER
+                    // U+2605: "★" BLACK STAR
+                    key("*", joinMoreKeys("\u2020", "\u2021", "\u2605")),
+                    "(", ")", "_",
+                    // U+00B1: "±" PLUS-MINUS SIGN
+                    // U+00D7: "×" MULTIPLICATION SIGN
+                    // U+00F7: "÷" DIVISION SIGN
+                    // U+221A: "√" SQUARE ROOT
+                    key("+", joinMoreKeys("\u00B1", "\u00D7", "\u00F7", "\u221A")))
+                    .replaceKeyOfLabel(ROW2_11, key("{"))
+                    .replaceKeyOfLabel(ROW2_12, key("}"))
+                    .replaceKeyOfLabel(ROW2_13, key("|"))
+                    .replaceKeyOfLabel(ROW3_10, key(":"))
+                    .replaceKeyOfLabel(ROW3_11, key("\"", joinMoreKeys(
+                            customizer.getDoubleQuoteMoreKeys(),
+                            customizer.getSingleQuoteMoreKeys())))
+                    // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                    // U+2264: "≤" LESS-THAN OR EQUAL TO
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    .replaceKeyOfLabel(ROW4_8, key("<", joinMoreKeys("\u2039", "\u2264", "\u00AB")))
+                    // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                    // U+2265: "≥" GREATER-THAN EQUAL TO
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    .replaceKeyOfLabel(ROW4_9, key(">", joinMoreKeys("\u203A", "\u2265", "\u00BB")))
+                    // U+00BF: "¿" INVERTED QUESTION MARK
+                    .replaceKeyOfLabel(ROW4_10, key("?", moreKey("\u00BF")));
+        }
+        builder.toUpperCase(getLocale());
+        return builder.build();
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(3, DELETE_KEY);
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(2, TAB_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    @Override
+    public ExpectedKey[][] getLayout(final boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_SYMBOLS
+                || elementId == KeyboardId.ELEMENT_SYMBOLS_SHIFTED) {
+            return null;
+        }
+        return super.getLayout(isPhone, elementId);
+    }
+
+    private static final String ROW1_1 = "ROW1_1";
+    private static final String ROW1_13 = "ROW1_13";
+    private static final String ROW2_11 = "ROW2_11";
+    private static final String ROW2_12 = "ROW2_12";
+    private static final String ROW2_13 = "ROW2_13";
+    private static final String ROW3_10 = "ROW3_10";
+    private static final String ROW3_11 = "ROW3_11";
+    private static final String ROW4_8 = "ROW4_8";
+    private static final String ROW4_9 = "ROW4_9";
+    private static final String ROW4_10 = "ROW4_10";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    ROW1_1,
+                    // U+00A1: "¡" INVERTED EXCLAMATION MARK
+                    // 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
+                    key("1", joinMoreKeys(
+                            "!", "\u00A1", "\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")),
+                    // U+00B2: "²" SUPERSCRIPT TWO
+                    // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+                    key("2", joinMoreKeys("@", "\u00B2", "\u2154")),
+                    // U+00B3: "³" SUPERSCRIPT THREE
+                    // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+                    // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+                    key("3", joinMoreKeys("#", "\u00B3", "\u00BE", "\u215C")),
+                    // U+2074: "⁴" SUPERSCRIPT FOUR
+                    key("4", joinMoreKeys("$", "\u2074")),
+                    // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+                    key("5", joinMoreKeys("%", "\u215D")),
+                    key("6", moreKey("^")),
+                    // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+                    key("7", joinMoreKeys("&", "\u215E")),
+                    key("8", moreKey("*")),
+                    key("9", moreKey("(")),
+                    // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+                    // U+2205: "∅" EMPTY SET
+                    key("0", joinMoreKeys(")", "\u207F", "\u2205")),
+                    // U+2013: "–" EN DASH
+                    // U+2014: "—" EM DASH
+                    // U+00B7: "·" MIDDLE DOT
+                    key("-", joinMoreKeys("_", "\u2013", "\u2014", "\u00B7")),
+                    ROW1_13)
+            .setKeysOfRow(2, "q", "w", "e", "r", "t", "y", "u", "i", "o", "p",
+                    ROW2_11, ROW2_12, ROW2_13)
+            .setKeysOfRow(3, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW3_10, ROW3_11)
+            .setKeysOfRow(4, "z", "x", "c", "v", "b", "n", "m", ROW4_8, ROW4_9, ROW4_10)
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java
new file mode 100644
index 0000000..d790a1e
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Qwerty.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+/**
+ * The QWERTY alphabet keyboard.
+ */
+public final class Qwerty extends LayoutBase {
+    private static final String LAYOUT_NAME = "qwerty";
+
+    public Qwerty(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("q", additionalMoreKey("1")),
+                    key("w", additionalMoreKey("2")),
+                    key("e", additionalMoreKey("3")),
+                    key("r", additionalMoreKey("4")),
+                    key("t", additionalMoreKey("5")),
+                    key("y", additionalMoreKey("6")),
+                    key("u", additionalMoreKey("7")),
+                    key("i", additionalMoreKey("8")),
+                    key("o", additionalMoreKey("9")),
+                    key("p", additionalMoreKey("0")))
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l")
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "n", "m")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java b/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java
new file mode 100644
index 0000000..26ba6cf
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Qwertz.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+public final class Qwertz extends LayoutBase {
+    private static final String LAYOUT_NAME = "qwertz";
+
+    public Qwertz(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("q", additionalMoreKey("1")),
+                    key("w", additionalMoreKey("2")),
+                    key("e", additionalMoreKey("3")),
+                    key("r", additionalMoreKey("4")),
+                    key("t", additionalMoreKey("5")),
+                    key("z", additionalMoreKey("6")),
+                    key("u", additionalMoreKey("7")),
+                    key("i", additionalMoreKey("8")),
+                    key("o", additionalMoreKey("9")),
+                    key("p", additionalMoreKey("0")))
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l")
+            .setKeysOfRow(3, "y", "x", "c", "v", "b", "n", "m")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Sinhala.java b/tests/src/com/android/inputmethod/keyboard/layout/Sinhala.java
new file mode 100644
index 0000000..5c0ffb4
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Sinhala.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Sinhala keyboard.
+ */
+public final class Sinhala extends LayoutBase {
+    private static final String LAYOUT_NAME = "sinhala";
+
+    public Sinhala(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class SinhalaCustomizer extends LayoutCustomizer {
+        public SinhalaCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return SINHALA_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0D85: "අ" SINHALA LETTER AYANNA
+        // U+0D86: "ආ" SINHALA LETTER AAYANNA
+        private static final ExpectedKey SINHALA_ALPHABET_KEY = key(
+                "\u0D85,\u0D86", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return ALPHABET_COMMON;
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0DD4: "ු" SINHALA VOWEL SIGN KETTI PAA-PILLA
+                    key("\u0DD4", moreKey("1")),
+                    // U+0D85: "අ" SINHALA LETTER AYANNA
+                    key("\u0D85", moreKey("2")),
+                    // U+0DD0: "ැ" SINHALA VOWEL SIGN KETTI AEDA-PILLA
+                    key("\u0DD0", moreKey("3")),
+                    // U+0DBB: "ර" SINHALA LETTER RAYANNA
+                    key("\u0DBB", moreKey("4")),
+                    // U+0D91: "එ" SINHALA LETTER EYANNA
+                    key("\u0D91", moreKey("5")),
+                    // U+0DC4: "හ" SINHALA LETTER HAYANNA
+                    key("\u0DC4", moreKey("6")),
+                    // U+0DB8: "ම" SINHALA LETTER MAYANNA
+                    key("\u0DB8", moreKey("7")),
+                    // U+0DC3: "ස" SINHALA LETTER DANTAJA SAYANNA
+                    key("\u0DC3", moreKey("8")),
+                    // U+0DAF: "ද" SINHALA LETTER ALPAPRAANA DAYANNA
+                    // U+0DB3: "ඳ" SINHALA LETTER SANYAKA DAYANNA
+                    key("\u0DAF", joinMoreKeys("9", "\u0DB3")),
+                    // U+0DA0: "ච" SINHALA LETTER ALPAPRAANA CAYANNA
+                    key("\u0DA0", moreKey("0")),
+                    // U+0DA4: "ඤ" SINHALA LETTER TAALUJA NAASIKYAYA
+                    // U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA
+                    key("\u0DA4", moreKey("\u0DF4")))
+            .setKeysOfRow(2,
+                    // U+0DCA: "්" SINHALA SIGN AL-LAKUNA
+                    // U+0DD2: "ි" SINHALA VOWEL SIGN KETTI IS-PILLA
+                    // U+0DCF: "ා" SINHALA VOWEL SIGN AELA-PILLA
+                    // U+0DD9: "ෙ" SINHALA VOWEL SIGN KOMBUVA
+                    // U+0DA7: "ට" SINHALA LETTER ALPAPRAANA TTAYANNA
+                    // U+0DBA: "ය" SINHALA LETTER YAYANNA
+                    // U+0DC0: "ව" SINHALA LETTER VAYANNA
+                    // U+0DB1: "න" SINHALA LETTER DANTAJA NAYANNA
+                    // U+0D9A: "ක" SINHALA LETTER ALPAPRAANA KAYANNA
+                    // U+0DAD: "ත" SINHALA LETTER ALPAPRAANA TAYANNA
+                    // U+0D8F: "ඏ" SINHALA LETTER ILUYANNA
+                    "\u0DCA", "\u0DD2", "\u0DCF", "\u0DD9", "\u0DA7", "\u0DBA", "\u0DC0", "\u0DB1",
+                    "\u0D9A", "\u0DAD", "\u0D8F")
+            .setKeysOfRow(3,
+                    // U+0D82: "ං" SINHALA SIGN ANUSVARAYA
+                    // U+0D83: "ඃ" SINHALA SIGN VISARGAYA
+                    key("\u0D82", moreKey("\u0D83")),
+                    // U+0DA2: "ජ" SINHALA LETTER ALPAPRAANA JAYANNA
+                    // U+0DA6: "ඦ" SINHALA LETTER SANYAKA JAYANNA
+                    key("\u0DA2", moreKey("\u0DA6")),
+                    // U+0DA9: "ඩ" SINHALA LETTER ALPAPRAANA DDAYANNA
+                    // U+0DAC: "ඬ" SINHALA LETTER SANYAKA DDAYANNA
+                    key("\u0DA9", moreKey("\u0DAC")),
+                    // U+0D89: "ඉ" SINHALA LETTER IYANNA
+                    // U+0DB6: "බ" SINHALA LETTER ALPAPRAANA BAYANNA
+                    // U+0DB4: "ප" SINHALA LETTER ALPAPRAANA PAYANNA
+                    // U+0DBD: "ල" SINHALA LETTER DANTAJA LAYANNA
+                    "\u0D89", "\u0DB6", "\u0DB4", "\u0DBD",
+                    // U+0D9C: "ග" SINHALA LETTER ALPAPRAANA GAYANNA
+                    // U+0D9F: "ඟ" SINHALA LETTER SANYAKA GAYANNA
+                    key("\u0D9C", moreKey("\u0D9F")),
+                    // U+0DF3: "ෳ" SINHALA VOWEL SIGN DIGA GAYANUKITTA
+                    "\u0DF3")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0DD6: "ූ" SINHALA VOWEL SIGN DIGA PAA-PILLA
+                    // U+0D8B: "උ" SINHALA LETTER UYANNA
+                    // U+0DD1: "ෑ" SINHALA VOWEL SIGN DIGA AEDA-PILLA
+                    // U+0D8D: "ඍ" SINHALA LETTER IRUYANNA
+                    // U+0D94: "ඔ" SINHALA LETTER OYANNA
+                    // U+0DC1: "ශ" SINHALA LETTER TAALUJA SAYANNA
+                    // U+0DB9: "ඹ" SINHALA LETTER AMBA BAYANNA
+                    // U+0DC2: "ෂ" SINHALA LETTER MUURDHAJA SAYANNA
+                    // U+0DB0: "ධ" SINHALA LETTER MAHAAPRAANA DAYANNA
+                    // U+0DA1: "ඡ" SINHALA LETTER MAHAAPRAANA CAYANNA
+                    "\u0DD6", "\u0D8B", "\u0DD1", "\u0D8D", "\u0D94", "\u0DC1", "\u0DB9", "\u0DC2",
+                    "\u0DB0", "\u0DA1",
+                    // U+0DA5: "ඥ" SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+                    // U+0DF4: "෴" SINHALA PUNCTUATION KUNDDALIYA
+                    key("\u0DA5", moreKey("\u0DF4")))
+            .setKeysOfRow(2,
+                    // U+0DDF: "ෟ" SINHALA VOWEL SIGN GAYANUKITTA
+                    // U+0DD3: "ී" SINHALA VOWEL SIGN DIGA IS-PILLA
+                    // U+0DD8: "ෘ" SINHALA VOWEL SIGN GAETTA-PILLA
+                    // U+0DC6: "ෆ" SINHALA LETTER FAYANNA
+                    // U+0DA8: "ඨ" SINHALA LETTER MAHAAPRAANA TTAYANNA
+                    // U+0DCA/U+200D/U+0DBA:
+                    //     "්‍ය" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER YAYANNA
+                    // U+0DC5/U+0DD4:
+                    //     "ළු" SINHALA LETTER MUURDHAJA LAYANNA/SINHALA VOWEL SIGN KETTI PAA-PILLA
+                    // U+0DAB: "ණ" SINHALA LETTER MUURDHAJA NAYANNA
+                    // U+0D9B: "ඛ" SINHALA LETTER MAHAAPRAANA KAYANNA
+                    // U+0DAE: "ථ" SINHALA LETTER MAHAAPRAANA TAYANNA
+                    // U+0DCA/U+200D/U+0DBB:
+                    //     "්‍ර" SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER/SINHALA LETTER RAYANNA
+                    "\u0DDF", "\u0DD3", "\u0DD8", "\u0DC6", "\u0DA8", "\u0DCA\u200D\u0DBA",
+                    "\u0DC5\u0DD4", "\u0DAB", "\u0D9B", "\u0DAE", "\u0DCA\u200D\u0DBB")
+            .setKeysOfRow(3,
+                    // U+0D9E: "ඞ" SINHALA LETTER KANTAJA NAASIKYAYA
+                    // U+0DA3: "ඣ" SINHALA LETTER MAHAAPRAANA JAYANNA
+                    // U+0DAA: "ඪ" SINHALA LETTER MAHAAPRAANA DDAYANNA
+                    // U+0D8A: "ඊ" SINHALA LETTER IIYANNA
+                    // U+0DB7: "භ" SINHALA LETTER MAHAAPRAANA BAYANNA
+                    // U+0DB5: "ඵ" SINHALA LETTER MAHAAPRAANA PAYANNA
+                    // U+0DC5: "ළ" SINHALA LETTER MUURDHAJA LAYANNA
+                    // U+0D9D: "ඝ" SINHALA LETTER MAHAAPRAANA GAYANNA
+                    // U+0DBB/U+0DCA/U+200D:
+                    //     "ර්‍" SINHALA LETTER RAYANNA/SINHALA SIGN AL-LAKUNA/ZERO WIDTH JOINER
+                    "\u0d9E", "\u0DA3", "\u0DAA", "\u0D8A", "\u0DB7", "\u0DB5", "\u0DC5", "\u0D9D",
+                    "\u0DBB\u0DCA\u200D")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java b/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java
new file mode 100644
index 0000000..be8b435
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/SouthSlavic.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+public final class SouthSlavic extends LayoutBase {
+    private static final String LAYOUT_NAME = "south_slavic";
+
+    public SouthSlavic(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class SouthSlavicLayoutCustomizer extends LayoutCustomizer {
+        public SouthSlavicLayoutCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public final ExpectedKey getAlphabetKey() { return SOUTH_SLAVIC_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0410: "А" CYRILLIC CAPITAL LETTER A
+        // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+        // U+0412: "В" CYRILLIC CAPITAL LETTER VE
+        private static final ExpectedKey SOUTH_SLAVIC_ALPHABET_KEY = key(
+                "\u0410\u0411\u0412", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    public static final String ROW1_6 = "ROW1_6";
+    public static final String ROW2_11 = "ROW2_11";
+    public static final String ROW3_1 = "ROW3_1";
+    public static final String ROW3_8 = "ROW3_8";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0459: "љ" CYRILLIC SMALL LETTER LJE
+                    key("\u0459", additionalMoreKey("1")),
+                    // U+045A: "њ" CYRILLIC SMALL LETTER NJE
+                    key("\u045A", additionalMoreKey("2")),
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    key("\u0435", additionalMoreKey("3")),
+                    // U+0440: "р" CYRILLIC SMALL LETTER ER
+                    key("\u0440", additionalMoreKey("4")),
+                    // U+0442: "т" CYRILLIC SMALL LETTER TE
+                    key("\u0442", additionalMoreKey("5")),
+                    key(ROW1_6, additionalMoreKey("6")),
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    key("\u0443", additionalMoreKey("7")),
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    key("\u0438", additionalMoreKey("8")),
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    key("\u043E", additionalMoreKey("9")),
+                    // U+043F: "п" CYRILLIC SMALL LETTER PE
+                    key("\u043F", additionalMoreKey("0")),
+                    // U+0448: "ш" CYRILLIC SMALL LETTER SHA
+                    "\u0448")
+            .setKeysOfRow(2,
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+0441: "с" CYRILLIC SMALL LETTER ES
+                    // U+0434: "д" CYRILLIC SMALL LETTER DE
+                    // U+0444: "ф" CYRILLIC SMALL LETTER EF
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    // U+0445: "х" CYRILLIC SMALL LETTER HA
+                    // U+0458: "ј" CYRILLIC SMALL LETTER JE
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    // U+043B: "л" CYRILLIC SMALL LETTER EL
+                    // U+0447: "ч" CYRILLIC SMALL LETTER CHE
+                    "\u0430", "\u0441", "\u0434", "\u0444", "\u0433", "\u0445", "\u0458", "\u043A",
+                    "\u043B", "\u0447", ROW2_11)
+            .setKeysOfRow(3,
+                    // U+045F: "џ" CYRILLIC SMALL LETTER DZHE
+                    // U+0446: "ц" CYRILLIC SMALL LETTER TSE
+                    // U+0432: "в" CYRILLIC SMALL LETTER VE
+                    // U+0431: "б" CYRILLIC SMALL LETTER BE
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    // U+043C: "м" CYRILLIC SMALL LETTER EM
+                    // U+0436: "ж" CYRILLIC SMALL LETTER ZHE
+                    ROW3_1, "\u045F", "\u0446", "\u0432", "\u0431", "\u043D", "\u043C", ROW3_8,
+                    "\u0436")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java b/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java
new file mode 100644
index 0000000..225b9f6
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Spanish.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+public final class Spanish extends LayoutBase {
+    private static final String LAYOUT_NAME = "spanish";
+
+    public Spanish(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    public static final String ROW2_10 = "ROW2_10";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("q", additionalMoreKey("1")),
+                    key("w", additionalMoreKey("2")),
+                    key("e", additionalMoreKey("3")),
+                    key("r", additionalMoreKey("4")),
+                    key("t", additionalMoreKey("5")),
+                    key("y", additionalMoreKey("6")),
+                    key("u", additionalMoreKey("7")),
+                    key("i", additionalMoreKey("8")),
+                    key("o", additionalMoreKey("9")),
+                    key("p", additionalMoreKey("0")))
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10)
+            .setKeysOfRow(3, "z", "x", "c", "v", "b", "n", "m")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java b/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java
new file mode 100644
index 0000000..01a6020
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Swiss.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+public final class Swiss extends LayoutBase {
+    private static final String LAYOUT_NAME = "swiss";
+
+    public Swiss(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
+
+    public static final String ROW1_11 = "ROW1_11";
+    public static final String ROW2_10 = "ROW2_10";
+    public static final String ROW2_11 = "ROW2_11";
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("q", additionalMoreKey("1")),
+                    key("w", additionalMoreKey("2")),
+                    key("e", additionalMoreKey("3")),
+                    key("r", additionalMoreKey("4")),
+                    key("t", additionalMoreKey("5")),
+                    key("z", additionalMoreKey("6")),
+                    key("u", additionalMoreKey("7")),
+                    key("i", additionalMoreKey("8")),
+                    key("o", additionalMoreKey("9")),
+                    key("p", additionalMoreKey("0")),
+                    ROW1_11)
+            .setKeysOfRow(2, "a", "s", "d", "f", "g", "h", "j", "k", "l", ROW2_10, ROW2_11)
+            .setKeysOfRow(3, "y", "x", "c", "v", "b", "n", "m")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
new file mode 100644
index 0000000..5f3e4b1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.AbstractLayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+/**
+ * The symbols keyboard layout.
+ */
+public class Symbols extends AbstractLayoutBase {
+    private final LayoutCustomizer mCustomizer;
+
+    public Symbols(final LayoutCustomizer customizer) {
+        mCustomizer = customizer;
+    }
+
+    public ExpectedKey[][] getLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(SYMBOLS_COMMON);
+        final LayoutCustomizer customizer = mCustomizer;
+        builder.replaceKeyOfLabel(CURRENCY, customizer.getCurrencyKey());
+        builder.replaceKeyOfLabel(DOUBLE_QUOTE, key("\"", joinMoreKeys(
+                customizer.getDoubleQuoteMoreKeys(), customizer.getDoubleAngleQuoteKeys())));
+        builder.replaceKeyOfLabel(SINGLE_QUOTE, key("'", joinMoreKeys(
+                customizer.getSingleQuoteMoreKeys(), customizer.getSingleAngleQuoteKeys())));
+        if (isPhone) {
+            builder.addKeysOnTheLeftOfRow(3, customizer.getSymbolsShiftKey(isPhone))
+                    .addKeysOnTheRightOfRow(3, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(4, customizer.getAlphabetKey())
+                    .addKeysOnTheRightOfRow(4, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            // Tablet symbols keyboard has extra two keys at the left edge of the 3rd row.
+            builder.addKeysOnTheLeftOfRow(3, (Object[])joinKeys("\\", "="));
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(2, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(3, customizer.getSymbolsShiftKey(isPhone))
+                    .addKeysOnTheRightOfRow(3, customizer.getSymbolsShiftKey(isPhone))
+                    .addKeysOnTheLeftOfRow(4, customizer.getAlphabetKey())
+                    .addKeysOnTheRightOfRow(4, EMOJI_KEY);
+        }
+        return builder.build();
+    }
+
+    // Variations of the "currency" key on the 2nd row.
+    public static final String CURRENCY = "CURRENCY";
+    // U+00A2: "¢" CENT SIGN
+    // U+00A3: "£" POUND SIGN
+    // U+00A5: "¥" YEN SIGN
+    // U+20AC: "€" EURO SIGN
+    // U+20B1: "₱" PESO SIGN
+    public static final ExpectedKey DOLLAR_SIGN = key("$");
+    public static final ExpectedKey CENT_SIGN = key("\u00A2");
+    public static final ExpectedKey POUND_SIGN = key("\u00A3");
+    public static final ExpectedKey YEN_SIGN = key("\u00A5");
+    public static final ExpectedKey EURO_SIGN = key("\u20AC");
+    public static final ExpectedKey PESO_SIGN = key("\u20B1");
+    public static final ExpectedKey CURRENCY_DOLLAR = key("$",
+            CENT_SIGN, POUND_SIGN, EURO_SIGN, YEN_SIGN, PESO_SIGN);
+    public static final ExpectedKey CURRENCY_EURO = key("\u20AC",
+            CENT_SIGN, POUND_SIGN, DOLLAR_SIGN, YEN_SIGN, PESO_SIGN);
+    public static final ExpectedKey[] CURRENCY_GENERIC_MORE_KEYS = joinMoreKeys(
+            Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
+            Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+
+    // Variations of the "double quote" key's "more keys" on the 3rd row.
+    public static final String DOUBLE_QUOTE = "DOUBLE_QUOTE";
+    // U+201C: "“" LEFT DOUBLE QUOTATION MARK
+    // U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+    // U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+    private static final ExpectedKey DQUOTE_LEFT = key("\u201C");
+    private static final ExpectedKey DQUOTE_RIGHT = key("\u201D");
+    private static final ExpectedKey DQUOTE_LOW9 = key("\u201E");
+    public static ExpectedKey[] DOUBLE_QUOTES_9LR = { DQUOTE_LOW9, DQUOTE_LEFT, DQUOTE_RIGHT };
+    public static ExpectedKey[] DOUBLE_QUOTES_R9L = { DQUOTE_RIGHT, DQUOTE_LOW9, DQUOTE_LEFT };
+    public static ExpectedKey[] DOUBLE_QUOTES_L9R = { DQUOTE_LEFT, DQUOTE_LOW9, DQUOTE_RIGHT };
+    public static ExpectedKey[] DOUBLE_QUOTES_LR9 = { DQUOTE_LEFT, DQUOTE_RIGHT, DQUOTE_LOW9 };
+    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    private static final ExpectedKey DAQUOTE_LEFT = key("\u00AB");
+    private static final ExpectedKey DAQUOTE_RIGHT = key("\u00BB");
+    public static ExpectedKey[] DOUBLE_ANGLE_QUOTES_LR = { DAQUOTE_LEFT, DAQUOTE_RIGHT };
+    public static ExpectedKey[] DOUBLE_ANGLE_QUOTES_RL = { DAQUOTE_RIGHT, DAQUOTE_LEFT };
+
+    // Variations of the "single quote" key's "more keys" on the 3rd row.
+    public static final String SINGLE_QUOTE = "SINGLE_QUOTE";
+    // U+2018: "‘" LEFT SINGLE QUOTATION MARK
+    // U+2019: "’" RIGHT SINGLE QUOTATION MARK
+    // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+    private static final ExpectedKey SQUOTE_LEFT = key("\u2018");
+    private static final ExpectedKey SQUOTE_RIGHT = key("\u2019");
+    private static final ExpectedKey SQUOTE_LOW9 = key("\u201A");
+    public static ExpectedKey[] SINGLE_QUOTES_9LR = { SQUOTE_LOW9, SQUOTE_LEFT, SQUOTE_RIGHT };
+    public static ExpectedKey[] SINGLE_QUOTES_R9L = { SQUOTE_RIGHT, SQUOTE_LOW9, SQUOTE_LEFT };
+    public static ExpectedKey[] SINGLE_QUOTES_L9R = { SQUOTE_LEFT, SQUOTE_LOW9, SQUOTE_RIGHT };
+    public static ExpectedKey[] SINGLE_QUOTES_LR9 = { SQUOTE_LEFT, SQUOTE_RIGHT, SQUOTE_LOW9 };
+    // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    private static final ExpectedKey SAQUOTE_LEFT = key("\u2039");
+    private static final ExpectedKey SAQUOTE_RIGHT = key("\u203A");
+    public static ExpectedKey[] SINGLE_ANGLE_QUOTES_LR = { SAQUOTE_LEFT, SAQUOTE_RIGHT };
+    public static ExpectedKey[] SINGLE_ANGLE_QUOTES_RL = { SAQUOTE_RIGHT, SAQUOTE_LEFT };
+
+    // Common symbols keyboard layout.
+    private static final ExpectedKey[][] SYMBOLS_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // 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
+                    key("1", joinMoreKeys("\u00B9", "\u00BD", "\u2153", "\u00BC", "\u215B")),
+                    // U+00B2: "²" SUPERSCRIPT TWO
+                    // U+2154: "⅔" VULGAR FRACTION TWO THIRDS
+                    key("2", joinMoreKeys("\u00B2", "\u2154")),
+                    // U+00B3: "³" SUPERSCRIPT THREE
+                    // U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+                    // U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS
+                    key("3", joinMoreKeys("\u00B3", "\u00BE", "\u215C")),
+                    // U+2074: "⁴" SUPERSCRIPT FOUR
+                    key("4", moreKey("\u2074")),
+                    // U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS
+                    key("5", moreKey("\u215D")),
+                    "6",
+                    // U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS
+                    key("7", moreKey("\u215E")),
+                    "8", "9",
+                    // U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+                    // U+2205: "∅" EMPTY SET
+                    key("0", joinMoreKeys("\u207F", "\u2205")))
+            .setKeysOfRow(2,
+                    key("@"), key("#"), key(CURRENCY),
+                    // U+2030: "‰" PER MILLE SIGN
+                    key("%", moreKey("\u2030")),
+                    "&",
+                    // U+2013: "–" EN DASH
+                    // U+2014: "—" EM DASH
+                    // U+00B7: "·" MIDDLE DOT
+                    key("-", joinMoreKeys("_", "\u2013", "\u2014", "\u00B7")),
+                    // U+00B1: "±" PLUS-MINUS SIGN
+                    key("+", moreKey("\u00B1")),
+                    key("(", joinMoreKeys("<", "{", "[")),
+                    key(")", joinMoreKeys(">", "}", "]")))
+            .setKeysOfRow(3,
+                    // U+2020: "†" DAGGER
+                    // U+2021: "‡" DOUBLE DAGGER
+                    // U+2605: "★" BLACK STAR
+                    key("*", joinMoreKeys("\u2020", "\u2021", "\u2605")),
+                    key(DOUBLE_QUOTE), key(SINGLE_QUOTE), key(":"), key(";"),
+                    // U+00A1: "¡" INVERTED EXCLAMATION MARK
+                    key("!", moreKey("\u00A1")),
+                    // U+00BF: "¿" INVERTED QUESTION MARK
+                    key("?", moreKey("\u00BF")))
+            .setKeysOfRow(4,
+                    key(","), key("_"), SPACE_KEY, key("/"),
+                    // U+2026: "…" HORIZONTAL ELLIPSIS
+                    key(".", moreKey("\u2026")))
+            .build();
+
+    public static class RtlSymbols extends Symbols {
+        public RtlSymbols(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+        // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+        private static final ExpectedKey DAQUOTE_LEFT_RTL = key("\u00AB", "\u00BB");
+        private static final ExpectedKey DAQUOTE_RIGHT_RTL = key("\u00BB", "\u00AB");
+        public static ExpectedKey[] DOUBLE_ANGLE_QUOTES_LR_RTL = {
+                DAQUOTE_LEFT_RTL, DAQUOTE_RIGHT_RTL
+        };
+        // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+        // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+        private static final ExpectedKey SAQUOTE_LEFT_RTL = key("\u2039", "\u203A");
+        private static final ExpectedKey SAQUOTE_RIGHT_RTL = key("\u203A", "\u2039");
+        public static ExpectedKey[] SINGLE_ANGLE_QUOTES_LR_RTL = {
+                SAQUOTE_LEFT_RTL, SAQUOTE_RIGHT_RTL
+        };
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                    .replaceKeyOfLabel("(", key("(", ")",
+                            moreKey("<", ">"), moreKey("{", "}"), moreKey("[", "]")))
+                    .replaceKeyOfLabel(")", key(")", "(",
+                            moreKey(">", "<"), moreKey("}", "{"), moreKey("]", "[")))
+                    .build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java b/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
new file mode 100644
index 0000000..3265e10
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/SymbolsShifted.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.keyboard.layout.expected.AbstractLayoutBase;
+
+/**
+ * The symbols shifted keyboard layout.
+ */
+public class SymbolsShifted extends AbstractLayoutBase {
+    private final LayoutCustomizer mCustomizer;
+
+    public SymbolsShifted(final LayoutCustomizer customizer) {
+        mCustomizer = customizer;
+    }
+
+    public ExpectedKey[][] getLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(SYMBOLS_SHIFTED_COMMON);
+        final LayoutCustomizer customizer = mCustomizer;
+        builder.replaceKeyOfLabel(OTHER_CURRENCIES, (Object[])customizer.getOtherCurrencyKeys());
+        if (isPhone) {
+            builder.addKeysOnTheLeftOfRow(3, customizer.getBackToSymbolsKey())
+                    .addKeysOnTheRightOfRow(3, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(4, customizer.getAlphabetKey())
+                    .addKeysOnTheRightOfRow(4, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            // Tablet symbols shifted keyboard has extra two keys at the right edge of the 3rd row.
+            // U+00BF: "¿" INVERTED QUESTION MARK
+            // U+00A1: "¡" INVERTED EXCLAMATION MARK
+            builder.addKeysOnTheRightOfRow(3, (Object[])joinKeys("\u00A1", "\u00BF"));
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(2, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(3, customizer.getBackToSymbolsKey())
+                    .addKeysOnTheRightOfRow(3, customizer.getBackToSymbolsKey())
+                    .addKeysOnTheLeftOfRow(4, customizer.getAlphabetKey())
+                    .addKeysOnTheRightOfRow(4, EMOJI_KEY);
+        }
+        return builder.build();
+    }
+
+    // Variations of the "other currencies" keys on the 2rd row.
+    public static final String OTHER_CURRENCIES = "OTHER_CURRENCY";
+    public static final ExpectedKey[] CURRENCIES_OTHER_THAN_DOLLAR = {
+        Symbols.POUND_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.YEN_SIGN
+    };
+    public static final ExpectedKey[] CURRENCIES_OTHER_THAN_EURO = {
+        Symbols.POUND_SIGN, Symbols.YEN_SIGN, key(Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN),
+        Symbols.CENT_SIGN
+    };
+    public static final ExpectedKey[] CURRENCIES_OTHER_GENERIC = {
+        Symbols.POUND_SIGN, Symbols.EURO_SIGN, key(Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN),
+        Symbols.CENT_SIGN
+    };
+
+    // Common symbols shifted keyboard layout.
+    private static final ExpectedKey[][] SYMBOLS_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0060: "`" GRAVE ACCENT
+                    "~", "\u0060", "|",
+                    // U+2022: "•" BULLET
+                    // U+266A: "♪" EIGHTH NOTE
+                    // U+2665: "♥" BLACK HEART SUIT
+                    // U+2660: "♠" BLACK SPADE SUIT
+                    // U+2666: "♦" BLACK DIAMOND SUIT
+                    // U+2663: "♣" BLACK CLUB SUIT
+                    key("\u2022", joinMoreKeys("\u266A", "\u2665", "\u2660", "\u2666", "\u2663")),
+                    // U+221A: "√" SQUARE ROOT
+                    "\u221A",
+                    // U+03C0: "π" GREEK SMALL LETTER PI
+                    // U+03A0: "Π" GREEK CAPITAL LETTER PI
+                    key("\u03C0", moreKey("\u03A0")),
+                    // U+00F7: "÷" DIVISION SIGN
+                    // U+00D7: "×" MULTIPLICATION SIGN
+                    "\u00F7", "\u00D7",
+                    // U+00B6: "¶" PILCROW SIGN
+                    // U+00A7: "§" SECTION SIGN
+                    key("\u00B6", moreKey("\u00A7")),
+                    // U+2206: "∆" INCREMENT
+                    "\u2206")
+            .setKeysOfRow(2,
+                    OTHER_CURRENCIES,
+                    // U+2191: "↑" UPWARDS ARROW
+                    // U+2193: "↓" DOWNWARDS ARROW
+                    // U+2190: "←" LEFTWARDS ARROW
+                    // U+2192: "→" RIGHTWARDS ARROW
+                    key("^", joinMoreKeys("\u2191", "\u2193", "\u2190", "\u2192")),
+                    // U+00B0: "°" DEGREE SIGN
+                    // U+2032: "′" PRIME
+                    // U+2033: "″" DOUBLE PRIME
+                    key("\u00B0", joinMoreKeys("\u2032", "\u2033")),
+                    // U+2260: "≠" NOT EQUAL TO
+                    // U+2248: "≈" ALMOST EQUAL TO
+                    // U+221E: "∞" INFINITY
+                    key("=", joinMoreKeys("\u2260", "\u2248", "\u221E")),
+                    "{", "}")
+            .setKeysOfRow(3,
+                    // U+00A9: "©" COPYRIGHT SIGN
+                    // U+00AE: "®" REGISTERED SIGN
+                    // U+2122: "™" TRADE MARK SIGN
+                    // U+2105: "℅" CARE OF
+                    "\\", "\u00A9", "\u00AE", "\u2122", "\u2105", "[", "]")
+            .setKeysOfRow(4,
+                    ",",
+                    // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                    // U+2264: "≤" LESS-THAN OR EQUAL TO
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    key("<", joinMoreKeys("\u2039", "\u2264", "\u00AB")),
+                    SPACE_KEY,
+                    // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                    // U+2265: "≥" GREATER-THAN EQUAL TO
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    key(">", joinMoreKeys("\u203A", "\u2265", "\u00BB")),
+                    // U+2026: "…" HORIZONTAL ELLIPSIS
+                    key(".", moreKey("\u2026")))
+            .build();
+
+    public static class RtlSymbolsShifted extends SymbolsShifted {
+        public RtlSymbolsShifted(final LayoutCustomizer customizer) {
+            super(customizer);
+        }
+
+        @Override
+        public ExpectedKey[][] getLayout(final boolean isPhone) {
+            return new ExpectedKeyboardBuilder(super.getLayout(isPhone))
+                .replaceKeyOfLabel("{", key("{", "}"))
+                .replaceKeyOfLabel("}", key("}", "{"))
+                .replaceKeyOfLabel("[", key("[", "]"))
+                .replaceKeyOfLabel("]", key("]", "["))
+                // U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+                // U+2264: "≤" LESS-THAN OR EQUAL TO
+                // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                .replaceKeyOfLabel("<", key("<", ">",
+                        moreKey("\u2039", "\u203A"), moreKey("\u2264", "\u2265"),
+                        moreKey("\u00AB", "\u00BB")))
+                // U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+                // U+2265: "≥" GREATER-THAN EQUAL TO
+                // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                .replaceKeyOfLabel(">", key(">", "<",
+                        moreKey("\u203A", "\u2039"), moreKey("\u2265", "\u2264"),
+                        moreKey("\u00BB", "\u00AB")))
+                .build();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Tamil.java b/tests/src/com/android/inputmethod/keyboard/layout/Tamil.java
new file mode 100644
index 0000000..70385c7
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Tamil.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Tamil keyboard.
+ */
+public final class Tamil extends LayoutBase {
+    private static final String LAYOUT_NAME = "tamil";
+
+    public Tamil(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class TamilCustomizer extends LayoutCustomizer {
+        public TamilCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return TAMIL_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        // U+0BA4: "த" TAMIL LETTER TA
+        // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
+        // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
+        private static final ExpectedKey TAMIL_ALPHABET_KEY = key(
+                "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+0BF9: "௹" TAMIL RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u0BF9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0B94: "ஔ" TAMIL LETTER AU
+                    key("\u0B94", moreKey("1")),
+                    // U+0B90: "ஐ" TAMIL LETTER AI
+                    key("\u0B90", moreKey("2")),
+                    // U+0B86: "ஆ" TAMIL LETTER AA
+                    key("\u0B86", moreKey("3")),
+                    // U+0B88: "ஈ" TAMIL LETTER II
+                    key("\u0B88", moreKey("4")),
+                    // U+0B8A: "ஊ" TAMIL LETTER UU
+                    key("\u0B8A", moreKey("5")),
+                    // U+0BAE: "ம" TAMIL LETTER MA
+                    key("\u0BAE", moreKey("6")),
+                    // U+0BA9: "ன" TAMIL LETTER NNNA
+                    key("\u0BA9", moreKey("7")),
+                    // U+0BA8: "ந" TAMIL LETTER NA
+                    key("\u0BA8", moreKey("8")),
+                    // U+0B99: "ங" TAMIL LETTER NGA
+                    key("\u0B99", moreKey("9")),
+                    // U+0BA3: "ண" TAMIL LETTER NNA
+                    key("\u0BA3", moreKey("0")),
+                    // U+0B9E: "ஞ" TAMIL LETTER NYA
+                    "\u0B9E")
+            .setKeysOfRow(2,
+                    // U+0B93: "ஓ" TAMIL LETTER OO
+                    // U+0BD0: "ௐ" TAMIL OM
+                    key("\u0B93", moreKey("\u0BD0")),
+                    // U+0B8F: "ஏ" TAMIL LETTER EE
+                    "\u0B8F",
+                    // U+0B85: "அ" TAMIL LETTER A
+                    // U+0B83: "ஃ" TAMIL SIGN VISARGA
+                    key("\u0B85", moreKey("\u0B83")),
+                    // U+0B87: "இ" TAMIL LETTER I
+                    // U+0B89: "உ" TAMIL LETTER U
+                    // U+0BB1: "ற" TAMIL LETTER RRA
+                    // U+0BAA: "ப" TAMIL LETTER PA
+                    "\u0B87", "\u0B89", "\u0BB1", "\u0BAA",
+                    // U+0B95: "க" TAMIL LETTER KA
+                    // U+0BB9: "ஹ" TAMIL LETTER HA
+                    // U+0B95/U+0BCD/U+0BB7:
+                    //     "க்ஷ" TAMIL LETTER KA/TAMIL SIGN VIRAMA/TAMIL LETTER SSA
+                    key("\u0B95", joinMoreKeys("\u0BB9", "\u0B95\u0BCD\u0BB7")),
+                    // U+0BA4: "த" TAMIL LETTER TA
+                    "\u0BA4",
+                    // U+0B9A: "ச" TAMIL LETTER CA
+                    // U+0BB8: "ஸ" TAMIL LETTER SA
+                    // U+0BB6/U+0BCD/U+0BB0/U+0BC0:
+                    //     "ஶ்ரீ" TAMIL LETTER SHA/TAMIL SIGN VIRAMA/TAMIL LETTER RA
+                    //          /TAMIL VOWEL SIGN II
+                    key("\u0B9A", joinMoreKeys("\u0BB8", "\u0BB6\u0BCD\u0BB0\u0BC0")),
+                    // U+0B9F: "ட" TAMIL LETTER TTA
+                    "\u0B9F")
+            .setKeysOfRow(3,
+                    // U+0B92: "ஒ" TAMIL LETTER O
+                    // U+0B8E: "எ" TAMIL LETTER E
+                    // U+0BCD: "்" TAMIL SIGN VIRAMA
+                    // U+0BB0: "ர" TAMIL LETTER RA
+                    // U+0BB5: "வ" TAMIL LETTER VA
+                    // U+0BB4: "ழ TAMIL LETTER LLLA
+                    // U+0BB2: "ல" TAMIL LETTER LA
+                    // U+0BB3: "ள" TAMIL LETTER LLA
+                    // U+0BAF: "ய" TAMIL LETTER YA
+                    "\u0B92", "\u0B8E", "\u0BCD", "\u0BB0", "\u0BB5", "\u0BB4", "\u0BB2", "\u0BB3",
+                    "\u0BAF",
+                    // U+0BB7: "ஷ" TAMIL LETTER SSA
+                    // U+0B9C: "ஜ" TAMIL LETTER JA
+                    key("\u0BB7", moreKey("\u0B9C")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java b/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java
new file mode 100644
index 0000000..cc8224c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Telugu keyboard.
+ */
+public final class Telugu extends LayoutBase {
+    private static final String LAYOUT_NAME = "telugu";
+
+    public Telugu(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class TeluguCustomizer extends LayoutCustomizer {
+        public TeluguCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return TELUGU_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        @Override
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+        }
+
+        // U+0C05: "అ" TELUGU LETTER A
+        // U+0C06: "ఆ" TELUGU LETTER AA
+        // U+0C07: "ఇ" TELUGU LETTER I
+        private static final ExpectedKey TELUGU_ALPHABET_KEY = key(
+                "\u0C05\u0C06\u0C07", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0C4C: "ౌ" TELUGU VOWEL SIGN AU
+                    // U+0C14: "ఔ" TELUGU LETTER AU
+                    key("\u0C4C", joinMoreKeys("\u0C14", "1")),
+                    // U+0C48: "ై" TELUGU VOWEL SIGN AI
+                    // U+0C10: "ఐ" TELUGU LETTER AI
+                    key("\u0C48", joinMoreKeys("\u0C10", "2")),
+                    // U+0C3E: "ా" TELUGU VOWEL SIGN AA
+                    // U+0C06: "ఆ" TELUGU LETTER AA
+                    key("\u0C3E", joinMoreKeys("\u0C06", "3")),
+                    // U+0C40: "ీ" TELUGU VOWEL SIGN II
+                    // U+0C08: "ఈ" TELUGU LETTER II
+                    key("\u0C40", joinMoreKeys("\u0C08", "4")),
+                    // U+0C42: "ూ" TELUGU VOWEL SIGN UU
+                    // U+0C0A: "ఊ" TELUGU LETTER UU
+                    key("\u0C42", joinMoreKeys("\u0C0A", "5")),
+                    // U+0C2C: "బ" TELUGU LETTER BA
+                    // U+0C2D: "భ" TELUGU LETTER BHA
+                    key("\u0C2C", joinMoreKeys("\u0C2D", "6")),
+                    // U+0C39: "హ" TELUGU LETTER HA
+                    // U+0C03: "ః" TELUGU SIGN VISARGA
+                    key("\u0C39", joinMoreKeys("\u0C03", "7")),
+                    // U+0C17: "గ" TELUGU LETTER GA
+                    // U+0C18: "ఘ" TELUGU LETTER GHA
+                    key("\u0C17", joinMoreKeys("\u0C18", "8")),
+                    // U+0C26: "ద" TELUGU LETTER DA
+                    // U+0C27: "ధ" TELUGU LETTER DHA
+                    key("\u0C26", joinMoreKeys("\u0C27", "9")),
+                    // U+0C1C: "జ" TELUGU LETTER JA
+                    // U+0C1D: "ఝ" TELUGU LETTER JHA
+                    key("\u0C1C", joinMoreKeys("\u0C1D", "0")),
+                    // U+0C21: "డ" TELUGU LETTER DDA
+                    // U+0C22: "ఢ" TELUGU LETTER DDHA
+                    key("\u0C21", moreKey("\u0C22")))
+            .setKeysOfRow(2,
+                    // U+0C4B: "ో" TELUGU VOWEL SIGN OO
+                    // U+0C13: "ఓ" TELUGU LETTER OO
+                    key("\u0C4B", moreKey("\u0C13")),
+                    // U+0C47: "ే" TELUGU VOWEL SIGN EE
+                    // U+0C0F: "ఏ" TELUGU LETTER EE
+                    key("\u0C47", moreKey("\u0C0F")),
+                    // U+0C4D: "్" TELUGU SIGN VIRAMA
+                    // U+0C05: "అ" TELUGU LETTER A
+                    key("\u0C4D", moreKey("\u0C05")),
+                    // U+0C3F: "ి" TELUGU VOWEL SIGN I
+                    // U+0C07: "ఇ" TELUGU LETTER I
+                    key("\u0C3F", moreKey("\u0C07")),
+                    // U+0C41: "ు" TELUGU VOWEL SIGN U
+                    // U+0C09: "ఉ" TELUGU LETTER U
+                    key("\u0C41", moreKey("\u0C09")),
+                    // U+0C2A: "ప" TELUGU LETTER PA
+                    // U+0C2B: "ఫ" TELUGU LETTER PHA
+                    key("\u0C2A", moreKey("\u0C2B")),
+                    // U+0C30: "ర" TELUGU LETTER RA
+                    // U+0C31: "ఱ" TELUGU LETTER RRA
+                    // U+0C43: "ృ" TELUGU VOWEL SIGN VOCALIC R
+                    key("\u0C30", joinMoreKeys("\u0C31", "\u0C43")),
+                    // U+0C15: "క" TELUGU LETTER KA
+                    // U+0C16: "ఖ" TELUGU LETTER KHA
+                    key("\u0C15", moreKey("\u0C16")),
+                    // U+0C24: "త" TELUGU LETTER TA
+                    // U+0C25: "థ" TELUGU LETTER THA
+                    key("\u0C24", moreKey("\u0C25")),
+                    // U+0C1A: "చ" TELUGU LETTER CA
+                    // U+0C1B: "ఛ" TELUGU LETTER CHA
+                    key("\u0C1A", moreKey("\u0C1B")),
+                    // U+0C1F: "ట" TELUGU LETTER TTA
+                    // U+0C20: "ఠ" TELUGU LETTER TTHA
+                    key("\u0C1F", moreKey("\u0C20")))
+            .setKeysOfRow(3,
+                    // U+0C46: "ె" TELUGU VOWEL SIGN E
+                    // U+0C12: "ఒ" TELUGU LETTER O
+                    key("\u0C46", moreKey("\u0C12")),
+                    // U+0C02: "ం" TELUGU SIGN ANUSVARA
+                    // U+0C0E: "ఎ" TELUGU LETTER E
+                    key("\u0C02", moreKey("\u0C0E")),
+                    // U+0C2E: "మ" TELUGU LETTER MA
+                    "\u0C2E",
+                    // U+0C28: "న" TELUGU LETTER NA
+                    // U+0C23: "ణ" TELUGU LETTER NNA
+                    // U+0C19: "ఙ" TELUGU LETTER NGA
+                    key("\u0C28", joinMoreKeys("\u0C23", "\u0C19")),
+                    // U+0C35: "వ" TELUGU LETTER VA
+                    "\u0C35",
+                    // U+0C32: "ల" TELUGU LETTER LA
+                    // U+0C33: "ళ" TELUGU LETTER LLA
+                    key("\u0C32", moreKey("\u0C33")),
+                    // U+0C38: "స" TELUGU LETTER SA
+                    // U+0C36: "శ" TELUGU LETTER SHA
+                    key("\u0C38", moreKey("\u0C36")),
+                    // U+0C0B: "ఋ" TELUGU LETTER VOCALIC R
+                    // U+0C4D/U+0C30: "్ర" TELUGU SIGN VIRAMA/TELUGU LETTER RA
+                    key("\u0C0B", moreKey("\u0C4D\u0C30")),
+                    // U+0C37: "ష" TELUGU LETTER SSA
+                    // U+0C15/U+0C4D/U+0C37:
+                    //     "క్ష" TELUGU LETTER KA/TELUGU SIGN VIRAMA/TELUGU LETTER SSA
+                    key("\u0C37", moreKey("\u0C15\u0C4D\u0C37")),
+                    // U+0C2F: "య" TELUGU LETTER YA
+                    // U+0C1C/U+0C4D/U+0C1E:
+                    //     "జ్ఞ" TELUGU LETTER JA/TELUGU SIGN VIRAMA/TELUGU LETTER NYA
+                    key("\u0C2F", moreKey("\u0C1C\u0C4D\u0C1E")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
new file mode 100644
index 0000000..af4abea
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Thai alphabet keyboard.
+ */
+public final class Thai extends LayoutBase {
+    private static final String LAYOUT_NAME = "thai";
+
+    public Thai(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class ThaiCustomizer extends LayoutCustomizer {
+        public ThaiCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return THAI_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_BAHT; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
+
+        // U+0E01: "ก" THAI CHARACTER KO KAI
+        // U+0E02: "ข" THAI CHARACTER KHO KHAI
+        // U+0E04: "ค" THAI CHARACTER KHO KHWAI
+        private static final ExpectedKey THAI_ALPHABET_KEY = key(
+                "\u0E01\u0E02\u0E04", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
+        private static final ExpectedKey CURRENCY_BAHT = key("\u0E3F",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        if (isPhone) {
+            // U+0E03: "ฃ" THAI CHARACTER KHO KHUAT
+            builder.addKeysOnTheRightOfRow(3, "\u0E03");
+        } else {
+            // U+0E03: "ฃ" THAI CHARACTER KHO KHUAT
+            builder.addKeysOnTheRightOfRow(2, "\u0E03")
+                    .addKeysOnTheRightOfRow(4, (Object[])EXCLAMATION_AND_QUESTION_MARKS);
+        }
+        return builder.build();
+    }
+
+    @Override
+    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+            final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
+                ALPHABET_SHIFTED_COMMON);
+        if (isPhone) {
+            // U+0E05: "ฅ" THAI CHARACTER KHO KHON
+            builder.addKeysOnTheRightOfRow(3, "\u0E05");
+        } else {
+            // U+0E05: "ฅ" THAI CHARACTER KHO KHON
+            builder.addKeysOnTheRightOfRow(2, "\u0E05");
+        }
+        return builder.build();
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        builder.setKeysOfRow(5, (Object[])customizer.getSpaceKeys(isPhone));
+        builder.addKeysOnTheLeftOfRow(5, (Object[])customizer.getKeysLeftToSpacebar(isPhone));
+        builder.addKeysOnTheRightOfRow(5, (Object[])customizer.getKeysRightToSpacebar(isPhone));
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, (Object[])customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, (Object[])customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0E45: "ๅ" THAI CHARACTER LAKKHANGYAO
+                    "\u0E45",
+                    // U+0E51: "๑" THAI DIGIT ONE
+                    key("/", joinMoreKeys("1", "\u0E51")),
+                    // U+0E52: "๒" THAI DIGIT TWO
+                    key("_", joinMoreKeys("2", "\u0E52")),
+                    // U+0E20: "ภ" THAI CHARACTER PHO SAMPHAO
+                    // U+0E53: "๓" THAI DIGIT THREE
+                    key("\u0E20", joinMoreKeys("3", "\u0E53")),
+                    // U+0E16: "ถ" THAI CHARACTER THO THUNG
+                    // U+0E54: "๔" THAI DIGIT FOUR
+                    key("\u0E16", joinMoreKeys("4", "\u0E54")),
+                    // U+0E38: " ุ" THAI CHARACTER SARA U
+                    key(" \u0E38", "\u0E38"),
+                    // U+0E36: " ึ" THAI CHARACTER SARA UE
+                    key(" \u0E36", "\u0E36"),
+                    // U+0E04: "ค" THAI CHARACTER KHO KHWAI
+                    // U+0E55: "๕" THAI DIGIT FIVE
+                    key("\u0E04", joinMoreKeys("5", "\u0E55")),
+                    // U+0E15: "ต" THAI CHARACTER TO TAO
+                    // U+0E56: "๖" THAI DIGIT SIX
+                    key("\u0E15", joinMoreKeys("6", "\u0E56")),
+                    // U+0E08: "จ" THAI CHARACTER CHO CHAN
+                    // U+0E57: "๗" THAI DIGIT SEVEN
+                    key("\u0E08", joinMoreKeys("7", "\u0E57")),
+                    // U+0E02: "ข" THAI CHARACTER KHO KHAI
+                    // U+0E58: "๘" THAI DIGIT EIGHT
+                    key("\u0E02", joinMoreKeys("8", "\u0E58")),
+                    // U+0E0A: "ช" THAI CHARACTER CHO CHANG
+                    // U+0E59: "๙" THAI DIGIT NINE
+                    key("\u0E0A", joinMoreKeys("9", "\u0E59")))
+            .setKeysOfRow(2,
+                    // U+0E46: "ๆ" THAI CHARACTER MAIYAMOK
+                    // U+0E50: "๐" THAI DIGIT ZERO
+                    key("\u0E46", joinMoreKeys("0", "\u0E50")),
+                    // U+0E44: "ไ" THAI CHARACTER SARA AI MAIMALAI
+                    // U+0E33: "ำ" THAI CHARACTER SARA AM
+                    // U+0E1E: "พ" THAI CHARACTER PHO PHAN
+                    // U+0E30: "ะ" THAI CHARACTER SARA A
+                    "\u0E44", "\u0E33", "\u0E1E", "\u0E30",
+                    // U+0E31: " ั" THAI CHARACTER MAI HAN-AKAT
+                    key(" \u0E31", "\u0E31"),
+                    // U+0E35: " ี" HAI CHARACTER SARA II
+                    key(" \u0E35", "\u0E35"),
+                    // U+0E23: "ร" THAI CHARACTER RO RUA
+                    // U+0E19: "น" THAI CHARACTER NO NU
+                    // U+0E22: "ย" THAI CHARACTER YO YAK
+                    // U+0E1A: "บ" THAI CHARACTER BO BAIMAI
+                    // U+0E25: "ล" THAI CHARACTER LO LING
+                    "\u0E23", "\u0E19", "\u0E22", "\u0E1A", "\u0E25")
+            .setKeysOfRow(3,
+                    // U+0E1F: "ฟ" THAI CHARACTER FO FAN
+                    // U+0E2B: "ห" THAI CHARACTER HO HIP
+                    // U+0E01: "ก" THAI CHARACTER KO KAI
+                    // U+0E14: "ด" THAI CHARACTER DO DEK
+                    // U+0E40: "เ" THAI CHARACTER SARA E
+                    "\u0E1F", "\u0E2B", "\u0E01", "\u0E14", "\u0E40",
+                    // U+0E49: " ้" THAI CHARACTER MAI THO
+                    key(" \u0E49", "\u0E49"),
+                    // U+0E48: " ่" THAI CHARACTER MAI EK
+                    key(" \u0E48", "\u0E48"),
+                    // U+0E32: "า" THAI CHARACTER SARA AA
+                    // U+0E2A: "ส" THAI CHARACTER SO SUA
+                    // U+0E27: "ว" THAI CHARACTER WO WAEN
+                    // U+0E07: "ง" THAI CHARACTER NGO NGU
+                    "\u0E32", "\u0E2A", "\u0E27", "\u0E07")
+            .setKeysOfRow(4,
+                    // U+0E1C: "ผ" THAI CHARACTER PHO PHUNG
+                    // U+0E1B: "ป" THAI CHARACTER PO PLA
+                    // U+0E41: "แ" THAI CHARACTER SARA AE
+                    // U+0E2D: "อ" THAI CHARACTER O ANG
+                    "\u0E1C", "\u0E1B", "\u0E41", "\u0E2D",
+                    // U+0E34: " ิ" THAI CHARACTER SARA I
+                    key(" \u0E34", "\u0E34"),
+                    // U+0E37: " ื" THAI CHARACTER SARA UEE
+                    key(" \u0E37", "\u0E37"),
+                    // U+0E17: "ท" THAI CHARACTER THO THAHAN
+                    // U+0E21: "ม" THAI CHARACTER MO MA
+                    // U+0E43: "ใ" THAI CHARACTER SARA AI MAIMUAN
+                    // U+0E1D: "ฝ" THAI CHARACTER FO FA
+                    "\u0E17", "\u0E21", "\u0E43", "\u0E1D")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0E51: "๑" THAI DIGIT ONE
+                    // U+0E52: "๒" THAI DIGIT TWO
+                    // U+0E53: "๓" THAI DIGIT THREE
+                    // U+0E54: "๔" THAI DIGIT FOUR
+                    // U+0E39: " ู" THAI CHARACTER SARA UU
+                    "+", "\u0E51", "\u0E52", "\u0E53", "\u0E54",
+                    key(" \u0E39", "\u0E39"),
+                    // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
+                    // U+0E55: "๕" THAI DIGIT FIVE
+                    // U+0E56: "๖" THAI DIGIT SIX
+                    // U+0E57: "๗" THAI DIGIT SEVEN
+                    // U+0E58: "๘" THAI DIGIT EIGHT
+                    // U+0E59: "๙" THAI DIGIT NINE
+                    "\u0E3F", "\u0E55", "\u0E56", "\u0E57", "\u0E58", "\u0E59")
+            .setKeysOfRow(2,
+                    // U+0E50: "๐" THAI DIGIT ZERO
+                    // U+0E0E: "ฎ" THAI CHARACTER DO CHADA
+                    // U+0E11: "ฑ" THAI CHARACTER THO NANGMONTHO
+                    // U+0E18: "ธ" THAI CHARACTER THO THONG
+                    "\u0E50", "\"", "\u0E0E", "\u0E11", "\u0E18",
+                    // U+0E4D: " ํ" THAI CHARACTER THANTHAKHAT
+                    key(" \u0E4D", "\u0E4D"),
+                    // U+0E4A: " ๊" THAI CHARACTER MAI TRI
+                    key(" \u0E4A", "\u0E4A"),
+                    // U+0E13: "ณ" THAI CHARACTER NO NEN
+                    // U+0E2F: "ฯ" THAI CHARACTER PAIYANNOI
+                    // U+0E0D: "ญ" THAI CHARACTER YO YING
+                    // U+0E10: "ฐ" THAI CHARACTER THO THAN
+                    "\u0E13", "\u0E2F", "\u0E0D", "\u0E10", ",")
+            .setKeysOfRow(3,
+                    // U+0E24: "ฤ" THAI CHARACTER RU
+                    // U+0E06: "ฆ" THAI CHARACTER KHO RAKHANG
+                    // U+0E0F: "ฏ" THAI CHARACTER TO PATAK
+                    // U+0E42: "โ" THAI CHARACTER SARA O
+                    // U+0E0C: "ฌ" THAI CHARACTER CHO CHOE
+                    "\u0E24", "\u0E06", "\u0E0F", "\u0E42", "\u0E0C",
+                    // U+0E47: " ็" THAI CHARACTER MAITAIKHU
+                    key(" \u0E47", "\u0E47"),
+                    // U+0E4B: " ๋" THAI CHARACTER MAI CHATTAWA
+                    key(" \u0E4B", "\u0E4B"),
+                    // U+0E29: "ษ" THAI CHARACTER SO RUSI
+                    // U+0E28: "ศ" THAI CHARACTER SO SALA
+                    // U+0E0B: "ซ" THAI CHARACTER SO SO
+                    "\u0E29", "\u0E28", "\u0E0B", ".")
+            .setKeysOfRow(4,
+                    // U+0E09: "ฉ" THAI CHARACTER CHO CHING
+                    // U+0E2E: "ฮ" THAI CHARACTER HO NOKHUK
+                    "(", ")", "\u0E09", "\u0E2E",
+                    // U+0E3A: " ฺ" THAI CHARACTER PHINTHU
+                    key(" \u0E3A", "\u0E3A"),
+                    // U+0E4C: " ์" THAI CHARACTER THANTHAKHAT
+                    key(" \u0E4C", "\u0E4C"),
+                    // U+0E12: "ฒ" THAI CHARACTER THO PHUTHAO
+                    // U+0E2C: "ฬ" THAI CHARACTER LO CHULA
+                    // U+0E26: "ฦ" THAI CHARACTER LU
+                    "?", "\u0E12", "\u0E2C", "\u0E26")
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java
new file mode 100644
index 0000000..6e72104
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractKeyboardBuilder.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import java.util.Arrays;
+
+/**
+ * This class builds a keyboard that is a two dimensional array of elements <code>E</code>.
+ *
+ * A keyboard consists of an array of rows, and a row consists of an array of elements. Each row
+ * may have different number of elements. A element of a keyboard can be specified by a row number
+ * and a column number, both numbers starts from 1.
+ *
+ * @param <E> the type of a keyboard element. A keyboard element must be an immutable object.
+ */
+abstract class AbstractKeyboardBuilder<E> {
+    // A building array of rows.
+    private E[][] mRows;
+
+    // Returns an instance of default element.
+    abstract E defaultElement();
+    // Returns an <code>E</code> array instance of the <code>size</code>.
+    abstract E[] newArray(final int size);
+    // Returns an <code>E[]</code> array instance of the <code>size</code>.
+    abstract E[][] newArrayOfArray(final int size);
+
+    /**
+     * Construct an empty builder.
+     */
+    AbstractKeyboardBuilder() {
+        mRows = newArrayOfArray(0);
+    }
+
+    /**
+     * Construct a builder from template keyboard. This builder has the same dimensions and
+     * elements of <code>rows</rows>.
+     * @param rows the template keyboard rows. The elements of the <code>rows</code> will be
+     *        shared with this builder. Therefore a element must be an immutable object.
+     */
+    AbstractKeyboardBuilder(final E[][] rows) {
+        mRows = newArrayOfArray(rows.length);
+        for (int rowIndex = 0; rowIndex < rows.length; rowIndex++) {
+            final E[] row = rows[rowIndex];
+            mRows[rowIndex] = Arrays.copyOf(row, row.length);
+        }
+    }
+
+    /**
+     * Return current constructing keyboard.
+     * @return the array of the array of the element being constructed.
+     */
+    E[][] build() {
+        return mRows;
+    }
+
+    /**
+     * Return the number of rows.
+     * @return the number of rows being constructed.
+     */
+    int getRowCount() {
+        return mRows.length;
+    }
+
+    /**
+     * Get the current contents of the specified row.
+     * @param row the row number to get the contents.
+     * @return the array of elements at row number <code>row</code>.
+     * @throws RuntimeException if <code>row</code> is illegal.
+     */
+    E[] getRowAt(final int row) {
+        final int rowIndex = row - 1;
+        if (rowIndex < 0 || rowIndex >= mRows.length) {
+            throw new RuntimeException("Illegal row number: " + row);
+        }
+        return mRows[rowIndex];
+    }
+
+    /**
+     * Set an array of elements to the specified row.
+     * @param row the row number to set <code>elements</code>.
+     * @param elements the array of elements to set at row number <code>row</code>.
+     * @throws RuntimeException if <code>row</code> is illegal.
+     */
+    void setRowAt(final int row, final E[] elements) {
+        final int rowIndex = row - 1;
+        if (rowIndex < 0) {
+            throw new RuntimeException("Illegal row number: " + row);
+        }
+        final E[][] newRows = (rowIndex < mRows.length) ? mRows
+                : Arrays.copyOf(mRows, rowIndex + 1);
+        newRows[rowIndex] = elements;
+        mRows = newRows;
+    }
+
+    /**
+     * Set or insert an element at specified position.
+     * @param row the row number to set or insert the <code>element</code>.
+     * @param column the column number to set or insert the <code>element</code>.
+     * @param element the element to set or insert at <code>row,column</code>.
+     * @param insert if true, the <code>element</code> is inserted at <code>row,column</code>.
+     *        Otherwise the <code>element</code> replace the element at <code>row,column</code>.
+     * @throws RuntimeException if <code>row</code> or <code>column</code> is illegal.
+     */
+    void setElementAt(final int row, final int column, final E element, final boolean insert) {
+        final E[] elements = getRowAt(row);
+        final int columnIndex = column - 1;
+        if (columnIndex < 0) {
+            throw new RuntimeException("Illegal column number: " + column);
+        }
+        if (insert) {
+            if (columnIndex >= elements.length + 1) {
+                throw new RuntimeException("Illegal column number: " + column);
+            }
+            final E[] newElements = Arrays.copyOf(elements, elements.length + 1);
+            // Shift the remaining elements.
+            System.arraycopy(newElements, columnIndex, newElements, columnIndex + 1,
+                    elements.length - columnIndex);
+            // Insert the element at <code>row,column</code>.
+            newElements[columnIndex] = element;
+            // Replace the current row with one.
+            setRowAt(row, newElements);
+            return;
+        }
+        final E[] newElements  = (columnIndex < elements.length) ? elements
+                : Arrays.copyOf(elements, columnIndex + 1);
+        newElements[columnIndex] = element;
+        setRowAt(row, newElements);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
new file mode 100644
index 0000000..9e0039d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/AbstractLayoutBase.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey.ExpectedAdditionalMoreKey;
+import com.android.inputmethod.latin.Constants;
+
+/**
+ * Base class to create an expected keyboard for unit test.
+ */
+public abstract class AbstractLayoutBase {
+    // Those helper methods have a lower case name to be readable when defining expected keyboard
+    // layouts.
+
+    // Helper method to create an {@link ExpectedKey} object that has the label.
+    public static ExpectedKey key(final String label, final ExpectedKey ... moreKeys) {
+        return ExpectedKey.newInstance(label, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has the label and the output text.
+    public static ExpectedKey key(final String label, final String outputText,
+            final ExpectedKey ... moreKeys) {
+        return ExpectedKey.newInstance(label, outputText, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has the label and the output code.
+    public static ExpectedKey key(final String label, final int code,
+            final ExpectedKey ... moreKeys) {
+        return ExpectedKey.newInstance(label, code, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has the icon and the output text.
+    public static ExpectedKey key(final int iconId, final String outputText,
+            final ExpectedKey ... moreKeys) {
+        return ExpectedKey.newInstance(iconId, outputText, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has the icon and the output code.
+    public static ExpectedKey key(final int iconId, final int code,
+            final ExpectedKey ... moreKeys) {
+        return ExpectedKey.newInstance(iconId, code, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has new "more keys".
+    public static ExpectedKey key(final ExpectedKey key, final ExpectedKey ... moreKeys) {
+        return ExpectedKey.newInstance(key.getVisual(), key.getOutput(), moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedAdditionalMoreKey} object for an
+    // "additional more key" that has the label.
+    // The additional more keys can be defined independently from other more keys. The position of
+    // the additional more keys in the long press popup keyboard can be controlled by specifying
+    // special marker "%" in the usual more keys definitions.
+    public static ExpectedAdditionalMoreKey additionalMoreKey(final String label) {
+        return ExpectedAdditionalMoreKey.newInstance(label);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object for a "more key" that has the label.
+    public static ExpectedKey moreKey(final String label) {
+        return ExpectedKey.newInstance(label);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object for a "more key" that has the label
+    // and the output text.
+    public static ExpectedKey moreKey(final String label, final String outputText) {
+        return ExpectedKey.newInstance(label, outputText);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object for a "more key" that has the label
+    // and the output code.
+    public static ExpectedKey moreKey(final String label, final int code) {
+        return ExpectedKey.newInstance(label, code);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object for a "more key" that has the icon
+    // and the output text.
+    public static ExpectedKey moreKey(final int iconId, final String outputText) {
+        return ExpectedKey.newInstance(iconId, outputText);
+    }
+
+    // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
+    // {@link ExpectedKey} array, and {@link String}.
+    public static ExpectedKey[] joinMoreKeys(final Object ... moreKeys) {
+        return joinKeys(moreKeys);
+    }
+
+    // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
+    // {@link ExpectedKey} array, and {@link String}.
+    public static ExpectedKey[] joinKeys(final Object ... keys) {
+        return ExpectedKeyboardBuilder.joinKeys(keys);
+    }
+
+    // Icon ids.
+    private static final int ICON_DELETE = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_DELETE_KEY);
+    private static final int ICON_SPACE = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_SPACE_KEY);
+    private static final int ICON_TAB = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_TAB_KEY);
+    private static final int ICON_SHORTCUT = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_SHORTCUT_KEY);
+    private static final int ICON_SETTINGS = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_SETTINGS_KEY);
+    private static final int ICON_LANGUAGE_SWITCH = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_LANGUAGE_SWITCH_KEY);
+    private static final int ICON_ENTER = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_ENTER_KEY);
+    private static final int ICON_EMOJI = KeyboardIconsSet.getIconId(
+            KeyboardIconsSet.NAME_EMOJI_KEY);
+
+    // Functional keys.
+    public static final ExpectedKey DELETE_KEY = key(ICON_DELETE, Constants.CODE_DELETE);
+    public static final ExpectedKey TAB_KEY = key(ICON_TAB, Constants.CODE_TAB);
+    public static final ExpectedKey SHORTCUT_KEY = key(ICON_SHORTCUT, Constants.CODE_SHORTCUT);
+    public static final ExpectedKey SETTINGS_KEY = key(ICON_SETTINGS, Constants.CODE_SETTINGS);
+    public static final ExpectedKey LANGUAGE_SWITCH_KEY = key(
+            ICON_LANGUAGE_SWITCH, Constants.CODE_LANGUAGE_SWITCH);
+    public static final ExpectedKey ENTER_KEY = key(ICON_ENTER, Constants.CODE_ENTER);
+    public static final ExpectedKey EMOJI_KEY = key(ICON_EMOJI, Constants.CODE_EMOJI);
+    public static final ExpectedKey SPACE_KEY = key(ICON_SPACE, Constants.CODE_SPACE);
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java
new file mode 100644
index 0000000..5614918
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ActualKeyboardBuilder.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.keyboard.internal.MoreKeySpec;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class builds an actual keyboard for unit test.
+ *
+ * An actual keyboard is an array of rows, and a row consists of an array of {@link Key}s.
+ * Each row may have different number of {@link Key}s.
+ */
+public final class ActualKeyboardBuilder extends AbstractKeyboardBuilder<Key> {
+    private static ArrayList<Key> filterOutSpacer(final List<Key> keys) {
+        final ArrayList<Key> filteredKeys = new ArrayList<>();
+        for (final Key key : keys) {
+            if (key.isSpacer()) {
+                continue;
+            }
+            filteredKeys.add(key);
+        }
+        return filteredKeys;
+    }
+
+    /**
+     * Create the keyboard that consists of the array of rows of the actual keyboard's keys.
+     * @param sortedKeys keys list of the actual keyboard that is sorted from top-left to
+     * bottom-right.
+     * @return the actual keyboard grouped with rows.
+     */
+    public static Key[][] buildKeyboard(final List<Key> sortedKeys) {
+        // Filter out spacer to prepare to create rows.
+        final ArrayList<Key> filteredSortedKeys = filterOutSpacer(sortedKeys);
+
+        // Grouping keys into rows.
+        final ArrayList<ArrayList<Key>> rows = new ArrayList<>();
+        ArrayList<Key> elements = new ArrayList<>();
+        int lastY = filteredSortedKeys.get(0).getY();
+        for (final Key key : filteredSortedKeys) {
+            if (lastY != key.getY()) {
+                // A new row is starting.
+                lastY = key.getY();
+                rows.add(elements);
+                elements = new ArrayList<>();
+            }
+            elements.add(key);
+        }
+        rows.add(elements); // Add the last row.
+
+        // Calculate each dimension of rows and create a builder.
+        final int[] dimensions = new int[rows.size()];
+        for (int rowIndex = 0; rowIndex < dimensions.length; rowIndex++) {
+            dimensions[rowIndex] = rows.get(rowIndex).size();
+        }
+        final ActualKeyboardBuilder builder = new ActualKeyboardBuilder();
+
+        for (int rowIndex = 0; rowIndex < rows.size(); rowIndex++) {
+            final int row = rowIndex + 1;
+            final ArrayList<Key> rowKeys = rows.get(rowIndex);
+            builder.setRowAt(row, rowKeys.toArray(new Key[rowKeys.size()]));
+        }
+        return builder.build();
+    }
+
+    @Override
+    Key defaultElement() { return null; }
+
+    @Override
+    Key[] newArray(final int size) { return new Key[size]; }
+
+    @Override
+    Key[][] newArrayOfArray(final int size) { return new Key[size][]; }
+
+    // Helper class to create concise representation from the key specification.
+    static class MoreKeySpecStringizer extends StringUtils.Stringizer<MoreKeySpec> {
+        static final MoreKeySpecStringizer STRINGIZER = new MoreKeySpecStringizer();
+
+        @Override
+        public String stringize(final MoreKeySpec spec) {
+            return toString(spec.mLabel, spec.mIconId, spec.mOutputText, spec.mCode);
+        }
+
+        static String toString(final String label, final int iconId, final String outputText,
+                final int code) {
+            final String visual = (iconId != KeyboardIconsSet.ICON_UNDEFINED)
+                    ? KeyboardIconsSet.getIconName(iconId) : label;
+            final String output;
+            if (code == Constants.CODE_OUTPUT_TEXT) {
+                output = outputText;
+            } else if (code < Constants.CODE_SPACE) {
+                output = Constants.printableCode(code);
+            } else {
+                output = StringUtils.newSingleCodePointString(code);
+            }
+            if (visual.equals(output)) {
+                return visual;
+            }
+            return visual + "|" + output;
+        }
+    }
+
+    // Helper class to create concise representation from the key.
+    static class KeyStringizer extends StringUtils.Stringizer<Key> {
+        static final KeyStringizer STRINGIZER = new KeyStringizer();
+
+        @Override
+        public String stringize(final Key key) {
+            if (key == null) {
+                return "NULL";
+            }
+            if (key.isSpacer()) {
+                return "SPACER";
+            }
+            final StringBuilder sb = new StringBuilder();
+            sb.append(MoreKeySpecStringizer.toString(
+                    key.getLabel(), key.getIconId(), key.getOutputText(), key.getCode()));
+            final MoreKeySpec[] moreKeys = key.getMoreKeys();
+            if (moreKeys == null) {
+                return sb.toString();
+            }
+            sb.append("^");
+            sb.append(MoreKeySpecStringizer.STRINGIZER.join(moreKeys));
+            return sb.toString();
+        }
+    }
+
+    /**
+     * Convert the key to human readable string.
+     * @param key the key to be converted to string.
+     * @return the human readable representation of <code>key</code>.
+     */
+    public static String toString(final Key key) {
+        return KeyStringizer.STRINGIZER.stringize(key);
+    }
+
+    /**
+     * Convert the keyboard row to human readable string.
+     * @param keys the keyboard row to be converted to string.
+     * @return the human readable representation of <code>keys</code>.
+     */
+    public static String toString(final Key[] keys) {
+        return KeyStringizer.STRINGIZER.join(keys);
+    }
+
+    // Helper class to create concise representation from the array of the key.
+    static class KeyArrayStringizer extends StringUtils.Stringizer<Key[]> {
+        static final KeyArrayStringizer STRINGIZER = new KeyArrayStringizer();
+
+        @Override
+        public String stringize(final Key[] keyArray) {
+            return KeyStringizer.STRINGIZER.join(keyArray);
+        }
+    }
+
+    /**
+     * Convert the keyboard to human readable string.
+     * @param rows the keyboard to be converted to string.
+     * @return the human readable representation of <code>rows</code>.
+     */
+    public static String toString(final Key[][] rows) {
+        return KeyArrayStringizer.STRINGIZER.join(rows, "\n" /* delimiter */);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKey.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKey.java
new file mode 100644
index 0000000..0e1c71c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKey.java
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.internal.MoreKeySpec;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Locale;
+
+/**
+ * This class represents an expected key.
+ */
+public class ExpectedKey {
+    static ExpectedKey EMPTY_KEY = newInstance("");
+
+    // A key that has a string label and may have "more keys".
+    static ExpectedKey newInstance(final String label, final ExpectedKey... moreKeys) {
+        return newInstance(label, label, moreKeys);
+    }
+
+    // A key that has a string label and a different output text and may have "more keys".
+    static ExpectedKey newInstance(final String label, final String outputText,
+            final ExpectedKey... moreKeys) {
+        return newInstance(ExpectedKeyVisual.newInstance(label),
+                ExpectedKeyOutput.newInstance(outputText), moreKeys);
+    }
+
+    // A key that has a string label and a code point output and may have "more keys".
+    static ExpectedKey newInstance(final String label, final int code,
+            final ExpectedKey... moreKeys) {
+        return newInstance(ExpectedKeyVisual.newInstance(label),
+                ExpectedKeyOutput.newInstance(code), moreKeys);
+    }
+
+    // A key that has an icon and an output text and may have "more keys".
+    static ExpectedKey newInstance(final int iconId, final String outputText,
+            final ExpectedKey... moreKeys) {
+        return newInstance(ExpectedKeyVisual.newInstance(iconId),
+                ExpectedKeyOutput.newInstance(outputText), moreKeys);
+    }
+
+    // A key that has an icon and a code point output and may have "more keys".
+    static ExpectedKey newInstance(final int iconId, final int code,
+            final ExpectedKey... moreKeys) {
+        return newInstance(ExpectedKeyVisual.newInstance(iconId),
+                ExpectedKeyOutput.newInstance(code), moreKeys);
+    }
+
+    static ExpectedKey newInstance(final ExpectedKeyVisual visual, final ExpectedKeyOutput output,
+            final ExpectedKey... moreKeys) {
+        if (moreKeys.length == 0) {
+            return new ExpectedKey(visual, output);
+        }
+        // The more keys are the extra keys that the main keyboard key may have in its long press
+        // popup keyboard.
+        // The additional more keys can be defined independently from other more keys.
+        // The position of the additional more keys in the long press popup keyboard can be
+        // controlled by specifying special marker "%" in the usual more keys definitions.
+        final ArrayList<ExpectedKey> moreKeysList = new ArrayList<>();
+        final ArrayList<ExpectedAdditionalMoreKey> additionalMoreKeys = new ArrayList<>();
+        int firstAdditionalMoreKeyIndex = -1;
+        for (int index = 0; index < moreKeys.length; index++) {
+            final ExpectedKey moreKey = moreKeys[index];
+            if (moreKey instanceof ExpectedAdditionalMoreKey) {
+                additionalMoreKeys.add((ExpectedAdditionalMoreKey) moreKey);
+                if (firstAdditionalMoreKeyIndex < 0) {
+                    firstAdditionalMoreKeyIndex = index;
+                }
+            } else {
+                moreKeysList.add(moreKey);
+            }
+        }
+        if (additionalMoreKeys.isEmpty()) {
+            return new ExpectedKeyWithMoreKeys(visual, output, moreKeys);
+        }
+        final ExpectedKey[] moreKeysArray = moreKeysList.toArray(
+                new ExpectedKey[moreKeysList.size()]);
+        final ExpectedAdditionalMoreKey[] additionalMoreKeysArray = additionalMoreKeys.toArray(
+                new ExpectedAdditionalMoreKey[additionalMoreKeys.size()]);
+        return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                visual, output, moreKeysArray, firstAdditionalMoreKeyIndex,
+                additionalMoreKeysArray);
+    }
+
+    private static final ExpectedKey[] EMPTY_KEYS = new ExpectedKey[0];
+
+    // The expected visual outlook of this key.
+    private final ExpectedKeyVisual mVisual;
+    // The expected output of this key.
+    private final ExpectedKeyOutput mOutput;
+
+    public final ExpectedKeyVisual getVisual() {
+        return mVisual;
+    }
+
+    public final ExpectedKeyOutput getOutput() {
+        return mOutput;
+    }
+
+    public ExpectedKey[] getMoreKeys() {
+        // This key has no "more keys".
+        return EMPTY_KEYS;
+    }
+
+    public ExpectedKey setMoreKeys(final ExpectedKey... moreKeys) {
+        return newInstance(mVisual, mOutput, moreKeys);
+    }
+
+    public ExpectedKey setAdditionalMoreKeys(
+            final ExpectedAdditionalMoreKey... additionalMoreKeys) {
+        if (additionalMoreKeys.length == 0) {
+            return this;
+        }
+        return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                mVisual, mOutput, EMPTY_KEYS, 0 /* additionalMoreKeysIndex */, additionalMoreKeys);
+    }
+
+    public ExpectedKey setAdditionalMoreKeysIndex(final int additionalMoreKeysIndex) {
+        if (additionalMoreKeysIndex == 0) {
+            return this;
+        }
+        return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                mVisual, mOutput, EMPTY_KEYS, additionalMoreKeysIndex);
+    }
+
+    protected ExpectedKey(final ExpectedKeyVisual visual, final ExpectedKeyOutput output) {
+        mVisual = visual;
+        mOutput = output;
+    }
+
+    public ExpectedKey toUpperCase(Locale locale) {
+        return newInstance(mVisual.toUpperCase(locale), mOutput.toUpperCase(locale));
+    }
+
+    public boolean equalsTo(final Key key) {
+        // This key has no "more keys".
+        return mVisual.equalsTo(key) && mOutput.equalsTo(key) && key.getMoreKeys() == null;
+    }
+
+    public boolean equalsTo(final MoreKeySpec moreKeySpec) {
+        return mVisual.equalsTo(moreKeySpec) && mOutput.equalsTo(moreKeySpec);
+    }
+
+    @Override
+    public boolean equals(final Object object) {
+        if (object instanceof ExpectedKey) {
+            final ExpectedKey key = (ExpectedKey) object;
+            return mVisual.equalsTo(key.mVisual) && mOutput.equalsTo(key.mOutput)
+                    && Arrays.equals(getMoreKeys(), key.getMoreKeys());
+        }
+        return false;
+    }
+
+    private static int hashCode(final Object... objects) {
+        return Arrays.hashCode(objects);
+    }
+
+    @Override
+    public int hashCode() {
+        return hashCode(mVisual, mOutput, getMoreKeys());
+    }
+
+    @Override
+    public String toString() {
+        if (mVisual.equalsTo(mOutput)) {
+            return mVisual.toString();
+        }
+        return mVisual + "|" + mOutput;
+    }
+
+    /**
+     * This class represents an expected "additional more key".
+     *
+     * The additional more keys can be defined independently from other more keys. The position of
+     * the additional more keys in the long press popup keyboard can be controlled by specifying
+     * special marker "%" in the usual more keys definitions.
+     */
+    public static class ExpectedAdditionalMoreKey extends ExpectedKey {
+        public static ExpectedAdditionalMoreKey newInstance(final String label) {
+            return new ExpectedAdditionalMoreKey(ExpectedKeyVisual.newInstance(label),
+                    ExpectedKeyOutput.newInstance(label));
+        }
+
+        public static ExpectedAdditionalMoreKey newInstance(final ExpectedKey key) {
+            return new ExpectedAdditionalMoreKey(key.getVisual(), key.getOutput());
+        }
+
+        ExpectedAdditionalMoreKey(final ExpectedKeyVisual visual, final ExpectedKeyOutput output) {
+            super(visual, output);
+        }
+
+        @Override
+        public ExpectedAdditionalMoreKey toUpperCase(final Locale locale) {
+            final ExpectedKey upperCaseKey = super.toUpperCase(locale);
+            return new ExpectedAdditionalMoreKey(
+                    upperCaseKey.getVisual(), upperCaseKey.getOutput());
+        }
+    }
+
+    /**
+     * This class represents an expected key that has "more keys".
+     */
+    private static class ExpectedKeyWithMoreKeys extends ExpectedKey {
+        private final ExpectedKey[] mMoreKeys;
+
+        ExpectedKeyWithMoreKeys(final ExpectedKeyVisual visual, final ExpectedKeyOutput output,
+                final ExpectedKey... moreKeys) {
+            super(visual, output);
+            mMoreKeys = moreKeys;
+        }
+
+        @Override
+        public ExpectedKey toUpperCase(final Locale locale) {
+            final ExpectedKey[] upperCaseMoreKeys = new ExpectedKey[mMoreKeys.length];
+            for (int i = 0; i < mMoreKeys.length; i++) {
+                upperCaseMoreKeys[i] = mMoreKeys[i].toUpperCase(locale);
+            }
+            return newInstance(getVisual().toUpperCase(locale), getOutput().toUpperCase(locale),
+                    upperCaseMoreKeys);
+        }
+
+        @Override
+        public ExpectedKey[] getMoreKeys() {
+            return mMoreKeys;
+        }
+
+        @Override
+        public ExpectedKey setAdditionalMoreKeys(
+                final ExpectedAdditionalMoreKey... additionalMoreKeys) {
+            if (additionalMoreKeys.length == 0) {
+                return this;
+            }
+            return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                    getVisual(), getOutput(), mMoreKeys, 0 /* additionalMoreKeysIndex */,
+                    additionalMoreKeys);
+        }
+
+        @Override
+        public ExpectedKey setAdditionalMoreKeysIndex(final int additionalMoreKeysIndex) {
+            if (additionalMoreKeysIndex == 0) {
+                return this;
+            }
+            return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                    getVisual(), getOutput(), mMoreKeys, additionalMoreKeysIndex);
+        }
+
+        @Override
+        public boolean equalsTo(final Key key) {
+            if (getVisual().equalsTo(key) && getOutput().equalsTo(key)) {
+                final MoreKeySpec[] moreKeySpecs = key.getMoreKeys();
+                final ExpectedKey[] moreKeys = getMoreKeys();
+                // This key should have at least one "more key".
+                if (moreKeySpecs == null || moreKeySpecs.length != moreKeys.length) {
+                    return false;
+                }
+                for (int index = 0; index < moreKeySpecs.length; index++) {
+                    if (!moreKeys[index].equalsTo(moreKeySpecs[index])) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        public boolean equalsTo(final MoreKeySpec moreKeySpec) {
+            // MoreKeySpec has no "more keys".
+            return false;
+        }
+
+        @Override
+        public String toString() {
+            return super.toString() + "^" + Arrays.toString(getMoreKeys());
+        }
+    }
+
+    /**
+     * This class represents an expected key that has "more keys" and "additional more keys".
+     */
+    private static final class ExpectedKeyWithMoreKeysAndAdditionalMoreKeys
+            extends ExpectedKeyWithMoreKeys {
+        private final ExpectedAdditionalMoreKey[] mAdditionalMoreKeys;
+        private final int mAdditionalMoreKeysIndex;
+
+        ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(final ExpectedKeyVisual visual,
+                final ExpectedKeyOutput output, final ExpectedKey[] moreKeys,
+                final int additionalMoreKeysIndex,
+                final ExpectedAdditionalMoreKey... additionalMoreKeys) {
+            super(visual, output, moreKeys);
+            mAdditionalMoreKeysIndex = additionalMoreKeysIndex;
+            mAdditionalMoreKeys = additionalMoreKeys;
+        }
+
+        @Override
+        public ExpectedKey setMoreKeys(final ExpectedKey... moreKeys) {
+            return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                    getVisual(), getOutput(), moreKeys, mAdditionalMoreKeysIndex,
+                    mAdditionalMoreKeys);
+        }
+
+        @Override
+        public ExpectedKey setAdditionalMoreKeys(
+                final ExpectedAdditionalMoreKey... additionalMoreKeys) {
+            return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                    getVisual(), getOutput(), super.getMoreKeys(), mAdditionalMoreKeysIndex,
+                    additionalMoreKeys);
+        }
+
+        @Override
+        public ExpectedKey setAdditionalMoreKeysIndex(final int additionalMoreKeysIndex) {
+            return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                    getVisual(), getOutput(), super.getMoreKeys(), additionalMoreKeysIndex,
+                    mAdditionalMoreKeys);
+        }
+
+        @Override
+        public ExpectedKey toUpperCase(final Locale locale) {
+            final ExpectedKey[] moreKeys = super.getMoreKeys();
+            final ExpectedKey[] upperCaseMoreKeys = new ExpectedKey[moreKeys.length];
+            for (int i = 0; i < moreKeys.length; i++) {
+                upperCaseMoreKeys[i] = moreKeys[i].toUpperCase(locale);
+            }
+            final ExpectedAdditionalMoreKey[] upperCaseAdditionalMoreKeys =
+                    new ExpectedAdditionalMoreKey[mAdditionalMoreKeys.length];
+            for (int i = 0; i < mAdditionalMoreKeys.length; i++) {
+                upperCaseAdditionalMoreKeys[i] = mAdditionalMoreKeys[i].toUpperCase(locale);
+            }
+            return new ExpectedKeyWithMoreKeysAndAdditionalMoreKeys(
+                    getVisual().toUpperCase(locale), getOutput().toUpperCase(locale),
+                    upperCaseMoreKeys, mAdditionalMoreKeysIndex, upperCaseAdditionalMoreKeys);
+        }
+
+        @Override
+        public ExpectedKey[] getMoreKeys() {
+            final ExpectedKey[] moreKeys = super.getMoreKeys();
+            final ExpectedKey[] edittedMoreKeys = Arrays.copyOf(
+                    moreKeys, moreKeys.length + mAdditionalMoreKeys.length);
+            System.arraycopy(edittedMoreKeys, mAdditionalMoreKeysIndex,
+                    edittedMoreKeys, mAdditionalMoreKeysIndex + mAdditionalMoreKeys.length,
+                    moreKeys.length - mAdditionalMoreKeysIndex);
+            System.arraycopy(mAdditionalMoreKeys, 0, edittedMoreKeys, mAdditionalMoreKeysIndex,
+                    mAdditionalMoreKeys.length);
+            return edittedMoreKeys;
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java
new file mode 100644
index 0000000..1be51e6
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyOutput.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.internal.MoreKeySpec;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.utils.StringUtils;
+
+import java.util.Locale;
+
+/**
+ * This class represents an expected output of a key.
+ *
+ * There are two types of expected output, an integer code point and a string output text.
+ */
+abstract class ExpectedKeyOutput {
+    static ExpectedKeyOutput newInstance(final int code) {
+        return new Code(code);
+    }
+
+    static ExpectedKeyOutput newInstance(final String outputText) {
+        // If the <code>outputText</code> is one code point string, use {@link CodePoint} object.
+        if (StringUtils.codePointCount(outputText) == 1) {
+            return new Code(outputText.codePointAt(0));
+        }
+        return new Text(outputText);
+    }
+
+    abstract ExpectedKeyOutput toUpperCase(final Locale locale);
+    abstract boolean equalsTo(final String text);
+    abstract boolean equalsTo(final Key key);
+    abstract boolean equalsTo(final MoreKeySpec moreKeySpec);
+    abstract boolean equalsTo(final ExpectedKeyOutput output);
+
+    /**
+     * This class represents an integer code point.
+     */
+    private static class Code extends ExpectedKeyOutput {
+        // UNICODE code point or a special negative value defined in {@link Constants}.
+        private final int mCode;
+
+        Code(final int code) { mCode = code; }
+
+        @Override
+        ExpectedKeyOutput toUpperCase(final Locale locale) {
+            if (Constants.isLetterCode(mCode)) {
+                final String codeString = StringUtils.newSingleCodePointString(mCode);
+                // A letter may have an upper case counterpart that consists of multiple code
+                // points, for instance the upper case of "ß" is "SS".
+                return newInstance(codeString.toUpperCase(locale));
+            }
+            // A special negative value has no upper case.
+            return this;
+        }
+
+        @Override
+        boolean equalsTo(final String text) {
+            return StringUtils.codePointCount(text) == 1 && text.codePointAt(0) == mCode;
+        }
+
+        @Override
+        boolean equalsTo(final Key key) {
+            return mCode == key.getCode();
+        }
+
+        @Override
+        boolean equalsTo(final MoreKeySpec moreKeySpec) {
+            return mCode == moreKeySpec.mCode;
+        }
+
+        @Override
+        boolean equalsTo(final ExpectedKeyOutput output) {
+            return (output instanceof Code) && mCode == ((Code)output).mCode;
+        }
+
+        @Override
+        public String toString() {
+            return Constants.isLetterCode(mCode) ? StringUtils.newSingleCodePointString(mCode)
+                    : Constants.printableCode(mCode);
+        }
+    }
+
+    /**
+     * This class represents a string output text.
+     */
+    private static class Text extends ExpectedKeyOutput {
+        private final String mText;
+
+        Text(final String text) { mText = text; }
+
+        @Override
+        ExpectedKeyOutput toUpperCase(final Locale locale) {
+            return newInstance(mText.toUpperCase(locale));
+        }
+
+        @Override
+        boolean equalsTo(final String text) {
+            return text.equals(text);
+        }
+
+        @Override
+        boolean equalsTo(final Key key) {
+            return key.getCode() == Constants.CODE_OUTPUT_TEXT
+                    && mText.equals(key.getOutputText());
+        }
+
+        @Override
+        boolean equalsTo(final MoreKeySpec moreKeySpec) {
+            return moreKeySpec.mCode == Constants.CODE_OUTPUT_TEXT
+                    && mText.equals(moreKeySpec.mOutputText);
+        }
+
+        @Override
+        boolean equalsTo(final ExpectedKeyOutput output) {
+            return (output instanceof Text) && mText == ((Text)output).mText;
+        }
+
+        @Override
+        public String toString() {
+            return mText;
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java
new file mode 100644
index 0000000..0a0da32
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyVisual.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
+import com.android.inputmethod.keyboard.internal.MoreKeySpec;
+
+import java.util.Locale;
+
+/**
+ * This class represents an expected visual outlook of a key.
+ *
+ * There are two types of expected visual, an integer icon id and a string label.
+ */
+abstract class ExpectedKeyVisual {
+    static ExpectedKeyVisual newInstance(final String label) {
+        return new Label(label);
+    }
+
+    static ExpectedKeyVisual newInstance(final int iconId) {
+        return new Icon(iconId);
+    }
+
+    abstract ExpectedKeyVisual toUpperCase(final Locale locale);
+    abstract boolean equalsTo(final String text);
+    abstract boolean equalsTo(final Key key);
+    abstract boolean equalsTo(final MoreKeySpec moreKeySpec);
+    abstract boolean equalsTo(final ExpectedKeyOutput output);
+    abstract boolean equalsTo(final ExpectedKeyVisual visual);
+
+    /**
+     * This class represents an integer icon id.
+     */
+    private static class Icon extends ExpectedKeyVisual {
+        private final int mIconId;
+
+        Icon(final int iconId) {
+            mIconId = iconId;
+        }
+
+        @Override
+        ExpectedKeyVisual toUpperCase(final Locale locale) {
+            return this;
+        }
+
+        @Override
+        boolean equalsTo(final String text) {
+            return false;
+        }
+
+        @Override
+        boolean equalsTo(final Key key) {
+            return mIconId == key.getIconId();
+        }
+
+        @Override
+        boolean equalsTo(final MoreKeySpec moreKeySpec) {
+            return mIconId == moreKeySpec.mIconId;
+        }
+
+        @Override
+        boolean equalsTo(final ExpectedKeyOutput output) {
+            return false;
+        }
+
+        @Override
+        boolean equalsTo(final ExpectedKeyVisual visual) {
+            return (visual instanceof Icon) && mIconId == ((Icon)visual).mIconId;
+        }
+
+        @Override
+        public String toString() {
+            return KeyboardIconsSet.getIconName(mIconId);
+        }
+    }
+
+    /**
+     * This class represents a string label.
+     */
+    private static class Label extends ExpectedKeyVisual {
+        private final String mLabel;
+
+        Label(final String label) { mLabel = label; }
+
+        @Override
+        ExpectedKeyVisual toUpperCase(final Locale locale) {
+            return new Label(mLabel.toUpperCase(locale));
+        }
+
+        @Override
+        boolean equalsTo(final String text) {
+            return mLabel.equals(text);
+        }
+
+        @Override
+        boolean equalsTo(final Key key) {
+            return mLabel.equals(key.getLabel());
+        }
+
+        @Override
+        boolean equalsTo(final MoreKeySpec moreKeySpec) {
+            return mLabel.equals(moreKeySpec.mLabel);
+        }
+
+        @Override
+        boolean equalsTo(final ExpectedKeyOutput output) {
+            return output.equalsTo(mLabel);
+        }
+
+        @Override
+        boolean equalsTo(final ExpectedKeyVisual visual) {
+            return (visual instanceof Label) && mLabel.equals(((Label)visual).mLabel);
+        }
+
+        @Override
+        public String toString() {
+            return mLabel;
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
new file mode 100644
index 0000000..9b7de88
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/expected/ExpectedKeyboardBuilder.java
@@ -0,0 +1,345 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.expected;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Locale;
+
+/**
+ * This class builds an expected keyboard for unit test.
+ *
+ * An expected keyboard is an array of rows, and a row consists of an array of {@link ExpectedKey}s.
+ * Each row may have different number of {@link ExpectedKey}s. While building an expected keyboard,
+ * an {@link ExpectedKey} can be specified by a row number and a column number, both numbers starts
+ * from 1.
+ */
+public final class ExpectedKeyboardBuilder extends AbstractKeyboardBuilder<ExpectedKey> {
+    public ExpectedKeyboardBuilder() {
+        super();
+    }
+
+    public ExpectedKeyboardBuilder(final ExpectedKey[][] rows) {
+        super(rows);
+    }
+
+    @Override
+    protected ExpectedKey defaultElement() {
+        return ExpectedKey.EMPTY_KEY;
+    }
+
+    @Override
+    ExpectedKey[] newArray(final int size) {
+        return new ExpectedKey[size];
+    }
+
+    @Override
+    ExpectedKey[][] newArrayOfArray(final int size) {
+        return new ExpectedKey[size][];
+    }
+
+    @Override
+    public ExpectedKey[][] build() {
+        return super.build();
+    }
+
+    // A replacement job to be performed.
+    private interface ReplaceJob {
+        // Returns a {@link ExpectedKey} objects to replace.
+        ExpectedKey[] replacingKeys(final ExpectedKey oldKey);
+        // Return true if replacing should be stopped at first occurrence.
+        boolean stopAtFirstOccurrence();
+    }
+
+    private static ExpectedKey[] replaceKeyAt(final ExpectedKey[] keys, final int columnIndex,
+            final ExpectedKey[] replacingKeys) {
+        // Optimization for replacing a key with another key.
+        if (replacingKeys.length == 1) {
+            keys[columnIndex] = replacingKeys[0];
+            return keys;
+        }
+        final int newLength = keys.length - 1 + replacingKeys.length;
+        // Remove the key at columnIndex.
+        final ExpectedKey[] newKeys = Arrays.copyOf(keys, newLength);
+        System.arraycopy(keys, columnIndex + 1, newKeys, columnIndex + replacingKeys.length,
+                keys.length - 1 - columnIndex);
+        // Insert replacing keys at columnIndex.
+        System.arraycopy(replacingKeys, 0, newKeys, columnIndex, replacingKeys.length);
+        return newKeys;
+
+    }
+
+    // Replace key(s) that has the specified visual.
+    private void replaceKeyOf(final ExpectedKeyVisual visual, final ReplaceJob job) {
+        int replacedCount = 0;
+        final int rowCount = getRowCount();
+        for (int row = 1; row <= rowCount; row++) {
+            ExpectedKey[] keys = getRowAt(row);
+            for (int columnIndex = 0; columnIndex < keys.length; /* nothing */) {
+                final ExpectedKey currentKey = keys[columnIndex];
+                if (!currentKey.getVisual().equalsTo(visual)) {
+                    columnIndex++;
+                    continue;
+                }
+                final ExpectedKey[] replacingKeys = job.replacingKeys(currentKey);
+                keys = replaceKeyAt(keys, columnIndex, replacingKeys);
+                columnIndex += replacingKeys.length;
+                setRowAt(row, keys);
+                replacedCount++;
+                if (job.stopAtFirstOccurrence()) {
+                    return;
+                }
+            }
+        }
+        if (replacedCount == 0) {
+            throw new RuntimeException(
+                    "Can't find key that has visual: " + visual + " in\n" + this);
+        }
+    }
+
+    // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
+    // {@link ExpectedKey} array, and {@link String}.
+    static ExpectedKey[] joinKeys(final Object ... keys) {
+        final ArrayList<ExpectedKey> list = new ArrayList<>();
+        for (final Object key : keys) {
+            if (key instanceof ExpectedKey) {
+                list.add((ExpectedKey)key);
+            } else if (key instanceof ExpectedKey[]) {
+                list.addAll(Arrays.asList((ExpectedKey[])key));
+            } else if (key instanceof String) {
+                list.add(ExpectedKey.newInstance((String)key));
+            } else {
+                throw new RuntimeException("Unknown expected key type: " + key);
+            }
+        }
+        return list.toArray(new ExpectedKey[list.size()]);
+    }
+
+    /**
+     * Set the row with specified keys.
+     * @param row the row number to set keys.
+     * @param keys the keys to be set at <code>row</code>. Each key can be {@link ExpectedKey},
+     *        {@link ExpectedKey} array, and {@link String}.
+     * @return this builder.
+     */
+    public ExpectedKeyboardBuilder setKeysOfRow(final int row, final Object ... keys) {
+        setRowAt(row, joinKeys(keys));
+        return this;
+    }
+
+    /**
+     * Set the "more keys" of the key that has the specified label.
+     * @param label the label of the key to set the "more keys".
+     * @param moreKeys the array of "more key" to be set. Each "more key" can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
+     * @return this builder.
+     */
+    public ExpectedKeyboardBuilder setMoreKeysOf(final String label, final Object ... moreKeys) {
+        setMoreKeysOf(ExpectedKeyVisual.newInstance(label), joinKeys(moreKeys));
+        return this;
+    }
+
+    /**
+     * Set the "more keys" of the key that has the specified icon.
+     * @param iconId the icon id of the key to set the "more keys".
+     * @param moreKeys the array of "more key" to be set. Each "more key" can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
+     * @return this builder.
+     */
+    public ExpectedKeyboardBuilder setMoreKeysOf(final int iconId, final Object ... moreKeys) {
+        setMoreKeysOf(ExpectedKeyVisual.newInstance(iconId), joinKeys(moreKeys));
+        return this;
+    }
+
+    private void setMoreKeysOf(final ExpectedKeyVisual visual, final ExpectedKey[] moreKeys) {
+        replaceKeyOf(visual, new ReplaceJob() {
+            @Override
+            public ExpectedKey[] replacingKeys(final ExpectedKey oldKey) {
+                return new ExpectedKey[] { oldKey.setMoreKeys(moreKeys) };
+            }
+            @Override
+            public boolean stopAtFirstOccurrence() {
+                return true;
+            }
+        });
+    }
+
+    /**
+     * Set the "additional more keys position" of the key that has the specified label.
+     * @param label the label of the key to set the "additional more keys".
+     * @param additionalMoreKeysPosition the position in the "more keys" where
+     *        "additional more keys" will be merged. The position starts from 1.
+     * @return this builder.
+     */
+    public ExpectedKeyboardBuilder setAdditionalMoreKeysPositionOf(final String label,
+            final int additionalMoreKeysPosition) {
+        final int additionalMoreKeysIndex = additionalMoreKeysPosition - 1;
+        if (additionalMoreKeysIndex < 0) {
+            throw new RuntimeException("Illegal additional more keys position: "
+                    + additionalMoreKeysPosition);
+        }
+        final ExpectedKeyVisual visual = ExpectedKeyVisual.newInstance(label);
+        replaceKeyOf(visual, new ReplaceJob() {
+            @Override
+            public ExpectedKey[] replacingKeys(final ExpectedKey oldKey) {
+                return new ExpectedKey[] {
+                        oldKey.setAdditionalMoreKeysIndex(additionalMoreKeysIndex)
+                };
+            }
+            @Override
+            public boolean stopAtFirstOccurrence() {
+                return true;
+            }
+        });
+        return this;
+    }
+
+    /**
+     * Insert the keys at specified position.
+     * @param row the row number to insert the <code>keys</code>.
+     * @param column the column number to insert the <code>keys</code>.
+     * @param keys the array of keys to insert at <code>row,column</code>. Each key can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
+     * @return this builder.
+     * @throws RuntimeException if <code>row</code> or <code>column</code> is illegal.
+     */
+    public ExpectedKeyboardBuilder insertKeysAtRow(final int row, final int column,
+            final Object ... keys) {
+        final ExpectedKey[] expectedKeys = joinKeys(keys);
+        for (int index = 0; index < keys.length; index++) {
+            setElementAt(row, column + index, expectedKeys[index], true /* insert */);
+        }
+        return this;
+    }
+
+    /**
+     * Add the keys on the left most of the row.
+     * @param row the row number to add the <code>keys</code>.
+     * @param keys the array of keys to add on the left most of the row. Each key can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
+     * @return this builder.
+     * @throws RuntimeException if <code>row</code> is illegal.
+     */
+    public ExpectedKeyboardBuilder addKeysOnTheLeftOfRow(final int row,
+            final Object ... keys) {
+        final ExpectedKey[] expectedKeys = joinKeys(keys);
+        // Keys should be inserted from the last to preserve the order.
+        for (int index = keys.length - 1; index >= 0; index--) {
+            setElementAt(row, 1, expectedKeys[index], true /* insert */);
+        }
+        return this;
+    }
+
+    /**
+     * Add the keys on the right most of the row.
+     * @param row the row number to add the <code>keys</code>.
+     * @param keys the array of keys to add on the right most of the row. Each key can be
+     *        {@link ExpectedKey}, {@link ExpectedKey} array, and {@link String}.
+     * @return this builder.
+     * @throws RuntimeException if <code>row</code> is illegal.
+     */
+    public ExpectedKeyboardBuilder addKeysOnTheRightOfRow(final int row,
+            final Object ... keys) {
+        final int rightEnd = getRowAt(row).length + 1;
+        insertKeysAtRow(row, rightEnd, keys);
+        return this;
+    }
+
+    /**
+     * Replace the most top-left key that has the specified label with the new keys.
+     * @param label the label of the key to set <code>newKeys</code>.
+     * @param newKeys the keys to be set. Each key can be {@link ExpectedKey}, {@link ExpectedKey}
+     *        array, and {@link String}.
+     * @return this builder.
+     */
+    public ExpectedKeyboardBuilder replaceKeyOfLabel(final String label,
+            final Object ... newKeys) {
+        final ExpectedKeyVisual visual = ExpectedKeyVisual.newInstance(label);
+        replaceKeyOf(visual, new ReplaceJob() {
+            @Override
+            public ExpectedKey[] replacingKeys(final ExpectedKey oldKey) {
+                return joinKeys(newKeys);
+            }
+            @Override
+            public boolean stopAtFirstOccurrence() {
+                return true;
+            }
+        });
+        return this;
+    }
+
+    /**
+     * Replace the all specified keys with the new keys.
+     * @param key the key to be replaced by <code>newKeys</code>.
+     * @param newKeys the keys to be set. Each key can be {@link ExpectedKey}, {@link ExpectedKey}
+     *        array, and {@link String}.
+     * @return this builder.
+     */
+    public ExpectedKeyboardBuilder replaceKeysOfAll(final ExpectedKey key,
+            final Object ... newKeys) {
+        replaceKeyOf(key.getVisual(), new ReplaceJob() {
+            @Override
+            public ExpectedKey[] replacingKeys(final ExpectedKey oldKey) {
+                return joinKeys(newKeys);
+            }
+            @Override
+            public boolean stopAtFirstOccurrence() {
+                return false;
+            }
+        });
+        return this;
+    }
+
+    /**
+     * Convert all keys of this keyboard builder to upper case keys.
+     * @param locale the locale used to convert cases.
+     * @return this builder
+     */
+    public ExpectedKeyboardBuilder toUpperCase(final Locale locale) {
+        final int rowCount = getRowCount();
+        for (int row = 1; row <= rowCount; row++) {
+            final ExpectedKey[] lowerCaseKeys = getRowAt(row);
+            final ExpectedKey[] upperCaseKeys = new ExpectedKey[lowerCaseKeys.length];
+            for (int columnIndex = 0; columnIndex < lowerCaseKeys.length; columnIndex++) {
+                upperCaseKeys[columnIndex] = lowerCaseKeys[columnIndex].toUpperCase(locale);
+            }
+            setRowAt(row, upperCaseKeys);
+        }
+        return this;
+    }
+
+    @Override
+    public String toString() {
+        return toString(build());
+    }
+
+    /**
+     * Convert the keyboard to human readable string.
+     * @param rows the keyboard to be converted to string.
+     * @return the human readable representation of <code>rows</code>.
+     */
+    public static String toString(final ExpectedKey[][] rows) {
+        final StringBuilder sb = new StringBuilder();
+        for (int rowIndex = 0; rowIndex < rows.length; rowIndex++) {
+            if (rowIndex > 0) {
+                sb.append("\n");
+            }
+            sb.append(Arrays.toString(rows[rowIndex]));
+        }
+        return sb.toString();
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java
new file mode 100644
index 0000000..3e82f65
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/EnglishCustomizer.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class EnglishCustomizer extends LayoutCustomizer {
+    EnglishCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // 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+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+                .setMoreKeysOf("e", "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0113")
+                // 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+                // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+                .setMoreKeysOf("u", "\u00FA", "\u00FB", "\u00FC", "\u00F9", "\u016B")
+                // 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+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+                // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+                .setMoreKeysOf("i", "\u00ED", "\u00EE", "\u00EF", "\u012B", "\u00EC")
+                // 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+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                // 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
+                .setMoreKeysOf("o",
+                        "\u00F3", "\u00F4", "\u00F6", "\u00F2", "\u0153", "\u00F8", "\u014D",
+                        "\u00F5")
+                // 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
+                .setMoreKeysOf("a",
+                        "\u00E0", "\u00E1", "\u00E2", "\u00E4", "\u00E6", "\u00E3", "\u00E5",
+                        "\u0101")
+                // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                .setMoreKeysOf("s", "\u00DF")
+                // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                .setMoreKeysOf("c", "\u00E7")
+                // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                .setMoreKeysOf("n", "\u00F1");
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/FrenchCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/FrenchCustomizer.java
new file mode 100644
index 0000000..ab90267
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/FrenchCustomizer.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class FrenchCustomizer extends LayoutCustomizer {
+    FrenchCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // 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
+                .setAdditionalMoreKeysPositionOf("a", 3)
+                .setMoreKeysOf("a",
+                        "\u00E0", "\u00E2", "\u00E6", "\u00E1", "\u00E4", "\u00E3", "\u00E5",
+                        "\u0101", "\u00AA")
+                // 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
+                .setAdditionalMoreKeysPositionOf("e", 5)
+                .setMoreKeysOf("e",
+                        "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0119", "\u0117", "\u0113")
+                // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                .setMoreKeysOf("y", "\u00FF")
+                // 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
+                .setAdditionalMoreKeysPositionOf("u", 3)
+                .setMoreKeysOf("u", "\u00F9", "\u00FB", "\u00FC", "\u00FA", "\u016B")
+                // 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
+                .setAdditionalMoreKeysPositionOf("i", 2)
+                .setMoreKeysOf("i", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
+                // 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
+                .setAdditionalMoreKeysPositionOf("o", 3)
+                .setMoreKeysOf("o",
+                        "\u00F4", "\u0153", "\u00F6", "\u00F2", "\u00F3", "\u00F5", "\u00F8",
+                        "\u014D", "\u00BA")
+                // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
+                .setAdditionalMoreKeysPositionOf("c", 2);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/GermanCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/GermanCustomizer.java
new file mode 100644
index 0000000..6d38937
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/GermanCustomizer.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class GermanCustomizer extends LayoutCustomizer {
+    public GermanCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+    @Override
+    public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+    @Override
+    public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+    @Override
+    public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // 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+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+                .setMoreKeysOf("e", "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0117")
+                // 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
+                .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
+                .setAdditionalMoreKeysPositionOf("u", 2)
+                // 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
+                .setMoreKeysOf("o",
+                        "\u00F6", "\u00F4", "\u00F2", "\u00F3", "\u00F5", "\u0153", "\u00F8",
+                        "\u014D")
+                .setAdditionalMoreKeysPositionOf("o", 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
+                .setMoreKeysOf("a",
+                        "\u00E4", "\u00E2", "\u00E0", "\u00E1", "\u00E6", "\u00E3", "\u00E5",
+                        "\u0101")
+                .setAdditionalMoreKeysPositionOf("a", 2)
+                // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                .setMoreKeysOf("s", "\u00DF", "\u015B", "\u0161")
+                // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                .setMoreKeysOf("n", "\u00F1", "\u0144");
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/ItalianCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/ItalianCustomizer.java
new file mode 100644
index 0000000..7350709
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/ItalianCustomizer.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class ItalianCustomizer extends LayoutCustomizer {
+    public ItalianCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // 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
+                .setMoreKeysOf("e",
+                        "\u00E8", "\u00E9", "\u00EA", "\u00EB", "\u0119", "\u0117", "\u0113")
+                // 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
+                .setMoreKeysOf("u", "\u00F9", "\u00FA", "\u00FB", "\u00FC", "\u016B")
+                // 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
+                .setMoreKeysOf("i", "\u00EC", "\u00ED", "\u00EE", "\u00EF", "\u012F", "\u012B")
+                // 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
+                .setMoreKeysOf("o",
+                        "\u00F2", "\u00F3", "\u00F4", "\u00F6", "\u00F5", "\u0153", "\u00F8",
+                        "\u014D", "\u00BA")
+                // 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
+                .setMoreKeysOf("a",
+                        "\u00E0", "\u00E1", "\u00E2", "\u00E4", "\u00E6", "\u00E3", "\u00E5",
+                        "\u0101", "\u00AA");
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java
new file mode 100644
index 0000000..a22ed60
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/LayoutTestsBase.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.util.Log;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.keyboard.Key;
+import com.android.inputmethod.keyboard.Keyboard;
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.KeyboardLayoutSet;
+import com.android.inputmethod.keyboard.KeyboardLayoutSetTestsBase;
+import com.android.inputmethod.keyboard.KeyboardTheme;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.AbstractLayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ActualKeyboardBuilder;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey.ExpectedAdditionalMoreKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
+
+import java.util.Arrays;
+
+/**
+ * Base class for keyboard layout unit test.
+ */
+abstract class LayoutTestsBase extends KeyboardLayoutSetTestsBase {
+    private LayoutBase mLayout;
+    private InputMethodSubtype mSubtype;
+    private String mLogTag;
+    private KeyboardLayoutSet mKeyboardLayoutSet;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mLayout = getLayout();
+        mSubtype = getSubtype(mLayout.getLocale(), mLayout.getName());
+        mLogTag = SubtypeLocaleUtils.getSubtypeNameForLogging(mSubtype) + "/"
+                + (isPhone() ? "phone" : "tablet");
+        // TODO: Test with language switch key enabled and disabled.
+        mKeyboardLayoutSet = createKeyboardLayoutSet(mSubtype, null /* editorInfo */,
+                true /* voiceInputKeyEnabled */, true /* languageSwitchKeyEnabled */);
+    }
+
+    @Override
+    protected int getKeyboardThemeForTests() {
+        return KeyboardTheme.THEME_ID_KLP;
+    }
+
+    // Those helper methods have a lower case name to be readable when defining expected keyboard
+    // layouts.
+
+    // Helper method to create an {@link ExpectedKey} object that has the label.
+    static ExpectedKey key(final String label, final ExpectedKey ... moreKeys) {
+        return AbstractLayoutBase.key(label, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has the label and the output text.
+    static ExpectedKey key(final String label, final String outputText,
+            final ExpectedKey ... moreKeys) {
+        return AbstractLayoutBase.key(label, outputText, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object that has new "more keys".
+    static ExpectedKey key(final ExpectedKey key, final ExpectedKey ... moreKeys) {
+        return AbstractLayoutBase.key(key, moreKeys);
+    }
+
+    // Helper method to create an {@link ExpectedAdditionalMoreKey} object for an
+    // "additional more key" that has the label.
+    public static ExpectedAdditionalMoreKey additionalMoreKey(final String label) {
+        return AbstractLayoutBase.additionalMoreKey(label);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object for a "more key" that has the label.
+    static ExpectedKey moreKey(final String label) {
+        return AbstractLayoutBase.moreKey(label);
+    }
+
+    // Helper method to create an {@link ExpectedKey} object for a "more key" that has the label
+    // and the output text.
+    static ExpectedKey moreKey(final String label, final String outputText) {
+        return AbstractLayoutBase.moreKey(label, outputText);
+    }
+
+    // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
+    // {@link ExpectedKey} array, and {@link String}.
+    static ExpectedKey[] joinMoreKeys(final Object ... moreKeys) {
+        return AbstractLayoutBase.joinKeys(moreKeys);
+    }
+
+    // Helper method to create {@link ExpectedKey} array by joining {@link ExpectedKey},
+    // {@link ExpectedKey} array, and {@link String}.
+    static ExpectedKey[] joinKeys(final Object ... keys) {
+        return AbstractLayoutBase.joinKeys(keys);
+    }
+
+    // Keyboard layout for testing subtype.
+    abstract LayoutBase getLayout();
+
+    ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder;
+    }
+
+    // TODO: Add phone, phone symbols, number, number password layout tests.
+
+    public final void testAlphabet() {
+        doKeyboardTests(KeyboardId.ELEMENT_ALPHABET);
+    }
+
+    public final void testAlphabetAutomaticShifted() {
+        doKeyboardTests(KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED);
+    }
+
+    public final void testAlphabetManualShifted() {
+        doKeyboardTests(KeyboardId.ELEMENT_ALPHABET_MANUAL_SHIFTED);
+    }
+
+    public final void testAlphabetShiftLocked() {
+        doKeyboardTests(KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED);
+    }
+
+    public final void testAlphabetShiftLockShifted() {
+        doKeyboardTests(KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED);
+    }
+
+    public final void testSymbols() {
+        doKeyboardTests(KeyboardId.ELEMENT_SYMBOLS);
+    }
+
+    public final void testSymbolsShifted() {
+        doKeyboardTests(KeyboardId.ELEMENT_SYMBOLS_SHIFTED);
+    }
+
+    // Comparing expected keyboard and actual keyboard.
+    private void doKeyboardTests(final int elementId) {
+        final ExpectedKey[][] expectedKeyboard = mLayout.getLayout(isPhone(), elementId);
+        // Skip test if no keyboard is defined.
+        if (expectedKeyboard == null) {
+            return;
+        }
+        final String tag = mLogTag + "/" + KeyboardId.elementIdToName(elementId);
+        // Create actual keyboard object.
+        final Keyboard keyboard = mKeyboardLayoutSet.getKeyboard(elementId);
+        // Create actual keyboard to be compared with the expected keyboard.
+        final Key[][] actualKeyboard = ActualKeyboardBuilder.buildKeyboard(
+                keyboard.getSortedKeys());
+
+        // Dump human readable definition of expected/actual keyboards.
+        Log.d(tag, "expected=\n" + ExpectedKeyboardBuilder.toString(expectedKeyboard));
+        Log.d(tag, "actual  =\n" + ActualKeyboardBuilder.toString(actualKeyboard));
+        // Test both keyboards have the same number of rows.
+        assertEquals(tag + " labels"
+                + "\nexpected=" + ExpectedKeyboardBuilder.toString(expectedKeyboard)
+                + "\nactual  =" + ActualKeyboardBuilder.toString(actualKeyboard),
+                expectedKeyboard.length, actualKeyboard.length);
+        for (int r = 0; r < actualKeyboard.length; r++) {
+            final int row = r + 1;
+            // Test both keyboards' rows have the same number of columns.
+            assertEquals(tag + " labels row=" + row
+                    + "\nexpected=" + Arrays.toString(expectedKeyboard[r])
+                    + "\nactual  =" + ActualKeyboardBuilder.toString(actualKeyboard[r]),
+                    expectedKeyboard[r].length, actualKeyboard[r].length);
+            for (int c = 0; c < actualKeyboard[r].length; c++) {
+                final int column = c + 1;
+                final Key actualKey = actualKeyboard[r][c];
+                final ExpectedKey expectedKey = expectedKeyboard[r][c];
+                // Test both keyboards' keys have the same visual outlook and key output.
+                assertTrue(tag + " labels row,column=" + row + "," + column
+                        + "\nexpected=" + expectedKey
+                        + "\nactual  =" + ActualKeyboardBuilder.toString(actualKey),
+                        expectedKey.equalsTo(actualKey));
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/NoLanguageCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/NoLanguageCustomizer.java
new file mode 100644
index 0000000..9edbcab
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/NoLanguageCustomizer.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class NoLanguageCustomizer extends LayoutCustomizer {
+    NoLanguageCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+                .setMoreKeysOf("w", "\u0175")
+                // 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
+                .setMoreKeysOf("e",
+                        "\u00E8", "\u00E9", "\u00EA", "\u00EB", "\u0113", "\u0115", "\u0117",
+                        "\u0119", "\u011B")
+                // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+                // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+                // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                .setMoreKeysOf("r", "\u0155", "\u0157", "\u0159")
+                // 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
+                .setMoreKeysOf("t", "\u00FE", "\u0163", "\u0165", "\u0167")
+                // 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: "ĳ" LATIN SMALL LIGATURE IJ
+                .setMoreKeysOf("y", "\u00FD", "\u0177", "\u00FF", "\u0133")
+                // 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
+                .setMoreKeysOf("u",
+                        "\u00F9", "\u00FA", "\u00FB", "\u00FC", "\u0169", "\u016B", "\u016D",
+                        "\u016F", "\u0171", "\u0173")
+                // 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: "ĳ" LATIN SMALL LIGATURE IJ
+                .setMoreKeysOf("i",
+                        "\u00EC", "\u00ED", "\u00EE", "\u00EF", "\u0129", "\u012B", "\u012D",
+                        "\u012F", "\u0131", "\u0133")
+                // 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
+                .setMoreKeysOf("o",
+                        "\u00F2", "\u00F3", "\u00F4", "\u00F5", "\u00F6", "\u00F8", "\u014D",
+                        "\u014F", "\u0151", "\u0153", "\u00BA")
+                // 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
+                .setMoreKeysOf("a",
+                        "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u00E4", "\u00E5", "\u00E6",
+                        "\u0101", "\u0103", "\u0105", "\u00AA")
+                // 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
+                .setMoreKeysOf("s", "\u00DF", "\u015B", "\u015D", "\u015F", "\u0161", "\u017F")
+                // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+                // U+00F0: "ð" LATIN SMALL LETTER ETH
+                .setMoreKeysOf("d", "\u010F", "\u0111", "\u00F0")
+                // 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
+                .setMoreKeysOf("g", "\u011D", "\u011F", "\u0121", "\u0123")
+                // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
+                .setMoreKeysOf("h", "\u0125")
+                // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
+                .setMoreKeysOf("j", "\u0135")
+                // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+                // U+0138: "ĸ" LATIN SMALL LETTER KRA
+                .setMoreKeysOf("k", "\u0137", "\u0138")
+                // 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
+                .setMoreKeysOf("l", "\u013A", "\u013C", "\u013E", "\u0140", "\u0142")
+                // 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
+                .setMoreKeysOf("z", "\u017A", "\u017C", "\u017E")
+                // 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
+                .setMoreKeysOf("c", "\u00E7", "\u0107", "\u0109", "\u010B", "\u010D")
+                // 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: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+                // U+014B: "ŋ" LATIN SMALL LETTER ENG
+                .setMoreKeysOf("n", "\u00F1", "\u0144", "\u0146", "\u0148", "\u0149", "\u014B");
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/PortugueseCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/PortugueseCustomizer.java
new file mode 100644
index 0000000..629e8cb
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/PortugueseCustomizer.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class PortugueseCustomizer extends LayoutCustomizer {
+    PortugueseCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // 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
+                .setMoreKeysOf("e",
+                        "\u00E9", "\u00EA", "\u00E8", "\u0119", "\u0117", "\u0113", "\u00EB")
+                // 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
+                .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u00F9", "\u00FB", "\u016B")
+                // 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
+                .setMoreKeysOf("i", "\u00ED", "\u00EE", "\u00EC", "\u00EF", "\u012F", "\u012B")
+                // 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
+                .setMoreKeysOf("o",
+                        "\u00F3", "\u00F5", "\u00F4", "\u00F2", "\u00F6", "\u0153", "\u00F8",
+                        "\u014D", "\u00BA")
+                // 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
+                .setMoreKeysOf("a",
+                        "\u00E1", "\u00E3", "\u00E0", "\u00E2", "\u00E4", "\u00E5", "\u00E6",
+                        "\u00AA")
+                // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                .setMoreKeysOf("c", "\u00E7", "\u010D", "\u0107");
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java
new file mode 100644
index 0000000..8974ad6
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/SpanishCustomizer.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.AbstractLayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class SpanishCustomizer extends LayoutCustomizer {
+    SpanishCustomizer(final Locale locale) { super(locale); }
+
+    @Override
+    public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+        return isPhone ? PHONE_PUNCTUATION_MORE_KEYS
+                : LayoutBase.TABLET_PUNCTUATION_MORE_KEYS;
+    }
+
+    // Punctuation more keys for phone form factor.
+    private static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = AbstractLayoutBase.joinKeys(
+            // U+00A1: "¡" INVERTED EXCLAMATION MARK
+            // U+00BF: "¿" INVERTED QUESTION MARK
+            ",", "?", "!", "#", ")", "(", "/", ";", "\u00A1",
+            "'", "@", ":", "-", "\"", "+", "%", "&", "\u00BF");
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        return builder
+                // 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
+                .setMoreKeysOf("e",
+                        "\u00E9", "\u00E8", "\u00EB", "\u00EA", "\u0119", "\u0117", "\u0113")
+                // 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
+                .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u00F9", "\u00FB", "\u016B")
+                // 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
+                .setMoreKeysOf("i", "\u00ED", "\u00EF", "\u00EC", "\u00EE", "\u012F", "\u012B")
+                // 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
+                .setMoreKeysOf("o",
+                        "\u00F3", "\u00F2", "\u00F6", "\u00F4", "\u00F5", "\u00F8", "\u0153",
+                        "\u014D", "\u00BA")
+                // 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
+                .setMoreKeysOf("a",
+                        "\u00E1", "\u00E0", "\u00E4", "\u00E2", "\u00E3", "\u00E5", "\u0105",
+                        "\u00E6", "\u0101", "\u00AA")
+                // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                .replaceKeyOfLabel(Spanish.ROW2_10, "\u00F1")
+                // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
+                // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                .setMoreKeysOf("n", "\u00F1", "\u0144");
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAfrikaans.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAfrikaans.java
new file mode 100644
index 0000000..cd22598
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAfrikaans.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * af: TestsAfrikaans/qwerty
+ */
+@SmallTest
+public final class TestsAfrikaans extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("af");
+    private static final LayoutBase LAYOUT = new Qwerty(new AfrikaansCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class AfrikaansCustomizer extends LayoutCustomizer {
+        AfrikaansCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0119", "\u0117", "\u0113")
+                    // 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+                    // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+                    .setMoreKeysOf("u", "\u00FA", "\u00FB", "\u00FC", "\u00F9", "\u016B")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+                    .setMoreKeysOf("y", "\u00FD", "\u0133")
+                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+                    // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+                    // 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: "ĳ" LATIN SMALL LIGATURE IJ
+                    .setMoreKeysOf("i",
+                            "\u00ED", "\u00EC", "\u00EF", "\u00EE", "\u012F", "\u012B", "\u0133")
+                    // 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+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
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F4", "\u00F6", "\u00F2", "\u00F5", "\u0153", "\u00F8",
+                            "\u014D")
+                    // 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+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
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E2", "\u00E4", "\u00E0", "\u00E6", "\u00E3", "\u00E5",
+                            "\u0101")
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java
new file mode 100644
index 0000000..fd76708
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Arabic;
+import com.android.inputmethod.keyboard.layout.Arabic.ArabicCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * ar: Arabic/arabic
+ */
+@SmallTest
+public class TestsArabic extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ar");
+    private static final LayoutBase LAYOUT = new Arabic(new ArabicCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArmenianAMPhonetic.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArmenianAMPhonetic.java
new file mode 100644
index 0000000..327e943
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArmenianAMPhonetic.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.ArmenianPhonetic;
+import com.android.inputmethod.keyboard.layout.ArmenianPhonetic.ArmenianPhoneticCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * hy_AM: Armenian (Armenia) Phonetic/armenian_phonetic
+ */
+@SmallTest
+public final class TestsArmenianAMPhonetic extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("hy", "AM");
+    private static final LayoutBase LAYOUT = new ArmenianPhonetic(
+            new ArmenianPhoneticCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java
new file mode 100644
index 0000000..f5317e2
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsAzerbaijaniAZ.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * az_AZ: Azerbaijani (Azerbaijan)/qwerty
+ */
+@SmallTest
+public final class TestsAzerbaijaniAZ extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("az", "AZ");
+    private static final LayoutBase LAYOUT = new Qwerty(new AzerbaijaniAZCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static final class AzerbaijaniAZCustomizer extends LayoutCustomizer {
+        public AzerbaijaniAZCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0259: "ə" LATIN SMALL LETTER SCHWA
+                    .setMoreKeysOf("e", "\u0259")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i",
+                            "\u0131", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F6", "\u00F4", "\u0153", "\u00F2", "\u00F3", "\u00F5", "\u00F8",
+                            "\u014D")
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    .setMoreKeysOf("a", "\u00E2")
+                    // 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
+                    .setMoreKeysOf("s", "\u015F", "\u00DF", "\u015B", "\u0161")
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
+                    // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+                    .setMoreKeysOf("g", "\u011F");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBasqueES.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBasqueES.java
new file mode 100644
index 0000000..bef18c5
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBasqueES.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * eu_ES: Basque (Spain)/spanish
+ */
+@SmallTest
+public class TestsBasqueES extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("eu", "ES");
+    private static final LayoutBase LAYOUT = new Spanish(new BasqueESCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class BasqueESCustomizer extends EuroCustomizer {
+        private final SpanishCustomizer mSpanishCustomizer;
+
+        public BasqueESCustomizer(final Locale locale) {
+            super(locale);
+            mSpanishCustomizer = new SpanishCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mSpanishCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBelarusianBY.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBelarusianBY.java
new file mode 100644
index 0000000..c5238d5
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBelarusianBY.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic;
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * be_BY: Belarusian (Belarus)/east_slavic
+ */
+@SmallTest
+public final class TestsBelarusianBY extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("be", "BY");
+    private static final LayoutBase LAYOUT = new EastSlavic(new BelarusianBYCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class BelarusianBYCustomizer extends EastSlavicCustomizer {
+        public BelarusianBYCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() {
+            return Symbols.DOUBLE_QUOTES_R9L;
+        }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() {
+            return Symbols.SINGLE_QUOTES_R9L;
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    // U+0451: "ё" CYRILLIC SMALL LETTER IO
+                    .setMoreKeysOf("\u0435", "\u0451")
+                    // U+045E: "ў" CYRILLIC SMALL LETTER SHORT U
+                    .replaceKeyOfLabel(EastSlavic.ROW1_9, key("\u045E", additionalMoreKey("9")))
+                    // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+                    .replaceKeyOfLabel(EastSlavic.ROW2_2, "\u044B")
+                    // U+044D: "э" CYRILLIC SMALL LETTER E
+                    .replaceKeyOfLabel(EastSlavic.ROW2_11, "\u044D")
+                    // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+                    .replaceKeyOfLabel(EastSlavic.ROW3_5, "\u0456")
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    .setMoreKeysOf("\u044C", "\u044A");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBengaliIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBengaliIN.java
new file mode 100644
index 0000000..d642632
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBengaliIN.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Bengali;
+import com.android.inputmethod.keyboard.layout.Bengali.BengaliCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/**
+ * bn_IN: Bengali (India)/bengali
+ */
+@SmallTest
+public final class TestsBengaliIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("bn", "IN");
+    private static final LayoutBase LAYOUT = new Bengali(new BengaliINCustomzier(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class BengaliINCustomzier extends BengaliCustomizer {
+        public BengaliINCustomzier(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarian.java
new file mode 100644
index 0000000..ded8d72
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarian.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Bulgarian;
+import com.android.inputmethod.keyboard.layout.Bulgarian.BulgarianCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * bg: TestsBulgarian/bulgarian
+ */
+@SmallTest
+public final class TestsBulgarian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("bg");
+    private static final LayoutBase LAYOUT = new Bulgarian(new BulgarianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarianBds.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarianBds.java
new file mode 100644
index 0000000..22b2011
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsBulgarianBds.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.BulgarianBds;
+import com.android.inputmethod.keyboard.layout.BulgarianBds.BulgarianBdsCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * bg: Bulgarian/bulgarian_bds
+ */
+@SmallTest
+public final class TestsBulgarianBds extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("bg");
+    private static final LayoutBase LAYOUT = new BulgarianBds(new BulgarianBdsCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java
new file mode 100644
index 0000000..151a0a6
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCatalan.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * ca: Catalan/spanish
+ */
+@SmallTest
+public class TestsCatalan extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ca");
+    private static final LayoutBase LAYOUT = new Spanish(new CatalanCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class CatalanCustomizer extends EuroCustomizer {
+        public CatalanCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return isPhone ? PHONE_PUNCTUATION_MORE_KEYS
+                    : TABLET_PUNCTUATION_MORE_KEYS;
+        }
+
+        // U+00B7: "·" MIDDLE DOT
+        private static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+                ",", "?", "!", "\u00B7", "#", ")", "(", "/", ";",
+                "'", "@", ":", "-", "\"", "+", "%", "&");
+
+        private static final ExpectedKey[] TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+                ",", "'", "\u00B7", "#", ")", "(", "/", ";",
+                "@", ":", "-", "\"", "+", "%", "&");
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E8", "\u00E9", "\u00EB", "\u00EA", "\u0119", "\u0117", "\u0113")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u00F9", "\u00FB", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i", "\u00ED", "\u00EF", "\u00EC", "\u00EE", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F2", "\u00F3", "\u00F6", "\u00F4", "\u00F5", "\u00F8", "\u0153",
+                            "\u014D", "\u00BA")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E0", "\u00E1", "\u00E4", "\u00E2", "\u00E3", "\u00E5", "\u0105",
+                            "\u00E6", "\u0101", "\u00AA")
+                    // U+00B7: "·" MIDDLE DOT
+                    // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+                    .setMoreKeysOf("l", "l\u00B7l", "\u0142")
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    .replaceKeyOfLabel(Spanish.ROW2_10, "\u00E7")
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCroatian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCroatian.java
new file mode 100644
index 0000000..8575ef2
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCroatian.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwertz;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * hr: Croatian/qwertz
+ */
+@SmallTest
+public final class TestsCroatian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("hr");
+    private static final LayoutBase LAYOUT = new Qwertz(new CroatianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class CroatianCustomizer extends LayoutCustomizer {
+        public CroatianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017A", "\u017C")
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    .setMoreKeysOf("s", "\u0161", "\u015B", "\u00DF")
+                    // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+                    .setMoreKeysOf("d", "\u0111")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    .setMoreKeysOf("c", "\u010D", "\u0107", "\u00E7")
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCzech.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCzech.java
new file mode 100644
index 0000000..f479470
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsCzech.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwertz;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * cs: Czech/qwertz
+ */
+@SmallTest
+public final class TestsCzech extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("cs");
+    private static final LayoutBase LAYOUT = new Qwertz(new CzechCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class CzechCustomizer extends LayoutCustomizer {
+        public CzechCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u011B", "\u00E8", "\u00EA", "\u00EB", "\u0119", "\u0117",
+                            "\u0113")
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    .setMoreKeysOf("r", "\u0159")
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    .setMoreKeysOf("t", "\u0165")
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017A", "\u017C")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FA", "\u016F", "\u00FB", "\u00FC", "\u00F9", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i", "\u00ED", "\u00EE", "\u00EF", "\u00EC", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F6", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u00F8",
+                            "\u014D")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E0", "\u00E2", "\u00E4", "\u00E6", "\u00E3", "\u00E5",
+                            "\u0101")
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B")
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    .setMoreKeysOf("d", "\u010F")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
+                    // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u0148", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanish.java
new file mode 100644
index 0000000..85c63a1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanish.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Nordic;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * da: Danish/nordic
+ */
+@SmallTest
+public final class TestsDanish extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("da");
+    private static final LayoutBase LAYOUT = new Nordic(new DanishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class DanishCustomizer extends EuroCustomizer {
+        public DanishCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                    // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+                    .setMoreKeysOf("e", "\u00E9", "\u00EB")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u00FB", "\u00F9", "\u016B")
+                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+                    .setMoreKeysOf("i", "\u00ED", "\u00EF")
+                    // 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
+                    .setMoreKeysOf("o", "\u00F3", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u014D")
+                    // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+                    .replaceKeyOfLabel(Nordic.ROW1_11, "\u00E5")
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    .replaceKeyOfLabel(Nordic.ROW2_10, key("\u00E6", moreKey("\u00E4")))
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    .replaceKeyOfLabel(Nordic.ROW2_11, key("\u00F8", moreKey("\u00F6")))
+                    // 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
+                    .setMoreKeysOf("a", "\u00E1", "\u00E4", "\u00E0", "\u00E2", "\u00E3", "\u0101")
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    .setMoreKeysOf("s", "\u00DF", "\u015B", "\u0161")
+                    // U+00F0: "ð" LATIN SMALL LETTER ETH
+                    .setMoreKeysOf("d", "\u00F0")
+                    // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+                    .setMoreKeysOf("l", "\u0142")
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDutch.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDutch.java
new file mode 100644
index 0000000..1730f66
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDutch.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * nl: Dutch/qwerty
+ */
+@SmallTest
+public final class TestsDutch extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("nl");
+    private static final LayoutBase LAYOUT = new Qwerty(new DutchCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    static class DutchCustomizer extends EuroCustomizer {
+        public DutchCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E4", "\u00E2", "\u00E0", "\u00E6", "\u00E3", "\u00E5",
+                            "\u0101")
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u00EB", "\u00EA", "\u00E8", "\u0119", "\u0117", "\u0113")
+                    // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+                    .setMoreKeysOf("y", "\u0133")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u00FB", "\u00F9", "\u016B")
+                    // 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: "ĳ" LATIN SMALL LIGATURE IJ
+                    .setMoreKeysOf("i",
+                            "\u00ED", "\u00EF", "\u00EC", "\u00EE", "\u012F", "\u012B", "\u0133")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F6", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u00F8",
+                            "\u014D")
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDutchBE.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDutchBE.java
new file mode 100644
index 0000000..31adf7a
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDutchBE.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Azerty;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.tests.TestsDutch.DutchCustomizer;
+
+import java.util.Locale;
+
+/**
+ * nl_BE: Dutch (Belgium)/azerty
+ */
+@SmallTest
+public final class TestsDutchBE extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("nl", "BE");
+    private static final LayoutBase LAYOUT = new Azerty(new DutchCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishDvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishDvorak.java
new file mode 100644
index 0000000..a052693
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishDvorak.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Dvorak;
+import com.android.inputmethod.keyboard.layout.Dvorak.DvorakCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * en_US: English (United States)/dvorak
+ */
+@SmallTest
+public class TestsEnglishDvorak extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("en", "US");
+    private static final LayoutBase LAYOUT = new Dvorak(new EnglishDvorakCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EnglishDvorakCustomizer extends DvorakCustomizer {
+        private final EnglishCustomizer mEnglishCustomizer;
+
+        EnglishDvorakCustomizer(final Locale locale) {
+            super(locale);
+            mEnglishCustomizer = new EnglishCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mEnglishCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java
new file mode 100644
index 0000000..c80b250
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/*
+ * en_IN: English (India)/qwerty
+ */
+@SmallTest
+public final class TestsEnglishIN extends TestsEnglishUS {
+    private static final Locale LOCALE = new Locale("en", "IN");
+    private static final LayoutBase LAYOUT = new Qwerty(new EnglishINCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EnglishINCustomizer extends EnglishCustomizer {
+        public EnglishINCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+            Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishUK.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishUK.java
new file mode 100644
index 0000000..c0dcbdc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishUK.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/*
+ * en_GB: English (Great Britain)/qwerty
+ */
+@SmallTest
+public final class TestsEnglishUK extends TestsEnglishUS {
+    private static final Locale LOCALE = new Locale("en", "GB");
+    private static final LayoutBase LAYOUT = new Qwerty(new EnglishUKCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EnglishUKCustomizer extends EnglishCustomizer {
+        public EnglishUKCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_POUND; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() { return CURRENCIES_OTHER_THAN_POUND; }
+
+        private static final ExpectedKey CURRENCY_POUND = key(Symbols.POUND_SIGN,
+                Symbols.CENT_SIGN, Symbols.DOLLAR_SIGN, Symbols.EURO_SIGN, Symbols.YEN_SIGN,
+                Symbols.PESO_SIGN);
+
+        private static final ExpectedKey[] CURRENCIES_OTHER_THAN_POUND = {
+            Symbols.EURO_SIGN, Symbols.YEN_SIGN, key(Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN),
+            Symbols.CENT_SIGN
+        };
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishUS.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishUS.java
new file mode 100644
index 0000000..6ea8f60
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishUS.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * en_US: English (United States)/qwerty
+ */
+@SmallTest
+public class TestsEnglishUS extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("en", "US");
+    private static final LayoutBase LAYOUT = new Qwerty(new EnglishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEsperanto.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEsperanto.java
new file mode 100644
index 0000000..6a44187
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEsperanto.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * eo: Esperanto/spanish
+ */
+@SmallTest
+public class TestsEsperanto extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("eo");
+    private static final LayoutBase LAYOUT = new Spanish(new EsperantoCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EsperantoCustomizer extends LayoutCustomizer {
+        public EsperantoCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
+                    .replaceKeyOfLabel("q", key("\u015D", joinMoreKeys(
+                            additionalMoreKey("1"), "q")))
+                    // U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
+                    // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+                    .replaceKeyOfLabel("w", key("\u011D", joinMoreKeys(
+                            additionalMoreKey("2"), "w", "\u0175")))
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u011B", "\u00E8", "\u00EA", "\u00EB", "\u0119", "\u0117",
+                            "\u0113")
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+                    // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+                    .setMoreKeysOf("r", "\u0159", "\u0155", "\u0157")
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
+                    // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+                    // U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE
+                    .setMoreKeysOf("t", "\u0165", "\u021B", "\u0163", "\u0167")
+                    // U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
+                    // 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+00FE: "þ" LATIN SMALL LETTER THORN
+                    .replaceKeyOfLabel("y", key("\u016D", joinMoreKeys(
+                            additionalMoreKey("6"), "y", "\u00FD", "\u0177", "\u00FF", "\u00FE")))
+                    // 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
+                    // U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
+                    // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+                    // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+                    // U+00B5: "µ" MICRO SIGN
+                    .setMoreKeysOf("u",
+                            "\u00FA", "\u016F", "\u00FB", "\u00FC", "\u00F9", "\u016B", "\u0169",
+                            "\u0171", "\u0173", "\u00B5")
+                    // 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+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+                    // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+                    // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+                    // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+                    // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
+                    .setMoreKeysOf("i",
+                            "\u00ED", "\u00EE", "\u00EF", "\u0129", "\u00EC", "\u012F", "\u012B",
+                            "\u0131", "\u0133")
+                    // 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
+                    // U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+                    // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F6", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u00F8",
+                            "\u014D", "\u0151", "\u00BA")
+                    // 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
+                    // U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+                    // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+                    // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E0", "\u00E2", "\u00E4", "\u00E6", "\u00E3", "\u00E5",
+                            "\u0101", "\u0103", "\u0105", "\u00AA")
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
+                    // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+                    .setMoreKeysOf("s", "\u00DF", "\u0161", "\u015B", "\u0219", "\u015F")
+                    // U+00F0: "ð" LATIN SMALL LETTER ETH
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+                    .setMoreKeysOf("d", "\u00F0", "\u010F", "\u0111")
+                    // 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: "ŉ" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+                    // U+014B: "ŋ" LATIN SMALL LETTER ENG
+                    .setMoreKeysOf("n", "\u00F1", "\u0144", "\u0146", "\u0148", "\u0149", "\u014B")
+                    // 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
+                    .setMoreKeysOf("g", "\u011F", "\u0121", "\u0123")
+                    // U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
+                    // U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE
+                    .setMoreKeysOf("h", "\u0125", "\u0127")
+                    // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+                    // U+0138: "ĸ" LATIN SMALL LETTER KRA
+                    .setMoreKeysOf("k", "\u0137", "\u0138")
+                    // 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
+                    .setMoreKeysOf("l", "\u013A", "\u013C", "\u013E", "\u0140", "\u0142")
+                    // U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX
+                    .replaceKeyOfLabel(Spanish.ROW2_10, "\u0135")
+                    // 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
+                    .setMoreKeysOf("z", "\u017A", "\u017C", "\u017E")
+                    // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
+                    .replaceKeyOfLabel("x", key("\u0109", moreKey("x")))
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
+                    .setMoreKeysOf("c", "\u0107", "\u010D", "\u00E7", "\u010B")
+                    // U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX
+                    .setMoreKeysOf("v", "w", "\u0175");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java
new file mode 100644
index 0000000..865e9ea
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Nordic;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * et_EE: Estonian (Estonia)/nordic
+ */
+@SmallTest
+public final class TestsEstonianEE extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("et", "EE");
+    private static final LayoutBase LAYOUT = new Nordic(new EstonianEECustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EstonianEECustomizer extends EuroCustomizer {
+        public EstonianEECustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u0113", "\u00E8", "\u0117", "\u00E9", "\u00EA", "\u00EB", "\u0119",
+                            "\u011B")
+                    // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+                    .setMoreKeysOf("r", "\u0157", "\u0159", "\u0155")
+                    // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    .setMoreKeysOf("t", "\u0163", "\u0165")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // 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
+                    .setMoreKeysOf("u",
+                            "\u00FC", "\u016B", "\u0173", "\u00F9", "\u00FA", "\u00FB", "\u016F",
+                            "\u0171")
+                    // 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
+                    .setMoreKeysOf("i",
+                            "\u012B", "\u00EC", "\u012F", "\u00ED", "\u00EE", "\u00EF", "\u0131")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F6", "\u00F5", "\u00F2", "\u00F3", "\u00F4", "\u0153", "\u0151",
+                            "\u00F8")
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    .replaceKeyOfLabel(Nordic.ROW1_11, "\u00FC")
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    .replaceKeyOfLabel(Nordic.ROW2_10, key("\u00F6", moreKey("\u00F5")))
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    .replaceKeyOfLabel(Nordic.ROW2_11, "\u00E4")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E4", "\u0101", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u00E5",
+                            "\u00E6", "\u0105")
+                    // 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
+                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B", "\u015F")
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    .setMoreKeysOf("d", "\u010F")
+                    // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+                    // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+                    .setMoreKeysOf("g", "\u0123", "\u011F")
+                    // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+                    .setMoreKeysOf("k", "\u0137")
+                    // 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
+                    .setMoreKeysOf("l", "\u013C", "\u0142", "\u013A", "\u013E")
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017C", "\u017A")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
+                    // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u0146", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnish.java
new file mode 100644
index 0000000..ff32da1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnish.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Nordic;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * fi: Finnish/nordic
+ */
+@SmallTest
+public final class TestsFinnish extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fi");
+    private static final LayoutBase LAYOUT = new Nordic(new FinnishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class FinnishCustomizer extends EuroCustomizer {
+        public FinnishCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    .setMoreKeysOf("u", "\u00FC")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F8", "\u00F4", "\u00F2", "\u00F3", "\u00F5", "\u0153", "\u014D")
+                    // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+                    .replaceKeyOfLabel(Nordic.ROW1_11, "\u00E5")
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    .replaceKeyOfLabel(Nordic.ROW2_10, key("\u00F6", moreKey("\u00F8")))
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    .replaceKeyOfLabel(Nordic.ROW2_11, key("\u00E4", moreKey("\u00E6")))
+                    // 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
+                    .setMoreKeysOf("a", "\u00E6", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u0101")
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B")
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017A", "\u017C");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrench.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrench.java
new file mode 100644
index 0000000..7ced1fb
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrench.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Azerty;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/**
+ * fr: French/azerty
+ */
+@SmallTest
+public final class TestsFrench extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fr");
+    private static final LayoutBase LAYOUT = new Azerty(new FrenchEuroCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    static final class FrenchEuroCustomizer extends FrenchCustomizer {
+        private final EuroCustomizer mEuroCustomizer;
+
+        public FrenchEuroCustomizer(final Locale locale) {
+            super(locale);
+            mEuroCustomizer = new EuroCustomizer(locale);
+        }
+
+        @Override
+        public final ExpectedKey getCurrencyKey() { return mEuroCustomizer.getCurrencyKey(); }
+
+        @Override
+        public final ExpectedKey[] getOtherCurrencyKeys() {
+            return mEuroCustomizer.getOtherCurrencyKeys();
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchCA.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchCA.java
new file mode 100644
index 0000000..9b3cd1e
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchCA.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * fr_CA: French (Canada)/qwerty
+ */
+@SmallTest
+public final class TestsFrenchCA extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fr", "CA");
+    private static final LayoutBase LAYOUT = new Qwerty(new FrenchCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchCH.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchCH.java
new file mode 100644
index 0000000..2598aa3
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchCH.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Swiss;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * fr_CH: French (Switzerland)/swiss
+ */
+@SmallTest
+public final class TestsFrenchCH extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fr", "CH");
+    private static final LayoutBase LAYOUT = new Swiss(new FrenchCHCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class FrenchCHCustomizer extends FrenchCustomizer {
+        public FrenchCHCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            super.setAccentedLetters(builder);
+            return builder
+                    // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    .replaceKeyOfLabel(Swiss.ROW1_11, key("\u00E8", moreKey("\u00FC")))
+                    // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    .replaceKeyOfLabel(Swiss.ROW2_10, key("\u00E9", moreKey("\u00F6")))
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    .replaceKeyOfLabel(Swiss.ROW2_11, key("\u00E0", moreKey("\u00E4")));
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchDvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchDvorak.java
new file mode 100644
index 0000000..33d1445
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchDvorak.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Dvorak;
+import com.android.inputmethod.keyboard.layout.Dvorak.DvorakCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.keyboard.layout.tests.TestsFrench.FrenchEuroCustomizer;
+
+import java.util.Locale;
+
+/**
+ * fr: French/dvorak
+ */
+@SmallTest
+public final class TestsFrenchDvorak extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fr");
+    private static final LayoutBase LAYOUT = new Dvorak(new FrenchDvorakCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class FrenchDvorakCustomizer extends DvorakCustomizer {
+        private final FrenchEuroCustomizer mFrenchEuroCustomizer;
+
+        public FrenchDvorakCustomizer(final Locale locale) {
+            super(locale);
+            mFrenchEuroCustomizer = new FrenchEuroCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return mFrenchEuroCustomizer.getCurrencyKey(); }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return mFrenchEuroCustomizer.getOtherCurrencyKeys();
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mFrenchEuroCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchQwertz.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchQwertz.java
new file mode 100644
index 0000000..6ab2870
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFrenchQwertz.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwertz;
+import com.android.inputmethod.keyboard.layout.tests.TestsFrench.FrenchEuroCustomizer;
+
+import java.util.Locale;
+
+/**
+ * fr: French/qwertz
+ */
+@SmallTest
+public final class TestsFrenchQwertz extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fr");
+    private static final LayoutBase LAYOUT = new Qwertz(new FrenchEuroCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGalicianES.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGalicianES.java
new file mode 100644
index 0000000..1472828
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGalicianES.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * gl_ES: Galician (Spain)/spanish
+ */
+@SmallTest
+public class TestsGalicianES extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("gl", "ES");
+    private static final LayoutBase LAYOUT = new Spanish(new GalicianESCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class GalicianESCustomizer extends EuroCustomizer {
+        private final SpanishCustomizer mSpanishCustomizer;
+
+        public GalicianESCustomizer(final Locale locale) {
+            super(locale);
+            mSpanishCustomizer = new SpanishCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mSpanishCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGeorgianGE.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGeorgianGE.java
new file mode 100644
index 0000000..f25942f
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGeorgianGE.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Georgian;
+import com.android.inputmethod.keyboard.layout.Georgian.GeorgianCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * ka_GE: Georgian (Georgia)/georgian
+ */
+@SmallTest
+public final class TestsGeorgianGE extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ka", "GE");
+    private static final LayoutBase LAYOUT = new Georgian(new GeorgianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGerman.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGerman.java
new file mode 100644
index 0000000..6f75711
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGerman.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwertz;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/**
+ * de: German/qwertz
+ */
+@SmallTest
+public final class TestsGerman extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("de");
+    private static final LayoutBase LAYOUT = new Qwertz(new GermanEuroCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    static class GermanEuroCustomizer extends GermanCustomizer {
+        final EuroCustomizer mEuroCustomizer;
+
+        public GermanEuroCustomizer(final Locale locale) {
+            super(locale);
+            mEuroCustomizer = new EuroCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return mEuroCustomizer.getCurrencyKey(); }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return mEuroCustomizer.getOtherCurrencyKeys();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanCH.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanCH.java
new file mode 100644
index 0000000..7deb00b
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanCH.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Swiss;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * de_CH: German (Switzerland)/swiss
+ */
+@SmallTest
+public final class TestsGermanCH extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("de", "CH");
+    private static final LayoutBase LAYOUT = new Swiss(new GermanCHCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class GermanCHCustomizer extends GermanCustomizer {
+        public GermanCHCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            super.setAccentedLetters(builder);
+            return builder
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+                    .replaceKeyOfLabel(Swiss.ROW1_11, key("\u00FC", moreKey("\u00E8")))
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                    .replaceKeyOfLabel(Swiss.ROW2_10, key("\u00F6", moreKey("\u00E9")))
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    .replaceKeyOfLabel(Swiss.ROW2_11, key("\u00E4", moreKey("\u00E0")));
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanDvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanDvorak.java
new file mode 100644
index 0000000..b28d5cf
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanDvorak.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Dvorak;
+import com.android.inputmethod.keyboard.layout.Dvorak.DvorakCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * de: German/dvorak
+ */
+@SmallTest
+public final class TestsGermanDvorak extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("de");
+    private static final LayoutBase LAYOUT = new Dvorak(new GermanDvorakCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    static class GermanDvorakCustomizer extends DvorakCustomizer {
+        final GermanCustomizer mGermanCustomizer;
+
+        public GermanDvorakCustomizer(final Locale locale) {
+            super(locale);
+            mGermanCustomizer = new GermanCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return Symbols.CURRENCY_EURO; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_THAN_EURO;
+        }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mGermanCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanQwerty.java
new file mode 100644
index 0000000..19ae5a3
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGermanQwerty.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.tests.TestsGerman.GermanEuroCustomizer;
+
+import java.util.Locale;
+
+/**
+ * de: German/qwerty
+ */
+@SmallTest
+public final class TestsGermanQwerty extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("de");
+    private static final LayoutBase LAYOUT = new Qwerty(new GermanEuroCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGreek.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGreek.java
new file mode 100644
index 0000000..4acb119
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGreek.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Greek;
+import com.android.inputmethod.keyboard.layout.Greek.GreekCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * el: Greek/greek
+ */
+@SmallTest
+public class TestsGreek extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("el");
+    private static final LayoutBase LAYOUT = new Greek(new GreekCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHebrew.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHebrew.java
new file mode 100644
index 0000000..c0243a8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHebrew.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Hebrew;
+import com.android.inputmethod.keyboard.layout.Hebrew.HebrewCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * iw: Hebrew/hebrew
+ */
+@SmallTest
+public class TestsHebrew extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("iw");
+    private static final LayoutBase LAYOUT = new Hebrew(new HebrewCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindi.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindi.java
new file mode 100644
index 0000000..84053b5
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindi.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Hindi;
+import com.android.inputmethod.keyboard.layout.Hindi.HindiCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * hi: Hindi/hindi
+ */
+@SmallTest
+public final class TestsHindi extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("hi");
+    private static final LayoutBase LAYOUT = new Hindi(new HindiCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java
new file mode 100644
index 0000000..2e676df
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHindiCompact.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.HindiCompact;
+import com.android.inputmethod.keyboard.layout.HindiCompact.HindiCompactCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * hi: Hindi/hindi_compact
+ */
+@SmallTest
+public final class TestsHindiCompact extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("hi");
+    private static final LayoutBase LAYOUT = new HindiCompact(new HindiCompactCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHungarian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHungarian.java
new file mode 100644
index 0000000..efc95dc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsHungarian.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwertz;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * hu: Hungarian/qwertz
+ */
+@SmallTest
+public final class TestsHungarian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("hu");
+    private static final LayoutBase LAYOUT = new Qwertz(new HungarianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class HungarianCustomizer extends LayoutCustomizer {
+        public HungarianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0119", "\u0117", "\u0113")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u0171", "\u00FB", "\u00F9", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i", "\u00ED", "\u00EE", "\u00EF", "\u00EC", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F6", "\u0151", "\u00F4", "\u00F2", "\u00F5", "\u0153",
+                            "\u00F8", "\u014D")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E0", "\u00E2", "\u00E4", "\u00E6", "\u00E3", "\u00E5",
+                            "\u0101");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsIcelandic.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsIcelandic.java
new file mode 100644
index 0000000..62b111e
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsIcelandic.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * is: Icelandic/qwerty
+ */
+@SmallTest
+public final class TestsIcelandic extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("is");
+    private static final LayoutBase LAYOUT = new Qwerty(new IcelandicCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class IcelandicCustomizer extends LayoutCustomizer {
+        public IcelandicCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u00EB", "\u00E8", "\u00EA", "\u0119", "\u0117", "\u0113")
+                    // U+00FE: "þ" LATIN SMALL LETTER THORN
+                    .setMoreKeysOf("t", "\u00FE")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FA", "\u00FC", "\u00FB", "\u00F9", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i", "\u00ED", "\u00EF", "\u00EE", "\u00EC", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F6", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u00F8",
+                            "\u014D")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E4", "\u00E6", "\u00E5", "\u00E0", "\u00E2", "\u00E3",
+                            "\u0101")
+                    // U+00F0: "ð" LATIN SMALL LETTER ETH
+                    .setMoreKeysOf("d", "\u00F0");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsIndonesian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsIndonesian.java
new file mode 100644
index 0000000..9b23bfe
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsIndonesian.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * in: Indonesian/qwerty # "id" is the official language code of Indonesian.
+ */
+@SmallTest
+public final class TestsIndonesian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("in");
+    private static final LayoutBase LAYOUT = new Qwerty(new LayoutCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsItalian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsItalian.java
new file mode 100644
index 0000000..f3c610c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsItalian.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * it: Italian/qwerty
+ */
+@SmallTest
+public final class TestsItalian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("it");
+    private static final LayoutBase LAYOUT = new Qwerty(new ItalianITCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class ItalianITCustomizer extends EuroCustomizer {
+        private final ItalianCustomizer mItalianCustomizer;
+
+        public ItalianITCustomizer(final Locale locale) {
+            super(locale);
+            mItalianCustomizer = new ItalianCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mItalianCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsItalianCH.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsItalianCH.java
new file mode 100644
index 0000000..d32f9e9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsItalianCH.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Swiss;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * it_CH: Italian (Switzerland)/swiss
+ */
+@SmallTest
+public final class TestsItalianCH extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("it", "CH");
+    private static final LayoutBase LAYOUT = new Swiss(new ItalianCHCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class ItalianCHCustomizer extends ItalianCustomizer {
+        public ItalianCHCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            super.setAccentedLetters(builder);
+            return builder
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+                    .replaceKeyOfLabel(Swiss.ROW1_11, key("\u00FC", moreKey("\u00E8")))
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                    .replaceKeyOfLabel(Swiss.ROW2_10, key("\u00F6", moreKey("\u00E9")))
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    .replaceKeyOfLabel(Swiss.ROW2_11, key("\u00E4", moreKey("\u00E0")));
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java
new file mode 100644
index 0000000..d1866e8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Kannada;
+import com.android.inputmethod.keyboard.layout.Kannada.KannadaCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * kn_IN: Kannada (India)/kannada
+ */
+@SmallTest
+public final class TestsKannadaIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("kn", "IN");
+    private static final LayoutBase LAYOUT = new Kannada(new KannadaCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKazakh.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKazakh.java
new file mode 100644
index 0000000..d255a0f
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKazakh.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic;
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * kk: Kazakh/east_slavic
+ */
+@SmallTest
+public final class TestsKazakh extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("kk");
+    private static final LayoutBase LAYOUT = new EastSlavic(new KazakhCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class KazakhCustomizer extends EastSlavicCustomizer {
+        public KazakhCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
+                    // U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+                    .setMoreKeysOf("\u0443", "\u04AF", "\u04B1")
+                    // U+043A: "к" CYRILLIC SMALL LETTER KA
+                    // U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER
+                    .setMoreKeysOf("\u043A", "\u049B")
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    // U+0451: "ё" CYRILLIC SMALL LETTER IO
+                    .setMoreKeysOf("\u0435", "\u0451")
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
+                    .setMoreKeysOf("\u043D", "\u04A3")
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    // U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE
+                    .setMoreKeysOf("\u0433", "\u0493")
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    .replaceKeyOfLabel(EastSlavic.ROW1_9, key("\u0449", additionalMoreKey("9")))
+                    // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+                    // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+                    .replaceKeyOfLabel(EastSlavic.ROW2_2, key("\u044B", moreKey("\u0456")))
+                    // U+0430: "а" CYRILLIC SMALL LETTER A
+                    // U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA
+                    .setMoreKeysOf("\u0430", "\u04D9")
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+                    .setMoreKeysOf("\u043E", "\u04E9")
+                    // U+044D: "э" CYRILLIC SMALL LETTER E
+                    // U+04BB: "һ" CYRILLIC SMALL LETTER SHHA
+                    .replaceKeyOfLabel(EastSlavic.ROW2_11, key("\u044D", moreKey("\u04BB")))
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    .replaceKeyOfLabel(EastSlavic.ROW3_5, "\u0438")
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    .setMoreKeysOf("\u044C", "\u044A");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKhmerKH.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKhmerKH.java
new file mode 100644
index 0000000..df2f40d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKhmerKH.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Khmer;
+import com.android.inputmethod.keyboard.layout.Khmer.KhmerCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * km_KH: Khmer (Cambodia)/khmer
+ */
+@SmallTest
+public final class TestsKhmerKH extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("km", "KH");
+    private static final LayoutBase LAYOUT = new Khmer(new KhmerCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKyrgyz.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKyrgyz.java
new file mode 100644
index 0000000..9797b4b
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKyrgyz.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic;
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * ky: Kyrgyz/east_slavic
+ */
+@SmallTest
+public final class TestsKyrgyz extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ky");
+    private static final LayoutBase LAYOUT = new EastSlavic(new KyrgyzCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class KyrgyzCustomizer extends EastSlavicCustomizer {
+        public KyrgyzCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0443: "у" CYRILLIC SMALL LETTER U
+                    // U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
+                    .setMoreKeysOf("\u0443", "\u04AF")
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    // U+0451: "ё" CYRILLIC SMALL LETTER IO
+                    .setMoreKeysOf("\u0435", "\u0451")
+                    // U+043D: "н" CYRILLIC SMALL LETTER EN
+                    // U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER
+                    .setMoreKeysOf("\u043D", "\u04A3")
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    .replaceKeyOfLabel(EastSlavic.ROW1_9, key("\u0449", additionalMoreKey("9")))
+                    // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+                    .replaceKeyOfLabel(EastSlavic.ROW2_2, "\u044B")
+                    // U+043E: "о" CYRILLIC SMALL LETTER O
+                    // U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O
+                    .setMoreKeysOf("\u043E", "\u04E9")
+                    // U+044D: "э" CYRILLIC SMALL LETTER E
+                    .replaceKeyOfLabel(EastSlavic.ROW2_11, "\u044D")
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    .replaceKeyOfLabel(EastSlavic.ROW3_5, "\u0438")
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    .setMoreKeysOf("\u044C", "\u044A");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLaoLA.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLaoLA.java
new file mode 100644
index 0000000..34ad1fb
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLaoLA.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Lao;
+import com.android.inputmethod.keyboard.layout.Lao.LaoCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * lo_LA: Lao (Laos)/lao
+ */
+@SmallTest
+public final class TestsLaoLA extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("lo", "LA");
+    private static final LayoutBase LAYOUT = new Lao(new LaoCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLatvian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLatvian.java
new file mode 100644
index 0000000..dc1736c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLatvian.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * lv: Latvian/qwerty
+ */
+@SmallTest
+public final class TestsLatvian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("lv");
+    private static final LayoutBase LAYOUT = new Qwerty(new LatvianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class LatvianCustomizer extends LayoutCustomizer {
+        public LatvianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u0113", "\u0117", "\u00E8", "\u00E9", "\u00EA", "\u00EB", "\u0119",
+                            "\u011B")
+                    // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+                    .setMoreKeysOf("r", "\u0157", "\u0159", "\u0155")
+                    // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    .setMoreKeysOf("t", "\u0163", "\u0165")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // 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
+                    .setMoreKeysOf("u",
+                            "\u016B", "\u0173", "\u00F9", "\u00FA", "\u00FB", "\u00FC", "\u016F",
+                            "\u0171")
+                    // 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
+                    .setMoreKeysOf("i",
+                            "\u012B", "\u012F", "\u00EC", "\u00ED", "\u00EE", "\u00EF", "\u0131")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F2", "\u00F3", "\u00F4", "\u00F5", "\u00F6", "\u0153", "\u0151",
+                            "\u00F8")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u0101", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u00E4", "\u00E5",
+                            "\u00E6", "\u0105")
+                    // 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
+                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B", "\u015F")
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    .setMoreKeysOf("d", "\u010F")
+                    // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+                    // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+                    .setMoreKeysOf("g", "\u0123", "\u011F")
+                    // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+                    .setMoreKeysOf("k", "\u0137")
+                    // 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
+                    .setMoreKeysOf("l", "\u013C", "\u0142", "\u013A", "\u013E")
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017C", "\u017A")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
+                    // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u0146", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLithuanian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLithuanian.java
new file mode 100644
index 0000000..55ac37a
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsLithuanian.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * lt: Lithuanian/qwerty
+ */
+@SmallTest
+public final class TestsLithuanian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("lt");
+    private static final LayoutBase LAYOUT = new Qwerty(new LithuanianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class LithuanianCustomizer extends LayoutCustomizer {
+        public LithuanianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u0117", "\u0119", "\u0113", "\u00E8", "\u00E9", "\u00EA", "\u00EB",
+                            "\u011B")
+                    // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+                    .setMoreKeysOf("r", "\u0157", "\u0159", "\u0155")
+                    // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    .setMoreKeysOf("t", "\u0163", "\u0165")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // 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
+                    .setMoreKeysOf("u",
+                            "\u016B", "\u0173", "\u00FC", "\u016B", "\u00F9", "\u00FA", "\u00FB",
+                            "\u016F", "\u0171")
+                    // 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
+                    .setMoreKeysOf("i",
+                            "\u012F", "\u012B", "\u00EC", "\u00ED", "\u00EE", "\u00EF", "\u0131")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F6", "\u00F5", "\u00F2", "\u00F3", "\u00F4", "\u0153", "\u0151",
+                            "\u00F8")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u0105", "\u00E4", "\u0101", "\u00E0", "\u00E1", "\u00E2", "\u00E3",
+                            "\u00E5", "\u00E6")
+                    // 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
+                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B", "\u015F")
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    .setMoreKeysOf("d", "\u010F")
+                    // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+                    // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+                    .setMoreKeysOf("g", "\u0123", "\u011F")
+                    // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+                    .setMoreKeysOf("k", "\u0137")
+                    // 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
+                    .setMoreKeysOf("l", "\u013C", "\u0142", "\u013A", "\u013E")
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017C", "\u017A")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
+                    // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    .setMoreKeysOf("n", "\u0146", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMacedonian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMacedonian.java
new file mode 100644
index 0000000..1d7d856
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMacedonian.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.SouthSlavic;
+import com.android.inputmethod.keyboard.layout.SouthSlavic.SouthSlavicLayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * mk: Macedonian/south_slavic
+ */
+@SmallTest
+public final class TestsMacedonian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("mk");
+    private static final LayoutBase LAYOUT = new SouthSlavic(new MacedonianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class MacedonianCustomizer extends SouthSlavicLayoutCustomizer {
+        public MacedonianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
+                    .setMoreKeysOf("\u0435", "\u0450")
+                    // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
+                    .replaceKeyOfLabel(SouthSlavic.ROW1_6, key("\u0455", additionalMoreKey("6")))
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+                    .setMoreKeysOf("\u0438", "\u045D")
+                    // U+045C: "ќ" CYRILLIC SMALL LETTER KJE
+                    .replaceKeyOfLabel(SouthSlavic.ROW2_11, "\u045C")
+                    // U+0437: "з" CYRILLIC SMALL LETTER ZE
+                    .replaceKeyOfLabel(SouthSlavic.ROW3_1, "\u0437")
+                    // U+0453: "ѓ" CYRILLIC SMALL LETTER GJE
+                    .replaceKeyOfLabel(SouthSlavic.ROW3_8, "\u0453");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayMY.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayMY.java
new file mode 100644
index 0000000..9792af9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayMY.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * ms_MY: Malay (Malaysia)/qwerty
+ */
+@SmallTest
+public final class TestsMalayMY extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ms", "MY");
+    private static final LayoutBase LAYOUT = new Qwerty(new LayoutCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayalamIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayalamIN.java
new file mode 100644
index 0000000..f937de8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayalamIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Malayalam;
+import com.android.inputmethod.keyboard.layout.Malayalam.MalayalamCustomizer;
+
+import java.util.Locale;
+
+/**
+ * ta_IN: Malayalam (India)/malayalam
+ */
+@SmallTest
+public final class TestsMalayalamIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ml", "IN");
+    private static final LayoutBase LAYOUT = new Malayalam(new MalayalamCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
new file mode 100644
index 0000000..b937629
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMarathiIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Marathi;
+import com.android.inputmethod.keyboard.layout.Marathi.MarathiCustomizer;
+
+import java.util.Locale;
+
+/**
+ * mr_IN: Marathi (India)/marathi
+ */
+@SmallTest
+public final class TestsMarathiIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("mr", "IN");
+    private static final LayoutBase LAYOUT = new Marathi(new MarathiCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMongolianMN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMongolianMN.java
new file mode 100644
index 0000000..e28e962
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMongolianMN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Mongolian;
+import com.android.inputmethod.keyboard.layout.Mongolian.MongolianMNCustomizer;
+
+import java.util.Locale;
+
+/**
+ * mn_MN: Mongolian (Mongolia)/mongolian
+ */
+@SmallTest
+public final class TestsMongolianMN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("mn", "MN");
+    private static final LayoutBase LAYOUT = new Mongolian(new MongolianMNCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
new file mode 100644
index 0000000..e6d3b3b
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMyanmarMM.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Myanmar;
+import com.android.inputmethod.keyboard.layout.Myanmar.MyanmarCustomizer;
+
+import java.util.Locale;
+
+/**
+ * my_MM: Myanmar (Myanmar)/myanmar
+ */
+@SmallTest
+public final class TestsMyanmarMM extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("my", "MM");
+    private static final LayoutBase LAYOUT = new Myanmar(new MyanmarCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNepaliRomanized.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNepaliRomanized.java
new file mode 100644
index 0000000..971976a
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNepaliRomanized.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.NepaliRomanized;
+import com.android.inputmethod.keyboard.layout.NepaliRomanized.NepaliRomanizedCustomizer;
+
+import java.util.Locale;
+
+/**
+ * ne_NP: Nepali (Nepal) Romanized/nepali_romanized
+ */
+@SmallTest
+public final class TestsNepaliRomanized extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ne", "NP");
+    private static final LayoutBase LAYOUT = new NepaliRomanized(
+            new NepaliRomanizedCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNepaliTraditional.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNepaliTraditional.java
new file mode 100644
index 0000000..724c430
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNepaliTraditional.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.NepaliTraditional;
+import com.android.inputmethod.keyboard.layout.NepaliTraditional.NepaliTraditionalCustomizer;
+
+import java.util.Locale;
+
+/**
+ * ne_NP: Nepali (Nepal) Traditional/nepali_traditional
+ */
+@SmallTest
+public final class TestsNepaliTraditional extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ne", "NP");
+    private static final LayoutBase LAYOUT = new NepaliTraditional(
+            new NepaliTraditionalCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguage.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguage.java
new file mode 100644
index 0000000..3ed6315
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguage.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * zz: Alphabet/qwerty
+ */
+@SmallTest
+public final class TestsNoLanguage extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("zz");
+    private static final LayoutBase LAYOUT = new Qwerty(new NoLanguageCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguageColemak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguageColemak.java
new file mode 100644
index 0000000..8d627e3
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguageColemak.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Colemak;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * zz: Alphabet/colemak
+ */
+@SmallTest
+public final class TestsNoLanguageColemak extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("zz");
+    private static final LayoutBase LAYOUT = new Colemak(new NoLanguageColemakCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class NoLanguageColemakCustomizer extends LayoutCustomizer {
+        private final NoLanguageCustomizer mNoLanguageCustomizer;
+
+        public NoLanguageColemakCustomizer(final Locale locale) {
+            super(locale);
+            mNoLanguageCustomizer = new NoLanguageCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mNoLanguageCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguageDvorak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguageDvorak.java
new file mode 100644
index 0000000..9bf47ed
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguageDvorak.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Dvorak;
+import com.android.inputmethod.keyboard.layout.Dvorak.DvorakCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * zz: Alphabet/dvorak
+ */
+@SmallTest
+public final class TestsNoLanguageDvorak extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("zz");
+    private static final LayoutBase LAYOUT = new Dvorak(new NoLanguageDvorakCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class NoLanguageDvorakCustomizer extends DvorakCustomizer {
+        private final NoLanguageCustomizer mNoLanguageCustomizer;
+
+        public NoLanguageDvorakCustomizer(final Locale locale) {
+            super(locale);
+            mNoLanguageCustomizer = new NoLanguageCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mNoLanguageCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguagePcQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguagePcQwerty.java
new file mode 100644
index 0000000..cd8d43c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNoLanguagePcQwerty.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.PcQwerty;
+import com.android.inputmethod.keyboard.layout.PcQwerty.PcQwertyCustomizer;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * zz: Alphabet/pcqwerty
+ */
+@SmallTest
+public final class TestsNoLanguagePcQwerty extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("zz");
+    private static final LayoutBase LAYOUT = new PcQwerty(new NoLanguagePcQwertyCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class NoLanguagePcQwertyCustomizer extends PcQwertyCustomizer {
+        private final NoLanguageCustomizer mNoLanguageCustomizer;
+
+        public NoLanguagePcQwertyCustomizer(final Locale locale) {
+            super(locale);
+            mNoLanguageCustomizer = new NoLanguageCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mNoLanguageCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegian.java
new file mode 100644
index 0000000..5d220df
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegian.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Nordic;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * nb: Norwegian Bokmål/nordic
+ */
+@SmallTest
+public final class TestsNorwegian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("nb");
+    private static final LayoutBase LAYOUT = new Nordic(new NorwegianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class NorwegianCustomizer extends LayoutCustomizer {
+        public NorwegianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0119", "\u0117", "\u0113")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F4", "\u00F2", "\u00F3", "\u00F6", "\u00F5", "\u0153", "\u014D")
+                    // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+                    .replaceKeyOfLabel(Nordic.ROW1_11, "\u00E5")
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    .replaceKeyOfLabel(Nordic.ROW2_10, key("\u00F8", moreKey("\u00F6")))
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    .replaceKeyOfLabel(Nordic.ROW2_11, key("\u00E6", moreKey("\u00E4")))
+                    // 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
+                    .setMoreKeysOf("a", "\u00E0", "\u00E4", "\u00E1", "\u00E2", "\u00E3", "\u0101");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPersian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPersian.java
new file mode 100644
index 0000000..b7d75c9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPersian.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Farsi;
+import com.android.inputmethod.keyboard.layout.Farsi.FarsiCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * fa: Persian/farsi
+ */
+@SmallTest
+public class TestsPersian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("fa");
+    private static final LayoutBase LAYOUT = new Farsi(new FarsiCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPolish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPolish.java
new file mode 100644
index 0000000..04f88c3
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPolish.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * pl: Polish/qwerty
+ */
+@SmallTest
+public final class TestsPolish extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("pl");
+    private static final LayoutBase LAYOUT = new Qwerty(new PolishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class PolishCustomizer extends LayoutCustomizer {
+        public PolishCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u0119", "\u00E8", "\u00E9", "\u00EA", "\u00EB", "\u0117", "\u0113")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F3", "\u00F6", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u00F8",
+                            "\u014D")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u0105", "\u00E1", "\u00E0", "\u00E2", "\u00E4", "\u00E6", "\u00E3",
+                            "\u00E5", "\u0101")
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    .setMoreKeysOf("s", "\u015B", "\u00DF", "\u0161")
+                    // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+                    .setMoreKeysOf("l", "\u0142")
+                    // 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
+                    .setMoreKeysOf("z", "\u017C", "\u017A", "\u017E")
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    .setMoreKeysOf("c", "\u0107", "\u00E7", "\u010D")
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    .setMoreKeysOf("n", "\u0144", "\u00F1");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPortugueseBR.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPortugueseBR.java
new file mode 100644
index 0000000..8a984a7
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPortugueseBR.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * pt_BR: Portuguese (Brazil)/qwerty
+ */
+@SmallTest
+public class TestsPortugueseBR extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("pt", "BR");
+    private static final LayoutBase LAYOUT = new Qwerty(new PortugueseCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPortuguesePT.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPortuguesePT.java
new file mode 100644
index 0000000..e15e811
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsPortuguesePT.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/**
+ * pt_PT: Portuguese (Portugal)/qwerty
+ */
+@SmallTest
+public final class TestsPortuguesePT extends TestsPortugueseBR {
+    private static final Locale LOCALE = new Locale("pt", "PT");
+    private static final LayoutBase LAYOUT = new Qwerty(new PortuguesePTCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class PortuguesePTCustomizer extends PortugueseCustomizer {
+        private final EuroCustomizer mEuroCustomizer;
+
+        public PortuguesePTCustomizer(final Locale locale) {
+            super(locale);
+            mEuroCustomizer = new EuroCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return mEuroCustomizer.getCurrencyKey(); }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return mEuroCustomizer.getOtherCurrencyKeys();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsRomanian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsRomanian.java
new file mode 100644
index 0000000..0207f1c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsRomanian.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * ro: Romanian/qwerty
+ */
+@SmallTest
+public final class TestsRomanian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ro");
+    private static final LayoutBase LAYOUT = new Qwerty(new RomanianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class RomanianCustomizer extends LayoutCustomizer {
+        public RomanianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_L9R; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
+                    .setMoreKeysOf("t", "\u021B")
+                    // 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
+                    .setMoreKeysOf("i", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E2", "\u00E3", "\u0103", "\u00E0", "\u00E1", "\u00E4", "\u00E6",
+                            "\u00E5", "\u0101")
+                    // 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
+                    .setMoreKeysOf("s", "\u0219", "\u00DF", "\u015B", "\u0161");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsRussian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsRussian.java
new file mode 100644
index 0000000..9919207
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsRussian.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic;
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * ru: Russian/east_slavic
+ */
+@SmallTest
+public final class TestsRussian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ru");
+    private static final LayoutBase LAYOUT = new EastSlavic(new RussianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class RussianCustomizer extends EastSlavicCustomizer {
+        public RussianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    // U+0451: "ё" CYRILLIC SMALL LETTER IO
+                    .setMoreKeysOf("\u0435", "\u0451")
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    .replaceKeyOfLabel(EastSlavic.ROW1_9, key("\u0449", additionalMoreKey("9")))
+                    // U+044B: "ы" CYRILLIC SMALL LETTER YERU
+                    .replaceKeyOfLabel(EastSlavic.ROW2_2, "\u044B")
+                    // U+044D: "э" CYRILLIC SMALL LETTER E
+                    .replaceKeyOfLabel(EastSlavic.ROW2_11, "\u044D")
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    .replaceKeyOfLabel(EastSlavic.ROW3_5, "\u0438")
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    .setMoreKeysOf("\u044C", "\u044A");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSerbian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSerbian.java
new file mode 100644
index 0000000..41f1690
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSerbian.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.SouthSlavic;
+import com.android.inputmethod.keyboard.layout.SouthSlavic.SouthSlavicLayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * sr: Serbian/south_slavic
+ */
+@SmallTest
+public final class TestsSerbian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("sr");
+    private static final LayoutBase LAYOUT = new SouthSlavic(new SerbianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class SerbianCustomizer extends SouthSlavicLayoutCustomizer {
+        public SerbianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0435: "е" CYRILLIC SMALL LETTER IE
+                    // U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
+                    .setMoreKeysOf("\u0435", "\u0450")
+                    // U+0437: "з" CYRILLIC SMALL LETTER ZE
+                    .replaceKeyOfLabel(SouthSlavic.ROW1_6, key("\u0437", additionalMoreKey("6")))
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
+                    .setMoreKeysOf("\u0438", "\u045D")
+                    // U+045B: "ћ" CYRILLIC SMALL LETTER TSHE
+                    .replaceKeyOfLabel(SouthSlavic.ROW2_11, "\u045B")
+                    // U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
+                    .replaceKeyOfLabel(SouthSlavic.ROW3_1, "\u0455")
+                    // U+0452: "ђ" CYRILLIC SMALL LETTER DJE
+                    .replaceKeyOfLabel(SouthSlavic.ROW3_8, "\u0452");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSinhalaLK.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSinhalaLK.java
new file mode 100644
index 0000000..1cea497
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSinhalaLK.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Sinhala;
+import com.android.inputmethod.keyboard.layout.Sinhala.SinhalaCustomizer;
+
+import java.util.Locale;
+
+/**
+ * si_LK: Sinhala (Sri Lanka)/sinhala
+ */
+@SmallTest
+public final class TestsSinhalaLK extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("si", "LK");
+    private static final LayoutBase LAYOUT = new Sinhala(new SinhalaCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSlovak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSlovak.java
new file mode 100644
index 0000000..bdaf0ca
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSlovak.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * sk: Slovak/qwerty
+ */
+@SmallTest
+public final class TestsSlovak extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("sk");
+    private static final LayoutBase LAYOUT = new Qwerty(new SlovakCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class SlovakCustomizer extends EuroCustomizer {
+        public SlovakCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E9", "\u011B", "\u0113", "\u0117", "\u00E8", "\u00EA", "\u00EB",
+                            "\u0119")
+                    // U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    // U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+                    .setMoreKeysOf("r", "\u0155", "\u0159", "\u0157")
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    // U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+                    .setMoreKeysOf("t", "\u0165", "\u0163")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // 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
+                    .setMoreKeysOf("u",
+                            "\u00FA", "\u016F", "\u00FC", "\u016B", "\u0173", "\u00F9", "\u00FB",
+                            "\u0171")
+                    // 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
+                    .setMoreKeysOf("i",
+                            "\u00ED", "\u012B", "\u012F", "\u00EC", "\u00EE", "\u00EF", "\u0131")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F4", "\u00F3", "\u00F6", "\u00F2", "\u00F5", "\u0153", "\u0151",
+                            "\u00F8")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E1", "\u00E4", "\u0101", "\u00E0", "\u00E2", "\u00E3", "\u00E5",
+                            "\u00E6", "\u0105")
+                    // 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
+                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B", "\u015F")
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    .setMoreKeysOf("d", "\u010F")
+                    // U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+                    // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+                    .setMoreKeysOf("g", "\u0123", "\u011F")
+                    // U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+                    .setMoreKeysOf("k", "\u0137")
+                    // 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
+                    .setMoreKeysOf("l", "\u013E", "\u013A", "\u013C", "\u0142")
+                    // 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
+                    .setMoreKeysOf("z", "\u017E", "\u017C", "\u017A")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
+                    // 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
+                    .setMoreKeysOf("n", "\u0148", "\u0146", "\u00F1", "\u0144");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSlovenian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSlovenian.java
new file mode 100644
index 0000000..cdb1bee
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSlovenian.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * sl: Slovenian/qwerty
+ */
+@SmallTest
+public final class TestsSlovenian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("sl");
+    private static final LayoutBase LAYOUT = new Qwerty(new SlovenianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class SlovenianCustomizer extends EuroCustomizer {
+        public SlovenianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    .setMoreKeysOf("s", "\u0161")
+                    // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+                    .setMoreKeysOf("d", "\u0111")
+                    // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+                    .setMoreKeysOf("z", "\u017E")
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    .setMoreKeysOf("c", "\u010D", "\u0107");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanish.java
new file mode 100644
index 0000000..12e8676
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanish.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/**
+ * es: Spanish/spanish
+ */
+@SmallTest
+public class TestsSpanish extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("es");
+    private static final LayoutBase LAYOUT = new Spanish(new SpanishESCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class SpanishESCustomizer extends SpanishCustomizer {
+        private final EuroCustomizer mEuroCustomizer;
+
+        public SpanishESCustomizer(final Locale locale) {
+            super(locale);
+            mEuroCustomizer = new EuroCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return mEuroCustomizer.getCurrencyKey(); }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return mEuroCustomizer.getOtherCurrencyKeys();
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanish419.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanish419.java
new file mode 100644
index 0000000..75aad13
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanish419.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Spanish;
+
+import java.util.Locale;
+
+/**
+ * es_419: Spanish (Latin America)/spanish
+ */
+@SmallTest
+public class TestsSpanish419 extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("es", "419");
+    private static final LayoutBase LAYOUT = new Spanish(new SpanishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanishUS.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanishUS.java
new file mode 100644
index 0000000..c3ac0a0
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSpanishUS.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Spanish;
+
+import java.util.Locale;
+
+/**
+ * es_US: Spanish (United States)/spanish
+ */
+@SmallTest
+public class TestsSpanishUS extends TestsSpanish {
+    private static final Locale LOCALE = new Locale("es", "US");
+    private static final LayoutBase LAYOUT = new Spanish(new SpanishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwahili.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwahili.java
new file mode 100644
index 0000000..13b9741
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwahili.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * sw: Swahili/qwerty
+ */
+@SmallTest
+public final class TestsSwahili extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("sw");
+    private static final LayoutBase LAYOUT = new Qwerty(new SwahiliCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class SwahiliCustomizer extends LayoutCustomizer {
+        public SwahiliCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e", "\u00E8", "\u00E9", "\u00EA", "\u00EB", "\u0113")
+                    // 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
+                    .setMoreKeysOf("u", "\u00FB", "\u00FC", "\u00F9", "\u00FA", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i", "\u00EE", "\u00EF", "\u00ED", "\u012B", "\u00EC")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F4", "\u00F6", "\u00F2", "\u00F3", "\u0153", "\u00F8", "\u014D",
+                            "\u00F5")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E0", "\u00E1", "\u00E2", "\u00E4", "\u00E6", "\u00E3", "\u00E5",
+                            "\u0101")
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    .setMoreKeysOf("s", "\u00DF")
+                    .setMoreKeysOf("g", "g'")
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    .setMoreKeysOf("c", "\u00E7")
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    .setMoreKeysOf("n", "\u00F1");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedish.java
new file mode 100644
index 0000000..9b58914
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedish.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Nordic;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * sv: Swedish/nordic
+ */
+@SmallTest
+public final class TestsSwedish extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("sv");
+    private static final LayoutBase LAYOUT = new Nordic(new SwedishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class SwedishCustomizer extends EuroCustomizer {
+        public SwedishCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey[] getDoubleAngleQuoteKeys() { return Symbols.DOUBLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKey[] getSingleAngleQuoteKeys() { return Symbols.SINGLE_ANGLE_QUOTES_RL; }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e", "\u00E9", "\u00E8", "\u00EA", "\u00EB", "\u0119")
+                    // U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+                    .setMoreKeysOf("r", "\u0159")
+                    // U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+                    // U+00FE: "þ" LATIN SMALL LETTER THORN
+                    .setMoreKeysOf("t", "\u0165", "\u00FE")
+                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+                    // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+                    // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+                    // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+                    .setMoreKeysOf("u", "\u00FC", "\u00FA", "\u00F9", "\u00FB", "\u016B")
+                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+                    // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+                    // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+                    .setMoreKeysOf("i", "\u00ED", "\u00EC", "\u00EE", "\u00EF")
+                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                    .setMoreKeysOf("o", "\u00F3", "\u00F2", "\u00F4", "\u00F5", "\u014D")
+                    // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+                    .replaceKeyOfLabel(Nordic.ROW1_11, "\u00E5")
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+0153: "œ" LATIN SMALL LIGATURE OE
+                    .replaceKeyOfLabel(Nordic.ROW2_10,
+                            key("\u00F6", joinMoreKeys("\u00F8", "\u0153")))
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    .replaceKeyOfLabel(Nordic.ROW2_11, key("\u00E4", moreKey("\u00E6")))
+                    // 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+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                    .setMoreKeysOf("a", "\u00E1", "\u00E0", "\u00E2", "\u0105", "\u00E3")
+                    // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+                    // U+0161: "š" LATIN SMALL LETTER S WITH CARON
+                    // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                    .setMoreKeysOf("s", "\u015B", "\u0161", "\u015F", "\u00DF")
+                    // U+00F0: "ð" LATIN SMALL LETTER ETH
+                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                    .setMoreKeysOf("d", "\u00F0", "\u010F")
+                    // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+                    .setMoreKeysOf("l", "\u0142")
+                    // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+                    // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+                    // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+                    .setMoreKeysOf("z", "\u017A", "\u017E", "\u017C")
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D")
+                    // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                    // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+                    .setMoreKeysOf("n", "\u0144", "\u00F1", "\u0148");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTagalog.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTagalog.java
new file mode 100644
index 0000000..38d5364
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTagalog.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/**
+ * tl: Tagalog/spanish
+ */
+@SmallTest
+public class TestsTagalog extends TestsSpanish {
+    private static final Locale LOCALE = new Locale("tl");
+    private static final LayoutBase LAYOUT = new Spanish(new TagalogCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class TagalogCustomizer extends SpanishCustomizer {
+
+        public TagalogCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+            return isPhone ? LayoutBase.PHONE_PUNCTUATION_MORE_KEYS
+                    : LayoutBase.TABLET_PUNCTUATION_MORE_KEYS;
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTamilIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTamilIN.java
new file mode 100644
index 0000000..5b3649d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTamilIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Tamil;
+import com.android.inputmethod.keyboard.layout.Tamil.TamilCustomizer;
+
+import java.util.Locale;
+
+/**
+ * ta_IN: Tamil (India)/tamil
+ */
+@SmallTest
+public final class TestsTamilIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("ta", "IN");
+    private static final LayoutBase LAYOUT = new Tamil(new TamilCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java
new file mode 100644
index 0000000..04996d9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Telugu;
+import com.android.inputmethod.keyboard.layout.Telugu.TeluguCustomizer;
+
+import java.util.Locale;
+
+/**
+ * te_IN: Telugu (India)/telugu
+ */
+@SmallTest
+public final class TestsTeluguIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("te", "IN");
+    private static final LayoutBase LAYOUT = new Telugu(new TeluguCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsThai.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsThai.java
new file mode 100644
index 0000000..3c87272
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsThai.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Thai;
+import com.android.inputmethod.keyboard.layout.Thai.ThaiCustomizer;
+
+import java.util.Locale;
+
+/**
+ * th: Thai/thai
+ */
+@SmallTest
+public final class TestsThai extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("th");
+    private static final LayoutBase LAYOUT = new Thai(new ThaiCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java
new file mode 100644
index 0000000..b35f885
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTurkish.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * tr: Turkish/qwerty
+ */
+@SmallTest
+public final class TestsTurkish extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("tr");
+    private static final LayoutBase LAYOUT = new Qwerty(new TurkishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class TurkishCustomizer extends EuroCustomizer {
+        public TurkishCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
+                    // 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
+                    .setMoreKeysOf("i",
+                            "\u0131", "\u00EE", "\u00EF", "\u00EC", "\u00ED", "\u012F", "\u012B")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F6", "\u00F4", "\u0153", "\u00F2", "\u00F3", "\u00F5", "\u00F8",
+                            "\u014D")
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    .setMoreKeysOf("a", "\u00E2")
+                    // 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
+                    .setMoreKeysOf("s", "\u015F", "\u00DF", "\u015B", "\u0161")
+                    // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+                    .setMoreKeysOf("g", "\u011F")
+                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                    .setMoreKeysOf("c", "\u00E7", "\u0107", "\u010D");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java
new file mode 100644
index 0000000..a6bcacc
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.EastSlavic;
+import com.android.inputmethod.keyboard.layout.EastSlavic.EastSlavicCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * uk: Ukrainian/east_slavic
+ */
+@SmallTest
+public final class TestsUkrainian extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("uk");
+    private static final LayoutBase LAYOUT = new EastSlavic(new UkrainianCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class UkrainianCustomizer extends EastSlavicCustomizer {
+        public UkrainianCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_HRYVNIA; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+        @Override
+        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+        // U+20B4: "₴" HRYVNIA SIGN
+        private static final ExpectedKey CURRENCY_HRYVNIA = key("\u20B4",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // U+0433: "г" CYRILLIC SMALL LETTER GHE
+                    // U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN
+                    .setMoreKeysOf("\u0433", "\u0491")
+                    // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
+                    .replaceKeyOfLabel(EastSlavic.ROW1_9, key("\u0449", additionalMoreKey("9")))
+                    // U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+                    // U+0457: "ї" CYRILLIC SMALL LETTER YI
+                    .replaceKeyOfLabel(EastSlavic.ROW2_2, key("\u0456", moreKey("\u0457")))
+                    // U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE
+                    .replaceKeyOfLabel(EastSlavic.ROW2_11, "\u0454")
+                    // U+0438: "и" CYRILLIC SMALL LETTER I
+                    .replaceKeyOfLabel(EastSlavic.ROW3_5, "\u0438")
+                    // U+044C: "ь" CYRILLIC SMALL LETTER SOFT SIGN
+                    // U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN
+                    .setMoreKeysOf("\u044C", "\u044A");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java
new file mode 100644
index 0000000..83d86ac
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.LayoutCustomizer;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * vi: Vietnamese/qwerty
+ */
+@SmallTest
+public final class TestsVietnamese extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("vi");
+    private static final LayoutBase LAYOUT = new Qwerty(new VietnameseCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class VietnameseCustomizer extends LayoutCustomizer {
+        public VietnameseCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_DONG; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        // U+20AB: "₫" DONG SIGN
+        private static final ExpectedKey CURRENCY_DONG = key("\u20AB",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return builder
+                    // 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
+                    .setMoreKeysOf("e",
+                            "\u00E8", "\u00E9", "\u1EBB", "\u1EBD", "\u1EB9", "\u00EA", "\u1EC1",
+                            "\u1EBF", "\u1EC3", "\u1EC5", "\u1EC7")
+                    // 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
+                    .setMoreKeysOf("y", "\u1EF3", "\u00FD", "\u1EF7", "\u1EF9", "\u1EF5")
+                    // 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
+                    .setMoreKeysOf("u",
+                            "\u00F9", "\u00FA", "\u1EE7", "\u0169", "\u1EE5", "\u01B0", "\u1EEB",
+                            "\u1EE9", "\u1EED", "\u1EEF", "\u1EF1")
+                    // 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
+                    .setMoreKeysOf("i", "\u00EC", "\u00ED", "\u1EC9", "\u0129", "\u1ECB")
+                    // 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
+                    .setMoreKeysOf("o",
+                            "\u00F2", "\u00F3", "\u1ECF", "\u00F5", "\u1ECD", "\u00F4", "\u1ED3",
+                            "\u1ED1", "\u1ED5", "\u1ED7", "\u1ED9", "\u01A1", "\u1EDD", "\u1EDB",
+                            "\u1EDF", "\u1EE1", "\u1EE3")
+                    // 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
+                    .setMoreKeysOf("a",
+                            "\u00E0", "\u00E1", "\u1EA3", "\u00E3", "\u1EA1", "\u0103", "\u1EB1",
+                            "\u1EAF", "\u1EB3", "\u1EB5", "\u1EB7", "\u00E2", "\u1EA7", "\u1EA5",
+                            "\u1EA9", "\u1EAB", "\u1EAD")
+                    // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+                    .setMoreKeysOf("d", "\u0111");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsZulu.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsZulu.java
new file mode 100644
index 0000000..e048e92
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsZulu.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+
+import java.util.Locale;
+
+/**
+ * zu: Zulu/qwerty
+ */
+@SmallTest
+public final class TestsZulu extends TestsEnglishUS {
+    private static final Locale LOCALE = new Locale("zu");
+    private static final LayoutBase LAYOUT = new Qwerty(new EnglishCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/latin/AppWorkaroundsTests.java b/tests/src/com/android/inputmethod/latin/AppWorkaroundsTests.java
new file mode 100644
index 0000000..c29257d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/AppWorkaroundsTests.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import com.android.inputmethod.latin.settings.Settings;
+
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Build.VERSION_CODES;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.view.inputmethod.EditorInfo;
+
+@LargeTest
+public class AppWorkaroundsTests extends InputTestsBase {
+    String packageNameOfAppBeforeJellyBean;
+    String packageNameOfAppAfterJellyBean;
+
+    @Override
+    protected void setUp() throws Exception {
+        // NOTE: this will fail if there is no app installed that targets an SDK
+        // before Jelly Bean. For the moment, it's fine.
+        final PackageManager pm = getContext().getPackageManager();
+        for (ApplicationInfo ai : pm.getInstalledApplications(0 /* flags */)) {
+            if (ai.targetSdkVersion < VERSION_CODES.JELLY_BEAN) {
+                packageNameOfAppBeforeJellyBean = ai.packageName;
+            } else {
+                packageNameOfAppAfterJellyBean = ai.packageName;
+            }
+        }
+        super.setUp();
+    }
+
+    // We want to test if the app package info is correctly retrieved by LatinIME. Since it
+    // asks this information to the package manager from the package name, and that it takes
+    // the package name from the EditorInfo, all we have to do it put the correct package
+    // name in the editor info.
+    // To this end, our base class InputTestsBase offers a hook for us to touch the EditorInfo.
+    // We override this hook to write the package name that we need.
+    @Override
+    protected EditorInfo enrichEditorInfo(final EditorInfo ei) {
+        if ("testBeforeJellyBeanTrue".equals(getName())) {
+            ei.packageName = packageNameOfAppBeforeJellyBean;
+        } else if ("testBeforeJellyBeanFalse".equals(getName())) {
+            ei.packageName = packageNameOfAppAfterJellyBean;
+        }
+        return ei;
+    }
+
+    public void testBeforeJellyBeanTrue() {
+        assertTrue("Couldn't successfully detect this app targets < Jelly Bean (package is "
+                + packageNameOfAppBeforeJellyBean + ")",
+                Settings.getInstance().getCurrent().isBeforeJellyBean());
+    }
+
+    public void testBeforeJellyBeanFalse() {
+        assertFalse("Couldn't successfully detect this app targets >= Jelly Bean (package is "
+                + packageNameOfAppAfterJellyBean + ")",
+                Settings.getInstance().getCurrent().isBeforeJellyBean());
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
index cd5384e..ae18426 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryDecayingTests.java
@@ -20,8 +20,18 @@
 import android.test.suitebuilder.annotation.LargeTest;
 import android.util.Pair;
 
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
+import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
 import com.android.inputmethod.latin.makedict.CodePointUtils;
+import com.android.inputmethod.latin.makedict.DictDecoder;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
 import com.android.inputmethod.latin.makedict.FormatSpec;
+import com.android.inputmethod.latin.makedict.FusionDictionary;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
+import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
+import com.android.inputmethod.latin.utils.FileUtils;
+import com.android.inputmethod.latin.utils.LocaleUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -30,68 +40,183 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
+import java.util.concurrent.TimeUnit;
 
 @LargeTest
 public class BinaryDictionaryDecayingTests extends AndroidTestCase {
     private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
     private static final String TEST_LOCALE = "test";
-
-    // Note that these are corresponding definitions in native code in
-    // latinime::DynamicPatriciaTriePolicy.
-    private static final String SET_NEEDS_TO_DECAY_FOR_TESTING_KEY =
-            "SET_NEEDS_TO_DECAY_FOR_TESTING";
-
     private static final int DUMMY_PROBABILITY = 0;
+    private static final int[] DICT_FORMAT_VERSIONS =
+            new int[] { FormatSpec.VERSION4, FormatSpec.VERSION4_DEV };
+
+    private int mCurrentTime = 0;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        mCurrentTime = 0;
     }
 
     @Override
     protected void tearDown() throws Exception {
+        stopTestModeInNativeCode();
         super.tearDown();
     }
 
+    private static boolean supportsBeginningOfSentence(final int formatVersion) {
+        return formatVersion > FormatSpec.VERSION401;
+    }
+
+    private void addUnigramWord(final BinaryDictionary binaryDictionary, final String word,
+            final int probability) {
+        binaryDictionary.addUnigramEntry(word, probability, "" /* shortcutTarget */,
+                BinaryDictionary.NOT_A_PROBABILITY /* shortcutProbability */,
+                false /* isBeginningOfSentence */, false /* isNotAWord */,
+                false /* isBlacklisted */, mCurrentTime /* timestamp */);
+    }
+
+    private void addBigramWords(final BinaryDictionary binaryDictionary, final String word0,
+            final String word1, final int probability) {
+        binaryDictionary.addNgramEntry(new PrevWordsInfo(new WordInfo(word0)), word1, probability,
+                mCurrentTime /* timestamp */);
+    }
+
+    private static boolean isValidBigram(final BinaryDictionary binaryDictionary,
+            final String word0, final String word1) {
+        return binaryDictionary.isValidNgram(new PrevWordsInfo(new WordInfo(word0)), word1);
+    }
+
     private void forcePassingShortTime(final BinaryDictionary binaryDictionary) {
-        // Entries having low probability would be suppressed once in 3 GCs.
-        final int count = 3;
-        for (int i = 0; i < count; i++) {
-            binaryDictionary.getPropertyForTests(SET_NEEDS_TO_DECAY_FOR_TESTING_KEY);
-            binaryDictionary.flushWithGC();
-        }
+        // 30 days.
+        final int timeToElapse = (int)TimeUnit.SECONDS.convert(30, TimeUnit.DAYS);
+        mCurrentTime += timeToElapse;
+        setCurrentTimeForTestMode(mCurrentTime);
+        binaryDictionary.flushWithGC();
     }
 
     private void forcePassingLongTime(final BinaryDictionary binaryDictionary) {
-        // Currently, probabilities are decayed when GC is run. All entries that have never been
-        // typed in 128 GCs would be removed.
-        final int count = 128;
-        for (int i = 0; i < count; i++) {
-            binaryDictionary.getPropertyForTests(SET_NEEDS_TO_DECAY_FOR_TESTING_KEY);
-            binaryDictionary.flushWithGC();
+        // 365 days.
+        final int timeToElapse = (int)TimeUnit.SECONDS.convert(365, TimeUnit.DAYS);
+        mCurrentTime += timeToElapse;
+        setCurrentTimeForTestMode(mCurrentTime);
+        binaryDictionary.flushWithGC();
+    }
+
+    private File createEmptyDictionaryAndGetFile(final String dictId,
+            final int formatVersion) throws IOException {
+        if (formatVersion == FormatSpec.VERSION4
+                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING
+                || formatVersion == FormatSpec.VERSION4_DEV) {
+            return createEmptyVer4DictionaryAndGetFile(dictId, formatVersion);
+        } else {
+            throw new IOException("Dictionary format version " + formatVersion
+                    + " is not supported.");
         }
     }
 
-    private File createEmptyDictionaryAndGetFile(final String filename) throws IOException {
-        final File file = File.createTempFile(filename, TEST_DICT_FILE_EXTENSION,
+    private File createEmptyVer4DictionaryAndGetFile(final String dictId, final int formatVersion)
+            throws IOException {
+        final File file = File.createTempFile(dictId, TEST_DICT_FILE_EXTENSION,
                 getContext().getCacheDir());
-        Map<String, String> attributeMap = new HashMap<String, String>();
-        attributeMap.put(FormatSpec.FileHeader.SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE,
-                FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
-        attributeMap.put(FormatSpec.FileHeader.USES_FORGETTING_CURVE_ATTRIBUTE,
-                FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
-        if (BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(),
-                3 /* dictVersion */, attributeMap)) {
+        FileUtils.deleteRecursively(file);
+        Map<String, String> attributeMap = new HashMap<>();
+        attributeMap.put(DictionaryHeader.DICTIONARY_ID_KEY, dictId);
+        attributeMap.put(DictionaryHeader.DICTIONARY_VERSION_KEY,
+                String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
+        attributeMap.put(DictionaryHeader.USES_FORGETTING_CURVE_KEY,
+                DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+        attributeMap.put(DictionaryHeader.HAS_HISTORICAL_INFO_KEY,
+                DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), formatVersion,
+                LocaleUtils.constructLocaleFromString(TEST_LOCALE), attributeMap)) {
             return file;
         } else {
-            throw new IOException("Empty dictionary cannot be created.");
+            throw new IOException("Empty dictionary " + file.getAbsolutePath()
+                    + " cannot be created. Foramt version: " + formatVersion);
         }
     }
 
+    private static int setCurrentTimeForTestMode(final int currentTime) {
+        return BinaryDictionaryUtils.setCurrentTimeForTest(currentTime);
+    }
+
+    private static int stopTestModeInNativeCode() {
+        return BinaryDictionaryUtils.setCurrentTimeForTest(-1);
+    }
+
+    public void testReadDictInJavaSide() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testReadDictInJavaSide(formatVersion);
+        }
+    }
+
+    private void testReadDictInJavaSide(final int formatVersion) {
+        setCurrentTimeForTestMode(mCurrentTime);
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ab", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "aaa", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "a", "aaa", DUMMY_PROBABILITY);
+        binaryDictionary.flushWithGC();
+        binaryDictionary.close();
+
+        final DictDecoder dictDecoder =
+                BinaryDictIOUtils.getDictDecoder(dictFile, 0, dictFile.length());
+        try {
+            final FusionDictionary dict =
+                    dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
+            PtNode ptNode = FusionDictionary.findWordInTree(dict.mRootNodeArray, "a");
+            assertNotNull(ptNode);
+            assertTrue(ptNode.isTerminal());
+            assertNotNull(ptNode.getBigram("aaa"));
+            ptNode = FusionDictionary.findWordInTree(dict.mRootNodeArray, "ab");
+            assertNotNull(ptNode);
+            assertTrue(ptNode.isTerminal());
+            ptNode = FusionDictionary.findWordInTree(dict.mRootNodeArray, "aaa");
+            assertNotNull(ptNode);
+            assertTrue(ptNode.isTerminal());
+        } catch (IOException e) {
+            fail("IOException while reading dictionary: " + e);
+        } catch (UnsupportedFormatException e) {
+            fail("Unsupported format: " + e);
+        }
+        dictFile.delete();
+    }
+
+    public void testControlCurrentTime() {
+        final int TEST_COUNT = 1000;
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+        final int startTime = stopTestModeInNativeCode();
+        for (int i = 0; i < TEST_COUNT; i++) {
+            final int currentTime = random.nextInt(Integer.MAX_VALUE);
+            final int currentTimeInNativeCode = setCurrentTimeForTestMode(currentTime);
+            assertEquals(currentTime, currentTimeInNativeCode);
+        }
+        final int endTime = stopTestModeInNativeCode();
+        final int MAX_ALLOWED_ELAPSED_TIME = 10;
+        assertTrue(startTime <= endTime && endTime <= startTime + MAX_ALLOWED_ELAPSED_TIME);
+    }
+
     public void testAddValidAndInvalidWords() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddValidAndInvalidWords(formatVersion);
+        }
+    }
+
+    private void testAddValidAndInvalidWords(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -99,46 +224,44 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
-        binaryDictionary.addUnigramWord("a", Dictionary.NOT_A_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", Dictionary.NOT_A_PROBABILITY);
         assertFalse(binaryDictionary.isValidWord("a"));
-        binaryDictionary.addUnigramWord("a", Dictionary.NOT_A_PROBABILITY);
-        assertFalse(binaryDictionary.isValidWord("a"));
-        binaryDictionary.addUnigramWord("a", Dictionary.NOT_A_PROBABILITY);
-        assertFalse(binaryDictionary.isValidWord("a"));
-        binaryDictionary.addUnigramWord("a", Dictionary.NOT_A_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", Dictionary.NOT_A_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", Dictionary.NOT_A_PROBABILITY);
         assertTrue(binaryDictionary.isValidWord("a"));
 
-        binaryDictionary.addUnigramWord("b", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "b", DUMMY_PROBABILITY);
         assertTrue(binaryDictionary.isValidWord("b"));
 
-        final int unigramProbability = binaryDictionary.getFrequency("a");
-        binaryDictionary.addBigramWords("a", "b", Dictionary.NOT_A_PROBABILITY);
-        assertFalse(binaryDictionary.isValidBigram("a", "b"));
-        binaryDictionary.addBigramWords("a", "b", Dictionary.NOT_A_PROBABILITY);
-        assertFalse(binaryDictionary.isValidBigram("a", "b"));
-        binaryDictionary.addBigramWords("a", "b", Dictionary.NOT_A_PROBABILITY);
-        assertFalse(binaryDictionary.isValidBigram("a", "b"));
-        binaryDictionary.addBigramWords("a", "b", Dictionary.NOT_A_PROBABILITY);
-        assertTrue(binaryDictionary.isValidBigram("a", "b"));
+        addBigramWords(binaryDictionary, "a", "b", Dictionary.NOT_A_PROBABILITY);
+        assertFalse(isValidBigram(binaryDictionary, "a", "b"));
+        addBigramWords(binaryDictionary, "a", "b", Dictionary.NOT_A_PROBABILITY);
+        assertTrue(isValidBigram(binaryDictionary, "a", "b"));
 
-        binaryDictionary.addUnigramWord("c", DUMMY_PROBABILITY);
-        binaryDictionary.addBigramWords("a", "c", DUMMY_PROBABILITY);
-        assertTrue(binaryDictionary.isValidBigram("a", "c"));
+        addUnigramWord(binaryDictionary, "c", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "a", "c", DUMMY_PROBABILITY);
+        assertTrue(isValidBigram(binaryDictionary, "a", "c"));
 
         // Add bigrams of not valid unigrams.
-        binaryDictionary.addBigramWords("x", "y", Dictionary.NOT_A_PROBABILITY);
-        assertFalse(binaryDictionary.isValidBigram("x", "y"));
-        binaryDictionary.addBigramWords("x", "y", DUMMY_PROBABILITY);
-        assertFalse(binaryDictionary.isValidBigram("x", "y"));
+        addBigramWords(binaryDictionary, "x", "y", Dictionary.NOT_A_PROBABILITY);
+        assertFalse(isValidBigram(binaryDictionary, "x", "y"));
+        addBigramWords(binaryDictionary, "x", "y", DUMMY_PROBABILITY);
+        assertFalse(isValidBigram(binaryDictionary, "x", "y"));
 
         binaryDictionary.close();
         dictFile.delete();
     }
 
     public void testDecayingProbability() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testDecayingProbability(formatVersion);
+        }
+    }
+
+    private void testDecayingProbability(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -146,50 +269,53 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
         assertTrue(binaryDictionary.isValidWord("a"));
         forcePassingShortTime(binaryDictionary);
         assertFalse(binaryDictionary.isValidWord("a"));
 
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        assertTrue(binaryDictionary.isValidWord("a"));
         forcePassingShortTime(binaryDictionary);
         assertTrue(binaryDictionary.isValidWord("a"));
         forcePassingLongTime(binaryDictionary);
         assertFalse(binaryDictionary.isValidWord("a"));
 
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("b", DUMMY_PROBABILITY);
-        binaryDictionary.addBigramWords("a", "b", DUMMY_PROBABILITY);
-        assertTrue(binaryDictionary.isValidBigram("a", "b"));
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "b", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "a", "b", DUMMY_PROBABILITY);
+        assertTrue(isValidBigram(binaryDictionary, "a", "b"));
         forcePassingShortTime(binaryDictionary);
-        assertFalse(binaryDictionary.isValidBigram("a", "b"));
+        assertFalse(isValidBigram(binaryDictionary, "a", "b"));
 
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("b", DUMMY_PROBABILITY);
-        binaryDictionary.addBigramWords("a", "b", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("b", DUMMY_PROBABILITY);
-        binaryDictionary.addBigramWords("a", "b", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("b", DUMMY_PROBABILITY);
-        binaryDictionary.addBigramWords("a", "b", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("a", DUMMY_PROBABILITY);
-        binaryDictionary.addUnigramWord("b", DUMMY_PROBABILITY);
-        binaryDictionary.addBigramWords("a", "b", DUMMY_PROBABILITY);
-        assertTrue(binaryDictionary.isValidBigram("a", "b"));
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "b", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "a", "b", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "b", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "a", "b", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "a", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "b", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "a", "b", DUMMY_PROBABILITY);
+        assertTrue(isValidBigram(binaryDictionary, "a", "b"));
         forcePassingShortTime(binaryDictionary);
-        assertTrue(binaryDictionary.isValidBigram("a", "b"));
+        assertTrue(isValidBigram(binaryDictionary, "a", "b"));
         forcePassingLongTime(binaryDictionary);
-        assertFalse(binaryDictionary.isValidBigram("a", "b"));
+        assertFalse(isValidBigram(binaryDictionary, "a", "b"));
 
         binaryDictionary.close();
         dictFile.delete();
     }
 
     public void testAddManyUnigramsToDecayingDict() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyUnigramsToDecayingDict(formatVersion);
+        }
+    }
+
+    private void testAddManyUnigramsToDecayingDict(final int formatVersion) {
         final int unigramCount = 30000;
         final int unigramTypedCount = 100000;
         final int codePointSetSize = 50;
@@ -198,16 +324,17 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
         BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        setCurrentTimeForTestMode(mCurrentTime);
 
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
-        final ArrayList<String> words = new ArrayList<String>();
+        final ArrayList<String> words = new ArrayList<>();
 
         for (int i = 0; i < unigramCount; i++) {
             final String word = CodePointUtils.generateWord(random, codePointSet);
@@ -215,32 +342,102 @@
         }
 
         final int maxUnigramCount = Integer.parseInt(
-                binaryDictionary.getPropertyForTests(BinaryDictionary.MAX_UNIGRAM_COUNT_QUERY));
+                binaryDictionary.getPropertyForTest(BinaryDictionary.MAX_UNIGRAM_COUNT_QUERY));
         for (int i = 0; i < unigramTypedCount; i++) {
             final String word = words.get(random.nextInt(words.size()));
-            binaryDictionary.addUnigramWord(word, DUMMY_PROBABILITY);
+            addUnigramWord(binaryDictionary, word, DUMMY_PROBABILITY);
 
             if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
                 final int unigramCountBeforeGC =
-                        Integer.parseInt(binaryDictionary.getPropertyForTests(
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
                                 BinaryDictionary.UNIGRAM_COUNT_QUERY));
                 while (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
-                    binaryDictionary.flushWithGC();
+                    forcePassingShortTime(binaryDictionary);
                 }
                 final int unigramCountAfterGC =
-                        Integer.parseInt(binaryDictionary.getPropertyForTests(
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
                                 BinaryDictionary.UNIGRAM_COUNT_QUERY));
                 assertTrue(unigramCountBeforeGC > unigramCountAfterGC);
             }
         }
 
-        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTests(
+        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTest(
                 BinaryDictionary.UNIGRAM_COUNT_QUERY)) > 0);
-        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTests(
+        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTest(
                 BinaryDictionary.UNIGRAM_COUNT_QUERY)) <= maxUnigramCount);
+        forcePassingLongTime(binaryDictionary);
+        assertEquals(0, Integer.parseInt(binaryDictionary.getPropertyForTest(
+                BinaryDictionary.UNIGRAM_COUNT_QUERY)));
+    }
+
+    public void testOverflowUnigrams() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testOverflowUnigrams(formatVersion);
+        }
+    }
+
+    private void testOverflowUnigrams(final int formatVersion) {
+        final int unigramCount = 20000;
+        final int eachUnigramTypedCount = 2;
+        final int strongUnigramTypedCount = 20;
+        final int weakUnigramTypedCount = 1;
+        final int codePointSetSize = 50;
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        setCurrentTimeForTestMode(mCurrentTime);
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+        final String strong = "strong";
+        final String weak = "weak";
+        for (int j = 0; j < strongUnigramTypedCount; j++) {
+            addUnigramWord(binaryDictionary, strong, DUMMY_PROBABILITY);
+        }
+        for (int j = 0; j < weakUnigramTypedCount; j++) {
+            addUnigramWord(binaryDictionary, weak, DUMMY_PROBABILITY);
+        }
+        assertTrue(binaryDictionary.isValidWord(strong));
+        assertTrue(binaryDictionary.isValidWord(weak));
+
+        for (int i = 0; i < unigramCount; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            for (int j = 0; j < eachUnigramTypedCount; j++) {
+                addUnigramWord(binaryDictionary, word, DUMMY_PROBABILITY);
+            }
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                final int unigramCountBeforeGC =
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
+                                BinaryDictionary.UNIGRAM_COUNT_QUERY));
+                assertTrue(binaryDictionary.isValidWord(strong));
+                assertTrue(binaryDictionary.isValidWord(weak));
+                binaryDictionary.flushWithGC();
+                final int unigramCountAfterGC =
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
+                                BinaryDictionary.UNIGRAM_COUNT_QUERY));
+                assertTrue(unigramCountBeforeGC > unigramCountAfterGC);
+                assertFalse(binaryDictionary.isValidWord(weak));
+                assertTrue(binaryDictionary.isValidWord(strong));
+                break;
+            }
+        }
     }
 
     public void testAddManyBigramsToDecayingDict() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyBigramsToDecayingDict(formatVersion);
+        }
+    }
+
+    private void testAddManyBigramsToDecayingDict(final int formatVersion) {
         final int unigramCount = 5000;
         final int bigramCount = 30000;
         final int bigramTypedCount = 100000;
@@ -250,17 +447,18 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
         BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        setCurrentTimeForTestMode(mCurrentTime);
 
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
-        final ArrayList<String> words = new ArrayList<String>();
-        final ArrayList<Pair<String, String>> bigrams = new ArrayList<Pair<String, String>>();
+        final ArrayList<String> words = new ArrayList<>();
+        final ArrayList<Pair<String, String>> bigrams = new ArrayList<>();
 
         for (int i = 0; i < unigramCount; ++i) {
             final String word = CodePointUtils.generateWord(random, codePointSet);
@@ -274,35 +472,221 @@
             }
             final String word0 = words.get(word0Index);
             final String word1 = words.get(word1Index);
-            final Pair<String, String> bigram = new Pair<String, String>(word0, word1);
+            final Pair<String, String> bigram = new Pair<>(word0, word1);
             bigrams.add(bigram);
         }
 
         final int maxBigramCount = Integer.parseInt(
-                binaryDictionary.getPropertyForTests(BinaryDictionary.MAX_BIGRAM_COUNT_QUERY));
+                binaryDictionary.getPropertyForTest(BinaryDictionary.MAX_BIGRAM_COUNT_QUERY));
         for (int i = 0; i < bigramTypedCount; ++i) {
             final Pair<String, String> bigram = bigrams.get(random.nextInt(bigrams.size()));
-            binaryDictionary.addUnigramWord(bigram.first, DUMMY_PROBABILITY);
-            binaryDictionary.addUnigramWord(bigram.second, DUMMY_PROBABILITY);
-            binaryDictionary.addBigramWords(bigram.first, bigram.second, DUMMY_PROBABILITY);
+            addUnigramWord(binaryDictionary, bigram.first, DUMMY_PROBABILITY);
+            addUnigramWord(binaryDictionary, bigram.second, DUMMY_PROBABILITY);
+            addBigramWords(binaryDictionary, bigram.first, bigram.second, DUMMY_PROBABILITY);
 
             if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
                 final int bigramCountBeforeGC =
-                        Integer.parseInt(binaryDictionary.getPropertyForTests(
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
                                 BinaryDictionary.BIGRAM_COUNT_QUERY));
                 while (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
-                    binaryDictionary.flushWithGC();
+                    forcePassingShortTime(binaryDictionary);
                 }
                 final int bigramCountAfterGC =
-                        Integer.parseInt(binaryDictionary.getPropertyForTests(
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
                                 BinaryDictionary.BIGRAM_COUNT_QUERY));
                 assertTrue(bigramCountBeforeGC > bigramCountAfterGC);
             }
         }
 
-        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTests(
+        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTest(
                 BinaryDictionary.BIGRAM_COUNT_QUERY)) > 0);
-        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTests(
+        assertTrue(Integer.parseInt(binaryDictionary.getPropertyForTest(
                 BinaryDictionary.BIGRAM_COUNT_QUERY)) <= maxBigramCount);
+        forcePassingLongTime(binaryDictionary);
+        assertEquals(0, Integer.parseInt(binaryDictionary.getPropertyForTest(
+                BinaryDictionary.BIGRAM_COUNT_QUERY)));
+    }
+
+    public void testOverflowBigrams() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testOverflowBigrams(formatVersion);
+        }
+    }
+
+    private void testOverflowBigrams(final int formatVersion) {
+        final int bigramCount = 20000;
+        final int unigramCount = 1000;
+        final int unigramTypedCount = 20;
+        final int eachBigramTypedCount = 2;
+        final int strongBigramTypedCount = 20;
+        final int weakBigramTypedCount = 1;
+        final int codePointSetSize = 50;
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        setCurrentTimeForTestMode(mCurrentTime);
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+        final ArrayList<String> words = new ArrayList<>();
+        for (int i = 0; i < unigramCount; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            words.add(word);
+            for (int j = 0; j < unigramTypedCount; j++) {
+                addUnigramWord(binaryDictionary, word, DUMMY_PROBABILITY);
+            }
+        }
+        final String strong = "strong";
+        final String weak = "weak";
+        final String target = "target";
+        for (int j = 0; j < unigramTypedCount; j++) {
+            addUnigramWord(binaryDictionary, strong, DUMMY_PROBABILITY);
+            addUnigramWord(binaryDictionary, weak, DUMMY_PROBABILITY);
+            addUnigramWord(binaryDictionary, target, DUMMY_PROBABILITY);
+        }
+        binaryDictionary.flushWithGC();
+        for (int j = 0; j < strongBigramTypedCount; j++) {
+            addBigramWords(binaryDictionary, strong, target, DUMMY_PROBABILITY);
+        }
+        for (int j = 0; j < weakBigramTypedCount; j++) {
+            addBigramWords(binaryDictionary, weak, target, DUMMY_PROBABILITY);
+        }
+        assertTrue(isValidBigram(binaryDictionary, strong, target));
+        assertTrue(isValidBigram(binaryDictionary, weak, target));
+
+        for (int i = 0; i < bigramCount; i++) {
+            final int word0Index = random.nextInt(words.size());
+            final String word0 = words.get(word0Index);
+            final int index = random.nextInt(words.size() - 1);
+            final int word1Index = (index >= word0Index) ? index + 1 : index;
+            final String word1 = words.get(word1Index);
+
+            for (int j = 0; j < eachBigramTypedCount; j++) {
+                addBigramWords(binaryDictionary, word0, word1, DUMMY_PROBABILITY);
+            }
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                final int bigramCountBeforeGC =
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
+                                BinaryDictionary.BIGRAM_COUNT_QUERY));
+                binaryDictionary.flushWithGC();
+                final int bigramCountAfterGC =
+                        Integer.parseInt(binaryDictionary.getPropertyForTest(
+                                BinaryDictionary.BIGRAM_COUNT_QUERY));
+                assertTrue(bigramCountBeforeGC > bigramCountAfterGC);
+                assertTrue(isValidBigram(binaryDictionary, strong, target));
+                assertFalse(isValidBigram(binaryDictionary, weak, target));
+                break;
+            }
+        }
+    }
+
+    public void testDictMigration() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, formatVersion);
+        }
+    }
+
+    private void testDictMigration(final int fromFormatVersion, final int toFormatVersion) {
+        setCurrentTimeForTestMode(mCurrentTime);
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", fromFormatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        addUnigramWord(binaryDictionary, "aaa", DUMMY_PROBABILITY);
+        assertTrue(binaryDictionary.isValidWord("aaa"));
+        addUnigramWord(binaryDictionary, "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertFalse(binaryDictionary.isValidWord("bbb"));
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "ccc", DUMMY_PROBABILITY);
+        addUnigramWord(binaryDictionary, "abc", DUMMY_PROBABILITY);
+        addBigramWords(binaryDictionary, "aaa", "abc", DUMMY_PROBABILITY);
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "abc"));
+        addBigramWords(binaryDictionary, "aaa", "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertFalse(isValidBigram(binaryDictionary, "aaa", "bbb"));
+
+        assertEquals(fromFormatVersion, binaryDictionary.getFormatVersion());
+        assertTrue(binaryDictionary.migrateTo(toFormatVersion));
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertEquals(toFormatVersion, binaryDictionary.getFormatVersion());
+        assertTrue(binaryDictionary.isValidWord("aaa"));
+        assertFalse(binaryDictionary.isValidWord("bbb"));
+        assertTrue(binaryDictionary.getFrequency("aaa") < binaryDictionary.getFrequency("ccc"));
+        addUnigramWord(binaryDictionary, "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertTrue(binaryDictionary.isValidWord("bbb"));
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "abc"));
+        assertFalse(isValidBigram(binaryDictionary, "aaa", "bbb"));
+        addBigramWords(binaryDictionary, "aaa", "bbb", Dictionary.NOT_A_PROBABILITY);
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "bbb"));
+        binaryDictionary.close();
+        dictFile.delete();
+    }
+
+    public void testBeginningOfSentence() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            if (supportsBeginningOfSentence(formatVersion)) {
+                testBeginningOfSentence(formatVersion);
+            }
+        }
+    }
+
+    private void testBeginningOfSentence(final int formatVersion) {
+        setCurrentTimeForTestMode(mCurrentTime);
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        binaryDictionary.addUnigramEntry("", DUMMY_PROBABILITY, "" /* shortcutTarget */,
+                BinaryDictionary.NOT_A_PROBABILITY /* shortcutProbability */,
+                true /* isBeginningOfSentence */, true /* isNotAWord */, false /* isBlacklisted */,
+                mCurrentTime);
+        final PrevWordsInfo prevWordsInfoStartOfSentence = PrevWordsInfo.BEGINNING_OF_SENTENCE;
+        addUnigramWord(binaryDictionary, "aaa", DUMMY_PROBABILITY);
+        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", DUMMY_PROBABILITY,
+                mCurrentTime);
+        assertTrue(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "aaa"));
+        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", DUMMY_PROBABILITY,
+                mCurrentTime);
+        addUnigramWord(binaryDictionary, "bbb", DUMMY_PROBABILITY);
+        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "bbb", DUMMY_PROBABILITY,
+                mCurrentTime);
+        assertTrue(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "aaa"));
+        assertTrue(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "bbb"));
+
+        forcePassingLongTime(binaryDictionary);
+        assertFalse(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "aaa"));
+        assertFalse(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "bbb"));
+
+        addUnigramWord(binaryDictionary, "aaa", DUMMY_PROBABILITY);
+        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", DUMMY_PROBABILITY,
+                mCurrentTime);
+        addUnigramWord(binaryDictionary, "bbb", DUMMY_PROBABILITY);
+        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "bbb", DUMMY_PROBABILITY,
+                mCurrentTime);
+        assertTrue(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "aaa"));
+        assertTrue(binaryDictionary.isValidNgram(prevWordsInfoStartOfSentence, "bbb"));
+        binaryDictionary.close();
+        dictFile.delete();
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index 5b8f0e9..6ba18d6 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -21,8 +21,14 @@
 import android.text.TextUtils;
 import android.util.Pair;
 
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
 import com.android.inputmethod.latin.makedict.CodePointUtils;
 import com.android.inputmethod.latin.makedict.FormatSpec;
+import com.android.inputmethod.latin.makedict.WeightedString;
+import com.android.inputmethod.latin.makedict.WordProperty;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
+import com.android.inputmethod.latin.utils.FileUtils;
+import com.android.inputmethod.latin.utils.LanguageModelParam;
 
 import java.io.File;
 import java.io.IOException;
@@ -33,39 +39,60 @@
 import java.util.Map;
 import java.util.Random;
 
+// TODO Use the seed passed as an argument for makedict test.
 @LargeTest
 public class BinaryDictionaryTests extends AndroidTestCase {
     private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
     private static final String TEST_LOCALE = "test";
+    private static final int[] DICT_FORMAT_VERSIONS =
+            new int[] { FormatSpec.VERSION4, FormatSpec.VERSION4_DEV };
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+    private static boolean canCheckBigramProbability(final int formatVersion) {
+        return formatVersion > FormatSpec.VERSION401;
     }
 
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
+    private static boolean supportsBeginningOfSentence(final int formatVersion) {
+        return formatVersion > FormatSpec.VERSION401;
     }
 
-    private File createEmptyDictionaryAndGetFile(final String filename) throws IOException {
-        final File file = File.createTempFile(filename, TEST_DICT_FILE_EXTENSION,
+    private File createEmptyDictionaryAndGetFile(final String dictId,
+            final int formatVersion) throws IOException {
+        if (formatVersion == FormatSpec.VERSION4
+                || formatVersion == FormatSpec.VERSION4_ONLY_FOR_TESTING
+                || formatVersion == FormatSpec.VERSION4_DEV) {
+            return createEmptyVer4DictionaryAndGetFile(dictId, formatVersion);
+        } else {
+            throw new IOException("Dictionary format version " + formatVersion
+                    + " is not supported.");
+        }
+    }
+
+    private File createEmptyVer4DictionaryAndGetFile(final String dictId,
+            final int formatVersion) throws IOException {
+        final File file = File.createTempFile(dictId, TEST_DICT_FILE_EXTENSION,
                 getContext().getCacheDir());
-        Map<String, String> attributeMap = new HashMap<String, String>();
-        attributeMap.put(FormatSpec.FileHeader.SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE,
-                FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE);
-        if (BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(),
-                3 /* dictVersion */, attributeMap)) {
+        file.delete();
+        file.mkdir();
+        Map<String, String> attributeMap = new HashMap<>();
+        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), formatVersion,
+                Locale.ENGLISH, attributeMap)) {
             return file;
         } else {
-            throw new IOException("Empty dictionary cannot be created.");
+            throw new IOException("Empty dictionary " + file.getAbsolutePath()
+                    + " cannot be created. Format version: " + formatVersion);
         }
     }
 
     public void testIsValidDictionary() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testIsValidDictionary(formatVersion);
+        }
+    }
+
+    private void testIsValidDictionary(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -77,7 +104,7 @@
         binaryDictionary.close();
         assertFalse("binaryDictionary must be invalid after closing.",
                 binaryDictionary.isValidDictionary());
-        dictFile.delete();
+        FileUtils.deleteRecursively(dictFile);
         binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(), 0 /* offset */,
                 dictFile.length(), true /* useFullEditDistance */, Locale.getDefault(),
                 TEST_LOCALE, true /* isUpdatable */);
@@ -86,10 +113,126 @@
         binaryDictionary.close();
     }
 
-    public void testAddUnigramWord() {
+    public void testConstructingDictionaryOnMemory() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testConstructingDictionaryOnMemory(formatVersion);
+        }
+    }
+
+    private void testConstructingDictionaryOnMemory(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        FileUtils.deleteRecursively(dictFile);
+        assertFalse(dictFile.exists());
+        BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                true /* useFullEditDistance */, Locale.getDefault(), TEST_LOCALE, formatVersion,
+                new HashMap<String, String>());
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertEquals(formatVersion, binaryDictionary.getFormatVersion());
+        final int probability = 100;
+        addUnigramWord(binaryDictionary, "word", probability);
+        assertEquals(probability, binaryDictionary.getFrequency("word"));
+        assertFalse(dictFile.exists());
+        binaryDictionary.flush();
+        assertTrue(dictFile.exists());
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertEquals(formatVersion, binaryDictionary.getFormatVersion());
+        assertEquals(probability, binaryDictionary.getFrequency("word"));
+        binaryDictionary.close();
+        dictFile.delete();
+    }
+
+    public void testAddTooLongWord() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddTooLongWord(formatVersion);
+        }
+    }
+
+    private void testAddTooLongWord(final int formatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        final StringBuffer stringBuilder = new StringBuffer();
+        for (int i = 0; i < Constants.DICTIONARY_MAX_WORD_LENGTH; i++) {
+            stringBuilder.append('a');
+        }
+        final String validLongWord = stringBuilder.toString();
+        stringBuilder.append('a');
+        final String invalidLongWord = stringBuilder.toString();
+        final int probability = 100;
+        addUnigramWord(binaryDictionary, "aaa", probability);
+        addUnigramWord(binaryDictionary, validLongWord, probability);
+        addUnigramWord(binaryDictionary, invalidLongWord, probability);
+        // Too long short cut.
+        binaryDictionary.addUnigramEntry("a", probability, invalidLongWord,
+                10 /* shortcutProbability */, false /* isBeginningOfSentence */,
+                false /* isNotAWord */, false /* isBlacklisted */,
+                BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+        addUnigramWord(binaryDictionary, "abc", probability);
+        final int updatedProbability = 200;
+        // Update.
+        addUnigramWord(binaryDictionary, validLongWord, updatedProbability);
+        addUnigramWord(binaryDictionary, invalidLongWord, updatedProbability);
+        addUnigramWord(binaryDictionary, "abc", updatedProbability);
+
+        assertEquals(probability, binaryDictionary.getFrequency("aaa"));
+        assertEquals(updatedProbability, binaryDictionary.getFrequency(validLongWord));
+        assertEquals(BinaryDictionary.NOT_A_PROBABILITY,
+                binaryDictionary.getFrequency(invalidLongWord));
+        assertEquals(updatedProbability, binaryDictionary.getFrequency("abc"));
+        dictFile.delete();
+    }
+
+    private static void addUnigramWord(final BinaryDictionary binaryDictionary, final String word,
+            final int probability) {
+        binaryDictionary.addUnigramEntry(word, probability, "" /* shortcutTarget */,
+                BinaryDictionary.NOT_A_PROBABILITY /* shortcutProbability */,
+                false /* isBeginningOfSentence */, false /* isNotAWord */,
+                false /* isBlacklisted */, BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+    }
+
+    private static void addBigramWords(final BinaryDictionary binaryDictionary, final String word0,
+            final String word1, final int probability) {
+        binaryDictionary.addNgramEntry(new PrevWordsInfo(new WordInfo(word0)), word1, probability,
+                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+    }
+
+    private static boolean isValidBigram(final BinaryDictionary binaryDictionary,
+            final String word0, final String word1) {
+        return binaryDictionary.isValidNgram(new PrevWordsInfo(new WordInfo(word0)), word1);
+    }
+
+    private static void removeBigramEntry(final BinaryDictionary binaryDictionary,
+            final String word0, final String word1) {
+        binaryDictionary.removeNgramEntry(new PrevWordsInfo(new WordInfo(word0)), word1);
+    }
+
+    private static int getBigramProbability(final BinaryDictionary binaryDictionary,
+            final String word0,  final String word1) {
+        return binaryDictionary.getNgramProbability(new PrevWordsInfo(new WordInfo(word0)), word1);
+    }
+
+    public void testAddUnigramWord() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddUnigramWord(formatVersion);
+        }
+    }
+
+    private void testAddUnigramWord(final int formatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -98,21 +241,21 @@
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
         final int probability = 100;
-        binaryDictionary.addUnigramWord("aaa", probability);
+        addUnigramWord(binaryDictionary, "aaa", probability);
         // Reallocate and create.
-        binaryDictionary.addUnigramWord("aab", probability);
+        addUnigramWord(binaryDictionary, "aab", probability);
         // Insert into children.
-        binaryDictionary.addUnigramWord("aac", probability);
+        addUnigramWord(binaryDictionary, "aac", probability);
         // Make terminal.
-        binaryDictionary.addUnigramWord("aa", probability);
+        addUnigramWord(binaryDictionary, "aa", probability);
         // Create children.
-        binaryDictionary.addUnigramWord("aaaa", probability);
+        addUnigramWord(binaryDictionary, "aaaa", probability);
         // Reallocate and make termianl.
-        binaryDictionary.addUnigramWord("a", probability);
+        addUnigramWord(binaryDictionary, "a", probability);
 
         final int updatedProbability = 200;
         // Update.
-        binaryDictionary.addUnigramWord("aaa", updatedProbability);
+        addUnigramWord(binaryDictionary, "aaa", updatedProbability);
 
         assertEquals(probability, binaryDictionary.getFrequency("aab"));
         assertEquals(probability, binaryDictionary.getFrequency("aac"));
@@ -125,13 +268,19 @@
     }
 
     public void testRandomlyAddUnigramWord() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRandomlyAddUnigramWord(formatVersion);
+        }
+    }
+
+    private void testRandomlyAddUnigramWord(final int formatVersion) {
         final int wordCount = 1000;
         final int codePointSetSize = 50;
         final long seed = System.currentTimeMillis();
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -139,7 +288,7 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
-        final HashMap<String, Integer> probabilityMap = new HashMap<String, Integer>();
+        final HashMap<String, Integer> probabilityMap = new HashMap<>();
         // Test a word that isn't contained within the dictionary.
         final Random random = new Random(seed);
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
@@ -148,7 +297,7 @@
             probabilityMap.put(word, random.nextInt(0xFF));
         }
         for (String word : probabilityMap.keySet()) {
-            binaryDictionary.addUnigramWord(word, probabilityMap.get(word));
+            addUnigramWord(binaryDictionary, word, probabilityMap.get(word));
         }
         for (String word : probabilityMap.keySet()) {
             assertEquals(word, (int)probabilityMap.get(word), binaryDictionary.getFrequency(word));
@@ -157,9 +306,15 @@
     }
 
     public void testAddBigramWords() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddBigramWords(formatVersion);
+        }
+    }
+
+    private void testAddBigramWords(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -168,59 +323,73 @@
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
         final int unigramProbability = 100;
-        final int bigramProbability = 10;
-        final int updatedBigramProbability = 15;
-        binaryDictionary.addUnigramWord("aaa", unigramProbability);
-        binaryDictionary.addUnigramWord("abb", unigramProbability);
-        binaryDictionary.addUnigramWord("bcc", unigramProbability);
-        binaryDictionary.addBigramWords("aaa", "abb", bigramProbability);
-        binaryDictionary.addBigramWords("aaa", "bcc", bigramProbability);
-        binaryDictionary.addBigramWords("abb", "aaa", bigramProbability);
-        binaryDictionary.addBigramWords("abb", "bcc", bigramProbability);
+        final int bigramProbability = 150;
+        final int updatedBigramProbability = 200;
+        addUnigramWord(binaryDictionary, "aaa", unigramProbability);
+        addUnigramWord(binaryDictionary, "abb", unigramProbability);
+        addUnigramWord(binaryDictionary, "bcc", unigramProbability);
+        addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability);
+        addBigramWords(binaryDictionary, "aaa", "bcc", bigramProbability);
+        addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability);
+        addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability);
 
-        final int probability = binaryDictionary.calculateProbability(unigramProbability,
-                bigramProbability);
-        assertEquals(true, binaryDictionary.isValidBigram("aaa", "abb"));
-        assertEquals(true, binaryDictionary.isValidBigram("aaa", "bcc"));
-        assertEquals(true, binaryDictionary.isValidBigram("abb", "aaa"));
-        assertEquals(true, binaryDictionary.isValidBigram("abb", "bcc"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "abb"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "bcc"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("abb", "aaa"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("abb", "bcc"));
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "abb"));
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "bcc"));
+        assertTrue(isValidBigram(binaryDictionary, "abb", "aaa"));
+        assertTrue(isValidBigram(binaryDictionary, "abb", "bcc"));
+        if (canCheckBigramProbability(formatVersion)) {
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "abb"));
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "bcc"));
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "aaa"));
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "bcc"));
+        }
 
-        binaryDictionary.addBigramWords("aaa", "abb", updatedBigramProbability);
-        final int updatedProbability = binaryDictionary.calculateProbability(unigramProbability,
-                updatedBigramProbability);
-        assertEquals(updatedProbability, binaryDictionary.getBigramProbability("aaa", "abb"));
+        addBigramWords(binaryDictionary, "aaa", "abb", updatedBigramProbability);
+        if (canCheckBigramProbability(formatVersion)) {
+            assertEquals(updatedBigramProbability,
+                    getBigramProbability(binaryDictionary, "aaa", "abb"));
+        }
 
-        assertEquals(false, binaryDictionary.isValidBigram("bcc", "aaa"));
-        assertEquals(false, binaryDictionary.isValidBigram("bcc", "bbc"));
-        assertEquals(false, binaryDictionary.isValidBigram("aaa", "aaa"));
+        assertFalse(isValidBigram(binaryDictionary, "bcc", "aaa"));
+        assertFalse(isValidBigram(binaryDictionary, "bcc", "bbc"));
+        assertFalse(isValidBigram(binaryDictionary, "aaa", "aaa"));
         assertEquals(Dictionary.NOT_A_PROBABILITY,
-                binaryDictionary.getBigramProbability("bcc", "aaa"));
+                getBigramProbability(binaryDictionary, "bcc", "aaa"));
         assertEquals(Dictionary.NOT_A_PROBABILITY,
-                binaryDictionary.getBigramProbability("bcc", "bbc"));
+                getBigramProbability(binaryDictionary, "bcc", "bbc"));
         assertEquals(Dictionary.NOT_A_PROBABILITY,
-                binaryDictionary.getBigramProbability("aaa", "aaa"));
+                getBigramProbability(binaryDictionary, "aaa", "aaa"));
 
         // Testing bigram link.
-        binaryDictionary.addUnigramWord("abcde", unigramProbability);
-        binaryDictionary.addUnigramWord("fghij", unigramProbability);
-        binaryDictionary.addBigramWords("abcde", "fghij", bigramProbability);
-        binaryDictionary.addUnigramWord("fgh", unigramProbability);
-        binaryDictionary.addUnigramWord("abc", unigramProbability);
-        binaryDictionary.addUnigramWord("f", unigramProbability);
-        assertEquals(probability, binaryDictionary.getBigramProbability("abcde", "fghij"));
+        addUnigramWord(binaryDictionary, "abcde", unigramProbability);
+        addUnigramWord(binaryDictionary, "fghij", unigramProbability);
+        addBigramWords(binaryDictionary, "abcde", "fghij", bigramProbability);
+        addUnigramWord(binaryDictionary, "fgh", unigramProbability);
+        addUnigramWord(binaryDictionary, "abc", unigramProbability);
+        addUnigramWord(binaryDictionary, "f", unigramProbability);
+
+        if (canCheckBigramProbability(formatVersion)) {
+            assertEquals(bigramProbability,
+                    getBigramProbability(binaryDictionary, "abcde", "fghij"));
+        }
         assertEquals(Dictionary.NOT_A_PROBABILITY,
-                binaryDictionary.getBigramProbability("abcde", "fgh"));
-        binaryDictionary.addBigramWords("abcde", "fghij", updatedBigramProbability);
-        assertEquals(updatedProbability, binaryDictionary.getBigramProbability("abcde", "fghij"));
+                getBigramProbability(binaryDictionary, "abcde", "fgh"));
+        addBigramWords(binaryDictionary, "abcde", "fghij", updatedBigramProbability);
+        if (canCheckBigramProbability(formatVersion)) {
+            assertEquals(updatedBigramProbability,
+                    getBigramProbability(binaryDictionary, "abcde", "fghij"));
+        }
 
         dictFile.delete();
     }
 
     public void testRandomlyAddBigramWords() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRandomlyAddBigramWords(formatVersion);
+        }
+    }
+
+    private void testRandomlyAddBigramWords(final int formatVersion) {
         final int wordCount = 100;
         final int bigramCount = 1000;
         final int codePointSetSize = 50;
@@ -229,7 +398,7 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -237,19 +406,18 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
-        final ArrayList<String> words = new ArrayList<String>();
-        final ArrayList<Pair<String, String>> bigramWords = new ArrayList<Pair<String,String>>();
+        final ArrayList<String> words = new ArrayList<>();
+        final ArrayList<Pair<String, String>> bigramWords = new ArrayList<>();
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
-        final HashMap<String, Integer> unigramProbabilities = new HashMap<String, Integer>();
-        final HashMap<Pair<String, String>, Integer> bigramProbabilities =
-                new HashMap<Pair<String, String>, Integer>();
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities = new HashMap<>();
 
         for (int i = 0; i < wordCount; ++i) {
             final String word = CodePointUtils.generateWord(random, codePointSet);
             words.add(word);
             final int unigramProbability = random.nextInt(0xFF);
             unigramProbabilities.put(word, unigramProbability);
-            binaryDictionary.addUnigramWord(word, unigramProbability);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
         }
 
         for (int i = 0; i < bigramCount; i++) {
@@ -258,29 +426,38 @@
             if (TextUtils.equals(word0, word1)) {
                 continue;
             }
-            final Pair<String, String> bigram = new Pair<String, String>(word0, word1);
+            final Pair<String, String> bigram = new Pair<>(word0, word1);
             bigramWords.add(bigram);
-            final int bigramProbability = random.nextInt(0xF);
+            final int unigramProbability = unigramProbabilities.get(word1);
+            final int bigramProbability =
+                    unigramProbability + random.nextInt(0xFF - unigramProbability);
             bigramProbabilities.put(bigram, bigramProbability);
-            binaryDictionary.addBigramWords(word0, word1, bigramProbability);
+            addBigramWords(binaryDictionary, word0, word1, bigramProbability);
         }
 
         for (final Pair<String, String> bigram : bigramWords) {
-            final int unigramProbability = unigramProbabilities.get(bigram.second);
             final int bigramProbability = bigramProbabilities.get(bigram);
-            final int probability = binaryDictionary.calculateProbability(unigramProbability,
-                    bigramProbability);
-            assertEquals(probability,
-                    binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+            assertEquals(bigramProbability != Dictionary.NOT_A_PROBABILITY,
+                    isValidBigram(binaryDictionary, bigram.first, bigram.second));
+            if (canCheckBigramProbability(formatVersion)) {
+                assertEquals(bigramProbability,
+                        getBigramProbability(binaryDictionary, bigram.first, bigram.second));
+            }
         }
 
         dictFile.delete();
     }
 
     public void testRemoveBigramWords() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRemoveBigramWords(formatVersion);
+        }
+    }
+
+    private void testRemoveBigramWords(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -288,45 +465,51 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
         final int unigramProbability = 100;
-        final int bigramProbability = 10;
-        binaryDictionary.addUnigramWord("aaa", unigramProbability);
-        binaryDictionary.addUnigramWord("abb", unigramProbability);
-        binaryDictionary.addUnigramWord("bcc", unigramProbability);
-        binaryDictionary.addBigramWords("aaa", "abb", bigramProbability);
-        binaryDictionary.addBigramWords("aaa", "bcc", bigramProbability);
-        binaryDictionary.addBigramWords("abb", "aaa", bigramProbability);
-        binaryDictionary.addBigramWords("abb", "bcc", bigramProbability);
+        final int bigramProbability = 150;
+        addUnigramWord(binaryDictionary, "aaa", unigramProbability);
+        addUnigramWord(binaryDictionary, "abb", unigramProbability);
+        addUnigramWord(binaryDictionary, "bcc", unigramProbability);
+        addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability);
+        addBigramWords(binaryDictionary, "aaa", "bcc", bigramProbability);
+        addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability);
+        addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability);
 
-        assertEquals(true, binaryDictionary.isValidBigram("aaa", "abb"));
-        assertEquals(true, binaryDictionary.isValidBigram("aaa", "bcc"));
-        assertEquals(true, binaryDictionary.isValidBigram("abb", "aaa"));
-        assertEquals(true, binaryDictionary.isValidBigram("abb", "bcc"));
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "abb"));
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "bcc"));
+        assertTrue(isValidBigram(binaryDictionary, "abb", "aaa"));
+        assertTrue(isValidBigram(binaryDictionary, "abb", "bcc"));
 
-        binaryDictionary.removeBigramWords("aaa", "abb");
-        assertEquals(false, binaryDictionary.isValidBigram("aaa", "abb"));
-        binaryDictionary.addBigramWords("aaa", "abb", bigramProbability);
-        assertEquals(true, binaryDictionary.isValidBigram("aaa", "abb"));
+        removeBigramEntry(binaryDictionary, "aaa", "abb");
+        assertFalse(isValidBigram(binaryDictionary, "aaa", "abb"));
+        addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability);
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "abb"));
 
 
-        binaryDictionary.removeBigramWords("aaa", "bcc");
-        assertEquals(false, binaryDictionary.isValidBigram("aaa", "bcc"));
-        binaryDictionary.removeBigramWords("abb", "aaa");
-        assertEquals(false, binaryDictionary.isValidBigram("abb", "aaa"));
-        binaryDictionary.removeBigramWords("abb", "bcc");
-        assertEquals(false, binaryDictionary.isValidBigram("abb", "bcc"));
+        removeBigramEntry(binaryDictionary, "aaa", "bcc");
+        assertFalse(isValidBigram(binaryDictionary, "aaa", "bcc"));
+        removeBigramEntry(binaryDictionary, "abb", "aaa");
+        assertFalse(isValidBigram(binaryDictionary, "abb", "aaa"));
+        removeBigramEntry(binaryDictionary, "abb", "bcc");
+        assertFalse(isValidBigram(binaryDictionary, "abb", "bcc"));
 
-        binaryDictionary.removeBigramWords("aaa", "abb");
+        removeBigramEntry(binaryDictionary, "aaa", "abb");
         // Test remove non-existing bigram operation.
-        binaryDictionary.removeBigramWords("aaa", "abb");
-        binaryDictionary.removeBigramWords("bcc", "aaa");
+        removeBigramEntry(binaryDictionary, "aaa", "abb");
+        removeBigramEntry(binaryDictionary, "bcc", "aaa");
 
         dictFile.delete();
     }
 
     public void testFlushDictionary() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testFlushDictionary(formatVersion);
+        }
+    }
+
+    private void testFlushDictionary(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -335,8 +518,8 @@
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
         final int probability = 100;
-        binaryDictionary.addUnigramWord("aaa", probability);
-        binaryDictionary.addUnigramWord("abcd", probability);
+        addUnigramWord(binaryDictionary, "aaa", probability);
+        addUnigramWord(binaryDictionary, "abcd", probability);
         // Close without flushing.
         binaryDictionary.close();
 
@@ -347,8 +530,8 @@
         assertEquals(Dictionary.NOT_A_PROBABILITY, binaryDictionary.getFrequency("aaa"));
         assertEquals(Dictionary.NOT_A_PROBABILITY, binaryDictionary.getFrequency("abcd"));
 
-        binaryDictionary.addUnigramWord("aaa", probability);
-        binaryDictionary.addUnigramWord("abcd", probability);
+        addUnigramWord(binaryDictionary, "aaa", probability);
+        addUnigramWord(binaryDictionary, "abcd", probability);
         binaryDictionary.flush();
         binaryDictionary.close();
 
@@ -358,7 +541,7 @@
 
         assertEquals(probability, binaryDictionary.getFrequency("aaa"));
         assertEquals(probability, binaryDictionary.getFrequency("abcd"));
-        binaryDictionary.addUnigramWord("bcde", probability);
+        addUnigramWord(binaryDictionary, "bcde", probability);
         binaryDictionary.flush();
         binaryDictionary.close();
 
@@ -372,9 +555,15 @@
     }
 
     public void testFlushWithGCDictionary() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testFlushWithGCDictionary(formatVersion);
+        }
+    }
+
+    private void testFlushWithGCDictionary(final int formatVersion) {
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -383,40 +572,46 @@
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
         final int unigramProbability = 100;
-        final int bigramProbability = 10;
-        binaryDictionary.addUnigramWord("aaa", unigramProbability);
-        binaryDictionary.addUnigramWord("abb", unigramProbability);
-        binaryDictionary.addUnigramWord("bcc", unigramProbability);
-        binaryDictionary.addBigramWords("aaa", "abb", bigramProbability);
-        binaryDictionary.addBigramWords("aaa", "bcc", bigramProbability);
-        binaryDictionary.addBigramWords("abb", "aaa", bigramProbability);
-        binaryDictionary.addBigramWords("abb", "bcc", bigramProbability);
+        final int bigramProbability = 150;
+        addUnigramWord(binaryDictionary, "aaa", unigramProbability);
+        addUnigramWord(binaryDictionary, "abb", unigramProbability);
+        addUnigramWord(binaryDictionary, "bcc", unigramProbability);
+        addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability);
+        addBigramWords(binaryDictionary, "aaa", "bcc", bigramProbability);
+        addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability);
+        addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability);
         binaryDictionary.flushWithGC();
         binaryDictionary.close();
 
         binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
-        final int probability = binaryDictionary.calculateProbability(unigramProbability,
-                bigramProbability);
         assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
         assertEquals(unigramProbability, binaryDictionary.getFrequency("abb"));
         assertEquals(unigramProbability, binaryDictionary.getFrequency("bcc"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "abb"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "bcc"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("abb", "aaa"));
-        assertEquals(probability, binaryDictionary.getBigramProbability("abb", "bcc"));
-        assertEquals(false, binaryDictionary.isValidBigram("bcc", "aaa"));
-        assertEquals(false, binaryDictionary.isValidBigram("bcc", "bbc"));
-        assertEquals(false, binaryDictionary.isValidBigram("aaa", "aaa"));
+        if (canCheckBigramProbability(formatVersion)) {
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "abb"));
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "bcc"));
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "aaa"));
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "bcc"));
+        }
+        assertFalse(isValidBigram(binaryDictionary, "bcc", "aaa"));
+        assertFalse(isValidBigram(binaryDictionary, "bcc", "bbc"));
+        assertFalse(isValidBigram(binaryDictionary, "aaa", "aaa"));
         binaryDictionary.flushWithGC();
         binaryDictionary.close();
 
         dictFile.delete();
     }
 
-    // TODO: Evaluate performance of GC
     public void testAddBigramWordsAndFlashWithGC() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddBigramWordsAndFlashWithGC(formatVersion);
+        }
+    }
+
+    // TODO: Evaluate performance of GC
+    private void testAddBigramWordsAndFlashWithGC(final int formatVersion) {
         final int wordCount = 100;
         final int bigramCount = 1000;
         final int codePointSetSize = 30;
@@ -425,7 +620,7 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -434,19 +629,18 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
-        final ArrayList<String> words = new ArrayList<String>();
-        final ArrayList<Pair<String, String>> bigramWords = new ArrayList<Pair<String,String>>();
+        final ArrayList<String> words = new ArrayList<>();
+        final ArrayList<Pair<String, String>> bigramWords = new ArrayList<>();
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
-        final HashMap<String, Integer> unigramProbabilities = new HashMap<String, Integer>();
-        final HashMap<Pair<String, String>, Integer> bigramProbabilities =
-                new HashMap<Pair<String, String>, Integer>();
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities = new HashMap<>();
 
         for (int i = 0; i < wordCount; ++i) {
             final String word = CodePointUtils.generateWord(random, codePointSet);
             words.add(word);
             final int unigramProbability = random.nextInt(0xFF);
             unigramProbabilities.put(word, unigramProbability);
-            binaryDictionary.addUnigramWord(word, unigramProbability);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
         }
 
         for (int i = 0; i < bigramCount; i++) {
@@ -455,11 +649,13 @@
             if (TextUtils.equals(word0, word1)) {
                 continue;
             }
-            final Pair<String, String> bigram = new Pair<String, String>(word0, word1);
+            final Pair<String, String> bigram = new Pair<>(word0, word1);
             bigramWords.add(bigram);
-            final int bigramProbability = random.nextInt(0xF);
+            final int unigramProbability = unigramProbabilities.get(word1);
+            final int bigramProbability =
+                    unigramProbability + random.nextInt(0xFF - unigramProbability);
             bigramProbabilities.put(bigram, bigramProbability);
-            binaryDictionary.addBigramWords(word0, word1, bigramProbability);
+            addBigramWords(binaryDictionary, word0, word1, bigramProbability);
         }
 
         binaryDictionary.flushWithGC();
@@ -468,19 +664,27 @@
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
 
+
         for (final Pair<String, String> bigram : bigramWords) {
-            final int unigramProbability = unigramProbabilities.get(bigram.second);
             final int bigramProbability = bigramProbabilities.get(bigram);
-            final int probability = binaryDictionary.calculateProbability(unigramProbability,
-                    bigramProbability);
-            assertEquals(probability,
-                    binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+            assertEquals(bigramProbability != Dictionary.NOT_A_PROBABILITY,
+                    isValidBigram(binaryDictionary, bigram.first, bigram.second));
+            if (canCheckBigramProbability(formatVersion)) {
+                assertEquals(bigramProbability,
+                        getBigramProbability(binaryDictionary, bigram.first, bigram.second));
+            }
         }
 
         dictFile.delete();
     }
 
-    public void testRandomOperetionsAndFlashWithGC() {
+    public void testRandomOperationsAndFlashWithGC() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testRandomOperationsAndFlashWithGC(formatVersion);
+        }
+    }
+
+    private void testRandomOperationsAndFlashWithGC(final int formatVersion) {
         final int flashWithGCIterationCount = 50;
         final int operationCountInEachIteration = 200;
         final int initialUnigramCount = 100;
@@ -494,7 +698,7 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
@@ -502,18 +706,17 @@
         BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
                 0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                 Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
-        final ArrayList<String> words = new ArrayList<String>();
-        final ArrayList<Pair<String, String>> bigramWords = new ArrayList<Pair<String,String>>();
+        final ArrayList<String> words = new ArrayList<>();
+        final ArrayList<Pair<String, String>> bigramWords = new ArrayList<>();
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
-        final HashMap<String, Integer> unigramProbabilities = new HashMap<String, Integer>();
-        final HashMap<Pair<String, String>, Integer> bigramProbabilities =
-                new HashMap<Pair<String, String>, Integer>();
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities = new HashMap<>();
         for (int i = 0; i < initialUnigramCount; ++i) {
             final String word = CodePointUtils.generateWord(random, codePointSet);
             words.add(word);
             final int unigramProbability = random.nextInt(0xFF);
             unigramProbabilities.put(word, unigramProbability);
-            binaryDictionary.addUnigramWord(word, unigramProbability);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
         }
         binaryDictionary.flushWithGC();
         binaryDictionary.close();
@@ -529,7 +732,7 @@
                     words.add(word);
                     final int unigramProbability = random.nextInt(0xFF);
                     unigramProbabilities.put(word, unigramProbability);
-                    binaryDictionary.addUnigramWord(word, unigramProbability);
+                    addUnigramWord(binaryDictionary, word, unigramProbability);
                 }
                 // Add bigram.
                 if (random.nextFloat() < addBigramProb && words.size() > 2) {
@@ -543,11 +746,13 @@
                     if (TextUtils.equals(word0, word1)) {
                         continue;
                     }
-                    final int bigramProbability = random.nextInt(0xF);
-                    final Pair<String, String> bigram = new Pair<String, String>(word0, word1);
+                    final int unigramProbability = unigramProbabilities.get(word1);
+                    final int bigramProbability =
+                            unigramProbability + random.nextInt(0xFF - unigramProbability);
+                    final Pair<String, String> bigram = new Pair<>(word0, word1);
                     bigramWords.add(bigram);
                     bigramProbabilities.put(bigram, bigramProbability);
-                    binaryDictionary.addBigramWords(word0, word1, bigramProbability);
+                    addBigramWords(binaryDictionary, word0, word1, bigramProbability);
                 }
                 // Remove bigram.
                 if (random.nextFloat() < removeBigramProb && !bigramWords.isEmpty()) {
@@ -555,7 +760,7 @@
                     final Pair<String, String> bigram = bigramWords.get(bigramIndex);
                     bigramWords.remove(bigramIndex);
                     bigramProbabilities.remove(bigram);
-                    binaryDictionary.removeBigramWords(bigram.first, bigram.second);
+                    removeBigramEntry(binaryDictionary, bigram.first, bigram.second);
                 }
             }
 
@@ -568,17 +773,20 @@
             // Test whether the all bigram operations are collectlly handled.
             for (int i = 0; i < bigramWords.size(); i++) {
                 final Pair<String, String> bigram = bigramWords.get(i);
-                final int unigramProbability = unigramProbabilities.get(bigram.second);
                 final int probability;
                 if (bigramProbabilities.containsKey(bigram)) {
                     final int bigramProbability = bigramProbabilities.get(bigram);
-                    probability = binaryDictionary.calculateProbability(unigramProbability,
-                            bigramProbability);
+                    probability = bigramProbability;
                 } else {
                     probability = Dictionary.NOT_A_PROBABILITY;
                 }
-                assertEquals(probability,
-                        binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+
+                if (canCheckBigramProbability(formatVersion)) {
+                    assertEquals(probability,
+                            getBigramProbability(binaryDictionary, bigram.first, bigram.second));
+                }
+                assertEquals(probability != Dictionary.NOT_A_PROBABILITY,
+                        isValidBigram(binaryDictionary, bigram.first, bigram.second));
             }
             binaryDictionary.flushWithGC();
             binaryDictionary.close();
@@ -588,6 +796,12 @@
     }
 
     public void testAddManyUnigramsAndFlushWithGC() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyUnigramsAndFlushWithGC(formatVersion);
+        }
+    }
+
+    private void testAddManyUnigramsAndFlushWithGC(final int formatVersion) {
         final int flashWithGCIterationCount = 3;
         final int codePointSetSize = 50;
 
@@ -596,13 +810,13 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
 
-        final ArrayList<String> words = new ArrayList<String>();
-        final HashMap<String, Integer> unigramProbabilities = new HashMap<String, Integer>();
+        final ArrayList<String> words = new ArrayList<>();
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
 
         BinaryDictionary binaryDictionary;
@@ -615,7 +829,7 @@
                 words.add(word);
                 final int unigramProbability = random.nextInt(0xFF);
                 unigramProbabilities.put(word, unigramProbability);
-                binaryDictionary.addUnigramWord(word, unigramProbability);
+                addUnigramWord(binaryDictionary, word, unigramProbability);
             }
 
             for (int j = 0; j < words.size(); j++) {
@@ -632,6 +846,12 @@
     }
 
     public void testUnigramAndBigramCount() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testUnigramAndBigramCount(formatVersion);
+        }
+    }
+
+    private void testUnigramAndBigramCount(final int formatVersion) {
         final int flashWithGCIterationCount = 10;
         final int codePointSetSize = 50;
         final int unigramCountPerIteration = 1000;
@@ -641,13 +861,13 @@
 
         File dictFile = null;
         try {
-            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary");
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
         } catch (IOException e) {
             fail("IOException while writing an initial dictionary : " + e);
         }
 
-        final ArrayList<String> words = new ArrayList<String>();
-        final HashSet<Pair<String, String>> bigrams = new HashSet<Pair<String, String>>();
+        final ArrayList<String> words = new ArrayList<>();
+        final HashSet<Pair<String, String>> bigrams = new HashSet<>();
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
 
         BinaryDictionary binaryDictionary;
@@ -659,7 +879,7 @@
                 final String word = CodePointUtils.generateWord(random, codePointSet);
                 words.add(word);
                 final int unigramProbability = random.nextInt(0xFF);
-                binaryDictionary.addUnigramWord(word, unigramProbability);
+                addUnigramWord(binaryDictionary, word, unigramProbability);
             }
             for (int j = 0; j < bigramCountPerIteration; j++) {
                 final String word0 = words.get(random.nextInt(words.size()));
@@ -667,22 +887,630 @@
                 if (TextUtils.equals(word0, word1)) {
                     continue;
                 }
-                bigrams.add(new Pair<String, String>(word0, word1));
+                bigrams.add(new Pair<>(word0, word1));
                 final int bigramProbability = random.nextInt(0xF);
-                binaryDictionary.addBigramWords(word0, word1, bigramProbability);
+                addBigramWords(binaryDictionary, word0, word1, bigramProbability);
             }
-            assertEquals(new HashSet<String>(words).size(), Integer.parseInt(
-                    binaryDictionary.getPropertyForTests(BinaryDictionary.UNIGRAM_COUNT_QUERY)));
-            assertEquals(new HashSet<Pair<String, String>>(bigrams).size(), Integer.parseInt(
-                    binaryDictionary.getPropertyForTests(BinaryDictionary.BIGRAM_COUNT_QUERY)));
+            assertEquals(new HashSet<>(words).size(), Integer.parseInt(
+                    binaryDictionary.getPropertyForTest(BinaryDictionary.UNIGRAM_COUNT_QUERY)));
+            assertEquals(new HashSet<>(bigrams).size(), Integer.parseInt(
+                    binaryDictionary.getPropertyForTest(BinaryDictionary.BIGRAM_COUNT_QUERY)));
             binaryDictionary.flushWithGC();
-            assertEquals(new HashSet<String>(words).size(), Integer.parseInt(
-                    binaryDictionary.getPropertyForTests(BinaryDictionary.UNIGRAM_COUNT_QUERY)));
-            assertEquals(new HashSet<Pair<String, String>>(bigrams).size(), Integer.parseInt(
-                    binaryDictionary.getPropertyForTests(BinaryDictionary.BIGRAM_COUNT_QUERY)));
+            assertEquals(new HashSet<>(words).size(), Integer.parseInt(
+                    binaryDictionary.getPropertyForTest(BinaryDictionary.UNIGRAM_COUNT_QUERY)));
+            assertEquals(new HashSet<>(bigrams).size(), Integer.parseInt(
+                    binaryDictionary.getPropertyForTest(BinaryDictionary.BIGRAM_COUNT_QUERY)));
             binaryDictionary.close();
         }
 
         dictFile.delete();
     }
+
+    public void testAddMultipleDictionaryEntries() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddMultipleDictionaryEntries(formatVersion);
+        }
+    }
+
+    private void testAddMultipleDictionaryEntries(final int formatVersion) {
+        final int codePointSetSize = 20;
+        final int lmParamCount = 1000;
+        final double bigramContinueRate = 0.9;
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities = new HashMap<>();
+
+        final LanguageModelParam[] languageModelParams = new LanguageModelParam[lmParamCount];
+        String prevWord = null;
+        for (int i = 0; i < languageModelParams.length; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int probability = random.nextInt(0xFF);
+            final int bigramProbability = probability + random.nextInt(0xFF - probability);
+            unigramProbabilities.put(word, probability);
+            if (prevWord == null) {
+                languageModelParams[i] = new LanguageModelParam(word, probability,
+                        BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+            } else {
+                languageModelParams[i] = new LanguageModelParam(prevWord, word, probability,
+                        bigramProbability, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+                bigramProbabilities.put(new Pair<>(prevWord, word),
+                        bigramProbability);
+            }
+            prevWord = (random.nextDouble() < bigramContinueRate) ? word : null;
+        }
+
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        binaryDictionary.addMultipleDictionaryEntries(languageModelParams);
+
+        for (Map.Entry<String, Integer> entry : unigramProbabilities.entrySet()) {
+            assertEquals((int)entry.getValue(), binaryDictionary.getFrequency(entry.getKey()));
+        }
+
+        for (Map.Entry<Pair<String, String>, Integer> entry : bigramProbabilities.entrySet()) {
+            final String word0 = entry.getKey().first;
+            final String word1 = entry.getKey().second;
+            final int bigramProbability = entry.getValue();
+            assertEquals(bigramProbability != Dictionary.NOT_A_PROBABILITY,
+                    isValidBigram(binaryDictionary, word0, word1));
+            if (canCheckBigramProbability(formatVersion)) {
+                assertEquals(bigramProbability,
+                        getBigramProbability(binaryDictionary, word0, word1));
+            }
+        }
+    }
+
+    public void testGetWordProperties() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testGetWordProperties(formatVersion);
+        }
+    }
+
+    private void testGetWordProperties(final int formatVersion) {
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+        final int UNIGRAM_COUNT = 1000;
+        final int BIGRAM_COUNT = 1000;
+        final int codePointSetSize = 20;
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        final WordProperty invalidWordProperty = binaryDictionary.getWordProperty("dummyWord",
+                false /* isBeginningOfSentence */);
+        assertFalse(invalidWordProperty.isValid());
+
+        final ArrayList<String> words = new ArrayList<>();
+        final HashMap<String, Integer> wordProbabilities = new HashMap<>();
+        final HashMap<String, HashSet<String>> bigrams = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities = new HashMap<>();
+
+        for (int i = 0; i < UNIGRAM_COUNT; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int unigramProbability = random.nextInt(0xFF);
+            final boolean isNotAWord = random.nextBoolean();
+            final boolean isBlacklisted = random.nextBoolean();
+            // TODO: Add tests for historical info.
+            binaryDictionary.addUnigramEntry(word, unigramProbability,
+                    null /* shortcutTarget */, BinaryDictionary.NOT_A_PROBABILITY,
+                    false /* isBeginningOfSentence */, isNotAWord, isBlacklisted,
+                    BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+            if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            words.add(word);
+            wordProbabilities.put(word, unigramProbability);
+            final WordProperty wordProperty = binaryDictionary.getWordProperty(word,
+                    false /* isBeginningOfSentence */);
+            assertEquals(word, wordProperty.mWord);
+            assertTrue(wordProperty.isValid());
+            assertEquals(isNotAWord, wordProperty.mIsNotAWord);
+            assertEquals(isBlacklisted, wordProperty.mIsBlacklistEntry);
+            assertEquals(false, wordProperty.mHasBigrams);
+            assertEquals(false, wordProperty.mHasShortcuts);
+            assertEquals(unigramProbability, wordProperty.mProbabilityInfo.mProbability);
+            assertTrue(wordProperty.mShortcutTargets.isEmpty());
+        }
+
+        for (int i = 0; i < BIGRAM_COUNT; i++) {
+            final int word0Index = random.nextInt(wordProbabilities.size());
+            final int word1Index = random.nextInt(wordProbabilities.size());
+            if (word0Index == word1Index) {
+                continue;
+            }
+            final String word0 = words.get(word0Index);
+            final String word1 = words.get(word1Index);
+            final int unigramProbability = wordProbabilities.get(word1);
+            final int bigramProbability =
+                    unigramProbability + random.nextInt(0xFF - unigramProbability);
+            addBigramWords(binaryDictionary, word0, word1, bigramProbability);
+            if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            if (!bigrams.containsKey(word0)) {
+                final HashSet<String> bigramWord1s = new HashSet<>();
+                bigrams.put(word0, bigramWord1s);
+            }
+            bigrams.get(word0).add(word1);
+            bigramProbabilities.put(new Pair<>(word0, word1), bigramProbability);
+        }
+
+        for (int i = 0; i < words.size(); i++) {
+            final String word0 = words.get(i);
+            if (!bigrams.containsKey(word0)) {
+                continue;
+            }
+            final HashSet<String> bigramWord1s = bigrams.get(word0);
+            final WordProperty wordProperty = binaryDictionary.getWordProperty(word0,
+                    false /* isBeginningOfSentence */);
+            assertEquals(bigramWord1s.size(), wordProperty.mBigrams.size());
+            for (int j = 0; j < wordProperty.mBigrams.size(); j++) {
+                final String word1 = wordProperty.mBigrams.get(j).mWord;
+                assertTrue(bigramWord1s.contains(word1));
+                if (canCheckBigramProbability(formatVersion)) {
+                    final int bigramProbability = bigramProbabilities.get(new Pair<>(word0, word1));
+                    assertEquals(bigramProbability, wordProperty.mBigrams.get(j).getProbability());
+                }
+            }
+        }
+    }
+
+    public void testIterateAllWords() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testIterateAllWords(formatVersion);
+        }
+    }
+
+    private void testIterateAllWords(final int formatVersion) {
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+        final int UNIGRAM_COUNT = 1000;
+        final int BIGRAM_COUNT = 1000;
+        final int codePointSetSize = 20;
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        final WordProperty invalidWordProperty = binaryDictionary.getWordProperty("dummyWord",
+                false /* isBeginningOfSentence */);
+        assertFalse(invalidWordProperty.isValid());
+
+        final ArrayList<String> words = new ArrayList<>();
+        final HashMap<String, Integer> wordProbabilitiesToCheckLater = new HashMap<>();
+        final HashMap<String, HashSet<String>> bigrams = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilitiesToCheckLater =
+                new HashMap<>();
+
+        for (int i = 0; i < UNIGRAM_COUNT; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int unigramProbability = random.nextInt(0xFF);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
+            if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            words.add(word);
+            wordProbabilitiesToCheckLater.put(word, unigramProbability);
+        }
+
+        for (int i = 0; i < BIGRAM_COUNT; i++) {
+            final int word0Index = random.nextInt(wordProbabilitiesToCheckLater.size());
+            final int word1Index = random.nextInt(wordProbabilitiesToCheckLater.size());
+            if (word0Index == word1Index) {
+                continue;
+            }
+            final String word0 = words.get(word0Index);
+            final String word1 = words.get(word1Index);
+            final int unigramProbability = wordProbabilitiesToCheckLater.get(word1);
+            final int bigramProbability =
+                    unigramProbability + random.nextInt(0xFF - unigramProbability);
+            addBigramWords(binaryDictionary, word0, word1, bigramProbability);
+            if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            if (!bigrams.containsKey(word0)) {
+                final HashSet<String> bigramWord1s = new HashSet<>();
+                bigrams.put(word0, bigramWord1s);
+            }
+            bigrams.get(word0).add(word1);
+            bigramProbabilitiesToCheckLater.put(new Pair<>(word0, word1), bigramProbability);
+        }
+
+        final HashSet<String> wordSet = new HashSet<>(words);
+        final HashSet<Pair<String, String>> bigramSet =
+                new HashSet<>(bigramProbabilitiesToCheckLater.keySet());
+        int token = 0;
+        do {
+            final BinaryDictionary.GetNextWordPropertyResult result =
+                    binaryDictionary.getNextWordProperty(token);
+            final WordProperty wordProperty = result.mWordProperty;
+            final String word0 = wordProperty.mWord;
+            assertEquals((int)wordProbabilitiesToCheckLater.get(word0),
+                    wordProperty.mProbabilityInfo.mProbability);
+            wordSet.remove(word0);
+            final HashSet<String> bigramWord1s = bigrams.get(word0);
+            for (int j = 0; j < wordProperty.mBigrams.size(); j++) {
+                final String word1 = wordProperty.mBigrams.get(j).mWord;
+                assertTrue(bigramWord1s.contains(word1));
+                final Pair<String, String> bigram = new Pair<>(word0, word1);
+                if (canCheckBigramProbability(formatVersion)) {
+                    final int bigramProbability = bigramProbabilitiesToCheckLater.get(bigram);
+                    assertEquals(bigramProbability, wordProperty.mBigrams.get(j).getProbability());
+                }
+                bigramSet.remove(bigram);
+            }
+            token = result.mNextToken;
+        } while (token != 0);
+        assertTrue(wordSet.isEmpty());
+        assertTrue(bigramSet.isEmpty());
+    }
+
+    public void testAddShortcuts() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddShortcuts(formatVersion);
+        }
+    }
+
+    private void testAddShortcuts(final int formatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        final int unigramProbability = 100;
+        final int shortcutProbability = 10;
+        binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+                shortcutProbability, false /* isBeginningOfSentence */,
+                false /* isNotAWord */, false /* isBlacklisted */, 0 /* timestamp */);
+        WordProperty wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(1, wordProperty.mShortcutTargets.size());
+        assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
+        assertEquals(shortcutProbability, wordProperty.mShortcutTargets.get(0).getProbability());
+        final int updatedShortcutProbability = 2;
+        binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+                updatedShortcutProbability, false /* isBeginningOfSentence */,
+                false /* isNotAWord */, false /* isBlacklisted */, 0 /* timestamp */);
+        wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(1, wordProperty.mShortcutTargets.size());
+        assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
+        assertEquals(updatedShortcutProbability,
+                wordProperty.mShortcutTargets.get(0).getProbability());
+        binaryDictionary.addUnigramEntry("aaa", unigramProbability, "yyy",
+                shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+                false /* isBlacklisted */, 0 /* timestamp */);
+        final HashMap<String, Integer> shortcutTargets = new HashMap<>();
+        shortcutTargets.put("zzz", updatedShortcutProbability);
+        shortcutTargets.put("yyy", shortcutProbability);
+        wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(2, wordProperty.mShortcutTargets.size());
+        for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+            assertTrue(shortcutTargets.containsKey(shortcutTarget.mWord));
+            assertEquals((int)shortcutTargets.get(shortcutTarget.mWord),
+                    shortcutTarget.getProbability());
+            shortcutTargets.remove(shortcutTarget.mWord);
+        }
+        shortcutTargets.put("zzz", updatedShortcutProbability);
+        shortcutTargets.put("yyy", shortcutProbability);
+        binaryDictionary.flushWithGC();
+        wordProperty = binaryDictionary.getWordProperty("aaa",
+                false /* isBeginningOfSentence */);
+        assertEquals(2, wordProperty.mShortcutTargets.size());
+        for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+            assertTrue(shortcutTargets.containsKey(shortcutTarget.mWord));
+            assertEquals((int)shortcutTargets.get(shortcutTarget.mWord),
+                    shortcutTarget.getProbability());
+            shortcutTargets.remove(shortcutTarget.mWord);
+        }
+    }
+
+    public void testAddManyShortcuts() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testAddManyShortcuts(formatVersion);
+        }
+    }
+
+    private void testAddManyShortcuts(final int formatVersion) {
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+        final int UNIGRAM_COUNT = 1000;
+        final int SHORTCUT_COUNT = 10000;
+        final int codePointSetSize = 20;
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+
+        final ArrayList<String> words = new ArrayList<>();
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<String, HashMap<String, Integer>> shortcutTargets = new HashMap<>();
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        for (int i = 0; i < UNIGRAM_COUNT; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int unigramProbability = random.nextInt(0xFF);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
+            words.add(word);
+            unigramProbabilities.put(word, unigramProbability);
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+        }
+        for (int i = 0; i < SHORTCUT_COUNT; i++) {
+            final String shortcutTarget = CodePointUtils.generateWord(random, codePointSet);
+            final int shortcutProbability = random.nextInt(0xF);
+            final String word = words.get(random.nextInt(words.size()));
+            final int unigramProbability = unigramProbabilities.get(word);
+            binaryDictionary.addUnigramEntry(word, unigramProbability, shortcutTarget,
+                    shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+                    false /* isBlacklisted */, 0 /* timestamp */);
+            if (shortcutTargets.containsKey(word)) {
+                final HashMap<String, Integer> shortcutTargetsOfWord = shortcutTargets.get(word);
+                shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
+            } else {
+                final HashMap<String, Integer> shortcutTargetsOfWord = new HashMap<>();
+                shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
+                shortcutTargets.put(word, shortcutTargetsOfWord);
+            }
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+        }
+
+        for (final String word : words) {
+            final WordProperty wordProperty = binaryDictionary.getWordProperty(word,
+                    false /* isBeginningOfSentence */);
+            assertEquals((int)unigramProbabilities.get(word),
+                    wordProperty.mProbabilityInfo.mProbability);
+            if (!shortcutTargets.containsKey(word)) {
+                // The word does not have shortcut targets.
+                continue;
+            }
+            assertEquals(shortcutTargets.get(word).size(), wordProperty.mShortcutTargets.size());
+            for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                final String targetCodePonts = shortcutTarget.mWord;
+                assertEquals((int)shortcutTargets.get(word).get(targetCodePonts),
+                        shortcutTarget.getProbability());
+            }
+        }
+    }
+
+    public void testDictMigration() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, formatVersion);
+        }
+    }
+
+    private void testDictMigration(final int fromFormatVersion, final int toFormatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", fromFormatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        final int unigramProbability = 100;
+        addUnigramWord(binaryDictionary, "aaa", unigramProbability);
+        addUnigramWord(binaryDictionary, "bbb", unigramProbability);
+        final int bigramProbability = 150;
+        addBigramWords(binaryDictionary, "aaa", "bbb", bigramProbability);
+        final int shortcutProbability = 10;
+        binaryDictionary.addUnigramEntry("ccc", unigramProbability, "xxx", shortcutProbability,
+                false /* isBeginningOfSentence */, false /* isNotAWord */,
+                false /* isBlacklisted */, 0 /* timestamp */);
+        binaryDictionary.addUnigramEntry("ddd", unigramProbability, null /* shortcutTarget */,
+                Dictionary.NOT_A_PROBABILITY, false /* isBeginningOfSentence */,
+                true /* isNotAWord */, true /* isBlacklisted */, 0 /* timestamp */);
+        binaryDictionary.addNgramEntry(PrevWordsInfo.BEGINNING_OF_SENTENCE,
+                "aaa", bigramProbability, 0 /* timestamp */);
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("bbb"));
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "bbb"));
+        assertEquals(fromFormatVersion, binaryDictionary.getFormatVersion());
+        assertTrue(binaryDictionary.migrateTo(toFormatVersion));
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertEquals(toFormatVersion, binaryDictionary.getFormatVersion());
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
+        assertEquals(unigramProbability, binaryDictionary.getFrequency("bbb"));
+        if (canCheckBigramProbability(toFormatVersion)) {
+            assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "bbb"));
+            assertEquals(bigramProbability, binaryDictionary.getNgramProbability(
+                    PrevWordsInfo.BEGINNING_OF_SENTENCE, "aaa"));
+        }
+        assertTrue(isValidBigram(binaryDictionary, "aaa", "bbb"));
+        WordProperty wordProperty = binaryDictionary.getWordProperty("ccc",
+                false /* isBeginningOfSentence */);
+        assertEquals(1, wordProperty.mShortcutTargets.size());
+        assertEquals("xxx", wordProperty.mShortcutTargets.get(0).mWord);
+        wordProperty = binaryDictionary.getWordProperty("ddd",
+                false /* isBeginningOfSentence */);
+        assertTrue(wordProperty.mIsBlacklistEntry);
+        assertTrue(wordProperty.mIsNotAWord);
+    }
+
+    public void testLargeDictMigration() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testLargeDictMigration(FormatSpec.VERSION4_ONLY_FOR_TESTING, formatVersion);
+        }
+    }
+
+    private void testLargeDictMigration(final int fromFormatVersion, final int toFormatVersion) {
+        final int UNIGRAM_COUNT = 3000;
+        final int BIGRAM_COUNT = 3000;
+        final int codePointSetSize = 50;
+        final long seed = System.currentTimeMillis();
+        final Random random = new Random(seed);
+
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", fromFormatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+
+        final ArrayList<String> words = new ArrayList<>();
+        final ArrayList<Pair<String, String>> bigrams = new ArrayList<>();
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
+        final HashMap<String, Integer> unigramProbabilities = new HashMap<>();
+        final HashMap<Pair<String, String>, Integer> bigramProbabilities = new HashMap<>();
+
+        for (int i = 0; i < UNIGRAM_COUNT; i++) {
+            final String word = CodePointUtils.generateWord(random, codePointSet);
+            final int unigramProbability = random.nextInt(0xFF);
+            addUnigramWord(binaryDictionary, word, unigramProbability);
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            words.add(word);
+            unigramProbabilities.put(word, unigramProbability);
+        }
+
+        for (int i = 0; i < BIGRAM_COUNT; i++) {
+            final int word0Index = random.nextInt(words.size());
+            final int word1Index = random.nextInt(words.size());
+            if (word0Index == word1Index) {
+                continue;
+            }
+            final String word0 = words.get(word0Index);
+            final String word1 = words.get(word1Index);
+            final int unigramProbability = unigramProbabilities.get(word1);
+            final int bigramProbability =
+                    random.nextInt(0xFF - unigramProbability) + unigramProbability;
+            addBigramWords(binaryDictionary, word0, word1, bigramProbability);
+            if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
+                binaryDictionary.flushWithGC();
+            }
+            final Pair<String, String> bigram = new Pair<>(word0, word1);
+            bigrams.add(bigram);
+            bigramProbabilities.put(bigram, bigramProbability);
+        }
+        assertTrue(binaryDictionary.migrateTo(toFormatVersion));
+
+        for (final String word : words) {
+            assertEquals((int)unigramProbabilities.get(word), binaryDictionary.getFrequency(word));
+        }
+        assertEquals(unigramProbabilities.size(), Integer.parseInt(
+                binaryDictionary.getPropertyForTest(BinaryDictionary.UNIGRAM_COUNT_QUERY)));
+
+        for (final Pair<String, String> bigram : bigrams) {
+            if (canCheckBigramProbability(toFormatVersion)) {
+                assertEquals((int)bigramProbabilities.get(bigram),
+                        getBigramProbability(binaryDictionary, bigram.first, bigram.second));
+            }
+            assertTrue(isValidBigram(binaryDictionary, bigram.first, bigram.second));
+        }
+        assertEquals(bigramProbabilities.size(), Integer.parseInt(
+                binaryDictionary.getPropertyForTest(BinaryDictionary.BIGRAM_COUNT_QUERY)));
+    }
+
+    public void testBeginningOfSentence() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            if (supportsBeginningOfSentence(formatVersion)) {
+                testBeginningOfSentence(formatVersion);
+            }
+        }
+    }
+
+    private void testBeginningOfSentence(final int formatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        final int dummyProbability = 0;
+        final PrevWordsInfo prevWordsInfoBeginningOfSentence = PrevWordsInfo.BEGINNING_OF_SENTENCE;
+        final int bigramProbability = 200;
+        addUnigramWord(binaryDictionary, "aaa", dummyProbability);
+        binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "aaa", bigramProbability,
+                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+        assertEquals(bigramProbability,
+                binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "aaa"));
+        binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "aaa", bigramProbability,
+                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+        addUnigramWord(binaryDictionary, "bbb", dummyProbability);
+        binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "bbb", bigramProbability,
+                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+        binaryDictionary.flushWithGC();
+        assertEquals(bigramProbability,
+                binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "aaa"));
+        assertEquals(bigramProbability,
+                binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "bbb"));
+    }
+
+    public void testGetMaxFrequencyOfExactMatches() {
+        for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+            testGetMaxFrequencyOfExactMatches(formatVersion);
+        }
+    }
+
+    private void testGetMaxFrequencyOfExactMatches(final int formatVersion) {
+        File dictFile = null;
+        try {
+            dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        addUnigramWord(binaryDictionary, "abc", 10);
+        addUnigramWord(binaryDictionary, "aBc", 15);
+        assertEquals(15, binaryDictionary.getMaxFrequencyOfExactMatches("abc"));
+        addUnigramWord(binaryDictionary, "ab'c", 20);
+        assertEquals(20, binaryDictionary.getMaxFrequencyOfExactMatches("abc"));
+        addUnigramWord(binaryDictionary, "a-b-c", 25);
+        assertEquals(25, binaryDictionary.getMaxFrequencyOfExactMatches("abc"));
+        addUnigramWord(binaryDictionary, "ab-'-'-'-c", 30);
+        assertEquals(30, binaryDictionary.getMaxFrequencyOfExactMatches("abc"));
+        addUnigramWord(binaryDictionary, "ab c", 255);
+        assertEquals(30, binaryDictionary.getMaxFrequencyOfExactMatches("abc"));
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
index c4fd5a0..6e894de 100644
--- a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
+++ b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java
@@ -50,8 +50,7 @@
         final SpanGetter spanBefore = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
         assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart);
         assertEquals("extend blue underline, span end", EXPECTED_SPAN_END, spanBefore.mEnd);
-        assertEquals("extend blue underline, span color", true,
-                spanBefore.isAutoCorrectionIndicator());
+        assertTrue("extend blue underline, span color", spanBefore.isAutoCorrectionIndicator());
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
         // Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span
@@ -61,6 +60,7 @@
 
     public void testBlueUnderlineOnBackspace() {
         final String STRING_TO_TYPE = "tgis";
+        final int typedLength = STRING_TO_TYPE.length();
         final int EXPECTED_SUGGESTION_SPAN_START = -1;
         final int EXPECTED_UNDERLINE_SPAN_START = 0;
         final int EXPECTED_UNDERLINE_SPAN_END = 4;
@@ -68,6 +68,8 @@
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
         type(Constants.CODE_SPACE);
+        // typedLength + 1 because we also typed a space
+        mLatinIME.onUpdateSelection(0, 0, typedLength + 1, typedLength + 1, -1, -1);
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
         type(Constants.CODE_DELETE);
@@ -77,8 +79,8 @@
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
         final SpanGetter suggestionSpan = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
-        assertEquals("show no blue underline after backspace, span start should be -1",
-                EXPECTED_SUGGESTION_SPAN_START, suggestionSpan.mStart);
+        assertFalse("show no blue underline after backspace, span should not be the auto-"
+                + "correction indicator", suggestionSpan.isAutoCorrectionIndicator());
         final SpanGetter underlineSpan = new SpanGetter(mEditText.getText(), UnderlineSpan.class);
         assertEquals("should be composing, so should have an underline span",
                 EXPECTED_UNDERLINE_SPAN_START, underlineSpan.mStart);
@@ -104,7 +106,8 @@
         sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
         runMessages();
         final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
-        assertNull("blue underline removed when cursor is moved", span.mSpan);
+        assertFalse("blue underline removed when cursor is moved",
+                span.isAutoCorrectionIndicator());
     }
 
     public void testComposingStopsOnSpace() {
diff --git a/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
new file mode 100644
index 0000000..70b8f53
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/DistracterFilterTest.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import java.util.Locale;
+
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.inputmethod.latin.utils.DistracterFilterCheckingExactMatches;
+
+/**
+ * Unit test for DistracterFilter
+ */
+@LargeTest
+public class DistracterFilterTest extends InputTestsBase {
+    private DistracterFilterCheckingExactMatches mDistracterFilter;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDistracterFilter = new DistracterFilterCheckingExactMatches(getContext());
+        mDistracterFilter.updateEnabledSubtypes(mLatinIME.getEnabledSubtypesForTest());
+    }
+
+    public void testIsDistractorToWordsInDictionaries() {
+        final PrevWordsInfo EMPTY_PREV_WORDS_INFO = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+
+        final Locale localeEnUs = new Locale("en", "US");
+        String typedWord;
+
+        typedWord = "Bill";
+        // For this test case, we consider "Bill" is a distracter to "bill".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "nOt";
+        // For this test case, we consider "nOt" is a distracter to "not".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "youre";
+        // For this test case, we consider "youre" is a distracter to "you're".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "Banana";
+        // For this test case, we consider "Banana" is a distracter to "banana".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "orange";
+        // For this test case, we consider "orange" is not a distracter to any word in dictionaries.
+        assertFalse(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "Orange";
+        // For this test case, we consider "Orange" is a distracter to "orange".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "café";
+        // For this test case, we consider "café" is a distracter to "cafe".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "cafe";
+        // For this test case, we consider "cafe" is not a distracter to any word in dictionaries.
+        assertFalse(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "I'll";
+        // For this test case, we consider "I'll" is not a distracter to any word in dictionaries.
+        assertFalse(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "ill";
+        // For this test case, we consider "ill" is a distracter to "I'll"
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "asdfd";
+        // For this test case, we consider "asdfd" is not a distracter to any word in dictionaries.
+        assertFalse(
+                mDistracterFilter.isDistracterToWordsInDictionaries(
+                        EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        typedWord = "thank";
+        // For this test case, we consider "thank" is not a distracter to any other word
+        // in dictionaries.
+        assertFalse(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeEnUs));
+
+        final Locale localeDeDe = new Locale("de", "DE");
+
+        typedWord = "fuer";
+        // For this test case, we consider "fuer" is a distracter to "für".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeDeDe));
+
+        typedWord = "fUEr";
+        // For this test case, we consider "fUEr" is a distracter to "für".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeDeDe));
+
+        typedWord = "fur";
+        // For this test case, we consider "fur" is a distracter to "für".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeDeDe));
+
+        final Locale localeFrFr = new Locale("fr", "FR");
+
+        typedWord = "a";
+        // For this test case, we consider "a" is a distracter to "à".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeFrFr));
+
+        typedWord = "à";
+        // For this test case, we consider "à" is not a distracter to any word in dictionaries.
+        assertFalse(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeFrFr));
+
+        typedWord = "etre";
+        // For this test case, we consider "etre" is a distracter to "être".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeFrFr));
+
+        typedWord = "États-unis";
+        // For this test case, we consider "États-unis" is a distracter to "États-Unis".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeFrFr));
+
+        typedWord = "ÉtatsUnis";
+        // For this test case, we consider "ÉtatsUnis" is a distracter to "États-Unis".
+        assertTrue(mDistracterFilter.isDistracterToWordsInDictionaries(
+                EMPTY_PREV_WORDS_INFO, typedWord, localeFrFr));
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/EditDistanceTests.java b/tests/src/com/android/inputmethod/latin/EditDistanceTests.java
deleted file mode 100644
index 0b7fcbb..0000000
--- a/tests/src/com/android/inputmethod/latin/EditDistanceTests.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.inputmethod.latin;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-@SmallTest
-public class EditDistanceTests extends AndroidTestCase {
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-    }
-
-    /*
-     * dist(kitten, sitting) == 3
-     *
-     * kitten-
-     * .|||.|
-     * sitting
-     */
-    public void testExample1() {
-        final int dist = BinaryDictionary.editDistance("kitten", "sitting");
-        assertEquals("edit distance between 'kitten' and 'sitting' is 3",
-                3, dist);
-    }
-
-    /*
-     * dist(Sunday, Saturday) == 3
-     *
-     * Saturday
-     * |  |.|||
-     * S--unday
-     */
-    public void testExample2() {
-        final int dist = BinaryDictionary.editDistance("Saturday", "Sunday");
-        assertEquals("edit distance between 'Saturday' and 'Sunday' is 3",
-                3, dist);
-    }
-
-    public void testBothEmpty() {
-        final int dist = BinaryDictionary.editDistance("", "");
-        assertEquals("when both string are empty, no edits are needed",
-                0, dist);
-    }
-
-    public void testFirstArgIsEmpty() {
-        final int dist = BinaryDictionary.editDistance("", "aaaa");
-        assertEquals("when only one string of the arguments is empty,"
-                 + " the edit distance is the length of the other.",
-                 4, dist);
-    }
-
-    public void testSecoondArgIsEmpty() {
-        final int dist = BinaryDictionary.editDistance("aaaa", "");
-        assertEquals("when only one string of the arguments is empty,"
-                 + " the edit distance is the length of the other.",
-                 4, dist);
-    }
-
-    public void testSameStrings() {
-        final String arg1 = "The quick brown fox jumps over the lazy dog.";
-        final String arg2 = "The quick brown fox jumps over the lazy dog.";
-        final int dist = BinaryDictionary.editDistance(arg1, arg2);
-        assertEquals("when same strings are passed, distance equals 0.",
-                0, dist);
-    }
-
-    public void testSameReference() {
-        final String arg = "The quick brown fox jumps over the lazy dog.";
-        final int dist = BinaryDictionary.editDistance(arg, arg);
-        assertEquals("when same string references are passed, the distance equals 0.",
-                0, dist);
-    }
-
-    public void testNullArg() {
-        try {
-            BinaryDictionary.editDistance(null, "aaa");
-            fail("IllegalArgumentException should be thrown.");
-        } catch (Exception e) {
-            assertTrue(e instanceof IllegalArgumentException);
-        }
-        try {
-            BinaryDictionary.editDistance("aaa", null);
-            fail("IllegalArgumentException should be thrown.");
-        } catch (Exception e) {
-            assertTrue(e instanceof IllegalArgumentException);
-        }
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/ExpandableDictionaryTests.java b/tests/src/com/android/inputmethod/latin/ExpandableDictionaryTests.java
deleted file mode 100644
index 6aae104..0000000
--- a/tests/src/com/android/inputmethod/latin/ExpandableDictionaryTests.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-/**
- * Unit test for ExpandableDictionary
- */
-@SmallTest
-public class ExpandableDictionaryTests extends AndroidTestCase {
-
-    private final static int UNIGRAM_FREQ = 50;
-    // See UserBinaryDictionary for more information about this variable.
-    // For tests, its actual value does not matter.
-    private final static int SHORTCUT_FREQ = 14;
-
-    public void testAddWordAndGetWordFrequency() {
-        final ExpandableDictionary dict = new ExpandableDictionary(Dictionary.TYPE_USER);
-
-        // Add words
-        dict.addWord("abcde", "abcde", UNIGRAM_FREQ, SHORTCUT_FREQ);
-        dict.addWord("abcef", null, UNIGRAM_FREQ + 1, 0);
-
-        // Check words
-        assertFalse(dict.isValidWord("abcde"));
-        assertEquals(UNIGRAM_FREQ, dict.getWordFrequency("abcde"));
-        assertTrue(dict.isValidWord("abcef"));
-        assertEquals(UNIGRAM_FREQ+1, dict.getWordFrequency("abcef"));
-
-        dict.addWord("abc", null, UNIGRAM_FREQ + 2, 0);
-        assertTrue(dict.isValidWord("abc"));
-        assertEquals(UNIGRAM_FREQ + 2, dict.getWordFrequency("abc"));
-
-        // Add existing word with lower frequency
-        dict.addWord("abc", null, UNIGRAM_FREQ, 0);
-        assertEquals(UNIGRAM_FREQ + 2, dict.getWordFrequency("abc"));
-
-        // Add existing word with higher frequency
-        dict.addWord("abc", null, UNIGRAM_FREQ + 3, 0);
-        assertEquals(UNIGRAM_FREQ + 3, dict.getWordFrequency("abc"));
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/FusionDictionaryTests.java b/tests/src/com/android/inputmethod/latin/FusionDictionaryTests.java
index cadd0f8..09309bc 100644
--- a/tests/src/com/android/inputmethod/latin/FusionDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/FusionDictionaryTests.java
@@ -19,7 +19,9 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
+import com.android.inputmethod.latin.makedict.ProbabilityInfo;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
 
 import java.util.HashMap;
@@ -31,18 +33,18 @@
 public class FusionDictionaryTests extends AndroidTestCase {
     public void testFindWordInTree() {
         FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(new HashMap<String,String>(), false, false));
+                new DictionaryOptions(new HashMap<String,String>()));
 
-        dict.add("abc", 10, null, false /* isNotAWord */);
+        dict.add("abc", new ProbabilityInfo(10), null, false /* isNotAWord */);
         assertNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "aaa"));
         assertNotNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "abc"));
 
-        dict.add("aa", 10, null, false /* isNotAWord */);
+        dict.add("aa", new ProbabilityInfo(10), null, false /* isNotAWord */);
         assertNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "aaa"));
         assertNotNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "aa"));
 
-        dict.add("babcd", 10, null, false /* isNotAWord */);
-        dict.add("bacde", 10, null, false /* isNotAWord */);
+        dict.add("babcd", new ProbabilityInfo(10), null, false /* isNotAWord */);
+        dict.add("bacde", new ProbabilityInfo(10), null, false /* isNotAWord */);
         assertNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "ba"));
         assertNotNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "babcd"));
         assertNotNull(FusionDictionary.findWordInTree(dict.mRootNodeArray, "bacde"));
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
index 8ad8689..de9475a 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTests.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java
@@ -16,7 +16,10 @@
 
 package com.android.inputmethod.latin;
 
+import com.android.inputmethod.latin.settings.Settings;
+
 import android.test.suitebuilder.annotation.LargeTest;
+import android.text.TextUtils;
 import android.view.inputmethod.BaseInputConnection;
 
 @LargeTest
@@ -32,7 +35,7 @@
         final String WORD_TO_TYPE = "this";
         final String EXPECTED_RESULT = "thi";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
         type(Constants.CODE_DELETE);
         assertEquals("press suggestion then backspace", EXPECTED_RESULT,
@@ -44,9 +47,8 @@
         final String WORD_TO_PICK = "this";
         final String EXPECTED_RESULT = "thi";
         type(WORD_TO_TYPE);
-        // Choose the auto-correction, which is always in position 0. For "tgis", the
-        // auto-correction should be "this".
-        pickSuggestionManually(0, WORD_TO_PICK);
+        // Choose the auto-correction. For "tgis", the auto-correction should be "this".
+        pickSuggestionManually(WORD_TO_PICK);
         mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
         assertEquals("pick typed word over auto-correction then backspace", WORD_TO_PICK,
                 mEditText.getText().toString());
@@ -59,9 +61,8 @@
         final String WORD_TO_TYPE = "tgis";
         final String EXPECTED_RESULT = "tgi";
         type(WORD_TO_TYPE);
-        // Choose the typed word, which should be in position 1 (because position 0 should
-        // be occupied by the "this" auto-correction, as checked by testAutoCorrect())
-        pickSuggestionManually(1, WORD_TO_TYPE);
+        // Choose the typed word.
+        pickSuggestionManually(WORD_TO_TYPE);
         mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
         assertEquals("pick typed word over auto-correction then backspace", WORD_TO_TYPE,
                 mEditText.getText().toString());
@@ -75,9 +76,8 @@
         final String WORD_TO_PICK = "thus";
         final String EXPECTED_RESULT = "thu";
         type(WORD_TO_TYPE);
-        // Choose the second suggestion, which should be in position 2 and should be "thus"
-        // when "tgis is typed.
-        pickSuggestionManually(2, WORD_TO_PICK);
+        // Choose the second suggestion, which should be "thus" when "tgis" is typed.
+        pickSuggestionManually(WORD_TO_PICK);
         mLatinIME.onUpdateSelection(0, 0, WORD_TO_TYPE.length(), WORD_TO_TYPE.length(), -1, -1);
         assertEquals("pick different suggestion then backspace", WORD_TO_PICK,
                 mEditText.getText().toString());
@@ -179,6 +179,8 @@
     }
 
     public void testDoubleSpace() {
+        // Set default pref just in case
+        setBooleanPreference(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true, true);
         // U+1F607 is an emoji
         final String[] STRINGS_TO_TYPE =
                 new String[] { "this   ", "a+  ", "\u1F607  ", "..  ", ")  ", "(  ", "%  " };
@@ -200,6 +202,76 @@
         assertEquals("double space make a period", EXPECTED_RESULT, mEditText.getText().toString());
     }
 
+    private void testDoubleSpacePeriodWithSettings(final boolean expectsPeriod,
+            final Object... settingsKeysValues) {
+        final Object[] oldSettings = new Object[settingsKeysValues.length / 2];
+        final String STRING_WITHOUT_PERIOD = "this  ";
+        final String STRING_WITH_PERIOD = "this. ";
+        final String EXPECTED_RESULT = expectsPeriod ? STRING_WITH_PERIOD : STRING_WITHOUT_PERIOD;
+        try {
+            for (int i = 0; i < settingsKeysValues.length; i += 2) {
+                if (settingsKeysValues[i + 1] instanceof String) {
+                    oldSettings[i / 2] = setStringPreference((String)settingsKeysValues[i],
+                            (String)settingsKeysValues[i + 1], "0");
+                } else {
+                    oldSettings[i / 2] = setBooleanPreference((String)settingsKeysValues[i],
+                            (Boolean)settingsKeysValues[i + 1], false);
+                }
+            }
+            mLatinIME.loadSettings();
+            mEditText.setText("");
+            type(STRING_WITHOUT_PERIOD);
+            assertEquals("double-space-to-period with specific settings "
+                    + TextUtils.join(" ", settingsKeysValues),
+                    EXPECTED_RESULT, mEditText.getText().toString());
+        } finally {
+            // Restore old settings
+            for (int i = 0; i < settingsKeysValues.length; i += 2) {
+                if (null == oldSettings[i / 2]) {
+                    break;
+                } if (oldSettings[i / 2] instanceof String) {
+                    setStringPreference((String)settingsKeysValues[i], (String)oldSettings[i / 2],
+                            "");
+                } else {
+                    setBooleanPreference((String)settingsKeysValues[i], (Boolean)oldSettings[i / 2],
+                            false);
+                }
+            }
+        }
+    }
+
+    public void testDoubleSpacePeriod() {
+        // Reset settings to default, else these tests will go flaky.
+        setStringPreference(Settings.PREF_SHOW_SUGGESTIONS_SETTING, "0", "0");
+        setStringPreference(Settings.PREF_AUTO_CORRECTION_THRESHOLD, "1", "1");
+        setBooleanPreference(Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, true, true);
+        testDoubleSpacePeriodWithSettings(true /* expectsPeriod */);
+        // "Suggestion visibility" to "always hide"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_SHOW_SUGGESTIONS_SETTING, "2");
+        // "Suggestion visibility" to "portrait only"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_SHOW_SUGGESTIONS_SETTING, "1");
+        // "Suggestion visibility" to "always show"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_SHOW_SUGGESTIONS_SETTING, "0");
+
+        // "Double-space period" to "off"
+        testDoubleSpacePeriodWithSettings(false, Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, false);
+
+        // "Auto-correction" to "off"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_AUTO_CORRECTION_THRESHOLD, "0");
+        // "Auto-correction" to "modest"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_AUTO_CORRECTION_THRESHOLD, "1");
+        // "Auto-correction" to "very aggressive"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_AUTO_CORRECTION_THRESHOLD, "3");
+
+        // "Suggestion visibility" to "always hide" and "Auto-correction" to "off"
+        testDoubleSpacePeriodWithSettings(true, Settings.PREF_SHOW_SUGGESTIONS_SETTING, "0",
+                Settings.PREF_AUTO_CORRECTION_THRESHOLD, "0");
+        // "Suggestion visibility" to "always hide" and "Auto-correction" to "off"
+        testDoubleSpacePeriodWithSettings(false, Settings.PREF_SHOW_SUGGESTIONS_SETTING, "0",
+                Settings.PREF_AUTO_CORRECTION_THRESHOLD, "0",
+                Settings.PREF_KEY_USE_DOUBLE_SPACE_PERIOD, false);
+    }
+
     public void testBackspaceAtStartAfterAutocorrect() {
         final String STRING_TO_TYPE = "tgis ";
         final int typedLength = STRING_TO_TYPE.length();
@@ -234,7 +306,7 @@
         final String WORD_TO_TYPE = "this";
         final String EXPECTED_RESULT = WORD_TO_TYPE;
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         assertEquals("no space after manual pick", EXPECTED_RESULT,
                 mEditText.getText().toString());
     }
@@ -244,7 +316,7 @@
         final String WORD2_TO_TYPE = "is";
         final String EXPECTED_RESULT = "this is";
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
+        pickSuggestionManually(WORD1_TO_TYPE);
         type(WORD2_TO_TYPE);
         assertEquals("manual pick then type", EXPECTED_RESULT, mEditText.getText().toString());
     }
@@ -254,20 +326,32 @@
         final String WORD2_TO_TYPE = "!";
         final String EXPECTED_RESULT = "this!";
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
+        pickSuggestionManually(WORD1_TO_TYPE);
         type(WORD2_TO_TYPE);
         assertEquals("manual pick then separator", EXPECTED_RESULT, mEditText.getText().toString());
     }
 
+    // This test matches the one in InputLogicTestsNonEnglish. In some non-English languages,
+    // ! and ? are clustering punctuation signs.
+    public void testClusteringPunctuation() {
+        final String WORD1_TO_TYPE = "test";
+        final String WORD2_TO_TYPE = "!!?!:!";
+        final String EXPECTED_RESULT = "test!!?!:!";
+        type(WORD1_TO_TYPE);
+        pickSuggestionManually(WORD1_TO_TYPE);
+        type(WORD2_TO_TYPE);
+        assertEquals("clustering punctuation", EXPECTED_RESULT, mEditText.getText().toString());
+    }
+
     public void testManualPickThenStripperThenPick() {
         final String WORD_TO_TYPE = "this";
         final String STRIPPER = "\n";
         final String EXPECTED_RESULT = "this\nthis";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         type(STRIPPER);
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         assertEquals("manual pick then \\n then manual pick", EXPECTED_RESULT,
                 mEditText.getText().toString());
     }
@@ -277,7 +361,7 @@
         final String WORD2_TO_TYPE = " is";
         final String EXPECTED_RESULT = "this is";
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
+        pickSuggestionManually(WORD1_TO_TYPE);
         type(WORD2_TO_TYPE);
         assertEquals("manual pick then space then type", EXPECTED_RESULT,
                 mEditText.getText().toString());
@@ -288,11 +372,9 @@
         final String WORD2_TO_PICK = "is";
         final String EXPECTED_RESULT = "this is";
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
-        // Here we fake picking a word through bigram prediction. This test is taking
-        // advantage of the fact that Latin IME blindly trusts the caller of #pickSuggestionManually
-        // to actually pass the right string.
-        pickSuggestionManually(1, WORD2_TO_PICK);
+        pickSuggestionManually(WORD1_TO_TYPE);
+        // Here we fake picking a word through bigram prediction.
+        pickSuggestionManually(WORD2_TO_PICK);
         assertEquals("manual pick then manual pick", EXPECTED_RESULT,
                 mEditText.getText().toString());
     }
@@ -307,12 +389,14 @@
     }
 
     public void testResumeSuggestionOnBackspace() {
-        final String WORD_TO_TYPE = "and this ";
-        type(WORD_TO_TYPE);
+        final String STRING_TO_TYPE = "and this ";
+        final int typedLength = STRING_TO_TYPE.length();
+        type(STRING_TO_TYPE);
         assertEquals("resume suggestion on backspace", -1,
                 BaseInputConnection.getComposingSpanStart(mEditText.getText()));
         assertEquals("resume suggestion on backspace", -1,
                 BaseInputConnection.getComposingSpanEnd(mEditText.getText()));
+        mLatinIME.onUpdateSelection(0, 0, typedLength, typedLength, -1, -1);
         type(Constants.CODE_DELETE);
         assertEquals("resume suggestion on backspace", 4,
                 BaseInputConnection.getComposingSpanStart(mEditText.getText()));
@@ -348,4 +432,211 @@
         helperTestComposing("a'", true);
     }
     // TODO: Add some tests for non-BMP characters
+
+    public void testAutoCorrectByUserHistory() {
+        final String WORD_TO_BE_CORRECTED = "qpmx";
+        final String NOT_CORRECTED_RESULT = "qpmx ";
+        final String DESIRED_WORD = "qpmz";
+        final String CORRECTED_RESULT = "qpmz ";
+        final int typeCountNotToAutocorrect = 1;
+        final int typeCountToAutoCorrect = 16;
+        int startIndex = 0;
+        int endIndex = 0;
+
+        for (int i = 0; i < typeCountNotToAutocorrect; i++) {
+            type(DESIRED_WORD);
+            type(Constants.CODE_SPACE);
+        }
+        startIndex = mEditText.getText().length();
+        type(WORD_TO_BE_CORRECTED);
+        type(Constants.CODE_SPACE);
+        endIndex = mEditText.getText().length();
+        assertEquals("not auto-corrected by user history", NOT_CORRECTED_RESULT,
+                mEditText.getText().subSequence(startIndex, endIndex).toString());
+        for (int i = typeCountNotToAutocorrect; i < typeCountToAutoCorrect; i++) {
+            type(DESIRED_WORD);
+            type(Constants.CODE_SPACE);
+        }
+        startIndex = mEditText.getText().length();
+        type(WORD_TO_BE_CORRECTED);
+        type(Constants.CODE_SPACE);
+        endIndex = mEditText.getText().length();
+        assertEquals("auto-corrected by user history",
+                CORRECTED_RESULT, mEditText.getText().subSequence(startIndex, endIndex).toString());
+    }
+
+    public void testPredictionsAfterSpace() {
+        final String WORD_TO_TYPE = "Barack ";
+        type(WORD_TO_TYPE);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // Test the first prediction is displayed
+        final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("predictions after space", "Obama",
+                suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
+    }
+
+    public void testPredictionsWithDoubleSpaceToPeriod() {
+        mLatinIME.clearPersonalizedDictionariesForTest();
+        final String WORD_TO_TYPE = "Barack ";
+        type(WORD_TO_TYPE);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // No need to test here, testPredictionsAfterSpace is testing it already
+        type(" ");
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // Test the predictions have been cleared
+        SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("predictions cleared after double-space-to-period", suggestedWords.size(), 0);
+        type(Constants.CODE_DELETE);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // Test the first prediction is displayed
+        suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("predictions after cancel double-space-to-period", "Obama",
+                suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
+    }
+
+    public void testPredictionsAfterManualPick() {
+        final String WORD_TO_TYPE = "Barack";
+        type(WORD_TO_TYPE);
+        // Choose the auto-correction. For "Barack", the auto-correction should be "Barack".
+        pickSuggestionManually(WORD_TO_TYPE);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // Test the first prediction is displayed
+        final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("predictions after manual pick", "Obama",
+                suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
+    }
+
+    public void testPredictionsAfterPeriod() {
+        mLatinIME.clearPersonalizedDictionariesForTest();
+        final String WORD_TO_TYPE = "Barack. ";
+        type(WORD_TO_TYPE);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("No prediction after period after inputting once.", 0, suggestedWords.size());
+
+        type(WORD_TO_TYPE);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("Beginning-of-Sentence prediction after inputting 2 times.", "Barack",
+                suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
+    }
+
+    public void testPredictionsAfterRecorrection() {
+        final String PREFIX = "A ";
+        final String WORD_TO_TYPE = "Barack";
+        final String FIRST_NON_TYPED_SUGGESTION = "Barrack";
+        final int endOfPrefix = PREFIX.length();
+        final int endOfWord = endOfPrefix + WORD_TO_TYPE.length();
+        final int endOfSuggestion = endOfPrefix + FIRST_NON_TYPED_SUGGESTION.length();
+        final int indexForManualCursor = endOfPrefix + 3; // +3 because it's after "Bar" in "Barack"
+        type(PREFIX);
+        mLatinIME.onUpdateSelection(0, 0, endOfPrefix, endOfPrefix, -1, -1);
+        type(WORD_TO_TYPE);
+        pickSuggestionManually(FIRST_NON_TYPED_SUGGESTION);
+        mLatinIME.onUpdateSelection(endOfPrefix, endOfPrefix, endOfSuggestion, endOfSuggestion,
+                -1, -1);
+        runMessages();
+        type(" ");
+        mLatinIME.onUpdateSelection(endOfSuggestion, endOfSuggestion,
+                endOfSuggestion + 1, endOfSuggestion + 1, -1, -1);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // Simulate a manual cursor move
+        mInputConnection.setSelection(indexForManualCursor, indexForManualCursor);
+        mLatinIME.onUpdateSelection(endOfSuggestion + 1, endOfSuggestion + 1,
+                indexForManualCursor, indexForManualCursor, -1, -1);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        pickSuggestionManually(WORD_TO_TYPE);
+        mLatinIME.onUpdateSelection(indexForManualCursor, indexForManualCursor,
+                endOfWord, endOfWord, -1, -1);
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        // Test the first prediction is displayed
+        final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("predictions after recorrection", "Obama",
+                suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
+    }
+
+    public void testComposingMultipleBackspace() {
+        final String WORD_TO_TYPE = "radklro";
+        final int TIMES_TO_TYPE = 3;
+        final int TIMES_TO_BACKSPACE = 8;
+        type(WORD_TO_TYPE);
+        type(Constants.CODE_DELETE);
+        type(Constants.CODE_DELETE);
+        type(Constants.CODE_DELETE);
+        type(WORD_TO_TYPE);
+        type(Constants.CODE_DELETE);
+        type(Constants.CODE_DELETE);
+        type(WORD_TO_TYPE);
+        type(Constants.CODE_DELETE);
+        type(Constants.CODE_DELETE);
+        type(Constants.CODE_DELETE);
+        assertEquals("composing with multiple backspace",
+                WORD_TO_TYPE.length() * TIMES_TO_TYPE - TIMES_TO_BACKSPACE,
+                mEditText.getText().length());
+    }
+
+    public void testManySingleQuotes() {
+        final String WORD_TO_AUTOCORRECT = "i";
+        final String WORD_AUTOCORRECTED = "I";
+        final String QUOTES = "''''''''''''''''''''";
+        final String WORD_TO_TYPE = WORD_TO_AUTOCORRECT + QUOTES + " ";
+        final String EXPECTED_RESULT = WORD_AUTOCORRECTED + QUOTES + " ";
+        type(WORD_TO_TYPE);
+        assertEquals("auto-correct with many trailing single quotes", EXPECTED_RESULT,
+                mEditText.getText().toString());
+    }
+
+    public void testManySingleQuotesOneByOne() {
+        final String WORD_TO_AUTOCORRECT = "i";
+        final String WORD_AUTOCORRECTED = "I";
+        final String QUOTES = "''''''''''''''''''''";
+        final String WORD_TO_TYPE = WORD_TO_AUTOCORRECT + QUOTES + " ";
+        final String EXPECTED_RESULT = WORD_AUTOCORRECTED + QUOTES + " ";
+
+        for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
+            type(WORD_TO_TYPE.substring(i, i+1));
+            sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+            runMessages();
+        }
+        assertEquals("type many trailing single quotes one by one", EXPECTED_RESULT,
+                mEditText.getText().toString());
+    }
+
+    public void testTypingSingleQuotesOneByOne() {
+        final String WORD_TO_TYPE = "it's ";
+        final String EXPECTED_RESULT = WORD_TO_TYPE;
+        for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
+            type(WORD_TO_TYPE.substring(i, i+1));
+            sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+            runMessages();
+        }
+        assertEquals("type words letter by letter", EXPECTED_RESULT,
+                mEditText.getText().toString());
+    }
+
+    public void testSwitchLanguages() {
+        final String WORD_TO_TYPE_FIRST_PART = "com";
+        final String WORD_TO_TYPE_SECOND_PART = "md";
+        final String EXPECTED_RESULT = "comme";
+        changeLanguage("en");
+        type(WORD_TO_TYPE_FIRST_PART);
+        changeLanguage("fr");
+        runMessages();
+        type(WORD_TO_TYPE_SECOND_PART);
+        sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
+        runMessages();
+        final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
+        assertEquals("Suggestions updated after switching languages",
+                    EXPECTED_RESULT, suggestedWords.size() > 0 ? suggestedWords.getWord(1) : null);
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTestsLanguageWithoutSpaces.java b/tests/src/com/android/inputmethod/latin/InputLogicTestsLanguageWithoutSpaces.java
index 0f0ebaf..2560407 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTestsLanguageWithoutSpaces.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTestsLanguageWithoutSpaces.java
@@ -19,8 +19,6 @@
 import android.test.suitebuilder.annotation.LargeTest;
 import android.view.inputmethod.BaseInputConnection;
 
-import com.android.inputmethod.latin.suggestions.SuggestionStripView;
-
 @LargeTest
 public class InputLogicTestsLanguageWithoutSpaces extends InputTestsBase {
     public void testAutoCorrectForLanguageWithoutSpaces() {
@@ -99,7 +97,8 @@
         assertEquals("predictions in lang without spaces", "Barack",
                 mEditText.getText().toString());
         // Test the first prediction is displayed
+        final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
         assertEquals("predictions in lang without spaces", "Obama",
-                mLatinIME.getFirstSuggestedWord());
+                suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java b/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java
index 2d736e3..866f889 100644
--- a/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTestsNonEnglish.java
@@ -18,8 +18,6 @@
 
 import android.test.suitebuilder.annotation.LargeTest;
 
-import com.android.inputmethod.latin.suggestions.SuggestionStripView;
-
 @LargeTest
 public class InputLogicTestsNonEnglish extends InputTestsBase {
     final String NEXT_WORD_PREDICTION_OPTION = "next_word_prediction";
@@ -39,12 +37,25 @@
         final String EXPECTED_RESULT = "test !";
         changeLanguage("fr");
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
+        pickSuggestionManually(WORD1_TO_TYPE);
         type(WORD2_TO_TYPE);
         assertEquals("manual pick then separator for French", EXPECTED_RESULT,
                 mEditText.getText().toString());
     }
 
+    public void testClusteringPunctuationForFrench() {
+        final String WORD1_TO_TYPE = "test";
+        final String WORD2_TO_TYPE = "!!?!:!";
+        // In English, the expected result would be "test!!?!:!"
+        final String EXPECTED_RESULT = "test !!?! : !";
+        changeLanguage("fr");
+        type(WORD1_TO_TYPE);
+        pickSuggestionManually(WORD1_TO_TYPE);
+        type(WORD2_TO_TYPE);
+        assertEquals("clustering punctuation for French", EXPECTED_RESULT,
+                mEditText.getText().toString());
+    }
+
     public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() {
         final String WORD_TO_TYPE = "test ";
         final String PUNCTUATION_FROM_STRIP = "!";
@@ -60,9 +71,9 @@
             sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
             runMessages();
             assertTrue("type word then type space should display punctuation strip",
-                    mLatinIME.isShowingPunctuationList());
-            pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
-            pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+                    mLatinIME.getSuggestedWordsForTest().isPunctuationSuggestions());
+            pickSuggestionManually(PUNCTUATION_FROM_STRIP);
+            pickSuggestionManually(PUNCTUATION_FROM_STRIP);
             assertEquals("type word then type space then punctuation from strip twice for French",
                     EXPECTED_RESULT, mEditText.getText().toString());
         } finally {
@@ -84,8 +95,9 @@
             type(WORD_TO_TYPE);
             sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
             runMessages();
+            final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
             assertEquals("type word then type space yields predictions for French",
-                    EXPECTED_RESULT, mLatinIME.getFirstSuggestedWord());
+                    EXPECTED_RESULT, suggestedWords.size() > 0 ? suggestedWords.getWord(0) : null);
         } finally {
             setBooleanPreference(NEXT_WORD_PREDICTION_OPTION, previousNextWordPredictionOption,
                     defaultNextWordPredictionOption);
diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTestsReorderingMyanmar.java b/tests/src/com/android/inputmethod/latin/InputLogicTestsReorderingMyanmar.java
new file mode 100644
index 0000000..61eae4e
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/InputLogicTestsReorderingMyanmar.java
@@ -0,0 +1,234 @@
+/*
+ * 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;
+
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Pair;
+
+/*
+ * Relevant characters for this test :
+ * Spurs the need to reorder :
+ * U+1031 MYANMAR VOWEL SIGN E : ေ
+ * U+1004 U+103A U+1039 Kinzi. It's a compound character.
+ *
+ * List of consonants :
+ * U+1000 MYANMAR LETTER KA က
+ * U+1001 MYANMAR LETTER KHA ခ
+ * U+1002 MYANMAR LETTER GA ဂ
+ * U+1003 MYANMAR LETTER GHA ဃ
+ * U+1004 MYANMAR LETTER NGA င
+ * U+1005 MYANMAR LETTER CA စ
+ * U+1006 MYANMAR LETTER CHA ဆ
+ * U+1007 MYANMAR LETTER JA ဇ
+ * U+1008 MYANMAR LETTER JHA ဈ
+ * U+1009 MYANMAR LETTER NYA ဉ
+ * U+100A MYANMAR LETTER NNYA ည
+ * U+100B MYANMAR LETTER TTA ဋ
+ * U+100C MYANMAR LETTER TTHA ဌ
+ * U+100D MYANMAR LETTER DDA ဍ
+ * U+100E MYANMAR LETTER DDHA ဎ
+ * U+100F MYANMAR LETTER NNA ဏ
+ * U+1010 MYANMAR LETTER TA တ
+ * U+1011 MYANMAR LETTER THA ထ
+ * U+1012 MYANMAR LETTER DA ဒ
+ * U+1013 MYANMAR LETTER DHA ဓ
+ * U+1014 MYANMAR LETTER NA န
+ * U+1015 MYANMAR LETTER PA ပ
+ * U+1016 MYANMAR LETTER PHA ဖ
+ * U+1017 MYANMAR LETTER BA ဗ
+ * U+1018 MYANMAR LETTER BHA ဘ
+ * U+1019 MYANMAR LETTER MA မ
+ * U+101A MYANMAR LETTER YA ယ
+ * U+101B MYANMAR LETTER RA ရ
+ * U+101C MYANMAR LETTER LA လ
+ * U+101D MYANMAR LETTER WA ဝ
+ * U+101E MYANMAR LETTER SA သ
+ * U+101F MYANMAR LETTER HA ဟ
+ * U+1020 MYANMAR LETTER LLA ဠ
+ * U+103F MYANMAR LETTER GREAT SA ဿ
+ *
+ * List of medials :
+ * U+103B MYANMAR CONSONANT SIGN MEDIAL YA ျ
+ * U+103C MYANMAR CONSONANT SIGN MEDIAL RA ြ
+ * U+103D MYANMAR CONSONANT SIGN MEDIAL WA ွ
+ * U+103E MYANMAR CONSONANT SIGN MEDIAL HA ှ
+ * U+105E MYANMAR CONSONANT SIGN MON MEDIAL NA ၞ
+ * U+105F MYANMAR CONSONANT SIGN MON MEDIAL MA ၟ
+ * U+1060 MYANMAR CONSONANT SIGN MON MEDIAL LA ၠ
+ * U+1082 MYANMAR CONSONANT SIGN SHAN MEDIAL WA ႂ
+ *
+ * Other relevant characters :
+ * U+200C ZERO WIDTH NON-JOINER
+ * U+200B ZERO WIDTH SPACE
+ */
+
+@LargeTest
+@SuppressWarnings("rawtypes")
+public class InputLogicTestsReorderingMyanmar extends InputTestsBase {
+    // The tests are formatted as follows.
+    // Each test is an entry in the array of Pair arrays.
+
+    // One test is an array of pairs. Each pair contains, in the `first' member,
+    // the code points that the next key press should contain. In the `second'
+    // member is stored the string that should be in the text view after this
+    // key press.
+
+    private static final Pair[][] TESTS = {
+
+        // Tests for U+1031 MYANMAR VOWEL SIGN E : ေ
+        new Pair[] { // Type : U+1031 U+1000 U+101F ေ က ဟ
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1000 }, "\u1000\u1031"), // ကေ
+            Pair.create(new int[] { 0x101F }, "\u1000\u1031\u101F") // ကေဟ
+        },
+
+        new Pair[] { // Type : U+1000 U+1031 U+101F က ေ ဟ
+            Pair.create(new int[] { 0x1000 }, "\u1000"), // က
+            Pair.create(new int[] { 0x1031 }, "\u1000\u200B\u1031"), // က‌ေ
+            Pair.create(new int[] { 0x101F }, "\u1000\u101F\u1031") // ကဟေ
+        },
+
+        new Pair[] { // Type : U+1031 U+101D U+103E U+1018 ေ ဝ ှ ဘ
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x101D }, "\u101D\u1031"), // ဝေ
+            Pair.create(new int[] { 0x103E }, "\u101D\u103E\u1031"), // ဝှေ
+            Pair.create(new int[] { 0x1018 }, "\u101D\u103E\u1031\u1018") // ဝှေဘ
+        },
+
+        new Pair[] { // Type : U+1031 U+1014 U+1031 U+1000 U+102C U+1004 U+103A U+1038 U+101C
+            // U+102C U+1038 U+104B ေ န ေ က ာ င ် း လ ာ း ။
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1014 }, "\u1014\u1031"), // နေ
+            Pair.create(new int[] { 0x1031 }, "\u1014\u1031\u1031"), // နေ‌ေ
+            Pair.create(new int[] { 0x1000 }, "\u1014\u1031\u1000\u1031"), // နေကေ
+            Pair.create(new int[] { 0x102C }, "\u1014\u1031\u1000\u1031\u102C"), // နေကော
+            Pair.create(new int[] { 0x1004 }, "\u1014\u1031\u1000\u1031\u102C\u1004"), // နေကောင
+            Pair.create(new int[] { 0x103A }, // နေကောင်
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A"),
+            Pair.create(new int[] { 0x1038 }, // နေကောင်း
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038"),
+            Pair.create(new int[] { 0x101C }, // နေကောင်းလ
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C"),
+            Pair.create(new int[] { 0x102C }, // နေကောင်းလာ
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C"),
+            Pair.create(new int[] { 0x1038 }, // နေကောင်းလား
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C\u1038"),
+            Pair.create(new int[] { 0x104B }, // နေကောင်းလား။
+                    "\u1014\u1031\u1000\u1031\u102C\u1004\u103A\u1038\u101C\u102C\u1038\u104B")
+        },
+
+        new Pair[] { // Type : U+1031 U+1031 U+1031 U+1000 ေ ေ ေ က
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1031 }, "\u1031\u1031"), // ေေ
+            Pair.create(new int[] { 0x1031 }, "\u1031\u1031\u1031"), // U+1031ေေေ
+            Pair.create(new int[] { 0x1000 }, "\u1031\u1031\u1000\u1031") // ေေကေ
+        },
+
+        new Pair[] { // Type : U+1031 U+1001 U+103B U+103D U+1038 ေ ခ ျ ွ း
+            Pair.create(new int[] { 0x1031 }, "\u1031"), // ေ
+            Pair.create(new int[] { 0x1001 }, "\u1001\u1031"), // ခေ
+            Pair.create(new int[] { 0x103B }, "\u1001\u103B\u1031"), // ချေ
+            Pair.create(new int[] { 0x103D }, "\u1001\u103B\u103D\u1031"), // ချွေ
+            Pair.create(new int[] { 0x1038 }, "\u1001\u103B\u103D\u1031\u1038") // ချွေး
+        },
+
+        // Tests for Kinzi U+1004 U+103A U+1039 :
+
+        /* Kinzi reordering is not implemented yet. Uncomment these tests when it is.
+
+        new Pair[] { // Type : U+1021 U+1002 (U+1004 U+103A U+1039)
+            // U+101C U+1014 U+103A အ ဂ (င ် ္) လ န ်
+            Pair.create(new int[] { 0x1021 }, "\u1021"), // အ
+            Pair.create(new int[] { 0x1002 }, "\u1021\u1002"), // အဂ
+            Pair.create(new int[] { 0x1004, 0x103A, 0x1039 }, // အင်္ဂ
+                    "\u1021\u1004\u103A\u1039\u1002"),
+            Pair.create(new int[] { 0x101C }, // အင်္ဂလ
+                    "\u1021\u1004\u103A\u1039\u1002\u101C"),
+            Pair.create(new int[] { 0x1014 }, // အင်္ဂလန
+                    "\u1021\u1004\u103A\u1039\u1002\u101C\u1014"),
+            Pair.create(new int[] { 0x103A }, // အင်္ဂလန်
+                    "\u1021\u1004\u103A\u1039\u1002\u101C\u1014\u103A")
+        },
+
+        new Pair[] { //Type : kinzi after a whole syllable U+101E U+1001 U+103B U+102D U+102F
+            // (U+1004 U+103A U+1039) U+1004 U+103A U+1038 သ ခ ျ ိ ု င ် ္ င ် း
+            Pair.create(new int[] { 0x101E }, "\u101E"), // သခ
+            Pair.create(new int[] { 0x1001 }, "\u101E\u1001"), // သခ
+            Pair.create(new int[] { 0x103B }, "\u101E\u1001\u103B"), // သချ
+            Pair.create(new int[] { 0x102D }, "\u101E\u1001\u103B\u102D"), // သချိ
+            Pair.create(new int[] { 0x102F }, "\u101E\u1001\u103B\u102D\u102F"), // သချို
+            Pair.create(new int[] { 0x1004, 0x103A, 0x1039}, // သင်္ချို
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F"),
+            Pair.create(new int[] { 0x1004 }, // သင်္ချိုင
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004"),
+            Pair.create(new int[] { 0x103A }, // သင်္ချိုင်
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A"),
+            Pair.create(new int[] { 0x1038 }, // သင်္ချိုင်း
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A\u1038")
+        },
+
+        new Pair[] { // Type : kinzi after the consonant U+101E U+1001 (U+1004 U+103A U+1039)
+            // U+103B U+102D U+102F U+1004 U+103A U+1038 သ ခ င ် ္ ျ ိ ု င ် း
+            Pair.create(new int[] { 0x101E }, "\u101E"), // သခ
+            Pair.create(new int[] { 0x1001 }, "\u101E\u1001"), // သခ
+            Pair.create(new int[] { 0x1004, 0x103A, 0x1039 }, // သင်္ခ
+                    "\u101E\u1004\u103A\u1039\u1001"),
+            Pair.create(new int[] { 0x103B }, // သင်္ချ
+                    "\u101E\u1004\u103A\u1039\u1001\u103B"),
+            Pair.create(new int[] { 0x102D }, // သင်္ချိ
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D"),
+            Pair.create(new int[] { 0x102F }, // သင်္ချို
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F"),
+            Pair.create(new int[] { 0x1004 }, // သင်္ချိုင
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004"),
+            Pair.create(new int[] { 0x103A }, // သင်္ချိုင်
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A"),
+            Pair.create(new int[] { 0x1038 }, // သင်္ချိုင်း
+                    "\u101E\u1004\u103A\u1039\u1001\u103B\u102D\u102F\u1004\u103A\u1038")
+        },
+        */
+    };
+
+    @SuppressWarnings("unchecked")
+    private void doMyanmarTest(final int testNumber, final Pair[] test) {
+        int stepNumber = 0;
+        for (final Pair<int[], String> step : test) {
+            ++stepNumber;
+            final int[] input = step.first;
+            final String expectedResult = step.second;
+            if (input.length > 1) {
+                mLatinIME.onTextInput(new String(input, 0, input.length));
+            } else {
+                type(input[0]);
+            }
+            assertEquals("Myanmar reordering test " + testNumber + ", step " + stepNumber,
+                    expectedResult, mEditText.getText().toString());
+        }
+    }
+
+    public void testMyanmarReordering() {
+        int testNumber = 0;
+        changeLanguage("my_MM", "CombiningRules=MyanmarReordering");
+        for (final Pair[] test : TESTS) {
+            // Small trick to reset LatinIME : setText("") and send updateSelection with values
+            // LatinIME has never seen, and cursor pos 0,0.
+            mEditText.setText("");
+            mLatinIME.onUpdateSelection(1, 1, 0, 0, -1, -1);
+            doMyanmarTest(++testNumber, test);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/InputPointersTests.java b/tests/src/com/android/inputmethod/latin/InputPointersTests.java
index 5095f96..1a47cdd 100644
--- a/tests/src/com/android/inputmethod/latin/InputPointersTests.java
+++ b/tests/src/com/android/inputmethod/latin/InputPointersTests.java
@@ -55,14 +55,22 @@
         final InputPointers src = new InputPointers(DEFAULT_CAPACITY);
         final int limit = src.getXCoordinates().length * 2 + 10;
         for (int i = 0; i < limit; i++) {
-            src.addPointer(i, i * 2, i * 3, i * 4);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            src.addPointer(x, y, pointerId, time);
             assertEquals("size after add " + i, i + 1, src.getPointerSize());
         }
         for (int i = 0; i < limit; i++) {
-            assertEquals("xCoordinates at " + i, i, src.getXCoordinates()[i]);
-            assertEquals("yCoordinates at " + i, i * 2, src.getYCoordinates()[i]);
-            assertEquals("pointerIds at " + i, i * 3, src.getPointerIds()[i]);
-            assertEquals("times at " + i, i * 4, src.getTimes()[i]);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            assertEquals("xCoordinates at " + i, x, src.getXCoordinates()[i]);
+            assertEquals("yCoordinates at " + i, y, src.getYCoordinates()[i]);
+            assertEquals("pointerIds at " + i, pointerId, src.getPointerIds()[i]);
+            assertEquals("times at " + i, time, src.getTimes()[i]);
         }
     }
 
@@ -70,14 +78,22 @@
         final InputPointers src = new InputPointers(DEFAULT_CAPACITY);
         final int limit = 1000, step = 100;
         for (int i = 0; i < limit; i += step) {
-            src.addPointer(i, i, i * 2, i * 3, i * 4);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            src.addPointerAt(i, x, y, pointerId, time);
             assertEquals("size after add at " + i, i + 1, src.getPointerSize());
         }
         for (int i = 0; i < limit; i += step) {
-            assertEquals("xCoordinates at " + i, i, src.getXCoordinates()[i]);
-            assertEquals("yCoordinates at " + i, i * 2, src.getYCoordinates()[i]);
-            assertEquals("pointerIds at " + i, i * 3, src.getPointerIds()[i]);
-            assertEquals("times at " + i, i * 4, src.getTimes()[i]);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            assertEquals("xCoordinates at " + i, x, src.getXCoordinates()[i]);
+            assertEquals("yCoordinates at " + i, y, src.getYCoordinates()[i]);
+            assertEquals("pointerIds at " + i, pointerId, src.getPointerIds()[i]);
+            assertEquals("times at " + i, time, src.getTimes()[i]);
         }
     }
 
@@ -85,7 +101,11 @@
         final InputPointers src = new InputPointers(DEFAULT_CAPACITY);
         final int limit = src.getXCoordinates().length * 2 + 10;
         for (int i = 0; i < limit; i++) {
-            src.addPointer(i, i * 2, i * 3, i * 4);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            src.addPointer(x, y, pointerId, time);
         }
         final InputPointers dst = new InputPointers(DEFAULT_CAPACITY);
         dst.set(src);
@@ -100,7 +120,11 @@
         final InputPointers src = new InputPointers(DEFAULT_CAPACITY);
         final int limit = 100;
         for (int i = 0; i < limit; i++) {
-            src.addPointer(i, i * 2, i * 3, i * 4);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            src.addPointer(x, y, pointerId, time);
         }
         final InputPointers dst = new InputPointers(DEFAULT_CAPACITY);
         dst.copy(src);
@@ -121,106 +145,135 @@
     }
 
     public void testAppend() {
-        final InputPointers src = new InputPointers(DEFAULT_CAPACITY);
-        final int srcLen = 100;
-        for (int i = 0; i < srcLen; i++) {
-            src.addPointer(i, i * 2, i * 3, i * 4);
-        }
-        final int dstLen = 50;
+        final int dstLength = 50;
         final InputPointers dst = new InputPointers(DEFAULT_CAPACITY);
-        for (int i = 0; i < dstLen; i++) {
-            final int value = -i - 1;
-            dst.addPointer(value * 4, value * 3, value * 2, value);
+        for (int i = 0; i < dstLength; i++) {
+            final int x = i * 4;
+            final int y = i * 3;
+            final int pointerId = i * 2;
+            final int time = i;
+            dst.addPointer(x, y, pointerId, time);
         }
         final InputPointers dstCopy = new InputPointers(DEFAULT_CAPACITY);
         dstCopy.copy(dst);
 
-        dst.append(src, 0, 0);
-        assertEquals("size after append zero", dstLen, dst.getPointerSize());
-        assertIntArrayEquals("xCoordinates after append zero",
-                dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen);
-        assertIntArrayEquals("yCoordinates after append zero",
-                dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen);
-        assertIntArrayEquals("pointerIds after append zero",
-                dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen);
-        assertIntArrayEquals("times after append zero",
-                dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen);
+        final ResizableIntArray srcXCoords = new ResizableIntArray(DEFAULT_CAPACITY);
+        final ResizableIntArray srcYCoords = new ResizableIntArray(DEFAULT_CAPACITY);
+        final ResizableIntArray srcPointerIds = new ResizableIntArray(DEFAULT_CAPACITY);
+        final ResizableIntArray srcTimes = new ResizableIntArray(DEFAULT_CAPACITY);
+        final int srcLength = 100;
+        final int srcPointerId = 10;
+        for (int i = 0; i < srcLength; i++) {
+            final int x = i;
+            final int y = i * 2;
+            // The time value must be larger than <code>dst</code>.
+            final int time = i * 4 + dstLength;
+            srcXCoords.add(x);
+            srcYCoords.add(y);
+            srcPointerIds.add(srcPointerId);
+            srcTimes.add(time);
+        }
 
-        dst.append(src, 0, srcLen);
-        assertEquals("size after append", dstLen + srcLen, dst.getPointerSize());
+        final int startPos = 0;
+        dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords,
+                startPos, 0 /* length */);
+        assertEquals("size after append zero", dstLength, dst.getPointerSize());
+        assertIntArrayEquals("xCoordinates after append zero",
+                dstCopy.getXCoordinates(), startPos, dst.getXCoordinates(), startPos, dstLength);
+        assertIntArrayEquals("yCoordinates after append zero",
+                dstCopy.getYCoordinates(), startPos, dst.getYCoordinates(), startPos, dstLength);
+        assertIntArrayEquals("pointerIds after append zero",
+                dstCopy.getPointerIds(), startPos, dst.getPointerIds(), startPos, dstLength);
+        assertIntArrayEquals("times after append zero",
+                dstCopy.getTimes(), startPos, dst.getTimes(), startPos, dstLength);
+
+        dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords,
+                startPos, srcLength);
+        assertEquals("size after append", dstLength + srcLength, dst.getPointerSize());
         assertTrue("primitive length after append",
-                dst.getPointerIds().length >= dstLen + srcLen);
+                dst.getPointerIds().length >= dstLength + srcLength);
         assertIntArrayEquals("original xCoordinates values after append",
-                dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen);
+                dstCopy.getXCoordinates(), startPos, dst.getXCoordinates(), startPos, dstLength);
         assertIntArrayEquals("original yCoordinates values after append",
-                dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen);
+                dstCopy.getYCoordinates(), startPos, dst.getYCoordinates(), startPos, dstLength);
         assertIntArrayEquals("original pointerIds values after append",
-                dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen);
+                dstCopy.getPointerIds(), startPos, dst.getPointerIds(), startPos, dstLength);
         assertIntArrayEquals("original times values after append",
-                dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen);
+                dstCopy.getTimes(), startPos, dst.getTimes(), startPos, dstLength);
         assertIntArrayEquals("appended xCoordinates values after append",
-                src.getXCoordinates(), 0, dst.getXCoordinates(), dstLen, srcLen);
+                srcXCoords.getPrimitiveArray(), startPos, dst.getXCoordinates(),
+                dstLength, srcLength);
         assertIntArrayEquals("appended yCoordinates values after append",
-                src.getYCoordinates(), 0, dst.getYCoordinates(), dstLen, srcLen);
+                srcYCoords.getPrimitiveArray(), startPos, dst.getYCoordinates(),
+                dstLength, srcLength);
         assertIntArrayEquals("appended pointerIds values after append",
-                src.getPointerIds(), 0, dst.getPointerIds(), dstLen, srcLen);
+                srcPointerIds.getPrimitiveArray(), startPos, dst.getPointerIds(),
+                dstLength, srcLength);
         assertIntArrayEquals("appended times values after append",
-                src.getTimes(), 0, dst.getTimes(), dstLen, srcLen);
+                srcTimes.getPrimitiveArray(), startPos, dst.getTimes(), dstLength, srcLength);
     }
 
     public void testAppendResizableIntArray() {
-        final int srcLen = 100;
+        final int dstLength = 50;
+        final InputPointers dst = new InputPointers(DEFAULT_CAPACITY);
+        for (int i = 0; i < dstLength; i++) {
+            final int x = i * 4;
+            final int y = i * 3;
+            final int pointerId = i * 2;
+            final int time = i;
+            dst.addPointer(x, y, pointerId, time);
+        }
+        final InputPointers dstCopy = new InputPointers(DEFAULT_CAPACITY);
+        dstCopy.copy(dst);
+
+        final int srcLength = 100;
         final int srcPointerId = 1;
-        final int[] srcPointerIds = new int[srcLen];
+        final int[] srcPointerIds = new int[srcLength];
         Arrays.fill(srcPointerIds, srcPointerId);
         final ResizableIntArray srcTimes = new ResizableIntArray(DEFAULT_CAPACITY);
         final ResizableIntArray srcXCoords = new ResizableIntArray(DEFAULT_CAPACITY);
         final ResizableIntArray srcYCoords= new ResizableIntArray(DEFAULT_CAPACITY);
-        for (int i = 0; i < srcLen; i++) {
-            srcTimes.add(i * 2);
-            srcXCoords.add(i * 3);
-            srcYCoords.add(i * 4);
+        for (int i = 0; i < srcLength; i++) {
+            // The time value must be larger than <code>dst</code>.
+            final int time = i * 2 + dstLength;
+            final int x = i * 3;
+            final int y = i * 4;
+            srcTimes.add(time);
+            srcXCoords.add(x);
+            srcYCoords.add(y);
         }
-        final int dstLen = 50;
-        final InputPointers dst = new InputPointers(DEFAULT_CAPACITY);
-        for (int i = 0; i < dstLen; i++) {
-            final int value = -i - 1;
-            dst.addPointer(value * 4, value * 3, value * 2, value);
-        }
-        final InputPointers dstCopy = new InputPointers(DEFAULT_CAPACITY);
-        dstCopy.copy(dst);
 
         dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords, 0, 0);
-        assertEquals("size after append zero", dstLen, dst.getPointerSize());
+        assertEquals("size after append zero", dstLength, dst.getPointerSize());
         assertIntArrayEquals("xCoordinates after append zero",
-                dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen);
+                dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLength);
         assertIntArrayEquals("yCoordinates after append zero",
-                dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen);
+                dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLength);
         assertIntArrayEquals("pointerIds after append zero",
-                dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen);
+                dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLength);
         assertIntArrayEquals("times after append zero",
-                dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen);
+                dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLength);
 
-        dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords, 0, srcLen);
-        assertEquals("size after append", dstLen + srcLen, dst.getPointerSize());
+        dst.append(srcPointerId, srcTimes, srcXCoords, srcYCoords, 0, srcLength);
+        assertEquals("size after append", dstLength + srcLength, dst.getPointerSize());
         assertTrue("primitive length after append",
-                dst.getPointerIds().length >= dstLen + srcLen);
+                dst.getPointerIds().length >= dstLength + srcLength);
         assertIntArrayEquals("original xCoordinates values after append",
-                dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLen);
+                dstCopy.getXCoordinates(), 0, dst.getXCoordinates(), 0, dstLength);
         assertIntArrayEquals("original yCoordinates values after append",
-                dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLen);
+                dstCopy.getYCoordinates(), 0, dst.getYCoordinates(), 0, dstLength);
         assertIntArrayEquals("original pointerIds values after append",
-                dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLen);
+                dstCopy.getPointerIds(), 0, dst.getPointerIds(), 0, dstLength);
         assertIntArrayEquals("original times values after append",
-                dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLen);
+                dstCopy.getTimes(), 0, dst.getTimes(), 0, dstLength);
         assertIntArrayEquals("appended xCoordinates values after append",
-                srcXCoords.getPrimitiveArray(), 0, dst.getXCoordinates(), dstLen, srcLen);
+                srcXCoords.getPrimitiveArray(), 0, dst.getXCoordinates(), dstLength, srcLength);
         assertIntArrayEquals("appended yCoordinates values after append",
-                srcYCoords.getPrimitiveArray(), 0, dst.getYCoordinates(), dstLen, srcLen);
+                srcYCoords.getPrimitiveArray(), 0, dst.getYCoordinates(), dstLength, srcLength);
         assertIntArrayEquals("appended pointerIds values after append",
-                srcPointerIds, 0, dst.getPointerIds(), dstLen, srcLen);
+                srcPointerIds, 0, dst.getPointerIds(), dstLength, srcLength);
         assertIntArrayEquals("appended times values after append",
-                srcTimes.getPrimitiveArray(), 0, dst.getTimes(), dstLen, srcLen);
+                srcTimes.getPrimitiveArray(), 0, dst.getTimes(), dstLength, srcLength);
     }
 
     // TODO: Consolidate this method with
@@ -250,14 +303,24 @@
         final int limit = 100;
         final int shiftAmount = 20;
         for (int i = 0; i < limit; i++) {
-            src.addPointer(i, i * 2, i * 3, i * 4);
+            final int x = i;
+            final int y = i * 2;
+            final int pointerId = i * 3;
+            final int time = i * 4;
+            src.addPointer(x, y, pointerId, time);
         }
         src.shift(shiftAmount);
+        assertEquals("length after shift", src.getPointerSize(), limit - shiftAmount);
         for (int i = 0; i < limit - shiftAmount; ++i) {
-            assertEquals("xCoordinates at " + i, i + shiftAmount, src.getXCoordinates()[i]);
-            assertEquals("yCoordinates at " + i, (i + shiftAmount) * 2, src.getYCoordinates()[i]);
-            assertEquals("pointerIds at " + i, (i + shiftAmount) * 3, src.getPointerIds()[i]);
-            assertEquals("times at " + i, (i + shiftAmount) * 4, src.getTimes()[i]);
+            final int oldIndex = i + shiftAmount;
+            final int x = oldIndex;
+            final int y = oldIndex * 2;
+            final int pointerId = oldIndex * 3;
+            final int time = oldIndex * 4;
+            assertEquals("xCoordinates at " + i, x, src.getXCoordinates()[i]);
+            assertEquals("yCoordinates at " + i, y, src.getYCoordinates()[i]);
+            assertEquals("pointerIds at " + i, pointerId, src.getPointerIds()[i]);
+            assertEquals("times at " + i, time, src.getTimes()[i]);
         }
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
index b9b52a6..986fb10 100644
--- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
@@ -25,35 +25,48 @@
 import android.text.SpannableStringBuilder;
 import android.text.style.CharacterStyle;
 import android.text.style.SuggestionSpan;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
+import android.view.inputmethod.InputMethodSubtype;
 import android.widget.EditText;
 import android.widget.FrameLayout;
 
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
 import com.android.inputmethod.keyboard.Key;
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+import com.android.inputmethod.latin.settings.DebugSettings;
+import com.android.inputmethod.latin.settings.Settings;
 import com.android.inputmethod.latin.utils.LocaleUtils;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
 import java.util.Locale;
+import java.util.concurrent.TimeUnit;
 
 public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
+    private static final String TAG = InputTestsBase.class.getSimpleName();
 
-    private static final String PREF_DEBUG_MODE = "debug_mode";
+    // Default value for auto-correction threshold. This is the string representation of the
+    // index in the resources array of auto-correction threshold settings.
+    private static final String DEFAULT_AUTO_CORRECTION_THRESHOLD = "1";
 
-    // The message that sets the underline is posted with a 200 ms delay
-    protected static final int DELAY_TO_WAIT_FOR_UNDERLINE = 200;
+    // The message that sets the underline is posted with a 500 ms delay
+    protected static final int DELAY_TO_WAIT_FOR_UNDERLINE = 500;
     // The message that sets predictions is posted with a 200 ms delay
     protected static final int DELAY_TO_WAIT_FOR_PREDICTIONS = 200;
+    private final int TIMEOUT_TO_WAIT_FOR_LOADING_MAIN_DICTIONARY_IN_SECONDS = 60;
 
     protected LatinIME mLatinIME;
     protected Keyboard mKeyboard;
     protected MyEditText mEditText;
     protected View mInputView;
     protected InputConnection mInputConnection;
+    private boolean mPreviousBigramPredictionSettings;
+    private String mPreviousAutoCorrectSetting;
 
     // A helper class to ease span tests
     public static class SpanGetter {
@@ -135,13 +148,30 @@
         final boolean previousSetting = prefs.getBoolean(key, defaultValue);
         final SharedPreferences.Editor editor = prefs.edit();
         editor.putBoolean(key, value);
-        editor.commit();
+        editor.apply();
         return previousSetting;
     }
 
-    // returns the previous setting value
-    protected boolean setDebugMode(final boolean value) {
-        return setBooleanPreference(PREF_DEBUG_MODE, value, false);
+    protected String setStringPreference(final String key, final String value,
+            final String defaultValue) {
+        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mLatinIME);
+        final String previousSetting = prefs.getString(key, defaultValue);
+        final SharedPreferences.Editor editor = prefs.edit();
+        editor.putString(key, value);
+        editor.apply();
+        return previousSetting;
+    }
+
+    protected void setDebugMode(final boolean value) {
+        setBooleanPreference(DebugSettings.PREF_DEBUG_MODE, value, false);
+        setBooleanPreference(Settings.PREF_KEY_IS_INTERNAL, value, false);
+    }
+
+    protected EditorInfo enrichEditorInfo(final EditorInfo ei) {
+        // Some tests that inherit from us need to add some data in the EditorInfo (see
+        // AppWorkaroundsTests#enrichEditorInfo() for a concrete example of this). Since we
+        // control the EditorInfo, we supply a hook here for children to override.
+        return ei;
     }
 
     @Override
@@ -154,15 +184,19 @@
         mEditText.setEnabled(true);
         setupService();
         mLatinIME = getService();
-        final boolean previousDebugSetting = setDebugMode(true);
+        setDebugMode(true);
+        mPreviousBigramPredictionSettings = setBooleanPreference(Settings.PREF_BIGRAM_PREDICTIONS,
+                true, true /* defaultValue */);
+        mPreviousAutoCorrectSetting = setStringPreference(Settings.PREF_AUTO_CORRECTION_THRESHOLD,
+                DEFAULT_AUTO_CORRECTION_THRESHOLD, DEFAULT_AUTO_CORRECTION_THRESHOLD);
         mLatinIME.onCreate();
-        setDebugMode(previousDebugSetting);
-        final EditorInfo ei = new EditorInfo();
+        EditorInfo ei = new EditorInfo();
         final InputConnection ic = mEditText.onCreateInputConnection(ei);
         final LayoutInflater inflater =
                 (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         final ViewGroup vg = new FrameLayout(getContext());
         mInputView = inflater.inflate(R.layout.input_view, vg);
+        ei = enrichEditorInfo(ei);
         mLatinIME.onCreateInputMethodInterface().startInput(ic, ei);
         mLatinIME.setInputView(mInputView);
         mLatinIME.onBindInput();
@@ -170,6 +204,27 @@
         mLatinIME.onStartInputView(ei, false);
         mInputConnection = ic;
         changeLanguage("en_US");
+        // Run messages to avoid the messages enqueued by startInputView() and its friends
+        // to run on a later call and ruin things. We need to wait first because some of them
+        // can be posted with a delay (notably,  MSG_RESUME_SUGGESTIONS)
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        mLatinIME.onFinishInputView(true);
+        mLatinIME.onFinishInput();
+        runMessages();
+        mLatinIME.mHandler.removeAllMessages();
+        setBooleanPreference(Settings.PREF_BIGRAM_PREDICTIONS, mPreviousBigramPredictionSettings,
+                true /* defaultValue */);
+        setStringPreference(Settings.PREF_AUTO_CORRECTION_THRESHOLD, mPreviousAutoCorrectSetting,
+                DEFAULT_AUTO_CORRECTION_THRESHOLD);
+        setDebugMode(false);
+        mLatinIME.recycle();
+        super.tearDown();
+        mLatinIME = null;
     }
 
     // We need to run the messages added to the handler from LatinIME. The only way to do
@@ -199,7 +254,7 @@
     }
 
     // type(int) and type(String): helper methods to send a code point resp. a string to LatinIME.
-    protected void type(final int codePoint) {
+    protected void typeInternal(final int codePoint, final boolean isKeyRepeat) {
         // onPressKey and onReleaseKey are explicitly deactivated here, but they do happen in the
         // code (although multitouch/slide input and other factors make the sequencing complicated).
         // They are supposed to be entirely deconnected from the input logic from LatinIME point of
@@ -208,60 +263,90 @@
         // but keep them in mind if something breaks. Commenting them out as is should work.
         //mLatinIME.onPressKey(codePoint, 0 /* repeatCount */, true /* isSinglePointer */);
         final Key key = mKeyboard.getKey(codePoint);
-        if (key != null) {
+        if (key == null) {
+            mLatinIME.onCodeInput(codePoint, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE,
+                    isKeyRepeat);
+        } else {
             final int x = key.getX() + key.getWidth() / 2;
             final int y = key.getY() + key.getHeight() / 2;
-            mLatinIME.onCodeInput(codePoint, x, y);
-            return;
+            mLatinIME.onCodeInput(codePoint, x, y, isKeyRepeat);
         }
-        mLatinIME.onCodeInput(codePoint, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+        // Also see the comment at the top of this function about onReleaseKey
         //mLatinIME.onReleaseKey(codePoint, false /* withSliding */);
     }
 
+    protected void type(final int codePoint) {
+        typeInternal(codePoint, false /* isKeyRepeat */);
+    }
+
+    protected void repeatKey(final int codePoint) {
+        typeInternal(codePoint, true /* isKeyRepeat */);
+    }
+
     protected void type(final String stringToType) {
         for (int i = 0; i < stringToType.length(); i = stringToType.offsetByCodePoints(i, 1)) {
             type(stringToType.codePointAt(i));
         }
     }
 
-    protected void waitForDictionaryToBeLoaded() {
-        int remainingAttempts = 300;
-        while (remainingAttempts > 0 && mLatinIME.isCurrentlyWaitingForMainDictionary()) {
-            try {
-                Thread.sleep(200);
-            } catch (InterruptedException e) {
-                // Don't do much
-            } finally {
-                --remainingAttempts;
-            }
+    protected void waitForDictionariesToBeLoaded() {
+        try {
+            mLatinIME.waitForLoadingDictionaries(
+                    TIMEOUT_TO_WAIT_FOR_LOADING_MAIN_DICTIONARY_IN_SECONDS, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            Log.e(TAG, "Interrupted during waiting for loading main dictionary.", e);
         }
     }
 
     protected void changeLanguage(final String locale) {
-        changeLanguageWithoutWait(locale);
-        waitForDictionaryToBeLoaded();
+        changeLanguage(locale, null);
     }
 
-    protected void changeLanguageWithoutWait(final String locale) {
+    protected void changeLanguage(final String locale, final String combiningSpec) {
+        changeLanguageWithoutWait(locale, combiningSpec);
+        waitForDictionariesToBeLoaded();
+    }
+
+    protected void changeLanguageWithoutWait(final String locale, final String combiningSpec) {
         mEditText.mCurrentLocale = LocaleUtils.constructLocaleFromString(locale);
-        SubtypeSwitcher.getInstance().forceLocale(mEditText.mCurrentLocale);
-        mLatinIME.loadKeyboard();
+        // TODO: this is forcing a QWERTY keyboard for all locales, which is wrong.
+        // It's still better than using whatever keyboard is the current one, but we
+        // should actually use the default keyboard for this locale.
+        // TODO: Use {@link InputMethodSubtype.InputMethodSubtypeBuilder} directly or indirectly so
+        // that {@link InputMethodSubtype#isAsciiCapable} can return the correct value.
+        final String EXTRA_VALUE_FOR_TEST =
+                "KeyboardLayoutSet=" + SubtypeLocaleUtils.QWERTY
+                + "," + Constants.Subtype.ExtraValue.ASCII_CAPABLE
+                + "," + Constants.Subtype.ExtraValue.ENABLED_WHEN_DEFAULT_IS_NOT_ASCII_CAPABLE
+                + "," + Constants.Subtype.ExtraValue.EMOJI_CAPABLE
+                + null == combiningSpec ? "" : ("," + combiningSpec);
+        final InputMethodSubtype subtype = InputMethodSubtypeCompatUtils.newInputMethodSubtype(
+                R.string.subtype_no_language_qwerty,
+                R.drawable.ic_ime_switcher_dark,
+                locale,
+                Constants.Subtype.KEYBOARD_MODE,
+                EXTRA_VALUE_FOR_TEST,
+                false /* isAuxiliary */,
+                false /* overridesImplicitlyEnabledSubtype */,
+                0 /* id */);
+        SubtypeSwitcher.getInstance().forceSubtype(subtype);
+        mLatinIME.onCurrentInputMethodSubtypeChanged(subtype);
         runMessages();
         mKeyboard = mLatinIME.mKeyboardSwitcher.getKeyboard();
+        mLatinIME.clearPersonalizedDictionariesForTest();
     }
 
     protected void changeKeyboardLocaleAndDictLocale(final String keyboardLocale,
             final String dictLocale) {
         changeLanguage(keyboardLocale);
         if (!keyboardLocale.equals(dictLocale)) {
-            mLatinIME.replaceMainDictionaryForTest(
-                    LocaleUtils.constructLocaleFromString(dictLocale));
+            mLatinIME.replaceDictionariesForTest(LocaleUtils.constructLocaleFromString(dictLocale));
         }
-        waitForDictionaryToBeLoaded();
+        waitForDictionariesToBeLoaded();
     }
 
-    protected void pickSuggestionManually(final int index, final String suggestion) {
-        mLatinIME.pickSuggestionManually(index, new SuggestedWordInfo(suggestion, 1,
+    protected void pickSuggestionManually(final String suggestion) {
+        mLatinIME.pickSuggestionManually(new SuggestedWordInfo(suggestion, 1,
                 SuggestedWordInfo.KIND_CORRECTION, null /* sourceDict */,
                 SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
                 SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */));
diff --git a/tests/src/com/android/inputmethod/latin/LatinImeStressTests.java b/tests/src/com/android/inputmethod/latin/LatinImeStressTests.java
index 5e98cdf..f5e993d 100644
--- a/tests/src/com/android/inputmethod/latin/LatinImeStressTests.java
+++ b/tests/src/com/android/inputmethod/latin/LatinImeStressTests.java
@@ -30,10 +30,10 @@
         final int maxWordCountToTypeInEachIteration = 20;
         final long seed = System.currentTimeMillis();
         final Random random = new Random(seed);
-        final int codePointSetSize = 30;
         final int[] codePointSet = CodePointUtils.LATIN_ALPHABETS_LOWER;
         for (int i = 0; i < switchCount; ++i) {
-            changeLanguageWithoutWait(locales[random.nextInt(locales.length)]);
+            changeLanguageWithoutWait(locales[random.nextInt(locales.length)],
+                    null /* combiningSpec */);
             final int wordCount = random.nextInt(maxWordCountToTypeInEachIteration);
             for (int j = 0; j < wordCount; ++j) {
                 final String word = CodePointUtils.generateWord(random, codePointSet);
@@ -41,7 +41,7 @@
             }
         }
     }
-    public void testSwitchLanguagesAndInputRandamCodePoints() {
+    public void testSwitchLanguagesAndInputRandomCodePoints() {
         final String[] locales = {"en_US", "de", "el", "es", "fi", "it", "nl", "pt", "ru"};
         final int switchCount = 50;
         final int maxWordCountToTypeInEachIteration = 20;
@@ -50,7 +50,8 @@
         final int codePointSetSize = 30;
         final int[] codePointSet = CodePointUtils.generateCodePointSet(codePointSetSize, random);
         for (int i = 0; i < switchCount; ++i) {
-            changeLanguageWithoutWait(locales[random.nextInt(locales.length)]);
+            changeLanguageWithoutWait(locales[random.nextInt(locales.length)],
+                    null /* combiningSpec */);
             final int wordCount = random.nextInt(maxWordCountToTypeInEachIteration);
             for (int j = 0; j < wordCount; ++j) {
                 final String word = CodePointUtils.generateWord(random, codePointSet);
diff --git a/tests/src/com/android/inputmethod/latin/PunctuationTests.java b/tests/src/com/android/inputmethod/latin/PunctuationTests.java
index 84ff6b30..64750fb 100644
--- a/tests/src/com/android/inputmethod/latin/PunctuationTests.java
+++ b/tests/src/com/android/inputmethod/latin/PunctuationTests.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.latin;
 
+import android.provider.Settings.Secure;
 import android.test.suitebuilder.annotation.LargeTest;
 
 import com.android.inputmethod.latin.R;
@@ -40,9 +41,9 @@
             sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
             runMessages();
             assertTrue("type word then type space should display punctuation strip",
-                    mLatinIME.isShowingPunctuationList());
-            pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
-            pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+                    mLatinIME.getSuggestedWordsForTest().isPunctuationSuggestions());
+            pickSuggestionManually(PUNCTUATION_FROM_STRIP);
+            pickSuggestionManually(PUNCTUATION_FROM_STRIP);
             assertEquals("type word then type space then punctuation from strip twice",
                     EXPECTED_RESULT, mEditText.getText().toString());
         } finally {
@@ -65,9 +66,9 @@
         final String PUNCTUATION_FROM_STRIP = "!";
         final String EXPECTED_RESULT = "this!! is";
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
-        pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
-        pickSuggestionManually(0, PUNCTUATION_FROM_STRIP);
+        pickSuggestionManually(WORD1_TO_TYPE);
+        pickSuggestionManually(PUNCTUATION_FROM_STRIP);
+        pickSuggestionManually(PUNCTUATION_FROM_STRIP);
         type(WORD2_TO_TYPE);
         assertEquals("pick word then pick punctuation twice then type", EXPECTED_RESULT,
                 mEditText.getText().toString());
@@ -78,8 +79,8 @@
         final String WORD2_TO_PICK = "!is";
         final String EXPECTED_RESULT = "this!is";
         type(WORD1_TO_TYPE);
-        pickSuggestionManually(0, WORD1_TO_TYPE);
-        pickSuggestionManually(1, WORD2_TO_PICK);
+        pickSuggestionManually(WORD1_TO_TYPE);
+        pickSuggestionManually(WORD2_TO_PICK);
         assertEquals("manual pick then manual pick a word with punct at start", EXPECTED_RESULT,
                 mEditText.getText().toString());
     }
@@ -89,7 +90,7 @@
         final String PUNCTUATION = ":";
         final String EXPECTED_RESULT = "this:";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         type(PUNCTUATION);
         assertEquals("manually pick word then colon",
                 EXPECTED_RESULT, mEditText.getText().toString());
@@ -100,7 +101,7 @@
         final String PUNCTUATION = "(";
         final String EXPECTED_RESULT = "this (";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         type(PUNCTUATION);
         assertEquals("manually pick word then open paren",
                 EXPECTED_RESULT, mEditText.getText().toString());
@@ -111,7 +112,7 @@
         final String PUNCTUATION = ")";
         final String EXPECTED_RESULT = "this)";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         type(PUNCTUATION);
         assertEquals("manually pick word then close paren",
                 EXPECTED_RESULT, mEditText.getText().toString());
@@ -122,7 +123,7 @@
         final String SPECIAL_KEY = ":-)";
         final String EXPECTED_RESULT = "this :-)";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         mLatinIME.onTextInput(SPECIAL_KEY);
         assertEquals("manually pick word then press the smiley key",
                 EXPECTED_RESULT, mEditText.getText().toString());
@@ -133,7 +134,7 @@
         final String SPECIAL_KEY = ".com";
         final String EXPECTED_RESULT = "this.com";
         type(WORD_TO_TYPE);
-        pickSuggestionManually(0, WORD_TO_TYPE);
+        pickSuggestionManually(WORD_TO_TYPE);
         mLatinIME.onTextInput(SPECIAL_KEY);
         assertEquals("manually pick word then press the .com key",
                 EXPECTED_RESULT, mEditText.getText().toString());
@@ -153,7 +154,9 @@
         final String WORD_TO_TYPE = "you'f ";
         final String EXPECTED_RESULT = "you'd ";
         type(WORD_TO_TYPE);
-        assertEquals("auto-correction with single quote inside",
+        assertEquals("auto-correction with single quote inside. ID = "
+                + Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID)
+                + " ; Suggestions = " + mLatinIME.getSuggestedWordsForTest(),
                 EXPECTED_RESULT, mEditText.getText().toString());
     }
 
@@ -161,7 +164,37 @@
         final String WORD_TO_TYPE = "'tgis' ";
         final String EXPECTED_RESULT = "'this' ";
         type(WORD_TO_TYPE);
-        assertEquals("auto-correction with single quotes around",
+        assertEquals("auto-correction with single quotes around. ID = "
+                + Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID)
+                + " ; Suggestions = " + mLatinIME.getSuggestedWordsForTest(),
+                EXPECTED_RESULT, mEditText.getText().toString());
+    }
+
+    public void testAutoSpaceWithDoubleQuotes() {
+        final String STRING_TO_TYPE = "He said\"hello\"to me. I replied,\"hi\"."
+                + "Then, 5\"passed. He said\"bye\"and left.";
+        final String EXPECTED_RESULT = "He said \"hello\" to me. I replied, \"hi\". "
+                + "Then, 5\" passed. He said \"bye\" and left. \"";
+        // Split by double quote, so that we can type the double quotes individually.
+        for (final String partToType : STRING_TO_TYPE.split("\"")) {
+            // Split at word boundaries. This regexp means "anywhere that is preceded
+            // by a word character but not followed by a word character, OR that is not
+            // preceded by a word character but followed by a word character".
+            // We need to input word by word because auto-spaces are only active when
+            // manually picking or gesturing (which we can't simulate yet), but only words
+            // can be picked.
+            final String[] wordsToType = partToType.split("(?<=\\w)(?!\\w)|(?<!\\w)(?=\\w)");
+            for (final String wordToType : wordsToType) {
+                type(wordToType);
+                if (wordToType.matches("^\\w+$")) {
+                    // Only pick selection if that was a word, because if that was not a word,
+                    // then we don't have a composition.
+                    pickSuggestionManually(wordToType);
+                }
+            }
+            type("\"");
+        }
+        assertEquals("auto-space with double quotes",
                 EXPECTED_RESULT, mEditText.getText().toString());
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
index c0dd993..1999224 100644
--- a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
+++ b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
@@ -16,15 +16,13 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.latin.utils.TextRange;
-
+import android.content.res.Resources;
 import android.inputmethodservice.InputMethodService;
 import android.os.Parcel;
 import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.text.SpannableString;
-import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.style.SuggestionSpan;
 import android.view.inputmethod.ExtractedText;
@@ -32,6 +30,14 @@
 import android.view.inputmethod.InputConnection;
 import android.view.inputmethod.InputConnectionWrapper;
 
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+import com.android.inputmethod.latin.utils.PrevWordsInfoUtils;
+import com.android.inputmethod.latin.utils.RunInLocale;
+import com.android.inputmethod.latin.utils.ScriptUtils;
+import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.TextRange;
+
 import java.util.Locale;
 
 @SmallTest
@@ -39,11 +45,19 @@
 
     // The following is meant to be a reasonable default for
     // the "word_separators" resource.
-    private static final String sSeparators = ".,:;!?-";
+    private SpacingAndPunctuations mSpacingAndPunctuations;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() {
+            @Override
+            protected SpacingAndPunctuations job(final Resources res) {
+                return new SpacingAndPunctuations(res);
+            }
+        };
+        final Resources res = getContext().getResources();
+        mSpacingAndPunctuations = job.runInLocale(res, Locale.ENGLISH);
     }
 
     private class MockConnection extends InputConnectionWrapper {
@@ -78,6 +92,10 @@
             mExtractedText = extractedText;
         }
 
+        public int cursorPos() {
+            return mTextBefore.length();
+        }
+
         /* (non-Javadoc)
          * @see android.view.inputmethod.InputConnectionWrapper#getTextBeforeCursor(int, int)
          */
@@ -120,13 +138,16 @@
     }
 
     private class MockInputMethodService extends InputMethodService {
-        InputConnection mInputConnection;
-        public void setInputConnection(final InputConnection inputConnection) {
-            mInputConnection = inputConnection;
+        private MockConnection mMockConnection;
+        public void setInputConnection(final MockConnection mockConnection) {
+            mMockConnection = mockConnection;
+        }
+        public int cursorPos() {
+            return mMockConnection.cursorPos();
         }
         @Override
         public InputConnection getCurrentInputConnection() {
-            return mInputConnection;
+            return mMockConnection;
         }
     }
 
@@ -137,9 +158,26 @@
      */
     public void testGetPreviousWord() {
         // If one of the following cases breaks, the bigram suggestions won't work.
-        assertEquals(RichInputConnection.getNthPreviousWord("abc def", sSeparators, 2), "abc");
-        assertNull(RichInputConnection.getNthPreviousWord("abc", sSeparators, 2));
-        assertNull(RichInputConnection.getNthPreviousWord("abc. def", sSeparators, 2));
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mWord, "abc");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc", mSpacingAndPunctuations, 2), PrevWordsInfo.BEGINNING_OF_SENTENCE);
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc. def", mSpacingAndPunctuations, 2), PrevWordsInfo.BEGINNING_OF_SENTENCE);
+
+        assertFalse(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mIsBeginningOfSentence);
+        assertTrue(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mIsBeginningOfSentence);
+
+        // For n-gram
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def", mSpacingAndPunctuations, 1).mPrevWordsInfo[0].mWord, "def");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def", mSpacingAndPunctuations, 1).mPrevWordsInfo[1].mWord, "abc");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def", mSpacingAndPunctuations, 2).mPrevWordsInfo[1],
+                WordInfo.BEGINNING_OF_SENTENCE);
 
         // The following tests reflect the current behavior of the function
         // RichInputConnection#getNthPreviousWord.
@@ -148,20 +186,46 @@
         // this function if needed - especially since it does not seem very
         // logical. These tests are just there to catch any unintentional
         // changes in the behavior of the RichInputConnection#getPreviousWord method.
-        assertEquals(RichInputConnection.getNthPreviousWord("abc def ", sSeparators, 2), "abc");
-        assertEquals(RichInputConnection.getNthPreviousWord("abc def.", sSeparators, 2), "abc");
-        assertEquals(RichInputConnection.getNthPreviousWord("abc def .", sSeparators, 2), "def");
-        assertNull(RichInputConnection.getNthPreviousWord("abc ", sSeparators, 2));
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def ", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mWord, "abc");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def.", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mWord, "abc");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def .", mSpacingAndPunctuations, 2).mPrevWordsInfo[0].mWord, "def");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc ", mSpacingAndPunctuations, 2), PrevWordsInfo.BEGINNING_OF_SENTENCE);
 
-        assertEquals(RichInputConnection.getNthPreviousWord("abc def", sSeparators, 1), "def");
-        assertEquals(RichInputConnection.getNthPreviousWord("abc def ", sSeparators, 1), "def");
-        assertNull(RichInputConnection.getNthPreviousWord("abc def.", sSeparators, 1));
-        assertNull(RichInputConnection.getNthPreviousWord("abc def .", sSeparators, 1));
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def", mSpacingAndPunctuations, 1).mPrevWordsInfo[0].mWord, "def");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def ", mSpacingAndPunctuations, 1).mPrevWordsInfo[0].mWord, "def");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc 'def", mSpacingAndPunctuations, 1).mPrevWordsInfo[0].mWord, "'def");
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def.", mSpacingAndPunctuations, 1), PrevWordsInfo.BEGINNING_OF_SENTENCE);
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc def .", mSpacingAndPunctuations, 1), PrevWordsInfo.BEGINNING_OF_SENTENCE);
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc, def", mSpacingAndPunctuations, 2), PrevWordsInfo.EMPTY_PREV_WORDS_INFO);
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc? def", mSpacingAndPunctuations, 2), PrevWordsInfo.EMPTY_PREV_WORDS_INFO);
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc! def", mSpacingAndPunctuations, 2), PrevWordsInfo.EMPTY_PREV_WORDS_INFO);
+        assertEquals(PrevWordsInfoUtils.getPrevWordsInfoFromNthPreviousWord(
+                "abc 'def", mSpacingAndPunctuations, 2), PrevWordsInfo.EMPTY_PREV_WORDS_INFO);
     }
 
     /**
      * Test logic in getting the word range at the cursor.
      */
+    private static final int[] SPACE = { Constants.CODE_SPACE };
+    static final int[] TAB = { Constants.CODE_TAB };
+    private static final int[] SPACE_TAB = StringUtils.toSortedCodePointArray(" \t");
+    // A character that needs surrogate pair to represent its code point (U+2008A).
+    private static final String SUPPLEMENTARY_CHAR = "\uD840\uDC8A";
+    private static final String HIRAGANA_WORD = "\u3042\u3044\u3046\u3048\u304A"; // あいうえお
+    private static final String GREEK_WORD = "\u03BA\u03B1\u03B9"; // και
+
     public void testGetWordRangeAtCursor() {
         ExtractedText et = new ExtractedText();
         final MockInputMethodService mockInputMethodService = new MockInputMethodService();
@@ -173,50 +237,42 @@
 
         ic.beginBatchEdit();
         // basic case
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         assertTrue(TextUtils.equals("word", r.mWord));
 
-        // more than one word
-        r = ic.getWordRangeAtCursor(" ", 1);
-        assertTrue(TextUtils.equals("word word", r.mWord));
-        ic.endBatchEdit();
-
         // tab character instead of space
         mockInputMethodService.setInputConnection(new MockConnection("one\tword\two", "rd", et));
         ic.beginBatchEdit();
-        r = ic.getWordRangeAtCursor("\t", 1);
-        ic.endBatchEdit();
-        assertTrue(TextUtils.equals("word\tword", r.mWord));
-
-        // only one word doesn't go too far
-        mockInputMethodService.setInputConnection(new MockConnection("one\tword\two", "rd", et));
-        ic.beginBatchEdit();
-        r = ic.getWordRangeAtCursor("\t", 1);
-        ic.endBatchEdit();
-        assertTrue(TextUtils.equals("word\tword", r.mWord));
-
-        // tab or space
-        mockInputMethodService.setInputConnection(new MockConnection("one word\two", "rd", et));
-        ic.beginBatchEdit();
-        r = ic.getWordRangeAtCursor(" \t", 1);
-        ic.endBatchEdit();
-        assertTrue(TextUtils.equals("word\tword", r.mWord));
-
-        // tab or space multiword
-        mockInputMethodService.setInputConnection(new MockConnection("one word\two", "rd", et));
-        ic.beginBatchEdit();
-        r = ic.getWordRangeAtCursor(" \t", 2);
-        ic.endBatchEdit();
-        assertTrue(TextUtils.equals("one word\tword", r.mWord));
-
-        // splitting on supplementary character
-        final String supplementaryChar = "\uD840\uDC8A";
-        mockInputMethodService.setInputConnection(
-                new MockConnection("one word" + supplementaryChar + "wo", "rd", et));
-        ic.beginBatchEdit();
-        r = ic.getWordRangeAtCursor(supplementaryChar, 0);
+        r = ic.getWordRangeAtCursor(TAB, ScriptUtils.SCRIPT_LATIN);
         ic.endBatchEdit();
         assertTrue(TextUtils.equals("word", r.mWord));
+
+        // splitting on supplementary character
+        mockInputMethodService.setInputConnection(
+                new MockConnection("one word" + SUPPLEMENTARY_CHAR + "wo", "rd", et));
+        ic.beginBatchEdit();
+        r = ic.getWordRangeAtCursor(StringUtils.toSortedCodePointArray(SUPPLEMENTARY_CHAR),
+                ScriptUtils.SCRIPT_LATIN);
+        ic.endBatchEdit();
+        assertTrue(TextUtils.equals("word", r.mWord));
+
+        // split on chars outside the specified script
+        mockInputMethodService.setInputConnection(
+                new MockConnection(HIRAGANA_WORD + "wo", "rd" + GREEK_WORD, et));
+        ic.beginBatchEdit();
+        r = ic.getWordRangeAtCursor(StringUtils.toSortedCodePointArray(SUPPLEMENTARY_CHAR),
+                ScriptUtils.SCRIPT_LATIN);
+        ic.endBatchEdit();
+        assertTrue(TextUtils.equals("word", r.mWord));
+
+        // likewise for greek
+        mockInputMethodService.setInputConnection(
+                new MockConnection("text" + GREEK_WORD, "text", et));
+        ic.beginBatchEdit();
+        r = ic.getWordRangeAtCursor(StringUtils.toSortedCodePointArray(SUPPLEMENTARY_CHAR),
+                ScriptUtils.SCRIPT_GREEK);
+        ic.endBatchEdit();
+        assertTrue(TextUtils.equals(GREEK_WORD, r.mWord));
     }
 
     /**
@@ -244,7 +300,7 @@
         TextRange r;
         SuggestionSpan[] suggestions;
 
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         suggestions = r.getSuggestionSpansAtWord();
         assertEquals(suggestions.length, 1);
         MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
@@ -256,7 +312,7 @@
         text.setSpan(new SuggestionSpan(Locale.ENGLISH, SUGGESTIONS2, 0 /* flags */),
                 10 /* start */, 16 /* end */, 0 /* flags */);
         mockInputMethodService.setInputConnection(new MockConnection(text, cursorPos));
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         suggestions = r.getSuggestionSpansAtWord();
         assertEquals(suggestions.length, 2);
         MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
@@ -269,7 +325,7 @@
         text.setSpan(new SuggestionSpan(Locale.ENGLISH, SUGGESTIONS2, 0 /* flags */),
                 5 /* start */, 16 /* end */, 0 /* flags */);
         mockInputMethodService.setInputConnection(new MockConnection(text, cursorPos));
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         suggestions = r.getSuggestionSpansAtWord();
         assertEquals(suggestions.length, 1);
         MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
@@ -281,7 +337,7 @@
         text.setSpan(new SuggestionSpan(Locale.ENGLISH, SUGGESTIONS2, 0 /* flags */),
                 10 /* start */, 20 /* end */, 0 /* flags */);
         mockInputMethodService.setInputConnection(new MockConnection(text, cursorPos));
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         suggestions = r.getSuggestionSpansAtWord();
         assertEquals(suggestions.length, 1);
         MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
@@ -293,7 +349,7 @@
         text.setSpan(new SuggestionSpan(Locale.ENGLISH, SUGGESTIONS2, 0 /* flags */),
                 5 /* start */, 20 /* end */, 0 /* flags */);
         mockInputMethodService.setInputConnection(new MockConnection(text, cursorPos));
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         suggestions = r.getSuggestionSpansAtWord();
         assertEquals(suggestions.length, 1);
         MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
@@ -305,8 +361,86 @@
         text.setSpan(new SuggestionSpan(Locale.ENGLISH, SUGGESTIONS2, 0 /* flags */),
                 5 /* start */, 20 /* end */, 0 /* flags */);
         mockInputMethodService.setInputConnection(new MockConnection(text, cursorPos));
-        r = ic.getWordRangeAtCursor(" ", 0);
+        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
         suggestions = r.getSuggestionSpansAtWord();
         assertEquals(suggestions.length, 0);
     }
+
+    public void testCursorTouchingWord() {
+        final MockInputMethodService ims = new MockInputMethodService();
+        final RichInputConnection ic = new RichInputConnection(ims);
+        final SpacingAndPunctuations sap = mSpacingAndPunctuations;
+
+        ims.setInputConnection(new MockConnection("users", 5));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("users'", 5));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("users'", 6));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("'users'", 6));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("'users'", 7));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("users '", 6));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("users '", 7));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("re-", 3));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("re--", 4));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("-", 1));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection("--", 2));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" -", 2));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" --", 3));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" users '", 1));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" users '", 3));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" users '", 7));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" users are", 7));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertTrue(ic.isCursorTouchingWord(sap));
+
+        ims.setInputConnection(new MockConnection(" users 'are", 7));
+        ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+        assertFalse(ic.isCursorTouchingWord(sap));
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/ShiftModeTests.java b/tests/src/com/android/inputmethod/latin/ShiftModeTests.java
new file mode 100644
index 0000000..db3c9ba
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/ShiftModeTests.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+import android.os.Build;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.text.TextUtils;
+import android.view.inputmethod.EditorInfo;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.WordComposer;
+
+@LargeTest
+public class ShiftModeTests extends InputTestsBase {
+
+    @Override
+    protected EditorInfo enrichEditorInfo(final EditorInfo ei) {
+        ei.inputType |= TextUtils.CAP_MODE_SENTENCES;
+        ei.initialCapsMode = TextUtils.CAP_MODE_SENTENCES;
+        return ei;
+    }
+
+    private boolean isCapsModeAutoShifted() {
+        return mLatinIME.mKeyboardSwitcher.getKeyboardShiftMode()
+                == WordComposer.CAPS_MODE_AUTO_SHIFTED;
+    }
+
+    public void testTypicalSentence() {
+        assertTrue("Initial auto caps state", isCapsModeAutoShifted());
+        type("Test");
+        assertFalse("Caps after letter", isCapsModeAutoShifted());
+        type(" ");
+        assertFalse("Caps after space", isCapsModeAutoShifted());
+        type("some,");
+        assertFalse("Caps after comma", isCapsModeAutoShifted());
+        type(" ");
+        assertFalse("Caps after comma space", isCapsModeAutoShifted());
+        type("words.");
+        assertFalse("Caps directly after period", isCapsModeAutoShifted());
+        type(" ");
+        assertTrue("Caps after period space", isCapsModeAutoShifted());
+    }
+
+    public void testBackspace() {
+        assertTrue("Initial auto caps state", isCapsModeAutoShifted());
+        type("A");
+        assertFalse("Caps state after one letter", isCapsModeAutoShifted());
+        type(Constants.CODE_DELETE);
+        assertTrue("Auto caps state at start after delete", isCapsModeAutoShifted());
+    }
+
+    public void testRepeatingBackspace() {
+        final String SENTENCE_TO_TYPE = "Test sentence. Another.";
+        final int BACKSPACE_COUNT =
+                SENTENCE_TO_TYPE.length() - SENTENCE_TO_TYPE.lastIndexOf(' ') - 1;
+
+        type(SENTENCE_TO_TYPE);
+        assertFalse("Caps after typing \"" + SENTENCE_TO_TYPE + "\"", isCapsModeAutoShifted());
+        type(Constants.CODE_DELETE);
+        for (int i = 1; i < BACKSPACE_COUNT; ++i) {
+            repeatKey(Constants.CODE_DELETE);
+        }
+        assertFalse("Caps immediately after repeating Backspace a lot", isCapsModeAutoShifted());
+        sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
+        runMessages();
+        assertTrue("Caps after a while after repeating Backspace a lot", isCapsModeAutoShifted());
+    }
+
+    public void testAutoCapsAfterDigitsPeriod() {
+        changeLanguage("en");
+        type("On 22.11.");
+        assertFalse("(English) Auto caps after digits-period", isCapsModeAutoShifted());
+        type(" ");
+        assertTrue("(English) Auto caps after digits-period-whitespace", isCapsModeAutoShifted());
+        mEditText.setText("");
+        changeLanguage("fr");
+        type("Le 22.");
+        assertFalse("(French) Auto caps after digits-period", isCapsModeAutoShifted());
+        type(" ");
+        assertTrue("(French) Auto caps after digits-period-whitespace", isCapsModeAutoShifted());
+        mEditText.setText("");
+        changeLanguage("de");
+        type("Am 22.");
+        assertFalse("(German) Auto caps after digits-period", isCapsModeAutoShifted());
+        type(" ");
+        // For German, no auto-caps in this case
+        assertFalse("(German) Auto caps after digits-period-whitespace", isCapsModeAutoShifted());
+    }
+
+    public void testAutoCapsAfterInvertedMarks() {
+        changeLanguage("es");
+        assertTrue("(Spanish) Auto caps at start", isCapsModeAutoShifted());
+        type("Hey. ¿");
+        assertTrue("(Spanish) Auto caps after inverted what", isCapsModeAutoShifted());
+        mEditText.setText("");
+        type("¡");
+        assertTrue("(Spanish) Auto caps after inverted bang", isCapsModeAutoShifted());
+    }
+
+    public void testOtherSentenceSeparators() {
+        changeLanguage("hy_AM");
+        assertTrue("(Armenian) Auto caps at start", isCapsModeAutoShifted());
+        type("Hey. ");
+        assertFalse("(Armenian) No auto-caps after latin period", isCapsModeAutoShifted());
+        type("Hey\u0589");
+        assertFalse("(Armenian) No auto-caps directly after armenian period",
+                isCapsModeAutoShifted());
+        type(" ");
+        assertTrue("(Armenian) Auto-caps after armenian period-whitespace",
+                isCapsModeAutoShifted());
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
index 3753520..66b4a9c 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
@@ -16,12 +16,10 @@
 
 package com.android.inputmethod.latin;
 
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
-
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
 
 import java.util.ArrayList;
 import java.util.Locale;
@@ -33,7 +31,7 @@
         final String TYPED_WORD = "typed";
         final int TYPED_WORD_FREQ = 5;
         final int NUMBER_OF_ADDED_SUGGESTIONS = 5;
-        final ArrayList<SuggestedWordInfo> list = CollectionUtils.newArrayList();
+        final ArrayList<SuggestedWordInfo> list = new ArrayList<>();
         list.add(new SuggestedWordInfo(TYPED_WORD, TYPED_WORD_FREQ,
                 SuggestedWordInfo.KIND_TYPED, null /* sourceDict */,
                 SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
@@ -46,24 +44,23 @@
         }
 
         final SuggestedWords words = new SuggestedWords(
-                list,
+                list, null /* rawSuggestions */,
                 false /* typedWordValid */,
                 false /* willAutoCorrect */,
-                false /* isPunctuationSuggestions */,
                 false /* isObsoleteSuggestions */,
                 false /* isPrediction*/);
         assertEquals(NUMBER_OF_ADDED_SUGGESTIONS + 1, words.size());
         assertEquals("typed", words.getWord(0));
-        assertEquals(SuggestedWordInfo.KIND_TYPED, words.getInfo(0).mKind);
+        assertTrue(words.getInfo(0).isKindOf(SuggestedWordInfo.KIND_TYPED));
         assertEquals("0", words.getWord(1));
-        assertEquals(SuggestedWordInfo.KIND_CORRECTION, words.getInfo(1).mKind);
+        assertTrue(words.getInfo(1).isKindOf(SuggestedWordInfo.KIND_CORRECTION));
         assertEquals("4", words.getWord(5));
-        assertEquals(SuggestedWordInfo.KIND_CORRECTION, words.getInfo(5).mKind);
+        assertTrue(words.getInfo(5).isKindOf(SuggestedWordInfo.KIND_CORRECTION));
 
         final SuggestedWords wordsWithoutTyped = words.getSuggestedWordsExcludingTypedWord();
         assertEquals(words.size() - 1, wordsWithoutTyped.size());
         assertEquals("0", wordsWithoutTyped.getWord(0));
-        assertEquals(SuggestedWordInfo.KIND_CORRECTION, wordsWithoutTyped.getInfo(0).mKind);
+        assertTrue(wordsWithoutTyped.getInfo(0).isKindOf(SuggestedWordInfo.KIND_CORRECTION));
     }
 
     // Helper for testGetTransformedWordInfo
diff --git a/tests/src/com/android/inputmethod/latin/WordComposerTests.java b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
index 1434c6b..c44544f 100644
--- a/tests/src/com/android/inputmethod/latin/WordComposerTests.java
+++ b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
@@ -19,6 +19,9 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
+import com.android.inputmethod.latin.utils.CoordinateUtils;
+import com.android.inputmethod.latin.utils.StringUtils;
+
 /**
  * Unit tests for WordComposer.
  */
@@ -26,10 +29,19 @@
 public class WordComposerTests extends AndroidTestCase {
     public void testMoveCursor() {
         final WordComposer wc = new WordComposer();
+        // BMP is the Basic Multilingual Plane, as defined by Unicode. This includes
+        // most characters for most scripts, including all Roman alphabet languages,
+        // CJK, Arabic, Hebrew. Notable exceptions include some emoji and some
+        // very rare Chinese ideograms. BMP characters can be encoded on 2 bytes
+        // in UTF-16, whereas those outside the BMP need 4 bytes.
+        // http://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane
         final String STR_WITHIN_BMP = "abcdef";
-        wc.setComposingWord(STR_WITHIN_BMP, null);
-        assertEquals(wc.size(),
-                STR_WITHIN_BMP.codePointCount(0, STR_WITHIN_BMP.length()));
+        final int[] CODEPOINTS_WITHIN_BMP = StringUtils.toCodePointArray(STR_WITHIN_BMP);
+        final int[] COORDINATES_WITHIN_BMP =
+                CoordinateUtils.newCoordinateArray(CODEPOINTS_WITHIN_BMP.length,
+                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+        wc.setComposingWord(CODEPOINTS_WITHIN_BMP, COORDINATES_WITHIN_BMP);
+        assertEquals(wc.size(), STR_WITHIN_BMP.codePointCount(0, STR_WITHIN_BMP.length()));
         assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
         wc.setCursorPositionWithinWord(2);
         assertTrue(wc.isCursorFrontOrMiddleOfComposingWord());
@@ -46,12 +58,20 @@
         // Move the cursor past the end of the word
         assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(1));
         assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(15));
+        // Do what LatinIME does when the cursor is moved outside of the word,
+        // and check the behavior is correct.
+        wc.reset();
 
         // \uD861\uDED7 is 𨛗, a character outside the BMP
         final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh";
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
-        assertEquals(wc.size(), STR_WITH_SUPPLEMENTARY_CHAR.codePointCount(0,
-                        STR_WITH_SUPPLEMENTARY_CHAR.length()));
+        final int[] CODEPOINTS_WITH_SUPPLEMENTARY_CHAR =
+                StringUtils.toCodePointArray(STR_WITH_SUPPLEMENTARY_CHAR);
+        final int[] COORDINATES_WITH_SUPPLEMENTARY_CHAR =
+                CoordinateUtils.newCoordinateArray(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR.length,
+                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
+        assertEquals(wc.size(), CODEPOINTS_WITH_SUPPLEMENTARY_CHAR.length);
         assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
         wc.setCursorPositionWithinWord(3);
         assertTrue(wc.isCursorFrontOrMiddleOfComposingWord());
@@ -60,33 +80,42 @@
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
         assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         wc.setCursorPositionWithinWord(3);
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         wc.setCursorPositionWithinWord(3);
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         wc.setCursorPositionWithinWord(3);
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-3));
         assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-1));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         wc.setCursorPositionWithinWord(3);
         assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-9));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-10));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-11));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(0));
 
-        wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR,
+                COORDINATES_WITH_SUPPLEMENTARY_CHAR);
         wc.setCursorPositionWithinWord(2);
         assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(0));
     }
diff --git a/tests/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java b/tests/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java
new file mode 100644
index 0000000..bc856f1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/AbstractDictDecoder.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.TreeMap;
+
+/**
+ * A base class of the binary dictionary decoder.
+ */
+public abstract class AbstractDictDecoder implements DictDecoder {
+    private static final int SUCCESS = 0;
+    private static final int ERROR_CANNOT_READ = 1;
+    private static final int ERROR_WRONG_FORMAT = 2;
+
+    @Override @UsedForTesting
+    public int getTerminalPosition(final String word)
+            throws IOException, UnsupportedFormatException {
+        if (!isDictBufferOpen()) {
+            openDictBuffer();
+        }
+        return BinaryDictIOUtils.getTerminalPosition(this, word);
+    }
+
+    @Override @UsedForTesting
+    public void readUnigramsAndBigramsBinary(final TreeMap<Integer, String> words,
+            final TreeMap<Integer, Integer> frequencies,
+            final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams)
+            throws IOException, UnsupportedFormatException {
+        if (!isDictBufferOpen()) {
+            openDictBuffer();
+        }
+        BinaryDictIOUtils.readUnigramsAndBigramsBinary(this, words, frequencies, bigrams);
+    }
+
+    /**
+     * Check whether the header contains the expected information. This is a no-error method,
+     * that will return an error code and never throw a checked exception.
+     * @return an error code, either ERROR_* or SUCCESS.
+     */
+    private int checkHeader() {
+        try {
+            readHeader();
+        } catch (IOException e) {
+            return ERROR_CANNOT_READ;
+        } catch (UnsupportedFormatException e) {
+            return ERROR_WRONG_FORMAT;
+        }
+        return SUCCESS;
+    }
+
+    @Override
+    public boolean hasValidRawBinaryDictionary() {
+        return checkHeader() == SUCCESS;
+    }
+
+    // Placeholder implementations below. These are actually unused.
+    @Override
+    public void openDictBuffer() throws FileNotFoundException, IOException,
+            UnsupportedFormatException {
+    }
+
+    @Override
+    public boolean isDictBufferOpen() {
+        return false;
+    }
+
+    @Override
+    public PtNodeInfo readPtNode(final int ptNodePos) {
+        return null;
+    }
+
+    @Override
+    public void setPosition(int newPos) {
+    }
+
+    @Override
+    public int getPosition() {
+        return 0;
+    }
+
+    @Override
+    public int readPtNodeCount() {
+        return 0;
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java
index 32c07e1..406046a 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java
@@ -17,30 +17,28 @@
 package com.android.inputmethod.latin.makedict;
 
 import android.test.AndroidTestCase;
-import android.test.MoreAsserts;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.util.Log;
+import android.util.Pair;
 import android.util.SparseArray;
 
+import com.android.inputmethod.latin.BinaryDictionary;
 import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
 import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
 import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
 import com.android.inputmethod.latin.utils.ByteArrayDictBuffer;
-import com.android.inputmethod.latin.utils.CollectionUtils;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map.Entry;
 import java.util.Random;
 import java.util.Set;
@@ -52,39 +50,21 @@
 @LargeTest
 public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
     private static final String TAG = BinaryDictDecoderEncoderTests.class.getSimpleName();
-    private static final int DEFAULT_MAX_UNIGRAMS = 100;
+    private static final int DEFAULT_MAX_UNIGRAMS = 300;
     private static final int DEFAULT_CODE_POINT_SET_SIZE = 50;
+    private static final int LARGE_CODE_POINT_SET_SIZE = 300;
     private static final int UNIGRAM_FREQ = 10;
     private static final int BIGRAM_FREQ = 50;
     private static final int TOLERANCE_OF_BIGRAM_FREQ = 5;
     private static final int NUM_OF_NODES_HAVING_SHORTCUTS = 50;
     private static final int NUM_OF_SHORTCUTS = 5;
 
-    private static final int USE_BYTE_ARRAY = 1;
-    private static final int USE_BYTE_BUFFER = 2;
-
-    private static final ArrayList<String> sWords = CollectionUtils.newArrayList();
-    private static final SparseArray<List<Integer>> sEmptyBigrams =
-            CollectionUtils.newSparseArray();
-    private static final SparseArray<List<Integer>> sStarBigrams = CollectionUtils.newSparseArray();
-    private static final SparseArray<List<Integer>> sChainBigrams =
-            CollectionUtils.newSparseArray();
-    private static final HashMap<String, List<String>> sShortcuts = CollectionUtils.newHashMap();
-
-    private static final FormatSpec.FormatOptions VERSION2 = new FormatSpec.FormatOptions(2);
-    private static final FormatSpec.FormatOptions VERSION3_WITHOUT_DYNAMIC_UPDATE =
-            new FormatSpec.FormatOptions(3, false /* supportsDynamicUpdate */);
-    private static final FormatSpec.FormatOptions VERSION3_WITH_DYNAMIC_UPDATE =
-            new FormatSpec.FormatOptions(3, true /* supportsDynamicUpdate */);
-    private static final FormatSpec.FormatOptions VERSION4_WITHOUT_DYNAMIC_UPDATE =
-            new FormatSpec.FormatOptions(4, false /* supportsDynamicUpdate */);
-    private static final FormatSpec.FormatOptions VERSION4_WITH_DYNAMIC_UPDATE =
-            new FormatSpec.FormatOptions(4, true /* supportsDynamicUpdate */);
-    private static final FormatSpec.FormatOptions VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP =
-            new FormatSpec.FormatOptions(4, true /* supportsDynamicUpdate */,
-                    true /* hasTimestamp */);
-
-    private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
+    private static final ArrayList<String> sWords = new ArrayList<>();
+    private static final ArrayList<String> sWordsWithVariousCodePoints = new ArrayList<>();
+    private static final SparseArray<List<Integer>> sEmptyBigrams = new SparseArray<>();
+    private static final SparseArray<List<Integer>> sStarBigrams = new SparseArray<>();
+    private static final SparseArray<List<Integer>> sChainBigrams = new SparseArray<>();
+    private static final HashMap<String, List<String>> sShortcuts = new HashMap<>();
 
     public BinaryDictDecoderEncoderTests() {
         this(System.currentTimeMillis(), DEFAULT_MAX_UNIGRAMS);
@@ -92,12 +72,12 @@
 
     public BinaryDictDecoderEncoderTests(final long seed, final int maxUnigrams) {
         super();
+        BinaryDictionaryUtils.setCurrentTimeForTest(0);
         Log.e(TAG, "Testing dictionary: seed is " + seed);
         final Random random = new Random(seed);
         sWords.clear();
-        final int[] codePointSet = CodePointUtils.generateCodePointSet(DEFAULT_CODE_POINT_SET_SIZE,
-                random);
-        generateWords(maxUnigrams, random, codePointSet);
+        sWordsWithVariousCodePoints.clear();
+        generateWords(maxUnigrams, random);
 
         for (int i = 0; i < sWords.size(); ++i) {
             sChainBigrams.put(i, new ArrayList<Integer>());
@@ -124,23 +104,35 @@
         }
     }
 
-    private DictEncoder getDictEncoder(final File file, final FormatOptions formatOptions) {
-        if (formatOptions.mVersion == FormatSpec.VERSION4) {
-            return new Ver4DictEncoder(getContext().getCacheDir());
-        } else if (formatOptions.mVersion == 3 || formatOptions.mVersion == 2) {
-            return new Ver3DictEncoder(file);
-        } else {
-            throw new RuntimeException("The format option has a wrong version : "
-                    + formatOptions.mVersion);
-        }
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        BinaryDictionaryUtils.setCurrentTimeForTest(0);
     }
 
-    private void generateWords(final int number, final Random random, final int[] codePointSet) {
-        final Set<String> wordSet = CollectionUtils.newHashSet();
+    @Override
+    protected void tearDown() throws Exception {
+        // Quit test mode.
+        BinaryDictionaryUtils.setCurrentTimeForTest(-1);
+        super.tearDown();
+    }
+
+    private void generateWords(final int number, final Random random) {
+        final int[] codePointSet = CodePointUtils.generateCodePointSet(DEFAULT_CODE_POINT_SET_SIZE,
+                random);
+        final Set<String> wordSet = new HashSet<>();
         while (wordSet.size() < number) {
             wordSet.add(CodePointUtils.generateWord(random, codePointSet));
         }
         sWords.addAll(wordSet);
+
+        final int[] largeCodePointSet = CodePointUtils.generateCodePointSet(
+                LARGE_CODE_POINT_SET_SIZE, random);
+        wordSet.clear();
+        while (wordSet.size() < number) {
+            wordSet.add(CodePointUtils.generateWord(random, largeCodePointSet));
+        }
+        sWordsWithVariousCodePoints.addAll(wordSet);
     }
 
     /**
@@ -150,14 +142,14 @@
             final List<String> words, final HashMap<String, List<String>> shortcutMap) {
         for (int i = 0; i < number; ++i) {
             final String word = words.get(i);
-            final ArrayList<WeightedString> shortcuts = CollectionUtils.newArrayList();
+            final ArrayList<WeightedString> shortcuts = new ArrayList<>();
             if (shortcutMap != null && shortcutMap.containsKey(word)) {
                 for (final String shortcut : shortcutMap.get(word)) {
                     shortcuts.add(new WeightedString(shortcut, UNIGRAM_FREQ));
                 }
             }
-            dict.add(word, UNIGRAM_FREQ, (shortcutMap == null) ? null : shortcuts,
-                    false /* isNotAWord */);
+            dict.add(word, new ProbabilityInfo(UNIGRAM_FREQ),
+                    (shortcutMap == null) ? null : shortcuts, false /* isNotAWord */);
         }
     }
 
@@ -167,7 +159,7 @@
         for (int i = 0; i < bigrams.size(); ++i) {
             final int w1 = bigrams.keyAt(i);
             for (int w2 : bigrams.valueAt(i)) {
-                dict.setBigram(words.get(w1), words.get(w2), BIGRAM_FREQ);
+                dict.setBigram(words.get(w1), words.get(w2), new ProbabilityInfo(BIGRAM_FREQ));
             }
         }
     }
@@ -186,7 +178,7 @@
         long now = -1, diff = -1;
 
         try {
-            final DictEncoder dictEncoder = getDictEncoder(file, formatOptions);
+            final DictEncoder dictEncoder = BinaryDictUtils.getDictEncoder(file, formatOptions);
 
             now = System.currentTimeMillis();
             // If you need to dump the dict to a textual file, uncomment the line below and the
@@ -241,56 +233,23 @@
     private String outputOptions(final int bufferType,
             final FormatSpec.FormatOptions formatOptions) {
         String result = " : buffer type = "
-                + ((bufferType == USE_BYTE_BUFFER) ? "byte buffer" : "byte array");
-        result += " : version = " + formatOptions.mVersion;
-        return result + ", supportsDynamicUpdate = " + formatOptions.mSupportsDynamicUpdate;
+                + ((bufferType == BinaryDictUtils.USE_BYTE_BUFFER) ? "byte buffer" : "byte array");
+        return result + " : version = " + formatOptions.mVersion;
     }
 
-    private DictionaryOptions getDictionaryOptions(final String id, final String version) {
-        final DictionaryOptions options = new DictionaryOptions(new HashMap<String, String>(),
-                false, false);
-        options.mAttributes.put("version", version);
-        options.mAttributes.put("dictionary", id);
-        return options;
-    }
-
-    private File setUpDictionaryFile(final String name, final String version) {
-        File file = null;
-        try {
-            file = new File(getContext().getCacheDir(), name + "." + version
-                    + TEST_DICT_FILE_EXTENSION);
-            file.createNewFile();
-        } catch (IOException e) {
-            // do nothing
-        }
-        assertTrue("Failed to create the dictionary file.", file.exists());
-        return file;
-    }
-
-    private DictDecoder getDictDecoder(final File file, final int bufferType,
-            final FormatOptions formatOptions, final DictionaryOptions dictOptions) {
-        if (formatOptions.mVersion == FormatSpec.VERSION4) {
-            final FileHeader header = new FileHeader(0, dictOptions, formatOptions);
-            return FormatSpec.getDictDecoder(new File(getContext().getCacheDir(),
-                    header.getId() + "." + header.getVersion()), bufferType);
-        } else {
-            return FormatSpec.getDictDecoder(file, bufferType);
-        }
-    }
     // Tests for readDictionaryBinary and writeDictionaryBinary
 
     private long timeReadingAndCheckDict(final File file, final List<String> words,
             final SparseArray<List<Integer>> bigrams,
-            final HashMap<String, List<String>> shortcutMap, final int bufferType,
-            final FormatOptions formatOptions, final DictionaryOptions dictOptions) {
+            final HashMap<String, List<String>> shortcutMap, final int bufferType) {
         long now, diff = -1;
 
         FusionDictionary dict = null;
         try {
-            final DictDecoder dictDecoder = getDictDecoder(file, bufferType, formatOptions,
-                    dictOptions);
+            final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(),
+                    bufferType);
             now = System.currentTimeMillis();
-            dict = dictDecoder.readDictionaryBinary(null, false /* deleteDictIfBroken */);
+            dict = dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
             diff  = System.currentTimeMillis() - now;
         } catch (IOException e) {
             Log.e(TAG, "IOException while reading dictionary", e);
@@ -310,17 +269,17 @@
 
         final String dictName = "runReadAndWrite";
         final String dictVersion = Long.toString(System.currentTimeMillis());
-        final File file = setUpDictionaryFile(dictName, dictVersion);
+        final File file = BinaryDictUtils.getDictFile(dictName, dictVersion, formatOptions,
+                getContext().getCacheDir());
 
         final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                getDictionaryOptions(dictName, dictVersion));
+                BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions));
         addUnigrams(words.size(), dict, words, shortcuts);
         addBigrams(dict, words, bigrams);
         checkDictionary(dict, words, bigrams, shortcuts);
 
         final long write = timeWritingDictToFile(file, dict, formatOptions);
-        final long read = timeReadingAndCheckDict(file, words, bigrams, shortcuts, bufferType,
-                formatOptions, dict.mOptions);
+        final long read = timeReadingAndCheckDict(file, words, bigrams, shortcuts, bufferType);
 
         return "PROF: read=" + read + "ms, write=" + write + "ms :" + message
                 + " : " + outputOptions(bufferType, formatOptions);
@@ -340,6 +299,9 @@
                 "chain with shortcuts"));
         results.add(runReadAndWrite(sWords, sStarBigrams, sShortcuts, bufferType, formatOptions,
                 "star with shortcuts"));
+        results.add(runReadAndWrite(sWordsWithVariousCodePoints, sEmptyBigrams,
+                null /* shortcuts */, bufferType, formatOptions,
+                "unigram with various code points"));
     }
 
     // Unit test for CharEncoding.readString and CharEncoding.writeString.
@@ -349,8 +311,7 @@
         final byte[] buffer = new byte[50 * 3];
         final DictBuffer dictBuffer = new ByteArrayDictBuffer(buffer);
         for (final String word : sWords) {
-            Log.d("testReadAndWriteString", "write : " + word);
-            Arrays.fill(buffer, (byte)0);
+            Arrays.fill(buffer, (byte) 0);
             CharEncoding.writeString(buffer, 0, word);
             dictBuffer.position(0);
             final String str = CharEncoding.readString(dictBuffer);
@@ -359,29 +320,28 @@
     }
 
     public void testReadAndWriteWithByteBuffer() {
-        final List<String> results = CollectionUtils.newArrayList();
+        final List<String> results = new ArrayList<>();
 
-        runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION2);
-        runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION3_WITHOUT_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION3_WITH_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION4_WITHOUT_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION4_WITH_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_BUFFER, VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP);
-
+        runReadAndWriteTests(results, BinaryDictUtils.USE_BYTE_BUFFER,
+                BinaryDictUtils.VERSION2_OPTIONS);
+        runReadAndWriteTests(results, BinaryDictUtils.USE_BYTE_BUFFER,
+                BinaryDictUtils.VERSION4_OPTIONS_WITHOUT_TIMESTAMP);
+        runReadAndWriteTests(results, BinaryDictUtils.USE_BYTE_BUFFER,
+                BinaryDictUtils.VERSION4_OPTIONS_WITH_TIMESTAMP);
         for (final String result : results) {
             Log.d(TAG, result);
         }
     }
 
     public void testReadAndWriteWithByteArray() {
-        final List<String> results = CollectionUtils.newArrayList();
+        final List<String> results = new ArrayList<>();
 
-        runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION2);
-        runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION3_WITHOUT_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION3_WITH_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION4_WITHOUT_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION4_WITH_DYNAMIC_UPDATE);
-        runReadAndWriteTests(results, USE_BYTE_ARRAY, VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP);
+        runReadAndWriteTests(results, BinaryDictUtils.USE_BYTE_ARRAY,
+                BinaryDictUtils.VERSION2_OPTIONS);
+        runReadAndWriteTests(results, BinaryDictUtils.USE_BYTE_ARRAY,
+                BinaryDictUtils.VERSION4_OPTIONS_WITHOUT_TIMESTAMP);
+        runReadAndWriteTests(results, BinaryDictUtils.USE_BYTE_ARRAY,
+                BinaryDictUtils.VERSION4_OPTIONS_WITH_TIMESTAMP);
 
         for (final String result : results) {
             Log.d(TAG, result);
@@ -394,62 +354,62 @@
             final SparseArray<List<Integer>> expectedBigrams,
             final TreeMap<Integer, String> resultWords,
             final TreeMap<Integer, Integer> resultFrequencies,
-            final TreeMap<Integer, ArrayList<PendingAttribute>> resultBigrams) {
+            final TreeMap<Integer, ArrayList<PendingAttribute>> resultBigrams,
+            final boolean checkProbability) {
         // check unigrams
-        final Set<String> actualWordsSet = new HashSet<String>(resultWords.values());
-        final Set<String> expectedWordsSet = new HashSet<String>(expectedWords);
+        final Set<String> actualWordsSet = new HashSet<>(resultWords.values());
+        final Set<String> expectedWordsSet = new HashSet<>(expectedWords);
         assertEquals(actualWordsSet, expectedWordsSet);
-
-        for (int freq : resultFrequencies.values()) {
-            assertEquals(freq, UNIGRAM_FREQ);
+        if (checkProbability) {
+            for (int freq : resultFrequencies.values()) {
+                assertEquals(freq, UNIGRAM_FREQ);
+            }
         }
 
         // check bigrams
-        final HashMap<String, List<String>> expBigrams = new HashMap<String, List<String>>();
+        final HashMap<String, Set<String>> expBigrams = new HashMap<>();
         for (int i = 0; i < expectedBigrams.size(); ++i) {
             final String word1 = expectedWords.get(expectedBigrams.keyAt(i));
             for (int w2 : expectedBigrams.valueAt(i)) {
                 if (expBigrams.get(word1) == null) {
-                    expBigrams.put(word1, new ArrayList<String>());
+                    expBigrams.put(word1, new HashSet<String>());
                 }
                 expBigrams.get(word1).add(expectedWords.get(w2));
             }
         }
 
-        final HashMap<String, List<String>> actBigrams = new HashMap<String, List<String>>();
+        final HashMap<String, Set<String>> actBigrams = new HashMap<>();
         for (Entry<Integer, ArrayList<PendingAttribute>> entry : resultBigrams.entrySet()) {
             final String word1 = resultWords.get(entry.getKey());
             final int unigramFreq = resultFrequencies.get(entry.getKey());
             for (PendingAttribute attr : entry.getValue()) {
                 final String word2 = resultWords.get(attr.mAddress);
                 if (actBigrams.get(word1) == null) {
-                    actBigrams.put(word1, new ArrayList<String>());
+                    actBigrams.put(word1, new HashSet<String>());
                 }
                 actBigrams.get(word1).add(word2);
 
-                final int bigramFreq = BinaryDictIOUtils.reconstructBigramFrequency(
-                        unigramFreq, attr.mFrequency);
-                assertTrue(Math.abs(bigramFreq - BIGRAM_FREQ) < TOLERANCE_OF_BIGRAM_FREQ);
+                if (checkProbability) {
+                    final int bigramFreq = BinaryDictIOUtils.reconstructBigramFrequency(
+                            unigramFreq, attr.mFrequency);
+                    assertTrue(Math.abs(bigramFreq - BIGRAM_FREQ) < TOLERANCE_OF_BIGRAM_FREQ);
+                }
             }
         }
-
         assertEquals(actBigrams, expBigrams);
     }
 
     private long timeAndCheckReadUnigramsAndBigramsBinary(final File file, final List<String> words,
             final SparseArray<List<Integer>> bigrams, final int bufferType,
-            final FormatOptions formatOptions, final DictionaryOptions dictOptions) {
-        FileInputStream inStream = null;
-
-        final TreeMap<Integer, String> resultWords = CollectionUtils.newTreeMap();
-        final TreeMap<Integer, ArrayList<PendingAttribute>> resultBigrams =
-                CollectionUtils.newTreeMap();
-        final TreeMap<Integer, Integer> resultFreqs = CollectionUtils.newTreeMap();
+            final boolean checkProbability) {
+        final TreeMap<Integer, String> resultWords = new TreeMap<>();
+        final TreeMap<Integer, ArrayList<PendingAttribute>> resultBigrams = new TreeMap<>();
+        final TreeMap<Integer, Integer> resultFreqs = new TreeMap<>();
 
         long now = -1, diff = -1;
         try {
-            final DictDecoder dictDecoder = getDictDecoder(file, bufferType, formatOptions,
-                    dictOptions);
+            final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(),
+                    bufferType);
             now = System.currentTimeMillis();
             dictDecoder.readUnigramsAndBigramsBinary(resultWords, resultFreqs, resultBigrams);
             diff = System.currentTimeMillis() - now;
@@ -457,17 +417,9 @@
             Log.e(TAG, "IOException", e);
         } catch (UnsupportedFormatException e) {
             Log.e(TAG, "UnsupportedFormatException", e);
-        } finally {
-            if (inStream != null) {
-                try {
-                    inStream.close();
-                } catch (IOException e) {
-                    // do nothing
-                }
-            }
         }
 
-        checkWordMap(words, bigrams, resultWords, resultFreqs, resultBigrams);
+        checkWordMap(words, bigrams, resultWords, resultFreqs, resultBigrams, checkProbability);
         return diff;
     }
 
@@ -476,20 +428,24 @@
             final FormatSpec.FormatOptions formatOptions, final String message) {
         final String dictName = "runReadUnigrams";
         final String dictVersion = Long.toString(System.currentTimeMillis());
-        final File file = setUpDictionaryFile(dictName, dictVersion);
+        final File file = BinaryDictUtils.getDictFile(dictName, dictVersion, formatOptions,
+                getContext().getCacheDir());
 
         // making the dictionary from lists of words.
         final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                getDictionaryOptions(dictName, dictVersion));
+                BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions));
         addUnigrams(words.size(), dict, words, null /* shortcutMap */);
         addBigrams(dict, words, bigrams);
 
         timeWritingDictToFile(file, dict, formatOptions);
 
+        // Caveat: Currently, the Java code to read a v4 dictionary doesn't calculate the
+        // probability when there's a timestamp for the entry.
+        // TODO: Abandon the Java code, and implement the v4 dictionary reading code in native.
         long wordMap = timeAndCheckReadUnigramsAndBigramsBinary(file, words, bigrams, bufferType,
-                formatOptions, dict.mOptions);
+                !formatOptions.mHasTimestamp /* checkProbability */);
         long fullReading = timeReadingAndCheckDict(file, words, bigrams, null /* shortcutMap */,
-                bufferType, formatOptions, dict.mOptions);
+                bufferType);
 
         return "readDictionaryBinary=" + fullReading + ", readUnigramsAndBigramsBinary=" + wordMap
                 + " : " + message + " : " + outputOptions(bufferType, formatOptions);
@@ -506,15 +462,10 @@
     }
 
     public void testReadUnigramsAndBigramsBinaryWithByteBuffer() {
-        final ArrayList<String> results = CollectionUtils.newArrayList();
+        final ArrayList<String> results = new ArrayList<>();
 
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION2);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION3_WITHOUT_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION3_WITH_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION4_WITHOUT_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER, VERSION4_WITH_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_BUFFER,
-                VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP);
+        runReadUnigramsAndBigramsTests(results, BinaryDictUtils.USE_BYTE_BUFFER,
+                BinaryDictUtils.VERSION2_OPTIONS);
 
         for (final String result : results) {
             Log.d(TAG, result);
@@ -522,15 +473,10 @@
     }
 
     public void testReadUnigramsAndBigramsBinaryWithByteArray() {
-        final ArrayList<String> results = CollectionUtils.newArrayList();
+        final ArrayList<String> results = new ArrayList<>();
 
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION2);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION3_WITHOUT_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION3_WITH_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION4_WITHOUT_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY, VERSION4_WITH_DYNAMIC_UPDATE);
-        runReadUnigramsAndBigramsTests(results, USE_BYTE_ARRAY,
-                VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP);
+        runReadUnigramsAndBigramsTests(results, BinaryDictUtils.USE_BYTE_ARRAY,
+                BinaryDictUtils.VERSION2_OPTIONS);
 
         for (final String result : results) {
             Log.d(TAG, result);
@@ -541,7 +487,7 @@
     private String getWordFromBinary(final DictDecoder dictDecoder, final int address) {
         if (dictDecoder.getPosition() != 0) dictDecoder.setPosition(0);
 
-        FileHeader fileHeader = null;
+        DictionaryHeader fileHeader = null;
         try {
             fileHeader = dictDecoder.readHeader();
         } catch (IOException e) {
@@ -550,8 +496,8 @@
             return null;
         }
         if (fileHeader == null) return null;
-        return BinaryDictDecoderUtils.getWordAtPosition(dictDecoder, fileHeader.mHeaderSize,
-                address, fileHeader.mFormatOptions).mWord;
+        return BinaryDictDecoderUtils.getWordAtPosition(dictDecoder, fileHeader.mBodyOffset,
+                address).mWord;
     }
 
     private long checkGetTerminalPosition(final DictDecoder dictDecoder, final String word,
@@ -578,20 +524,22 @@
             final FormatOptions formatOptions, final String message) {
         final String dictName = "testGetTerminalPosition";
         final String dictVersion = Long.toString(System.currentTimeMillis());
-        final File file = setUpDictionaryFile(dictName, dictVersion);
+        final File file = BinaryDictUtils.getDictFile(dictName, dictVersion, formatOptions,
+                getContext().getCacheDir());
 
         final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                getDictionaryOptions(dictName, dictVersion));
+                BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions));
         addUnigrams(sWords.size(), dict, sWords, null /* shortcutMap */);
         addBigrams(dict, words, bigrams);
         timeWritingDictToFile(file, dict, formatOptions);
 
-        final DictDecoder dictDecoder = getDictDecoder(file, DictDecoder.USE_BYTEARRAY,
-                formatOptions, dict.mOptions);
+        final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length(),
+                DictDecoder.USE_BYTEARRAY);
         try {
             dictDecoder.openDictBuffer();
         } catch (IOException e) {
-            // ignore
+            Log.e(TAG, "IOException while opening the buffer", e);
+        } catch (UnsupportedFormatException e) {
             Log.e(TAG, "IOException while opening the buffer", e);
         }
         assertTrue("Can't get the buffer", dictDecoder.isDictBufferOpen());
@@ -636,67 +584,113 @@
     }
 
     public void testGetTerminalPosition() {
-        final ArrayList<String> results = CollectionUtils.newArrayList();
+        final ArrayList<String> results = new ArrayList<>();
 
-        runGetTerminalPositionTests(USE_BYTE_ARRAY, VERSION2);
-        runGetTerminalPositionTests(USE_BYTE_ARRAY, VERSION3_WITHOUT_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_ARRAY, VERSION3_WITH_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_ARRAY, VERSION4_WITHOUT_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_ARRAY, VERSION4_WITH_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_ARRAY, VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP);
-
-        runGetTerminalPositionTests(USE_BYTE_BUFFER, VERSION2);
-        runGetTerminalPositionTests(USE_BYTE_BUFFER, VERSION3_WITHOUT_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_BUFFER, VERSION3_WITH_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_BUFFER, VERSION4_WITHOUT_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_BUFFER, VERSION4_WITH_DYNAMIC_UPDATE);
-        runGetTerminalPositionTests(USE_BYTE_BUFFER, VERSION4_WITH_DYNAMIC_UPDATE_AND_TIMESTAMP);
+        runGetTerminalPositionTests(BinaryDictUtils.USE_BYTE_ARRAY,
+                BinaryDictUtils.VERSION2_OPTIONS);
+        runGetTerminalPositionTests(BinaryDictUtils.USE_BYTE_BUFFER,
+                BinaryDictUtils.VERSION2_OPTIONS);
 
         for (final String result : results) {
             Log.d(TAG, result);
         }
     }
 
-    private void runTestDeleteWord(final FormatOptions formatOptions) {
-        final String dictName = "testDeleteWord";
+    public void testVer2DictGetWordProperty() {
+        final FormatOptions formatOptions = BinaryDictUtils.VERSION2_OPTIONS;
+        final ArrayList<String> words = sWords;
+        final HashMap<String, List<String>> shortcuts = sShortcuts;
+        final String dictName = "testGetWordProperty";
         final String dictVersion = Long.toString(System.currentTimeMillis());
-        final File file = setUpDictionaryFile(dictName, dictVersion);
-
         final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(
-                        new HashMap<String, String>(), false, false));
-        addUnigrams(sWords.size(), dict, sWords, null /* shortcutMap */);
+                BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions));
+        addUnigrams(words.size(), dict, words, shortcuts);
+        addBigrams(dict, words, sEmptyBigrams);
+        final File file = BinaryDictUtils.getDictFile(dictName, dictVersion, formatOptions,
+                getContext().getCacheDir());
+        file.delete();
         timeWritingDictToFile(file, dict, formatOptions);
-
-        final DictUpdater dictUpdater;
-        if (formatOptions.mVersion == 3) {
-            dictUpdater = new Ver3DictUpdater(file, DictDecoder.USE_WRITABLE_BYTEBUFFER);
-        } else if (formatOptions.mVersion == 4) {
-            dictUpdater = new Ver4DictUpdater(file, DictDecoder.USE_WRITABLE_BYTEBUFFER);
-        } else {
-            throw new RuntimeException("DictUpdater for version " + formatOptions.mVersion
-                    + " doesn't exist.");
-        }
-
-        try {
-            MoreAsserts.assertNotEqual(FormatSpec.NOT_VALID_WORD,
-                    dictUpdater.getTerminalPosition(sWords.get(0)));
-            dictUpdater.deleteWord(sWords.get(0));
-            assertEquals(FormatSpec.NOT_VALID_WORD,
-                    dictUpdater.getTerminalPosition(sWords.get(0)));
-
-            MoreAsserts.assertNotEqual(FormatSpec.NOT_VALID_WORD,
-                    dictUpdater.getTerminalPosition(sWords.get(5)));
-            dictUpdater.deleteWord(sWords.get(5));
-            assertEquals(FormatSpec.NOT_VALID_WORD,
-                    dictUpdater.getTerminalPosition(sWords.get(5)));
-        } catch (IOException e) {
-        } catch (UnsupportedFormatException e) {
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(file.getAbsolutePath(),
+                0 /* offset */, file.length(), true /* useFullEditDistance */,
+                Locale.ENGLISH, dictName, false /* isUpdatable */);
+        for (final String word : words) {
+            final WordProperty wordProperty = binaryDictionary.getWordProperty(word,
+                    false /* isBeginningOfSentence */);
+            assertEquals(word, wordProperty.mWord);
+            assertEquals(UNIGRAM_FREQ, wordProperty.getProbability());
+            if (shortcuts.containsKey(word)) {
+                assertEquals(shortcuts.get(word).size(), wordProperty.mShortcutTargets.size());
+                final List<String> shortcutList = shortcuts.get(word);
+                assertTrue(wordProperty.mHasShortcuts);
+                for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                    assertTrue(shortcutList.contains(shortcutTarget.mWord));
+                    assertEquals(UNIGRAM_FREQ, shortcutTarget.getProbability());
+                    shortcutList.remove(shortcutTarget.mWord);
+                }
+                assertTrue(shortcutList.isEmpty());
+            }
         }
     }
 
-    public void testDeleteWord() {
-        runTestDeleteWord(VERSION3_WITH_DYNAMIC_UPDATE);
-        runTestDeleteWord(VERSION4_WITH_DYNAMIC_UPDATE);
+    public void testVer2DictIteration() {
+        final FormatOptions formatOptions = BinaryDictUtils.VERSION2_OPTIONS;
+        final ArrayList<String> words = sWords;
+        final HashMap<String, List<String>> shortcuts = sShortcuts;
+        final SparseArray<List<Integer>> bigrams = sEmptyBigrams;
+        final String dictName = "testGetWordProperty";
+        final String dictVersion = Long.toString(System.currentTimeMillis());
+        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
+                BinaryDictUtils.makeDictionaryOptions(dictName, dictVersion, formatOptions));
+        addUnigrams(words.size(), dict, words, shortcuts);
+        addBigrams(dict, words, bigrams);
+        final File file = BinaryDictUtils.getDictFile(dictName, dictVersion, formatOptions,
+                getContext().getCacheDir());
+        timeWritingDictToFile(file, dict, formatOptions);
+        Log.d(TAG, file.getAbsolutePath());
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(file.getAbsolutePath(),
+                0 /* offset */, file.length(), true /* useFullEditDistance */,
+                Locale.ENGLISH, dictName, false /* isUpdatable */);
+
+        final HashSet<String> wordSet = new HashSet<>(words);
+        final HashSet<Pair<String, String>> bigramSet = new HashSet<>();
+
+        for (int i = 0; i < words.size(); i++) {
+            final List<Integer> bigramList = bigrams.get(i);
+            if (bigramList != null) {
+                for (final Integer word1Index : bigramList) {
+                    final String word1 = words.get(word1Index);
+                    bigramSet.add(new Pair<>(words.get(i), word1));
+                }
+            }
+        }
+        int token = 0;
+        do {
+            final BinaryDictionary.GetNextWordPropertyResult result =
+                    binaryDictionary.getNextWordProperty(token);
+            final WordProperty wordProperty = result.mWordProperty;
+            final String word0 = wordProperty.mWord;
+            assertEquals(UNIGRAM_FREQ, wordProperty.mProbabilityInfo.mProbability);
+            wordSet.remove(word0);
+            if (shortcuts.containsKey(word0)) {
+                assertEquals(shortcuts.get(word0).size(), wordProperty.mShortcutTargets.size());
+                final List<String> shortcutList = shortcuts.get(word0);
+                assertNotNull(wordProperty.mShortcutTargets);
+                for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                    assertTrue(shortcutList.contains(shortcutTarget.mWord));
+                    assertEquals(UNIGRAM_FREQ, shortcutTarget.getProbability());
+                    shortcutList.remove(shortcutTarget.mWord);
+                }
+                assertTrue(shortcutList.isEmpty());
+            }
+            for (int j = 0; j < wordProperty.mBigrams.size(); j++) {
+                final String word1 = wordProperty.mBigrams.get(j).mWord;
+                final Pair<String, String> bigram = new Pair<>(word0, word1);
+                assertTrue(bigramSet.contains(bigram));
+                bigramSet.remove(bigram);
+            }
+            token = result.mNextToken;
+        } while (token != 0);
+        assertTrue(wordSet.isEmpty());
+        assertTrue(bigramSet.isEmpty());
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java
new file mode 100644
index 0000000..96604a1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java
@@ -0,0 +1,361 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+
+/**
+ * Decodes binary files for a FusionDictionary.
+ *
+ * All the methods in this class are static.
+ *
+ * TODO: Move this file to makedict/internal.
+ * TODO: Rename this class to DictDecoderUtils.
+ */
+public final class BinaryDictDecoderUtils {
+    private BinaryDictDecoderUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    @UsedForTesting
+    public interface DictBuffer {
+        public int readUnsignedByte();
+        public int readUnsignedShort();
+        public int readUnsignedInt24();
+        public int readInt();
+        public int position();
+        public void position(int newPosition);
+        @UsedForTesting
+        public void put(final byte b);
+        public int limit();
+        @UsedForTesting
+        public int capacity();
+    }
+
+    public static final class ByteBufferDictBuffer implements DictBuffer {
+        private ByteBuffer mBuffer;
+
+        public ByteBufferDictBuffer(final ByteBuffer buffer) {
+            mBuffer = buffer;
+        }
+
+        @Override
+        public int readUnsignedByte() {
+            return mBuffer.get() & 0xFF;
+        }
+
+        @Override
+        public int readUnsignedShort() {
+            return mBuffer.getShort() & 0xFFFF;
+        }
+
+        @Override
+        public int readUnsignedInt24() {
+            final int retval = readUnsignedByte();
+            return (retval << 16) + readUnsignedShort();
+        }
+
+        @Override
+        public int readInt() {
+            return mBuffer.getInt();
+        }
+
+        @Override
+        public int position() {
+            return mBuffer.position();
+        }
+
+        @Override
+        public void position(int newPos) {
+            mBuffer.position(newPos);
+        }
+
+        @Override
+        public void put(final byte b) {
+            mBuffer.put(b);
+        }
+
+        @Override
+        public int limit() {
+            return mBuffer.limit();
+        }
+
+        @Override
+        public int capacity() {
+            return mBuffer.capacity();
+        }
+    }
+
+    /**
+     * A class grouping utility function for our specific character encoding.
+     */
+    static final class CharEncoding {
+        private static final int MINIMAL_ONE_BYTE_CHARACTER_VALUE = 0x20;
+        private static final int MAXIMAL_ONE_BYTE_CHARACTER_VALUE = 0xFF;
+
+        /**
+         * Helper method to find out whether this code fits on one byte
+         */
+        private static boolean fitsOnOneByte(final int character) {
+            return character >= MINIMAL_ONE_BYTE_CHARACTER_VALUE
+                    && character <= MAXIMAL_ONE_BYTE_CHARACTER_VALUE;
+        }
+
+        /**
+         * Compute the size of a character given its character code.
+         *
+         * Char format is:
+         * 1 byte = bbbbbbbb match
+         * case 000xxxxx: xxxxx << 16 + next byte << 8 + next byte
+         * else: if 00011111 (= 0x1F) : this is the terminator. This is a relevant choice because
+         *       unicode code points range from 0 to 0x10FFFF, so any 3-byte value starting with
+         *       00011111 would be outside unicode.
+         * else: iso-latin-1 code
+         * This allows for the whole unicode range to be encoded, including chars outside of
+         * the BMP. Also everything in the iso-latin-1 charset is only 1 byte, except control
+         * characters which should never happen anyway (and still work, but take 3 bytes).
+         *
+         * @param character the character code.
+         * @return the size in binary encoded-form, either 1 or 3 bytes.
+         */
+        static int getCharSize(final int character) {
+            // See char encoding in FusionDictionary.java
+            if (fitsOnOneByte(character)) return 1;
+            if (FormatSpec.INVALID_CHARACTER == character) return 1;
+            return 3;
+        }
+
+        /**
+         * Compute the byte size of a character array.
+         */
+        static int getCharArraySize(final int[] chars) {
+            int size = 0;
+            for (int character : chars) size += getCharSize(character);
+            return size;
+        }
+
+        /**
+         * Writes a char array to a byte buffer.
+         *
+         * @param codePoints the code point array to write.
+         * @param buffer the byte buffer to write to.
+         * @param index the index in buffer to write the character array to.
+         * @return the index after the last character.
+         */
+        static int writeCharArray(final int[] codePoints, final byte[] buffer, int index) {
+            for (int codePoint : codePoints) {
+                if (1 == getCharSize(codePoint)) {
+                    buffer[index++] = (byte)codePoint;
+                } else {
+                    buffer[index++] = (byte)(0xFF & (codePoint >> 16));
+                    buffer[index++] = (byte)(0xFF & (codePoint >> 8));
+                    buffer[index++] = (byte)(0xFF & codePoint);
+                }
+            }
+            return index;
+        }
+
+        /**
+         * Writes a string with our character format to a byte buffer.
+         *
+         * This will also write the terminator byte.
+         *
+         * @param buffer the byte buffer to write to.
+         * @param origin the offset to write from.
+         * @param word the string to write.
+         * @return the size written, in bytes.
+         */
+        static int writeString(final byte[] buffer, final int origin, final String word) {
+            final int length = word.length();
+            int index = origin;
+            for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
+                final int codePoint = word.codePointAt(i);
+                if (1 == getCharSize(codePoint)) {
+                    buffer[index++] = (byte)codePoint;
+                } else {
+                    buffer[index++] = (byte)(0xFF & (codePoint >> 16));
+                    buffer[index++] = (byte)(0xFF & (codePoint >> 8));
+                    buffer[index++] = (byte)(0xFF & codePoint);
+                }
+            }
+            buffer[index++] = FormatSpec.PTNODE_CHARACTERS_TERMINATOR;
+            return index - origin;
+        }
+
+        /**
+         * Writes a string with our character format to an OutputStream.
+         *
+         * This will also write the terminator byte.
+         *
+         * @param stream the OutputStream to write to.
+         * @param word the string to write.
+         * @return the size written, in bytes.
+         */
+        static int writeString(final OutputStream stream, final String word) throws IOException {
+            final int length = word.length();
+            int written = 0;
+            for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
+                final int codePoint = word.codePointAt(i);
+                final int charSize = getCharSize(codePoint);
+                if (1 == charSize) {
+                    stream.write((byte) codePoint);
+                } else {
+                    stream.write((byte) (0xFF & (codePoint >> 16)));
+                    stream.write((byte) (0xFF & (codePoint >> 8)));
+                    stream.write((byte) (0xFF & codePoint));
+                }
+                written += charSize;
+            }
+            stream.write(FormatSpec.PTNODE_CHARACTERS_TERMINATOR);
+            written += FormatSpec.PTNODE_TERMINATOR_SIZE;
+            return written;
+        }
+
+        /**
+         * Reads a string from a DictBuffer. This is the converse of the above method.
+         */
+        static String readString(final DictBuffer dictBuffer) {
+            final StringBuilder s = new StringBuilder();
+            int character = readChar(dictBuffer);
+            while (character != FormatSpec.INVALID_CHARACTER) {
+                s.appendCodePoint(character);
+                character = readChar(dictBuffer);
+            }
+            return s.toString();
+        }
+
+        /**
+         * Reads a character from the buffer.
+         *
+         * This follows the character format documented earlier in this source file.
+         *
+         * @param dictBuffer the buffer, positioned over an encoded character.
+         * @return the character code.
+         */
+        static int readChar(final DictBuffer dictBuffer) {
+            int character = dictBuffer.readUnsignedByte();
+            if (!fitsOnOneByte(character)) {
+                if (FormatSpec.PTNODE_CHARACTERS_TERMINATOR == character) {
+                    return FormatSpec.INVALID_CHARACTER;
+                }
+                character <<= 16;
+                character += dictBuffer.readUnsignedShort();
+            }
+            return character;
+        }
+    }
+
+    /**
+     * Reads and returns the PtNode count out of a buffer and forwards the pointer.
+     */
+    /* package */ static int readPtNodeCount(final DictBuffer dictBuffer) {
+        final int msb = dictBuffer.readUnsignedByte();
+        if (FormatSpec.MAX_PTNODES_FOR_ONE_BYTE_PTNODE_COUNT >= msb) {
+            return msb;
+        } else {
+            return ((FormatSpec.MAX_PTNODES_FOR_ONE_BYTE_PTNODE_COUNT & msb) << 8)
+                    + dictBuffer.readUnsignedByte();
+        }
+    }
+
+    /**
+     * Finds, as a string, the word at the position passed as an argument.
+     *
+     * @param dictDecoder the dict decoder.
+     * @param headerSize the size of the header.
+     * @param pos the position to seek.
+     * @return the word with its frequency, as a weighted string.
+     */
+    @UsedForTesting
+    /* package for tests */ static WeightedString getWordAtPosition(final DictDecoder dictDecoder,
+            final int headerSize, final int pos) {
+        final WeightedString result;
+        final int originalPos = dictDecoder.getPosition();
+        dictDecoder.setPosition(pos);
+        result = getWordAtPositionWithoutParentAddress(dictDecoder, headerSize, pos);
+        dictDecoder.setPosition(originalPos);
+        return result;
+    }
+
+    private static WeightedString getWordAtPositionWithoutParentAddress(
+            final DictDecoder dictDecoder, final int headerSize, final int pos) {
+        dictDecoder.setPosition(headerSize);
+        final int count = dictDecoder.readPtNodeCount();
+        int groupPos = dictDecoder.getPosition();
+        final StringBuilder builder = new StringBuilder();
+        WeightedString result = null;
+
+        PtNodeInfo last = null;
+        for (int i = count - 1; i >= 0; --i) {
+            PtNodeInfo info = dictDecoder.readPtNode(groupPos);
+            groupPos = info.mEndAddress;
+            if (info.mOriginalAddress == pos) {
+                builder.append(new String(info.mCharacters, 0, info.mCharacters.length));
+                result = new WeightedString(builder.toString(), info.mProbabilityInfo);
+                break; // and return
+            }
+            if (BinaryDictIOUtils.hasChildrenAddress(info.mChildrenAddress)) {
+                if (info.mChildrenAddress > pos) {
+                    if (null == last) continue;
+                    builder.append(new String(last.mCharacters, 0, last.mCharacters.length));
+                    dictDecoder.setPosition(last.mChildrenAddress);
+                    i = dictDecoder.readPtNodeCount();
+                    groupPos = last.mChildrenAddress + BinaryDictIOUtils.getPtNodeCountSize(i);
+                    last = null;
+                    continue;
+                }
+                last = info;
+            }
+            if (0 == i && BinaryDictIOUtils.hasChildrenAddress(last.mChildrenAddress)) {
+                builder.append(new String(last.mCharacters, 0, last.mCharacters.length));
+                dictDecoder.setPosition(last.mChildrenAddress);
+                i = dictDecoder.readPtNodeCount();
+                groupPos = last.mChildrenAddress + BinaryDictIOUtils.getPtNodeCountSize(i);
+                last = null;
+                continue;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Helper method to pass a file name instead of a File object to isBinaryDictionary.
+     */
+    public static boolean isBinaryDictionary(final String filename) {
+        final File file = new File(filename);
+        return isBinaryDictionary(file);
+    }
+
+    /**
+     * Basic test to find out whether the file is a binary dictionary or not.
+     *
+     * @param file The file to test.
+     * @return true if it's a binary dictionary, false otherwise
+     */
+    public static boolean isBinaryDictionary(final File file) {
+        final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length());
+        if (dictDecoder == null) {
+            return false;
+        }
+        return dictDecoder.hasValidRawBinaryDictionary();
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
new file mode 100644
index 0000000..0843719
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictEncoderUtils.java
@@ -0,0 +1,881 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
+import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+
+/**
+ * Encodes binary files for a FusionDictionary.
+ *
+ * All the methods in this class are static.
+ *
+ * TODO: Rename this class to DictEncoderUtils.
+ */
+public class BinaryDictEncoderUtils {
+
+    private static final boolean DBG = MakedictLog.DBG;
+
+    private BinaryDictEncoderUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    // Arbitrary limit to how much passes we consider address size compression should
+    // terminate in. At the time of this writing, our largest dictionary completes
+    // compression in five passes.
+    // If the number of passes exceeds this number, makedict bails with an exception on
+    // suspicion that a bug might be causing an infinite loop.
+    private static final int MAX_PASSES = 24;
+
+    /**
+     * Compute the binary size of the character array.
+     *
+     * If only one character, this is the size of this character. If many, it's the sum of their
+     * sizes + 1 byte for the terminator.
+     *
+     * @param characters the character array
+     * @return the size of the char array, including the terminator if any
+     */
+    static int getPtNodeCharactersSize(final int[] characters) {
+        int size = CharEncoding.getCharArraySize(characters);
+        if (characters.length > 1) size += FormatSpec.PTNODE_TERMINATOR_SIZE;
+        return size;
+    }
+
+    /**
+     * Compute the binary size of the character array in a PtNode
+     *
+     * If only one character, this is the size of this character. If many, it's the sum of their
+     * sizes + 1 byte for the terminator.
+     *
+     * @param ptNode the PtNode
+     * @return the size of the char array, including the terminator if any
+     */
+    private static int getPtNodeCharactersSize(final PtNode ptNode) {
+        return getPtNodeCharactersSize(ptNode.mChars);
+    }
+
+    /**
+     * Compute the binary size of the PtNode count for a node array.
+     * @param nodeArray the nodeArray
+     * @return the size of the PtNode count, either 1 or 2 bytes.
+     */
+    private static int getPtNodeCountSize(final PtNodeArray nodeArray) {
+        return BinaryDictIOUtils.getPtNodeCountSize(nodeArray.mData.size());
+    }
+
+    /**
+     * Compute the size of a shortcut in bytes.
+     */
+    private static int getShortcutSize(final WeightedString shortcut) {
+        int size = FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE;
+        final String word = shortcut.mWord;
+        final int length = word.length();
+        for (int i = 0; i < length; i = word.offsetByCodePoints(i, 1)) {
+            final int codePoint = word.codePointAt(i);
+            size += CharEncoding.getCharSize(codePoint);
+        }
+        size += FormatSpec.PTNODE_TERMINATOR_SIZE;
+        return size;
+    }
+
+    /**
+     * Compute the size of a shortcut list in bytes.
+     *
+     * This is known in advance and does not change according to position in the file
+     * like address lists do.
+     */
+    static int getShortcutListSize(final ArrayList<WeightedString> shortcutList) {
+        if (null == shortcutList || shortcutList.isEmpty()) return 0;
+        int size = FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE;
+        for (final WeightedString shortcut : shortcutList) {
+            size += getShortcutSize(shortcut);
+        }
+        return size;
+    }
+
+    /**
+     * Compute the maximum size of a PtNode, assuming 3-byte addresses for everything.
+     *
+     * @param ptNode the PtNode to compute the size of.
+     * @return the maximum size of the PtNode.
+     */
+    private static int getPtNodeMaximumSize(final PtNode ptNode) {
+        int size = getNodeHeaderSize(ptNode);
+        if (ptNode.isTerminal()) {
+            // If terminal, one byte for the frequency.
+            size += FormatSpec.PTNODE_FREQUENCY_SIZE;
+        }
+        size += FormatSpec.PTNODE_MAX_ADDRESS_SIZE; // For children address
+        size += getShortcutListSize(ptNode.mShortcutTargets);
+        if (null != ptNode.mBigrams) {
+            size += (FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE
+                    + FormatSpec.PTNODE_ATTRIBUTE_MAX_ADDRESS_SIZE)
+                    * ptNode.mBigrams.size();
+        }
+        return size;
+    }
+
+    /**
+     * Compute the maximum size of each PtNode of a PtNode array, assuming 3-byte addresses for
+     * everything, and caches it in the `mCachedSize' member of the nodes; deduce the size of
+     * the containing node array, and cache it it its 'mCachedSize' member.
+     *
+     * @param ptNodeArray the node array to compute the maximum size of.
+     */
+    private static void calculatePtNodeArrayMaximumSize(final PtNodeArray ptNodeArray) {
+        int size = getPtNodeCountSize(ptNodeArray);
+        for (PtNode node : ptNodeArray.mData) {
+            final int nodeSize = getPtNodeMaximumSize(node);
+            node.mCachedSize = nodeSize;
+            size += nodeSize;
+        }
+        ptNodeArray.mCachedSize = size;
+    }
+
+    /**
+     * Compute the size of the header (flag + [parent address] + characters size) of a PtNode.
+     *
+     * @param ptNode the PtNode of which to compute the size of the header
+     */
+    private static int getNodeHeaderSize(final PtNode ptNode) {
+        return FormatSpec.PTNODE_FLAGS_SIZE + getPtNodeCharactersSize(ptNode);
+    }
+
+    /**
+     * Compute the size, in bytes, that an address will occupy.
+     *
+     * This can be used either for children addresses (which are always positive) or for
+     * attribute, which may be positive or negative but
+     * store their sign bit separately.
+     *
+     * @param address the address
+     * @return the byte size.
+     */
+    static int getByteSize(final int address) {
+        assert(address <= FormatSpec.UINT24_MAX);
+        if (!BinaryDictIOUtils.hasChildrenAddress(address)) {
+            return 0;
+        } else if (Math.abs(address) <= FormatSpec.UINT8_MAX) {
+            return 1;
+        } else if (Math.abs(address) <= FormatSpec.UINT16_MAX) {
+            return 2;
+        } else {
+            return 3;
+        }
+    }
+
+    static int writeUIntToBuffer(final byte[] buffer, int position, final int value,
+            final int size) {
+        switch(size) {
+            case 4:
+                buffer[position++] = (byte) ((value >> 24) & 0xFF);
+                /* fall through */
+            case 3:
+                buffer[position++] = (byte) ((value >> 16) & 0xFF);
+                /* fall through */
+            case 2:
+                buffer[position++] = (byte) ((value >> 8) & 0xFF);
+                /* fall through */
+            case 1:
+                buffer[position++] = (byte) (value & 0xFF);
+                break;
+            default:
+                /* nop */
+        }
+        return position;
+    }
+
+    static void writeUIntToStream(final OutputStream stream, final int value, final int size)
+            throws IOException {
+        switch(size) {
+            case 4:
+                stream.write((value >> 24) & 0xFF);
+                /* fall through */
+            case 3:
+                stream.write((value >> 16) & 0xFF);
+                /* fall through */
+            case 2:
+                stream.write((value >> 8) & 0xFF);
+                /* fall through */
+            case 1:
+                stream.write(value & 0xFF);
+                break;
+            default:
+                /* nop */
+        }
+    }
+
+    @UsedForTesting
+    static void writeUIntToDictBuffer(final DictBuffer dictBuffer, final int value,
+            final int size) {
+        switch(size) {
+            case 4:
+                dictBuffer.put((byte) ((value >> 24) & 0xFF));
+                /* fall through */
+            case 3:
+                dictBuffer.put((byte) ((value >> 16) & 0xFF));
+                /* fall through */
+            case 2:
+                dictBuffer.put((byte) ((value >> 8) & 0xFF));
+                /* fall through */
+            case 1:
+                dictBuffer.put((byte) (value & 0xFF));
+                break;
+            default:
+                /* nop */
+        }
+    }
+
+    // End utility methods
+
+    // This method is responsible for finding a nice ordering of the nodes that favors run-time
+    // cache performance and dictionary size.
+    /* package for tests */ static ArrayList<PtNodeArray> flattenTree(
+            final PtNodeArray rootNodeArray) {
+        final int treeSize = FusionDictionary.countPtNodes(rootNodeArray);
+        MakedictLog.i("Counted nodes : " + treeSize);
+        final ArrayList<PtNodeArray> flatTree = new ArrayList<>(treeSize);
+        return flattenTreeInner(flatTree, rootNodeArray);
+    }
+
+    private static ArrayList<PtNodeArray> flattenTreeInner(final ArrayList<PtNodeArray> list,
+            final PtNodeArray ptNodeArray) {
+        // Removing the node is necessary if the tails are merged, because we would then
+        // add the same node several times when we only want it once. A number of places in
+        // the code also depends on any node being only once in the list.
+        // Merging tails can only be done if there are no attributes. Searching for attributes
+        // in LatinIME code depends on a total breadth-first ordering, which merging tails
+        // breaks. If there are no attributes, it should be fine (and reduce the file size)
+        // to merge tails, and removing the node from the list would be necessary. However,
+        // we don't merge tails because breaking the breadth-first ordering would result in
+        // extreme overhead at bigram lookup time (it would make the search function O(n) instead
+        // of the current O(log(n)), where n=number of nodes in the dictionary which is pretty
+        // high).
+        // If no nodes are ever merged, we can't have the same node twice in the list, hence
+        // searching for duplicates in unnecessary. It is also very performance consuming,
+        // since `list' is an ArrayList so it's an O(n) operation that runs on all nodes, making
+        // this simple list.remove operation O(n*n) overall. On Android this overhead is very
+        // high.
+        // For future reference, the code to remove duplicate is a simple : list.remove(node);
+        list.add(ptNodeArray);
+        final ArrayList<PtNode> branches = ptNodeArray.mData;
+        for (PtNode ptNode : branches) {
+            if (null != ptNode.mChildren) flattenTreeInner(list, ptNode.mChildren);
+        }
+        return list;
+    }
+
+    /**
+     * Get the offset from a position inside a current node array to a target node array, during
+     * update.
+     *
+     * If the current node array is before the target node array, the target node array has not
+     * been updated yet, so we should return the offset from the old position of the current node
+     * array to the old position of the target node array. If on the other hand the target is
+     * before the current node array, it already has been updated, so we should return the offset
+     * from the new position in the current node array to the new position in the target node
+     * array.
+     *
+     * @param currentNodeArray node array containing the PtNode where the offset will be written
+     * @param offsetFromStartOfCurrentNodeArray offset, in bytes, from the start of currentNodeArray
+     * @param targetNodeArray the target node array to get the offset to
+     * @return the offset to the target node array
+     */
+    private static int getOffsetToTargetNodeArrayDuringUpdate(final PtNodeArray currentNodeArray,
+            final int offsetFromStartOfCurrentNodeArray, final PtNodeArray targetNodeArray) {
+        final boolean isTargetBeforeCurrent = (targetNodeArray.mCachedAddressBeforeUpdate
+                < currentNodeArray.mCachedAddressBeforeUpdate);
+        if (isTargetBeforeCurrent) {
+            return targetNodeArray.mCachedAddressAfterUpdate
+                    - (currentNodeArray.mCachedAddressAfterUpdate
+                            + offsetFromStartOfCurrentNodeArray);
+        } else {
+            return targetNodeArray.mCachedAddressBeforeUpdate
+                    - (currentNodeArray.mCachedAddressBeforeUpdate
+                            + offsetFromStartOfCurrentNodeArray);
+        }
+    }
+
+    /**
+     * Get the offset from a position inside a current node array to a target PtNode, during
+     * update.
+     *
+     * @param currentNodeArray node array containing the PtNode where the offset will be written
+     * @param offsetFromStartOfCurrentNodeArray offset, in bytes, from the start of currentNodeArray
+     * @param targetPtNode the target PtNode to get the offset to
+     * @return the offset to the target PtNode
+     */
+    // TODO: is there any way to factorize this method with the one above?
+    private static int getOffsetToTargetPtNodeDuringUpdate(final PtNodeArray currentNodeArray,
+            final int offsetFromStartOfCurrentNodeArray, final PtNode targetPtNode) {
+        final int oldOffsetBasePoint = currentNodeArray.mCachedAddressBeforeUpdate
+                + offsetFromStartOfCurrentNodeArray;
+        final boolean isTargetBeforeCurrent = (targetPtNode.mCachedAddressBeforeUpdate
+                < oldOffsetBasePoint);
+        // If the target is before the current node array, then its address has already been
+        // updated. We can use the AfterUpdate member, and compare it to our own member after
+        // update. Otherwise, the AfterUpdate member is not updated yet, so we need to use the
+        // BeforeUpdate member, and of course we have to compare this to our own address before
+        // update.
+        if (isTargetBeforeCurrent) {
+            final int newOffsetBasePoint = currentNodeArray.mCachedAddressAfterUpdate
+                    + offsetFromStartOfCurrentNodeArray;
+            return targetPtNode.mCachedAddressAfterUpdate - newOffsetBasePoint;
+        } else {
+            return targetPtNode.mCachedAddressBeforeUpdate - oldOffsetBasePoint;
+        }
+    }
+
+    /**
+     * Computes the actual node array size, based on the cached addresses of the children nodes.
+     *
+     * Each node array stores its tentative address. During dictionary address computing, these
+     * are not final, but they can be used to compute the node array size (the node array size
+     * depends on the address of the children because the number of bytes necessary to store an
+     * address depends on its numeric value. The return value indicates whether the node array
+     * contents (as in, any of the addresses stored in the cache fields) have changed with
+     * respect to their previous value.
+     *
+     * @param ptNodeArray the node array to compute the size of.
+     * @param dict the dictionary in which the word/attributes are to be found.
+     * @return false if none of the cached addresses inside the node array changed, true otherwise.
+     */
+    private static boolean computeActualPtNodeArraySize(final PtNodeArray ptNodeArray,
+            final FusionDictionary dict) {
+        boolean changed = false;
+        int size = getPtNodeCountSize(ptNodeArray);
+        for (PtNode ptNode : ptNodeArray.mData) {
+            ptNode.mCachedAddressAfterUpdate = ptNodeArray.mCachedAddressAfterUpdate + size;
+            if (ptNode.mCachedAddressAfterUpdate != ptNode.mCachedAddressBeforeUpdate) {
+                changed = true;
+            }
+            int nodeSize = getNodeHeaderSize(ptNode);
+            if (ptNode.isTerminal()) {
+                nodeSize += FormatSpec.PTNODE_FREQUENCY_SIZE;
+            }
+            if (null != ptNode.mChildren) {
+                nodeSize += getByteSize(getOffsetToTargetNodeArrayDuringUpdate(ptNodeArray,
+                        nodeSize + size, ptNode.mChildren));
+            }
+            nodeSize += getShortcutListSize(ptNode.mShortcutTargets);
+            if (null != ptNode.mBigrams) {
+                for (WeightedString bigram : ptNode.mBigrams) {
+                    final int offset = getOffsetToTargetPtNodeDuringUpdate(ptNodeArray,
+                            nodeSize + size + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE,
+                            FusionDictionary.findWordInTree(dict.mRootNodeArray, bigram.mWord));
+                    nodeSize += getByteSize(offset) + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE;
+                }
+            }
+            ptNode.mCachedSize = nodeSize;
+            size += nodeSize;
+        }
+        if (ptNodeArray.mCachedSize != size) {
+            ptNodeArray.mCachedSize = size;
+            changed = true;
+        }
+        return changed;
+    }
+
+    /**
+     * Initializes the cached addresses of node arrays and their containing nodes from their size.
+     *
+     * @param flatNodes the list of node arrays.
+     * @return the byte size of the entire stack.
+     */
+    private static int initializePtNodeArraysCachedAddresses(
+            final ArrayList<PtNodeArray> flatNodes) {
+        int nodeArrayOffset = 0;
+        for (final PtNodeArray nodeArray : flatNodes) {
+            nodeArray.mCachedAddressBeforeUpdate = nodeArrayOffset;
+            int nodeCountSize = getPtNodeCountSize(nodeArray);
+            int nodeffset = 0;
+            for (final PtNode ptNode : nodeArray.mData) {
+                ptNode.mCachedAddressBeforeUpdate = ptNode.mCachedAddressAfterUpdate =
+                        nodeCountSize + nodeArrayOffset + nodeffset;
+                nodeffset += ptNode.mCachedSize;
+            }
+            nodeArrayOffset += nodeArray.mCachedSize;
+        }
+        return nodeArrayOffset;
+    }
+
+    /**
+     * Updates the cached addresses of node arrays after recomputing their new positions.
+     *
+     * @param flatNodes the list of node arrays.
+     */
+    private static void updatePtNodeArraysCachedAddresses(final ArrayList<PtNodeArray> flatNodes) {
+        for (final PtNodeArray nodeArray : flatNodes) {
+            nodeArray.mCachedAddressBeforeUpdate = nodeArray.mCachedAddressAfterUpdate;
+            for (final PtNode ptNode : nodeArray.mData) {
+                ptNode.mCachedAddressBeforeUpdate = ptNode.mCachedAddressAfterUpdate;
+            }
+        }
+    }
+
+    /**
+     * Compute the addresses and sizes of an ordered list of PtNode arrays.
+     *
+     * This method takes a list of PtNode arrays and will update their cached address and size
+     * values so that they can be written into a file. It determines the smallest size each of the
+     * PtNode arrays can be given the addresses of its children and attributes, and store that into
+     * each PtNode.
+     * The order of the PtNode is given by the order of the array. This method makes no effort
+     * to find a good order; it only mechanically computes the size this order results in.
+     *
+     * @param dict the dictionary
+     * @param flatNodes the ordered list of PtNode arrays
+     * @return the same array it was passed. The nodes have been updated for address and size.
+     */
+    /* package */ static ArrayList<PtNodeArray> computeAddresses(final FusionDictionary dict,
+            final ArrayList<PtNodeArray> flatNodes) {
+        // First get the worst possible sizes and offsets
+        for (final PtNodeArray n : flatNodes) {
+            calculatePtNodeArrayMaximumSize(n);
+        }
+        final int offset = initializePtNodeArraysCachedAddresses(flatNodes);
+
+        MakedictLog.i("Compressing the array addresses. Original size : " + offset);
+        MakedictLog.i("(Recursively seen size : " + offset + ")");
+
+        int passes = 0;
+        boolean changesDone = false;
+        do {
+            changesDone = false;
+            int ptNodeArrayStartOffset = 0;
+            for (final PtNodeArray ptNodeArray : flatNodes) {
+                ptNodeArray.mCachedAddressAfterUpdate = ptNodeArrayStartOffset;
+                final int oldNodeArraySize = ptNodeArray.mCachedSize;
+                final boolean changed = computeActualPtNodeArraySize(ptNodeArray, dict);
+                final int newNodeArraySize = ptNodeArray.mCachedSize;
+                if (oldNodeArraySize < newNodeArraySize) {
+                    throw new RuntimeException("Increased size ?!");
+                }
+                ptNodeArrayStartOffset += newNodeArraySize;
+                changesDone |= changed;
+            }
+            updatePtNodeArraysCachedAddresses(flatNodes);
+            ++passes;
+            if (passes > MAX_PASSES) throw new RuntimeException("Too many passes - probably a bug");
+        } while (changesDone);
+
+        final PtNodeArray lastPtNodeArray = flatNodes.get(flatNodes.size() - 1);
+        MakedictLog.i("Compression complete in " + passes + " passes.");
+        MakedictLog.i("After address compression : "
+                + (lastPtNodeArray.mCachedAddressAfterUpdate + lastPtNodeArray.mCachedSize));
+
+        return flatNodes;
+    }
+
+    /**
+     * Sanity-checking method.
+     *
+     * This method checks a list of PtNode arrays for juxtaposition, that is, it will do
+     * nothing if each node array's cached address is actually the previous node array's address
+     * plus the previous node's size.
+     * If this is not the case, it will throw an exception.
+     *
+     * @param arrays the list of node arrays to check
+     */
+    /* package */ static void checkFlatPtNodeArrayList(final ArrayList<PtNodeArray> arrays) {
+        int offset = 0;
+        int index = 0;
+        for (final PtNodeArray ptNodeArray : arrays) {
+            // BeforeUpdate and AfterUpdate addresses are the same here, so it does not matter
+            // which we use.
+            if (ptNodeArray.mCachedAddressAfterUpdate != offset) {
+                throw new RuntimeException("Wrong address for node " + index
+                        + " : expected " + offset + ", got " +
+                        ptNodeArray.mCachedAddressAfterUpdate);
+            }
+            ++index;
+            offset += ptNodeArray.mCachedSize;
+        }
+    }
+
+    /**
+     * Helper method to write a children position to a file.
+     *
+     * @param buffer the buffer to write to.
+     * @param index the index in the buffer to write the address to.
+     * @param position the position to write.
+     * @return the size in bytes the address actually took.
+     */
+    /* package */ static int writeChildrenPosition(final byte[] buffer, int index,
+            final int position) {
+        switch (getByteSize(position)) {
+        case 1:
+            buffer[index++] = (byte)position;
+            return 1;
+        case 2:
+            buffer[index++] = (byte)(0xFF & (position >> 8));
+            buffer[index++] = (byte)(0xFF & position);
+            return 2;
+        case 3:
+            buffer[index++] = (byte)(0xFF & (position >> 16));
+            buffer[index++] = (byte)(0xFF & (position >> 8));
+            buffer[index++] = (byte)(0xFF & position);
+            return 3;
+        case 0:
+            return 0;
+        default:
+            throw new RuntimeException("Position " + position + " has a strange size");
+        }
+    }
+
+    /**
+     * Helper method to write a signed children position to a file.
+     *
+     * @param buffer the buffer to write to.
+     * @param index the index in the buffer to write the address to.
+     * @param position the position to write.
+     * @return the size in bytes the address actually took.
+     */
+    /* package */ static int writeSignedChildrenPosition(final byte[] buffer, int index,
+            final int position) {
+        if (!BinaryDictIOUtils.hasChildrenAddress(position)) {
+            buffer[index] = buffer[index + 1] = buffer[index + 2] = 0;
+        } else {
+            final int absPosition = Math.abs(position);
+            buffer[index++] =
+                    (byte)((position < 0 ? FormatSpec.MSB8 : 0) | (0xFF & (absPosition >> 16)));
+            buffer[index++] = (byte)(0xFF & (absPosition >> 8));
+            buffer[index++] = (byte)(0xFF & absPosition);
+        }
+        return 3;
+    }
+
+    /**
+     * Makes the flag value for a PtNode.
+     *
+     * @param hasMultipleChars whether the PtNode has multiple chars.
+     * @param isTerminal whether the PtNode is terminal.
+     * @param childrenAddressSize the size of a children address.
+     * @param hasShortcuts whether the PtNode has shortcuts.
+     * @param hasBigrams whether the PtNode has bigrams.
+     * @param isNotAWord whether the PtNode is not a word.
+     * @param isBlackListEntry whether the PtNode is a blacklist entry.
+     * @return the flags
+     */
+    static int makePtNodeFlags(final boolean hasMultipleChars, final boolean isTerminal,
+            final int childrenAddressSize, final boolean hasShortcuts, final boolean hasBigrams,
+            final boolean isNotAWord, final boolean isBlackListEntry) {
+        byte flags = 0;
+        if (hasMultipleChars) flags |= FormatSpec.FLAG_HAS_MULTIPLE_CHARS;
+        if (isTerminal) flags |= FormatSpec.FLAG_IS_TERMINAL;
+        switch (childrenAddressSize) {
+            case 1:
+                flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE;
+                break;
+            case 2:
+                flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES;
+                break;
+            case 3:
+                flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES;
+                break;
+            case 0:
+                flags |= FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS;
+                break;
+            default:
+                throw new RuntimeException("Node with a strange address");
+        }
+        if (hasShortcuts) flags |= FormatSpec.FLAG_HAS_SHORTCUT_TARGETS;
+        if (hasBigrams) flags |= FormatSpec.FLAG_HAS_BIGRAMS;
+        if (isNotAWord) flags |= FormatSpec.FLAG_IS_NOT_A_WORD;
+        if (isBlackListEntry) flags |= FormatSpec.FLAG_IS_BLACKLISTED;
+        return flags;
+    }
+
+    /* package */ static byte makePtNodeFlags(final PtNode node, final int childrenOffset) {
+        return (byte) makePtNodeFlags(node.mChars.length > 1, node.isTerminal(),
+                getByteSize(childrenOffset),
+                node.mShortcutTargets != null && !node.mShortcutTargets.isEmpty(),
+                node.mBigrams != null && !node.mBigrams.isEmpty(),
+                node.mIsNotAWord, node.mIsBlacklistEntry);
+    }
+
+    /**
+     * Makes the flag value for a bigram.
+     *
+     * @param more whether there are more bigrams after this one.
+     * @param offset the offset of the bigram.
+     * @param bigramFrequency the frequency of the bigram, 0..255.
+     * @param unigramFrequency the unigram frequency of the same word, 0..255.
+     * @param word the second bigram, for debugging purposes
+     * @return the flags
+     */
+    /* package */ static final int makeBigramFlags(final boolean more, final int offset,
+            int bigramFrequency, final int unigramFrequency, final String word) {
+        int bigramFlags = (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
+                + (offset < 0 ? FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE : 0);
+        switch (getByteSize(offset)) {
+        case 1:
+            bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE;
+            break;
+        case 2:
+            bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES;
+            break;
+        case 3:
+            bigramFlags |= FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES;
+            break;
+        default:
+            throw new RuntimeException("Strange offset size");
+        }
+        if (unigramFrequency > bigramFrequency) {
+            MakedictLog.e("Unigram freq is superior to bigram freq for \"" + word
+                    + "\". Bigram freq is " + bigramFrequency + ", unigram freq for "
+                    + word + " is " + unigramFrequency);
+            bigramFrequency = unigramFrequency;
+        }
+        bigramFlags += getBigramFrequencyDiff(unigramFrequency, bigramFrequency)
+                & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY;
+        return bigramFlags;
+    }
+
+    public static int getBigramFrequencyDiff(final int unigramFrequency,
+            final int bigramFrequency) {
+        // We compute the difference between 255 (which means probability = 1) and the
+        // unigram score. We split this into a number of discrete steps.
+        // Now, the steps are numbered 0~15; 0 represents an increase of 1 step while 15
+        // represents an increase of 16 steps: a value of 15 will be interpreted as the median
+        // value of the 16th step. In all justice, if the bigram frequency is low enough to be
+        // rounded below the first step (which means it is less than half a step higher than the
+        // unigram frequency) then the unigram frequency itself is the best approximation of the
+        // bigram freq that we could possibly supply, hence we should *not* include this bigram
+        // in the file at all.
+        // until this is done, we'll write 0 and slightly overestimate this case.
+        // In other words, 0 means "between 0.5 step and 1.5 step", 1 means "between 1.5 step
+        // and 2.5 steps", and 15 means "between 15.5 steps and 16.5 steps". So we want to
+        // divide our range [unigramFreq..MAX_TERMINAL_FREQUENCY] in 16.5 steps to get the
+        // step size. Then we compute the start of the first step (the one where value 0 starts)
+        // by adding half-a-step to the unigramFrequency. From there, we compute the integer
+        // number of steps to the bigramFrequency. One last thing: we want our steps to include
+        // their lower bound and exclude their higher bound so we need to have the first step
+        // start at exactly 1 unit higher than floor(unigramFreq + half a step).
+        // Note : to reconstruct the score, the dictionary reader will need to divide
+        // MAX_TERMINAL_FREQUENCY - unigramFreq by 16.5 likewise to get the value of the step,
+        // and add (discretizedFrequency + 0.5 + 0.5) times this value to get the best
+        // approximation. (0.5 to get the first step start, and 0.5 to get the middle of the
+        // step pointed by the discretized frequency.
+        final float stepSize =
+                (FormatSpec.MAX_TERMINAL_FREQUENCY - unigramFrequency)
+                / (1.5f + FormatSpec.MAX_BIGRAM_FREQUENCY);
+        final float firstStepStart = 1 + unigramFrequency + (stepSize / 2.0f);
+        final int discretizedFrequency = (int)((bigramFrequency - firstStepStart) / stepSize);
+        // If the bigram freq is less than half-a-step higher than the unigram freq, we get -1
+        // here. The best approximation would be the unigram freq itself, so we should not
+        // include this bigram in the dictionary. For now, register as 0, and live with the
+        // small over-estimation that we get in this case. TODO: actually remove this bigram
+        // if discretizedFrequency < 0.
+        return discretizedFrequency > 0 ? discretizedFrequency : 0;
+    }
+
+    /**
+     * Makes the flag value for a shortcut.
+     *
+     * @param more whether there are more attributes after this one.
+     * @param frequency the frequency of the attribute, 0..15
+     * @return the flags
+     */
+    static final int makeShortcutFlags(final boolean more, final int frequency) {
+        return (more ? FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT : 0)
+                + (frequency & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY);
+    }
+
+    /* package */ static final int getChildrenPosition(final PtNode ptNode) {
+        int positionOfChildrenPosField = ptNode.mCachedAddressAfterUpdate
+                + getNodeHeaderSize(ptNode);
+        if (ptNode.isTerminal()) {
+            // A terminal node has the frequency.
+            // If positionOfChildrenPosField is incorrect, we may crash when jumping to the children
+            // position.
+            positionOfChildrenPosField += FormatSpec.PTNODE_FREQUENCY_SIZE;
+        }
+        return null == ptNode.mChildren ? FormatSpec.NO_CHILDREN_ADDRESS
+                : ptNode.mChildren.mCachedAddressAfterUpdate - positionOfChildrenPosField;
+    }
+
+    /**
+     * Write a PtNodeArray. The PtNodeArray is expected to have its final position cached.
+     *
+     * @param dict the dictionary the node array is a part of (for relative offsets).
+     * @param dictEncoder the dictionary encoder.
+     * @param ptNodeArray the node array to write.
+     */
+    @SuppressWarnings("unused")
+    /* package */ static void writePlacedPtNodeArray(final FusionDictionary dict,
+            final DictEncoder dictEncoder, final PtNodeArray ptNodeArray) {
+        // TODO: Make the code in common with BinaryDictIOUtils#writePtNode
+        dictEncoder.setPosition(ptNodeArray.mCachedAddressAfterUpdate);
+
+        final int ptNodeCount = ptNodeArray.mData.size();
+        dictEncoder.writePtNodeCount(ptNodeCount);
+        final int parentPosition =
+                (ptNodeArray.mCachedParentAddress == FormatSpec.NO_PARENT_ADDRESS)
+                ? FormatSpec.NO_PARENT_ADDRESS
+                : ptNodeArray.mCachedParentAddress + ptNodeArray.mCachedAddressAfterUpdate;
+        for (int i = 0; i < ptNodeCount; ++i) {
+            final PtNode ptNode = ptNodeArray.mData.get(i);
+            if (dictEncoder.getPosition() != ptNode.mCachedAddressAfterUpdate) {
+                throw new RuntimeException("Bug: write index is not the same as the cached address "
+                        + "of the node : " + dictEncoder.getPosition() + " <> "
+                        + ptNode.mCachedAddressAfterUpdate);
+            }
+            // Sanity checks.
+            if (DBG && ptNode.getProbability() > FormatSpec.MAX_TERMINAL_FREQUENCY) {
+                throw new RuntimeException("A node has a frequency > "
+                        + FormatSpec.MAX_TERMINAL_FREQUENCY
+                        + " : " + ptNode.mProbabilityInfo.toString());
+            }
+            dictEncoder.writePtNode(ptNode, dict);
+        }
+        if (dictEncoder.getPosition() != ptNodeArray.mCachedAddressAfterUpdate
+                + ptNodeArray.mCachedSize) {
+            throw new RuntimeException("Not the same size : written "
+                     + (dictEncoder.getPosition() - ptNodeArray.mCachedAddressAfterUpdate)
+                     + " bytes from a node that should have " + ptNodeArray.mCachedSize + " bytes");
+        }
+    }
+
+    /**
+     * Dumps a collection of useful statistics about a list of PtNode arrays.
+     *
+     * This prints purely informative stuff, like the total estimated file size, the
+     * number of PtNode arrays, of PtNodes, the repartition of each address size, etc
+     *
+     * @param ptNodeArrays the list of PtNode arrays.
+     */
+    /* package */ static void showStatistics(ArrayList<PtNodeArray> ptNodeArrays) {
+        int firstTerminalAddress = Integer.MAX_VALUE;
+        int lastTerminalAddress = Integer.MIN_VALUE;
+        int size = 0;
+        int ptNodes = 0;
+        int maxNodes = 0;
+        int maxRuns = 0;
+        for (final PtNodeArray ptNodeArray : ptNodeArrays) {
+            if (maxNodes < ptNodeArray.mData.size()) maxNodes = ptNodeArray.mData.size();
+            for (final PtNode ptNode : ptNodeArray.mData) {
+                ++ptNodes;
+                if (ptNode.mChars.length > maxRuns) maxRuns = ptNode.mChars.length;
+                if (ptNode.isTerminal()) {
+                    if (ptNodeArray.mCachedAddressAfterUpdate < firstTerminalAddress)
+                        firstTerminalAddress = ptNodeArray.mCachedAddressAfterUpdate;
+                    if (ptNodeArray.mCachedAddressAfterUpdate > lastTerminalAddress)
+                        lastTerminalAddress = ptNodeArray.mCachedAddressAfterUpdate;
+                }
+            }
+            if (ptNodeArray.mCachedAddressAfterUpdate + ptNodeArray.mCachedSize > size) {
+                size = ptNodeArray.mCachedAddressAfterUpdate + ptNodeArray.mCachedSize;
+            }
+        }
+        final int[] ptNodeCounts = new int[maxNodes + 1];
+        final int[] runCounts = new int[maxRuns + 1];
+        for (final PtNodeArray ptNodeArray : ptNodeArrays) {
+            ++ptNodeCounts[ptNodeArray.mData.size()];
+            for (final PtNode ptNode : ptNodeArray.mData) {
+                ++runCounts[ptNode.mChars.length];
+            }
+        }
+
+        MakedictLog.i("Statistics:\n"
+                + "  total file size " + size + "\n"
+                + "  " + ptNodeArrays.size() + " node arrays\n"
+                + "  " + ptNodes + " PtNodes (" + ((float)ptNodes / ptNodeArrays.size())
+                        + " PtNodes per node)\n"
+                + "  first terminal at " + firstTerminalAddress + "\n"
+                + "  last terminal at " + lastTerminalAddress + "\n"
+                + "  PtNode stats : max = " + maxNodes);
+        for (int i = 0; i < ptNodeCounts.length; ++i) {
+            MakedictLog.i("    " + i + " : " + ptNodeCounts[i]);
+        }
+        MakedictLog.i("  Character run stats : max = " + maxRuns);
+        for (int i = 0; i < runCounts.length; ++i) {
+            MakedictLog.i("    " + i + " : " + runCounts[i]);
+        }
+    }
+
+    /**
+     * Writes a file header to an output stream.
+     *
+     * @param destination the stream to write the file header to.
+     * @param dict the dictionary to write.
+     * @param formatOptions file format options.
+     * @return the size of the header.
+     */
+    /* package */ static int writeDictionaryHeader(final OutputStream destination,
+            final FusionDictionary dict, final FormatOptions formatOptions)
+                    throws IOException, UnsupportedFormatException {
+        final int version = formatOptions.mVersion;
+        if (version < FormatSpec.MINIMUM_SUPPORTED_VERSION
+                || version > FormatSpec.MAXIMUM_SUPPORTED_VERSION) {
+            throw new UnsupportedFormatException("Requested file format version " + version
+                    + ", but this implementation only supports versions "
+                    + FormatSpec.MINIMUM_SUPPORTED_VERSION + " through "
+                    + FormatSpec.MAXIMUM_SUPPORTED_VERSION);
+        }
+
+        ByteArrayOutputStream headerBuffer = new ByteArrayOutputStream(256);
+
+        // The magic number in big-endian order.
+        // Magic number for all versions.
+        headerBuffer.write((byte) (0xFF & (FormatSpec.MAGIC_NUMBER >> 24)));
+        headerBuffer.write((byte) (0xFF & (FormatSpec.MAGIC_NUMBER >> 16)));
+        headerBuffer.write((byte) (0xFF & (FormatSpec.MAGIC_NUMBER >> 8)));
+        headerBuffer.write((byte) (0xFF & FormatSpec.MAGIC_NUMBER));
+        // Dictionary version.
+        headerBuffer.write((byte) (0xFF & (version >> 8)));
+        headerBuffer.write((byte) (0xFF & version));
+
+        // Options flags
+        // TODO: Remove this field.
+        final int options = 0;
+        headerBuffer.write((byte) (0xFF & (options >> 8)));
+        headerBuffer.write((byte) (0xFF & options));
+        final int headerSizeOffset = headerBuffer.size();
+        // Placeholder to be written later with header size.
+        for (int i = 0; i < 4; ++i) {
+            headerBuffer.write(0);
+        }
+        // Write out the options.
+        for (final String key : dict.mOptions.mAttributes.keySet()) {
+            final String value = dict.mOptions.mAttributes.get(key);
+            CharEncoding.writeString(headerBuffer, key);
+            CharEncoding.writeString(headerBuffer, value);
+        }
+        final int size = headerBuffer.size();
+        final byte[] bytes = headerBuffer.toByteArray();
+        // Write out the header size.
+        bytes[headerSizeOffset] = (byte) (0xFF & (size >> 24));
+        bytes[headerSizeOffset + 1] = (byte) (0xFF & (size >> 16));
+        bytes[headerSizeOffset + 2] = (byte) (0xFF & (size >> 8));
+        bytes[headerSizeOffset + 3] = (byte) (0xFF & (size >> 0));
+        destination.write(bytes);
+
+        headerBuffer.close();
+        return size;
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
new file mode 100644
index 0000000..9c3b373
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtils.java
@@ -0,0 +1,306 @@
+/*
+ * 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.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.Stack;
+
+public final class BinaryDictIOUtils {
+    private static final boolean DBG = false;
+
+    private BinaryDictIOUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    /**
+     * Returns new dictionary decoder.
+     *
+     * @param dictFile the dictionary file.
+     * @param bufferType The type of buffer, as one of USE_* in DictDecoder.
+     * @return new dictionary decoder if the dictionary file exists, otherwise null.
+     */
+    public static DictDecoder getDictDecoder(final File dictFile, final long offset,
+            final long length, final int bufferType) {
+        if (dictFile.isDirectory()) {
+            return new Ver4DictDecoder(dictFile, bufferType);
+        } else if (dictFile.isFile()) {
+            return new Ver2DictDecoder(dictFile, offset, length, bufferType);
+        }
+        return null;
+    }
+
+    public static DictDecoder getDictDecoder(final File dictFile, final long offset,
+            final long length, final DictionaryBufferFactory factory) {
+        if (dictFile.isDirectory()) {
+            return new Ver4DictDecoder(dictFile, factory);
+        } else if (dictFile.isFile()) {
+            return new Ver2DictDecoder(dictFile, offset, length, factory);
+        }
+        return null;
+    }
+
+    public static DictDecoder getDictDecoder(final File dictFile, final long offset,
+            final long length) {
+        return getDictDecoder(dictFile, offset, length, DictDecoder.USE_READONLY_BYTEBUFFER);
+    }
+
+    private static final class Position {
+        public static final int NOT_READ_PTNODE_COUNT = -1;
+
+        public int mAddress;
+        public int mNumOfPtNode;
+        public int mPosition;
+        public int mLength;
+
+        public Position(int address, int length) {
+            mAddress = address;
+            mLength = length;
+            mNumOfPtNode = NOT_READ_PTNODE_COUNT;
+        }
+    }
+
+    /**
+     * Retrieves all node arrays without recursive call.
+     */
+    private static void readUnigramsAndBigramsBinaryInner(final DictDecoder dictDecoder,
+            final int bodyOffset, final Map<Integer, String> words,
+            final Map<Integer, Integer> frequencies,
+            final Map<Integer, ArrayList<PendingAttribute>> bigrams) {
+        int[] pushedChars = new int[FormatSpec.MAX_WORD_LENGTH + 1];
+
+        Stack<Position> stack = new Stack<>();
+        int index = 0;
+
+        Position initPos = new Position(bodyOffset, 0);
+        stack.push(initPos);
+
+        while (!stack.empty()) {
+            Position p = stack.peek();
+
+            if (DBG) {
+                MakedictLog.d("read: address=" + p.mAddress + ", numOfPtNode=" +
+                        p.mNumOfPtNode + ", position=" + p.mPosition + ", length=" + p.mLength);
+            }
+
+            if (dictDecoder.getPosition() != p.mAddress) dictDecoder.setPosition(p.mAddress);
+            if (index != p.mLength) index = p.mLength;
+
+            if (p.mNumOfPtNode == Position.NOT_READ_PTNODE_COUNT) {
+                p.mNumOfPtNode = dictDecoder.readPtNodeCount();
+                p.mAddress = dictDecoder.getPosition();
+                p.mPosition = 0;
+            }
+            if (p.mNumOfPtNode == 0) {
+                stack.pop();
+                continue;
+            }
+            final PtNodeInfo ptNodeInfo = dictDecoder.readPtNode(p.mAddress);
+            for (int i = 0; i < ptNodeInfo.mCharacters.length; ++i) {
+                pushedChars[index++] = ptNodeInfo.mCharacters[i];
+            }
+            p.mPosition++;
+            if (ptNodeInfo.isTerminal()) {// found word
+                words.put(ptNodeInfo.mOriginalAddress, new String(pushedChars, 0, index));
+                frequencies.put(
+                        ptNodeInfo.mOriginalAddress, ptNodeInfo.mProbabilityInfo.mProbability);
+                if (ptNodeInfo.mBigrams != null) {
+                    bigrams.put(ptNodeInfo.mOriginalAddress, ptNodeInfo.mBigrams);
+                }
+            }
+
+            if (p.mPosition == p.mNumOfPtNode) {
+                stack.pop();
+            } else {
+                // The PtNode array has more PtNodes.
+                p.mAddress = dictDecoder.getPosition();
+            }
+
+            if (hasChildrenAddress(ptNodeInfo.mChildrenAddress)) {
+                final Position childrenPos = new Position(ptNodeInfo.mChildrenAddress, index);
+                stack.push(childrenPos);
+            }
+        }
+    }
+
+    /**
+     * Reads unigrams and bigrams from the binary file.
+     * Doesn't store a full memory representation of the dictionary.
+     *
+     * @param dictDecoder the dict decoder.
+     * @param words the map to store the address as a key and the word as a value.
+     * @param frequencies the map to store the address as a key and the frequency as a value.
+     * @param bigrams the map to store the address as a key and the list of address as a value.
+     * @throws IOException if the file can't be read.
+     * @throws UnsupportedFormatException if the format of the file is not recognized.
+     */
+    /* package */ static void readUnigramsAndBigramsBinary(final DictDecoder dictDecoder,
+            final Map<Integer, String> words, final Map<Integer, Integer> frequencies,
+            final Map<Integer, ArrayList<PendingAttribute>> bigrams) throws IOException,
+            UnsupportedFormatException {
+        // Read header
+        final DictionaryHeader header = dictDecoder.readHeader();
+        readUnigramsAndBigramsBinaryInner(dictDecoder, header.mBodyOffset, words,
+            frequencies, bigrams);
+    }
+
+    /**
+     * Gets the address of the last PtNode of the exact matching word in the dictionary.
+     * If no match is found, returns NOT_VALID_WORD.
+     *
+     * @param dictDecoder the dict decoder.
+     * @param word the word we search for.
+     * @return the address of the terminal node.
+     * @throws IOException if the file can't be read.
+     * @throws UnsupportedFormatException if the format of the file is not recognized.
+     */
+    @UsedForTesting
+    /* package */ static int getTerminalPosition(final DictDecoder dictDecoder,
+            final String word) throws IOException, UnsupportedFormatException {
+        if (word == null) return FormatSpec.NOT_VALID_WORD;
+        dictDecoder.setPosition(0);
+        dictDecoder.readHeader();
+        int wordPos = 0;
+        final int wordLen = word.codePointCount(0, word.length());
+        for (int depth = 0; depth < Constants.DICTIONARY_MAX_WORD_LENGTH; ++depth) {
+            if (wordPos >= wordLen) return FormatSpec.NOT_VALID_WORD;
+
+            do {
+                final int ptNodeCount = dictDecoder.readPtNodeCount();
+                boolean foundNextPtNode = false;
+                for (int i = 0; i < ptNodeCount; ++i) {
+                    final int ptNodePos = dictDecoder.getPosition();
+                    final PtNodeInfo currentInfo = dictDecoder.readPtNode(ptNodePos);
+                    boolean same = true;
+                    for (int p = 0, j = word.offsetByCodePoints(0, wordPos);
+                            p < currentInfo.mCharacters.length;
+                            ++p, j = word.offsetByCodePoints(j, 1)) {
+                        if (wordPos + p >= wordLen
+                                || word.codePointAt(j) != currentInfo.mCharacters[p]) {
+                            same = false;
+                            break;
+                        }
+                    }
+
+                    if (same) {
+                        // found the PtNode matches the word.
+                        if (wordPos + currentInfo.mCharacters.length == wordLen) {
+                            if (!currentInfo.isTerminal()) {
+                                return FormatSpec.NOT_VALID_WORD;
+                            } else {
+                                return ptNodePos;
+                            }
+                        }
+                        wordPos += currentInfo.mCharacters.length;
+                        if (currentInfo.mChildrenAddress == FormatSpec.NO_CHILDREN_ADDRESS) {
+                            return FormatSpec.NOT_VALID_WORD;
+                        }
+                        foundNextPtNode = true;
+                        dictDecoder.setPosition(currentInfo.mChildrenAddress);
+                        break;
+                    }
+                }
+                if (foundNextPtNode) break;
+                return FormatSpec.NOT_VALID_WORD;
+            } while(true);
+        }
+        return FormatSpec.NOT_VALID_WORD;
+    }
+
+    /**
+     * Writes a PtNodeCount to the stream.
+     *
+     * @param destination the stream to write.
+     * @param ptNodeCount the count.
+     * @return the size written in bytes.
+     */
+    @UsedForTesting
+    static int writePtNodeCount(final OutputStream destination, final int ptNodeCount)
+            throws IOException {
+        final int countSize = BinaryDictIOUtils.getPtNodeCountSize(ptNodeCount);
+        // the count must fit on one byte or two bytes.
+        // Please see comments in FormatSpec.
+        if (countSize != 1 && countSize != 2) {
+            throw new RuntimeException("Strange size from getPtNodeCountSize : " + countSize);
+        }
+        final int encodedPtNodeCount = (countSize == 2) ?
+                (ptNodeCount | FormatSpec.LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG) : ptNodeCount;
+        BinaryDictEncoderUtils.writeUIntToStream(destination, encodedPtNodeCount, countSize);
+        return countSize;
+    }
+
+    /**
+     * Helper method to hide the actual value of the no children address.
+     */
+    public static boolean hasChildrenAddress(final int address) {
+        return FormatSpec.NO_CHILDREN_ADDRESS != address;
+    }
+
+    /**
+     * Compute the binary size of the node count
+     * @param count the node count
+     * @return the size of the node count, either 1 or 2 bytes.
+     */
+    public static int getPtNodeCountSize(final int count) {
+        if (FormatSpec.MAX_PTNODES_FOR_ONE_BYTE_PTNODE_COUNT >= count) {
+            return 1;
+        } else if (FormatSpec.MAX_PTNODES_IN_A_PT_NODE_ARRAY >= count) {
+            return 2;
+        } else {
+            throw new RuntimeException("Can't have more than "
+                    + FormatSpec.MAX_PTNODES_IN_A_PT_NODE_ARRAY + " PtNode in a PtNodeArray (found "
+                    + count + ")");
+        }
+    }
+
+    static int getChildrenAddressSize(final int optionFlags) {
+        switch (optionFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) {
+            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE:
+                return 1;
+            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES:
+                return 2;
+            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES:
+                return 3;
+            case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS:
+            default:
+                return 0;
+        }
+    }
+
+    /**
+     * Calculate bigram frequency from compressed value
+     *
+     * @param unigramFrequency
+     * @param bigramFrequency compressed frequency
+     * @return approximate bigram frequency
+     */
+    @UsedForTesting
+    public static int reconstructBigramFrequency(final int unigramFrequency,
+            final int bigramFrequency) {
+        final float stepSize = (FormatSpec.MAX_TERMINAL_FREQUENCY - unigramFrequency)
+                / (1.5f + FormatSpec.MAX_BIGRAM_FREQUENCY);
+        final float resultFreqFloat = unigramFrequency + stepSize * (bigramFrequency + 1.0f);
+        return (int)resultFreqFloat;
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtilsTests.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtilsTests.java
deleted file mode 100644
index afe5adb..0000000
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOUtilsTests.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * 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.makedict;
-
-import android.test.AndroidTestCase;
-import android.test.MoreAsserts;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.FormatSpec.FileHeader;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Random;
-
-@LargeTest
-public class BinaryDictIOUtilsTests extends AndroidTestCase {
-    private static final String TAG = BinaryDictIOUtilsTests.class.getSimpleName();
-    private static final FormatSpec.FormatOptions FORMAT_OPTIONS =
-            new FormatSpec.FormatOptions(3, true);
-
-    private static final ArrayList<String> sWords = CollectionUtils.newArrayList();
-    public static final int DEFAULT_MAX_UNIGRAMS = 1500;
-    private final int mMaxUnigrams;
-
-    private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
-
-    private static final int VERSION3 = 3;
-    private static final int VERSION4 = 4;
-
-    private static final String[] CHARACTERS = {
-        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
-        "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
-        "\u00FC" /* ü */, "\u00E2" /* â */, "\u00F1" /* ñ */, // accented characters
-        "\u4E9C" /* 亜 */, "\u4F0A" /* 伊 */, "\u5B87" /* 宇 */, // kanji
-        "\uD841\uDE28" /* 𠘨 */, "\uD840\uDC0B" /* 𠀋 */, "\uD861\uDED7" /* 𨛗 */ // surrogate pair
-    };
-
-    public BinaryDictIOUtilsTests() {
-        // 1500 is the default max unigrams
-        this(System.currentTimeMillis(), DEFAULT_MAX_UNIGRAMS);
-    }
-
-    public BinaryDictIOUtilsTests(final long seed, final int maxUnigrams) {
-        super();
-        Log.d(TAG, "Seed for test is " + seed + ", maxUnigrams is " + maxUnigrams);
-        mMaxUnigrams = maxUnigrams;
-        final Random random = new Random(seed);
-        sWords.clear();
-        for (int i = 0; i < maxUnigrams; ++i) {
-            sWords.add(generateWord(random.nextInt()));
-        }
-    }
-
-    // Utilities for test
-    private String generateWord(final int value) {
-        final int lengthOfChars = CHARACTERS.length;
-        StringBuilder builder = new StringBuilder("");
-        long lvalue = Math.abs((long)value);
-        while (lvalue > 0) {
-            builder.append(CHARACTERS[(int)(lvalue % lengthOfChars)]);
-            lvalue /= lengthOfChars;
-        }
-        if (builder.toString().equals("")) return "a";
-        return builder.toString();
-    }
-
-    private static void printPtNode(final PtNodeInfo info) {
-        Log.d(TAG, "    PtNode at " + info.mOriginalAddress);
-        Log.d(TAG, "        flags = " + info.mFlags);
-        Log.d(TAG, "        parentAddress = " + info.mParentAddress);
-        Log.d(TAG, "        characters = " + new String(info.mCharacters, 0,
-                info.mCharacters.length));
-        if (info.mFrequency != -1) Log.d(TAG, "        frequency = " + info.mFrequency);
-        if (info.mChildrenAddress == FormatSpec.NO_CHILDREN_ADDRESS) {
-            Log.d(TAG, "        children address = no children address");
-        } else {
-            Log.d(TAG, "        children address = " + info.mChildrenAddress);
-        }
-        if (info.mShortcutTargets != null) {
-            for (final WeightedString ws : info.mShortcutTargets) {
-                Log.d(TAG, "        shortcuts = " + ws.mWord);
-            }
-        }
-        if (info.mBigrams != null) {
-            for (final PendingAttribute attr : info.mBigrams) {
-                Log.d(TAG, "        bigram = " + attr.mAddress);
-            }
-        }
-        Log.d(TAG, "    end address = " + info.mEndAddress);
-    }
-
-    private static void printNode(final Ver3DictDecoder dictDecoder,
-            final FormatSpec.FormatOptions formatOptions) {
-        final DictBuffer dictBuffer = dictDecoder.getDictBuffer();
-        Log.d(TAG, "Node at " + dictBuffer.position());
-        final int count = BinaryDictDecoderUtils.readPtNodeCount(dictBuffer);
-        Log.d(TAG, "    ptNodeCount = " + count);
-        for (int i = 0; i < count; ++i) {
-            final PtNodeInfo currentInfo = dictDecoder.readPtNode(dictBuffer.position(),
-                    formatOptions);
-            printPtNode(currentInfo);
-        }
-        if (formatOptions.mSupportsDynamicUpdate) {
-            final int forwardLinkAddress = dictBuffer.readUnsignedInt24();
-            Log.d(TAG, "    forwardLinkAddress = " + forwardLinkAddress);
-        }
-    }
-
-    @SuppressWarnings("unused")
-    private static void printBinaryFile(final Ver3DictDecoder dictDecoder)
-            throws IOException, UnsupportedFormatException {
-        final FileHeader fileHeader = dictDecoder.readHeader();
-        final DictBuffer dictBuffer = dictDecoder.getDictBuffer();
-        while (dictBuffer.position() < dictBuffer.limit()) {
-            printNode(dictDecoder, fileHeader.mFormatOptions);
-        }
-    }
-
-    private int getWordPosition(final File file, final String word) {
-        int position = FormatSpec.NOT_VALID_WORD;
-
-        try {
-            final Ver3DictDecoder dictDecoder = new Ver3DictDecoder(file,
-                    DictDecoder.USE_READONLY_BYTEBUFFER);
-            position = dictDecoder.getTerminalPosition(word);
-        } catch (IOException e) {
-        } catch (UnsupportedFormatException e) {
-        }
-        return position;
-    }
-
-    /**
-     * Find a word using the DictDecoder.
-     *
-     * @param dictDecoder the dict decoder
-     * @param word the word searched
-     * @return the found ptNodeInfo
-     * @throws IOException
-     * @throws UnsupportedFormatException
-     */
-    private static PtNodeInfo findWordByBinaryDictReader(final DictDecoder dictDecoder,
-            final String word) throws IOException, UnsupportedFormatException {
-        int position = dictDecoder.getTerminalPosition(word);
-        if (position != FormatSpec.NOT_VALID_WORD) {
-            dictDecoder.setPosition(0);
-            final FileHeader header = dictDecoder.readHeader();
-            dictDecoder.setPosition(position);
-            return dictDecoder.readPtNode(position, header.mFormatOptions);
-        }
-        return null;
-    }
-
-    private PtNodeInfo findWordFromFile(final File file, final String word) {
-        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file);
-        PtNodeInfo info = null;
-        try {
-            dictDecoder.openDictBuffer();
-            info = findWordByBinaryDictReader(dictDecoder, word);
-        } catch (IOException e) {
-        } catch (UnsupportedFormatException e) {
-        }
-        return info;
-    }
-
-    // return amount of time to insert a word
-    private long insertAndCheckWord(final File file, final String word, final int frequency,
-            final boolean exist, final ArrayList<WeightedString> bigrams,
-            final ArrayList<WeightedString> shortcuts, final int formatVersion) {
-        long amountOfTime = -1;
-        try {
-            final DictUpdater dictUpdater;
-            if (formatVersion == VERSION3) {
-                dictUpdater = new Ver3DictUpdater(file, DictDecoder.USE_WRITABLE_BYTEBUFFER);
-            } else {
-                throw new RuntimeException("DictUpdater for version " + formatVersion + " doesn't"
-                        + " exist.");
-            }
-
-            if (!exist) {
-                assertEquals(FormatSpec.NOT_VALID_WORD, getWordPosition(file, word));
-            }
-            final long now = System.nanoTime();
-            dictUpdater.insertWord(word, frequency, bigrams, shortcuts, false, false);
-            amountOfTime = System.nanoTime() - now;
-            MoreAsserts.assertNotEqual(FormatSpec.NOT_VALID_WORD, getWordPosition(file, word));
-        } catch (IOException e) {
-            Log.e(TAG, "Raised an IOException while inserting a word", e);
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "Raised an UnsupportedFormatException error while inserting a word", e);
-        }
-        return amountOfTime;
-    }
-
-    private void deleteWord(final File file, final String word, final int formatVersion) {
-        try {
-            final DictUpdater dictUpdater;
-            if (formatVersion == VERSION3) {
-                dictUpdater = new Ver3DictUpdater(file, DictDecoder.USE_WRITABLE_BYTEBUFFER);
-            } else {
-                throw new RuntimeException("DictUpdater for version " + formatVersion + " doesn't"
-                        + " exist.");
-            }
-            dictUpdater.deleteWord(word);
-        } catch (IOException e) {
-        } catch (UnsupportedFormatException e) {
-        }
-    }
-
-    private void checkReverseLookup(final File file, final String word, final int position) {
-
-        try {
-            final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file);
-            final FileHeader fileHeader = dictDecoder.readHeader();
-            assertEquals(word,
-                    BinaryDictDecoderUtils.getWordAtPosition(dictDecoder, fileHeader.mHeaderSize,
-                            position, fileHeader.mFormatOptions).mWord);
-        } catch (IOException e) {
-            Log.e(TAG, "Raised an IOException while looking up a word", e);
-        } catch (UnsupportedFormatException e) {
-            Log.e(TAG, "Raised an UnsupportedFormatException error while looking up a word", e);
-        }
-    }
-
-    private void runTestInsertWord(final int formatVersion) {
-        File file = null;
-        try {
-            file = File.createTempFile("testInsertWord", TEST_DICT_FILE_EXTENSION,
-                    getContext().getCacheDir());
-        } catch (IOException e) {
-            fail("IOException while creating temporary file: " + e);
-        }
-
-        // set an initial dictionary.
-        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(new HashMap<String,String>(), false, false));
-        dict.add("abcd", 10, null, false);
-
-        try {
-            final DictEncoder dictEncoder = new Ver3DictEncoder(file);
-            dictEncoder.writeDictionary(dict, FORMAT_OPTIONS);
-        } catch (IOException e) {
-            fail("IOException while writing an initial dictionary : " + e);
-        } catch (UnsupportedFormatException e) {
-            fail("UnsupportedFormatException while writing an initial dictionary : " + e);
-        }
-
-        MoreAsserts.assertNotEqual(FormatSpec.NOT_VALID_WORD, getWordPosition(file, "abcd"));
-        insertAndCheckWord(file, "abcde", 10, false, null, null, formatVersion);
-
-        insertAndCheckWord(file, "abcdefghijklmn", 10, false, null, null, formatVersion);
-        checkReverseLookup(file, "abcdefghijklmn", getWordPosition(file, "abcdefghijklmn"));
-
-        insertAndCheckWord(file, "abcdabcd", 10, false, null, null, formatVersion);
-        checkReverseLookup(file, "abcdabcd", getWordPosition(file, "abcdabcd"));
-
-        // update the existing word.
-        insertAndCheckWord(file, "abcdabcd", 15, true, null, null, formatVersion);
-
-        // split 1
-        insertAndCheckWord(file, "ab", 20, false, null, null, formatVersion);
-
-        // split 2
-        insertAndCheckWord(file, "ami", 30, false, null, null, formatVersion);
-
-        deleteWord(file, "ami", formatVersion);
-        assertEquals(FormatSpec.NOT_VALID_WORD, getWordPosition(file, "ami"));
-
-        insertAndCheckWord(file, "abcdabfg", 30, false, null, null, formatVersion);
-
-        deleteWord(file, "abcd", formatVersion);
-        assertEquals(FormatSpec.NOT_VALID_WORD, getWordPosition(file, "abcd"));
-    }
-
-    public void testInsertWord() {
-        runTestInsertWord(VERSION3);
-    }
-
-    private void runTestInsertWordWithBigrams(final int formatVersion) {
-        File file = null;
-        try {
-            file = File.createTempFile("testInsertWordWithBigrams", TEST_DICT_FILE_EXTENSION,
-                    getContext().getCacheDir());
-        } catch (IOException e) {
-            fail("IOException while creating temporary file: " + e);
-        }
-
-        // set an initial dictionary.
-        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(new HashMap<String,String>(), false, false));
-        dict.add("abcd", 10, null, false);
-        dict.add("efgh", 15, null, false);
-
-        try {
-            final DictEncoder dictEncoder = new Ver3DictEncoder(file); 
-            dictEncoder.writeDictionary(dict, FORMAT_OPTIONS);
-        } catch (IOException e) {
-            fail("IOException while writing an initial dictionary : " + e);
-        } catch (UnsupportedFormatException e) {
-            fail("UnsupportedFormatException while writing an initial dictionary : " + e);
-        }
-
-        final ArrayList<WeightedString> banana = new ArrayList<WeightedString>();
-        banana.add(new WeightedString("banana", 10));
-
-        insertAndCheckWord(file, "banana", 0, false, null, null, formatVersion);
-        insertAndCheckWord(file, "recursive", 60, true, banana, null, formatVersion);
-
-        final PtNodeInfo info = findWordFromFile(file, "recursive");
-        int bananaPos = getWordPosition(file, "banana");
-        assertNotNull(info.mBigrams);
-        assertEquals(info.mBigrams.size(), 1);
-        assertEquals(info.mBigrams.get(0).mAddress, bananaPos);
-    }
-
-    public void testInsertWordWithBigrams() {
-        runTestInsertWordWithBigrams(VERSION3);
-    }
-
-    private void runTestRandomWords(final int formatVersion) {
-        File file = null;
-        try {
-            file = File.createTempFile("testRandomWord", TEST_DICT_FILE_EXTENSION,
-                    getContext().getCacheDir());
-        } catch (IOException e) {
-        }
-        assertNotNull(file);
-
-        // set an initial dictionary.
-        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new FusionDictionary.DictionaryOptions(new HashMap<String, String>(), false,
-                        false));
-        dict.add("initial", 10, null, false);
-
-        try {
-            final DictEncoder dictEncoder = new Ver3DictEncoder(file);
-            dictEncoder.writeDictionary(dict, FORMAT_OPTIONS);
-        } catch (IOException e) {
-            assertTrue(false);
-        } catch (UnsupportedFormatException e) {
-            assertTrue(false);
-        }
-
-        long maxTimeToInsert = 0, sum = 0;
-        long minTimeToInsert = 100000000; // 1000000000 is an upper bound for minTimeToInsert.
-        int cnt = 0;
-        for (final String word : sWords) {
-            final long diff = insertAndCheckWord(file, word,
-                    cnt % FormatSpec.MAX_TERMINAL_FREQUENCY, false, null, null, formatVersion);
-            maxTimeToInsert = Math.max(maxTimeToInsert, diff);
-            minTimeToInsert = Math.min(minTimeToInsert, diff);
-            sum += diff;
-            cnt++;
-        }
-        cnt = 0;
-        for (final String word : sWords) {
-            MoreAsserts.assertNotEqual(FormatSpec.NOT_VALID_WORD, getWordPosition(file, word));
-        }
-
-        Log.d(TAG, "Test version " + formatVersion);
-        Log.d(TAG, "max = " + ((double)maxTimeToInsert/1000000) + " ms.");
-        Log.d(TAG, "min = " + ((double)minTimeToInsert/1000000) + " ms.");
-        Log.d(TAG, "avg = " + ((double)sum/mMaxUnigrams/1000000) + " ms.");
-    }
-
-    public void testRandomWords() {
-        runTestRandomWords(VERSION3);
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictUtils.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictUtils.java
new file mode 100644
index 0000000..5a3eba8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictUtils.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
+import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
+
+import java.io.File;
+import java.util.HashMap;
+
+public class BinaryDictUtils {
+    public static final int USE_BYTE_ARRAY = 1;
+    public static final int USE_BYTE_BUFFER = 2;
+
+    public static final String TEST_DICT_FILE_EXTENSION = ".testDict";
+
+    public static final FormatSpec.FormatOptions VERSION2_OPTIONS =
+            new FormatSpec.FormatOptions(FormatSpec.VERSION2);
+    public static final FormatSpec.FormatOptions VERSION4_OPTIONS_WITHOUT_TIMESTAMP =
+            new FormatSpec.FormatOptions(FormatSpec.VERSION4, false /* hasTimestamp */);
+    public static final FormatSpec.FormatOptions VERSION4_OPTIONS_WITH_TIMESTAMP =
+            new FormatSpec.FormatOptions(FormatSpec.VERSION4, true /* hasTimestamp */);
+
+    public static DictionaryOptions makeDictionaryOptions(final String id, final String version,
+            final FormatSpec.FormatOptions formatOptions) {
+        final DictionaryOptions options = new DictionaryOptions(new HashMap<String, String>());
+        options.mAttributes.put(DictionaryHeader.DICTIONARY_LOCALE_KEY, "en_US");
+        options.mAttributes.put(DictionaryHeader.DICTIONARY_ID_KEY, id);
+        options.mAttributes.put(DictionaryHeader.DICTIONARY_VERSION_KEY, version);
+        if (formatOptions.mHasTimestamp) {
+            options.mAttributes.put(DictionaryHeader.HAS_HISTORICAL_INFO_KEY,
+                    DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+            options.mAttributes.put(DictionaryHeader.USES_FORGETTING_CURVE_KEY,
+                    DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+        }
+        return options;
+    }
+
+    public static File getDictFile(final String name, final String version,
+            final FormatOptions formatOptions, final File directory) {
+        if (formatOptions.mVersion == FormatSpec.VERSION2) {
+            return new File(directory, name + "." + version + TEST_DICT_FILE_EXTENSION);
+        } else if (formatOptions.mVersion == FormatSpec.VERSION4) {
+            return new File(directory, name + "." + version);
+        } else {
+            throw new RuntimeException("the format option has a wrong version : "
+                    + formatOptions.mVersion);
+        }
+    }
+
+    public static DictEncoder getDictEncoder(final File file, final FormatOptions formatOptions) {
+        if (formatOptions.mVersion == FormatSpec.VERSION4) {
+            if (!file.isDirectory()) {
+                file.mkdir();
+            }
+            return new Ver4DictEncoder(file);
+        } else if (formatOptions.mVersion == FormatSpec.VERSION2) {
+            return new Ver2DictEncoder(file);
+        } else {
+            throw new RuntimeException("The format option has a wrong version : "
+                    + formatOptions.mVersion);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/DictDecoder.java b/tests/src/com/android/inputmethod/latin/makedict/DictDecoder.java
new file mode 100644
index 0000000..a3b28a7
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/DictDecoder.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
+import com.android.inputmethod.latin.utils.ByteArrayDictBuffer;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.util.ArrayList;
+import java.util.TreeMap;
+
+/**
+ * An interface of binary dictionary decoders.
+ */
+// TODO: Straighten out responsibility for the buffer's file pointer.
+public interface DictDecoder {
+
+    /**
+     * Reads and returns the file header.
+     */
+    public DictionaryHeader readHeader() throws IOException, UnsupportedFormatException;
+
+    /**
+     * Reads PtNode from ptNodePos.
+     * @param ptNodePos the position of PtNode.
+     * @return PtNodeInfo.
+     */
+    public PtNodeInfo readPtNode(final int ptNodePos);
+
+    /**
+     * Reads a buffer and returns the memory representation of the dictionary.
+     *
+     * This high-level method takes a buffer and reads its contents, populating a
+     * FusionDictionary structure.
+     *
+     * @param deleteDictIfBroken a flag indicating whether this method should remove the broken
+     * dictionary or not.
+     * @return the created dictionary.
+     */
+    @UsedForTesting
+    public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
+            throws FileNotFoundException, IOException, UnsupportedFormatException;
+
+    /**
+     * Gets the address of the last PtNode of the exact matching word in the dictionary.
+     * If no match is found, returns NOT_VALID_WORD.
+     *
+     * @param word the word we search for.
+     * @return the address of the terminal node.
+     * @throws IOException if the file can't be read.
+     * @throws UnsupportedFormatException if the format of the file is not recognized.
+     */
+    @UsedForTesting
+    public int getTerminalPosition(final String word)
+            throws IOException, UnsupportedFormatException;
+
+    /**
+     * Reads unigrams and bigrams from the binary file.
+     * Doesn't store a full memory representation of the dictionary.
+     *
+     * @param words the map to store the address as a key and the word as a value.
+     * @param frequencies the map to store the address as a key and the frequency as a value.
+     * @param bigrams the map to store the address as a key and the list of address as a value.
+     * @throws IOException if the file can't be read.
+     * @throws UnsupportedFormatException if the format of the file is not recognized.
+     */
+    @UsedForTesting
+    public void readUnigramsAndBigramsBinary(final TreeMap<Integer, String> words,
+            final TreeMap<Integer, Integer> frequencies,
+            final TreeMap<Integer, ArrayList<PendingAttribute>> bigrams)
+                throws IOException, UnsupportedFormatException;
+
+    /**
+     * Sets the position of the buffer to the given value.
+     *
+     * @param newPos the new position
+     */
+    public void setPosition(final int newPos);
+
+    /**
+     * Gets the position of the buffer.
+     *
+     * @return the position
+     */
+    public int getPosition();
+
+    /**
+     * Reads and returns the PtNode count out of a buffer and forwards the pointer.
+     */
+    public int readPtNodeCount();
+
+    /**
+     * Opens the dictionary file and makes DictBuffer.
+     */
+    @UsedForTesting
+    public void openDictBuffer() throws FileNotFoundException, IOException,
+            UnsupportedFormatException;
+    @UsedForTesting
+    public boolean isDictBufferOpen();
+
+    // Constants for DictionaryBufferFactory.
+    public static final int USE_READONLY_BYTEBUFFER = 0x01000000;
+    public static final int USE_BYTEARRAY = 0x02000000;
+    public static final int USE_WRITABLE_BYTEBUFFER = 0x03000000;
+    public static final int MASK_DICTBUFFER = 0x0F000000;
+
+    public interface DictionaryBufferFactory {
+        public DictBuffer getDictionaryBuffer(final File file)
+                throws FileNotFoundException, IOException;
+    }
+
+    /**
+     * Creates DictionaryBuffer using a ByteBuffer
+     *
+     * This class uses less memory than DictionaryBufferFromByteArrayFactory,
+     * but doesn't perform as fast.
+     * When operating on a big dictionary, this class is preferred.
+     */
+    public static final class DictionaryBufferFromReadOnlyByteBufferFactory
+            implements DictionaryBufferFactory {
+        @Override
+        public DictBuffer getDictionaryBuffer(final File file)
+                throws FileNotFoundException, IOException {
+            FileInputStream inStream = null;
+            ByteBuffer buffer = null;
+            try {
+                inStream = new FileInputStream(file);
+                buffer = inStream.getChannel().map(FileChannel.MapMode.READ_ONLY,
+                        0, file.length());
+            } finally {
+                if (inStream != null) {
+                    inStream.close();
+                }
+            }
+            if (buffer != null) {
+                return new BinaryDictDecoderUtils.ByteBufferDictBuffer(buffer);
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Creates DictionaryBuffer using a byte array
+     *
+     * This class performs faster than other classes, but consumes more memory.
+     * When operating on a small dictionary, this class is preferred.
+     */
+    public static final class DictionaryBufferFromByteArrayFactory
+            implements DictionaryBufferFactory {
+        @Override
+        public DictBuffer getDictionaryBuffer(final File file)
+                throws FileNotFoundException, IOException {
+            FileInputStream inStream = null;
+            try {
+                inStream = new FileInputStream(file);
+                final byte[] array = new byte[(int) file.length()];
+                inStream.read(array);
+                return new ByteArrayDictBuffer(array);
+            } finally {
+                if (inStream != null) {
+                    inStream.close();
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates DictionaryBuffer using a writable ByteBuffer and a RandomAccessFile.
+     *
+     * This class doesn't perform as fast as other classes,
+     * but this class is the only option available for destructive operations (insert or delete)
+     * on a dictionary.
+     */
+    @UsedForTesting
+    public static final class DictionaryBufferFromWritableByteBufferFactory
+            implements DictionaryBufferFactory {
+        @Override
+        public DictBuffer getDictionaryBuffer(final File file)
+                throws FileNotFoundException, IOException {
+            RandomAccessFile raFile = null;
+            ByteBuffer buffer = null;
+            try {
+                raFile = new RandomAccessFile(file, "rw");
+                buffer = raFile.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, file.length());
+            } finally {
+                if (raFile != null) {
+                    raFile.close();
+                }
+            }
+            if (buffer != null) {
+                return new BinaryDictDecoderUtils.ByteBufferDictBuffer(buffer);
+            }
+            return null;
+        }
+    }
+
+    /**
+     * @return whether this decoder has a valid binary dictionary that it can decode.
+     */
+    public boolean hasValidRawBinaryDictionary();
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/DictEncoder.java b/tests/src/com/android/inputmethod/latin/makedict/DictEncoder.java
new file mode 100644
index 0000000..678c5ca
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/DictEncoder.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
+
+import java.io.IOException;
+
+/**
+ * An interface of binary dictionary encoder.
+ */
+public interface DictEncoder {
+    @UsedForTesting
+    public void writeDictionary(final FusionDictionary dict, final FormatOptions formatOptions)
+            throws IOException, UnsupportedFormatException;
+
+    public void setPosition(final int position);
+    public int getPosition();
+    public void writePtNodeCount(final int ptNodeCount);
+    public void writeForwardLinkAddress(final int forwardLinkAddress);
+    public void writePtNode(final PtNode ptNode, final FusionDictionary dict);
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java b/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
new file mode 100644
index 0000000..4a8c178
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/FusionDictionary.java
@@ -0,0 +1,716 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+/**
+ * A dictionary that can fusion heads and tails of words for more compression.
+ */
+@UsedForTesting
+public final class FusionDictionary implements Iterable<WordProperty> {
+    private static final boolean DBG = MakedictLog.DBG;
+
+    private static int CHARACTER_NOT_FOUND_INDEX = -1;
+
+    /**
+     * A node array of the dictionary, containing several PtNodes.
+     *
+     * A PtNodeArray is but an ordered array of PtNodes, which essentially contain all the
+     * real information.
+     * This class also contains fields to cache size and address, to help with binary
+     * generation.
+     */
+    public static final class PtNodeArray {
+        ArrayList<PtNode> mData;
+        // To help with binary generation
+        int mCachedSize = Integer.MIN_VALUE;
+        // mCachedAddressBefore/AfterUpdate are helpers for binary dictionary generation. They
+        // always hold the same value except between dictionary address compression, during which
+        // the update process needs to know about both values at the same time. Updating will
+        // update the AfterUpdate value, and the code will move them to BeforeUpdate before
+        // the next update pass.
+        int mCachedAddressBeforeUpdate = Integer.MIN_VALUE;
+        int mCachedAddressAfterUpdate = Integer.MIN_VALUE;
+        int mCachedParentAddress = 0;
+
+        public PtNodeArray() {
+            mData = new ArrayList<>();
+        }
+        public PtNodeArray(ArrayList<PtNode> data) {
+            Collections.sort(data, PTNODE_COMPARATOR);
+            mData = data;
+        }
+    }
+
+    /**
+     * PtNode is a group of characters, with probability information, shortcut targets, bigrams,
+     * and children (Pt means Patricia Trie).
+     *
+     * This is the central class of the in-memory representation. A PtNode is what can
+     * be seen as a traditional "trie node", except it can hold several characters at the
+     * same time. A PtNode essentially represents one or several characters in the middle
+     * of the trie tree; as such, it can be a terminal, and it can have children.
+     * In this in-memory representation, whether the PtNode is a terminal or not is represented
+     * by mProbabilityInfo. The PtNode is a terminal when the mProbabilityInfo is not null and the
+     * PtNode is not a terminal when the mProbabilityInfo is null. A terminal may have non-null
+     * shortcuts and/or bigrams, but a non-terminal may not. Moreover, children, if present,
+     * are non-null.
+     */
+    public static final class PtNode {
+        private static final int NOT_A_TERMINAL = -1;
+        final int mChars[];
+        ArrayList<WeightedString> mShortcutTargets;
+        ArrayList<WeightedString> mBigrams;
+        // null == mProbabilityInfo indicates this is not a terminal.
+        ProbabilityInfo mProbabilityInfo;
+        int mTerminalId; // NOT_A_TERMINAL == mTerminalId indicates this is not a terminal.
+        PtNodeArray mChildren;
+        boolean mIsNotAWord; // Only a shortcut
+        boolean mIsBlacklistEntry;
+        // mCachedSize and mCachedAddressBefore/AfterUpdate are helpers for binary dictionary
+        // generation. Before and After always hold the same value except during dictionary
+        // address compression, where the update process needs to know about both values at the
+        // same time. Updating will update the AfterUpdate value, and the code will move them
+        // to BeforeUpdate before the next update pass.
+        // The update process does not need two versions of mCachedSize.
+        int mCachedSize; // The size, in bytes, of this PtNode.
+        int mCachedAddressBeforeUpdate; // The address of this PtNode (before update)
+        int mCachedAddressAfterUpdate; // The address of this PtNode (after update)
+
+        public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
+                final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo,
+                final boolean isNotAWord, final boolean isBlacklistEntry) {
+            mChars = chars;
+            mProbabilityInfo = probabilityInfo;
+            mTerminalId = probabilityInfo == null ? NOT_A_TERMINAL : probabilityInfo.mProbability;
+            mShortcutTargets = shortcutTargets;
+            mBigrams = bigrams;
+            mChildren = null;
+            mIsNotAWord = isNotAWord;
+            mIsBlacklistEntry = isBlacklistEntry;
+        }
+
+        public PtNode(final int[] chars, final ArrayList<WeightedString> shortcutTargets,
+                final ArrayList<WeightedString> bigrams, final ProbabilityInfo probabilityInfo,
+                final boolean isNotAWord, final boolean isBlacklistEntry,
+                final PtNodeArray children) {
+            mChars = chars;
+            mProbabilityInfo = probabilityInfo;
+            mShortcutTargets = shortcutTargets;
+            mBigrams = bigrams;
+            mChildren = children;
+            mIsNotAWord = isNotAWord;
+            mIsBlacklistEntry = isBlacklistEntry;
+        }
+
+        public void addChild(PtNode n) {
+            if (null == mChildren) {
+                mChildren = new PtNodeArray();
+            }
+            mChildren.mData.add(n);
+        }
+
+        public int getTerminalId() {
+            return mTerminalId;
+        }
+
+        public boolean isTerminal() {
+            return mProbabilityInfo != null;
+        }
+
+        public int getProbability() {
+            if (isTerminal()) {
+                return mProbabilityInfo.mProbability;
+            } else {
+                return NOT_A_TERMINAL;
+            }
+        }
+
+        public boolean getIsNotAWord() {
+            return mIsNotAWord;
+        }
+
+        public boolean getIsBlacklistEntry() {
+            return mIsBlacklistEntry;
+        }
+
+        public ArrayList<WeightedString> getShortcutTargets() {
+            // We don't want write permission to escape outside the package, so we return a copy
+            if (null == mShortcutTargets) return null;
+            final ArrayList<WeightedString> copyOfShortcutTargets =
+                    new ArrayList<>(mShortcutTargets);
+            return copyOfShortcutTargets;
+        }
+
+        public ArrayList<WeightedString> getBigrams() {
+            // We don't want write permission to escape outside the package, so we return a copy
+            if (null == mBigrams) return null;
+            final ArrayList<WeightedString> copyOfBigrams = new ArrayList<>(mBigrams);
+            return copyOfBigrams;
+        }
+
+        public boolean hasSeveralChars() {
+            assert(mChars.length > 0);
+            return 1 < mChars.length;
+        }
+
+        /**
+         * Adds a word to the bigram list. Updates the probability information if the word already
+         * exists.
+         */
+        public void addBigram(final String word, final ProbabilityInfo probabilityInfo) {
+            if (mBigrams == null) {
+                mBigrams = new ArrayList<>();
+            }
+            WeightedString bigram = getBigram(word);
+            if (bigram != null) {
+                bigram.mProbabilityInfo = probabilityInfo;
+            } else {
+                bigram = new WeightedString(word, probabilityInfo);
+                mBigrams.add(bigram);
+            }
+        }
+
+        /**
+         * Gets the shortcut target for the given word. Returns null if the word is not in the
+         * shortcut list.
+         */
+        public WeightedString getShortcut(final String word) {
+            // TODO: Don't do a linear search
+            if (mShortcutTargets != null) {
+                final int size = mShortcutTargets.size();
+                for (int i = 0; i < size; ++i) {
+                    WeightedString shortcut = mShortcutTargets.get(i);
+                    if (shortcut.mWord.equals(word)) {
+                        return shortcut;
+                    }
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Gets the bigram for the given word.
+         * Returns null if the word is not in the bigrams list.
+         */
+        public WeightedString getBigram(final String word) {
+            // TODO: Don't do a linear search
+            if (mBigrams != null) {
+                final int size = mBigrams.size();
+                for (int i = 0; i < size; ++i) {
+                    WeightedString bigram = mBigrams.get(i);
+                    if (bigram.mWord.equals(word)) {
+                        return bigram;
+                    }
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Updates the PtNode with the given properties. Adds the shortcut and bigram lists to
+         * the existing ones if any. Note: unigram, bigram, and shortcut frequencies are only
+         * updated if they are higher than the existing ones.
+         */
+        private void update(final ProbabilityInfo probabilityInfo,
+                final ArrayList<WeightedString> shortcutTargets,
+                final ArrayList<WeightedString> bigrams,
+                final boolean isNotAWord, final boolean isBlacklistEntry) {
+            mProbabilityInfo = ProbabilityInfo.max(mProbabilityInfo, probabilityInfo);
+            if (shortcutTargets != null) {
+                if (mShortcutTargets == null) {
+                    mShortcutTargets = shortcutTargets;
+                } else {
+                    final int size = shortcutTargets.size();
+                    for (int i = 0; i < size; ++i) {
+                        final WeightedString shortcut = shortcutTargets.get(i);
+                        final WeightedString existingShortcut = getShortcut(shortcut.mWord);
+                        if (existingShortcut == null) {
+                            mShortcutTargets.add(shortcut);
+                        } else {
+                            existingShortcut.mProbabilityInfo = ProbabilityInfo.max(
+                                    existingShortcut.mProbabilityInfo, shortcut.mProbabilityInfo);
+                        }
+                    }
+                }
+            }
+            if (bigrams != null) {
+                if (mBigrams == null) {
+                    mBigrams = bigrams;
+                } else {
+                    final int size = bigrams.size();
+                    for (int i = 0; i < size; ++i) {
+                        final WeightedString bigram = bigrams.get(i);
+                        final WeightedString existingBigram = getBigram(bigram.mWord);
+                        if (existingBigram == null) {
+                            mBigrams.add(bigram);
+                        } else {
+                            existingBigram.mProbabilityInfo = ProbabilityInfo.max(
+                                    existingBigram.mProbabilityInfo, bigram.mProbabilityInfo);
+                        }
+                    }
+                }
+            }
+            mIsNotAWord = isNotAWord;
+            mIsBlacklistEntry = isBlacklistEntry;
+        }
+    }
+
+    public final DictionaryOptions mOptions;
+    public final PtNodeArray mRootNodeArray;
+
+    public FusionDictionary(final PtNodeArray rootNodeArray, final DictionaryOptions options) {
+        mRootNodeArray = rootNodeArray;
+        mOptions = options;
+    }
+
+    public void addOptionAttribute(final String key, final String value) {
+        mOptions.mAttributes.put(key, value);
+    }
+
+    /**
+     * Helper method to convert a String to an int array.
+     */
+    static int[] getCodePoints(final String word) {
+        // TODO: this is a copy-paste of the old contents of StringUtils.toCodePointArray,
+        // which is not visible from the makedict package. Factor this code.
+        final int length = word.length();
+        if (length <= 0) return new int[] {};
+        final char[] characters = word.toCharArray();
+        final int[] codePoints = new int[Character.codePointCount(characters, 0, length)];
+        int codePoint = Character.codePointAt(characters, 0);
+        int dsti = 0;
+        for (int srci = Character.charCount(codePoint);
+                srci < length; srci += Character.charCount(codePoint), ++dsti) {
+            codePoints[dsti] = codePoint;
+            codePoint = Character.codePointAt(characters, srci);
+        }
+        codePoints[dsti] = codePoint;
+        return codePoints;
+    }
+
+    /**
+     * Helper method to add a word as a string.
+     *
+     * This method adds a word to the dictionary with the given frequency. Optional
+     * lists of bigrams and shortcuts can be passed here. For each word inside,
+     * they will be added to the dictionary as necessary.
+     *
+     * @param word the word to add.
+     * @param probabilityInfo probability information of the word.
+     * @param shortcutTargets a list of shortcut targets for this word, or null.
+     * @param isNotAWord true if this should not be considered a word (e.g. shortcut only)
+     */
+    public void add(final String word, final ProbabilityInfo probabilityInfo,
+            final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord) {
+        add(getCodePoints(word), probabilityInfo, shortcutTargets, isNotAWord,
+                false /* isBlacklistEntry */);
+    }
+
+    /**
+     * Helper method to add a blacklist entry as a string.
+     *
+     * @param word the word to add as a blacklist entry.
+     * @param shortcutTargets a list of shortcut targets for this word, or null.
+     * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so)
+     */
+    public void addBlacklistEntry(final String word,
+            final ArrayList<WeightedString> shortcutTargets, final boolean isNotAWord) {
+        add(getCodePoints(word), new ProbabilityInfo(0), shortcutTargets, isNotAWord,
+                true /* isBlacklistEntry */);
+    }
+
+    /**
+     * Sanity check for a PtNode array.
+     *
+     * This method checks that all PtNodes in a node array are ordered as expected.
+     * If they are, nothing happens. If they aren't, an exception is thrown.
+     */
+    private void checkStack(PtNodeArray ptNodeArray) {
+        ArrayList<PtNode> stack = ptNodeArray.mData;
+        int lastValue = -1;
+        for (int i = 0; i < stack.size(); ++i) {
+            int currentValue = stack.get(i).mChars[0];
+            if (currentValue <= lastValue)
+                throw new RuntimeException("Invalid stack");
+            else
+                lastValue = currentValue;
+        }
+    }
+
+    /**
+     * Helper method to add a new bigram to the dictionary.
+     *
+     * @param word0 the previous word of the context
+     * @param word1 the next word of the context
+     * @param probabilityInfo the bigram probability info
+     */
+    public void setBigram(final String word0, final String word1,
+            final ProbabilityInfo probabilityInfo) {
+        PtNode ptNode0 = findWordInTree(mRootNodeArray, word0);
+        if (ptNode0 != null) {
+            final PtNode ptNode1 = findWordInTree(mRootNodeArray, word1);
+            if (ptNode1 == null) {
+                add(getCodePoints(word1), new ProbabilityInfo(0), null, false /* isNotAWord */,
+                        false /* isBlacklistEntry */);
+                // The PtNode for the first word may have moved by the above insertion,
+                // if word1 and word2 share a common stem that happens not to have been
+                // a cutting point until now. In this case, we need to refresh ptNode.
+                ptNode0 = findWordInTree(mRootNodeArray, word0);
+            }
+            ptNode0.addBigram(word1, probabilityInfo);
+        } else {
+            throw new RuntimeException("First word of bigram not found " + word0);
+        }
+    }
+
+    /**
+     * Add a word to this dictionary.
+     *
+     * The shortcuts, if any, have to be in the dictionary already. If they aren't,
+     * an exception is thrown.
+     *
+     * @param word the word, as an int array.
+     * @param probabilityInfo the probability information of the word.
+     * @param shortcutTargets an optional list of shortcut targets for this word (null if none).
+     * @param isNotAWord true if this is not a word for spellcheking purposes (shortcut only or so)
+     * @param isBlacklistEntry true if this is a blacklisted word, false otherwise
+     */
+    private void add(final int[] word, final ProbabilityInfo probabilityInfo,
+            final ArrayList<WeightedString> shortcutTargets,
+            final boolean isNotAWord, final boolean isBlacklistEntry) {
+        assert(probabilityInfo.mProbability <= FormatSpec.MAX_TERMINAL_FREQUENCY);
+        if (word.length >= Constants.DICTIONARY_MAX_WORD_LENGTH) {
+            MakedictLog.w("Ignoring a word that is too long: word.length = " + word.length);
+            return;
+        }
+
+        PtNodeArray currentNodeArray = mRootNodeArray;
+        int charIndex = 0;
+
+        PtNode currentPtNode = null;
+        int differentCharIndex = 0; // Set by the loop to the index of the char that differs
+        int nodeIndex = findIndexOfChar(mRootNodeArray, word[charIndex]);
+        while (CHARACTER_NOT_FOUND_INDEX != nodeIndex) {
+            currentPtNode = currentNodeArray.mData.get(nodeIndex);
+            differentCharIndex = compareCharArrays(currentPtNode.mChars, word, charIndex);
+            if (ARRAYS_ARE_EQUAL != differentCharIndex
+                    && differentCharIndex < currentPtNode.mChars.length) break;
+            if (null == currentPtNode.mChildren) break;
+            charIndex += currentPtNode.mChars.length;
+            if (charIndex >= word.length) break;
+            currentNodeArray = currentPtNode.mChildren;
+            nodeIndex = findIndexOfChar(currentNodeArray, word[charIndex]);
+        }
+
+        if (CHARACTER_NOT_FOUND_INDEX == nodeIndex) {
+            // No node at this point to accept the word. Create one.
+            final int insertionIndex = findInsertionIndex(currentNodeArray, word[charIndex]);
+            final PtNode newPtNode = new PtNode(Arrays.copyOfRange(word, charIndex, word.length),
+                    shortcutTargets, null /* bigrams */, probabilityInfo, isNotAWord,
+                    isBlacklistEntry);
+            currentNodeArray.mData.add(insertionIndex, newPtNode);
+            if (DBG) checkStack(currentNodeArray);
+        } else {
+            // There is a word with a common prefix.
+            if (differentCharIndex == currentPtNode.mChars.length) {
+                if (charIndex + differentCharIndex >= word.length) {
+                    // The new word is a prefix of an existing word, but the node on which it
+                    // should end already exists as is. Since the old PtNode was not a terminal,
+                    // make it one by filling in its frequency and other attributes
+                    currentPtNode.update(probabilityInfo, shortcutTargets, null, isNotAWord,
+                            isBlacklistEntry);
+                } else {
+                    // The new word matches the full old word and extends past it.
+                    // We only have to create a new node and add it to the end of this.
+                    final PtNode newNode = new PtNode(
+                            Arrays.copyOfRange(word, charIndex + differentCharIndex, word.length),
+                                    shortcutTargets, null /* bigrams */, probabilityInfo,
+                                    isNotAWord, isBlacklistEntry);
+                    currentPtNode.mChildren = new PtNodeArray();
+                    currentPtNode.mChildren.mData.add(newNode);
+                }
+            } else {
+                if (0 == differentCharIndex) {
+                    // Exact same word. Update the frequency if higher. This will also add the
+                    // new shortcuts to the existing shortcut list if it already exists.
+                    currentPtNode.update(probabilityInfo, shortcutTargets, null,
+                            currentPtNode.mIsNotAWord && isNotAWord,
+                            currentPtNode.mIsBlacklistEntry || isBlacklistEntry);
+                } else {
+                    // Partial prefix match only. We have to replace the current node with a node
+                    // containing the current prefix and create two new ones for the tails.
+                    PtNodeArray newChildren = new PtNodeArray();
+                    final PtNode newOldWord = new PtNode(
+                            Arrays.copyOfRange(currentPtNode.mChars, differentCharIndex,
+                                    currentPtNode.mChars.length), currentPtNode.mShortcutTargets,
+                            currentPtNode.mBigrams, currentPtNode.mProbabilityInfo,
+                            currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry,
+                            currentPtNode.mChildren);
+                    newChildren.mData.add(newOldWord);
+
+                    final PtNode newParent;
+                    if (charIndex + differentCharIndex >= word.length) {
+                        newParent = new PtNode(
+                                Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
+                                shortcutTargets, null /* bigrams */, probabilityInfo,
+                                isNotAWord, isBlacklistEntry, newChildren);
+                    } else {
+                        newParent = new PtNode(
+                                Arrays.copyOfRange(currentPtNode.mChars, 0, differentCharIndex),
+                                null /* shortcutTargets */, null /* bigrams */,
+                                null /* probabilityInfo */, false /* isNotAWord */,
+                                false /* isBlacklistEntry */, newChildren);
+                        final PtNode newWord = new PtNode(Arrays.copyOfRange(word,
+                                charIndex + differentCharIndex, word.length),
+                                shortcutTargets, null /* bigrams */, probabilityInfo,
+                                isNotAWord, isBlacklistEntry);
+                        final int addIndex = word[charIndex + differentCharIndex]
+                                > currentPtNode.mChars[differentCharIndex] ? 1 : 0;
+                        newChildren.mData.add(addIndex, newWord);
+                    }
+                    currentNodeArray.mData.set(nodeIndex, newParent);
+                }
+                if (DBG) checkStack(currentNodeArray);
+            }
+        }
+    }
+
+    private static int ARRAYS_ARE_EQUAL = 0;
+
+    /**
+     * Custom comparison of two int arrays taken to contain character codes.
+     *
+     * This method compares the two arrays passed as an argument in a lexicographic way,
+     * with an offset in the dst string.
+     * This method does NOT test for the first character. It is taken to be equal.
+     * I repeat: this method starts the comparison at 1 <> dstOffset + 1.
+     * The index where the strings differ is returned. ARRAYS_ARE_EQUAL = 0 is returned if the
+     * strings are equal. This works BECAUSE we don't look at the first character.
+     *
+     * @param src the left-hand side string of the comparison.
+     * @param dst the right-hand side string of the comparison.
+     * @param dstOffset the offset in the right-hand side string.
+     * @return the index at which the strings differ, or ARRAYS_ARE_EQUAL = 0 if they don't.
+     */
+    private static int compareCharArrays(final int[] src, final int[] dst, int dstOffset) {
+        // We do NOT test the first char, because we come from a method that already
+        // tested it.
+        for (int i = 1; i < src.length; ++i) {
+            if (dstOffset + i >= dst.length) return i;
+            if (src[i] != dst[dstOffset + i]) return i;
+        }
+        if (dst.length > src.length) return src.length;
+        return ARRAYS_ARE_EQUAL;
+    }
+
+    /**
+     * Helper class that compares and sorts two PtNodes according to their
+     * first element only. I repeat: ONLY the first element is considered, the rest
+     * is ignored.
+     * This comparator imposes orderings that are inconsistent with equals.
+     */
+    static private final class PtNodeComparator implements java.util.Comparator<PtNode> {
+        @Override
+        public int compare(PtNode p1, PtNode p2) {
+            if (p1.mChars[0] == p2.mChars[0]) return 0;
+            return p1.mChars[0] < p2.mChars[0] ? -1 : 1;
+        }
+    }
+    final static private PtNodeComparator PTNODE_COMPARATOR = new PtNodeComparator();
+
+    /**
+     * Finds the insertion index of a character within a node array.
+     */
+    private static int findInsertionIndex(final PtNodeArray nodeArray, int character) {
+        final ArrayList<PtNode> data = nodeArray.mData;
+        final PtNode reference = new PtNode(new int[] { character },
+                null /* shortcutTargets */, null /* bigrams */, null /* probabilityInfo */,
+                false /* isNotAWord */, false /* isBlacklistEntry */);
+        int result = Collections.binarySearch(data, reference, PTNODE_COMPARATOR);
+        return result >= 0 ? result : -result - 1;
+    }
+
+    /**
+     * Find the index of a char in a node array, if it exists.
+     *
+     * @param nodeArray the node array to search in.
+     * @param character the character to search for.
+     * @return the position of the character if it's there, or CHARACTER_NOT_FOUND_INDEX = -1 else.
+     */
+    private static int findIndexOfChar(final PtNodeArray nodeArray, int character) {
+        final int insertionIndex = findInsertionIndex(nodeArray, character);
+        if (nodeArray.mData.size() <= insertionIndex) return CHARACTER_NOT_FOUND_INDEX;
+        return character == nodeArray.mData.get(insertionIndex).mChars[0] ? insertionIndex
+                : CHARACTER_NOT_FOUND_INDEX;
+    }
+
+    /**
+     * Helper method to find a word in a given branch.
+     */
+    public static PtNode findWordInTree(PtNodeArray nodeArray, final String string) {
+        int index = 0;
+        final StringBuilder checker = DBG ? new StringBuilder() : null;
+        final int[] codePoints = getCodePoints(string);
+
+        PtNode currentPtNode;
+        do {
+            int indexOfGroup = findIndexOfChar(nodeArray, codePoints[index]);
+            if (CHARACTER_NOT_FOUND_INDEX == indexOfGroup) return null;
+            currentPtNode = nodeArray.mData.get(indexOfGroup);
+
+            if (codePoints.length - index < currentPtNode.mChars.length) return null;
+            int newIndex = index;
+            while (newIndex < codePoints.length && newIndex - index < currentPtNode.mChars.length) {
+                if (currentPtNode.mChars[newIndex - index] != codePoints[newIndex]) return null;
+                newIndex++;
+            }
+            index = newIndex;
+
+            if (DBG) {
+                checker.append(new String(currentPtNode.mChars, 0, currentPtNode.mChars.length));
+            }
+            if (index < codePoints.length) {
+                nodeArray = currentPtNode.mChildren;
+            }
+        } while (null != nodeArray && index < codePoints.length);
+
+        if (index < codePoints.length) return null;
+        if (!currentPtNode.isTerminal()) return null;
+        if (DBG && !string.equals(checker.toString())) return null;
+        return currentPtNode;
+    }
+
+    /**
+     * Helper method to find out whether a word is in the dict or not.
+     */
+    public boolean hasWord(final String s) {
+        if (null == s || "".equals(s)) {
+            throw new RuntimeException("Can't search for a null or empty string");
+        }
+        return null != findWordInTree(mRootNodeArray, s);
+    }
+
+    /**
+     * Recursively count the number of PtNodes in a given branch of the trie.
+     *
+     * @param nodeArray the parent node.
+     * @return the number of PtNodes in all the branch under this node.
+     */
+    public static int countPtNodes(final PtNodeArray nodeArray) {
+        final int nodeSize = nodeArray.mData.size();
+        int size = nodeSize;
+        for (int i = nodeSize - 1; i >= 0; --i) {
+            PtNode ptNode = nodeArray.mData.get(i);
+            if (null != ptNode.mChildren)
+                size += countPtNodes(ptNode.mChildren);
+        }
+        return size;
+    }
+
+    /**
+     * Iterator to walk through a dictionary.
+     *
+     * This is purely for convenience.
+     */
+    public static final class DictionaryIterator implements Iterator<WordProperty> {
+        private static final class Position {
+            public Iterator<PtNode> pos;
+            public int length;
+            public Position(ArrayList<PtNode> ptNodes) {
+                pos = ptNodes.iterator();
+                length = 0;
+            }
+        }
+        final StringBuilder mCurrentString;
+        final LinkedList<Position> mPositions;
+
+        public DictionaryIterator(ArrayList<PtNode> ptRoot) {
+            mCurrentString = new StringBuilder();
+            mPositions = new LinkedList<>();
+            final Position rootPos = new Position(ptRoot);
+            mPositions.add(rootPos);
+        }
+
+        @Override
+        public boolean hasNext() {
+            for (Position p : mPositions) {
+                if (p.pos.hasNext()) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public WordProperty next() {
+            Position currentPos = mPositions.getLast();
+            mCurrentString.setLength(currentPos.length);
+
+            do {
+                if (currentPos.pos.hasNext()) {
+                    final PtNode currentPtNode = currentPos.pos.next();
+                    currentPos.length = mCurrentString.length();
+                    for (int i : currentPtNode.mChars) {
+                        mCurrentString.append(Character.toChars(i));
+                    }
+                    if (null != currentPtNode.mChildren) {
+                        currentPos = new Position(currentPtNode.mChildren.mData);
+                        currentPos.length = mCurrentString.length();
+                        mPositions.addLast(currentPos);
+                    }
+                    if (currentPtNode.isTerminal()) {
+                        return new WordProperty(mCurrentString.toString(),
+                                currentPtNode.mProbabilityInfo,
+                                currentPtNode.mShortcutTargets, currentPtNode.mBigrams,
+                                currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry);
+                    }
+                } else {
+                    mPositions.removeLast();
+                    currentPos = mPositions.getLast();
+                    mCurrentString.setLength(mPositions.getLast().length);
+                }
+            } while (true);
+        }
+
+        @Override
+        public void remove() {
+            throw new UnsupportedOperationException("Unsupported yet");
+        }
+
+    }
+
+    /**
+     * Method to return an iterator.
+     *
+     * This method enables Java's enhanced for loop. With this you can have a FusionDictionary x
+     * and say : for (Word w : x) {}
+     */
+    @Override
+    public Iterator<WordProperty> iterator() {
+        return new DictionaryIterator(mRootNodeArray.mData);
+    }
+}
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/makedict/MakedictLog.java b/tests/src/com/android/inputmethod/latin/makedict/MakedictLog.java
similarity index 100%
rename from tools/dicttool/src/com/android/inputmethod/latin/makedict/MakedictLog.java
rename to tests/src/com/android/inputmethod/latin/makedict/MakedictLog.java
diff --git a/java/src/com/android/inputmethod/latin/makedict/PendingAttribute.java b/tests/src/com/android/inputmethod/latin/makedict/PendingAttribute.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/makedict/PendingAttribute.java
rename to tests/src/com/android/inputmethod/latin/makedict/PendingAttribute.java
diff --git a/tests/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java b/tests/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java
new file mode 100644
index 0000000..862e8c1
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/PtNodeInfo.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import java.util.ArrayList;
+
+/**
+ * Raw PtNode info straight out of a file. This will contain numbers for addresses.
+ */
+public final class PtNodeInfo {
+    public final int mOriginalAddress;
+    public final int mEndAddress;
+    public final int mFlags;
+    public final int[] mCharacters;
+    public final ProbabilityInfo mProbabilityInfo;
+    public final int mChildrenAddress;
+    public final ArrayList<WeightedString> mShortcutTargets;
+    public final ArrayList<PendingAttribute> mBigrams;
+
+    public PtNodeInfo(final int originalAddress, final int endAddress, final int flags,
+            final int[] characters, final ProbabilityInfo probabilityInfo,
+            final int childrenAddress, final ArrayList<WeightedString> shortcutTargets,
+            final ArrayList<PendingAttribute> bigrams) {
+        mOriginalAddress = originalAddress;
+        mEndAddress = endAddress;
+        mFlags = flags;
+        mCharacters = characters;
+        mProbabilityInfo = probabilityInfo;
+        mChildrenAddress = childrenAddress;
+        mShortcutTargets = shortcutTargets;
+        mBigrams = bigrams;
+    }
+
+    public boolean isTerminal() {
+        return mProbabilityInfo != null;
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/SparseTableTests.java b/tests/src/com/android/inputmethod/latin/makedict/SparseTableTests.java
deleted file mode 100644
index aeb8552..0000000
--- a/tests/src/com/android/inputmethod/latin/makedict/SparseTableTests.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Random;
-
-/**
- * Unit tests for SparseTable.
- */
-@LargeTest
-public class SparseTableTests extends AndroidTestCase {
-    private static final String TAG = SparseTableTests.class.getSimpleName();
-
-    private final Random mRandom;
-    private final ArrayList<Integer> mRandomIndex;
-
-    private static final int DEFAULT_SIZE = 10000;
-    private static final int BLOCK_SIZE = 8;
-
-    public SparseTableTests() {
-        this(System.currentTimeMillis(), DEFAULT_SIZE);
-    }
-
-    public SparseTableTests(final long seed, final int tableSize) {
-        super();
-        Log.d(TAG, "Seed for test is " + seed + ", size is " + tableSize);
-        mRandom = new Random(seed);
-        mRandomIndex = new ArrayList<Integer>(tableSize);
-        for (int i = 0; i < tableSize; ++i) {
-            mRandomIndex.add(SparseTable.NOT_EXIST);
-        }
-    }
-
-    public void testSet() {
-        final SparseTable table = new SparseTable(16, BLOCK_SIZE, 1);
-        table.set(0, 3, 6);
-        table.set(0, 8, 16);
-        for (int i = 0; i < 16; ++i) {
-            if (i == 3 || i == 8) {
-                assertEquals(i * 2, table.get(0, i));
-            } else {
-                assertEquals(SparseTable.NOT_EXIST, table.get(0, i));
-            }
-        }
-    }
-
-    private void generateRandomIndex(final int size, final int prop) {
-        for (int i = 0; i < size; ++i) {
-            if (mRandom.nextInt(100) < prop) {
-                mRandomIndex.set(i, mRandom.nextInt());
-            } else {
-                mRandomIndex.set(i, SparseTable.NOT_EXIST);
-            }
-        }
-    }
-
-    private void runTestRandomSet() {
-        final SparseTable table = new SparseTable(DEFAULT_SIZE, BLOCK_SIZE, 1);
-        int elementCount = 0;
-        for (int i = 0; i < DEFAULT_SIZE; ++i) {
-            if (mRandomIndex.get(i) != SparseTable.NOT_EXIST) {
-                table.set(0, i, mRandomIndex.get(i));
-                elementCount++;
-            }
-        }
-
-        Log.d(TAG, "table size = " + table.getLookupTableSize() + " + "
-              + table.getContentTableSize());
-        Log.d(TAG, "the table has " + elementCount + " elements");
-        for (int i = 0; i < DEFAULT_SIZE; ++i) {
-            assertEquals(table.get(0, i), (int)mRandomIndex.get(i));
-        }
-
-        // flush and reload
-        OutputStream lookupOutStream = null;
-        OutputStream contentOutStream = null;
-        try {
-            final File lookupIndexFile = File.createTempFile("testRandomSet", ".small");
-            final File contentFile = File.createTempFile("testRandomSet", ".big");
-            lookupOutStream = new FileOutputStream(lookupIndexFile);
-            contentOutStream = new FileOutputStream(contentFile);
-            table.write(lookupOutStream, new OutputStream[] { contentOutStream });
-            lookupOutStream.flush();
-            contentOutStream.flush();
-            final SparseTable newTable = SparseTable.readFromFiles(lookupIndexFile,
-                    new File[] { contentFile }, BLOCK_SIZE);
-            for (int i = 0; i < DEFAULT_SIZE; ++i) {
-                assertEquals(table.get(0, i), newTable.get(0, i));
-            }
-        } catch (IOException e) {
-            Log.d(TAG, "IOException while flushing and realoding", e);
-        } finally {
-            if (lookupOutStream != null) {
-                try {
-                    lookupOutStream.close();
-                } catch (IOException e) {
-                    Log.d(TAG, "IOException while closing the stream", e);
-                }
-            }
-            if (contentOutStream != null) {
-                try {
-                    contentOutStream.close();
-                } catch (IOException e) {
-                    Log.d(TAG, "IOException while closing contentStream.", e);
-                }
-            }
-        }
-    }
-
-    public void testRandomSet() {
-        for (int i = 0; i <= 100; i += 10) {
-            generateRandomIndex(DEFAULT_SIZE, i);
-            runTestRandomSet();
-        }
-    }
-
-    public void testMultipleContents() {
-        final int numOfContents = 5;
-        generateRandomIndex(DEFAULT_SIZE, 20);
-        final SparseTable table = new SparseTable(DEFAULT_SIZE, BLOCK_SIZE, numOfContents);
-        for (int i = 0; i < mRandomIndex.size(); ++i) {
-            if (mRandomIndex.get(i) != SparseTable.NOT_EXIST) {
-                for (int j = 0; j < numOfContents; ++j) {
-                    table.set(j, i, mRandomIndex.get(i));
-                }
-            }
-        }
-
-        OutputStream lookupOutStream = null;
-        OutputStream[] contentsOutStream = new OutputStream[numOfContents];
-        try {
-            final File lookupIndexFile = File.createTempFile("testMultipleContents", "small");
-            lookupOutStream = new FileOutputStream(lookupIndexFile);
-            final File[] contentFiles = new File[numOfContents];
-            for (int i = 0; i < numOfContents; ++i) {
-                contentFiles[i] = File.createTempFile("testMultipleContents", "big" + i);
-                contentsOutStream[i] = new FileOutputStream(contentFiles[i]);
-            }
-            table.write(lookupOutStream, contentsOutStream);
-            lookupOutStream.flush();
-            for (int i = 0; i < numOfContents; ++i) {
-                contentsOutStream[i].flush();
-            }
-            final SparseTable newTable = SparseTable.readFromFiles(lookupIndexFile, contentFiles,
-                    BLOCK_SIZE);
-            for (int i = 0; i < numOfContents; ++i) {
-                for (int j = 0; j < DEFAULT_SIZE; ++j) {
-                    assertEquals(table.get(i, j), newTable.get(i, j));
-                }
-            }
-        } catch (IOException e) {
-            Log.d(TAG, "IOException while flushing and reloading", e);
-        } finally {
-            if (lookupOutStream != null) {
-                try {
-                    lookupOutStream.close();
-                } catch (IOException e) {
-                    Log.d(TAG, "IOException while closing the stream", e);
-                }
-            }
-            for (int i = 0; i < numOfContents; ++i) {
-                if (contentsOutStream[i] != null) {
-                    try {
-                        contentsOutStream[i].close();
-                    } catch (IOException e) {
-                        Log.d(TAG, "IOException while closing the stream.", e);
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java b/tests/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java
new file mode 100644
index 0000000..65b84d5
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver2DictDecoder.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * An implementation of DictDecoder for version 2 binary dictionary.
+ */
+// TODO: Separate logics that are used only for testing.
+@UsedForTesting
+public class Ver2DictDecoder extends AbstractDictDecoder {
+    /**
+     * A utility class for reading a PtNode.
+     */
+    protected static class PtNodeReader {
+        private static ProbabilityInfo readProbabilityInfo(final DictBuffer dictBuffer) {
+            // Ver2 dicts don't contain historical information.
+            return new ProbabilityInfo(dictBuffer.readUnsignedByte());
+        }
+
+        protected static int readPtNodeOptionFlags(final DictBuffer dictBuffer) {
+            return dictBuffer.readUnsignedByte();
+        }
+
+        protected static int readChildrenAddress(final DictBuffer dictBuffer,
+                final int ptNodeFlags) {
+            switch (ptNodeFlags & FormatSpec.MASK_CHILDREN_ADDRESS_TYPE) {
+                case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_ONEBYTE:
+                    return dictBuffer.readUnsignedByte();
+                case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_TWOBYTES:
+                    return dictBuffer.readUnsignedShort();
+                case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_THREEBYTES:
+                    return dictBuffer.readUnsignedInt24();
+                case FormatSpec.FLAG_CHILDREN_ADDRESS_TYPE_NOADDRESS:
+                default:
+                    return FormatSpec.NO_CHILDREN_ADDRESS;
+            }
+        }
+
+        // Reads shortcuts and returns the read length.
+        protected static int readShortcut(final DictBuffer dictBuffer,
+                final ArrayList<WeightedString> shortcutTargets) {
+            final int pointerBefore = dictBuffer.position();
+            dictBuffer.readUnsignedShort(); // skip the size
+            while (true) {
+                final int targetFlags = dictBuffer.readUnsignedByte();
+                final String word = CharEncoding.readString(dictBuffer);
+                shortcutTargets.add(new WeightedString(word,
+                        targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY));
+                if (0 == (targetFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break;
+            }
+            return dictBuffer.position() - pointerBefore;
+        }
+
+        protected static int readBigramAddresses(final DictBuffer dictBuffer,
+                final ArrayList<PendingAttribute> bigrams, final int baseAddress) {
+            int readLength = 0;
+            int bigramCount = 0;
+            while (bigramCount++ < FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
+                final int bigramFlags = dictBuffer.readUnsignedByte();
+                ++readLength;
+                final int sign = 0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_ATTR_OFFSET_NEGATIVE)
+                        ? 1 : -1;
+                int bigramAddress = baseAddress + readLength;
+                switch (bigramFlags & FormatSpec.MASK_BIGRAM_ATTR_ADDRESS_TYPE) {
+                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_ONEBYTE:
+                        bigramAddress += sign * dictBuffer.readUnsignedByte();
+                        readLength += 1;
+                        break;
+                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_TWOBYTES:
+                        bigramAddress += sign * dictBuffer.readUnsignedShort();
+                        readLength += 2;
+                        break;
+                    case FormatSpec.FLAG_BIGRAM_ATTR_ADDRESS_TYPE_THREEBYTES:
+                        bigramAddress += sign * dictBuffer.readUnsignedInt24();
+                        readLength += 3;
+                        break;
+                    default:
+                        throw new RuntimeException("Has bigrams with no address");
+                }
+                bigrams.add(new PendingAttribute(
+                        bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_FREQUENCY,
+                        bigramAddress));
+                if (0 == (bigramFlags & FormatSpec.FLAG_BIGRAM_SHORTCUT_ATTR_HAS_NEXT)) break;
+            }
+            return readLength;
+        }
+    }
+
+    protected final File mDictionaryBinaryFile;
+    protected final long mOffset;
+    protected final long mLength;
+    // TODO: Remove mBufferFactory and mDictBuffer from this class members because they are now
+    // used only for testing.
+    private final DictionaryBufferFactory mBufferFactory;
+    protected DictBuffer mDictBuffer;
+
+    @UsedForTesting
+    /* package */ Ver2DictDecoder(final File file, final long offset, final long length,
+            final int factoryFlag) {
+        mDictionaryBinaryFile = file;
+        mOffset = offset;
+        mLength = length;
+        mDictBuffer = null;
+        if ((factoryFlag & MASK_DICTBUFFER) == USE_READONLY_BYTEBUFFER) {
+            mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
+        } else if ((factoryFlag  & MASK_DICTBUFFER) == USE_BYTEARRAY) {
+            mBufferFactory = new DictionaryBufferFromByteArrayFactory();
+        } else if ((factoryFlag & MASK_DICTBUFFER) == USE_WRITABLE_BYTEBUFFER) {
+            mBufferFactory = new DictionaryBufferFromWritableByteBufferFactory();
+        } else {
+            mBufferFactory = new DictionaryBufferFromReadOnlyByteBufferFactory();
+        }
+    }
+
+    /* package */ Ver2DictDecoder(final File file, final long offset, final long length,
+            final DictionaryBufferFactory factory) {
+        mDictionaryBinaryFile = file;
+        mOffset = offset;
+        mLength = length;
+        mBufferFactory = factory;
+    }
+
+    @Override
+    public void openDictBuffer() throws FileNotFoundException, IOException {
+        mDictBuffer = mBufferFactory.getDictionaryBuffer(mDictionaryBinaryFile);
+    }
+
+    @Override
+    public boolean isDictBufferOpen() {
+        return mDictBuffer != null;
+    }
+
+    /* package */ DictBuffer getDictBuffer() {
+        return mDictBuffer;
+    }
+
+    @UsedForTesting
+    /* package */ DictBuffer openAndGetDictBuffer() throws FileNotFoundException, IOException {
+        openDictBuffer();
+        return getDictBuffer();
+    }
+
+    @Override
+    public DictionaryHeader readHeader() throws IOException, UnsupportedFormatException {
+        // dictType is not being used in dicttool. Passing an empty string.
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(
+                mDictionaryBinaryFile.getAbsolutePath(), mOffset, mLength,
+                true /* useFullEditDistance */, null /* locale */, "" /* dictType */,
+                false /* isUpdatable */);
+        final DictionaryHeader header = binaryDictionary.getHeader();
+        binaryDictionary.close();
+        if (header == null) {
+            throw new IOException("Cannot read the dictionary header.");
+        }
+        if (header.mFormatOptions.mVersion != FormatSpec.VERSION2) {
+            throw new UnsupportedFormatException("File header has a wrong version : "
+                    + header.mFormatOptions.mVersion);
+        }
+        if (!isDictBufferOpen()) {
+            openDictBuffer();
+        }
+        // Advance buffer reading position to the head of dictionary body.
+        setPosition(header.mBodyOffset);
+        return header;
+    }
+
+    // TODO: Make this buffer multi thread safe.
+    private final int[] mCharacterBuffer = new int[FormatSpec.MAX_WORD_LENGTH];
+    @Override
+    public PtNodeInfo readPtNode(final int ptNodePos) {
+        int addressPointer = ptNodePos;
+        final int flags = PtNodeReader.readPtNodeOptionFlags(mDictBuffer);
+        addressPointer += FormatSpec.PTNODE_FLAGS_SIZE;
+        final int characters[];
+        if (0 != (flags & FormatSpec.FLAG_HAS_MULTIPLE_CHARS)) {
+            int index = 0;
+            int character = CharEncoding.readChar(mDictBuffer);
+            addressPointer += CharEncoding.getCharSize(character);
+            while (FormatSpec.INVALID_CHARACTER != character) {
+                // FusionDictionary is making sure that the length of the word is smaller than
+                // MAX_WORD_LENGTH.
+                // So we'll never write past the end of mCharacterBuffer.
+                mCharacterBuffer[index++] = character;
+                character = CharEncoding.readChar(mDictBuffer);
+                addressPointer += CharEncoding.getCharSize(character);
+            }
+            characters = Arrays.copyOfRange(mCharacterBuffer, 0, index);
+        } else {
+            final int character = CharEncoding.readChar(mDictBuffer);
+            addressPointer += CharEncoding.getCharSize(character);
+            characters = new int[] { character };
+        }
+        final ProbabilityInfo probabilityInfo;
+        if (0 != (FormatSpec.FLAG_IS_TERMINAL & flags)) {
+            probabilityInfo = PtNodeReader.readProbabilityInfo(mDictBuffer);
+            addressPointer += FormatSpec.PTNODE_FREQUENCY_SIZE;
+        } else {
+            probabilityInfo = null;
+        }
+        int childrenAddress = PtNodeReader.readChildrenAddress(mDictBuffer, flags);
+        if (childrenAddress != FormatSpec.NO_CHILDREN_ADDRESS) {
+            childrenAddress += addressPointer;
+        }
+        addressPointer += BinaryDictIOUtils.getChildrenAddressSize(flags);
+        final ArrayList<WeightedString> shortcutTargets;
+        if (0 != (flags & FormatSpec.FLAG_HAS_SHORTCUT_TARGETS)) {
+            // readShortcut will add shortcuts to shortcutTargets.
+            shortcutTargets = new ArrayList<>();
+            addressPointer += PtNodeReader.readShortcut(mDictBuffer, shortcutTargets);
+        } else {
+            shortcutTargets = null;
+        }
+
+        final ArrayList<PendingAttribute> bigrams;
+        if (0 != (flags & FormatSpec.FLAG_HAS_BIGRAMS)) {
+            bigrams = new ArrayList<>();
+            addressPointer += PtNodeReader.readBigramAddresses(mDictBuffer, bigrams,
+                    addressPointer);
+            if (bigrams.size() >= FormatSpec.MAX_BIGRAMS_IN_A_PTNODE) {
+                throw new RuntimeException("Too many bigrams in a PtNode (" + bigrams.size()
+                        + " but max is " + FormatSpec.MAX_BIGRAMS_IN_A_PTNODE + ")");
+            }
+        } else {
+            bigrams = null;
+        }
+        return new PtNodeInfo(ptNodePos, addressPointer, flags, characters, probabilityInfo,
+                childrenAddress, shortcutTargets, bigrams);
+    }
+
+    @Override
+    public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
+            throws FileNotFoundException, IOException, UnsupportedFormatException {
+        // dictType is not being used in dicttool. Passing an empty string.
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(
+                mDictionaryBinaryFile.getAbsolutePath(), 0 /* offset */,
+                mDictionaryBinaryFile.length() /* length */, true /* useFullEditDistance */,
+                null /* locale */, "" /* dictType */, false /* isUpdatable */);
+        final DictionaryHeader header = readHeader();
+        final FusionDictionary fusionDict =
+                new FusionDictionary(new FusionDictionary.PtNodeArray(), header.mDictionaryOptions);
+        int token = 0;
+        final ArrayList<WordProperty> wordProperties = new ArrayList<>();
+        do {
+            final BinaryDictionary.GetNextWordPropertyResult result =
+                    binaryDictionary.getNextWordProperty(token);
+            final WordProperty wordProperty = result.mWordProperty;
+            if (wordProperty == null) {
+                binaryDictionary.close();
+                if (deleteDictIfBroken) {
+                    mDictionaryBinaryFile.delete();
+                }
+                return null;
+            }
+            wordProperties.add(wordProperty);
+            token = result.mNextToken;
+        } while (token != 0);
+
+        // Insert unigrams into the fusion dictionary.
+        for (final WordProperty wordProperty : wordProperties) {
+            if (wordProperty.mIsBlacklistEntry) {
+                fusionDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets,
+                        wordProperty.mIsNotAWord);
+            } else {
+                fusionDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo,
+                        wordProperty.mShortcutTargets, wordProperty.mIsNotAWord);
+            }
+        }
+        // Insert bigrams into the fusion dictionary.
+        for (final WordProperty wordProperty : wordProperties) {
+            if (wordProperty.mBigrams == null) {
+                continue;
+            }
+            final String word0 = wordProperty.mWord;
+            for (final WeightedString bigram : wordProperty.mBigrams) {
+                fusionDict.setBigram(word0, bigram.mWord, bigram.mProbabilityInfo);
+            }
+        }
+        binaryDictionary.close();
+        return fusionDict;
+    }
+
+    @Override
+    public void setPosition(int newPos) {
+        mDictBuffer.position(newPos);
+    }
+
+    @Override
+    public int getPosition() {
+        return mDictBuffer.position();
+    }
+
+    @Override
+    public int readPtNodeCount() {
+        return BinaryDictDecoderUtils.readPtNodeCount(mDictBuffer);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver2DictDecoderTests.java b/tests/src/com/android/inputmethod/latin/makedict/Ver2DictDecoderTests.java
new file mode 100644
index 0000000..3882c2c
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver2DictDecoderTests.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
+import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
+import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFromByteArrayFactory;
+import com.android.inputmethod.latin.makedict.DictDecoder.
+        DictionaryBufferFromReadOnlyByteBufferFactory;
+import com.android.inputmethod.latin.makedict.DictDecoder.
+        DictionaryBufferFromWritableByteBufferFactory;
+
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * Unit tests for Ver2DictDecoder
+ */
+public class Ver2DictDecoderTests extends AndroidTestCase {
+    private static final String TAG = Ver2DictDecoderTests.class.getSimpleName();
+
+    private final byte[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+
+    // Utilities for testing
+    public void writeDataToFile(final File file) {
+        FileOutputStream outStream = null;
+        try {
+            outStream = new FileOutputStream(file);
+            outStream.write(data);
+        } catch (IOException e) {
+            fail ("Can't write data to the test file");
+        } finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                } catch (IOException e) {
+                    Log.e(TAG, "Failed to close the output stream", e);
+                }
+            }
+        }
+    }
+
+    public void runTestOpenBuffer(final String testName, final DictionaryBufferFactory factory) {
+        File testFile = null;
+        try {
+            testFile = File.createTempFile(testName, ".tmp", getContext().getCacheDir());
+        } catch (IOException e) {
+            Log.e(TAG, "IOException while the creating temporary file", e);
+        }
+
+        assertNotNull(testFile);
+        final Ver2DictDecoder dictDecoder = new Ver2DictDecoder(testFile, 0, testFile.length(),
+                factory);
+        try {
+            dictDecoder.openDictBuffer();
+        } catch (Exception e) {
+            Log.e(TAG, "Failed to open the buffer", e);
+        }
+
+        writeDataToFile(testFile);
+
+        try {
+            dictDecoder.openDictBuffer();
+        } catch (Exception e) {
+            Log.e(TAG, "Raised the exception while opening buffer", e);
+        }
+
+        assertEquals(testFile.length(), dictDecoder.getDictBuffer().capacity());
+    }
+
+    public void testOpenBufferWithByteBuffer() {
+        runTestOpenBuffer("testOpenBufferWithByteBuffer",
+                new DictionaryBufferFromReadOnlyByteBufferFactory());
+    }
+
+    public void testOpenBufferWithByteArray() {
+        runTestOpenBuffer("testOpenBufferWithByteArray",
+                new DictionaryBufferFromByteArrayFactory());
+    }
+
+    public void testOpenBufferWithWritableByteBuffer() {
+        runTestOpenBuffer("testOpenBufferWithWritableByteBuffer",
+                new DictionaryBufferFromWritableByteBufferFactory());
+    }
+
+    public void runTestGetBuffer(final String testName, final DictionaryBufferFactory factory) {
+        File testFile = null;
+        try {
+            testFile = File.createTempFile(testName, ".tmp", getContext().getCacheDir());
+        } catch (IOException e) {
+            Log.e(TAG, "IOException while the creating temporary file", e);
+        }
+
+        final Ver2DictDecoder dictDecoder = new Ver2DictDecoder(testFile, 0, testFile.length(),
+                factory);
+
+        // the default return value of getBuffer() must be null.
+        assertNull("the default return value of getBuffer() is not null",
+                dictDecoder.getDictBuffer());
+
+        writeDataToFile(testFile);
+        assertTrue(testFile.exists());
+        Log.d(TAG, "file length = " + testFile.length());
+
+        DictBuffer dictBuffer = null;
+        try {
+            dictBuffer = dictDecoder.openAndGetDictBuffer();
+        } catch (IOException e) {
+            Log.e(TAG, "Failed to open and get the buffer", e);
+        }
+        assertNotNull("the buffer must not be null", dictBuffer);
+
+        for (int i = 0; i < data.length; ++i) {
+            assertEquals(data[i], dictBuffer.readUnsignedByte());
+        }
+    }
+
+    public void testGetBufferWithByteBuffer() {
+        runTestGetBuffer("testGetBufferWithByteBuffer",
+                new DictionaryBufferFromReadOnlyByteBufferFactory());
+    }
+
+    public void testGetBufferWithByteArray() {
+        runTestGetBuffer("testGetBufferWithByteArray",
+                new DictionaryBufferFromByteArrayFactory());
+    }
+
+    public void testGetBufferWithWritableByteBuffer() {
+        runTestGetBuffer("testGetBufferWithWritableByteBuffer",
+                new DictionaryBufferFromWritableByteBufferFactory());
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java b/tests/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java
new file mode 100644
index 0000000..a286190
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver2DictEncoder.java
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.CharEncoding;
+import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * An implementation of DictEncoder for version 2 binary dictionary.
+ */
+@UsedForTesting
+public class Ver2DictEncoder implements DictEncoder {
+
+    private final File mDictFile;
+    private OutputStream mOutStream;
+    private byte[] mBuffer;
+    private int mPosition;
+
+    @UsedForTesting
+    public Ver2DictEncoder(final File dictFile) {
+        mDictFile = dictFile;
+        mOutStream = null;
+        mBuffer = null;
+    }
+
+    // This constructor is used only by BinaryDictOffdeviceUtilsTests.
+    // If you want to use this in the production code, you should consider keeping consistency of
+    // the interface of Ver3DictDecoder by using factory.
+    @UsedForTesting
+    public Ver2DictEncoder(final OutputStream outStream) {
+        mDictFile = null;
+        mOutStream = outStream;
+    }
+
+    private void openStream() throws FileNotFoundException {
+        mOutStream = new FileOutputStream(mDictFile);
+    }
+
+    private void close() throws IOException {
+        if (mOutStream != null) {
+            mOutStream.close();
+            mOutStream = null;
+        }
+    }
+
+    @Override
+    public void writeDictionary(final FusionDictionary dict, final FormatOptions formatOptions)
+            throws IOException, UnsupportedFormatException {
+        if (formatOptions.mVersion > FormatSpec.VERSION2) {
+            throw new UnsupportedFormatException(
+                    "The given format options has wrong version number : "
+                    + formatOptions.mVersion);
+        }
+
+        if (mOutStream == null) {
+            openStream();
+        }
+        BinaryDictEncoderUtils.writeDictionaryHeader(mOutStream, dict, formatOptions);
+
+        // Addresses are limited to 3 bytes, but since addresses can be relative to each node
+        // array, the structure itself is not limited to 16MB. However, if it is over 16MB deciding
+        // the order of the PtNode arrays becomes a quite complicated problem, because though the
+        // dictionary itself does not have a size limit, each node array must still be within 16MB
+        // of all its children and parents. As long as this is ensured, the dictionary file may
+        // grow to any size.
+
+        // Leave the choice of the optimal node order to the flattenTree function.
+        MakedictLog.i("Flattening the tree...");
+        ArrayList<PtNodeArray> flatNodes = BinaryDictEncoderUtils.flattenTree(dict.mRootNodeArray);
+
+        MakedictLog.i("Computing addresses...");
+        BinaryDictEncoderUtils.computeAddresses(dict, flatNodes);
+        MakedictLog.i("Checking PtNode array...");
+        if (MakedictLog.DBG) BinaryDictEncoderUtils.checkFlatPtNodeArrayList(flatNodes);
+
+        // Create a buffer that matches the final dictionary size.
+        final PtNodeArray lastNodeArray = flatNodes.get(flatNodes.size() - 1);
+        final int bufferSize = lastNodeArray.mCachedAddressAfterUpdate + lastNodeArray.mCachedSize;
+        mBuffer = new byte[bufferSize];
+
+        MakedictLog.i("Writing file...");
+
+        for (PtNodeArray nodeArray : flatNodes) {
+            BinaryDictEncoderUtils.writePlacedPtNodeArray(dict, this, nodeArray);
+        }
+        if (MakedictLog.DBG) BinaryDictEncoderUtils.showStatistics(flatNodes);
+        mOutStream.write(mBuffer, 0, mPosition);
+
+        MakedictLog.i("Done");
+        close();
+    }
+
+    @Override
+    public void setPosition(final int position) {
+        if (mBuffer == null || position < 0 || position >= mBuffer.length) return;
+        mPosition = position;
+    }
+
+    @Override
+    public int getPosition() {
+        return mPosition;
+    }
+
+    @Override
+    public void writePtNodeCount(final int ptNodeCount) {
+        final int countSize = BinaryDictIOUtils.getPtNodeCountSize(ptNodeCount);
+        if (countSize != 1 && countSize != 2) {
+            throw new RuntimeException("Strange size from getGroupCountSize : " + countSize);
+        }
+        final int encodedPtNodeCount = (countSize == 2) ?
+                (ptNodeCount | FormatSpec.LARGE_PTNODE_ARRAY_SIZE_FIELD_SIZE_FLAG) : ptNodeCount;
+        mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, encodedPtNodeCount,
+                countSize);
+    }
+
+    private void writePtNodeFlags(final PtNode ptNode) {
+        final int childrenPos = BinaryDictEncoderUtils.getChildrenPosition(ptNode);
+        mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition,
+                BinaryDictEncoderUtils.makePtNodeFlags(ptNode, childrenPos),
+                FormatSpec.PTNODE_FLAGS_SIZE);
+    }
+
+    private void writeCharacters(final int[] codePoints, final boolean hasSeveralChars) {
+        mPosition = CharEncoding.writeCharArray(codePoints, mBuffer, mPosition);
+        if (hasSeveralChars) {
+            mBuffer[mPosition++] = FormatSpec.PTNODE_CHARACTERS_TERMINATOR;
+        }
+    }
+
+    private void writeFrequency(final int frequency) {
+        if (frequency >= 0) {
+            mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, frequency,
+                    FormatSpec.PTNODE_FREQUENCY_SIZE);
+        }
+    }
+
+    private void writeChildrenPosition(final PtNode ptNode) {
+        final int childrenPos = BinaryDictEncoderUtils.getChildrenPosition(ptNode);
+        mPosition += BinaryDictEncoderUtils.writeChildrenPosition(mBuffer, mPosition,
+                childrenPos);
+    }
+
+    /**
+     * Write a shortcut attributes list to mBuffer.
+     *
+     * @param shortcuts the shortcut attributes list.
+     */
+    private void writeShortcuts(final ArrayList<WeightedString> shortcuts) {
+        if (null == shortcuts || shortcuts.isEmpty()) return;
+
+        final int indexOfShortcutByteSize = mPosition;
+        mPosition += FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE;
+        final Iterator<WeightedString> shortcutIterator = shortcuts.iterator();
+        while (shortcutIterator.hasNext()) {
+            final WeightedString target = shortcutIterator.next();
+            final int shortcutFlags = BinaryDictEncoderUtils.makeShortcutFlags(
+                    shortcutIterator.hasNext(),
+                    target.getProbability());
+            mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, shortcutFlags,
+                    FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
+            final int shortcutShift = CharEncoding.writeString(mBuffer, mPosition, target.mWord);
+            mPosition += shortcutShift;
+        }
+        final int shortcutByteSize = mPosition - indexOfShortcutByteSize;
+        if (shortcutByteSize > FormatSpec.MAX_SHORTCUT_LIST_SIZE_IN_A_PTNODE) {
+            throw new RuntimeException("Shortcut list too large");
+        }
+        BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, indexOfShortcutByteSize, shortcutByteSize,
+                FormatSpec.PTNODE_SHORTCUT_LIST_SIZE_SIZE);
+    }
+
+    /**
+     * Write a bigram attributes list to mBuffer.
+     *
+     * @param bigrams the bigram attributes list.
+     * @param dict the dictionary the node array is a part of (for relative offsets).
+     */
+    private void writeBigrams(final ArrayList<WeightedString> bigrams,
+            final FusionDictionary dict) {
+        if (bigrams == null) return;
+
+        final Iterator<WeightedString> bigramIterator = bigrams.iterator();
+        while (bigramIterator.hasNext()) {
+            final WeightedString bigram = bigramIterator.next();
+            final PtNode target =
+                    FusionDictionary.findWordInTree(dict.mRootNodeArray, bigram.mWord);
+            final int addressOfBigram = target.mCachedAddressAfterUpdate;
+            final int unigramFrequencyForThisWord = target.getProbability();
+            final int offset = addressOfBigram
+                    - (mPosition + FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
+            final int bigramFlags = BinaryDictEncoderUtils.makeBigramFlags(bigramIterator.hasNext(),
+                    offset, bigram.getProbability(), unigramFrequencyForThisWord, bigram.mWord);
+            mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, bigramFlags,
+                    FormatSpec.PTNODE_ATTRIBUTE_FLAGS_SIZE);
+            mPosition += BinaryDictEncoderUtils.writeChildrenPosition(mBuffer, mPosition,
+                    Math.abs(offset));
+        }
+    }
+
+    @Override
+    public void writeForwardLinkAddress(final int forwardLinkAddress) {
+        mPosition = BinaryDictEncoderUtils.writeUIntToBuffer(mBuffer, mPosition, forwardLinkAddress,
+                FormatSpec.FORWARD_LINK_ADDRESS_SIZE);
+    }
+
+    @Override
+    public void writePtNode(final PtNode ptNode, final FusionDictionary dict) {
+        writePtNodeFlags(ptNode);
+        writeCharacters(ptNode.mChars, ptNode.hasSeveralChars());
+        writeFrequency(ptNode.getProbability());
+        writeChildrenPosition(ptNode);
+        writeShortcuts(ptNode.mShortcutTargets);
+        writeBigrams(ptNode.mBigrams, dict);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver3DictDecoderTests.java b/tests/src/com/android/inputmethod/latin/makedict/Ver3DictDecoderTests.java
deleted file mode 100644
index 9611599..0000000
--- a/tests/src/com/android/inputmethod/latin/makedict/Ver3DictDecoderTests.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.makedict;
-
-import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils.DictBuffer;
-import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFactory;
-import com.android.inputmethod.latin.makedict.DictDecoder.DictionaryBufferFromByteArrayFactory;
-import com.android.inputmethod.latin.makedict.DictDecoder.
-        DictionaryBufferFromReadOnlyByteBufferFactory;
-import com.android.inputmethod.latin.makedict.DictDecoder.
-        DictionaryBufferFromWritableByteBufferFactory;
-
-import android.test.AndroidTestCase;
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-/**
- * Unit tests for Ver3DictDecoder
- */
-public class Ver3DictDecoderTests extends AndroidTestCase {
-    private static final String TAG = Ver3DictDecoderTests.class.getSimpleName();
-
-    private final byte[] data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
-
-    // Utilities for testing
-    public void writeDataToFile(final File file) {
-        FileOutputStream outStream = null;
-        try {
-            outStream = new FileOutputStream(file);
-            outStream.write(data);
-        } catch (IOException e) {
-            fail ("Can't write data to the test file");
-        } finally {
-            if (outStream != null) {
-                try {
-                    outStream.close();
-                } catch (IOException e) {
-                    Log.e(TAG, "Failed to close the output stream", e);
-                }
-            }
-        }
-    }
-
-    @SuppressWarnings("null")
-    public void runTestOpenBuffer(final String testName, final DictionaryBufferFactory factory) {
-        File testFile = null;
-        try {
-            testFile = File.createTempFile(testName, ".tmp", getContext().getCacheDir());
-        } catch (IOException e) {
-            Log.e(TAG, "IOException while the creating temporary file", e);
-        }
-
-        assertNotNull(testFile);
-        final Ver3DictDecoder dictDecoder = new Ver3DictDecoder(testFile, factory);
-        try {
-            dictDecoder.openDictBuffer();
-        } catch (Exception e) {
-            Log.e(TAG, "Failed to open the buffer", e);
-        }
-
-        writeDataToFile(testFile);
-
-        try {
-            dictDecoder.openDictBuffer();
-        } catch (Exception e) {
-            Log.e(TAG, "Raised the exception while opening buffer", e);
-        }
-
-        assertEquals(testFile.length(), dictDecoder.getDictBuffer().capacity());
-    }
-
-    public void testOpenBufferWithByteBuffer() {
-        runTestOpenBuffer("testOpenBufferWithByteBuffer",
-                new DictionaryBufferFromReadOnlyByteBufferFactory());
-    }
-
-    public void testOpenBufferWithByteArray() {
-        runTestOpenBuffer("testOpenBufferWithByteArray",
-                new DictionaryBufferFromByteArrayFactory());
-    }
-
-    public void testOpenBufferWithWritableByteBuffer() {
-        runTestOpenBuffer("testOpenBufferWithWritableByteBuffer",
-                new DictionaryBufferFromWritableByteBufferFactory());
-    }
-
-    @SuppressWarnings("null")
-    public void runTestGetBuffer(final String testName, final DictionaryBufferFactory factory) {
-        File testFile = null;
-        try {
-            testFile = File.createTempFile(testName, ".tmp", getContext().getCacheDir());
-        } catch (IOException e) {
-            Log.e(TAG, "IOException while the creating temporary file", e);
-        }
-
-        final Ver3DictDecoder dictDecoder = new Ver3DictDecoder(testFile, factory);
-
-        // the default return value of getBuffer() must be null.
-        assertNull("the default return value of getBuffer() is not null",
-                dictDecoder.getDictBuffer());
-
-        writeDataToFile(testFile);
-        assertTrue(testFile.exists());
-        Log.d(TAG, "file length = " + testFile.length());
-
-        DictBuffer dictBuffer = null;
-        try {
-            dictBuffer = dictDecoder.openAndGetDictBuffer();
-        } catch (IOException e) {
-            Log.e(TAG, "Failed to open and get the buffer", e);
-        }
-        assertNotNull("the buffer must not be null", dictBuffer);
-
-        for (int i = 0; i < data.length; ++i) {
-            assertEquals(data[i], dictBuffer.readUnsignedByte());
-        }
-    }
-
-    public void testGetBufferWithByteBuffer() {
-        runTestGetBuffer("testGetBufferWithByteBuffer",
-                new DictionaryBufferFromReadOnlyByteBufferFactory());
-    }
-
-    public void testGetBufferWithByteArray() {
-        runTestGetBuffer("testGetBufferWithByteArray",
-                new DictionaryBufferFromByteArrayFactory());
-    }
-
-    public void testGetBufferWithWritableByteBuffer() {
-        runTestGetBuffer("testGetBufferWithWritableByteBuffer",
-                new DictionaryBufferFromWritableByteBufferFactory());
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
new file mode 100644
index 0000000..5e8417e
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.utils.FileUtils;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+
+/**
+ * An implementation of binary dictionary decoder for version 4 binary dictionary.
+ */
+@UsedForTesting
+public class Ver4DictDecoder extends AbstractDictDecoder {
+    final File mDictDirectory;
+
+    @UsedForTesting
+    /* package */ Ver4DictDecoder(final File dictDirectory, final int factoryFlag) {
+        this(dictDirectory, null /* factory */);
+    }
+
+    @UsedForTesting
+    /* package */ Ver4DictDecoder(final File dictDirectory, final DictionaryBufferFactory factory) {
+        mDictDirectory = dictDirectory;
+
+    }
+
+    @Override
+    public DictionaryHeader readHeader() throws IOException, UnsupportedFormatException {
+        // dictType is not being used in dicttool. Passing an empty string.
+        final BinaryDictionary binaryDictionary= new BinaryDictionary(
+              mDictDirectory.getAbsolutePath(), 0 /* offset */, 0 /* length */,
+              true /* useFullEditDistance */, null /* locale */,
+              "" /* dictType */, true /* isUpdatable */);
+        final DictionaryHeader header = binaryDictionary.getHeader();
+        binaryDictionary.close();
+        if (header == null) {
+            throw new IOException("Cannot read the dictionary header.");
+        }
+        return header;
+    }
+
+    @Override
+    public FusionDictionary readDictionaryBinary(final boolean deleteDictIfBroken)
+            throws FileNotFoundException, IOException, UnsupportedFormatException {
+        // dictType is not being used in dicttool. Passing an empty string.
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(
+              mDictDirectory.getAbsolutePath(), 0 /* offset */, 0 /* length */,
+              true /* useFullEditDistance */, null /* locale */,
+              "" /* dictType */, true /* isUpdatable */);
+        final DictionaryHeader header = readHeader();
+        final FusionDictionary fusionDict =
+                new FusionDictionary(new FusionDictionary.PtNodeArray(), header.mDictionaryOptions);
+        int token = 0;
+        final ArrayList<WordProperty> wordProperties = new ArrayList<>();
+        do {
+            final BinaryDictionary.GetNextWordPropertyResult result =
+                    binaryDictionary.getNextWordProperty(token);
+            final WordProperty wordProperty = result.mWordProperty;
+            if (wordProperty == null) {
+                binaryDictionary.close();
+                if (deleteDictIfBroken) {
+                    FileUtils.deleteRecursively(mDictDirectory);
+                }
+                return null;
+            }
+            wordProperties.add(wordProperty);
+            token = result.mNextToken;
+        } while (token != 0);
+
+        // Insert unigrams into the fusion dictionary.
+        for (final WordProperty wordProperty : wordProperties) {
+            if (wordProperty.mIsBlacklistEntry) {
+                fusionDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets,
+                        wordProperty.mIsNotAWord);
+            } else {
+                fusionDict.add(wordProperty.mWord, wordProperty.mProbabilityInfo,
+                        wordProperty.mShortcutTargets, wordProperty.mIsNotAWord);
+            }
+        }
+        // Insert bigrams into the fusion dictionary.
+        for (final WordProperty wordProperty : wordProperties) {
+            if (wordProperty.mBigrams == null) {
+                continue;
+            }
+            final String word0 = wordProperty.mWord;
+            for (final WeightedString bigram : wordProperty.mBigrams) {
+                fusionDict.setBigram(word0, bigram.mWord, bigram.mProbabilityInfo);
+            }
+        }
+        binaryDictionary.close();
+        return fusionDict;
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/Ver4DictEncoder.java b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictEncoder.java
new file mode 100644
index 0000000..76eaef4
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/makedict/Ver4DictEncoder.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.makedict;
+
+import com.android.inputmethod.annotations.UsedForTesting;
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
+import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
+import com.android.inputmethod.latin.utils.LocaleUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * An implementation of DictEncoder for version 4 binary dictionary.
+ */
+@UsedForTesting
+public class Ver4DictEncoder implements DictEncoder {
+    private final File mDictPlacedDir;
+
+    @UsedForTesting
+    public Ver4DictEncoder(final File dictPlacedDir) {
+        mDictPlacedDir = dictPlacedDir;
+    }
+
+    // TODO: This builds a FusionDictionary first and iterates it to add words to the binary
+    // dictionary. However, it is possible to just add words directly to the binary dictionary
+    // instead.
+    // In the long run, when we stop supporting version 2, FusionDictionary will become deprecated
+    // and we can remove it. Then we'll be able to just call BinaryDictionary directly.
+    @Override
+    public void writeDictionary(FusionDictionary dict, FormatOptions formatOptions)
+            throws IOException, UnsupportedFormatException {
+        if (formatOptions.mVersion != FormatSpec.VERSION4) {
+            throw new UnsupportedFormatException("File header has a wrong version number : "
+                    + formatOptions.mVersion);
+        }
+        if (!mDictPlacedDir.isDirectory()) {
+            throw new UnsupportedFormatException("Given path is not a directory.");
+        }
+        if (!BinaryDictionaryUtils.createEmptyDictFile(mDictPlacedDir.getAbsolutePath(),
+                FormatSpec.VERSION4, LocaleUtils.constructLocaleFromString(
+                dict.mOptions.mAttributes.get(DictionaryHeader.DICTIONARY_LOCALE_KEY)),
+                dict.mOptions.mAttributes)) {
+            throw new IOException("Cannot create dictionary file : "
+                + mDictPlacedDir.getAbsolutePath());
+        }
+        final BinaryDictionary binaryDict = new BinaryDictionary(mDictPlacedDir.getAbsolutePath(),
+                0l, mDictPlacedDir.length(), true /* useFullEditDistance */,
+                LocaleUtils.constructLocaleFromString(dict.mOptions.mAttributes.get(
+                        DictionaryHeader.DICTIONARY_LOCALE_KEY)),
+                Dictionary.TYPE_USER /* Dictionary type. Does not matter for us */,
+                true /* isUpdatable */);
+        if (!binaryDict.isValidDictionary()) {
+            // Somehow createEmptyDictFile returned true, but the file was not created correctly
+            throw new IOException("Cannot create dictionary file");
+        }
+        for (final WordProperty wordProperty : dict) {
+            // TODO: switch to addMultipleDictionaryEntries when they support shortcuts
+            if (null == wordProperty.mShortcutTargets || wordProperty.mShortcutTargets.isEmpty()) {
+                if (!binaryDict.addUnigramEntry(wordProperty.mWord, wordProperty.getProbability(),
+                        null /* shortcutTarget */, 0 /* shortcutProbability */,
+                        wordProperty.mIsBeginningOfSentence, wordProperty.mIsNotAWord,
+                        wordProperty.mIsBlacklistEntry, 0 /* timestamp */)) {
+                    MakedictLog.e("Cannot add unigram entry for " + wordProperty.mWord);
+                }
+            } else {
+                for (final WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                    if (!binaryDict.addUnigramEntry(wordProperty.mWord,
+                            wordProperty.getProbability(),
+                            shortcutTarget.mWord, shortcutTarget.getProbability(),
+                            wordProperty.mIsBeginningOfSentence, wordProperty.mIsNotAWord,
+                            wordProperty.mIsBlacklistEntry, 0 /* timestamp */)) {
+                        MakedictLog.e("Cannot add unigram entry for " + wordProperty.mWord
+                                + ", shortcutTarget: " + shortcutTarget.mWord);
+                        return;
+                    }
+                }
+            }
+            if (binaryDict.needsToRunGC(true /* mindsBlockByGC */)) {
+                if (!binaryDict.flushWithGC()) {
+                    MakedictLog.e("Cannot flush dict with GC.");
+                    return;
+                }
+            }
+        }
+        for (final WordProperty word0Property : dict) {
+            if (null == word0Property.mBigrams) continue;
+            for (final WeightedString word1 : word0Property.mBigrams) {
+                final PrevWordsInfo prevWordsInfo =
+                        new PrevWordsInfo(new PrevWordsInfo.WordInfo(word0Property.mWord));
+                if (!binaryDict.addNgramEntry(prevWordsInfo, word1.mWord,
+                        word1.getProbability(), 0 /* timestamp */)) {
+                    MakedictLog.e("Cannot add n-gram entry for "
+                            + prevWordsInfo + " -> " + word1.mWord);
+                    return;
+                }
+                if (binaryDict.needsToRunGC(true /* mindsBlockByGC */)) {
+                    if (!binaryDict.flushWithGC()) {
+                        MakedictLog.e("Cannot flush dict with GC.");
+                        return;
+                    }
+                }
+            }
+        }
+        if (!binaryDict.flushWithGC()) {
+            MakedictLog.e("Cannot flush dict with GC.");
+            return;
+        }
+        binaryDict.close();
+    }
+
+    @Override
+    public void setPosition(int position) {
+    }
+
+    @Override
+    public int getPosition() {
+        return 0;
+    }
+
+    @Override
+    public void writePtNodeCount(int ptNodeCount) {
+    }
+
+    @Override
+    public void writeForwardLinkAddress(int forwardLinkAddress) {
+    }
+
+    @Override
+    public void writePtNode(PtNode ptNode, FusionDictionary dict) {
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/personalization/ContextualDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/ContextualDictionaryTests.java
new file mode 100644
index 0000000..565fadb
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/personalization/ContextualDictionaryTests.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.DictionaryFacilitator;
+import com.android.inputmethod.latin.ExpandableBinaryDictionary;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+/**
+ * Unit tests for contextual dictionary
+ */
+@LargeTest
+public class ContextualDictionaryTests extends AndroidTestCase {
+    private static final String TAG = ContextualDictionaryTests.class.getSimpleName();
+
+    private static final Locale LOCALE_EN_US = new Locale("en", "US");
+
+    private DictionaryFacilitator getDictionaryFacilitator() {
+        final ArrayList<String> dictTypes = new ArrayList<>();
+        dictTypes.add(Dictionary.TYPE_CONTEXTUAL);
+        final DictionaryFacilitator dictionaryFacilitator = new DictionaryFacilitator();
+        dictionaryFacilitator.resetDictionariesForTesting(getContext(), LOCALE_EN_US, dictTypes,
+                new HashMap<String, File>(), new HashMap<String, Map<String, String>>());
+        return dictionaryFacilitator;
+    }
+
+    public void testAddPhrase() {
+        final DictionaryFacilitator dictionaryFacilitator = getDictionaryFacilitator();
+        final String[] phrase = new String[] {"a", "b", "c", "d"};
+        final int probability = 100;
+        final int bigramProbabilityForWords = 150;
+        final int bigramProbabilityForPhrases = 200;
+        dictionaryFacilitator.addPhraseToContextualDictionary(
+                phrase, probability, bigramProbabilityForWords, bigramProbabilityForPhrases);
+        final ExpandableBinaryDictionary contextualDictionary =
+                dictionaryFacilitator.getSubDictForTesting(Dictionary.TYPE_CONTEXTUAL);
+        contextualDictionary.waitAllTasksForTests();
+        // Word
+        assertTrue(contextualDictionary.isInDictionary("a"));
+        assertTrue(contextualDictionary.isInDictionary("b"));
+        assertTrue(contextualDictionary.isInDictionary("c"));
+        assertTrue(contextualDictionary.isInDictionary("d"));
+        // Phrase
+        assertTrue(contextualDictionary.isInDictionary("a b c d"));
+        assertTrue(contextualDictionary.isInDictionary("b c d"));
+        assertTrue(contextualDictionary.isInDictionary("c d"));
+        assertFalse(contextualDictionary.isInDictionary("a b c"));
+        assertFalse(contextualDictionary.isInDictionary("abcd"));
+        // TODO: Add tests for probability.
+        // TODO: Add tests for n-grams.
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java
new file mode 100644
index 0000000..0f2f981
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/personalization/PersonalizationDictionaryTests.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.Dictionary;
+import com.android.inputmethod.latin.DictionaryFacilitator;
+import com.android.inputmethod.latin.ExpandableBinaryDictionary;
+import com.android.inputmethod.latin.ExpandableBinaryDictionary.AddMultipleDictionaryEntriesCallback;
+import com.android.inputmethod.latin.makedict.CodePointUtils;
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+
+/**
+ * Unit tests for personalization dictionary
+ */
+@LargeTest
+public class PersonalizationDictionaryTests extends AndroidTestCase {
+    private static final String TAG = PersonalizationDictionaryTests.class.getSimpleName();
+
+    private static final Locale LOCALE_EN_US = new Locale("en", "US");
+    private static final String DUMMY_PACKAGE_NAME = "test.package.name";
+    private static final long TIMEOUT_TO_WAIT_DICTIONARY_OPERATIONS_IN_SECONDS = 120;
+
+    private DictionaryFacilitator getDictionaryFacilitator() {
+        final ArrayList<String> dictTypes = new ArrayList<>();
+        dictTypes.add(Dictionary.TYPE_MAIN);
+        dictTypes.add(Dictionary.TYPE_PERSONALIZATION);
+        final DictionaryFacilitator dictionaryFacilitator = new DictionaryFacilitator();
+        dictionaryFacilitator.resetDictionariesForTesting(getContext(), LOCALE_EN_US, dictTypes,
+                new HashMap<String, File>(), new HashMap<String, Map<String, String>>());
+        return dictionaryFacilitator;
+    }
+
+    public void testAddManyTokens() {
+        final DictionaryFacilitator dictionaryFacilitator = getDictionaryFacilitator();
+        dictionaryFacilitator.clearPersonalizationDictionary();
+        final int dataChunkCount = 20;
+        final int wordCountInOneChunk = 2000;
+        final Random random = new Random(System.currentTimeMillis());
+        final int[] codePointSet = CodePointUtils.LATIN_ALPHABETS_LOWER;
+
+        final SpacingAndPunctuations spacingAndPunctuations =
+                new SpacingAndPunctuations(getContext().getResources());
+
+        final int timeStampInSeconds = (int)TimeUnit.MILLISECONDS.toSeconds(
+                System.currentTimeMillis());
+
+        for (int i = 0; i < dataChunkCount; i++) {
+            final ArrayList<String> tokens = new ArrayList<>();
+            for (int j = 0; j < wordCountInOneChunk; j++) {
+                tokens.add(CodePointUtils.generateWord(random, codePointSet));
+            }
+            final PersonalizationDataChunk personalizationDataChunk = new PersonalizationDataChunk(
+                    true /* inputByUser */, tokens, timeStampInSeconds, DUMMY_PACKAGE_NAME);
+            final CountDownLatch countDownLatch = new CountDownLatch(1);
+            final AddMultipleDictionaryEntriesCallback callback =
+                    new AddMultipleDictionaryEntriesCallback() {
+                        @Override
+                        public void onFinished() {
+                            countDownLatch.countDown();
+                        }
+                    };
+            dictionaryFacilitator.addEntriesToPersonalizationDictionary(personalizationDataChunk,
+                    spacingAndPunctuations, callback);
+            try {
+                countDownLatch.await(TIMEOUT_TO_WAIT_DICTIONARY_OPERATIONS_IN_SECONDS,
+                        TimeUnit.SECONDS);
+            } catch (InterruptedException e) {
+                Log.e(TAG, "Interrupted while waiting for finishing dictionary operations.", e);
+            }
+        }
+        dictionaryFacilitator.flushPersonalizationDictionary();
+        try {
+            dictionaryFacilitator.waitForLoadingDictionariesForTesting(
+                    TIMEOUT_TO_WAIT_DICTIONARY_OPERATIONS_IN_SECONDS, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            Log.e(TAG, "Interrupted while waiting for finishing dictionary operations.", e);
+        }
+        final String dictName = ExpandableBinaryDictionary.getDictName(
+                PersonalizationDictionary.NAME, LOCALE_EN_US, null /* dictFile */);
+        final File dictFile = ExpandableBinaryDictionary.getDictFile(
+                getContext(), dictName, null /* dictFile */);
+
+        final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+                0 /* offset */, 0 /* size */,
+                true /* useFullEditDistance */, LOCALE_EN_US, Dictionary.TYPE_PERSONALIZATION,
+                true /* isUpdatable */);
+        assertTrue(binaryDictionary.isValidDictionary());
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
index 7c1decb..f87f3b4 100644
--- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
@@ -16,20 +16,23 @@
 
 package com.android.inputmethod.latin.personalization;
 
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.util.Log;
 
 import com.android.inputmethod.latin.ExpandableBinaryDictionary;
-import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.PrevWordsInfo;
+import com.android.inputmethod.latin.PrevWordsInfo.WordInfo;
+import com.android.inputmethod.latin.utils.BinaryDictionaryUtils;
+import com.android.inputmethod.latin.utils.DistracterFilter;
+import com.android.inputmethod.latin.utils.FileUtils;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Random;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -38,25 +41,57 @@
 @LargeTest
 public class UserHistoryDictionaryTests extends AndroidTestCase {
     private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName();
-    private SharedPreferences mPrefs;
 
     private static final String[] CHARACTERS = {
         "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
         "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
     };
 
-    private static final int MIN_USER_HISTORY_DICTIONARY_FILE_SIZE = 1000;
-    private static final int WAIT_TERMINATING_IN_MILLISECONDS = 100;
+    private int mCurrentTime = 0;
 
     @Override
-    public void setUp() {
-        mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+    protected void setUp() throws Exception {
+        super.setUp();
+        resetCurrentTimeForTestMode();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        stopTestModeInNativeCode();
+        super.tearDown();
+    }
+
+    private void resetCurrentTimeForTestMode() {
+        mCurrentTime = 0;
+        setCurrentTimeForTestMode(mCurrentTime);
+    }
+
+    private void forcePassingShortTime() {
+        // 3 days.
+        final int timeToElapse = (int)TimeUnit.DAYS.toSeconds(3);
+        mCurrentTime += timeToElapse;
+        setCurrentTimeForTestMode(mCurrentTime);
+    }
+
+    private void forcePassingLongTime() {
+        // 365 days.
+        final int timeToElapse = (int)TimeUnit.DAYS.toSeconds(365);
+        mCurrentTime += timeToElapse;
+        setCurrentTimeForTestMode(mCurrentTime);
+    }
+
+    private static int setCurrentTimeForTestMode(final int currentTime) {
+        return BinaryDictionaryUtils.setCurrentTimeForTest(currentTime);
+    }
+
+    private static int stopTestModeInNativeCode() {
+        return BinaryDictionaryUtils.setCurrentTimeForTest(-1);
     }
 
     /**
      * Generates a random word.
      */
-    private String generateWord(final int value) {
+    private static String generateWord(final int value) {
         final int lengthOfChars = CHARACTERS.length;
         StringBuilder builder = new StringBuilder();
         long lvalue = Math.abs((long)value);
@@ -67,19 +102,21 @@
         return builder.toString();
     }
 
-    private List<String> generateWords(final int number, final Random random) {
-        final Set<String> wordSet = CollectionUtils.newHashSet();
+    private static List<String> generateWords(final int number, final Random random) {
+        final HashSet<String> wordSet = new HashSet<>();
         while (wordSet.size() < number) {
             wordSet.add(generateWord(random.nextInt()));
         }
-        return new ArrayList<String>(wordSet);
+        return new ArrayList<>(wordSet);
     }
 
-    private void addToDict(final UserHistoryDictionary dict, final List<String> words) {
-        String prevWord = null;
+    private static void addToDict(final UserHistoryDictionary dict, final List<String> words) {
+        PrevWordsInfo prevWordsInfo = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
         for (String word : words) {
-            dict.addToDictionary(prevWord, word, true);
-            prevWord = word;
+            UserHistoryDictionary.addToDictionary(dict, prevWordsInfo, word, true,
+                    (int)TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()),
+                    DistracterFilter.EMPTY_DISTRACTER_FILTER);
+            prevWordsInfo = prevWordsInfo.getNextPrevWordsInfo(new WordInfo(word));
         }
     }
 
@@ -87,22 +124,18 @@
      * @param checkContents if true, checks whether written words are actually in the dictionary
      * or not.
      */
-    private void addAndWriteRandomWords(final String testFilenameSuffix, final int numberOfWords,
+    private void addAndWriteRandomWords(final Locale locale, final int numberOfWords,
             final Random random, final boolean checkContents) {
         final List<String> words = generateWords(numberOfWords, random);
-        final UserHistoryDictionary dict =
-                PersonalizationHelper.getUserHistoryDictionary(getContext(),
-                        testFilenameSuffix /* locale */, mPrefs);
+        final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary(
+                mContext, locale);
         // Add random words to the user history dictionary.
         addToDict(dict, words);
         if (checkContents) {
-            try {
-                Thread.sleep(TimeUnit.MILLISECONDS.convert(5L, TimeUnit.SECONDS));
-            } catch (InterruptedException e) {
-            }
+            dict.waitAllTasksForTests();
             for (int i = 0; i < numberOfWords; ++i) {
                 final String word = words.get(i);
-                assertTrue(dict.isInDictionaryForTests(word));
+                assertTrue(dict.isInDictionary(word));
             }
         }
         // write to file.
@@ -111,57 +144,48 @@
 
     /**
      * Clear all entries in the user history dictionary.
-     * @param testFilenameSuffix file name suffix used for testing.
+     * @param locale dummy locale for testing.
      */
-    private void clearHistory(final String testFilenameSuffix) {
-        final UserHistoryDictionary dict =
-                PersonalizationHelper.getUserHistoryDictionary(getContext(),
-                        testFilenameSuffix /* locale */, mPrefs);
-        dict.clearAndFlushDictionary();
+    private void clearHistory(final Locale locale) {
+        final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary(
+                mContext, locale);
+        dict.waitAllTasksForTests();
+        dict.clear();
         dict.close();
+        dict.waitAllTasksForTests();
     }
 
     /**
      * Shut down executer and wait until all operations of user history are done.
-     * @param testFilenameSuffix file name suffix used for testing.
+     * @param locale dummy locale for testing.
      */
-    private void waitForWriting(final String testFilenameSuffix) {
-        try {
-            final UserHistoryDictionary dict =
-                    PersonalizationHelper.getUserHistoryDictionary(getContext(),
-                            testFilenameSuffix, mPrefs);
-            dict.shutdownExecutorForTests();
-            while (!dict.isTerminatedForTests()) {
-                Thread.sleep(WAIT_TERMINATING_IN_MILLISECONDS);
-            }
-        } catch (InterruptedException e) {
-            Log.d(TAG, "InterruptedException: ", e);
-        }
+    private void waitForWriting(final Locale locale) {
+        final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary(
+                mContext, locale);
+        dict.waitAllTasksForTests();
     }
 
     public void testRandomWords() {
         Log.d(TAG, "This test can be used for profiling.");
         Log.d(TAG, "Usage: please set UserHistoryDictionary.PROFILE_SAVE_RESTORE to true.");
-        final String testFilenameSuffix = "testRandomWords" + System.currentTimeMillis();
-        final String fileName = UserHistoryDictionary.NAME + "." + testFilenameSuffix
-                + ExpandableBinaryDictionary.DICT_FILE_EXTENSION;
+        final Locale dummyLocale = new Locale("test_random_words" + System.currentTimeMillis());
+        final String dictName = ExpandableBinaryDictionary.getDictName(
+                UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */);
+        final File dictFile = ExpandableBinaryDictionary.getDictFile(
+                mContext, dictName, null /* dictFile */);
 
         final int numberOfWords = 1000;
         final Random random = new Random(123456);
 
         try {
-            clearHistory(testFilenameSuffix);
-            addAndWriteRandomWords(testFilenameSuffix, numberOfWords, random,
+            clearHistory(dummyLocale);
+            addAndWriteRandomWords(dummyLocale, numberOfWords, random,
                     true /* checksContents */);
         } finally {
             Log.d(TAG, "waiting for writing ...");
-            waitForWriting(testFilenameSuffix);
-            final File dictFile = new File(getContext().getFilesDir(), fileName);
-            if (dictFile != null) {
-                assertTrue(dictFile.exists());
-                assertTrue(dictFile.length() >= MIN_USER_HISTORY_DICTIONARY_FILE_SIZE);
-                dictFile.delete();
-            }
+            waitForWriting(dummyLocale);
+            assertTrue("check exisiting of " + dictFile, dictFile.exists());
+            FileUtils.deleteRecursively(dictFile);
         }
     }
 
@@ -171,17 +195,18 @@
         final int numberOfWordsInsertedForEachLanguageSwitch = 100;
 
         final File dictFiles[] = new File[numberOfLanguages];
-        final String testFilenameSuffixes[] = new String[numberOfLanguages];
+        final Locale dummyLocales[] = new Locale[numberOfLanguages];
         try {
             final Random random = new Random(123456);
 
             // Create filename suffixes for this test.
             for (int i = 0; i < numberOfLanguages; i++) {
-                testFilenameSuffixes[i] = "testSwitchingLanguages" + i;
-                final String fileName = UserHistoryDictionary.NAME + "." +
-                        testFilenameSuffixes[i] + ExpandableBinaryDictionary.DICT_FILE_EXTENSION;
-                dictFiles[i] = new File(getContext().getFilesDir(), fileName);
-                clearHistory(testFilenameSuffixes[i]);
+                dummyLocales[i] = new Locale("test_switching_languages" + i);
+                final String dictName = ExpandableBinaryDictionary.getDictName(
+                        UserHistoryDictionary.NAME, dummyLocales[i], null /* dictFile */);
+                dictFiles[i] = ExpandableBinaryDictionary.getDictFile(
+                        mContext, dictName, null /* dictFile */);
+                clearHistory(dummyLocales[i]);
             }
 
             final long start = System.currentTimeMillis();
@@ -189,7 +214,7 @@
             for (int i = 0; i < numberOfLanguageSwitching; i++) {
                 final int index = i % numberOfLanguages;
                 // Switch languages to testFilenameSuffixes[index].
-                addAndWriteRandomWords(testFilenameSuffixes[index],
+                addAndWriteRandomWords(dummyLocales[index],
                         numberOfWordsInsertedForEachLanguageSwitch, random,
                         false /* checksContents */);
             }
@@ -200,40 +225,63 @@
         } finally {
             Log.d(TAG, "waiting for writing ...");
             for (int i = 0; i < numberOfLanguages; i++) {
-                waitForWriting(testFilenameSuffixes[i]);
+                waitForWriting(dummyLocales[i]);
             }
-            for (final File file : dictFiles) {
-                if (file != null) {
-                    assertTrue(file.exists());
-                    assertTrue(file.length() >= MIN_USER_HISTORY_DICTIONARY_FILE_SIZE);
-                    file.delete();
-                }
+            for (final File dictFile : dictFiles) {
+                assertTrue("check exisiting of " + dictFile, dictFile.exists());
+                FileUtils.deleteRecursively(dictFile);
             }
         }
     }
 
     public void testAddManyWords() {
-        final String testFilenameSuffix = "testRandomWords" + System.currentTimeMillis();
-        final int numberOfWords =
-                ExpandableBinaryDictionary.ENABLE_BINARY_DICTIONARY_DYNAMIC_UPDATE ?
-                        10000 : 1000;
+        final Locale dummyLocale = new Locale("test_random_words" + System.currentTimeMillis());
+        final String dictName = ExpandableBinaryDictionary.getDictName(
+                UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */);
+        final File dictFile = ExpandableBinaryDictionary.getDictFile(
+                mContext, dictName, null /* dictFile */);
+        final int numberOfWords = 10000;
         final Random random = new Random(123456);
-        clearHistory(testFilenameSuffix);
+        clearHistory(dummyLocale);
         try {
-            addAndWriteRandomWords(testFilenameSuffix, numberOfWords, random,
-                    true /* checksContents */);
+            addAndWriteRandomWords(dummyLocale, numberOfWords, random, true /* checksContents */);
         } finally {
             Log.d(TAG, "waiting for writing ...");
-            waitForWriting(testFilenameSuffix);
-            final String fileName = UserHistoryDictionary.NAME + "." + testFilenameSuffix
-                    + ExpandableBinaryDictionary.DICT_FILE_EXTENSION;
-            final File dictFile = new File(getContext().getFilesDir(), fileName);
-            if (dictFile != null) {
-                assertTrue(dictFile.exists());
-                assertTrue(dictFile.length() >= MIN_USER_HISTORY_DICTIONARY_FILE_SIZE);
-                dictFile.delete();
-            }
+            waitForWriting(dummyLocale);
+            assertTrue("check exisiting of " + dictFile, dictFile.exists());
+            FileUtils.deleteRecursively(dictFile);
         }
     }
 
+    public void testDecaying() {
+        final Locale dummyLocale = new Locale("test_decaying" + System.currentTimeMillis());
+        final int numberOfWords = 5000;
+        final Random random = new Random(123456);
+        resetCurrentTimeForTestMode();
+        clearHistory(dummyLocale);
+        final List<String> words = generateWords(numberOfWords, random);
+        final UserHistoryDictionary dict =
+                PersonalizationHelper.getUserHistoryDictionary(getContext(), dummyLocale);
+        dict.waitAllTasksForTests();
+        PrevWordsInfo prevWordsInfo = PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
+        for (final String word : words) {
+            UserHistoryDictionary.addToDictionary(dict, prevWordsInfo, word, true, mCurrentTime,
+                    DistracterFilter.EMPTY_DISTRACTER_FILTER);
+            prevWordsInfo = prevWordsInfo.getNextPrevWordsInfo(new WordInfo(word));
+            dict.waitAllTasksForTests();
+            assertTrue(dict.isInDictionary(word));
+        }
+        forcePassingShortTime();
+        dict.runGCIfRequired();
+        dict.waitAllTasksForTests();
+        for (final String word : words) {
+            assertTrue(dict.isInDictionary(word));
+        }
+        forcePassingLongTime();
+        dict.runGCIfRequired();
+        dict.waitAllTasksForTests();
+        for (final String word : words) {
+            assertFalse(dict.isInDictionary(word));
+        }
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java
new file mode 100644
index 0000000..2cc22fa
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java
@@ -0,0 +1,477 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.settings;
+
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.SuggestedWords;
+import com.android.inputmethod.latin.utils.RunInLocale;
+
+import junit.framework.AssertionFailedError;
+
+import java.util.Locale;
+
+@SmallTest
+public class SpacingAndPunctuationsTests extends AndroidTestCase {
+    private static final int ARMENIAN_FULL_STOP = '\u0589';
+    private static final int ARMENIAN_COMMA = '\u055D';
+
+    private int mScreenMetrics;
+
+    private boolean isPhone() {
+        return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_PHONE
+                || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_PHONE;
+    }
+
+    private boolean isTablet() {
+        return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_TABLET
+                || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_TABLET;
+    }
+
+    private SpacingAndPunctuations ENGLISH;
+    private SpacingAndPunctuations FRENCH;
+    private SpacingAndPunctuations GERMAN;
+    private SpacingAndPunctuations ARMENIAN;
+    private SpacingAndPunctuations THAI;
+    private SpacingAndPunctuations KHMER;
+    private SpacingAndPunctuations LAO;
+    private SpacingAndPunctuations ARABIC;
+    private SpacingAndPunctuations PERSIAN;
+    private SpacingAndPunctuations HEBREW;
+
+    private SpacingAndPunctuations UNITED_STATES;
+    private SpacingAndPunctuations UNITED_KINGDOM;
+    private SpacingAndPunctuations CANADA_FRENCH;
+    private SpacingAndPunctuations SWISS_GERMAN;
+    private SpacingAndPunctuations INDIA_ENGLISH;
+    private SpacingAndPunctuations ARMENIA_ARMENIAN;
+    private SpacingAndPunctuations CAMBODIA_KHMER;
+    private SpacingAndPunctuations LAOS_LAO;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mScreenMetrics = mContext.getResources().getInteger(R.integer.config_screen_metrics);
+
+        // Language only
+        ENGLISH = getSpacingAndPunctuations(Locale.ENGLISH);
+        FRENCH = getSpacingAndPunctuations(Locale.FRENCH);
+        GERMAN = getSpacingAndPunctuations(Locale.GERMAN);
+        THAI = getSpacingAndPunctuations(new Locale("th"));
+        ARMENIAN = getSpacingAndPunctuations(new Locale("hy"));
+        KHMER = getSpacingAndPunctuations(new Locale("km"));
+        LAO = getSpacingAndPunctuations(new Locale("lo"));
+        ARABIC = getSpacingAndPunctuations(new Locale("ar"));
+        PERSIAN = getSpacingAndPunctuations(new Locale("fa"));
+        HEBREW = getSpacingAndPunctuations(new Locale("iw"));
+
+        // Language and Country
+        UNITED_STATES = getSpacingAndPunctuations(Locale.US);
+        UNITED_KINGDOM = getSpacingAndPunctuations(Locale.UK);
+        CANADA_FRENCH = getSpacingAndPunctuations(Locale.CANADA_FRENCH);
+        SWISS_GERMAN = getSpacingAndPunctuations(new Locale("de", "CH"));
+        INDIA_ENGLISH = getSpacingAndPunctuations(new Locale("en", "IN"));
+        ARMENIA_ARMENIAN = getSpacingAndPunctuations(new Locale("hy", "AM"));
+        CAMBODIA_KHMER = getSpacingAndPunctuations(new Locale("km", "KH"));
+        LAOS_LAO = getSpacingAndPunctuations(new Locale("lo", "LA"));
+    }
+
+    private SpacingAndPunctuations getSpacingAndPunctuations(final Locale locale) {
+        final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() {
+            @Override
+            protected SpacingAndPunctuations job(Resources res) {
+                return new SpacingAndPunctuations(res);
+            }
+        };
+        return job.runInLocale(getContext().getResources(), locale);
+    }
+
+    private static void testingStandardWordSeparator(final SpacingAndPunctuations sp) {
+        assertTrue("Tab",         sp.isWordSeparator('\t'));
+        assertTrue("Newline",     sp.isWordSeparator('\n'));
+        assertTrue("Space",       sp.isWordSeparator(' '));
+        assertTrue("Exclamation", sp.isWordSeparator('!'));
+        assertTrue("Quotation",   sp.isWordSeparator('"'));
+        assertFalse("Number",     sp.isWordSeparator('#'));
+        assertFalse("Dollar",     sp.isWordSeparator('$'));
+        assertFalse("Percent",    sp.isWordSeparator('%'));
+        assertTrue("Ampersand",   sp.isWordSeparator('&'));
+        assertFalse("Apostrophe", sp.isWordSeparator('\''));
+        assertTrue("L Paren",     sp.isWordSeparator('('));
+        assertTrue("R Paren",     sp.isWordSeparator(')'));
+        assertTrue("Asterisk",    sp.isWordSeparator('*'));
+        assertTrue("Plus",        sp.isWordSeparator('+'));
+        assertTrue("Comma",       sp.isWordSeparator(','));
+        assertFalse("Minus",      sp.isWordSeparator('-'));
+        assertTrue("Period",      sp.isWordSeparator('.'));
+        assertTrue("Slash",       sp.isWordSeparator('/'));
+        assertTrue("Colon",       sp.isWordSeparator(':'));
+        assertTrue("Semicolon",   sp.isWordSeparator(';'));
+        assertTrue("L Angle",     sp.isWordSeparator('<'));
+        assertTrue("Equal",       sp.isWordSeparator('='));
+        assertTrue("R Angle",     sp.isWordSeparator('>'));
+        assertTrue("Question",    sp.isWordSeparator('?'));
+        assertFalse("Atmark",     sp.isWordSeparator('@'));
+        assertTrue("L S Bracket", sp.isWordSeparator('['));
+        assertFalse("B Slash",    sp.isWordSeparator('\\'));
+        assertTrue("R S Bracket", sp.isWordSeparator(']'));
+        assertFalse("Circumflex", sp.isWordSeparator('^'));
+        assertTrue("Underscore",  sp.isWordSeparator('_'));
+        assertFalse("Grave",      sp.isWordSeparator('`'));
+        assertTrue("L C Brace",   sp.isWordSeparator('{'));
+        assertTrue("V Line",      sp.isWordSeparator('|'));
+        assertTrue("R C Brace",   sp.isWordSeparator('}'));
+        assertFalse("Tilde",      sp.isWordSeparator('~'));
+    }
+
+    public void testWordSeparator() {
+        testingStandardWordSeparator(ENGLISH);
+        testingStandardWordSeparator(FRENCH);
+        testingStandardWordSeparator(CANADA_FRENCH);
+        testingStandardWordSeparator(ARMENIA_ARMENIAN);
+        assertTrue(ARMENIA_ARMENIAN.isWordSeparator(ARMENIAN_FULL_STOP));
+        assertTrue(ARMENIA_ARMENIAN.isWordSeparator(ARMENIAN_COMMA));
+        // TODO: We should fix these.
+        testingStandardWordSeparator(ARMENIAN);
+        assertFalse(ARMENIAN.isWordSeparator(ARMENIAN_FULL_STOP));
+        assertFalse(ARMENIAN.isWordSeparator(ARMENIAN_COMMA));
+    }
+
+    private static void testingStandardWordConnector(final SpacingAndPunctuations sp) {
+        assertFalse("Tab",         sp.isWordConnector('\t'));
+        assertFalse("Newline",     sp.isWordConnector('\n'));
+        assertFalse("Space",       sp.isWordConnector(' '));
+        assertFalse("Exclamation", sp.isWordConnector('!'));
+        assertFalse("Quotation",   sp.isWordConnector('"'));
+        assertFalse("Number",      sp.isWordConnector('#'));
+        assertFalse("Dollar",      sp.isWordConnector('$'));
+        assertFalse("Percent",     sp.isWordConnector('%'));
+        assertFalse("Ampersand",   sp.isWordConnector('&'));
+        assertTrue("Apostrophe",   sp.isWordConnector('\''));
+        assertFalse("L Paren",     sp.isWordConnector('('));
+        assertFalse("R Paren",     sp.isWordConnector(')'));
+        assertFalse("Asterisk",    sp.isWordConnector('*'));
+        assertFalse("Plus",        sp.isWordConnector('+'));
+        assertFalse("Comma",       sp.isWordConnector(','));
+        assertTrue("Minus",        sp.isWordConnector('-'));
+        assertFalse("Period",      sp.isWordConnector('.'));
+        assertFalse("Slash",       sp.isWordConnector('/'));
+        assertFalse("Colon",       sp.isWordConnector(':'));
+        assertFalse("Semicolon",   sp.isWordConnector(';'));
+        assertFalse("L Angle",     sp.isWordConnector('<'));
+        assertFalse("Equal",       sp.isWordConnector('='));
+        assertFalse("R Angle",     sp.isWordConnector('>'));
+        assertFalse("Question",    sp.isWordConnector('?'));
+        assertFalse("Atmark",      sp.isWordConnector('@'));
+        assertFalse("L S Bracket", sp.isWordConnector('['));
+        assertFalse("B Slash",     sp.isWordConnector('\\'));
+        assertFalse("R S Bracket", sp.isWordConnector(']'));
+        assertFalse("Circumflex",  sp.isWordConnector('^'));
+        assertFalse("Underscore",  sp.isWordConnector('_'));
+        assertFalse("Grave",       sp.isWordConnector('`'));
+        assertFalse("L C Brace",   sp.isWordConnector('{'));
+        assertFalse("V Line",      sp.isWordConnector('|'));
+        assertFalse("R C Brace",   sp.isWordConnector('}'));
+        assertFalse("Tilde",       sp.isWordConnector('~'));
+
+    }
+
+    public void testWordConnector() {
+        testingStandardWordConnector(ENGLISH);
+        testingStandardWordConnector(FRENCH);
+        testingStandardWordConnector(CANADA_FRENCH);
+        testingStandardWordConnector(ARMENIA_ARMENIAN);
+    }
+
+    private static void testingCommonPrecededBySpace(final SpacingAndPunctuations sp) {
+        assertFalse("Tab",         sp.isUsuallyPrecededBySpace('\t'));
+        assertFalse("Newline",     sp.isUsuallyPrecededBySpace('\n'));
+        assertFalse("Space",       sp.isUsuallyPrecededBySpace(' '));
+        //assertFalse("Exclamation", sp.isUsuallyPrecededBySpace('!'));
+        assertFalse("Quotation",   sp.isUsuallyPrecededBySpace('"'));
+        assertFalse("Number",      sp.isUsuallyPrecededBySpace('#'));
+        assertFalse("Dollar",      sp.isUsuallyPrecededBySpace('$'));
+        assertFalse("Percent",     sp.isUsuallyPrecededBySpace('%'));
+        assertTrue("Ampersand",    sp.isUsuallyPrecededBySpace('&'));
+        assertFalse("Apostrophe",  sp.isUsuallyPrecededBySpace('\''));
+        assertTrue("L Paren",      sp.isUsuallyPrecededBySpace('('));
+        assertFalse("R Paren",     sp.isUsuallyPrecededBySpace(')'));
+        assertFalse("Asterisk",    sp.isUsuallyPrecededBySpace('*'));
+        assertFalse("Plus",        sp.isUsuallyPrecededBySpace('+'));
+        assertFalse("Comma",       sp.isUsuallyPrecededBySpace(','));
+        assertFalse("Minus",       sp.isUsuallyPrecededBySpace('-'));
+        assertFalse("Period",      sp.isUsuallyPrecededBySpace('.'));
+        assertFalse("Slash",       sp.isUsuallyPrecededBySpace('/'));
+        //assertFalse("Colon",       sp.isUsuallyPrecededBySpace(':'));
+        //assertFalse("Semicolon",   sp.isUsuallyPrecededBySpace(';'));
+        assertFalse("L Angle",     sp.isUsuallyPrecededBySpace('<'));
+        assertFalse("Equal",       sp.isUsuallyPrecededBySpace('='));
+        assertFalse("R Angle",     sp.isUsuallyPrecededBySpace('>'));
+        //assertFalse("Question",    sp.isUsuallyPrecededBySpace('?'));
+        assertFalse("Atmark",      sp.isUsuallyPrecededBySpace('@'));
+        assertTrue("L S Bracket",  sp.isUsuallyPrecededBySpace('['));
+        assertFalse("B Slash",     sp.isUsuallyPrecededBySpace('\\'));
+        assertFalse("R S Bracket", sp.isUsuallyPrecededBySpace(']'));
+        assertFalse("Circumflex",  sp.isUsuallyPrecededBySpace('^'));
+        assertFalse("Underscore",  sp.isUsuallyPrecededBySpace('_'));
+        assertFalse("Grave",       sp.isUsuallyPrecededBySpace('`'));
+        assertTrue("L C Brace",    sp.isUsuallyPrecededBySpace('{'));
+        assertFalse("V Line",      sp.isUsuallyPrecededBySpace('|'));
+        assertFalse("R C Brace",   sp.isUsuallyPrecededBySpace('}'));
+        assertFalse("Tilde",       sp.isUsuallyPrecededBySpace('~'));
+    }
+
+    private static void testingStandardPrecededBySpace(final SpacingAndPunctuations sp) {
+        testingCommonPrecededBySpace(sp);
+        assertFalse("Exclamation", sp.isUsuallyPrecededBySpace('!'));
+        assertFalse("Colon",       sp.isUsuallyPrecededBySpace(':'));
+        assertFalse("Semicolon",   sp.isUsuallyPrecededBySpace(';'));
+        assertFalse("Question",    sp.isUsuallyPrecededBySpace('?'));
+    }
+
+    public void testIsUsuallyPrecededBySpace() {
+        testingStandardPrecededBySpace(ENGLISH);
+        testingCommonPrecededBySpace(FRENCH);
+        assertTrue("Exclamation", FRENCH.isUsuallyPrecededBySpace('!'));
+        assertTrue("Colon",       FRENCH.isUsuallyPrecededBySpace(':'));
+        assertTrue("Semicolon",   FRENCH.isUsuallyPrecededBySpace(';'));
+        assertTrue("Question",    FRENCH.isUsuallyPrecededBySpace('?'));
+        testingCommonPrecededBySpace(CANADA_FRENCH);
+        assertFalse("Exclamation", CANADA_FRENCH.isUsuallyPrecededBySpace('!'));
+        assertTrue("Colon",        CANADA_FRENCH.isUsuallyPrecededBySpace(':'));
+        assertFalse("Semicolon",   CANADA_FRENCH.isUsuallyPrecededBySpace(';'));
+        assertFalse("Question",    CANADA_FRENCH.isUsuallyPrecededBySpace('?'));
+        testingStandardPrecededBySpace(ARMENIA_ARMENIAN);
+    }
+
+    private static void testingStandardFollowedBySpace(final SpacingAndPunctuations sp) {
+        assertFalse("Tab",         sp.isUsuallyFollowedBySpace('\t'));
+        assertFalse("Newline",     sp.isUsuallyFollowedBySpace('\n'));
+        assertFalse("Space",       sp.isUsuallyFollowedBySpace(' '));
+        assertTrue("Exclamation",  sp.isUsuallyFollowedBySpace('!'));
+        assertFalse("Quotation",   sp.isUsuallyFollowedBySpace('"'));
+        assertFalse("Number",      sp.isUsuallyFollowedBySpace('#'));
+        assertFalse("Dollar",      sp.isUsuallyFollowedBySpace('$'));
+        assertFalse("Percent",     sp.isUsuallyFollowedBySpace('%'));
+        assertTrue("Ampersand",    sp.isUsuallyFollowedBySpace('&'));
+        assertFalse("Apostrophe",  sp.isUsuallyFollowedBySpace('\''));
+        assertFalse("L Paren",     sp.isUsuallyFollowedBySpace('('));
+        assertTrue("R Paren",      sp.isUsuallyFollowedBySpace(')'));
+        assertFalse("Asterisk",    sp.isUsuallyFollowedBySpace('*'));
+        assertFalse("Plus",        sp.isUsuallyFollowedBySpace('+'));
+        assertTrue("Comma",        sp.isUsuallyFollowedBySpace(','));
+        assertFalse("Minus",       sp.isUsuallyFollowedBySpace('-'));
+        assertTrue("Period",       sp.isUsuallyFollowedBySpace('.'));
+        assertFalse("Slash",       sp.isUsuallyFollowedBySpace('/'));
+        assertTrue("Colon",        sp.isUsuallyFollowedBySpace(':'));
+        assertTrue("Semicolon",    sp.isUsuallyFollowedBySpace(';'));
+        assertFalse("L Angle",     sp.isUsuallyFollowedBySpace('<'));
+        assertFalse("Equal",       sp.isUsuallyFollowedBySpace('='));
+        assertFalse("R Angle",     sp.isUsuallyFollowedBySpace('>'));
+        assertTrue("Question",     sp.isUsuallyFollowedBySpace('?'));
+        assertFalse("Atmark",      sp.isUsuallyFollowedBySpace('@'));
+        assertFalse("L S Bracket", sp.isUsuallyFollowedBySpace('['));
+        assertFalse("B Slash",     sp.isUsuallyFollowedBySpace('\\'));
+        assertTrue("R S Bracket",  sp.isUsuallyFollowedBySpace(']'));
+        assertFalse("Circumflex",  sp.isUsuallyFollowedBySpace('^'));
+        assertFalse("Underscore",  sp.isUsuallyFollowedBySpace('_'));
+        assertFalse("Grave",       sp.isUsuallyFollowedBySpace('`'));
+        assertFalse("L C Brace",   sp.isUsuallyFollowedBySpace('{'));
+        assertFalse("V Line",      sp.isUsuallyFollowedBySpace('|'));
+        assertTrue("R C Brace",    sp.isUsuallyFollowedBySpace('}'));
+        assertFalse("Tilde",       sp.isUsuallyFollowedBySpace('~'));
+    }
+
+    public void testIsUsuallyFollowedBySpace() {
+        testingStandardFollowedBySpace(ENGLISH);
+        testingStandardFollowedBySpace(FRENCH);
+        testingStandardFollowedBySpace(CANADA_FRENCH);
+        testingStandardFollowedBySpace(ARMENIA_ARMENIAN);
+        assertTrue(ARMENIA_ARMENIAN.isUsuallyFollowedBySpace(ARMENIAN_FULL_STOP));
+        assertTrue(ARMENIA_ARMENIAN.isUsuallyFollowedBySpace(ARMENIAN_COMMA));
+    }
+
+    private static void testingStandardSentenceSeparator(final SpacingAndPunctuations sp) {
+        assertFalse("Tab",         sp.isUsuallyFollowedBySpace('\t'));
+        assertFalse("Newline",     sp.isUsuallyFollowedBySpace('\n'));
+        assertFalse("Space",       sp.isUsuallyFollowedBySpace(' '));
+        assertFalse("Exclamation", sp.isUsuallyFollowedBySpace('!'));
+        assertFalse("Quotation",   sp.isUsuallyFollowedBySpace('"'));
+        assertFalse("Number",      sp.isUsuallyFollowedBySpace('#'));
+        assertFalse("Dollar",      sp.isUsuallyFollowedBySpace('$'));
+        assertFalse("Percent",     sp.isUsuallyFollowedBySpace('%'));
+        assertFalse("Ampersand",   sp.isUsuallyFollowedBySpace('&'));
+        assertFalse("Apostrophe",  sp.isUsuallyFollowedBySpace('\''));
+        assertFalse("L Paren",     sp.isUsuallyFollowedBySpace('('));
+        assertFalse("R Paren",     sp.isUsuallyFollowedBySpace(')'));
+        assertFalse("Asterisk",    sp.isUsuallyFollowedBySpace('*'));
+        assertFalse("Plus",        sp.isUsuallyFollowedBySpace('+'));
+        assertFalse("Comma",       sp.isUsuallyFollowedBySpace(','));
+        assertFalse("Minus",       sp.isUsuallyFollowedBySpace('-'));
+        assertTrue("Period",       sp.isUsuallyFollowedBySpace('.'));
+        assertFalse("Slash",       sp.isUsuallyFollowedBySpace('/'));
+        assertFalse("Colon",       sp.isUsuallyFollowedBySpace(':'));
+        assertFalse("Semicolon",   sp.isUsuallyFollowedBySpace(';'));
+        assertFalse("L Angle",     sp.isUsuallyFollowedBySpace('<'));
+        assertFalse("Equal",       sp.isUsuallyFollowedBySpace('='));
+        assertFalse("R Angle",     sp.isUsuallyFollowedBySpace('>'));
+        assertFalse("Question",    sp.isUsuallyFollowedBySpace('?'));
+        assertFalse("Atmark",      sp.isUsuallyFollowedBySpace('@'));
+        assertFalse("L S Bracket", sp.isUsuallyFollowedBySpace('['));
+        assertFalse("B Slash",     sp.isUsuallyFollowedBySpace('\\'));
+        assertFalse("R S Bracket", sp.isUsuallyFollowedBySpace(']'));
+        assertFalse("Circumflex",  sp.isUsuallyFollowedBySpace('^'));
+        assertFalse("Underscore",  sp.isUsuallyFollowedBySpace('_'));
+        assertFalse("Grave",       sp.isUsuallyFollowedBySpace('`'));
+        assertFalse("L C Brace",   sp.isUsuallyFollowedBySpace('{'));
+        assertFalse("V Line",      sp.isUsuallyFollowedBySpace('|'));
+        assertFalse("R C Brace",   sp.isUsuallyFollowedBySpace('}'));
+        assertFalse("Tilde",       sp.isUsuallyFollowedBySpace('~'));
+    }
+
+    public void isSentenceSeparator() {
+        testingStandardSentenceSeparator(ENGLISH);
+        try {
+            testingStandardSentenceSeparator(ARMENIA_ARMENIAN);
+            fail("Armenian Sentence Separator");
+        } catch (final AssertionFailedError e) {
+            assertEquals("Period", e.getMessage());
+        }
+        assertTrue(ARMENIA_ARMENIAN.isSentenceSeparator(ARMENIAN_FULL_STOP));
+        assertFalse(ARMENIA_ARMENIAN.isSentenceSeparator(ARMENIAN_COMMA));
+    }
+
+    public void testLanguageHasSpace() {
+        assertTrue(ENGLISH.mCurrentLanguageHasSpaces);
+        assertTrue(FRENCH.mCurrentLanguageHasSpaces);
+        assertTrue(GERMAN.mCurrentLanguageHasSpaces);
+        assertFalse(THAI.mCurrentLanguageHasSpaces);
+        assertFalse(CAMBODIA_KHMER.mCurrentLanguageHasSpaces);
+        assertFalse(LAOS_LAO.mCurrentLanguageHasSpaces);
+        // TODO: We should fix these.
+        assertTrue(KHMER.mCurrentLanguageHasSpaces);
+        assertTrue(LAO.mCurrentLanguageHasSpaces);
+    }
+
+    public void testUsesAmericanTypography() {
+        assertTrue(ENGLISH.mUsesAmericanTypography);
+        assertTrue(UNITED_STATES.mUsesAmericanTypography);
+        assertTrue(UNITED_KINGDOM.mUsesAmericanTypography);
+        assertTrue(INDIA_ENGLISH.mUsesAmericanTypography);
+        assertFalse(FRENCH.mUsesAmericanTypography);
+        assertFalse(GERMAN.mUsesAmericanTypography);
+        assertFalse(SWISS_GERMAN.mUsesAmericanTypography);
+    }
+
+    public void testUsesGermanRules() {
+        assertFalse(ENGLISH.mUsesGermanRules);
+        assertFalse(FRENCH.mUsesGermanRules);
+        assertTrue(GERMAN.mUsesGermanRules);
+        assertTrue(SWISS_GERMAN.mUsesGermanRules);
+    }
+
+    // Punctuations for phone.
+    private static final String[] PUNCTUATION_LABELS_PHONE = {
+        "!", "?", ",", ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_"
+    };
+    private static final String[] PUNCTUATION_WORDS_PHONE_LTR = PUNCTUATION_LABELS_PHONE;
+    private static final String[] PUNCTUATION_WORDS_PHONE_HEBREW = {
+        "!", "?", ",", ":", ";", "\"", ")", "(", "'", "-", "/", "@", "_"
+    };
+    // U+061F: "؟" ARABIC QUESTION MARK
+    // U+060C: "،" ARABIC COMMA
+    // U+061B: "؛" ARABIC SEMICOLON
+    private static final String[] PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN = {
+        "!", "\u061F", "\u060C", ":", "\u061B", "\"", "(", ")", "'", "-", "/", "@", "_"
+    };
+    private static final String[] PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN = {
+        "!", "\u061F", "\u060C", ":", "\u061B", "\"", ")", "(", "'", "-", "/", "@", "_"
+    };
+
+    // Punctuations for tablet.
+    private static final String[] PUNCTUATION_LABELS_TABLET = {
+        ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_"
+    };
+    private static final String[] PUNCTUATION_WORDS_TABLET_LTR = PUNCTUATION_LABELS_TABLET;
+    private static final String[] PUNCTUATION_WORDS_TABLET_HEBREW = {
+        ":", ";", "\"", ")", "(", "'", "-", "/", "@", "_"
+    };
+    private static final String[] PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN = {
+        "!", "\u061F", ":", "\u061B", "\"", "'", "(", ")",  "-", "/", "@", "_"
+    };
+    private static final String[] PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN = {
+        "!", "\u061F", ":", "\u061B", "\"", "'", ")", "(",  "-", "/", "@", "_"
+    };
+
+    private static void testingStandardPunctuationSuggestions(final SpacingAndPunctuations sp,
+            final String[] punctuationLabels, final String[] punctuationWords) {
+        final SuggestedWords suggestedWords = sp.mSuggestPuncList;
+        assertFalse("typedWordValid", suggestedWords.mTypedWordValid);
+        assertFalse("willAutoCorrect", suggestedWords.mWillAutoCorrect);
+        assertTrue("isPunctuationSuggestions", suggestedWords.isPunctuationSuggestions());
+        assertFalse("isObsoleteSuggestions", suggestedWords.mIsObsoleteSuggestions);
+        assertFalse("isPrediction", suggestedWords.mIsPrediction);
+        assertEquals("size", punctuationLabels.length, suggestedWords.size());
+        for (int index = 0; index < suggestedWords.size(); index++) {
+            assertEquals("punctuation label at " + index,
+                    punctuationLabels[index], suggestedWords.getLabel(index));
+            assertEquals("punctuation word at " + index,
+                    punctuationWords[index], suggestedWords.getWord(index));
+        }
+    }
+
+    public void testPhonePunctuationSuggestions() {
+        if (!isPhone()) {
+            return;
+        }
+        testingStandardPunctuationSuggestions(ENGLISH,
+                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
+        testingStandardPunctuationSuggestions(FRENCH,
+                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
+        testingStandardPunctuationSuggestions(GERMAN,
+                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
+        testingStandardPunctuationSuggestions(ARABIC,
+                PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN);
+        testingStandardPunctuationSuggestions(PERSIAN,
+                PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN);
+        testingStandardPunctuationSuggestions(HEBREW,
+                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_HEBREW);
+    }
+
+    public void testTabletPunctuationSuggestions() {
+        if (!isTablet()) {
+            return;
+        }
+        testingStandardPunctuationSuggestions(ENGLISH,
+                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
+        testingStandardPunctuationSuggestions(FRENCH,
+                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
+        testingStandardPunctuationSuggestions(GERMAN,
+                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
+        testingStandardPunctuationSuggestions(ARABIC,
+                PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN);
+        testingStandardPunctuationSuggestions(PERSIAN,
+                PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN);
+        testingStandardPunctuationSuggestions(HEBREW,
+                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_HEBREW);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java b/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java
index 995d7f0..2272d6b 100644
--- a/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java
+++ b/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java
@@ -39,7 +39,7 @@
         // it yields 5).
         assertTrue(suggestions.length >= 2);
         // We also assume the top suggestion should be "this".
-        assertEquals("", "this", suggestions[0]);
+        assertEquals("Test basic spell checking", "this", suggestions[0]);
     }
 
     public void testRussianSpellchecker() {
@@ -62,4 +62,21 @@
         // Russian dictionary.
         assertEquals("", "года", suggestions[0]);
     }
+
+    public void testSpellcheckWithPeriods() {
+        changeLanguage("en_US");
+        mEditText.setText("I'm.sure ");
+        mEditText.setSelection(mEditText.getText().length());
+        mEditText.onAttachedToWindow();
+        sleep(1000);
+        runMessages();
+        sleep(1000);
+
+        final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
+        // If no span, the following will crash
+        final String[] suggestions = span.getSuggestions();
+        // The first suggestion should be "I'm sure".
+        assertEquals("Test spell checking of mistyped period for space", "I'm sure",
+                suggestions[0]);
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java
new file mode 100644
index 0000000..91c9c37
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/AdditionalSubtypeUtilsTests.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.Context;
+import android.os.Build;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils;
+
+import java.util.Locale;
+
+import static com.android.inputmethod.latin.Constants.Subtype.KEYBOARD_MODE;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.ASCII_CAPABLE;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.EMOJI_CAPABLE;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.IS_ADDITIONAL_SUBTYPE;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue.KEYBOARD_LAYOUT_SET;
+import static com.android.inputmethod.latin.Constants.Subtype.ExtraValue
+        .UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME;
+
+@SmallTest
+public class AdditionalSubtypeUtilsTests extends AndroidTestCase {
+
+    /**
+     * Predictable subtype ID for en_US dvorak layout. This is actually a hash code calculated as
+     * follows.
+     * <code>
+     * final boolean isAuxiliary = false;
+     * final boolean overrideImplicitlyEnabledSubtype = false;
+     * final int SUBTYPE_ID_EN_US_DVORAK = Arrays.hashCode(new Object[] {
+     *         "en_US",
+     *         "keyboard",
+     *         "KeyboardLayoutSet=dvorak"
+     *                 + ",AsciiCapable"
+     *                 + ",UntranslatableReplacementStringInSubtypeName=Dvorak"
+     *                 + ",EmojiCapable"
+     *                 + ",isAdditionalSubtype",
+     *         isAuxiliary,
+     *         overrideImplicitlyEnabledSubtype });
+     * </code>
+     */
+    private static int SUBTYPE_ID_EN_US_DVORAK = 0xb3c0cc56;
+    private static String EXTRA_VALUE_EN_US_DVORAK_ICS =
+            "KeyboardLayoutSet=dvorak" +
+            ",AsciiCapable" +
+            ",isAdditionalSubtype";
+    private static String EXTRA_VALUE_EN_US_DVORAK_JELLY_BEAN =
+            "KeyboardLayoutSet=dvorak" +
+            ",AsciiCapable" +
+            ",UntranslatableReplacementStringInSubtypeName=Dvorak" +
+            ",isAdditionalSubtype";
+    private static String EXTRA_VALUE_EN_US_DVORAK_KITKAT =
+            "KeyboardLayoutSet=dvorak" +
+            ",AsciiCapable" +
+            ",UntranslatableReplacementStringInSubtypeName=Dvorak" +
+            ",EmojiCapable" +
+            ",isAdditionalSubtype";
+
+    /**
+     * Predictable subtype ID for azerty layout. This is actually a hash code calculated as follows.
+     * <code>
+     * final boolean isAuxiliary = false;
+     * final boolean overrideImplicitlyEnabledSubtype = false;
+     * final int SUBTYPE_ID_ZZ_AZERTY = Arrays.hashCode(new Object[] {
+     *         "zz",
+     *         "keyboard",
+     *         "KeyboardLayoutSet=azerty"
+     *                 + ",AsciiCapable"
+     *                 + ",EmojiCapable"
+     *                 + ",isAdditionalSubtype",
+     *         isAuxiliary,
+     *         overrideImplicitlyEnabledSubtype });
+     * </code>
+     */
+    private static int SUBTYPE_ID_ZZ_AZERTY = 0x5b6be697;
+    private static String EXTRA_VALUE_ZZ_AZERTY_ICS =
+            "KeyboardLayoutSet=azerty" +
+            ",AsciiCapable" +
+            ",isAdditionalSubtype";
+    private static String EXTRA_VALUE_ZZ_AZERTY_KITKAT =
+            "KeyboardLayoutSet=azerty" +
+            ",AsciiCapable" +
+            ",EmojiCapable" +
+            ",isAdditionalSubtype";
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        final Context context = getContext();
+        SubtypeLocaleUtils.init(context);
+    }
+
+    private static void assertEnUsDvorak(InputMethodSubtype subtype) {
+        assertEquals("en_US", subtype.getLocale());
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            assertEquals(EXTRA_VALUE_EN_US_DVORAK_KITKAT, subtype.getExtraValue());
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
+            assertEquals(EXTRA_VALUE_EN_US_DVORAK_JELLY_BEAN, subtype.getExtraValue());
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+            assertEquals(EXTRA_VALUE_EN_US_DVORAK_ICS, subtype.getExtraValue());
+        }
+        assertTrue(subtype.containsExtraValueKey(ASCII_CAPABLE));
+        assertTrue(InputMethodSubtypeCompatUtils.isAsciiCapable(subtype));
+        // TODO: Enable following test
+        // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+        //    assertTrue(InputMethodSubtypeCompatUtils.isAsciiCapableWithAPI(subtype));
+        // }
+        assertTrue(subtype.containsExtraValueKey(EMOJI_CAPABLE));
+        assertTrue(subtype.containsExtraValueKey(IS_ADDITIONAL_SUBTYPE));
+        assertEquals("dvorak", subtype.getExtraValueOf(KEYBOARD_LAYOUT_SET));
+        assertEquals("Dvorak", subtype.getExtraValueOf(UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME));
+        assertEquals(KEYBOARD_MODE, subtype.getMode());
+        assertEquals(SUBTYPE_ID_EN_US_DVORAK, subtype.hashCode());
+    }
+
+    private static void assertAzerty(InputMethodSubtype subtype) {
+        assertEquals("zz", subtype.getLocale());
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            assertEquals(EXTRA_VALUE_ZZ_AZERTY_KITKAT, subtype.getExtraValue());
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+            assertEquals(EXTRA_VALUE_ZZ_AZERTY_ICS, subtype.getExtraValue());
+        }
+        assertTrue(subtype.containsExtraValueKey(ASCII_CAPABLE));
+        assertTrue(InputMethodSubtypeCompatUtils.isAsciiCapable(subtype));
+        // TODO: Enable following test
+        // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+        //    assertTrue(InputMethodSubtypeCompatUtils.isAsciiCapableWithAPI(subtype));
+        // }
+        assertTrue(subtype.containsExtraValueKey(EMOJI_CAPABLE));
+        assertTrue(subtype.containsExtraValueKey(IS_ADDITIONAL_SUBTYPE));
+        assertEquals("azerty", subtype.getExtraValueOf(KEYBOARD_LAYOUT_SET));
+        assertFalse(subtype.containsExtraValueKey(UNTRANSLATABLE_STRING_IN_SUBTYPE_NAME));
+        assertEquals(KEYBOARD_MODE, subtype.getMode());
+        assertEquals(SUBTYPE_ID_ZZ_AZERTY, subtype.hashCode());
+    }
+
+    public void testRestorable() {
+        final InputMethodSubtype EN_UK_DVORAK =
+                AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                        Locale.US.toString(), "dvorak");
+        final InputMethodSubtype ZZ_AZERTY =
+                AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                        SubtypeLocaleUtils.NO_LANGUAGE, "azerty");
+        assertEnUsDvorak(EN_UK_DVORAK);
+        assertAzerty(ZZ_AZERTY);
+
+        // Make sure the subtype can be stored and restored in a deterministic manner.
+        final InputMethodSubtype[] subtypes = { EN_UK_DVORAK, ZZ_AZERTY };
+        final String prefSubtype = AdditionalSubtypeUtils.createPrefSubtypes(subtypes);
+        final InputMethodSubtype[] restoredSubtypes =
+                AdditionalSubtypeUtils.createAdditionalSubtypesArray(prefSubtype);
+        assertEquals(2, restoredSubtypes.length);
+        final InputMethodSubtype restored_EN_UK_DVORAK = restoredSubtypes[0];
+        final InputMethodSubtype restored_ZZ_AZERTY = restoredSubtypes[1];
+
+        assertEnUsDvorak(restored_EN_UK_DVORAK);
+        assertAzerty(restored_ZZ_AZERTY);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java b/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java
index 7fd1679..1501e94 100644
--- a/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/AsyncResultHolderTests.java
@@ -45,27 +45,27 @@
     }
 
     public void testGetWithoutSet() {
-        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<Integer>();
+        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>();
         final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS);
         assertEquals(DEFAULT_VALUE, resultValue);
     }
 
     public void testGetBeforeSet() {
-        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<Integer>();
+        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>();
         setAfterGivenTime(holder, SET_VALUE, TIMEOUT_IN_MILLISECONDS + MARGIN_IN_MILLISECONDS);
         final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS);
         assertEquals(DEFAULT_VALUE, resultValue);
     }
 
     public void testGetAfterSet() {
-        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<Integer>();
+        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>();
         holder.set(SET_VALUE);
         final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS);
         assertEquals(SET_VALUE, resultValue);
     }
 
     public void testGetBeforeTimeout() {
-        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<Integer>();
+        final AsyncResultHolder<Integer> holder = new AsyncResultHolder<>();
         setAfterGivenTime(holder, SET_VALUE, TIMEOUT_IN_MILLISECONDS - MARGIN_IN_MILLISECONDS);
         final int resultValue = holder.get(DEFAULT_VALUE, TIMEOUT_IN_MILLISECONDS);
         assertEquals(SET_VALUE, resultValue);
diff --git a/tests/src/com/android/inputmethod/latin/utils/Base64ReaderTests.java b/tests/src/com/android/inputmethod/latin/utils/Base64ReaderTests.java
deleted file mode 100644
index b311f5d..0000000
--- a/tests/src/com/android/inputmethod/latin/utils/Base64ReaderTests.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.StringReader;
-
-@SmallTest
-public class Base64ReaderTests extends AndroidTestCase {
-    private static final String EMPTY_STRING = "";
-    private static final String INCOMPLETE_CHAR1 = "Q";
-    // Encode 'A'.
-    private static final String INCOMPLETE_CHAR2 = "QQ";
-    // Encode 'A', 'B'
-    private static final String INCOMPLETE_CHAR3 = "QUI";
-    // Encode 'A', 'B', 'C'
-    private static final String COMPLETE_CHAR4 = "QUJD";
-    private static final String ALL_BYTE_PATTERN =
-            "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\n"
-            + "JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZH\n"
-            + "SElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr\n"
-            + "bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6P\n"
-            + "kJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKz\n"
-            + "tLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX\n"
-            + "2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7\n"
-            + "/P3+/w==";
-
-    public void test0CharInt8() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(EMPTY_STRING)));
-        try {
-            reader.readUint8();
-            fail("0 char");
-        } catch (final EOFException e) {
-            assertEquals("0 char", 0, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test1CharInt8() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(INCOMPLETE_CHAR1)));
-        try {
-            reader.readUint8();
-            fail("1 char");
-        } catch (final EOFException e) {
-            assertEquals("1 char", 0, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test2CharsInt8() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(INCOMPLETE_CHAR2)));
-        try {
-            final int v1 = reader.readUint8();
-            assertEquals("2 chars pos 0", 'A', v1);
-            reader.readUint8();
-            fail("2 chars");
-        } catch (final EOFException e) {
-            assertEquals("2 chars", 1, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test3CharsInt8() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(INCOMPLETE_CHAR3)));
-        try {
-            final int v1 = reader.readUint8();
-            assertEquals("3 chars pos 0", 'A', v1);
-            final int v2 = reader.readUint8();
-            assertEquals("3 chars pos 1", 'B', v2);
-            reader.readUint8();
-            fail("3 chars");
-        } catch (final EOFException e) {
-            assertEquals("3 chars", 2, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test4CharsInt8() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(COMPLETE_CHAR4)));
-        try {
-            final int v1 = reader.readUint8();
-            assertEquals("4 chars pos 0", 'A', v1);
-            final int v2 = reader.readUint8();
-            assertEquals("4 chars pos 1", 'B', v2);
-            final int v3 = reader.readUint8();
-            assertEquals("4 chars pos 2", 'C', v3);
-            reader.readUint8();
-            fail("4 chars");
-        } catch (final EOFException e) {
-            assertEquals("4 chars", 3, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void testAllBytePatternInt8() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(ALL_BYTE_PATTERN)));
-        try {
-            for (int i = 0; i <= 0xff; i++) {
-                final int v = reader.readUint8();
-                assertEquals("value: all byte pattern: pos " + i, i, v);
-                assertEquals("count: all byte pattern: pos " + i, i + 1, reader.getByteCount());
-            }
-        } catch (final EOFException e) {
-            assertEquals("all byte pattern", 256, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test0CharInt16() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(EMPTY_STRING)));
-        try {
-            reader.readInt16();
-            fail("0 char");
-        } catch (final EOFException e) {
-            assertEquals("0 char", 0, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test1CharInt16() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(INCOMPLETE_CHAR1)));
-        try {
-            reader.readInt16();
-            fail("1 char");
-        } catch (final EOFException e) {
-            assertEquals("1 char", 0, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test2CharsInt16() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(INCOMPLETE_CHAR2)));
-        try {
-            reader.readInt16();
-            fail("2 chars");
-        } catch (final EOFException e) {
-            assertEquals("2 chars", 1, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test3CharsInt16() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(INCOMPLETE_CHAR3)));
-        try {
-            final short v1 = reader.readInt16();
-            assertEquals("3 chars pos 0", 'A' << 8 | 'B', v1);
-            reader.readInt16();
-            fail("3 chars");
-        } catch (final EOFException e) {
-            assertEquals("3 chars", 2, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void test4CharsInt16() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(COMPLETE_CHAR4)));
-        try {
-            final short v1 = reader.readInt16();
-            assertEquals("4 chars pos 0", 'A' << 8 | 'B', v1);
-            reader.readInt16();
-            fail("4 chars");
-        } catch (final EOFException e) {
-            assertEquals("4 chars", 3, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-
-    public void testAllBytePatternInt16() {
-        final Base64Reader reader = new Base64Reader(
-                new LineNumberReader(new StringReader(ALL_BYTE_PATTERN)));
-        try {
-            for (int i = 0; i <= 0xff; i += 2) {
-                final short v = reader.readInt16();
-                final short expected = (short)(i << 8 | (i + 1));
-                assertEquals("value: all byte pattern: pos " + i, expected, v);
-                assertEquals("count: all byte pattern: pos " + i, i + 2, reader.getByteCount());
-            }
-        } catch (final EOFException e) {
-            assertEquals("all byte pattern", 256, reader.getByteCount());
-        } catch (final IOException e) {
-            fail("IOException: " + e);
-        }
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtilsTests.java
new file mode 100644
index 0000000..a333ee9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtilsTests.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.inputmethod.latin.BinaryDictionary;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.makedict.FormatSpec;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@LargeTest
+public class BinaryDictionaryUtilsTests extends AndroidTestCase {
+    private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
+    private static final String TEST_LOCALE = "test";
+
+    private File createEmptyDictionaryAndGetFile(final String dictId,
+            final int formatVersion) throws IOException {
+        if (formatVersion == FormatSpec.VERSION4) {
+            return createEmptyVer4DictionaryAndGetFile(dictId);
+        } else {
+            throw new IOException("Dictionary format version " + formatVersion
+                    + " is not supported.");
+        }
+    }
+
+    private File createEmptyVer4DictionaryAndGetFile(final String dictId) throws IOException {
+        final File file = getDictFile(dictId);
+        FileUtils.deleteRecursively(file);
+        Map<String, String> attributeMap = new HashMap<>();
+        attributeMap.put(DictionaryHeader.DICTIONARY_ID_KEY, dictId);
+        attributeMap.put(DictionaryHeader.DICTIONARY_VERSION_KEY,
+                String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis())));
+        attributeMap.put(DictionaryHeader.USES_FORGETTING_CURVE_KEY,
+                DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+        attributeMap.put(DictionaryHeader.HAS_HISTORICAL_INFO_KEY,
+                DictionaryHeader.ATTRIBUTE_VALUE_TRUE);
+        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), FormatSpec.VERSION4,
+                LocaleUtils.constructLocaleFromString(TEST_LOCALE), attributeMap)) {
+            return file;
+        } else {
+            throw new IOException("Empty dictionary " + file.getAbsolutePath()
+                    + " cannot be created.");
+        }
+    }
+
+    private File getDictFile(final String dictId) {
+        return new File(getContext().getCacheDir(), dictId + TEST_DICT_FILE_EXTENSION);
+    }
+
+    public void testRenameDictionary() {
+        final int formatVersion = FormatSpec.VERSION4;
+        File dictFile0 = null;
+        try {
+            dictFile0 = createEmptyDictionaryAndGetFile("MoveFromDictionary", formatVersion);
+        } catch (IOException e) {
+            fail("IOException while writing an initial dictionary : " + e);
+        }
+        final File dictFile1 = getDictFile("MoveToDictionary");
+        FileUtils.deleteRecursively(dictFile1);
+        assertTrue(BinaryDictionaryUtils.renameDict(dictFile0, dictFile1));
+        assertFalse(dictFile0.exists());
+        assertTrue(dictFile1.exists());
+        BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile1.getAbsolutePath(),
+                0 /* offset */, dictFile1.length(), true /* useFullEditDistance */,
+                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
+        assertTrue(binaryDictionary.isValidDictionary());
+        assertTrue(binaryDictionary.getFormatVersion() == formatVersion);
+        binaryDictionary.close();
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/ByteArrayDictBuffer.java b/tests/src/com/android/inputmethod/latin/utils/ByteArrayDictBuffer.java
similarity index 100%
rename from java/src/com/android/inputmethod/latin/utils/ByteArrayDictBuffer.java
rename to tests/src/com/android/inputmethod/latin/utils/ByteArrayDictBuffer.java
diff --git a/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java
index 1fd5c98..c746c83 100644
--- a/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/CapsModeUtilsTests.java
@@ -16,75 +16,113 @@
 
 package com.android.inputmethod.latin.utils;
 
-import com.android.inputmethod.latin.settings.SettingsValues;
-
+import android.content.res.Resources;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.text.TextUtils;
 
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+import com.android.inputmethod.latin.utils.LocaleUtils;
+
 import java.util.Locale;
 
 @SmallTest
 public class CapsModeUtilsTests extends AndroidTestCase {
     private static void onePathForCaps(final CharSequence cs, final int expectedResult,
-            final int mask, final SettingsValues sv, final boolean hasSpaceBefore) {
-        int oneTimeResult = expectedResult & mask;
+            final int mask, final SpacingAndPunctuations sp, final boolean hasSpaceBefore) {
+        final int oneTimeResult = expectedResult & mask;
         assertEquals("After >" + cs + "<", oneTimeResult,
-                CapsModeUtils.getCapsMode(cs, mask, sv, hasSpaceBefore));
+                CapsModeUtils.getCapsMode(cs, mask, sp, hasSpaceBefore));
     }
 
     private static void allPathsForCaps(final CharSequence cs, final int expectedResult,
-            final SettingsValues sv, final boolean hasSpaceBefore) {
+            final SpacingAndPunctuations sp, final boolean hasSpaceBefore) {
         final int c = TextUtils.CAP_MODE_CHARACTERS;
         final int w = TextUtils.CAP_MODE_WORDS;
         final int s = TextUtils.CAP_MODE_SENTENCES;
-        onePathForCaps(cs, expectedResult, c | w | s, sv, hasSpaceBefore);
-        onePathForCaps(cs, expectedResult, w | s, sv, hasSpaceBefore);
-        onePathForCaps(cs, expectedResult, c | s, sv, hasSpaceBefore);
-        onePathForCaps(cs, expectedResult, c | w, sv, hasSpaceBefore);
-        onePathForCaps(cs, expectedResult, c, sv, hasSpaceBefore);
-        onePathForCaps(cs, expectedResult, w, sv, hasSpaceBefore);
-        onePathForCaps(cs, expectedResult, s, sv, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, c | w | s, sp, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, w | s, sp, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, c | s, sp, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, c | w, sp, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, c, sp, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, w, sp, hasSpaceBefore);
+        onePathForCaps(cs, expectedResult, s, sp, hasSpaceBefore);
     }
 
     public void testGetCapsMode() {
         final int c = TextUtils.CAP_MODE_CHARACTERS;
         final int w = TextUtils.CAP_MODE_WORDS;
         final int s = TextUtils.CAP_MODE_SENTENCES;
-        SettingsValues sv = SettingsValues.makeDummySettingsValuesForTest(Locale.ENGLISH);
-        allPathsForCaps("", c | w | s, sv, false);
-        allPathsForCaps("Word", c, sv, false);
-        allPathsForCaps("Word.", c, sv, false);
-        allPathsForCaps("Word ", c | w, sv, false);
-        allPathsForCaps("Word. ", c | w | s, sv, false);
-        allPathsForCaps("Word..", c, sv, false);
-        allPathsForCaps("Word.. ", c | w | s, sv, false);
-        allPathsForCaps("Word... ", c | w | s, sv, false);
-        allPathsForCaps("Word ... ", c | w | s, sv, false);
-        allPathsForCaps("Word . ", c | w, sv, false);
-        allPathsForCaps("In the U.S ", c | w, sv, false);
-        allPathsForCaps("In the U.S. ", c | w, sv, false);
-        allPathsForCaps("Some stuff (e.g. ", c | w, sv, false);
-        allPathsForCaps("In the U.S.. ", c | w | s, sv, false);
-        allPathsForCaps("\"Word.\" ", c | w | s, sv, false);
-        allPathsForCaps("\"Word\". ", c | w | s, sv, false);
-        allPathsForCaps("\"Word\" ", c | w, sv, false);
+        final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() {
+            @Override
+            protected SpacingAndPunctuations job(final Resources res) {
+                return new SpacingAndPunctuations(res);
+            }
+        };
+        final Resources res = getContext().getResources();
+        SpacingAndPunctuations sp = job.runInLocale(res, Locale.ENGLISH);
+        allPathsForCaps("", c | w | s, sp, false);
+        allPathsForCaps("Word", c, sp, false);
+        allPathsForCaps("Word.", c, sp, false);
+        allPathsForCaps("Word ", c | w, sp, false);
+        allPathsForCaps("Word. ", c | w | s, sp, false);
+        allPathsForCaps("Word..", c, sp, false);
+        allPathsForCaps("Word.. ", c | w | s, sp, false);
+        allPathsForCaps("Word... ", c | w | s, sp, false);
+        allPathsForCaps("Word ... ", c | w | s, sp, false);
+        allPathsForCaps("Word . ", c | w, sp, false);
+        allPathsForCaps("In the U.S ", c | w, sp, false);
+        allPathsForCaps("In the U.S. ", c | w, sp, false);
+        allPathsForCaps("Some stuff (e.g. ", c | w, sp, false);
+        allPathsForCaps("In the U.S.. ", c | w | s, sp, false);
+        allPathsForCaps("\"Word.\" ", c | w | s, sp, false);
+        allPathsForCaps("\"Word\". ", c | w | s, sp, false);
+        allPathsForCaps("\"Word\" ", c | w, sp, false);
 
         // Test for phantom space
-        allPathsForCaps("Word", c | w, sv, true);
-        allPathsForCaps("Word.", c | w | s, sv, true);
+        allPathsForCaps("Word", c | w, sp, true);
+        allPathsForCaps("Word.", c | w | s, sp, true);
 
         // Tests after some whitespace
-        allPathsForCaps("Word\n", c | w | s, sv, false);
-        allPathsForCaps("Word\n", c | w | s, sv, true);
-        allPathsForCaps("Word\n ", c | w | s, sv, true);
-        allPathsForCaps("Word.\n", c | w | s, sv, false);
-        allPathsForCaps("Word.\n", c | w | s, sv, true);
-        allPathsForCaps("Word.\n ", c | w | s, sv, true);
+        allPathsForCaps("Word\n", c | w | s, sp, false);
+        allPathsForCaps("Word\n", c | w | s, sp, true);
+        allPathsForCaps("Word\n ", c | w | s, sp, true);
+        allPathsForCaps("Word.\n", c | w | s, sp, false);
+        allPathsForCaps("Word.\n", c | w | s, sp, true);
+        allPathsForCaps("Word.\n ", c | w | s, sp, true);
 
-        sv = SettingsValues.makeDummySettingsValuesForTest(Locale.FRENCH);
-        allPathsForCaps("\"Word.\" ", c | w, sv, false);
-        allPathsForCaps("\"Word\". ", c | w | s, sv, false);
-        allPathsForCaps("\"Word\" ", c | w, sv, false);
+        sp = job.runInLocale(res, Locale.FRENCH);
+        allPathsForCaps("\"Word.\" ", c | w, sp, false);
+        allPathsForCaps("\"Word\". ", c | w | s, sp, false);
+        allPathsForCaps("\"Word\" ", c | w, sp, false);
+
+        // Test special case for German. German does not capitalize at the start of a
+        // line when the previous line starts with a comma. It does in other cases.
+        sp = job.runInLocale(res, Locale.GERMAN);
+        allPathsForCaps("Liebe Sara,\n", c | w, sp, false);
+        allPathsForCaps("Liebe Sara,\n", c | w, sp, true);
+        allPathsForCaps("Liebe Sara,  \n  ", c | w, sp, false);
+        allPathsForCaps("Liebe Sara  \n  ", c | w | s, sp, false);
+        allPathsForCaps("Liebe Sara.\n  ", c | w | s, sp, false);
+        sp = job.runInLocale(res, Locale.ENGLISH);
+        allPathsForCaps("Liebe Sara,\n", c | w | s, sp, false);
+        allPathsForCaps("Liebe Sara,\n", c | w | s, sp, true);
+        allPathsForCaps("Liebe Sara,  \n  ", c | w | s, sp, false);
+        allPathsForCaps("Liebe Sara  \n  ", c | w | s, sp, false);
+        allPathsForCaps("Liebe Sara.\n  ", c | w | s, sp, false);
+
+        // Test armenian period
+        sp = job.runInLocale(res, LocaleUtils.constructLocaleFromString("hy_AM"));
+        assertTrue("Period is not sentence separator in Armenian",
+                !sp.isSentenceSeparator('.'));
+        assertTrue("Sentence separator is Armenian period in Armenian",
+                sp.isSentenceSeparator(0x589));
+        // No space : capitalize only if MODE_CHARACTERS
+        allPathsForCaps("Word", c, sp, false);
+        allPathsForCaps("Word.", c, sp, false);
+        // Space, but no armenian period : capitalize if MODE_WORDS but not SENTENCES
+        allPathsForCaps("Word. ", c | w, sp, false);
+        // Armenian period : capitalize if MODE_SENTENCES
+        allPathsForCaps("Word\u0589 ", c | w | s, sp, false);
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/utils/CsvUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/CsvUtilsTests.java
deleted file mode 100644
index a0fa8fe..0000000
--- a/tests/src/com/android/inputmethod/latin/utils/CsvUtilsTests.java
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.inputmethod.latin.utils.CsvUtils.CsvParseException;
-
-import java.util.Arrays;
-
-@SmallTest
-public class CsvUtilsTests extends AndroidTestCase {
-    public void testUnescape() {
-        assertEquals("", CsvUtils.unescapeField(""));
-        assertEquals("text", CsvUtils.unescapeField("text")); // text
-        assertEquals("", CsvUtils.unescapeField("\"\"")); // ""
-        assertEquals("\"", CsvUtils.unescapeField("\"\"\"\"")); // """" -> "
-        assertEquals("text", CsvUtils.unescapeField("\"text\"")); // "text" -> text
-        assertEquals("\"text", CsvUtils.unescapeField("\"\"\"text\"")); // """text" -> "text
-        assertEquals("text\"", CsvUtils.unescapeField("\"text\"\"\"")); // "text""" -> text"
-        assertEquals("te\"xt", CsvUtils.unescapeField("\"te\"\"xt\"")); // "te""xt" -> te"xt
-        assertEquals("\"text\"",
-                CsvUtils.unescapeField("\"\"\"text\"\"\"")); // """text""" -> "text"
-        assertEquals("t\"e\"x\"t",
-                CsvUtils.unescapeField("\"t\"\"e\"\"x\"\"t\"")); // "t""e""x""t" -> t"e"x"t
-    }
-
-    public void testUnescapeException() {
-        try {
-            final String text = CsvUtils.unescapeField("\""); // "
-            fail("Unterminated quote: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"\"\""); // """
-            fail("Unterminated quote: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"\"\"\"\""); // """""
-            fail("Unterminated quote: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"text"); // "text
-            fail("Unterminated quote: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("text\""); // text"
-            fail("Raw quote in text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("te\"xt"); // te"xt
-            fail("Raw quote in text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"\"text"); // ""text
-            fail("Raw quote in quoted text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in quoted text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("text\"\""); // text""
-            fail("Escaped quote in text: text=" + text);
-        } catch (final CsvParseException success)  {
-            assertEquals("Escaped quote in text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("te\"\"xt"); // te""xt
-            fail("Escaped quote in text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Escaped quote in text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"\"text\""); // ""text"
-            fail("Raw quote in quoted text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in quoted text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"text\"\""); // "text""
-            fail("Unterminated quote: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"te\"xt\""); // "te"xt"
-            fail("Raw quote in quoted text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in quoted text", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\"b,c"); // "b,c
-            fail("Unterminated quote: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String text = CsvUtils.unescapeField("\",\"a\""); // ","a"
-            fail("Raw quote in quoted text: text=" + text);
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in quoted text", success.getMessage());
-        }
-    }
-
-    private static <T> void assertArrayEquals(final T[] expected, final T[] actual) {
-        if (expected == actual) {
-            return;
-        }
-        if (expected == null || actual == null) {
-            assertEquals(Arrays.toString(expected), Arrays.toString(actual));
-            return;
-        }
-        if (expected.length != actual.length) {
-            assertEquals("[length]", Arrays.toString(expected), Arrays.toString(actual));
-            return;
-        }
-        for (int i = 0; i < expected.length; i++) {
-            final T e = expected[i];
-            final T a = actual[i];
-            if (e == a) {
-                continue;
-            }
-            assertEquals("["+i+"]", expected[i], actual[i]);
-        }
-    }
-
-    public void testSplit() {
-        assertArrayEquals(new String[]{""}, CsvUtils.split(""));
-        assertArrayEquals(new String[]{"  "}, CsvUtils.split("  "));
-        assertArrayEquals(new String[]{"text"}, CsvUtils.split("text"));
-        assertArrayEquals(new String[]{" a b "}, CsvUtils.split(" a b "));
-
-        assertArrayEquals(new String[]{"", ""}, CsvUtils.split(","));
-        assertArrayEquals(new String[]{"", "", ""}, CsvUtils.split(",,"));
-        assertArrayEquals(new String[]{" ", " "}, CsvUtils.split(" , "));
-        assertArrayEquals(new String[]{" ", " ", " "}, CsvUtils.split(" , , "));
-        assertArrayEquals(new String[]{"a", "b"}, CsvUtils.split("a,b"));
-        assertArrayEquals(new String[]{" a ", " b "}, CsvUtils.split(" a , b "));
-
-        assertArrayEquals(new String[]{"text"},
-                CsvUtils.split("\"text\"")); // "text"
-        assertArrayEquals(new String[]{" text "},
-                CsvUtils.split("\" text \"")); // "_text_"
-
-        assertArrayEquals(new String[]{""},
-                CsvUtils.split("\"\"")); // ""
-        assertArrayEquals(new String[]{"\""},
-                CsvUtils.split("\"\"\"\"")); // """"
-        assertArrayEquals(new String[]{"", ""},
-                CsvUtils.split("\"\",\"\"")); // "",""
-        assertArrayEquals(new String[]{"\",\""},
-                CsvUtils.split("\"\"\",\"\"\"")); // ""","""
-        assertArrayEquals(new String[]{"\"", "\""},
-                CsvUtils.split("\"\"\"\",\"\"\"\"")); // """",""""
-        assertArrayEquals(new String[]{"\"", "\",\""},
-                CsvUtils.split("\"\"\"\",\"\"\",\"\"\"")); // """",""","""
-        assertArrayEquals(new String[]{"\",\"", "\""},
-                CsvUtils.split("\"\"\",\"\"\",\"\"\"\"")); // """,""",""""
-
-        assertArrayEquals(new String[]{" a ", " b , c "},
-                CsvUtils.split(" a ,\" b , c \"")); // _a_,"_b_,_c_"
-        assertArrayEquals(new String[]{" a ", " b , c ", " d "},
-                CsvUtils.split(" a ,\" b , c \", d ")); // _a_,"_b_,_c_",_d_
-    }
-
-    public void testSplitException() {
-        try {
-            final String[] fields = CsvUtils.split(" \"text\" "); // _"text"_
-            fail("Raw quote in text: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in text", success.getMessage());
-        }
-        try {
-            final String[] fields = CsvUtils.split(" \" text \" "); // _"_text_"_
-            fail("Raw quote in text: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in text", success.getMessage());
-        }
-
-        try {
-            final String[] fields = CsvUtils.split("a,\"b,"); // a,",b
-            fail("Unterminated quote: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String[] fields = CsvUtils.split("a,\"\"\",b"); // a,""",b
-            fail("Unterminated quote: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String[] fields = CsvUtils.split("a,\"\"\"\"\",b"); // a,""""",b
-            fail("Unterminated quote: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String[] fields = CsvUtils.split("a,\"b,c"); // a,"b,c
-            fail("Unterminated quote: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Unterminated quote", success.getMessage());
-        }
-        try {
-            final String[] fields = CsvUtils.split("a,\",\"b,c"); // a,","b,c
-            fail("Raw quote in quoted text: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in quoted text", success.getMessage());
-        }
-        try {
-            final String[] fields = CsvUtils.split("a,\",\"b\",\",c"); // a,","b",",c
-            fail("Raw quote in quoted text: fields=" + Arrays.toString(fields));
-        } catch (final CsvParseException success) {
-            assertEquals("Raw quote in quoted text", success.getMessage());
-        }
-    }
-
-    public void testSplitWithTrimSpaces() {
-        final int trimSpaces = CsvUtils.SPLIT_FLAGS_TRIM_SPACES;
-        assertArrayEquals(new String[]{""}, CsvUtils.split(trimSpaces, ""));
-        assertArrayEquals(new String[]{""}, CsvUtils.split(trimSpaces, "  "));
-        assertArrayEquals(new String[]{"text"}, CsvUtils.split(trimSpaces, "text"));
-        assertArrayEquals(new String[]{"a b"}, CsvUtils.split(trimSpaces, " a b "));
-
-        assertArrayEquals(new String[]{"", ""}, CsvUtils.split(trimSpaces, ","));
-        assertArrayEquals(new String[]{"", "", ""}, CsvUtils.split(trimSpaces, ",,"));
-        assertArrayEquals(new String[]{"", ""}, CsvUtils.split(trimSpaces, " , "));
-        assertArrayEquals(new String[]{"", "", ""}, CsvUtils.split(trimSpaces, " , , "));
-        assertArrayEquals(new String[]{"a", "b"}, CsvUtils.split(trimSpaces, "a,b"));
-        assertArrayEquals(new String[]{"a", "b"}, CsvUtils.split(trimSpaces, " a , b "));
-
-        assertArrayEquals(new String[]{"text"},
-                CsvUtils.split(trimSpaces, "\"text\"")); // "text"
-        assertArrayEquals(new String[]{"text"},
-                CsvUtils.split(trimSpaces, " \"text\" ")); // _"text"_
-        assertArrayEquals(new String[]{" text "},
-                CsvUtils.split(trimSpaces, "\" text \"")); // "_text_"
-        assertArrayEquals(new String[]{" text "},
-                CsvUtils.split(trimSpaces, " \" text \" ")); // _"_text_"_
-        assertArrayEquals(new String[]{"a", "b"},
-                CsvUtils.split(trimSpaces, " \"a\" , \"b\" ")); // _"a"_,_"b"_
-
-        assertArrayEquals(new String[]{""},
-                CsvUtils.split(trimSpaces, " \"\" ")); // _""_
-        assertArrayEquals(new String[]{"\""},
-                CsvUtils.split(trimSpaces, " \"\"\"\" ")); // _""""_
-        assertArrayEquals(new String[]{"", ""},
-                CsvUtils.split(trimSpaces, " \"\" , \"\" ")); // _""_,_""_
-        assertArrayEquals(new String[]{"\" , \""},
-                CsvUtils.split(trimSpaces, " \"\"\" , \"\"\" ")); // _"""_,_"""_
-        assertArrayEquals(new String[]{"\"", "\""},
-                CsvUtils.split(trimSpaces, " \"\"\"\" , \"\"\"\" ")); // _""""_,_""""_
-        assertArrayEquals(new String[]{"\"", "\" , \""},
-                CsvUtils.split(trimSpaces, " \"\"\"\" , \"\"\" , \"\"\" ")); // _""""_,_"""_,_"""_
-        assertArrayEquals(new String[]{"\" , \"", "\""},
-                CsvUtils.split(trimSpaces, " \"\"\" , \"\"\" , \"\"\"\" ")); // _"""_,_"""_,_""""_
-
-        assertArrayEquals(new String[]{"a", " b , c "},
-                CsvUtils.split(trimSpaces, " a , \" b , c \" ")); // _a_,_"_b_,_c_"_
-        assertArrayEquals(new String[]{"a", " b , c ", "d"},
-                CsvUtils.split(trimSpaces, " a, \" b , c \" , d ")); // _a,_"_b_,_c_"_,_d_
-    }
-
-    public void testEscape() {
-        assertEquals("", CsvUtils.escapeField("", false));
-        assertEquals("plain", CsvUtils.escapeField("plain", false));
-        assertEquals(" ", CsvUtils.escapeField(" ", false));
-        assertEquals("  ", CsvUtils.escapeField("  ", false));
-        assertEquals("a space", CsvUtils.escapeField("a space", false));
-        assertEquals(" space-at-start", CsvUtils.escapeField(" space-at-start", false));
-        assertEquals("space-at-end ", CsvUtils.escapeField("space-at-end ", false));
-        assertEquals("a lot of spaces", CsvUtils.escapeField("a lot of spaces", false));
-        assertEquals("\",\"", CsvUtils.escapeField(",", false));
-        assertEquals("\",,\"", CsvUtils.escapeField(",,", false));
-        assertEquals("\"a,comma\"", CsvUtils.escapeField("a,comma", false));
-        assertEquals("\",comma-at-begin\"", CsvUtils.escapeField(",comma-at-begin", false));
-        assertEquals("\"comma-at-end,\"", CsvUtils.escapeField("comma-at-end,", false));
-        assertEquals("\",,a,lot,,,of,commas,,\"",
-                CsvUtils.escapeField(",,a,lot,,,of,commas,,", false));
-        assertEquals("\"a comma,and a space\"", CsvUtils.escapeField("a comma,and a space", false));
-        assertEquals("\"\"\"\"", CsvUtils.escapeField("\"", false)); // " -> """"
-        assertEquals("\"\"\"\"\"\"", CsvUtils.escapeField("\"\"", false)); // "" -> """"""
-        assertEquals("\"\"\"\"\"\"\"\"", CsvUtils.escapeField("\"\"\"", false)); // """ -> """"""""
-        assertEquals("\"\"\"text\"\"\"",
-                CsvUtils.escapeField("\"text\"", false)); // "text" -> """text"""
-        assertEquals("\"text has \"\" in middle\"",
-                CsvUtils.escapeField("text has \" in middle", false));
-        assertEquals("\"\"\"quote,at begin\"", CsvUtils.escapeField("\"quote,at begin", false));
-        assertEquals("\"quote at,end\"\"\"", CsvUtils.escapeField("quote at,end\"", false));
-        assertEquals("\"\"\"quote at begin\"", CsvUtils.escapeField("\"quote at begin", false));
-        assertEquals("\"quote at end\"\"\"", CsvUtils.escapeField("quote at end\"", false));
-    }
-
-    public void testEscapeWithAlwaysQuoted() {
-        assertEquals("\"\"", CsvUtils.escapeField("", true));
-        assertEquals("\"plain\"", CsvUtils.escapeField("plain", true));
-        assertEquals("\" \"", CsvUtils.escapeField(" ", true));
-        assertEquals("\"  \"", CsvUtils.escapeField("  ", true));
-        assertEquals("\"a space\"", CsvUtils.escapeField("a space", true));
-        assertEquals("\" space-at-start\"", CsvUtils.escapeField(" space-at-start", true));
-        assertEquals("\"space-at-end \"", CsvUtils.escapeField("space-at-end ", true));
-        assertEquals("\"a lot of spaces\"", CsvUtils.escapeField("a lot of spaces", true));
-        assertEquals("\",\"", CsvUtils.escapeField(",", true));
-        assertEquals("\",,\"", CsvUtils.escapeField(",,", true));
-        assertEquals("\"a,comma\"", CsvUtils.escapeField("a,comma", true));
-        assertEquals("\",comma-at-begin\"", CsvUtils.escapeField(",comma-at-begin", true));
-        assertEquals("\"comma-at-end,\"", CsvUtils.escapeField("comma-at-end,", true));
-        assertEquals("\",,a,lot,,,of,commas,,\"",
-                CsvUtils.escapeField(",,a,lot,,,of,commas,,", true));
-        assertEquals("\"a comma,and a space\"", CsvUtils.escapeField("a comma,and a space", true));
-        assertEquals("\"\"\"\"", CsvUtils.escapeField("\"", true)); // " -> """"
-        assertEquals("\"\"\"\"\"\"", CsvUtils.escapeField("\"\"", true)); // "" -> """"""
-        assertEquals("\"\"\"\"\"\"\"\"", CsvUtils.escapeField("\"\"\"", true)); // """ -> """"""""
-        assertEquals("\"\"\"text\"\"\"",
-                CsvUtils.escapeField("\"text\"", true)); // "text" -> """text"""
-        assertEquals("\"text has \"\" in middle\"",
-                CsvUtils.escapeField("text has \" in middle", true));
-        assertEquals("\"\"\"quote,at begin\"", CsvUtils.escapeField("\"quote,at begin", true));
-        assertEquals("\"quote at,end\"\"\"", CsvUtils.escapeField("quote at,end\"", true));
-        assertEquals("\"\"\"quote at begin\"", CsvUtils.escapeField("\"quote at begin", true));
-        assertEquals("\"quote at end\"\"\"", CsvUtils.escapeField("quote at end\"", true));
-    }
-
-    public void testJoinWithoutColumnPositions() {
-        assertEquals("", CsvUtils.join());
-        assertEquals("", CsvUtils.join(""));
-        assertEquals(",", CsvUtils.join("", ""));
-
-        assertEquals("text, text,text ",
-                CsvUtils.join("text", " text", "text "));
-        assertEquals("\"\"\"\",\"\"\"\"\"\",\"\"\"text\"\"\"",
-                CsvUtils.join("\"", "\"\"", "\"text\""));
-        assertEquals("a b,\"c,d\",\"e\"\"f\"",
-                CsvUtils.join("a b", "c,d", "e\"f"));
-    }
-
-    public void testJoinWithoutColumnPositionsWithExtraSpace() {
-        final int extraSpace = CsvUtils.JOIN_FLAGS_EXTRA_SPACE;
-        assertEquals("", CsvUtils.join(extraSpace));
-        assertEquals("", CsvUtils.join(extraSpace, ""));
-        assertEquals(", ", CsvUtils.join(extraSpace, "", ""));
-
-        assertEquals("text,  text, text ",
-                CsvUtils.join(extraSpace, "text", " text", "text "));
-        // ","","text" -> """","""""","""text"""
-        assertEquals("\"\"\"\", \"\"\"\"\"\", \"\"\"text\"\"\"",
-                CsvUtils.join(extraSpace, "\"", "\"\"", "\"text\""));
-        assertEquals("a b, \"c,d\", \"e\"\"f\"",
-                CsvUtils.join(extraSpace, "a b", "c,d", "e\"f"));
-    }
-
-    public void testJoinWithoutColumnPositionsWithExtraSpaceAndAlwaysQuoted() {
-        final int extrSpaceAndQuoted =
-                CsvUtils.JOIN_FLAGS_EXTRA_SPACE | CsvUtils.JOIN_FLAGS_ALWAYS_QUOTED;
-        assertEquals("", CsvUtils.join(extrSpaceAndQuoted));
-        assertEquals("\"\"", CsvUtils.join(extrSpaceAndQuoted, ""));
-        assertEquals("\"\", \"\"", CsvUtils.join(extrSpaceAndQuoted, "", ""));
-
-        assertEquals("\"text\", \" text\", \"text \"",
-                CsvUtils.join(extrSpaceAndQuoted, "text", " text", "text "));
-        // ","","text" -> """", """""", """text"""
-        assertEquals("\"\"\"\", \"\"\"\"\"\", \"\"\"text\"\"\"",
-                CsvUtils.join(extrSpaceAndQuoted, "\"", "\"\"", "\"text\""));
-        assertEquals("\"a b\", \"c,d\", \"e\"\"f\"",
-                CsvUtils.join(extrSpaceAndQuoted, "a b", "c,d", "e\"f"));
-    }
-
-    public void testJoinWithColumnPositions() {
-        final int noFlags = CsvUtils.JOIN_FLAGS_NONE;
-        assertEquals("", CsvUtils.join(noFlags, new int[]{}));
-        assertEquals("   ", CsvUtils.join(noFlags, new int[]{3}, ""));
-        assertEquals(" ,", CsvUtils.join(noFlags, new int[]{1}, "", ""));
-        assertEquals(",  ", CsvUtils.join(noFlags, new int[]{0, 3}, "", ""));
-
-        assertEquals("text,    text, text ",
-                CsvUtils.join(noFlags, new int[]{0, 8, 15}, "text", " text", "text "));
-        // ","","text" -> """",   """""","""text"""
-        assertEquals("\"\"\"\",   \"\"\"\"\"\",\"\"\"text\"\"\"",
-                CsvUtils.join(noFlags, new int[]{0, 8, 15}, "\"", "\"\"", "\"text\""));
-        assertEquals("a b,    \"c,d\", \"e\"\"f\"",
-                CsvUtils.join(noFlags, new int[]{0, 8, 15}, "a b", "c,d", "e\"f"));
-    }
-
-    public void testJoinWithColumnPositionsWithExtraSpace() {
-        final int extraSpace = CsvUtils.JOIN_FLAGS_EXTRA_SPACE;
-        assertEquals("", CsvUtils.join(extraSpace, new int[]{}));
-        assertEquals("   ", CsvUtils.join(extraSpace, new int[]{3}, ""));
-        assertEquals(" , ", CsvUtils.join(extraSpace, new int[]{1}, "", ""));
-        assertEquals(",  ", CsvUtils.join(extraSpace, new int[]{0, 3}, "", ""));
-
-        assertEquals("text,    text, text ",
-                CsvUtils.join(extraSpace, new int[]{0, 8, 15}, "text", " text", "text "));
-        // ","","text" -> """",   """""", """text"""
-        assertEquals("\"\"\"\",   \"\"\"\"\"\", \"\"\"text\"\"\"",
-                CsvUtils.join(extraSpace, new int[]{0, 8, 15}, "\"", "\"\"", "\"text\""));
-        assertEquals("a b,    \"c,d\", \"e\"\"f\"",
-                CsvUtils.join(extraSpace, new int[]{0, 8, 15}, "a b", "c,d", "e\"f"));
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java
new file mode 100644
index 0000000..6e71607
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/DictionaryInfoUtilsTests.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
+
+import java.util.Locale;
+
+@SmallTest
+public class DictionaryInfoUtilsTests extends AndroidTestCase {
+    public void testLooksValidForDictionaryInsertion() {
+        final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() {
+            @Override
+            protected SpacingAndPunctuations job(final Resources res) {
+                return new SpacingAndPunctuations(res);
+            }
+        };
+        final Resources res = getContext().getResources();
+        final SpacingAndPunctuations sp = job.runInLocale(res, Locale.ENGLISH);
+        assertTrue(DictionaryInfoUtils.looksValidForDictionaryInsertion("aochaueo", sp));
+        assertFalse(DictionaryInfoUtils.looksValidForDictionaryInsertion("", sp));
+        assertTrue(DictionaryInfoUtils.looksValidForDictionaryInsertion("ao-ch'aueo", sp));
+        assertFalse(DictionaryInfoUtils.looksValidForDictionaryInsertion("2908743256", sp));
+        assertTrue(DictionaryInfoUtils.looksValidForDictionaryInsertion("31aochaueo", sp));
+        assertFalse(DictionaryInfoUtils.looksValidForDictionaryInsertion("akeo  raeoch oerch .",
+                sp));
+        assertFalse(DictionaryInfoUtils.looksValidForDictionaryInsertion("!!!", sp));
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/utils/EditDistanceTests.java b/tests/src/com/android/inputmethod/latin/utils/EditDistanceTests.java
new file mode 100644
index 0000000..5831226
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/EditDistanceTests.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+@SmallTest
+public class EditDistanceTests extends AndroidTestCase {
+    /*
+     * dist(kitten, sitting) == 3
+     *
+     * kitten-
+     * .|||.|
+     * sitting
+     */
+    public void testExample1() {
+        final int dist = BinaryDictionaryUtils.editDistance("kitten", "sitting");
+        assertEquals("edit distance between 'kitten' and 'sitting' is 3",
+                3, dist);
+    }
+
+    /*
+     * dist(Sunday, Saturday) == 3
+     *
+     * Saturday
+     * |  |.|||
+     * S--unday
+     */
+    public void testExample2() {
+        final int dist = BinaryDictionaryUtils.editDistance("Saturday", "Sunday");
+        assertEquals("edit distance between 'Saturday' and 'Sunday' is 3",
+                3, dist);
+    }
+
+    public void testBothEmpty() {
+        final int dist = BinaryDictionaryUtils.editDistance("", "");
+        assertEquals("when both string are empty, no edits are needed",
+                0, dist);
+    }
+
+    public void testFirstArgIsEmpty() {
+        final int dist = BinaryDictionaryUtils.editDistance("", "aaaa");
+        assertEquals("when only one string of the arguments is empty,"
+                 + " the edit distance is the length of the other.",
+                 4, dist);
+    }
+
+    public void testSecoondArgIsEmpty() {
+        final int dist = BinaryDictionaryUtils.editDistance("aaaa", "");
+        assertEquals("when only one string of the arguments is empty,"
+                 + " the edit distance is the length of the other.",
+                 4, dist);
+    }
+
+    public void testSameStrings() {
+        final String arg1 = "The quick brown fox jumps over the lazy dog.";
+        final String arg2 = "The quick brown fox jumps over the lazy dog.";
+        final int dist = BinaryDictionaryUtils.editDistance(arg1, arg2);
+        assertEquals("when same strings are passed, distance equals 0.",
+                0, dist);
+    }
+
+    public void testSameReference() {
+        final String arg = "The quick brown fox jumps over the lazy dog.";
+        final int dist = BinaryDictionaryUtils.editDistance(arg, arg);
+        assertEquals("when same string references are passed, the distance equals 0.",
+                0, dist);
+    }
+
+    public void testNullArg() {
+        try {
+            BinaryDictionaryUtils.editDistance(null, "aaa");
+            fail("IllegalArgumentException should be thrown.");
+        } catch (Exception e) {
+            assertTrue(e instanceof IllegalArgumentException);
+        }
+        try {
+            BinaryDictionaryUtils.editDistance("aaa", null);
+            fail("IllegalArgumentException should be thrown.");
+        } catch (Exception e) {
+            assertTrue(e instanceof IllegalArgumentException);
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java
new file mode 100644
index 0000000..ae2623d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/ExecutorUtilsTests.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.util.Log;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Unit tests for ExecutorUtils.
+ */
+@MediumTest
+public class ExecutorUtilsTests extends AndroidTestCase {
+    private static final String TAG = ExecutorUtilsTests.class.getSimpleName();
+
+    private static final String TEST_EXECUTOR_ID = "test";
+    private static final int NUM_OF_TASKS = 10;
+    private static final int DELAY_FOR_WAITING_TASKS_MILLISECONDS = 500;
+
+    public void testExecute() {
+        final ExecutorService executor = ExecutorUtils.getExecutor(TEST_EXECUTOR_ID);
+        final AtomicInteger v = new AtomicInteger(0);
+        for (int i = 0; i < NUM_OF_TASKS; ++i) {
+            executor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    v.incrementAndGet();
+                }
+            });
+        }
+        try {
+            executor.awaitTermination(DELAY_FOR_WAITING_TASKS_MILLISECONDS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            Log.d(TAG, "Exception while sleeping.", e);
+        }
+
+        assertEquals(NUM_OF_TASKS, v.get());
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/utils/ForgettingCurveTests.java b/tests/src/com/android/inputmethod/latin/utils/ForgettingCurveTests.java
deleted file mode 100644
index 823bd5d..0000000
--- a/tests/src/com/android/inputmethod/latin/utils/ForgettingCurveTests.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.utils;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-@SmallTest
-public class ForgettingCurveTests extends AndroidTestCase {
-    public void testFcToFreq() {
-        for (int i = 0; i < Byte.MAX_VALUE; ++i) {
-            final byte fc = (byte)i;
-            final int e = UserHistoryForgettingCurveUtils.fcToElapsedTime(fc);
-            final int c = UserHistoryForgettingCurveUtils.fcToCount(fc);
-            final int l = UserHistoryForgettingCurveUtils.fcToLevel(fc);
-            final byte fc2 = UserHistoryForgettingCurveUtils.calcFc(e, c, l);
-            assertEquals(fc, fc2);
-        }
-        byte fc = 0;
-        int l;
-        for (int i = 0; i < 4; ++i) {
-            for (int j = 0; j < (UserHistoryForgettingCurveUtils.COUNT_MAX + 1); ++j) {
-                fc = UserHistoryForgettingCurveUtils.pushCount(fc, true);
-            }
-            l = UserHistoryForgettingCurveUtils.fcToLevel(fc);
-            assertEquals(l, Math.max(1, Math.min(i + 1, 3)));
-        }
-        fc = 0;
-        for (int i = 0; i < 4; ++i) {
-            for (int j = 0; j < (UserHistoryForgettingCurveUtils.COUNT_MAX + 1); ++j) {
-                fc = UserHistoryForgettingCurveUtils.pushCount(fc, false);
-            }
-            l = UserHistoryForgettingCurveUtils.fcToLevel(fc);
-            assertEquals(l, Math.min(i + 1, 3));
-        }
-        for (int i = 0; i < 4; ++i) {
-            for (int j = 0; j < (UserHistoryForgettingCurveUtils.ELAPSED_TIME_MAX + 1); ++j) {
-                fc = UserHistoryForgettingCurveUtils.pushElapsedTime(fc);
-            }
-            l = UserHistoryForgettingCurveUtils.fcToLevel(fc);
-            assertEquals(l, Math.max(0, 2 - i));
-        }
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutorTests.java b/tests/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutorTests.java
deleted file mode 100644
index e075548..0000000
--- a/tests/src/com/android/inputmethod/latin/utils/PrioritizedSerialExecutorTests.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.latin.utils;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Unit tests for PrioritizedSerialExecutor.
- * TODO: Add more detailed tests to make use of priorities, etc.
- */
-@MediumTest
-public class PrioritizedSerialExecutorTests extends AndroidTestCase {
-    private static final String TAG = PrioritizedSerialExecutorTests.class.getSimpleName();
-
-    private static final int NUM_OF_TASKS = 10;
-    private static final int DELAY_FOR_WAITING_TASKS_MILLISECONDS = 500;
-
-    public void testExecute() {
-        final PrioritizedSerialExecutor executor = new PrioritizedSerialExecutor();
-        final AtomicInteger v = new AtomicInteger(0);
-        for (int i = 0; i < NUM_OF_TASKS; ++i) {
-            executor.execute(new Runnable() {
-                @Override
-                public void run() {
-                    v.incrementAndGet();
-                }
-            });
-        }
-        try {
-            Thread.sleep(DELAY_FOR_WAITING_TASKS_MILLISECONDS);
-        } catch (InterruptedException e) {
-            Log.d(TAG, "Exception while sleeping.", e);
-        }
-
-        assertEquals(NUM_OF_TASKS, v.get());
-    }
-
-    public void testExecutePrioritized() {
-        final PrioritizedSerialExecutor executor = new PrioritizedSerialExecutor();
-        final AtomicInteger v = new AtomicInteger(0);
-        for (int i = 0; i < NUM_OF_TASKS; ++i) {
-            executor.executePrioritized(new Runnable() {
-                @Override
-                public void run() {
-                    v.incrementAndGet();
-                }
-            });
-        }
-        try {
-            Thread.sleep(DELAY_FOR_WAITING_TASKS_MILLISECONDS);
-        } catch (InterruptedException e) {
-            Log.d(TAG, "Exception while sleeping.", e);
-        }
-
-        assertEquals(NUM_OF_TASKS, v.get());
-    }
-
-    public void testExecuteCombined() {
-        final PrioritizedSerialExecutor executor = new PrioritizedSerialExecutor();
-        final AtomicInteger v = new AtomicInteger(0);
-        for (int i = 0; i < NUM_OF_TASKS; ++i) {
-            executor.execute(new Runnable() {
-                @Override
-                public void run() {
-                    v.incrementAndGet();
-                }
-            });
-        }
-
-        for (int i = 0; i < NUM_OF_TASKS; ++i) {
-            executor.executePrioritized(new Runnable() {
-                @Override
-                public void run() {
-                    v.incrementAndGet();
-                }
-            });
-        }
-
-        try {
-            Thread.sleep(DELAY_FOR_WAITING_TASKS_MILLISECONDS);
-        } catch (InterruptedException e) {
-            Log.d(TAG, "Exception while sleeping.", e);
-        }
-
-        assertEquals(2 * NUM_OF_TASKS, v.get());
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java b/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java
index a520412..a3f2ce5 100644
--- a/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/RecapitalizeStatusTests.java
@@ -19,31 +19,35 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
+import com.android.inputmethod.latin.Constants;
+
 import java.util.Locale;
 
 @SmallTest
 public class RecapitalizeStatusTests extends AndroidTestCase {
+    private static final int[] SPACE = { Constants.CODE_SPACE };
+
     public void testTrim() {
         final RecapitalizeStatus status = new RecapitalizeStatus();
-        status.initialize(30, 40, "abcdefghij", Locale.ENGLISH, " ");
+        status.start(30, 40, "abcdefghij", Locale.ENGLISH, SPACE);
         status.trim();
         assertEquals("abcdefghij", status.getRecapitalizedString());
         assertEquals(30, status.getNewCursorStart());
         assertEquals(40, status.getNewCursorEnd());
 
-        status.initialize(30, 44, "    abcdefghij", Locale.ENGLISH, " ");
+        status.start(30, 44, "    abcdefghij", Locale.ENGLISH, SPACE);
         status.trim();
         assertEquals("abcdefghij", status.getRecapitalizedString());
         assertEquals(34, status.getNewCursorStart());
         assertEquals(44, status.getNewCursorEnd());
 
-        status.initialize(30, 40, "abcdefgh  ", Locale.ENGLISH, " ");
+        status.start(30, 40, "abcdefgh  ", Locale.ENGLISH, SPACE);
         status.trim();
         assertEquals("abcdefgh", status.getRecapitalizedString());
         assertEquals(30, status.getNewCursorStart());
         assertEquals(38, status.getNewCursorEnd());
 
-        status.initialize(30, 45, "   abcdefghij  ", Locale.ENGLISH, " ");
+        status.start(30, 45, "   abcdefghij  ", Locale.ENGLISH, SPACE);
         status.trim();
         assertEquals("abcdefghij", status.getRecapitalizedString());
         assertEquals(33, status.getNewCursorStart());
@@ -52,7 +56,7 @@
 
     public void testRotate() {
         final RecapitalizeStatus status = new RecapitalizeStatus();
-        status.initialize(29, 40, "abcd efghij", Locale.ENGLISH, " ");
+        status.start(29, 40, "abcd efghij", Locale.ENGLISH, SPACE);
         status.rotate();
         assertEquals("Abcd Efghij", status.getRecapitalizedString());
         assertEquals(29, status.getNewCursorStart());
@@ -64,7 +68,7 @@
         status.rotate();
         assertEquals("Abcd Efghij", status.getRecapitalizedString());
 
-        status.initialize(29, 40, "Abcd Efghij", Locale.ENGLISH, " ");
+        status.start(29, 40, "Abcd Efghij", Locale.ENGLISH, SPACE);
         status.rotate();
         assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
         assertEquals(29, status.getNewCursorStart());
@@ -76,7 +80,7 @@
         status.rotate();
         assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
 
-        status.initialize(29, 40, "ABCD EFGHIJ", Locale.ENGLISH, " ");
+        status.start(29, 40, "ABCD EFGHIJ", Locale.ENGLISH, SPACE);
         status.rotate();
         assertEquals("abcd efghij", status.getRecapitalizedString());
         assertEquals(29, status.getNewCursorStart());
@@ -88,7 +92,7 @@
         status.rotate();
         assertEquals("abcd efghij", status.getRecapitalizedString());
 
-        status.initialize(29, 39, "AbCDefghij", Locale.ENGLISH, " ");
+        status.start(29, 39, "AbCDefghij", Locale.ENGLISH, SPACE);
         status.rotate();
         assertEquals("abcdefghij", status.getRecapitalizedString());
         assertEquals(29, status.getNewCursorStart());
@@ -102,7 +106,7 @@
         status.rotate();
         assertEquals("abcdefghij", status.getRecapitalizedString());
 
-        status.initialize(29, 40, "Abcd efghij", Locale.ENGLISH, " ");
+        status.start(29, 40, "Abcd efghij", Locale.ENGLISH, SPACE);
         status.rotate();
         assertEquals("abcd efghij", status.getRecapitalizedString());
         assertEquals(29, status.getNewCursorStart());
@@ -116,7 +120,8 @@
         status.rotate();
         assertEquals("abcd efghij", status.getRecapitalizedString());
 
-        status.initialize(30, 34, "grüß", Locale.GERMAN, " "); status.rotate();
+        status.start(30, 34, "grüß", Locale.GERMAN, SPACE);
+        status.rotate();
         assertEquals("Grüß", status.getRecapitalizedString());
         assertEquals(30, status.getNewCursorStart());
         assertEquals(34, status.getNewCursorEnd());
@@ -133,7 +138,8 @@
         assertEquals(30, status.getNewCursorStart());
         assertEquals(34, status.getNewCursorEnd());
 
-        status.initialize(30, 33, "œuf", Locale.FRENCH, " "); status.rotate();
+        status.start(30, 33, "œuf", Locale.FRENCH, SPACE);
+        status.rotate();
         assertEquals("Œuf", status.getRecapitalizedString());
         assertEquals(30, status.getNewCursorStart());
         assertEquals(33, status.getNewCursorEnd());
@@ -150,7 +156,8 @@
         assertEquals(30, status.getNewCursorStart());
         assertEquals(33, status.getNewCursorEnd());
 
-        status.initialize(30, 33, "œUf", Locale.FRENCH, " "); status.rotate();
+        status.start(30, 33, "œUf", Locale.FRENCH, SPACE);
+        status.rotate();
         assertEquals("œuf", status.getRecapitalizedString());
         assertEquals(30, status.getNewCursorStart());
         assertEquals(33, status.getNewCursorEnd());
@@ -171,7 +178,8 @@
         assertEquals(30, status.getNewCursorStart());
         assertEquals(33, status.getNewCursorEnd());
 
-        status.initialize(30, 35, "école", Locale.FRENCH, " "); status.rotate();
+        status.start(30, 35, "école", Locale.FRENCH, SPACE);
+        status.rotate();
         assertEquals("École", status.getRecapitalizedString());
         assertEquals(30, status.getNewCursorStart());
         assertEquals(35, status.getNewCursorEnd());
diff --git a/tests/src/com/android/inputmethod/latin/utils/ResizableIntArrayTests.java b/tests/src/com/android/inputmethod/latin/utils/ResizableIntArrayTests.java
index cad80d5..8f58e68 100644
--- a/tests/src/com/android/inputmethod/latin/utils/ResizableIntArrayTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/ResizableIntArrayTests.java
@@ -39,7 +39,8 @@
         int[] array2 = null, array3 = null;
         final int limit = DEFAULT_CAPACITY * 2 + 10;
         for (int i = 0; i < limit; i++) {
-            src.add(i);
+            final int value = i;
+            src.add(value);
             assertEquals("length after add " + i, i + 1, src.getLength());
             if (i == DEFAULT_CAPACITY) {
                 array2 = src.getPrimitiveArray();
@@ -56,7 +57,8 @@
             }
         }
         for (int i = 0; i < limit; i++) {
-            assertEquals("value at " + i, i, src.get(i));
+            final int value = i;
+            assertEquals("value at " + i, value, src.get(i));
         }
     }
 
@@ -64,11 +66,13 @@
         final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY);
         final int limit = DEFAULT_CAPACITY * 10, step = DEFAULT_CAPACITY * 2;
         for (int i = 0; i < limit; i += step) {
-            src.add(i, i);
+            final int value = i;
+            src.addAt(i, value);
             assertEquals("length after add at " + i, i + 1, src.getLength());
         }
         for (int i = 0; i < limit; i += step) {
-            assertEquals("value at " + i, i, src.get(i));
+            final int value = i;
+            assertEquals("value at " + i, value, src.get(i));
         }
     }
 
@@ -88,9 +92,10 @@
         }
 
         final int index = DEFAULT_CAPACITY / 2;
-        src.add(index, 100);
+        final int valueAddAt = 100;
+        src.addAt(index, valueAddAt);
         assertEquals("legth after add at " + index, index + 1, src.getLength());
-        assertEquals("value after add at " + index, 100, src.get(index));
+        assertEquals("value after add at " + index, valueAddAt, src.get(index));
         assertEquals("value after add at 0", 0, src.get(0));
         try {
             final int value = src.get(src.getLength());
@@ -104,7 +109,8 @@
         final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY);
         final int[] array = src.getPrimitiveArray();
         for (int i = 0; i < DEFAULT_CAPACITY; i++) {
-            src.add(i);
+            final int value = i;
+            src.add(value);
             assertEquals("length after add " + i, i + 1, src.getLength());
         }
 
@@ -116,7 +122,8 @@
 
         int[] array3 = null;
         for (int i = 0; i < DEFAULT_CAPACITY; i++) {
-            src.add(i);
+            final int value = i;
+            src.add(value);
             assertEquals("length after add " + i, i + 1, src.getLength());
             if (i == smallerLength) {
                 array3 = src.getPrimitiveArray();
@@ -133,7 +140,8 @@
         final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY);
         final int[] array = src.getPrimitiveArray();
         for (int i = 0; i < DEFAULT_CAPACITY; i++) {
-            src.add(i);
+            final int value = i;
+            src.add(value);
             assertEquals("length after add " + i, i + 1, src.getLength());
         }
 
@@ -144,11 +152,11 @@
         assertNotSame("array after larger setLength", array, array2);
         assertEquals("array length after larger setLength", largerLength, array2.length);
         for (int i = 0; i < largerLength; i++) {
-            final int v = src.get(i);
+            final int value = i;
             if (i < DEFAULT_CAPACITY) {
-                assertEquals("value at " + i, i, v);
+                assertEquals("value at " + i, value, src.get(i));
             } else {
-                assertEquals("value at " + i, 0, v);
+                assertEquals("value at " + i, 0, src.get(i));
             }
         }
 
@@ -159,7 +167,8 @@
         assertSame("array after smaller setLength", array2, array3);
         assertEquals("array length after smaller setLength", largerLength, array3.length);
         for (int i = 0; i < smallerLength; i++) {
-            assertEquals("value at " + i, i, src.get(i));
+            final int value = i;
+            assertEquals("value at " + i, value, src.get(i));
         }
     }
 
@@ -167,7 +176,8 @@
         final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY);
         final int limit = DEFAULT_CAPACITY * 2 + 10;
         for (int i = 0; i < limit; i++) {
-            src.add(i);
+            final int value = i;
+            src.add(value);
         }
 
         final ResizableIntArray dst = new ResizableIntArray(DEFAULT_CAPACITY);
@@ -179,7 +189,8 @@
     public void testCopy() {
         final ResizableIntArray src = new ResizableIntArray(DEFAULT_CAPACITY);
         for (int i = 0; i < DEFAULT_CAPACITY; i++) {
-            src.add(i);
+            final int value =  i;
+            src.add(value);
         }
 
         final ResizableIntArray dst = new ResizableIntArray(DEFAULT_CAPACITY);
@@ -204,119 +215,126 @@
     }
 
     public void testAppend() {
-        final int srcLen = DEFAULT_CAPACITY;
-        final ResizableIntArray src = new ResizableIntArray(srcLen);
-        for (int i = 0; i < srcLen; i++) {
-            src.add(i);
+        final int srcLength = DEFAULT_CAPACITY;
+        final ResizableIntArray src = new ResizableIntArray(srcLength);
+        for (int i = 0; i < srcLength; i++) {
+            final int value = i;
+            src.add(value);
         }
         final ResizableIntArray dst = new ResizableIntArray(DEFAULT_CAPACITY * 2);
         final int[] array = dst.getPrimitiveArray();
-        final int dstLen = DEFAULT_CAPACITY / 2;
-        for (int i = 0; i < dstLen; i++) {
+        final int dstLength = DEFAULT_CAPACITY / 2;
+        for (int i = 0; i < dstLength; i++) {
             final int value = -i - 1;
             dst.add(value);
         }
         final ResizableIntArray dstCopy = new ResizableIntArray(dst.getLength());
         dstCopy.copy(dst);
 
-        dst.append(src, 0, 0);
-        assertEquals("length after append zero", dstLen, dst.getLength());
+        final int startPos = 0;
+        dst.append(src, startPos, 0 /* length */);
+        assertEquals("length after append zero", dstLength, dst.getLength());
         assertSame("array after append zero", array, dst.getPrimitiveArray());
-        assertIntArrayEquals("values after append zero",
-                dstCopy.getPrimitiveArray(), 0, dst.getPrimitiveArray(), 0, dstLen);
+        assertIntArrayEquals("values after append zero", dstCopy.getPrimitiveArray(), startPos,
+                dst.getPrimitiveArray(), startPos, dstLength);
 
-        dst.append(src, 0, srcLen);
-        assertEquals("length after append", dstLen + srcLen, dst.getLength());
+        dst.append(src, startPos, srcLength);
+        assertEquals("length after append", dstLength + srcLength, dst.getLength());
         assertSame("array after append", array, dst.getPrimitiveArray());
         assertTrue("primitive length after append",
-                dst.getPrimitiveArray().length >= dstLen + srcLen);
-        assertIntArrayEquals("original values after append",
-                dstCopy.getPrimitiveArray(), 0, dst.getPrimitiveArray(), 0, dstLen);
-        assertIntArrayEquals("appended values after append",
-                src.getPrimitiveArray(), 0, dst.getPrimitiveArray(), dstLen, srcLen);
+                dst.getPrimitiveArray().length >= dstLength + srcLength);
+        assertIntArrayEquals("original values after append", dstCopy.getPrimitiveArray(), startPos,
+                dst.getPrimitiveArray(), startPos, dstLength);
+        assertIntArrayEquals("appended values after append", src.getPrimitiveArray(), startPos,
+                dst.getPrimitiveArray(), dstLength, srcLength);
 
-        dst.append(src, 0, srcLen);
-        assertEquals("length after 2nd append", dstLen + srcLen * 2, dst.getLength());
+        dst.append(src, startPos, srcLength);
+        assertEquals("length after 2nd append", dstLength + srcLength * 2, dst.getLength());
         assertNotSame("array after 2nd append", array, dst.getPrimitiveArray());
         assertTrue("primitive length after 2nd append",
-                dst.getPrimitiveArray().length >= dstLen + srcLen * 2);
+                dst.getPrimitiveArray().length >= dstLength + srcLength * 2);
         assertIntArrayEquals("original values after 2nd append",
-                dstCopy.getPrimitiveArray(), 0, dst.getPrimitiveArray(), 0, dstLen);
+                dstCopy.getPrimitiveArray(), startPos, dst.getPrimitiveArray(), startPos,
+                dstLength);
         assertIntArrayEquals("appended values after 2nd append",
-                src.getPrimitiveArray(), 0, dst.getPrimitiveArray(), dstLen, srcLen);
+                src.getPrimitiveArray(), startPos, dst.getPrimitiveArray(), dstLength,
+                srcLength);
         assertIntArrayEquals("appended values after 2nd append",
-                src.getPrimitiveArray(), 0, dst.getPrimitiveArray(), dstLen + srcLen, srcLen);
+                src.getPrimitiveArray(), startPos, dst.getPrimitiveArray(), dstLength + srcLength,
+                srcLength);
     }
 
     public void testFill() {
-        final int srcLen = DEFAULT_CAPACITY;
-        final ResizableIntArray src = new ResizableIntArray(srcLen);
-        for (int i = 0; i < srcLen; i++) {
-            src.add(i);
+        final int srcLength = DEFAULT_CAPACITY;
+        final ResizableIntArray src = new ResizableIntArray(srcLength);
+        for (int i = 0; i < srcLength; i++) {
+            final int value = i;
+            src.add(value);
         }
         final int[] array = src.getPrimitiveArray();
 
-        final int startPos = srcLen / 3;
-        final int length = srcLen / 3;
+        final int startPos = srcLength / 3;
+        final int length = srcLength / 3;
         final int endPos = startPos + length;
         assertTrue(startPos >= 1);
-        final int value = 123;
+        final int fillValue = 123;
         try {
-            src.fill(value, -1, length);
+            src.fill(fillValue, -1 /* startPos */, length);
             fail("fill from -1 shouldn't succeed");
         } catch (IllegalArgumentException e) {
             // success
         }
         try {
-            src.fill(value, startPos, -1);
+            src.fill(fillValue, startPos, -1 /* length */);
             fail("fill negative length shouldn't succeed");
         } catch (IllegalArgumentException e) {
             // success
         }
 
-        src.fill(value, startPos, length);
-        assertEquals("length after fill", srcLen, src.getLength());
+        src.fill(fillValue, startPos, length);
+        assertEquals("length after fill", srcLength, src.getLength());
         assertSame("array after fill", array, src.getPrimitiveArray());
-        for (int i = 0; i < srcLen; i++) {
-            final int v = src.get(i);
+        for (int i = 0; i < srcLength; i++) {
+            final int value = i;
             if (i >= startPos && i < endPos) {
-                assertEquals("new values after fill at " + i, value, v);
+                assertEquals("new values after fill at " + i, fillValue, src.get(i));
             } else {
-                assertEquals("unmodified values after fill at " + i, i, v);
+                assertEquals("unmodified values after fill at " + i, value, src.get(i));
             }
         }
 
-        final int length2 = srcLen * 2 - startPos;
+        final int length2 = srcLength * 2 - startPos;
         final int largeEnd = startPos + length2;
-        assertTrue(largeEnd > srcLen);
-        final int value2 = 456;
-        src.fill(value2, startPos, length2);
+        assertTrue(largeEnd > srcLength);
+        final int fillValue2 = 456;
+        src.fill(fillValue2, startPos, length2);
         assertEquals("length after large fill", largeEnd, src.getLength());
         assertNotSame("array after large fill", array, src.getPrimitiveArray());
         for (int i = 0; i < largeEnd; i++) {
-            final int v = src.get(i);
+            final int value = i;
             if (i >= startPos && i < largeEnd) {
-                assertEquals("new values after large fill at " + i, value2, v);
+                assertEquals("new values after large fill at " + i, fillValue2, src.get(i));
             } else {
-                assertEquals("unmodified values after large fill at " + i, i, v);
+                assertEquals("unmodified values after large fill at " + i, value, src.get(i));
             }
         }
 
         final int startPos2 = largeEnd + length2;
         final int endPos2 = startPos2 + length2;
-        final int value3 = 789;
-        src.fill(value3, startPos2, length2);
+        final int fillValue3 = 789;
+        src.fill(fillValue3, startPos2, length2);
         assertEquals("length after disjoint fill", endPos2, src.getLength());
         for (int i = 0; i < endPos2; i++) {
-            final int v = src.get(i);
+            final int value = i;
             if (i >= startPos2 && i < endPos2) {
-                assertEquals("new values after disjoint fill at " + i, value3, v);
+                assertEquals("new values after disjoint fill at " + i, fillValue3, src.get(i));
             } else if (i >= startPos && i < largeEnd) {
-                assertEquals("unmodified values after disjoint fill at " + i, value2, v);
+                assertEquals("unmodified values after disjoint fill at " + i,
+                        fillValue2, src.get(i));
             } else if (i < startPos) {
-                assertEquals("unmodified values after disjoint fill at " + i, i, v);
+                assertEquals("unmodified values after disjoint fill at " + i, value, src.get(i));
             } else {
-                assertEquals("gap values after disjoint fill at " + i, 0, v);
+                assertEquals("gap values after disjoint fill at " + i, 0, src.get(i));
             }
         }
     }
@@ -346,12 +364,14 @@
         final int limit = DEFAULT_CAPACITY * 10;
         final int shiftAmount = 20;
         for (int i = 0; i < limit; ++i) {
-            src.add(i, i);
+            final int value = i;
+            src.addAt(i, value);
             assertEquals("length after add at " + i, i + 1, src.getLength());
         }
         src.shift(shiftAmount);
         for (int i = 0; i < limit - shiftAmount; ++i) {
-            assertEquals("value at " + i, i + shiftAmount, src.get(i));
+            final int oldValue = i + shiftAmount;
+            assertEquals("value at " + i, oldValue, src.get(i));
         }
     }
 }
diff --git a/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java
index 1ae22e3..8e764e4 100644
--- a/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/ResourceUtilsTests.java
@@ -19,48 +19,15 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 
-import com.android.inputmethod.latin.utils.ResourceUtils.DeviceOverridePatternSyntaxError;
-
 import java.util.HashMap;
 
 @SmallTest
 public class ResourceUtilsTests extends AndroidTestCase {
-    public void testFindDefaultConstant() {
-        final String[] nullArray = null;
-        final String[] emptyArray = {};
-        final String[] array = {
-                "HARDWARE=grouper,0.3",
-                "HARDWARE=mako,0.4",
-                ",defaultValue1",
-                "HARDWARE=manta,0.2",
-                ",defaultValue2",
-        };
-
-        try {
-            assertNull(ResourceUtils.findDefaultConstant(nullArray));
-            assertNull(ResourceUtils.findDefaultConstant(emptyArray));
-            assertEquals(ResourceUtils.findDefaultConstant(array), "defaultValue1");
-        } catch (final DeviceOverridePatternSyntaxError e) {
-            fail(e.getMessage());
-        }
-
-        final String[] errorArray = {
-            "HARDWARE=grouper,0.3",
-            "no_comma"
-        };
-        try {
-            final String defaultValue = ResourceUtils.findDefaultConstant(errorArray);
-            fail("exception should be thrown: defaultValue=" + defaultValue);
-        } catch (final DeviceOverridePatternSyntaxError e) {
-            assertEquals("Array element has no comma: no_comma", e.getMessage());
-        }
-    }
-
     public void testFindConstantForKeyValuePairsSimple() {
-        final HashMap<String,String> anyKeyValue = CollectionUtils.newHashMap();
+        final HashMap<String,String> anyKeyValue = new HashMap<>();
         anyKeyValue.put("anyKey", "anyValue");
         final HashMap<String,String> nullKeyValue = null;
-        final HashMap<String,String> emptyKeyValue = CollectionUtils.newHashMap();
+        final HashMap<String,String> emptyKeyValue = new HashMap<>();
 
         final String[] nullArray = null;
         assertNull(ResourceUtils.findConstantForKeyValuePairs(anyKeyValue, nullArray));
@@ -81,7 +48,7 @@
             "HARDWARE=mako,0.5",
         };
 
-        final HashMap<String,String> keyValues = CollectionUtils.newHashMap();
+        final HashMap<String,String> keyValues = new HashMap<>();
         keyValues.put(HARDWARE_KEY, "grouper");
         assertEquals("0.3", ResourceUtils.findConstantForKeyValuePairs(keyValues, array));
         keyValues.put(HARDWARE_KEY, "mako");
@@ -121,7 +88,7 @@
             "HARDWARE=mantaray:MODEL=Nexus 10:MANUFACTURER=samsung,0.2"
         };
 
-        final HashMap<String,String> keyValues = CollectionUtils.newHashMap();
+        final HashMap<String,String> keyValues = new HashMap<>();
         keyValues.put(HARDWARE_KEY, "grouper");
         keyValues.put(MODEL_KEY, "Nexus 7");
         keyValues.put(MANUFACTURER_KEY, "asus");
@@ -159,7 +126,7 @@
             "HARDWARE=manta.*:MODEL=Nexus 10:MANUFACTURER=samsung,0.2"
         };
 
-        final HashMap<String,String> keyValues = CollectionUtils.newHashMap();
+        final HashMap<String,String> keyValues = new HashMap<>();
         keyValues.put(HARDWARE_KEY, "grouper");
         keyValues.put(MODEL_KEY, "Nexus 7");
         keyValues.put(MANUFACTURER_KEY, "asus");
diff --git a/tests/src/com/android/inputmethod/latin/utils/SpacebarLanguagetUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/SpacebarLanguagetUtilsTests.java
new file mode 100644
index 0000000..fdde342
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/SpacebarLanguagetUtilsTests.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 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.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.inputmethod.InputMethodInfo;
+import android.view.inputmethod.InputMethodSubtype;
+
+import com.android.inputmethod.latin.RichInputMethodManager;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+@SmallTest
+public class SpacebarLanguagetUtilsTests extends AndroidTestCase {
+    // All input method subtypes of LatinIME.
+    private final ArrayList<InputMethodSubtype> mSubtypesList = new ArrayList<>();
+
+    private RichInputMethodManager mRichImm;
+    private Resources mRes;
+
+    InputMethodSubtype EN_US;
+    InputMethodSubtype EN_GB;
+    InputMethodSubtype ES_US;
+    InputMethodSubtype FR;
+    InputMethodSubtype FR_CA;
+    InputMethodSubtype FR_CH;
+    InputMethodSubtype DE;
+    InputMethodSubtype DE_CH;
+    InputMethodSubtype ZZ;
+    InputMethodSubtype DE_QWERTY;
+    InputMethodSubtype FR_QWERTZ;
+    InputMethodSubtype EN_US_AZERTY;
+    InputMethodSubtype EN_UK_DVORAK;
+    InputMethodSubtype ES_US_COLEMAK;
+    InputMethodSubtype ZZ_AZERTY;
+    InputMethodSubtype ZZ_PC;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        final Context context = getContext();
+        RichInputMethodManager.init(context);
+        mRichImm = RichInputMethodManager.getInstance();
+        mRes = context.getResources();
+        SubtypeLocaleUtils.init(context);
+
+        final InputMethodInfo imi = mRichImm.getInputMethodInfoOfThisIme();
+        final int subtypeCount = imi.getSubtypeCount();
+        for (int index = 0; index < subtypeCount; index++) {
+            final InputMethodSubtype subtype = imi.getSubtypeAt(index);
+            mSubtypesList.add(subtype);
+        }
+
+        EN_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.US.toString(), "qwerty");
+        EN_GB = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.UK.toString(), "qwerty");
+        ES_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                "es_US", "spanish");
+        FR = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.FRENCH.toString(), "azerty");
+        FR_CA = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.CANADA_FRENCH.toString(), "qwerty");
+        FR_CH = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                "fr_CH", "swiss");
+        DE = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                Locale.GERMAN.toString(), "qwertz");
+        DE_CH = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                "de_CH", "swiss");
+        ZZ = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
+        DE_QWERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.GERMAN.toString(), "qwerty");
+        FR_QWERTZ = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.FRENCH.toString(), "qwertz");
+        EN_US_AZERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.US.toString(), "azerty");
+        EN_UK_DVORAK = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.UK.toString(), "dvorak");
+        ES_US_COLEMAK = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                "es_US", "colemak");
+        ZZ_AZERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                SubtypeLocaleUtils.NO_LANGUAGE, "azerty");
+        ZZ_PC = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                SubtypeLocaleUtils.NO_LANGUAGE, "pcqwerty");
+    }
+
+    public void testAllFullDisplayNameForSpacebar() {
+        for (final InputMethodSubtype subtype : mSubtypesList) {
+            final String subtypeName = SubtypeLocaleUtils
+                    .getSubtypeDisplayNameInSystemLocale(subtype);
+            final String spacebarText = SpacebarLanguageUtils.getFullDisplayName(subtype);
+            final String languageName = SubtypeLocaleUtils
+                    .getSubtypeLocaleDisplayName(subtype.getLocale());
+            if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
+                assertFalse(subtypeName, spacebarText.contains(languageName));
+            } else {
+                assertTrue(subtypeName, spacebarText.contains(languageName));
+            }
+        }
+    }
+
+   public void testAllMiddleDisplayNameForSpacebar() {
+        for (final InputMethodSubtype subtype : mSubtypesList) {
+            final String subtypeName = SubtypeLocaleUtils
+                    .getSubtypeDisplayNameInSystemLocale(subtype);
+            final String spacebarText = SpacebarLanguageUtils.getMiddleDisplayName(subtype);
+            if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
+                assertEquals(subtypeName,
+                        SubtypeLocaleUtils.getKeyboardLayoutSetDisplayName(subtype), spacebarText);
+            } else {
+                final Locale locale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
+                assertEquals(subtypeName,
+                        SubtypeLocaleUtils.getSubtypeLocaleDisplayName(locale.getLanguage()),
+                        spacebarText);
+            }
+        }
+    }
+
+    // InputMethodSubtype's display name for spacebar text in its locale.
+    //        isAdditionalSubtype (T=true, F=false)
+    // locale layout  |  Middle     Full
+    // ------ ------- - --------- ----------------------
+    //  en_US qwerty  F  English   English (US)           exception
+    //  en_GB qwerty  F  English   English (UK)           exception
+    //  es_US spanish F  Español   Español (EE.UU.)       exception
+    //  fr    azerty  F  Français  Français
+    //  fr_CA qwerty  F  Français  Français (Canada)
+    //  fr_CH swiss   F  Français  Français (Suisse)
+    //  de    qwertz  F  Deutsch   Deutsch
+    //  de_CH swiss   F  Deutsch   Deutsch (Schweiz)
+    //  zz    qwerty  F  QWERTY    QWERTY
+    //  fr    qwertz  T  Français  Français
+    //  de    qwerty  T  Deutsch   Deutsch
+    //  en_US azerty  T  English   English (US)
+    //  zz    azerty  T  AZERTY    AZERTY
+
+    private final RunInLocale<Void> testsPredefinedSubtypesForSpacebar = new RunInLocale<Void>() {
+        @Override
+        protected Void job(final Resources res) {
+            assertEquals("en_US", "English (US)",
+                    SpacebarLanguageUtils.getFullDisplayName(EN_US));
+            assertEquals("en_GB", "English (UK)",
+                    SpacebarLanguageUtils.getFullDisplayName(EN_GB));
+            assertEquals("es_US", "Español (EE.UU.)",
+                    SpacebarLanguageUtils.getFullDisplayName(ES_US));
+            assertEquals("fr", "Français",
+                    SpacebarLanguageUtils.getFullDisplayName(FR));
+            assertEquals("fr_CA", "Français (Canada)",
+                    SpacebarLanguageUtils.getFullDisplayName(FR_CA));
+            assertEquals("fr_CH", "Français (Suisse)",
+                    SpacebarLanguageUtils.getFullDisplayName(FR_CH));
+            assertEquals("de", "Deutsch",
+                    SpacebarLanguageUtils.getFullDisplayName(DE));
+            assertEquals("de_CH", "Deutsch (Schweiz)",
+                    SpacebarLanguageUtils.getFullDisplayName(DE_CH));
+            assertEquals("zz", "QWERTY",
+                    SpacebarLanguageUtils.getFullDisplayName(ZZ));
+
+            assertEquals("en_US", "English",
+                    SpacebarLanguageUtils.getMiddleDisplayName(EN_US));
+            assertEquals("en_GB", "English",
+                    SpacebarLanguageUtils.getMiddleDisplayName(EN_GB));
+            assertEquals("es_US", "Español",
+                    SpacebarLanguageUtils.getMiddleDisplayName(ES_US));
+            assertEquals("fr", "Français",
+                    SpacebarLanguageUtils.getMiddleDisplayName(FR));
+            assertEquals("fr_CA", "Français",
+                    SpacebarLanguageUtils.getMiddleDisplayName(FR_CA));
+            assertEquals("fr_CH", "Français",
+                    SpacebarLanguageUtils.getMiddleDisplayName(FR_CH));
+            assertEquals("de", "Deutsch",
+                    SpacebarLanguageUtils.getMiddleDisplayName(DE));
+            assertEquals("de_CH", "Deutsch",
+                    SpacebarLanguageUtils.getMiddleDisplayName(DE_CH));
+            assertEquals("zz", "QWERTY",
+                    SpacebarLanguageUtils.getMiddleDisplayName(ZZ));
+            return null;
+        }
+    };
+
+    private final RunInLocale<Void> testsAdditionalSubtypesForSpacebar = new RunInLocale<Void>() {
+        @Override
+        protected Void job(final Resources res) {
+            assertEquals("fr qwertz", "Français",
+                    SpacebarLanguageUtils.getFullDisplayName(FR_QWERTZ));
+            assertEquals("de qwerty", "Deutsch",
+                    SpacebarLanguageUtils.getFullDisplayName(DE_QWERTY));
+            assertEquals("en_US azerty", "English (US)",
+                    SpacebarLanguageUtils.getFullDisplayName(EN_US_AZERTY));
+            assertEquals("en_UK dvorak", "English (UK)",
+                    SpacebarLanguageUtils.getFullDisplayName(EN_UK_DVORAK));
+            assertEquals("es_US colemak", "Español (EE.UU.)",
+                    SpacebarLanguageUtils.getFullDisplayName(ES_US_COLEMAK));
+            assertEquals("zz azerty", "AZERTY",
+                    SpacebarLanguageUtils.getFullDisplayName(ZZ_AZERTY));
+            assertEquals("zz pc", "PC",
+                    SpacebarLanguageUtils.getFullDisplayName(ZZ_PC));
+
+            assertEquals("fr qwertz", "Français",
+                    SpacebarLanguageUtils.getMiddleDisplayName(FR_QWERTZ));
+            assertEquals("de qwerty", "Deutsch",
+                    SpacebarLanguageUtils.getMiddleDisplayName(DE_QWERTY));
+            assertEquals("en_US azerty", "English",
+                    SpacebarLanguageUtils.getMiddleDisplayName(EN_US_AZERTY));
+            assertEquals("en_UK dvorak", "English",
+                    SpacebarLanguageUtils.getMiddleDisplayName(EN_UK_DVORAK));
+            assertEquals("es_US colemak", "Español",
+                    SpacebarLanguageUtils.getMiddleDisplayName(ES_US_COLEMAK));
+            assertEquals("zz azerty", "AZERTY",
+                    SpacebarLanguageUtils.getMiddleDisplayName(ZZ_AZERTY));
+            assertEquals("zz pc", "PC",
+                    SpacebarLanguageUtils.getMiddleDisplayName(ZZ_PC));
+            return null;
+        }
+    };
+
+    public void testPredefinedSubtypesForSpacebarInEnglish() {
+        testsPredefinedSubtypesForSpacebar.runInLocale(mRes, Locale.ENGLISH);
+    }
+
+    public void testAdditionalSubtypeForSpacebarInEnglish() {
+        testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.ENGLISH);
+    }
+
+    public void testPredefinedSubtypesForSpacebarInFrench() {
+        testsPredefinedSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH);
+    }
+
+    public void testAdditionalSubtypeForSpacebarInFrench() {
+        testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java
new file mode 100644
index 0000000..637ae10
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java
@@ -0,0 +1,499 @@
+/*
+ * 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.utils;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.SpannedString;
+
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+@SmallTest
+public class StringAndJsonUtilsTests extends AndroidTestCase {
+    public void testContainsInArray() {
+        assertFalse("empty array", StringUtils.containsInArray("key", new String[0]));
+        assertFalse("not in 1 element", StringUtils.containsInArray("key", new String[] {
+                "key1"
+        }));
+        assertFalse("not in 2 elements", StringUtils.containsInArray("key", new String[] {
+                "key1", "key2"
+        }));
+
+        assertTrue("in 1 element", StringUtils.containsInArray("key", new String[] {
+                "key"
+        }));
+        assertTrue("in 2 elements", StringUtils.containsInArray("key", new String[] {
+                "key1", "key"
+        }));
+    }
+
+    public void testContainsInCommaSplittableText() {
+        assertFalse("null", StringUtils.containsInCommaSplittableText("key", null));
+        assertFalse("empty", StringUtils.containsInCommaSplittableText("key", ""));
+        assertFalse("not in 1 element",
+                StringUtils.containsInCommaSplittableText("key", "key1"));
+        assertFalse("not in 2 elements",
+                StringUtils.containsInCommaSplittableText("key", "key1,key2"));
+
+        assertTrue("in 1 element", StringUtils.containsInCommaSplittableText("key", "key"));
+        assertTrue("in 2 elements", StringUtils.containsInCommaSplittableText("key", "key1,key"));
+    }
+
+    public void testRemoveFromCommaSplittableTextIfExists() {
+        assertEquals("null", "", StringUtils.removeFromCommaSplittableTextIfExists("key", null));
+        assertEquals("empty", "", StringUtils.removeFromCommaSplittableTextIfExists("key", ""));
+
+        assertEquals("not in 1 element", "key1",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1"));
+        assertEquals("not in 2 elements", "key1,key2",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1,key2"));
+
+        assertEquals("in 1 element", "",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key"));
+        assertEquals("in 2 elements at position 1", "key2",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key,key2"));
+        assertEquals("in 2 elements at position 2", "key1",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1,key"));
+        assertEquals("in 3 elements at position 2", "key1,key3",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1,key,key3"));
+
+        assertEquals("in 3 elements at position 1,2,3", "",
+                StringUtils.removeFromCommaSplittableTextIfExists("key", "key,key,key"));
+        assertEquals("in 5 elements at position 2,4", "key1,key3,key5",
+                StringUtils.removeFromCommaSplittableTextIfExists(
+                        "key", "key1,key,key3,key,key5"));
+    }
+
+
+    public void testCapitalizeFirstCodePoint() {
+        assertEquals("SSaa",
+                StringUtils.capitalizeFirstCodePoint("ßaa", Locale.GERMAN));
+        assertEquals("Aßa",
+                StringUtils.capitalizeFirstCodePoint("aßa", Locale.GERMAN));
+        assertEquals("Iab",
+                StringUtils.capitalizeFirstCodePoint("iab", Locale.ENGLISH));
+        assertEquals("CAmElCaSe",
+                StringUtils.capitalizeFirstCodePoint("cAmElCaSe", Locale.ENGLISH));
+        assertEquals("İab",
+                StringUtils.capitalizeFirstCodePoint("iab", new Locale("tr")));
+        assertEquals("AİB",
+                StringUtils.capitalizeFirstCodePoint("AİB", new Locale("tr")));
+        assertEquals("A",
+                StringUtils.capitalizeFirstCodePoint("a", Locale.ENGLISH));
+        assertEquals("A",
+                StringUtils.capitalizeFirstCodePoint("A", Locale.ENGLISH));
+    }
+
+    public void testCapitalizeFirstAndDowncaseRest() {
+        assertEquals("SSaa",
+                StringUtils.capitalizeFirstAndDowncaseRest("ßaa", Locale.GERMAN));
+        assertEquals("Aßa",
+                StringUtils.capitalizeFirstAndDowncaseRest("aßa", Locale.GERMAN));
+        assertEquals("Iab",
+                StringUtils.capitalizeFirstAndDowncaseRest("iab", Locale.ENGLISH));
+        assertEquals("Camelcase",
+                StringUtils.capitalizeFirstAndDowncaseRest("cAmElCaSe", Locale.ENGLISH));
+        assertEquals("İab",
+                StringUtils.capitalizeFirstAndDowncaseRest("iab", new Locale("tr")));
+        assertEquals("Aib",
+                StringUtils.capitalizeFirstAndDowncaseRest("AİB", new Locale("tr")));
+        assertEquals("A",
+                StringUtils.capitalizeFirstAndDowncaseRest("a", Locale.ENGLISH));
+        assertEquals("A",
+                StringUtils.capitalizeFirstAndDowncaseRest("A", Locale.ENGLISH));
+    }
+
+    public void testGetCapitalizationType() {
+        assertEquals(StringUtils.CAPITALIZE_NONE,
+                StringUtils.getCapitalizationType("capitalize"));
+        assertEquals(StringUtils.CAPITALIZE_NONE,
+                StringUtils.getCapitalizationType("cApITalize"));
+        assertEquals(StringUtils.CAPITALIZE_NONE,
+                StringUtils.getCapitalizationType("capitalizE"));
+        assertEquals(StringUtils.CAPITALIZE_NONE,
+                StringUtils.getCapitalizationType("__c a piu$@tali56ze"));
+        assertEquals(StringUtils.CAPITALIZE_FIRST,
+                StringUtils.getCapitalizationType("A__c a piu$@tali56ze"));
+        assertEquals(StringUtils.CAPITALIZE_FIRST,
+                StringUtils.getCapitalizationType("Capitalize"));
+        assertEquals(StringUtils.CAPITALIZE_FIRST,
+                StringUtils.getCapitalizationType("     Capitalize"));
+        assertEquals(StringUtils.CAPITALIZE_ALL,
+                StringUtils.getCapitalizationType("CAPITALIZE"));
+        assertEquals(StringUtils.CAPITALIZE_ALL,
+                StringUtils.getCapitalizationType("  PI26LIE"));
+        assertEquals(StringUtils.CAPITALIZE_NONE,
+                StringUtils.getCapitalizationType(""));
+    }
+
+    public void testIsIdenticalAfterUpcaseIsIdenticalAfterDowncase() {
+        assertFalse(StringUtils.isIdenticalAfterUpcase("capitalize"));
+        assertTrue(StringUtils.isIdenticalAfterDowncase("capitalize"));
+        assertFalse(StringUtils.isIdenticalAfterUpcase("cApITalize"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("cApITalize"));
+        assertFalse(StringUtils.isIdenticalAfterUpcase("capitalizE"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("capitalizE"));
+        assertFalse(StringUtils.isIdenticalAfterUpcase("__c a piu$@tali56ze"));
+        assertTrue(StringUtils.isIdenticalAfterDowncase("__c a piu$@tali56ze"));
+        assertFalse(StringUtils.isIdenticalAfterUpcase("A__c a piu$@tali56ze"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("A__c a piu$@tali56ze"));
+        assertFalse(StringUtils.isIdenticalAfterUpcase("Capitalize"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("Capitalize"));
+        assertFalse(StringUtils.isIdenticalAfterUpcase("     Capitalize"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("     Capitalize"));
+        assertTrue(StringUtils.isIdenticalAfterUpcase("CAPITALIZE"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("CAPITALIZE"));
+        assertTrue(StringUtils.isIdenticalAfterUpcase("  PI26LIE"));
+        assertFalse(StringUtils.isIdenticalAfterDowncase("  PI26LIE"));
+        assertTrue(StringUtils.isIdenticalAfterUpcase(""));
+        assertTrue(StringUtils.isIdenticalAfterDowncase(""));
+    }
+
+    private static void checkCapitalize(final String src, final String dst,
+            final int[] sortedSeparators, final Locale locale) {
+        assertEquals(dst, StringUtils.capitalizeEachWord(src, sortedSeparators, locale));
+        assert(src.equals(dst)
+                == StringUtils.isIdenticalAfterCapitalizeEachWord(src, sortedSeparators));
+    }
+
+    private static final int[] SPACE = { Constants.CODE_SPACE };
+    private static final int[] SPACE_PERIOD = StringUtils.toSortedCodePointArray(" .");
+    private static final int[] SENTENCE_SEPARATORS =
+            StringUtils.toSortedCodePointArray(" \n.!?*()&");
+    private static final int[] WORD_SEPARATORS = StringUtils.toSortedCodePointArray(" \n.!?*,();&");
+
+    public void testCapitalizeEachWord() {
+        checkCapitalize("", "", SPACE, Locale.ENGLISH);
+        checkCapitalize("test", "Test", SPACE, Locale.ENGLISH);
+        checkCapitalize("    test", "    Test", SPACE, Locale.ENGLISH);
+        checkCapitalize("Test", "Test", SPACE, Locale.ENGLISH);
+        checkCapitalize("    Test", "    Test", SPACE, Locale.ENGLISH);
+        checkCapitalize(".Test", ".test", SPACE, Locale.ENGLISH);
+        checkCapitalize(".Test", ".Test", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("test and retest", "Test And Retest", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("Test and retest", "Test And Retest", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("Test And Retest", "Test And Retest", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("Test And.Retest  ", "Test And.Retest  ", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("Test And.retest  ", "Test And.Retest  ", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("Test And.retest  ", "Test And.retest  ", SPACE, Locale.ENGLISH);
+        checkCapitalize("Test And.Retest  ", "Test And.retest  ", SPACE, Locale.ENGLISH);
+        checkCapitalize("test and ietest", "Test And İetest", SPACE_PERIOD, new Locale("tr"));
+        checkCapitalize("test and ietest", "Test And Ietest", SPACE_PERIOD, Locale.ENGLISH);
+        checkCapitalize("Test&Retest", "Test&Retest", SENTENCE_SEPARATORS, Locale.ENGLISH);
+        checkCapitalize("Test&retest", "Test&Retest", SENTENCE_SEPARATORS, Locale.ENGLISH);
+        checkCapitalize("test&Retest", "Test&Retest", SENTENCE_SEPARATORS, Locale.ENGLISH);
+        checkCapitalize("rest\nrecreation! And in the end...",
+                "Rest\nRecreation! And In The End...", WORD_SEPARATORS, Locale.ENGLISH);
+        checkCapitalize("lorem ipsum dolor sit amet", "Lorem Ipsum Dolor Sit Amet",
+                WORD_SEPARATORS, Locale.ENGLISH);
+        checkCapitalize("Lorem!Ipsum (Dolor) Sit * Amet", "Lorem!Ipsum (Dolor) Sit * Amet",
+                WORD_SEPARATORS, Locale.ENGLISH);
+        checkCapitalize("Lorem!Ipsum (dolor) Sit * Amet", "Lorem!Ipsum (Dolor) Sit * Amet",
+                WORD_SEPARATORS, Locale.ENGLISH);
+    }
+
+    public void testLooksLikeURL() {
+        assertTrue(StringUtils.lastPartLooksLikeURL("http://www.google."));
+        assertFalse(StringUtils.lastPartLooksLikeURL("word wo"));
+        assertTrue(StringUtils.lastPartLooksLikeURL("/etc/foo"));
+        assertFalse(StringUtils.lastPartLooksLikeURL("left/right"));
+        assertTrue(StringUtils.lastPartLooksLikeURL("www.goo"));
+        assertTrue(StringUtils.lastPartLooksLikeURL("www."));
+        assertFalse(StringUtils.lastPartLooksLikeURL("U.S.A"));
+        assertFalse(StringUtils.lastPartLooksLikeURL("U.S.A."));
+        assertTrue(StringUtils.lastPartLooksLikeURL("rtsp://foo."));
+        assertTrue(StringUtils.lastPartLooksLikeURL("://"));
+        assertFalse(StringUtils.lastPartLooksLikeURL("abc/"));
+        assertTrue(StringUtils.lastPartLooksLikeURL("abc.def/ghi"));
+        assertFalse(StringUtils.lastPartLooksLikeURL("abc.def"));
+        // TODO: ideally this would not look like a URL, but to keep down the complexity of the
+        // code for now True is acceptable.
+        assertTrue(StringUtils.lastPartLooksLikeURL("abc./def"));
+        // TODO: ideally this would not look like a URL, but to keep down the complexity of the
+        // code for now True is acceptable.
+        assertTrue(StringUtils.lastPartLooksLikeURL(".abc/def"));
+    }
+
+    public void testHexStringUtils() {
+        final byte[] bytes = new byte[] { (byte)0x01, (byte)0x11, (byte)0x22, (byte)0x33,
+                (byte)0x55, (byte)0x88, (byte)0xEE };
+        final String bytesStr = StringUtils.byteArrayToHexString(bytes);
+        final byte[] bytes2 = StringUtils.hexStringToByteArray(bytesStr);
+        for (int i = 0; i < bytes.length; ++i) {
+            assertTrue(bytes[i] == bytes2[i]);
+        }
+        final String bytesStr2 = StringUtils.byteArrayToHexString(bytes2);
+        assertTrue(bytesStr.equals(bytesStr2));
+    }
+
+    public void testJsonUtils() {
+        final Object[] objs = new Object[] { 1, "aaa", "bbb", 3 };
+        final List<Object> objArray = Arrays.asList(objs);
+        final String str = JsonUtils.listToJsonStr(objArray);
+        final List<Object> newObjArray = JsonUtils.jsonStrToList(str);
+        for (int i = 0; i < objs.length; ++i) {
+            assertEquals(objs[i], newObjArray.get(i));
+        }
+    }
+
+    public void testToCodePointArray() {
+        final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh\u0000\u2002\u2003\u3000xx";
+        final int[] EXPECTED_RESULT = new int[] { 'a', 'b', 'c', 'd', 'e', 0x286D7, 'f', 'g', 'h',
+                0, 0x2002, 0x2003, 0x3000, 'x', 'x'};
+        final int[] codePointArray = StringUtils.toCodePointArray(STR_WITH_SUPPLEMENTARY_CHAR, 0,
+                STR_WITH_SUPPLEMENTARY_CHAR.length());
+        assertEquals("toCodePointArray, size matches", codePointArray.length,
+                EXPECTED_RESULT.length);
+        for (int i = 0; i < EXPECTED_RESULT.length; ++i) {
+            assertEquals("toCodePointArray position " + i, codePointArray[i], EXPECTED_RESULT[i]);
+        }
+    }
+
+    public void testCopyCodePointsAndReturnCodePointCount() {
+        final String STR_WITH_SUPPLEMENTARY_CHAR = "AbcDE\uD861\uDED7fGh\u0000\u2002\u3000あx";
+        final int[] EXPECTED_RESULT = new int[] { 'A', 'b', 'c', 'D', 'E', 0x286D7,
+                'f', 'G', 'h', 0, 0x2002, 0x3000, 'あ', 'x'};
+        final int[] EXPECTED_RESULT_DOWNCASE = new int[] { 'a', 'b', 'c', 'd', 'e', 0x286D7,
+                'f', 'g', 'h', 0, 0x2002, 0x3000, 'あ', 'x'};
+
+        int[] codePointArray = new int[50];
+        int codePointCount = StringUtils.copyCodePointsAndReturnCodePointCount(codePointArray,
+                STR_WITH_SUPPLEMENTARY_CHAR, 0,
+                STR_WITH_SUPPLEMENTARY_CHAR.length(), false /* downCase */);
+        assertEquals("copyCodePointsAndReturnCodePointCount, size matches", codePointCount,
+                EXPECTED_RESULT.length);
+        for (int i = 0; i < codePointCount; ++i) {
+            assertEquals("copyCodePointsAndReturnCodePointCount position " + i, codePointArray[i],
+                    EXPECTED_RESULT[i]);
+        }
+
+        codePointCount = StringUtils.copyCodePointsAndReturnCodePointCount(codePointArray,
+                STR_WITH_SUPPLEMENTARY_CHAR, 0,
+                STR_WITH_SUPPLEMENTARY_CHAR.length(), true /* downCase */);
+        assertEquals("copyCodePointsAndReturnCodePointCount downcase, size matches", codePointCount,
+                EXPECTED_RESULT_DOWNCASE.length);
+        for (int i = 0; i < codePointCount; ++i) {
+            assertEquals("copyCodePointsAndReturnCodePointCount position " + i, codePointArray[i],
+                    EXPECTED_RESULT_DOWNCASE[i]);
+        }
+
+        final int JAVA_CHAR_COUNT = 8;
+        final int CODEPOINT_COUNT = 7;
+        codePointCount = StringUtils.copyCodePointsAndReturnCodePointCount(codePointArray,
+                STR_WITH_SUPPLEMENTARY_CHAR, 0, JAVA_CHAR_COUNT, false /* downCase */);
+        assertEquals("copyCodePointsAndReturnCodePointCount, size matches", codePointCount,
+                CODEPOINT_COUNT);
+        for (int i = 0; i < codePointCount; ++i) {
+            assertEquals("copyCodePointsAndReturnCodePointCount position " + i, codePointArray[i],
+                    EXPECTED_RESULT[i]);
+        }
+
+        boolean exceptionHappened = false;
+        codePointArray = new int[5];
+        try {
+            codePointCount = StringUtils.copyCodePointsAndReturnCodePointCount(codePointArray,
+                    STR_WITH_SUPPLEMENTARY_CHAR, 0, JAVA_CHAR_COUNT, false /* downCase */);
+        } catch (ArrayIndexOutOfBoundsException e) {
+            exceptionHappened = true;
+        }
+        assertTrue("copyCodePointsAndReturnCodePointCount throws when array is too small",
+                exceptionHappened);
+    }
+
+    public void testGetTrailingSingleQuotesCount() {
+        assertEquals(0, StringUtils.getTrailingSingleQuotesCount(""));
+        assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'"));
+        assertEquals(5, StringUtils.getTrailingSingleQuotesCount("'''''"));
+        assertEquals(0, StringUtils.getTrailingSingleQuotesCount("a"));
+        assertEquals(0, StringUtils.getTrailingSingleQuotesCount("'this"));
+        assertEquals(1, StringUtils.getTrailingSingleQuotesCount("'word'"));
+        assertEquals(0, StringUtils.getTrailingSingleQuotesCount("I'm"));
+    }
+
+    private static void assertSpanCount(final int expectedCount, final CharSequence cs) {
+        final int actualCount;
+        if (cs instanceof Spanned) {
+            final Spanned spanned = (Spanned) cs;
+            actualCount = spanned.getSpans(0, spanned.length(), Object.class).length;
+        } else {
+            actualCount = 0;
+        }
+        assertEquals(expectedCount, actualCount);
+    }
+
+    private static void assertSpan(final CharSequence cs, final Object expectedSpan,
+            final int expectedStart, final int expectedEnd, final int expectedFlags) {
+        assertTrue(cs instanceof Spanned);
+        final Spanned spanned = (Spanned) cs;
+        final Object[] actualSpans = spanned.getSpans(0, spanned.length(), Object.class);
+        for (Object actualSpan : actualSpans) {
+            if (actualSpan == expectedSpan) {
+                final int actualStart = spanned.getSpanStart(actualSpan);
+                final int actualEnd = spanned.getSpanEnd(actualSpan);
+                final int actualFlags = spanned.getSpanFlags(actualSpan);
+                assertEquals(expectedStart, actualStart);
+                assertEquals(expectedEnd, actualEnd);
+                assertEquals(expectedFlags, actualFlags);
+                return;
+            }
+        }
+        assertTrue(false);
+    }
+
+    public void testSplitCharSequenceWithSpan() {
+        // text:  " a bcd efg hij  "
+        // span1:  ^^^^^^^
+        // span2:  ^^^^^
+        // span3:              ^
+        final SpannableString spannableString = new SpannableString(" a bcd efg hij  ");
+        final Object span1 = new Object();
+        final Object span2 = new Object();
+        final Object span3 = new Object();
+        final int SPAN1_FLAGS = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE;
+        final int SPAN2_FLAGS = Spanned.SPAN_EXCLUSIVE_INCLUSIVE;
+        final int SPAN3_FLAGS = Spanned.SPAN_INCLUSIVE_INCLUSIVE;
+        spannableString.setSpan(span1, 0, 7, SPAN1_FLAGS);
+        spannableString.setSpan(span2, 0, 5, SPAN2_FLAGS);
+        spannableString.setSpan(span3, 12, 13, SPAN3_FLAGS);
+        final CharSequence[] charSequencesFromSpanned = StringUtils.split(
+                spannableString, " ", true /* preserveTrailingEmptySegmengs */);
+        final CharSequence[] charSequencesFromString = StringUtils.split(
+                spannableString.toString(), " ", true /* preserveTrailingEmptySegmengs */);
+
+
+        assertEquals(7, charSequencesFromString.length);
+        assertEquals(7, charSequencesFromSpanned.length);
+
+        // text:  ""
+        // span1: ^
+        // span2: ^
+        // span3:
+        assertEquals("", charSequencesFromString[0].toString());
+        assertSpanCount(0, charSequencesFromString[0]);
+        assertEquals("", charSequencesFromSpanned[0].toString());
+        assertSpanCount(2, charSequencesFromSpanned[0]);
+        assertSpan(charSequencesFromSpanned[0], span1, 0, 0, SPAN1_FLAGS);
+        assertSpan(charSequencesFromSpanned[0], span2, 0, 0, SPAN2_FLAGS);
+
+        // text:  "a"
+        // span1:  ^
+        // span2:  ^
+        // span3:
+        assertEquals("a", charSequencesFromString[1].toString());
+        assertSpanCount(0, charSequencesFromString[1]);
+        assertEquals("a", charSequencesFromSpanned[1].toString());
+        assertSpanCount(2, charSequencesFromSpanned[1]);
+        assertSpan(charSequencesFromSpanned[1], span1, 0, 1, SPAN1_FLAGS);
+        assertSpan(charSequencesFromSpanned[1], span2, 0, 1, SPAN2_FLAGS);
+
+        // text:  "bcd"
+        // span1:  ^^^
+        // span2:  ^^
+        // span3:
+        assertEquals("bcd", charSequencesFromString[2].toString());
+        assertSpanCount(0, charSequencesFromString[2]);
+        assertEquals("bcd", charSequencesFromSpanned[2].toString());
+        assertSpanCount(2, charSequencesFromSpanned[2]);
+        assertSpan(charSequencesFromSpanned[2], span1, 0, 3, SPAN1_FLAGS);
+        assertSpan(charSequencesFromSpanned[2], span2, 0, 2, SPAN2_FLAGS);
+
+        // text:  "efg"
+        // span1:
+        // span2:
+        // span3:
+        assertEquals("efg", charSequencesFromString[3].toString());
+        assertSpanCount(0, charSequencesFromString[3]);
+        assertEquals("efg", charSequencesFromSpanned[3].toString());
+        assertSpanCount(0, charSequencesFromSpanned[3]);
+
+        // text:  "hij"
+        // span1:
+        // span2:
+        // span3:   ^
+        assertEquals("hij", charSequencesFromString[4].toString());
+        assertSpanCount(0, charSequencesFromString[4]);
+        assertEquals("hij", charSequencesFromSpanned[4].toString());
+        assertSpanCount(1, charSequencesFromSpanned[4]);
+        assertSpan(charSequencesFromSpanned[4], span3, 1, 2, SPAN3_FLAGS);
+
+        // text:  ""
+        // span1:
+        // span2:
+        // span3:
+        assertEquals("", charSequencesFromString[5].toString());
+        assertSpanCount(0, charSequencesFromString[5]);
+        assertEquals("", charSequencesFromSpanned[5].toString());
+        assertSpanCount(0, charSequencesFromSpanned[5]);
+
+        // text:  ""
+        // span1:
+        // span2:
+        // span3:
+        assertEquals("", charSequencesFromString[6].toString());
+        assertSpanCount(0, charSequencesFromString[6]);
+        assertEquals("", charSequencesFromSpanned[6].toString());
+        assertSpanCount(0, charSequencesFromSpanned[6]);
+    }
+
+    public void testSplitCharSequencePreserveTrailingEmptySegmengs() {
+        assertEquals(1, StringUtils.split("", " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(1, StringUtils.split(new SpannedString(""), " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(1, StringUtils.split("", " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(1, StringUtils.split(new SpannedString(""), " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(0, StringUtils.split(" ", " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(0, StringUtils.split(new SpannedString(" "), " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(2, StringUtils.split(" ", " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(2, StringUtils.split(new SpannedString(" "), " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(3, StringUtils.split("a b c  ", " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(3, StringUtils.split(new SpannedString("a b c  "), " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(5, StringUtils.split("a b c  ", " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(5, StringUtils.split(new SpannedString("a b c  "), " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(6, StringUtils.split("a     b ", " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(6, StringUtils.split(new SpannedString("a     b "), " ",
+                false /* preserveTrailingEmptySegmengs */).length);
+
+        assertEquals(7, StringUtils.split("a     b ", " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+        assertEquals(7, StringUtils.split(new SpannedString("a     b "), " ",
+                true /* preserveTrailingEmptySegmengs */).length);
+    }
+}
diff --git a/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java
deleted file mode 100644
index 4e396a1..0000000
--- a/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * 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.utils;
-
-import com.android.inputmethod.latin.settings.SettingsValues;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-
-@SmallTest
-public class StringUtilsTests extends AndroidTestCase {
-    public void testContainsInArray() {
-        assertFalse("empty array", StringUtils.containsInArray("key", new String[0]));
-        assertFalse("not in 1 element", StringUtils.containsInArray("key", new String[] {
-                "key1"
-        }));
-        assertFalse("not in 2 elements", StringUtils.containsInArray("key", new String[] {
-                "key1", "key2"
-        }));
-
-        assertTrue("in 1 element", StringUtils.containsInArray("key", new String[] {
-                "key"
-        }));
-        assertTrue("in 2 elements", StringUtils.containsInArray("key", new String[] {
-                "key1", "key"
-        }));
-    }
-
-    public void testContainsInExtraValues() {
-        assertFalse("null", StringUtils.containsInCommaSplittableText("key", null));
-        assertFalse("empty", StringUtils.containsInCommaSplittableText("key", ""));
-        assertFalse("not in 1 element",
-                StringUtils.containsInCommaSplittableText("key", "key1"));
-        assertFalse("not in 2 elements",
-                StringUtils.containsInCommaSplittableText("key", "key1,key2"));
-
-        assertTrue("in 1 element", StringUtils.containsInCommaSplittableText("key", "key"));
-        assertTrue("in 2 elements", StringUtils.containsInCommaSplittableText("key", "key1,key"));
-    }
-
-    public void testAppendToExtraValuesIfNotExists() {
-        assertEquals("null", "key",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", null));
-        assertEquals("empty", "key",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", ""));
-
-        assertEquals("not in 1 element", "key1,key",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", "key1"));
-        assertEquals("not in 2 elements", "key1,key2,key",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", "key1,key2"));
-
-        assertEquals("in 1 element", "key",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", "key"));
-        assertEquals("in 2 elements at position 1", "key,key2",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", "key,key2"));
-        assertEquals("in 2 elements at position 2", "key1,key",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", "key1,key"));
-        assertEquals("in 3 elements at position 2", "key1,key,key3",
-                StringUtils.appendToCommaSplittableTextIfNotExists("key", "key1,key,key3"));
-    }
-
-    public void testRemoveFromExtraValuesIfExists() {
-        assertEquals("null", "", StringUtils.removeFromCommaSplittableTextIfExists("key", null));
-        assertEquals("empty", "", StringUtils.removeFromCommaSplittableTextIfExists("key", ""));
-
-        assertEquals("not in 1 element", "key1",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1"));
-        assertEquals("not in 2 elements", "key1,key2",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1,key2"));
-
-        assertEquals("in 1 element", "",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key"));
-        assertEquals("in 2 elements at position 1", "key2",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key,key2"));
-        assertEquals("in 2 elements at position 2", "key1",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1,key"));
-        assertEquals("in 3 elements at position 2", "key1,key3",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key1,key,key3"));
-
-        assertEquals("in 3 elements at position 1,2,3", "",
-                StringUtils.removeFromCommaSplittableTextIfExists("key", "key,key,key"));
-        assertEquals("in 5 elements at position 2,4", "key1,key3,key5",
-                StringUtils.removeFromCommaSplittableTextIfExists(
-                        "key", "key1,key,key3,key,key5"));
-    }
-
-
-    public void testCapitalizeFirstCodePoint() {
-        assertEquals("SSaa",
-                StringUtils.capitalizeFirstCodePoint("ßaa", Locale.GERMAN));
-        assertEquals("Aßa",
-                StringUtils.capitalizeFirstCodePoint("aßa", Locale.GERMAN));
-        assertEquals("Iab",
-                StringUtils.capitalizeFirstCodePoint("iab", Locale.ENGLISH));
-        assertEquals("CAmElCaSe",
-                StringUtils.capitalizeFirstCodePoint("cAmElCaSe", Locale.ENGLISH));
-        assertEquals("İab",
-                StringUtils.capitalizeFirstCodePoint("iab", new Locale("tr")));
-        assertEquals("AİB",
-                StringUtils.capitalizeFirstCodePoint("AİB", new Locale("tr")));
-        assertEquals("A",
-                StringUtils.capitalizeFirstCodePoint("a", Locale.ENGLISH));
-        assertEquals("A",
-                StringUtils.capitalizeFirstCodePoint("A", Locale.ENGLISH));
-    }
-
-    public void testCapitalizeFirstAndDowncaseRest() {
-        assertEquals("SSaa",
-                StringUtils.capitalizeFirstAndDowncaseRest("ßaa", Locale.GERMAN));
-        assertEquals("Aßa",
-                StringUtils.capitalizeFirstAndDowncaseRest("aßa", Locale.GERMAN));
-        assertEquals("Iab",
-                StringUtils.capitalizeFirstAndDowncaseRest("iab", Locale.ENGLISH));
-        assertEquals("Camelcase",
-                StringUtils.capitalizeFirstAndDowncaseRest("cAmElCaSe", Locale.ENGLISH));
-        assertEquals("İab",
-                StringUtils.capitalizeFirstAndDowncaseRest("iab", new Locale("tr")));
-        assertEquals("Aib",
-                StringUtils.capitalizeFirstAndDowncaseRest("AİB", new Locale("tr")));
-        assertEquals("A",
-                StringUtils.capitalizeFirstAndDowncaseRest("a", Locale.ENGLISH));
-        assertEquals("A",
-                StringUtils.capitalizeFirstAndDowncaseRest("A", Locale.ENGLISH));
-    }
-
-    public void testGetCapitalizationType() {
-        assertEquals(StringUtils.CAPITALIZE_NONE,
-                StringUtils.getCapitalizationType("capitalize"));
-        assertEquals(StringUtils.CAPITALIZE_NONE,
-                StringUtils.getCapitalizationType("cApITalize"));
-        assertEquals(StringUtils.CAPITALIZE_NONE,
-                StringUtils.getCapitalizationType("capitalizE"));
-        assertEquals(StringUtils.CAPITALIZE_NONE,
-                StringUtils.getCapitalizationType("__c a piu$@tali56ze"));
-        assertEquals(StringUtils.CAPITALIZE_FIRST,
-                StringUtils.getCapitalizationType("A__c a piu$@tali56ze"));
-        assertEquals(StringUtils.CAPITALIZE_FIRST,
-                StringUtils.getCapitalizationType("Capitalize"));
-        assertEquals(StringUtils.CAPITALIZE_FIRST,
-                StringUtils.getCapitalizationType("     Capitalize"));
-        assertEquals(StringUtils.CAPITALIZE_ALL,
-                StringUtils.getCapitalizationType("CAPITALIZE"));
-        assertEquals(StringUtils.CAPITALIZE_ALL,
-                StringUtils.getCapitalizationType("  PI26LIE"));
-        assertEquals(StringUtils.CAPITALIZE_NONE,
-                StringUtils.getCapitalizationType(""));
-    }
-
-    public void testIsIdenticalAfterUpcaseIsIdenticalAfterDowncase() {
-        assertFalse(StringUtils.isIdenticalAfterUpcase("capitalize"));
-        assertTrue(StringUtils.isIdenticalAfterDowncase("capitalize"));
-        assertFalse(StringUtils.isIdenticalAfterUpcase("cApITalize"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("cApITalize"));
-        assertFalse(StringUtils.isIdenticalAfterUpcase("capitalizE"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("capitalizE"));
-        assertFalse(StringUtils.isIdenticalAfterUpcase("__c a piu$@tali56ze"));
-        assertTrue(StringUtils.isIdenticalAfterDowncase("__c a piu$@tali56ze"));
-        assertFalse(StringUtils.isIdenticalAfterUpcase("A__c a piu$@tali56ze"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("A__c a piu$@tali56ze"));
-        assertFalse(StringUtils.isIdenticalAfterUpcase("Capitalize"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("Capitalize"));
-        assertFalse(StringUtils.isIdenticalAfterUpcase("     Capitalize"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("     Capitalize"));
-        assertTrue(StringUtils.isIdenticalAfterUpcase("CAPITALIZE"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("CAPITALIZE"));
-        assertTrue(StringUtils.isIdenticalAfterUpcase("  PI26LIE"));
-        assertFalse(StringUtils.isIdenticalAfterDowncase("  PI26LIE"));
-        assertTrue(StringUtils.isIdenticalAfterUpcase(""));
-        assertTrue(StringUtils.isIdenticalAfterDowncase(""));
-    }
-
-    public void testLooksValidForDictionaryInsertion() {
-        final SettingsValues settings =
-                SettingsValues.makeDummySettingsValuesForTest(Locale.ENGLISH);
-        assertTrue(StringUtils.looksValidForDictionaryInsertion("aochaueo", settings));
-        assertFalse(StringUtils.looksValidForDictionaryInsertion("", settings));
-        assertTrue(StringUtils.looksValidForDictionaryInsertion("ao-ch'aueo", settings));
-        assertFalse(StringUtils.looksValidForDictionaryInsertion("2908743256", settings));
-        assertTrue(StringUtils.looksValidForDictionaryInsertion("31aochaueo", settings));
-        assertFalse(StringUtils.looksValidForDictionaryInsertion("akeo  raeoch oerch .", settings));
-        assertFalse(StringUtils.looksValidForDictionaryInsertion("!!!", settings));
-    }
-
-    private static void checkCapitalize(final String src, final String dst, final String separators,
-            final Locale locale) {
-        assertEquals(dst, StringUtils.capitalizeEachWord(src, separators, locale));
-        assert(src.equals(dst)
-                == StringUtils.isIdenticalAfterCapitalizeEachWord(src, separators));
-    }
-
-    public void testCapitalizeEachWord() {
-        checkCapitalize("", "", " ", Locale.ENGLISH);
-        checkCapitalize("test", "Test", " ", Locale.ENGLISH);
-        checkCapitalize("    test", "    Test", " ", Locale.ENGLISH);
-        checkCapitalize("Test", "Test", " ", Locale.ENGLISH);
-        checkCapitalize("    Test", "    Test", " ", Locale.ENGLISH);
-        checkCapitalize(".Test", ".test", " ", Locale.ENGLISH);
-        checkCapitalize(".Test", ".Test", " .", Locale.ENGLISH);
-        checkCapitalize(".Test", ".Test", ". ", Locale.ENGLISH);
-        checkCapitalize("test and retest", "Test And Retest", " .", Locale.ENGLISH);
-        checkCapitalize("Test and retest", "Test And Retest", " .", Locale.ENGLISH);
-        checkCapitalize("Test And Retest", "Test And Retest", " .", Locale.ENGLISH);
-        checkCapitalize("Test And.Retest  ", "Test And.Retest  ", " .", Locale.ENGLISH);
-        checkCapitalize("Test And.retest  ", "Test And.Retest  ", " .", Locale.ENGLISH);
-        checkCapitalize("Test And.retest  ", "Test And.retest  ", " ", Locale.ENGLISH);
-        checkCapitalize("Test And.Retest  ", "Test And.retest  ", " ", Locale.ENGLISH);
-        checkCapitalize("test and ietest", "Test And İetest", " .", new Locale("tr"));
-        checkCapitalize("test and ietest", "Test And Ietest", " .", Locale.ENGLISH);
-        checkCapitalize("Test&Retest", "Test&Retest", " \n.!?*()&", Locale.ENGLISH);
-        checkCapitalize("Test&retest", "Test&Retest", " \n.!?*()&", Locale.ENGLISH);
-        checkCapitalize("test&Retest", "Test&Retest", " \n.!?*()&", Locale.ENGLISH);
-        checkCapitalize("rest\nrecreation! And in the end...",
-                "Rest\nRecreation! And In The End...", " \n.!?*,();&", Locale.ENGLISH);
-        checkCapitalize("lorem ipsum dolor sit amet", "Lorem Ipsum Dolor Sit Amet",
-                " \n.,!?*()&;", Locale.ENGLISH);
-        checkCapitalize("Lorem!Ipsum (Dolor) Sit * Amet", "Lorem!Ipsum (Dolor) Sit * Amet",
-                " \n,.;!?*()&", Locale.ENGLISH);
-        checkCapitalize("Lorem!Ipsum (dolor) Sit * Amet", "Lorem!Ipsum (Dolor) Sit * Amet",
-                " \n,.;!?*()&", Locale.ENGLISH);
-    }
-
-    public void testLooksLikeURL() {
-        assertTrue(StringUtils.lastPartLooksLikeURL("http://www.google."));
-        assertFalse(StringUtils.lastPartLooksLikeURL("word wo"));
-        assertTrue(StringUtils.lastPartLooksLikeURL("/etc/foo"));
-        assertFalse(StringUtils.lastPartLooksLikeURL("left/right"));
-        assertTrue(StringUtils.lastPartLooksLikeURL("www.goo"));
-        assertTrue(StringUtils.lastPartLooksLikeURL("www."));
-        assertFalse(StringUtils.lastPartLooksLikeURL("U.S.A"));
-        assertFalse(StringUtils.lastPartLooksLikeURL("U.S.A."));
-        assertTrue(StringUtils.lastPartLooksLikeURL("rtsp://foo."));
-        assertTrue(StringUtils.lastPartLooksLikeURL("://"));
-        assertFalse(StringUtils.lastPartLooksLikeURL("abc/"));
-        assertTrue(StringUtils.lastPartLooksLikeURL("abc.def/ghi"));
-        assertFalse(StringUtils.lastPartLooksLikeURL("abc.def"));
-        // TODO: ideally this would not look like a URL, but to keep down the complexity of the
-        // code for now True is acceptable.
-        assertTrue(StringUtils.lastPartLooksLikeURL("abc./def"));
-        // TODO: ideally this would not look like a URL, but to keep down the complexity of the
-        // code for now True is acceptable.
-        assertTrue(StringUtils.lastPartLooksLikeURL(".abc/def"));
-    }
-
-    public void testHexStringUtils() {
-        final byte[] bytes = new byte[] { (byte)0x01, (byte)0x11, (byte)0x22, (byte)0x33,
-                (byte)0x55, (byte)0x88, (byte)0xEE };
-        final String bytesStr = StringUtils.byteArrayToHexString(bytes);
-        final byte[] bytes2 = StringUtils.hexStringToByteArray(bytesStr);
-        for (int i = 0; i < bytes.length; ++i) {
-            assertTrue(bytes[i] == bytes2[i]);
-        }
-        final String bytesStr2 = StringUtils.byteArrayToHexString(bytes2);
-        assertTrue(bytesStr.equals(bytesStr2));
-    }
-
-    public void testJsonStringUtils() {
-        final Object[] objs = new Object[] { 1, "aaa", "bbb", 3 };
-        final List<Object> objArray = Arrays.asList(objs);
-        final String str = StringUtils.listToJsonStr(objArray);
-        final List<Object> newObjArray = StringUtils.jsonStrToList(str);
-        for (int i = 0; i < objs.length; ++i) {
-            assertEquals(objs[i], newObjArray.get(i));
-        }
-    }
-}
diff --git a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java
index 856b2db..ce3df7d 100644
--- a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java
@@ -20,9 +20,9 @@
 import android.content.res.Resources;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
+import android.view.inputmethod.InputMethodInfo;
 import android.view.inputmethod.InputMethodSubtype;
 
-import com.android.inputmethod.latin.R;
 import com.android.inputmethod.latin.RichInputMethodManager;
 
 import java.util.ArrayList;
@@ -30,8 +30,8 @@
 
 @SmallTest
 public class SubtypeLocaleUtilsTests extends AndroidTestCase {
-    // Locale to subtypes list.
-    private final ArrayList<InputMethodSubtype> mSubtypesList = CollectionUtils.newArrayList();
+    // All input method subtypes of LatinIME.
+    private final ArrayList<InputMethodSubtype> mSubtypesList = new ArrayList<>();
 
     private RichInputMethodManager mRichImm;
     private Resources mRes;
@@ -41,7 +41,9 @@
     InputMethodSubtype ES_US;
     InputMethodSubtype FR;
     InputMethodSubtype FR_CA;
+    InputMethodSubtype FR_CH;
     InputMethodSubtype DE;
+    InputMethodSubtype DE_CH;
     InputMethodSubtype ZZ;
     InputMethodSubtype DE_QWERTY;
     InputMethodSubtype FR_QWERTZ;
@@ -60,6 +62,13 @@
         mRes = context.getResources();
         SubtypeLocaleUtils.init(context);
 
+        final InputMethodInfo imi = mRichImm.getInputMethodInfoOfThisIme();
+        final int subtypeCount = imi.getSubtypeCount();
+        for (int index = 0; index < subtypeCount; index++) {
+            final InputMethodSubtype subtype = imi.getSubtypeAt(index);
+            mSubtypesList.add(subtype);
+        }
+
         EN_US = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
                 Locale.US.toString(), "qwerty");
         EN_GB = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
@@ -70,37 +79,41 @@
                 Locale.FRENCH.toString(), "azerty");
         FR_CA = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
                 Locale.CANADA_FRENCH.toString(), "qwerty");
+        FR_CH = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                "fr_CH", "swiss");
         DE = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
                 Locale.GERMAN.toString(), "qwertz");
+        DE_CH = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
+                "de_CH", "swiss");
         ZZ = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
                 SubtypeLocaleUtils.NO_LANGUAGE, "qwerty");
-        DE_QWERTY = AdditionalSubtypeUtils.createAdditionalSubtype(
-                Locale.GERMAN.toString(), "qwerty", null);
-        FR_QWERTZ = AdditionalSubtypeUtils.createAdditionalSubtype(
-                Locale.FRENCH.toString(), "qwertz", null);
-        EN_US_AZERTY = AdditionalSubtypeUtils.createAdditionalSubtype(
-                Locale.US.toString(), "azerty", null);
-        EN_UK_DVORAK = AdditionalSubtypeUtils.createAdditionalSubtype(
-                Locale.UK.toString(), "dvorak", null);
-        ES_US_COLEMAK = AdditionalSubtypeUtils.createAdditionalSubtype(
-                "es_US", "colemak", null);
-        ZZ_AZERTY = AdditionalSubtypeUtils.createAdditionalSubtype(
-                SubtypeLocaleUtils.NO_LANGUAGE, "azerty", null);
-        ZZ_PC = AdditionalSubtypeUtils.createAdditionalSubtype(
-                SubtypeLocaleUtils.NO_LANGUAGE, "pcqwerty", null);
-
+        DE_QWERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.GERMAN.toString(), "qwerty");
+        FR_QWERTZ = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.FRENCH.toString(), "qwertz");
+        EN_US_AZERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.US.toString(), "azerty");
+        EN_UK_DVORAK = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                Locale.UK.toString(), "dvorak");
+        ES_US_COLEMAK = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                "es_US", "colemak");
+        ZZ_AZERTY = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                SubtypeLocaleUtils.NO_LANGUAGE, "azerty");
+        ZZ_PC = AdditionalSubtypeUtils.createAsciiEmojiCapableAdditionalSubtype(
+                SubtypeLocaleUtils.NO_LANGUAGE, "pcqwerty");
     }
 
     public void testAllFullDisplayName() {
         for (final InputMethodSubtype subtype : mSubtypesList) {
-            final String subtypeName =
-                    SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype);
+            final String subtypeName = SubtypeLocaleUtils
+                    .getSubtypeDisplayNameInSystemLocale(subtype);
             if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
-                final String noLanguage = mRes.getString(R.string.subtype_no_language);
-                assertTrue(subtypeName, subtypeName.contains(noLanguage));
+                final String layoutName = SubtypeLocaleUtils
+                        .getKeyboardLayoutSetDisplayName(subtype);
+                assertTrue(subtypeName, subtypeName.contains(layoutName));
             } else {
-                final String languageName =
-                        SubtypeLocaleUtils.getSubtypeLocaleDisplayName(subtype.getLocale());
+                final String languageName = SubtypeLocaleUtils
+                        .getSubtypeLocaleDisplayNameInSystemLocale(subtype.getLocale());
                 assertTrue(subtypeName, subtypeName.contains(languageName));
             }
         }
@@ -110,10 +123,23 @@
         assertEquals("en_US", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(EN_US));
         assertEquals("en_GB", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(EN_GB));
         assertEquals("es_US", "spanish", SubtypeLocaleUtils.getKeyboardLayoutSetName(ES_US));
-        assertEquals("fr   ", "azerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(FR));
+        assertEquals("fr", "azerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(FR));
         assertEquals("fr_CA", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(FR_CA));
-        assertEquals("de   ", "qwertz", SubtypeLocaleUtils.getKeyboardLayoutSetName(DE));
-        assertEquals("zz   ", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(ZZ));
+        assertEquals("fr_CH", "swiss", SubtypeLocaleUtils.getKeyboardLayoutSetName(FR_CH));
+        assertEquals("de", "qwertz", SubtypeLocaleUtils.getKeyboardLayoutSetName(DE));
+        assertEquals("de_CH", "swiss", SubtypeLocaleUtils.getKeyboardLayoutSetName(DE_CH));
+        assertEquals("zz", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(ZZ));
+
+        assertEquals("de qwerty", "qwerty", SubtypeLocaleUtils.getKeyboardLayoutSetName(DE_QWERTY));
+        assertEquals("fr qwertz", "qwertz", SubtypeLocaleUtils.getKeyboardLayoutSetName(FR_QWERTZ));
+        assertEquals("en_US azerty", "azerty",
+                SubtypeLocaleUtils.getKeyboardLayoutSetName(EN_US_AZERTY));
+        assertEquals("en_UK dvorak", "dvorak",
+                SubtypeLocaleUtils.getKeyboardLayoutSetName(EN_UK_DVORAK));
+        assertEquals("es_US colemak", "colemak",
+                SubtypeLocaleUtils.getKeyboardLayoutSetName(ES_US_COLEMAK));
+        assertEquals("zz azerty", "azerty",
+                SubtypeLocaleUtils.getKeyboardLayoutSetName(ZZ_AZERTY));
     }
 
     // InputMethodSubtype's display name in system locale (en_US).
@@ -125,7 +151,9 @@
     //  es_US spanish F  Spanish (US)            exception
     //  fr    azerty  F  French
     //  fr_CA qwerty  F  French (Canada)
+    //  fr_CH swiss   F  French (Switzerland)
     //  de    qwertz  F  German
+    //  de_CH swiss   F  German (Switzerland)
     //  zz    qwerty  F  Alphabet (QWERTY)
     //  fr    qwertz  T  French (QWERTZ)
     //  de    qwerty  T  German (QWERTY)
@@ -144,13 +172,17 @@
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(EN_GB));
                 assertEquals("es_US", "Spanish (US)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ES_US));
-                assertEquals("fr   ", "French",
+                assertEquals("fr", "French",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR));
                 assertEquals("fr_CA", "French (Canada)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR_CA));
-                assertEquals("de   ", "German",
+                assertEquals("fr_CH", "French (Switzerland)",
+                        SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR_CH));
+                assertEquals("de", "German",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(DE));
-                assertEquals("zz   ", "Alphabet (QWERTY)",
+                assertEquals("de_CH", "German (Switzerland)",
+                        SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(DE_CH));
+                assertEquals("zz", "Alphabet (QWERTY)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ZZ));
                 return null;
             }
@@ -162,17 +194,19 @@
         final RunInLocale<Void> tests = new RunInLocale<Void>() {
             @Override
             protected Void job(final Resources res) {
-                assertEquals("fr qwertz",    "French (QWERTZ)",
+                assertEquals("fr qwertz", "French (QWERTZ)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR_QWERTZ));
-                assertEquals("de qwerty",    "German (QWERTY)",
+                assertEquals("de qwerty", "German (QWERTY)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(DE_QWERTY));
                 assertEquals("en_US azerty", "English (US) (AZERTY)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(EN_US_AZERTY));
-                assertEquals("en_UK dvorak", "English (UK) (Dvorak)",
+                assertEquals("en_UK dvorak","English (UK) (Dvorak)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(EN_UK_DVORAK));
-                assertEquals("es_US colemak","Spanish (US) (Colemak)",
+                assertEquals("es_US colemak", "Spanish (US) (Colemak)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ES_US_COLEMAK));
-                assertEquals("zz pc",    "Alphabet (PC)",
+                assertEquals("zz azerty", "Alphabet (AZERTY)",
+                        SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ZZ_AZERTY));
+                assertEquals("zz pc", "Alphabet (PC)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ZZ_PC));
                 return null;
             }
@@ -189,14 +223,16 @@
     //  es_US spanish F  Espagnol (États-Unis)            exception
     //  fr    azerty  F  Français
     //  fr_CA qwerty  F  Français (Canada)
+    //  fr_CH swiss   F  Français (Suisse)
     //  de    qwertz  F  Allemand
-    //  zz    qwerty  F  Aucune langue (QWERTY)
+    //  de_CH swiss   F  Allemand (Suisse)
+    //  zz    qwerty  F  Alphabet latin (QWERTY)
     //  fr    qwertz  T  Français (QWERTZ)
     //  de    qwerty  T  Allemand (QWERTY)
     //  en_US azerty  T  Anglais (États-Unis) (AZERTY)   exception
     //  en_UK dvorak  T  Anglais (Royaume-Uni) (Dvorak)   exception
     //  es_US colemak T  Espagnol (États-Unis) (Colemak)  exception
-    //  zz    pc      T  Alphabet (PC)
+    //  zz    pc      T  Alphabet latin (PC)
 
     public void testPredefinedSubtypesInFrenchSystemLocale() {
         final RunInLocale<Void> tests = new RunInLocale<Void>() {
@@ -208,13 +244,17 @@
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(EN_GB));
                 assertEquals("es_US", "Espagnol (États-Unis)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ES_US));
-                assertEquals("fr   ", "Français",
+                assertEquals("fr", "Français",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR));
                 assertEquals("fr_CA", "Français (Canada)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR_CA));
-                assertEquals("de   ", "Allemand",
+                assertEquals("fr_CH", "Français (Suisse)",
+                        SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR_CH));
+                assertEquals("de", "Allemand",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(DE));
-                assertEquals("zz   ", "Alphabet latin (QWERTY)",
+                assertEquals("de_CH", "Allemand (Suisse)",
+                        SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(DE_CH));
+                assertEquals("zz", "Alphabet latin (QWERTY)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ZZ));
                 return null;
             }
@@ -226,17 +266,19 @@
         final RunInLocale<Void> tests = new RunInLocale<Void>() {
             @Override
             protected Void job(final Resources res) {
-                assertEquals("fr qwertz",    "Français (QWERTZ)",
+                assertEquals("fr qwertz", "Français (QWERTZ)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(FR_QWERTZ));
-                assertEquals("de qwerty",    "Allemand (QWERTY)",
+                assertEquals("de qwerty", "Allemand (QWERTY)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(DE_QWERTY));
                 assertEquals("en_US azerty", "Anglais (États-Unis) (AZERTY)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(EN_US_AZERTY));
                 assertEquals("en_UK dvorak", "Anglais (Royaume-Uni) (Dvorak)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(EN_UK_DVORAK));
-                assertEquals("es_US colemak","Espagnol (États-Unis) (Colemak)",
+                assertEquals("es_US colemak", "Espagnol (États-Unis) (Colemak)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ES_US_COLEMAK));
-                assertEquals("zz pc",    "Alphabet latin (PC)",
+                assertEquals("zz azerty", "Alphabet latin (AZERTY)",
+                        SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ZZ_AZERTY));
+                assertEquals("zz pc", "Alphabet latin (PC)",
                         SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(ZZ_PC));
                 return null;
             }
@@ -244,144 +286,26 @@
         tests.runInLocale(mRes, Locale.FRENCH);
     }
 
-    public void testAllFullDisplayNameForSpacebar() {
+    public void testIsRtlLanguage() {
+        // Known Right-to-Left language subtypes.
+        final InputMethodSubtype ARABIC = mRichImm
+                .findSubtypeByLocaleAndKeyboardLayoutSet("ar", "arabic");
+        assertNotNull("Arabic", ARABIC);
+        final InputMethodSubtype FARSI = mRichImm
+                .findSubtypeByLocaleAndKeyboardLayoutSet("fa", "farsi");
+        assertNotNull("Farsi", FARSI);
+        final InputMethodSubtype HEBREW = mRichImm
+                .findSubtypeByLocaleAndKeyboardLayoutSet("iw", "hebrew");
+        assertNotNull("Hebrew", HEBREW);
+
         for (final InputMethodSubtype subtype : mSubtypesList) {
-            final String subtypeName =
-                    SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype);
-            final String spacebarText = SubtypeLocaleUtils.getFullDisplayName(subtype);
-            final String languageName =
-                    SubtypeLocaleUtils.getSubtypeLocaleDisplayName(subtype.getLocale());
-            if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
-                assertFalse(subtypeName, spacebarText.contains(languageName));
+            final String subtypeName = SubtypeLocaleUtils
+                    .getSubtypeDisplayNameInSystemLocale(subtype);
+            if (subtype.equals(ARABIC) || subtype.equals(FARSI) || subtype.equals(HEBREW)) {
+                assertTrue(subtypeName, SubtypeLocaleUtils.isRtlLanguage(subtype));
             } else {
-                assertTrue(subtypeName, spacebarText.contains(languageName));
+                assertFalse(subtypeName, SubtypeLocaleUtils.isRtlLanguage(subtype));
             }
         }
     }
-
-   public void testAllMiddleDisplayNameForSpacebar() {
-        for (final InputMethodSubtype subtype : mSubtypesList) {
-            final String subtypeName =
-                    SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype);
-            final String spacebarText = SubtypeLocaleUtils.getMiddleDisplayName(subtype);
-            if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
-                assertEquals(subtypeName,
-                        SubtypeLocaleUtils.getKeyboardLayoutSetName(subtype), spacebarText);
-            } else {
-                assertEquals(subtypeName,
-                        SubtypeLocaleUtils.getSubtypeLocaleDisplayName(subtype.getLocale()),
-                        spacebarText);
-            }
-        }
-    }
-
-    public void testAllShortDisplayNameForSpacebar() {
-        for (final InputMethodSubtype subtype : mSubtypesList) {
-            final String subtypeName =
-                    SubtypeLocaleUtils.getSubtypeDisplayNameInSystemLocale(subtype);
-            final Locale locale = SubtypeLocaleUtils.getSubtypeLocale(subtype);
-            final String spacebarText = SubtypeLocaleUtils.getShortDisplayName(subtype);
-            final String languageCode = StringUtils.capitalizeFirstCodePoint(
-                    locale.getLanguage(), locale);
-            if (SubtypeLocaleUtils.isNoLanguage(subtype)) {
-                assertEquals(subtypeName, "", spacebarText);
-            } else {
-                assertEquals(subtypeName, languageCode, spacebarText);
-            }
-        }
-    }
-
-    // InputMethodSubtype's display name for spacebar text in its locale.
-    //        isAdditionalSubtype (T=true, F=false)
-    // locale layout  | Short  Middle      Full
-    // ------ ------- - ---- --------- ----------------------
-    //  en_US qwerty  F  En  English   English (US)           exception
-    //  en_GB qwerty  F  En  English   English (UK)           exception
-    //  es_US spanish F  Es  Español   Español (EE.UU.)       exception
-    //  fr    azerty  F  Fr  Français  Français
-    //  fr_CA qwerty  F  Fr  Français  Français (Canada)
-    //  de    qwertz  F  De  Deutsch   Deutsch
-    //  zz    qwerty  F      QWERTY    QWERTY
-    //  fr    qwertz  T  Fr  Français  Français
-    //  de    qwerty  T  De  Deutsch   Deutsch
-    //  en_US azerty  T  En  English   English (US)
-    //  zz    azerty  T      AZERTY    AZERTY
-
-    private final RunInLocale<Void> testsPredefinedSubtypesForSpacebar = new RunInLocale<Void>() {
-        @Override
-        protected Void job(final Resources res) {
-            assertEquals("en_US", "English (US)", SubtypeLocaleUtils.getFullDisplayName(EN_US));
-            assertEquals("en_GB", "English (UK)", SubtypeLocaleUtils.getFullDisplayName(EN_GB));
-            assertEquals("es_US", "Español (EE.UU.)",
-                    SubtypeLocaleUtils.getFullDisplayName(ES_US));
-            assertEquals("fr   ", "Français",     SubtypeLocaleUtils.getFullDisplayName(FR));
-            assertEquals("fr_CA", "Français (Canada)",
-                    SubtypeLocaleUtils.getFullDisplayName(FR_CA));
-            assertEquals("de   ", "Deutsch",      SubtypeLocaleUtils.getFullDisplayName(DE));
-            assertEquals("zz   ", "QWERTY",       SubtypeLocaleUtils.getFullDisplayName(ZZ));
-
-            assertEquals("en_US", "English",  SubtypeLocaleUtils.getMiddleDisplayName(EN_US));
-            assertEquals("en_GB", "English",  SubtypeLocaleUtils.getMiddleDisplayName(EN_GB));
-            assertEquals("es_US", "Español",  SubtypeLocaleUtils.getMiddleDisplayName(ES_US));
-            assertEquals("fr   ", "Français", SubtypeLocaleUtils.getMiddleDisplayName(FR));
-            assertEquals("fr_CA", "Français", SubtypeLocaleUtils.getMiddleDisplayName(FR_CA));
-            assertEquals("de   ", "Deutsch",  SubtypeLocaleUtils.getMiddleDisplayName(DE));
-            assertEquals("zz   ", "QWERTY",   SubtypeLocaleUtils.getMiddleDisplayName(ZZ));
-
-            assertEquals("en_US", "En", SubtypeLocaleUtils.getShortDisplayName(EN_US));
-            assertEquals("en_GB", "En", SubtypeLocaleUtils.getShortDisplayName(EN_GB));
-            assertEquals("es_US", "Es", SubtypeLocaleUtils.getShortDisplayName(ES_US));
-            assertEquals("fr   ", "Fr", SubtypeLocaleUtils.getShortDisplayName(FR));
-            assertEquals("fr_CA", "Fr", SubtypeLocaleUtils.getShortDisplayName(FR_CA));
-            assertEquals("de   ", "De", SubtypeLocaleUtils.getShortDisplayName(DE));
-            assertEquals("zz   ", "",   SubtypeLocaleUtils.getShortDisplayName(ZZ));
-            return null;
-        }
-    };
-
-    private final RunInLocale<Void> testsAdditionalSubtypesForSpacebar = new RunInLocale<Void>() {
-        @Override
-        protected Void job(final Resources res) {
-            assertEquals("fr qwertz",    "Français",
-                    SubtypeLocaleUtils.getFullDisplayName(FR_QWERTZ));
-            assertEquals("de qwerty",    "Deutsch",
-                    SubtypeLocaleUtils.getFullDisplayName(DE_QWERTY));
-            assertEquals("en_US azerty", "English (US)",
-                    SubtypeLocaleUtils.getFullDisplayName(EN_US_AZERTY));
-            assertEquals("zz azerty",    "AZERTY",
-                    SubtypeLocaleUtils.getFullDisplayName(ZZ_AZERTY));
-
-            assertEquals("fr qwertz",    "Français",
-                    SubtypeLocaleUtils.getMiddleDisplayName(FR_QWERTZ));
-            assertEquals("de qwerty",    "Deutsch",
-                    SubtypeLocaleUtils.getMiddleDisplayName(DE_QWERTY));
-            assertEquals("en_US azerty", "English",
-                    SubtypeLocaleUtils.getMiddleDisplayName(EN_US_AZERTY));
-            assertEquals("zz azerty",    "AZERTY",
-                    SubtypeLocaleUtils.getMiddleDisplayName(ZZ_AZERTY));
-
-            assertEquals("fr qwertz",    "Fr", SubtypeLocaleUtils.getShortDisplayName(FR_QWERTZ));
-            assertEquals("de qwerty",    "De", SubtypeLocaleUtils.getShortDisplayName(DE_QWERTY));
-            assertEquals("en_US azerty", "En",
-                    SubtypeLocaleUtils.getShortDisplayName(EN_US_AZERTY));
-            assertEquals("zz azerty",    "",   SubtypeLocaleUtils.getShortDisplayName(ZZ_AZERTY));
-            return null;
-        }
-    };
-
-    public void testPredefinedSubtypesForSpacebarInEnglish() {
-        testsPredefinedSubtypesForSpacebar.runInLocale(mRes, Locale.ENGLISH);
-    }
-
-    public void testAdditionalSubtypeForSpacebarInEnglish() {
-        testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.ENGLISH);
-    }
-
-    public void testPredefinedSubtypesForSpacebarInFrench() {
-        testsPredefinedSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH);
-    }
-
-    public void testAdditionalSubtypeForSpacebarInFrench() {
-        testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH);
-    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/utils/UserHistoryDictIOUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/UserHistoryDictIOUtilsTests.java
deleted file mode 100644
index 1944fd3..0000000
--- a/tests/src/com/android/inputmethod/latin/utils/UserHistoryDictIOUtilsTests.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * 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.utils;
-
-import android.content.Context;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-
-import com.android.inputmethod.latin.makedict.DictDecoder;
-import com.android.inputmethod.latin.makedict.DictEncoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
-import com.android.inputmethod.latin.makedict.FusionDictionary;
-import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.Ver3DictDecoder;
-import com.android.inputmethod.latin.makedict.Ver3DictEncoder;
-import com.android.inputmethod.latin.personalization.UserHistoryDictionaryBigramList;
-import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils.BigramDictionaryInterface;
-import com.android.inputmethod.latin.utils.UserHistoryDictIOUtils.OnAddWordListener;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-
-/**
- * Unit tests for UserHistoryDictIOUtils
- */
-@LargeTest
-public class UserHistoryDictIOUtilsTests extends AndroidTestCase
-    implements BigramDictionaryInterface {
-
-    private static final String TAG = UserHistoryDictIOUtilsTests.class.getSimpleName();
-    private static final int UNIGRAM_FREQUENCY = 50;
-    private static final int BIGRAM_FREQUENCY = 100;
-    private static final ArrayList<String> NOT_HAVE_BIGRAM = new ArrayList<String>();
-    private static final FormatSpec.FormatOptions FORMAT_OPTIONS = new FormatSpec.FormatOptions(2);
-    private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
-
-    /**
-     * Return same frequency for all words and bigrams
-     */
-    @Override
-    public int getFrequency(String word1, String word2) {
-        if (word1 == null) return UNIGRAM_FREQUENCY;
-        return BIGRAM_FREQUENCY;
-    }
-
-    // Utilities for Testing
-
-    private void addWord(final String word,
-            final HashMap<String, ArrayList<String> > addedWords) {
-        if (!addedWords.containsKey(word)) {
-            addedWords.put(word, new ArrayList<String>());
-        }
-    }
-
-    private void addBigram(final String word1, final String word2,
-            final HashMap<String, ArrayList<String> > addedWords) {
-        addWord(word1, addedWords);
-        addWord(word2, addedWords);
-        addedWords.get(word1).add(word2);
-    }
-
-    private void addBigramToBigramList(final String word1, final String word2,
-            final HashMap<String, ArrayList<String> > addedWords,
-            final UserHistoryDictionaryBigramList bigramList) {
-        bigramList.addBigram(null, word1);
-        bigramList.addBigram(word1, word2);
-
-        addBigram(word1, word2, addedWords);
-    }
-
-    private void checkWordInFusionDict(final FusionDictionary dict, final String word,
-            final ArrayList<String> expectedBigrams) {
-        final PtNode ptNode = FusionDictionary.findWordInTree(dict.mRootNodeArray, word);
-        assertNotNull(ptNode);
-        assertTrue(ptNode.isTerminal());
-
-        for (final String bigram : expectedBigrams) {
-            assertNotNull(ptNode.getBigram(bigram));
-        }
-    }
-
-    private void checkWordsInFusionDict(final FusionDictionary dict,
-            final HashMap<String, ArrayList<String> > bigrams) {
-        for (final String word : bigrams.keySet()) {
-            if (bigrams.containsKey(word)) {
-                checkWordInFusionDict(dict, word, bigrams.get(word));
-            } else {
-                checkWordInFusionDict(dict, word, NOT_HAVE_BIGRAM);
-            }
-        }
-    }
-
-    private void checkWordInBigramList(
-            final UserHistoryDictionaryBigramList bigramList, final String word,
-            final ArrayList<String> expectedBigrams) {
-        // check unigram
-        final HashMap<String,Byte> unigramMap = bigramList.getBigrams(null);
-        assertTrue(unigramMap.containsKey(word));
-
-        // check bigrams
-        final ArrayList<String> actualBigrams = new ArrayList<String>(
-                bigramList.getBigrams(word).keySet());
-
-        Collections.sort(expectedBigrams);
-        Collections.sort(actualBigrams);
-        assertEquals(expectedBigrams, actualBigrams);
-    }
-
-    private void checkWordsInBigramList(final UserHistoryDictionaryBigramList bigramList,
-            final HashMap<String, ArrayList<String> > addedWords) {
-        for (final String word : addedWords.keySet()) {
-            if (addedWords.containsKey(word)) {
-                checkWordInBigramList(bigramList, word, addedWords.get(word));
-            } else {
-                checkWordInBigramList(bigramList, word, NOT_HAVE_BIGRAM);
-            }
-        }
-    }
-
-    private void writeDictToFile(final File file,
-            final UserHistoryDictionaryBigramList bigramList) {
-        final DictEncoder dictEncoder = new Ver3DictEncoder(file);
-        UserHistoryDictIOUtils.writeDictionary(dictEncoder, this, bigramList, FORMAT_OPTIONS);
-    }
-
-    private void readDictFromFile(final File file, final OnAddWordListener listener) {
-        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file, DictDecoder.USE_BYTEARRAY);
-        try {
-            dictDecoder.openDictBuffer();
-        } catch (FileNotFoundException e) {
-            Log.e(TAG, "file not found", e);
-        } catch (IOException e) {
-            Log.e(TAG, "IOException", e);
-        }
-        UserHistoryDictIOUtils.readDictionaryBinary(dictDecoder, listener);
-    }
-
-    public void testGenerateFusionDictionary() {
-        final UserHistoryDictionaryBigramList originalList = new UserHistoryDictionaryBigramList();
-
-        final HashMap<String, ArrayList<String> > addedWords =
-                new HashMap<String, ArrayList<String>>();
-        addBigramToBigramList("this", "is", addedWords, originalList);
-        addBigramToBigramList("this", "was", addedWords, originalList);
-        addBigramToBigramList("hello", "world", addedWords, originalList);
-
-        final FusionDictionary fusionDict =
-                UserHistoryDictIOUtils.constructFusionDictionary(this, originalList);
-
-        checkWordsInFusionDict(fusionDict, addedWords);
-    }
-
-    public void testReadAndWrite() {
-        final Context context = getContext();
-
-        File file = null;
-        try {
-            file = File.createTempFile("testReadAndWrite", TEST_DICT_FILE_EXTENSION,
-                    getContext().getCacheDir());
-        } catch (IOException e) {
-            Log.d(TAG, "IOException while creating a temporary file", e);
-        }
-        assertNotNull(file);
-
-        // make original dictionary
-        final UserHistoryDictionaryBigramList originalList = new UserHistoryDictionaryBigramList();
-        final HashMap<String, ArrayList<String>> addedWords = CollectionUtils.newHashMap();
-        addBigramToBigramList("this" , "is"   , addedWords, originalList);
-        addBigramToBigramList("this" , "was"  , addedWords, originalList);
-        addBigramToBigramList("is"   , "not"  , addedWords, originalList);
-        addBigramToBigramList("hello", "world", addedWords, originalList);
-
-        // write to file
-        writeDictToFile(file, originalList);
-
-        // make result dict.
-        final UserHistoryDictionaryBigramList resultList = new UserHistoryDictionaryBigramList();
-        final OnAddWordListener listener = new OnAddWordListener() {
-            @Override
-            public void setUnigram(final String word, final String shortcutTarget,
-                    final int frequency, final int shortcutFreq) {
-                Log.d(TAG, "in: setUnigram: " + word + "," + frequency);
-                resultList.addBigram(null, word, (byte)frequency);
-            }
-            @Override
-            public void setBigram(final String word1, final String word2, final int frequency) {
-                Log.d(TAG, "in: setBigram: " + word1 + "," + word2 + "," + frequency);
-                resultList.addBigram(word1, word2, (byte)frequency);
-            }
-        };
-
-        // load from file
-        readDictFromFile(file, listener);
-        checkWordsInBigramList(resultList, addedWords);
-
-        // add new bigram
-        addBigramToBigramList("hello", "java", addedWords, resultList);
-
-        // rewrite
-        writeDictToFile(file, resultList);
-        final UserHistoryDictionaryBigramList resultList2 = new UserHistoryDictionaryBigramList();
-        final OnAddWordListener listener2 = new OnAddWordListener() {
-            @Override
-            public void setUnigram(final String word, final String shortcutTarget,
-                    final int frequency, final int shortcutFreq) {
-                Log.d(TAG, "in: setUnigram: " + word + "," + frequency);
-                resultList2.addBigram(null, word, (byte)frequency);
-            }
-            @Override
-            public void setBigram(final String word1, final String word2, final int frequency) {
-                Log.d(TAG, "in: setBigram: " + word1 + "," + word2 + "," + frequency);
-                resultList2.addBigram(word1, word2, (byte)frequency);
-            }
-        };
-
-        // load from file
-        readDictFromFile(file, listener2);
-        checkWordsInBigramList(resultList2, addedWords);
-    }
-}
diff --git a/tests/src/com/android/inputmethod/research/MotionEventReaderTests.java b/tests/src/com/android/inputmethod/research/MotionEventReaderTests.java
deleted file mode 100644
index 28a9f3d..0000000
--- a/tests/src/com/android/inputmethod/research/MotionEventReaderTests.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.inputmethod.research;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.JsonReader;
-
-import com.android.inputmethod.research.MotionEventReader.ReplayData;
-
-import java.io.IOException;
-import java.io.StringReader;
-
-@SmallTest
-public class MotionEventReaderTests extends AndroidTestCase {
-    private MotionEventReader mMotionEventReader = new MotionEventReader();
-    private ReplayData mReplayData;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mReplayData = new ReplayData();
-    }
-
-    private JsonReader jsonReaderForString(final String s) {
-        return new JsonReader(new StringReader(s));
-    }
-
-    public void testTopLevelDataVariant() {
-        final JsonReader jsonReader = jsonReaderForString(
-                "{"
-                + "\"_ct\": 1359590400000,"
-                + "\"_ut\": 4381933,"
-                + "\"_ty\": \"MotionEvent\","
-                + "\"action\": \"UP\","
-                + "\"isLoggingRelated\": false,"
-                + "\"x\": 100.0,"
-                + "\"y\": 200.0"
-                + "}"
-                );
-        try {
-            mMotionEventReader.readLogStatement(jsonReader, mReplayData);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("IOException thrown");
-        }
-        assertEquals("x set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[0].x, 100);
-        assertEquals("y set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[0].y, 200);
-        assertEquals("only one pointer", mReplayData.mPointerCoordsArrays.get(0).length, 1);
-        assertEquals("only one MotionEvent", mReplayData.mPointerCoordsArrays.size(), 1);
-    }
-
-    public void testNestedDataVariant() {
-        final JsonReader jsonReader = jsonReaderForString(
-                "{"
-                + "  \"_ct\": 135959040000,"
-                + "  \"_ut\": 4382702,"
-                + "  \"_ty\": \"MotionEvent\","
-                + "  \"action\": \"MOVE\","
-                + "  \"isLoggingRelated\": false,"
-                + "  \"motionEvent\": {"
-                + "    \"pointerIds\": ["
-                + "      0"
-                + "    ],"
-                + "    \"xyt\": ["
-                + "      {"
-                + "        \"t\": 4382551,"
-                + "        \"d\": ["
-                + "          {"
-                + "            \"x\": 100.0,"
-                + "            \"y\": 200.0,"
-                + "            \"toma\": 999.0,"
-                + "            \"tomi\": 999.0,"
-                + "            \"o\": 0.0"
-                + "          }"
-                + "        ]"
-                + "      },"
-                + "      {"
-                + "        \"t\": 4382559,"
-                + "        \"d\": ["
-                + "          {"
-                + "            \"x\": 300.0,"
-                + "            \"y\": 400.0,"
-                + "            \"toma\": 999.0,"
-                + "            \"tomi\": 999.0,"
-                + "            \"o\": 0.0"
-                + "          }"
-                + "        ]"
-                + "      }"
-                + "    ]"
-                + "  }"
-                + "}"
-                );
-        try {
-            mMotionEventReader.readLogStatement(jsonReader, mReplayData);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("IOException thrown");
-        }
-        assertEquals("x1 set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[0].x, 100);
-        assertEquals("y1 set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[0].y, 200);
-        assertEquals("x2 set correctly", (int) mReplayData.mPointerCoordsArrays.get(1)[0].x, 300);
-        assertEquals("y2 set correctly", (int) mReplayData.mPointerCoordsArrays.get(1)[0].y, 400);
-        assertEquals("only one pointer", mReplayData.mPointerCoordsArrays.get(0).length, 1);
-        assertEquals("two MotionEvents", mReplayData.mPointerCoordsArrays.size(), 2);
-    }
-
-    public void testNestedDataVariantMultiPointer() {
-        final JsonReader jsonReader = jsonReaderForString(
-                "{"
-                + "  \"_ct\": 135959040000,"
-                + "  \"_ut\": 4382702,"
-                + "  \"_ty\": \"MotionEvent\","
-                + "  \"action\": \"MOVE\","
-                + "  \"isLoggingRelated\": false,"
-                + "  \"motionEvent\": {"
-                + "    \"pointerIds\": ["
-                + "      1"
-                + "    ],"
-                + "    \"xyt\": ["
-                + "      {"
-                + "        \"t\": 4382551,"
-                + "        \"d\": ["
-                + "          {"
-                + "            \"x\": 100.0,"
-                + "            \"y\": 200.0,"
-                + "            \"toma\": 999.0,"
-                + "            \"tomi\": 999.0,"
-                + "            \"o\": 0.0"
-                + "          },"
-                + "          {"
-                + "            \"x\": 300.0,"
-                + "            \"y\": 400.0,"
-                + "            \"toma\": 999.0,"
-                + "            \"tomi\": 999.0,"
-                + "            \"o\": 0.0"
-                + "          }"
-                + "        ]"
-                + "      }"
-                + "    ]"
-                + "  }"
-                + "}"
-                );
-        try {
-            mMotionEventReader.readLogStatement(jsonReader, mReplayData);
-        } catch (IOException e) {
-            e.printStackTrace();
-            fail("IOException thrown");
-        }
-        assertEquals("x1 set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[0].x, 100);
-        assertEquals("y1 set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[0].y, 200);
-        assertEquals("x2 set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[1].x, 300);
-        assertEquals("y2 set correctly", (int) mReplayData.mPointerCoordsArrays.get(0)[1].y, 400);
-        assertEquals("two pointers", mReplayData.mPointerCoordsArrays.get(0).length, 2);
-        assertEquals("one MotionEvent", mReplayData.mPointerCoordsArrays.size(), 1);
-    }
-}
diff --git a/tools/dicttool/Android.mk b/tools/dicttool/Android.mk
index aaf31c6..b108a8a 100644
--- a/tools/dicttool/Android.mk
+++ b/tools/dicttool/Android.mk
@@ -13,6 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# HACK: Temporarily disable host tool build on Mac until the build system is ready for C++11.
+LATINIME_HOST_OSNAME := $(shell uname -s)
+ifeq ($(LATINIME_HOST_OSNAME), Darwin) # TODO: Remove this
+$(warning dicttool_aosp is not supported on $(LATINIME_HOST_OSNAME))
+else # TODO: Remove this
+
 LATINIME_DICTTOOL_AOSP_LOCAL_PATH := $(call my-dir)
 LOCAL_PATH := $(LATINIME_DICTTOOL_AOSP_LOCAL_PATH)
 LATINIME_HOST_NATIVE_LIBNAME := liblatinime-aosp-dicttool-host
@@ -25,12 +31,41 @@
 LATINIME_LOCAL_DIR := ../..
 LATINIME_BASE_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/java/src/com/android/inputmethod
 LATINIME_ANNOTATIONS_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/annotations
-LATINIME_CORE_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/latin
-MAKEDICT_CORE_SOURCE_DIRECTORY := $(LATINIME_CORE_SOURCE_DIRECTORY)/makedict
-USED_TARGETTED_UTILS := \
-        $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/ByteArrayDictBuffer.java \
-        $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/CollectionUtils.java \
-        $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/JniUtils.java
+MAKEDICT_CORE_SOURCE_DIRECTORY := $(LATINIME_BASE_SOURCE_DIRECTORY)/latin/makedict
+LATINIME_TESTS_SOURCE_DIRECTORY := $(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin
+
+# Dependencies for Dicttool. Most of these files are needed by BinaryDictionary.java. Note that
+# a significant part of the dependencies are mocked in the compat/ directory, with empty or
+# nearly-empty implementations, for parts that we don't use in Dicttool.
+LATINIME_SRC_FILES_FOR_DICTTOOL := \
+        event/Combiner.java \
+        event/Event.java \
+        latin/BinaryDictionary.java \
+        latin/DicTraverseSession.java \
+        latin/Dictionary.java \
+        latin/InputPointers.java \
+        latin/LastComposedWord.java \
+        latin/PrevWordsInfo.java \
+        latin/SuggestedWords.java \
+        latin/WordComposer.java \
+        latin/define/DebugFlags.java \
+        latin/settings/NativeSuggestOptions.java \
+        latin/settings/SettingsValuesForSuggestion.java \
+        latin/utils/BinaryDictionaryUtils.java \
+        latin/utils/CombinedFormatUtils.java \
+        latin/utils/CoordinateUtils.java \
+        latin/utils/FileUtils.java \
+        latin/utils/JniUtils.java \
+        latin/utils/LocaleUtils.java \
+        latin/utils/ResizableIntArray.java \
+        latin/utils/StringUtils.java
+
+LATINIME_TEST_SRC_FILES_FOR_DICTTOOL := \
+        utils/ByteArrayDictBuffer.java
+
+USED_TARGETED_SRCS := \
+        $(addprefix $(LATINIME_BASE_SOURCE_DIRECTORY)/, $(LATINIME_SRC_FILES_FOR_DICTTOOL)) \
+        $(addprefix $(LATINIME_TESTS_SOURCE_DIRECTORY)/, $(LATINIME_TEST_SRC_FILES_FOR_DICTTOOL))
 
 DICTTOOL_ONDEVICE_TESTS_DIRECTORY := \
         $(LATINIME_LOCAL_DIR)/tests/src/com/android/inputmethod/latin/makedict/
@@ -43,12 +78,11 @@
 
 LOCAL_SRC_FILES := $(LOCAL_TOOL_SRC_FILES) \
         $(filter-out $(addprefix %/, $(notdir $(LOCAL_TOOL_SRC_FILES))), $(LOCAL_MAIN_SRC_FILES)) \
-        $(LOCAL_ANNOTATIONS_SRC_FILES) \
-        $(LATINIME_CORE_SOURCE_DIRECTORY)/Constants.java \
-        $(call all-java-files-under, tests) \
-        $(call all-java-files-under, $(DICTTOOL_ONDEVICE_TESTS_DIRECTORY)) \
         $(call all-java-files-under, $(DICTTOOL_COMPAT_TESTS_DIRECTORY)) \
-        $(USED_TARGETTED_UTILS)
+        $(LOCAL_ANNOTATIONS_SRC_FILES) $(USED_TARGETED_SRCS) \
+        $(LATINIME_BASE_SOURCE_DIRECTORY)/latin/Constants.java \
+        $(call all-java-files-under, tests) \
+        $(call all-java-files-under, $(DICTTOOL_ONDEVICE_TESTS_DIRECTORY))
 
 LOCAL_JAVA_LIBRARIES := junit
 LOCAL_REQUIRED_MODULES := $(LATINIME_HOST_NATIVE_LIBNAME)
@@ -58,6 +92,9 @@
 include $(BUILD_HOST_JAVA_LIBRARY)
 include $(LOCAL_PATH)/etc/Android.mk
 
+endif # Darwin - TODO: Remove this
+
 # Clear our private variables
 LATINIME_DICTTOOL_AOSP_LOCAL_PATH :=
 LATINIME_LOCAL_DIR :=
+LATINIME_HOST_OSNAME :=
diff --git a/tools/dicttool/NativeLib.mk b/tools/dicttool/NativeLib.mk
index 4443587..ffb32ed 100644
--- a/tools/dicttool/NativeLib.mk
+++ b/tools/dicttool/NativeLib.mk
@@ -13,6 +13,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# HACK: Temporarily disable host tool build on Mac until the build system is ready for C++11.
+LATINIME_HOST_OSNAME := $(shell uname -s)
+ifneq ($(LATINIME_HOST_OSNAME), Darwin) # TODO: Remove this
+
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
@@ -20,22 +24,24 @@
 
 LATINIME_DIR_RELATIVE_TO_DICTTOOL := ../..
 
+ifeq ($(FLAG_DBG), true)
+    $(warning Making debug version of native library)
+    LOCAL_CFLAGS += -DFLAG_DBG -funwind-tables -fno-inline
+endif #FLAG_DBG
+
+LOCAL_CFLAGS += -DHOST_TOOL -fPIC -Wno-deprecated -Wno-unused-parameter -Wno-unused-function
 ifneq ($(strip $(HOST_JDK_IS_64BIT_VERSION)),)
 LOCAL_MULTILIB := 64
 endif #HOST_JDK_IS_64BIT_VERSION
 
-LOCAL_CFLAGS += -DHOST_TOOL -fPIC
+# For C++11
+LOCAL_CFLAGS += -std=c++11
 
 LATINIME_NATIVE_JNI_DIR := $(LATINIME_DIR_RELATIVE_TO_DICTTOOL)/native/jni
 LATINIME_NATIVE_SRC_DIR := $(LATINIME_DIR_RELATIVE_TO_DICTTOOL)/native/jni/src
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(LATINIME_NATIVE_SRC_DIR)
-# Used in jni_common.cpp to avoid registering useless methods.
 
-LATIN_IME_JNI_SRC_FILES := \
-    com_android_inputmethod_latin_makedict_Ver3DictDecoder.cpp \
-    jni_common.cpp
-
-LATIN_IME_CORE_SRC_FILES :=
+include $(LOCAL_PATH)/$(LATINIME_NATIVE_JNI_DIR)/NativeFileList.mk
 
 LOCAL_SRC_FILES := \
     $(addprefix $(LATINIME_NATIVE_JNI_DIR)/, $(LATIN_IME_JNI_SRC_FILES)) \
@@ -45,5 +51,9 @@
 
 include $(BUILD_HOST_SHARED_LIBRARY)
 
+endif # Darwin - TODO: Remove this
+
 # Clear our private variables
+include $(LOCAL_PATH)/$(LATINIME_NATIVE_JNI_DIR)/CleanupNativeFileList.mk
 LATINIME_DIR_RELATIVE_TO_DICTTOOL := ../..
+LATINIME_HOST_OSNAME :=
diff --git a/tools/dicttool/compat/android/content/Context.java b/tools/dicttool/compat/android/content/Context.java
new file mode 100644
index 0000000..afe1322
--- /dev/null
+++ b/tools/dicttool/compat/android/content/Context.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.content;
+
+public class Context {
+}
diff --git a/tools/dicttool/compat/android/content/SharedPreferences.java b/tools/dicttool/compat/android/content/SharedPreferences.java
new file mode 100644
index 0000000..cfeb153
--- /dev/null
+++ b/tools/dicttool/compat/android/content/SharedPreferences.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.content;
+
+public class SharedPreferences {
+    public interface OnSharedPreferenceChangeListener {
+        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key);
+    }
+}
diff --git a/tools/dicttool/compat/android/graphics/Rect.java b/tools/dicttool/compat/android/graphics/Rect.java
new file mode 100644
index 0000000..c7b61d7
--- /dev/null
+++ b/tools/dicttool/compat/android/graphics/Rect.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.graphics;
+
+public class Rect {
+}
diff --git a/tools/dicttool/compat/android/test/AndroidTestCase.java b/tools/dicttool/compat/android/test/AndroidTestCase.java
index d01b7ad..f765ce0 100644
--- a/tools/dicttool/compat/android/test/AndroidTestCase.java
+++ b/tools/dicttool/compat/android/test/AndroidTestCase.java
@@ -16,6 +16,8 @@
 
 package android.test;
 
+import com.android.inputmethod.latin.dicttool.Test;
+
 import junit.framework.TestCase;
 
 import java.io.File;
@@ -27,7 +29,11 @@
  */
 public class AndroidTestCase extends TestCase {
     public File getCacheDir() {
-        return new File(".");
+        final File dir = Test.TEST_TMP_DIR;
+        if (!dir.isDirectory()) {
+            dir.mkdirs();
+        }
+        return dir;
     }
     public AndroidTestCase getContext() {
         return this;
diff --git a/tools/dicttool/compat/android/text/Spanned.java b/tools/dicttool/compat/android/text/Spanned.java
new file mode 100644
index 0000000..451fae3
--- /dev/null
+++ b/tools/dicttool/compat/android/text/Spanned.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.text;
+
+public interface Spanned extends CharSequence {
+}
diff --git a/tools/dicttool/compat/android/text/TextUtils.java b/tools/dicttool/compat/android/text/TextUtils.java
new file mode 100644
index 0000000..5a94b7d
--- /dev/null
+++ b/tools/dicttool/compat/android/text/TextUtils.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.text;
+
+public class TextUtils {
+    private TextUtils() { /* cannot be instantiated */ }
+
+    /**
+     * Returns true if the string is null or 0-length.
+     * @param str the string to be examined
+     * @return true if str is null or zero length
+     */
+    public static boolean isEmpty(CharSequence str) {
+        if (str == null || str.length() == 0)
+            return true;
+        else
+            return false;
+    }
+
+    /**
+     * Returns true if a and b are equal, including if they are both null.
+     * <p><i>Note: In platform versions 1.1 and earlier, this method only worked well if
+     * both the arguments were instances of String.</i></p>
+     * @param a first CharSequence to check
+     * @param b second CharSequence to check
+     * @return true if a and b are equal
+     */
+    public static boolean equals(CharSequence a, CharSequence b) {
+        if (a == b) return true;
+        int length;
+        if (a != null && b != null && (length = a.length()) == b.length()) {
+            if (a instanceof String && b instanceof String) {
+                return a.equals(b);
+            } else {
+                for (int i = 0; i < length; i++) {
+                    if (a.charAt(i) != b.charAt(i)) return false;
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns list of multiple {@link CharSequence} joined into a single
+     * {@link CharSequence} separated by localized delimiter such as ", ".
+     *
+     * @hide
+     */
+    public static CharSequence join(Iterable<CharSequence> list) {
+        final CharSequence delimiter = ", ";
+        return join(delimiter, list);
+    }
+
+    /**
+     * Returns a string containing the tokens joined by delimiters.
+     * @param tokens an array objects to be joined. Strings will be formed from
+     *     the objects by calling object.toString().
+     */
+    public static String join(CharSequence delimiter, Object[] tokens) {
+        StringBuilder sb = new StringBuilder();
+        boolean firstTime = true;
+        for (Object token: tokens) {
+            if (firstTime) {
+                firstTime = false;
+            } else {
+                sb.append(delimiter);
+            }
+            sb.append(token);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Returns a string containing the tokens joined by delimiters.
+     * @param tokens an array objects to be joined. Strings will be formed from
+     *     the objects by calling object.toString().
+     */
+    public static String join(CharSequence delimiter, Iterable tokens) {
+        StringBuilder sb = new StringBuilder();
+        boolean firstTime = true;
+        for (Object token: tokens) {
+            if (firstTime) {
+                firstTime = false;
+            } else {
+                sb.append(delimiter);
+            }
+            sb.append(token);
+        }
+        return sb.toString();
+    }
+
+}
diff --git a/tools/dicttool/compat/android/util/Log.java b/tools/dicttool/compat/android/util/Log.java
index b3b6dd8..9410e74 100644
--- a/tools/dicttool/compat/android/util/Log.java
+++ b/tools/dicttool/compat/android/util/Log.java
@@ -25,13 +25,19 @@
     public static void d(final String tag, final String message) {
         System.out.println(tag + " : " + message);
     }
-    public static void d(final String tag, final String message, final Throwable e) {
-        System.out.println(tag + " : " + message + " : " + e);
+    public static void d(final String tag, final String message, final Throwable t) {
+        System.out.println(tag + " : " + message + " : " + t);
     }
     public static void e(final String tag, final String message) {
         d(tag, message);
     }
-    public static void e(final String tag, final String message, final Throwable e) {
-        d(tag, message, e);
+    public static void e(final String tag, final String message, final Throwable t) {
+        d(tag, message, t);
+    }
+    public static void w(final String tag, final String message) {
+        d(tag, message);
+    }
+    public static void w(final String tag, final String message, final Throwable t) {
+        d(tag, message, t);
     }
 }
diff --git a/tools/dicttool/compat/android/util/Pair.java b/tools/dicttool/compat/android/util/Pair.java
new file mode 100644
index 0000000..5bf3484
--- /dev/null
+++ b/tools/dicttool/compat/android/util/Pair.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+import java.util.Arrays;
+
+public class Pair<T1, T2> {
+    public final T1 mFirst;
+    public final T2 mSecond;
+
+    public Pair(final T1 first, final T2 second) {
+        mFirst = first;
+        mSecond = second;
+    }
+
+    @Override
+    public int hashCode() {
+        return Arrays.hashCode(new Object[] { mFirst, mSecond });
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == this) return true;
+        if (!(o instanceof Pair)) return false;
+        Pair<?, ?> p = (Pair<?, ?>)o;
+        return ((mFirst == null && p.mFirst == null) || mFirst.equals(p.mFirst))
+                && ((mSecond == null && p.mSecond == null) || mSecond.equals(p.mSecond));
+    }
+}
diff --git a/tools/dicttool/compat/android/util/SparseArray.java b/tools/dicttool/compat/android/util/SparseArray.java
index 6c76f19..9efbd39 100644
--- a/tools/dicttool/compat/android/util/SparseArray.java
+++ b/tools/dicttool/compat/android/util/SparseArray.java
@@ -16,8 +16,6 @@
 
 package android.util;
 
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
 import java.util.ArrayList;
 import java.util.Collections;
 
@@ -30,8 +28,8 @@
     }
 
     public SparseArray(final int initialCapacity) {
-        mKeys = CollectionUtils.newArrayList(initialCapacity);
-        mValues = CollectionUtils.newArrayList(initialCapacity);
+        mKeys = new ArrayList<>(initialCapacity);
+        mValues = new ArrayList<>(initialCapacity);
     }
 
     public int size() {
diff --git a/tools/dicttool/compat/android/util/SparseIntArray.java b/tools/dicttool/compat/android/util/SparseIntArray.java
new file mode 100644
index 0000000..e4d3dfd
--- /dev/null
+++ b/tools/dicttool/compat/android/util/SparseIntArray.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.util;
+
+public class SparseIntArray {
+    private final SparseArray<Integer> mArray;
+
+    public SparseIntArray() {
+        this(10);
+    }
+
+    public SparseIntArray(final int initialCapacity) {
+        mArray = new SparseArray<>(initialCapacity);
+    }
+
+    public int size() {
+        return mArray.size();
+    }
+
+    public void clear() {
+        mArray.clear();
+    }
+
+    public void put(final int key, final int value) {
+        mArray.put(key, value);
+    }
+
+    public int get(final int key) {
+        return get(key, 0);
+    }
+
+    public int get(final int key, final int valueIfKeyNotFound) {
+        return mArray.get(key, valueIfKeyNotFound);
+    }
+
+    public int indexOfKey(final int key) {
+        return mArray.indexOfKey(key);
+    }
+
+    public int keyAt(final int index) {
+        return mArray.keyAt(index);
+    }
+}
diff --git a/tools/dicttool/compat/android/view/inputmethod/CompletionInfo.java b/tools/dicttool/compat/android/view/inputmethod/CompletionInfo.java
new file mode 100644
index 0000000..fbce725
--- /dev/null
+++ b/tools/dicttool/compat/android/view/inputmethod/CompletionInfo.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view.inputmethod;
+
+public class CompletionInfo {
+    public final String getText() { return ""; }
+}
diff --git a/tools/dicttool/compat/android/view/inputmethod/EditorInfo.java b/tools/dicttool/compat/android/view/inputmethod/EditorInfo.java
new file mode 100644
index 0000000..9c71181
--- /dev/null
+++ b/tools/dicttool/compat/android/view/inputmethod/EditorInfo.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view.inputmethod;
+
+public class EditorInfo {
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java b/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
new file mode 100644
index 0000000..458f22c
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/event/CombinerChain.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.event;
+
+import java.util.ArrayList;
+
+/**
+ * Compatibility class that stands in for the combiner chain in LatinIME.
+ *
+ * This is not used by dicttool, it's just needed by the dependency chain.
+ */
+// TODO: there should not be a dependency to this in dicttool, so there
+// should be a sensible way to separate them cleanly.
+public class CombinerChain {
+    private StringBuilder mComposingWord;
+    public CombinerChain(final String initialText, final Combiner... combinerList) {
+        mComposingWord = new StringBuilder(initialText);
+    }
+
+    public void processEvent(final ArrayList<Event> previousEvents, final Event newEvent) {
+        mComposingWord.append(newEvent.getTextToCommit());
+    }
+
+    public CharSequence getComposingWordWithCombiningFeedback() {
+        return mComposingWord;
+    }
+
+    public void reset() {
+        mComposingWord.setLength(0);
+    }
+
+    public static Combiner[] createCombiners(final String spec) {
+        // Dicttool never uses a combiner at all, so we just return a zero-sized array.
+        return new Combiner[0];
+    }
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/keyboard/Key.java b/tools/dicttool/compat/com/android/inputmethod/keyboard/Key.java
new file mode 100644
index 0000000..1e63bb5
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/keyboard/Key.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+public class Key {
+    public final int getX() { return 0; }
+    public final int getY() { return 0; }
+    public final int getWidth() { return 0; }
+    public final int getHeight() { return 0; }
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/keyboard/Keyboard.java b/tools/dicttool/compat/com/android/inputmethod/keyboard/Keyboard.java
new file mode 100644
index 0000000..61b209f
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/keyboard/Keyboard.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+public class Keyboard {
+    private final Key KEY = new Key();
+    public final Key getKey(final int i) { return KEY; }
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/keyboard/ProximityInfo.java b/tools/dicttool/compat/com/android/inputmethod/keyboard/ProximityInfo.java
new file mode 100644
index 0000000..561b663
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard;
+
+public class ProximityInfo {
+    public long getNativeProximityInfo() { return 0l; }
+    private static native long setProximityInfoNative(String locale,
+            int displayWidth, int displayHeight, int gridWidth, int gridHeight,
+            int mostCommonKeyWidth, int mostCommonKeyHeight, int[] proximityCharsArray,
+            int keyCount, int[] keyXCoordinates, int[] keyYCoordinates, int[] keyWidths,
+            int[] keyHeights, int[] keyCharCodes, float[] sweetSpotCenterXs,
+            float[] sweetSpotCenterYs, float[] sweetSpotRadii);
+    private static native void releaseProximityInfoNative(long nativeProximityInfo);
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/latin/LatinIME.java b/tools/dicttool/compat/com/android/inputmethod/latin/LatinIME.java
new file mode 100644
index 0000000..e7aa340
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/latin/LatinIME.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin;
+
+public class LatinIME {
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/latin/define/JniLibName.java b/tools/dicttool/compat/com/android/inputmethod/latin/define/JniLibName.java
index c68bdaa..d6d5e2d 100644
--- a/tools/dicttool/compat/com/android/inputmethod/latin/define/JniLibName.java
+++ b/tools/dicttool/compat/com/android/inputmethod/latin/define/JniLibName.java
@@ -21,5 +21,5 @@
         // This class is not publicly instantiable.
     }
 
-    public static final String JNI_LIB_NAME = "latinime-dicttool-host";
+    public static final String JNI_LIB_NAME = "latinime-aosp-dicttool-host";
 }
diff --git a/tools/dicttool/compat/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java b/tools/dicttool/compat/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
new file mode 100644
index 0000000..6a430d5
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/latin/settings/AdditionalFeaturesSettingUtils.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.settings;
+
+public class AdditionalFeaturesSettingUtils {
+    public static final int ADDITIONAL_FEATURES_SETTINGS_SIZE = 0;
+}
diff --git a/tools/dicttool/compat/com/android/inputmethod/latin/utils/LanguageModelParam.java b/tools/dicttool/compat/com/android/inputmethod/latin/utils/LanguageModelParam.java
new file mode 100644
index 0000000..f4ca94a
--- /dev/null
+++ b/tools/dicttool/compat/com/android/inputmethod/latin/utils/LanguageModelParam.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.utils;
+
+public final class LanguageModelParam {
+}
diff --git a/tools/dicttool/etc/dicttool_aosp b/tools/dicttool/etc/dicttool_aosp
index 65a1c3a..fc918f0 100755
--- a/tools/dicttool/etc/dicttool_aosp
+++ b/tools/dicttool/etc/dicttool_aosp
@@ -38,13 +38,8 @@
 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
+    libdir=`dirname "$progdir"`/lib64
 fi
 if [ ! -r "$frameworkdir/$jarfile" ]
 then
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java
index e571bc2..3ef03f4 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtils.java
@@ -17,20 +17,22 @@
 package com.android.inputmethod.latin.dicttool;
 
 import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils;
+import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
 import com.android.inputmethod.latin.makedict.DictDecoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
 import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
 
 import org.xml.sax.SAXException;
 
-import java.io.File;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.util.ArrayList;
 
@@ -51,14 +53,17 @@
     public final static String ENCRYPTION = "encrypted";
 
     private final static int MAX_DECODE_DEPTH = 8;
+    private final static int COPY_BUFFER_SIZE = 8192;
 
     public static class DecoderChainSpec {
-        ArrayList<String> mDecoderSpec = new ArrayList<String>();
+        ArrayList<String> mDecoderSpec = new ArrayList<>();
         File mFile;
+
         public DecoderChainSpec addStep(final String stepDescription) {
             mDecoderSpec.add(stepDescription);
             return this;
         }
+
         public String describeChain() {
             final StringBuilder s = new StringBuilder("raw");
             for (final String step : mDecoderSpec) {
@@ -70,13 +75,10 @@
     }
 
     public static void copy(final InputStream input, final OutputStream output) throws IOException {
-        final byte[] buffer = new byte[1000];
-        final BufferedInputStream in = new BufferedInputStream(input);
-        final BufferedOutputStream out = new BufferedOutputStream(output);
-        for (int readBytes = in.read(buffer); readBytes >= 0; readBytes = in.read(buffer))
+        final byte[] buffer = new byte[COPY_BUFFER_SIZE];
+        for (int readBytes = input.read(buffer); readBytes >= 0; readBytes = input.read(buffer)) {
             output.write(buffer, 0, readBytes);
-        in.close();
-        out.close();
+        }
     }
 
     /**
@@ -131,11 +133,15 @@
         try {
             final File dst = File.createTempFile(PREFIX, SUFFIX);
             dst.deleteOnExit();
-            final FileOutputStream dstStream = new FileOutputStream(dst);
-            copy(Compress.getUncompressedStream(new BufferedInputStream(new FileInputStream(src))),
-                    new BufferedOutputStream(dstStream)); // #copy() closes the streams
-            return dst;
-        } catch (IOException e) {
+            try (
+                final InputStream input = Compress.getUncompressedStream(
+                        new BufferedInputStream(new FileInputStream(src)));
+                final OutputStream output = new BufferedOutputStream(new FileOutputStream(dst))
+            ) {
+                copy(input, output);
+                return dst;
+            }
+        } catch (final IOException e) {
             // Could not uncompress the file: presumably the file is simply not a compressed file
             return null;
         }
@@ -150,20 +156,20 @@
         try {
             final File dst = File.createTempFile(PREFIX, SUFFIX);
             dst.deleteOnExit();
-            final FileOutputStream dstStream = new FileOutputStream(dst);
-            copy(Crypt.getDecryptedStream(new BufferedInputStream(new FileInputStream(src))),
-                    dstStream); // #copy() closes the streams
-            return dst;
-        } catch (IOException e) {
+            try (
+                final InputStream input = Crypt.getDecryptedStream(
+                        new BufferedInputStream(new FileInputStream(src)));
+                final OutputStream output = new BufferedOutputStream(new FileOutputStream(dst))
+            ) {
+                copy(input, output);
+                return dst;
+            }
+        } catch (final IOException e) {
             // Could not decrypt the file: presumably the file is simply not a crypted file
             return null;
         }
     }
 
-    static void crash(final String filename, final Exception e) {
-        throw new RuntimeException("Can't read file " + filename, e);
-    }
-
     static FusionDictionary getDictionary(final String filename, final boolean report) {
         final File file = new File(filename);
         if (report) {
@@ -172,44 +178,40 @@
         }
         try {
             if (XmlDictInputOutput.isXmlUnigramDictionary(filename)) {
-                if (report) System.out.println("Format : XML unigram list");
+                if (report) {
+                    System.out.println("Format : XML unigram list");
+                }
                 return XmlDictInputOutput.readDictionaryXml(
                         new BufferedInputStream(new FileInputStream(file)),
                         null /* shortcuts */, null /* bigrams */);
-            } else {
-                final DecoderChainSpec decodedSpec = getRawDictionaryOrNull(file);
-                if (null == decodedSpec) {
-                    crash(filename, new RuntimeException(
-                            filename + " does not seem to be a dictionary file"));
-                } else if (CombinedInputOutput.isCombinedDictionary(
-                        decodedSpec.mFile.getAbsolutePath())){
-                    if (report) {
-                        System.out.println("Format : Combined format");
-                        System.out.println("Packaging : " + decodedSpec.describeChain());
-                        System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
-                    }
-                    return CombinedInputOutput.readDictionaryCombined(
-                            new BufferedInputStream(new FileInputStream(decodedSpec.mFile)));
-                } else {
-                    final DictDecoder dictDecoder = FormatSpec.getDictDecoder(decodedSpec.mFile,
-                            DictDecoder.USE_BYTEARRAY);
-                    if (report) {
-                        System.out.println("Format : Binary dictionary format");
-                        System.out.println("Packaging : " + decodedSpec.describeChain());
-                        System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
-                    }
-                    return dictDecoder.readDictionaryBinary(null, false /* deleteDictIfBroken */);
+            }
+            final DecoderChainSpec decodedSpec = getRawDictionaryOrNull(file);
+            if (null == decodedSpec) {
+                throw new RuntimeException("Does not seem to be a dictionary file " + filename);
+            }
+            if (CombinedInputOutput.isCombinedDictionary(decodedSpec.mFile.getAbsolutePath())) {
+                if (report) {
+                    System.out.println("Format : Combined format");
+                    System.out.println("Packaging : " + decodedSpec.describeChain());
+                    System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
+                }
+                try (final BufferedReader reader = new BufferedReader(
+                        new InputStreamReader(new FileInputStream(decodedSpec.mFile), "UTF-8"))) {
+                    return CombinedInputOutput.readDictionaryCombined(reader);
                 }
             }
-        } catch (IOException e) {
-            crash(filename, e);
-        } catch (SAXException e) {
-            crash(filename, e);
-        } catch (ParserConfigurationException e) {
-            crash(filename, e);
-        } catch (UnsupportedFormatException e) {
-            crash(filename, e);
+            final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(
+                    decodedSpec.mFile, 0, decodedSpec.mFile.length(),
+                    DictDecoder.USE_BYTEARRAY);
+            if (report) {
+                System.out.println("Format : Binary dictionary format");
+                System.out.println("Packaging : " + decodedSpec.describeChain());
+                System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
+            }
+            return dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
+        } catch (final IOException | SAXException | ParserConfigurationException |
+                UnsupportedFormatException e) {
+            throw new RuntimeException("Can't read file " + filename, e);
         }
-        return null;
     }
 }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/CombinedInputOutput.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/CombinedInputOutput.java
index 4b67169..23cbee8 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/CombinedInputOutput.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/CombinedInputOutput.java
@@ -17,20 +17,18 @@
 package com.android.inputmethod.latin.dicttool;
 
 import com.android.inputmethod.latin.makedict.FormatSpec;
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.makedict.Word;
+import com.android.inputmethod.latin.makedict.ProbabilityInfo;
+import com.android.inputmethod.latin.makedict.WeightedString;
+import com.android.inputmethod.latin.makedict.WordProperty;
+import com.android.inputmethod.latin.utils.CombinedFormatUtils;
 
 import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
+import java.io.BufferedWriter;
 import java.io.FileReader;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Writer;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.TreeSet;
@@ -41,18 +39,10 @@
  * All functions in this class are static.
  */
 public class CombinedInputOutput {
-
-    private static final String DICTIONARY_TAG = "dictionary";
-    private static final String BIGRAM_TAG = "bigram";
-    private static final String SHORTCUT_TAG = "shortcut";
-    private static final String FREQUENCY_TAG = "f";
-    private static final String WORD_TAG = "word";
-    private static final String NOT_A_WORD_TAG = "not_a_word";
     private static final String WHITELIST_TAG = "whitelist";
     private static final String OPTIONS_TAG = "options";
-    private static final String GERMAN_UMLAUT_PROCESSING_OPTION = "german_umlaut_processing";
-    private static final String FRENCH_LIGATURE_PROCESSING_OPTION = "french_ligature_processing";
     private static final String COMMENT_LINE_STARTER = "#";
+    private static final int HISTORICAL_INFO_ELEMENT_COUNT = 3;
 
     /**
      * Basic test to find out whether the file is in the combined format or not.
@@ -63,26 +53,15 @@
      * @return true if the file is in the combined format, false otherwise
      */
     public static boolean isCombinedDictionary(final String filename) {
-        BufferedReader reader = null;
-        try {
-            reader = new BufferedReader(new FileReader(new File(filename)));
+        try (final BufferedReader reader = new BufferedReader(new FileReader(filename))) {
             String firstLine = reader.readLine();
             while (firstLine.startsWith(COMMENT_LINE_STARTER)) {
                 firstLine = reader.readLine();
             }
-            return firstLine.matches("^" + DICTIONARY_TAG + "=[^:]+(:[^=]+=[^:]+)*");
-        } catch (FileNotFoundException e) {
+            return firstLine.matches(
+                    "^" + CombinedFormatUtils.DICTIONARY_TAG + "=[^:]+(:[^=]+=[^:]+)*");
+        } catch (final IOException e) {
             return false;
-        } catch (IOException e) {
-            return false;
-        } finally {
-            if (reader != null) {
-                try {
-                    reader.close();
-                } catch (IOException e) {
-                    // do nothing
-                }
-            }
         }
     }
 
@@ -92,18 +71,17 @@
      * This is the public method that will read a combined file and return the corresponding memory
      * representation.
      *
-     * @param source the file to read the data from.
+     * @param reader the buffered reader to read the data from.
      * @return the in-memory representation of the dictionary.
      */
-    public static FusionDictionary readDictionaryCombined(final InputStream source)
+    public static FusionDictionary readDictionaryCombined(final BufferedReader reader)
             throws IOException {
-        final BufferedReader reader = new BufferedReader(new InputStreamReader(source, "UTF-8"));
         String headerLine = reader.readLine();
         while (headerLine.startsWith(COMMENT_LINE_STARTER)) {
             headerLine = reader.readLine();
         }
         final String header[] = headerLine.split(",");
-        final HashMap<String, String> attributes = new HashMap<String, String>();
+        final HashMap<String, String> attributes = new HashMap<>();
         for (String item : header) {
             final String keyValue[] = item.split("=");
             if (2 != keyValue.length) {
@@ -112,53 +90,62 @@
             attributes.put(keyValue[0], keyValue[1]);
         }
 
-        final boolean processUmlauts =
-                GERMAN_UMLAUT_PROCESSING_OPTION.equals(attributes.get(OPTIONS_TAG));
-        final boolean processLigatures =
-                FRENCH_LIGATURE_PROCESSING_OPTION.equals(attributes.get(OPTIONS_TAG));
         attributes.remove(OPTIONS_TAG);
-        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(), new DictionaryOptions(
-                attributes, processUmlauts, processLigatures));
+        final FusionDictionary dict =
+                new FusionDictionary(new PtNodeArray(), new DictionaryOptions(attributes));
 
         String line;
         String word = null;
-        int freq = 0;
+        ProbabilityInfo probabilityInfo = new ProbabilityInfo(0);
         boolean isNotAWord = false;
-        ArrayList<WeightedString> bigrams = new ArrayList<WeightedString>();
-        ArrayList<WeightedString> shortcuts = new ArrayList<WeightedString>();
+        ArrayList<WeightedString> bigrams = new ArrayList<>();
+        ArrayList<WeightedString> shortcuts = new ArrayList<>();
         while (null != (line = reader.readLine())) {
             if (line.startsWith(COMMENT_LINE_STARTER)) continue;
             final String args[] = line.trim().split(",");
-            if (args[0].matches(WORD_TAG + "=.*")) {
+            if (args[0].matches(CombinedFormatUtils.WORD_TAG + "=.*")) {
                 if (null != word) {
-                    dict.add(word, freq, shortcuts.isEmpty() ? null : shortcuts, isNotAWord);
+                    dict.add(word, probabilityInfo, shortcuts.isEmpty() ? null : shortcuts,
+                            isNotAWord);
                     for (WeightedString s : bigrams) {
-                        dict.setBigram(word, s.mWord, s.mFrequency);
+                        dict.setBigram(word, s.mWord, s.mProbabilityInfo);
                     }
                 }
-                if (!shortcuts.isEmpty()) shortcuts = new ArrayList<WeightedString>();
-                if (!bigrams.isEmpty()) bigrams = new ArrayList<WeightedString>();
+                if (!shortcuts.isEmpty()) shortcuts = new ArrayList<>();
+                if (!bigrams.isEmpty()) bigrams = new ArrayList<>();
                 isNotAWord = false;
                 for (String param : args) {
                     final String params[] = param.split("=", 2);
                     if (2 != params.length) throw new RuntimeException("Wrong format : " + line);
-                    if (WORD_TAG.equals(params[0])) {
+                    if (CombinedFormatUtils.WORD_TAG.equals(params[0])) {
                         word = params[1];
-                    } else if (FREQUENCY_TAG.equals(params[0])) {
-                        freq = Integer.parseInt(params[1]);
-                    } else if (NOT_A_WORD_TAG.equals(params[0])) {
+                    } else if (CombinedFormatUtils.PROBABILITY_TAG.equals(params[0])) {
+                        probabilityInfo = new ProbabilityInfo(Integer.parseInt(params[1]),
+                                probabilityInfo.mTimestamp, probabilityInfo.mLevel,
+                                probabilityInfo.mCount);
+                    } else if (CombinedFormatUtils.HISTORICAL_INFO_TAG.equals(params[0])) {
+                        final String[] historicalInfoParams =
+                                params[1].split(CombinedFormatUtils.HISTORICAL_INFO_SEPARATOR);
+                        if (historicalInfoParams.length != HISTORICAL_INFO_ELEMENT_COUNT) {
+                            throw new RuntimeException("Wrong format (historical info) : " + line);
+                        }
+                        probabilityInfo = new ProbabilityInfo(probabilityInfo.mProbability,
+                                Integer.parseInt(historicalInfoParams[0]),
+                                Integer.parseInt(historicalInfoParams[1]),
+                                Integer.parseInt(historicalInfoParams[2]));
+                    } else if (CombinedFormatUtils.NOT_A_WORD_TAG.equals(params[0])) {
                         isNotAWord = "true".equals(params[1]);
                     }
                 }
-            } else if (args[0].matches(SHORTCUT_TAG + "=.*")) {
+            } else if (args[0].matches(CombinedFormatUtils.SHORTCUT_TAG + "=.*")) {
                 String shortcut = null;
                 int shortcutFreq = 0;
                 for (String param : args) {
                     final String params[] = param.split("=", 2);
                     if (2 != params.length) throw new RuntimeException("Wrong format : " + line);
-                    if (SHORTCUT_TAG.equals(params[0])) {
+                    if (CombinedFormatUtils.SHORTCUT_TAG.equals(params[0])) {
                         shortcut = params[1];
-                    } else if (FREQUENCY_TAG.equals(params[0])) {
+                    } else if (CombinedFormatUtils.PROBABILITY_TAG.equals(params[0])) {
                         shortcutFreq = WHITELIST_TAG.equals(params[1])
                                 ? FormatSpec.SHORTCUT_WHITELIST_FREQUENCY
                                 : Integer.parseInt(params[1]);
@@ -169,29 +156,42 @@
                 } else {
                     throw new RuntimeException("Wrong format : " + line);
                 }
-            } else if (args[0].matches(BIGRAM_TAG + "=.*")) {
+            } else if (args[0].matches(CombinedFormatUtils.BIGRAM_TAG + "=.*")) {
                 String secondWordOfBigram = null;
-                int bigramFreq = 0;
+                ProbabilityInfo bigramProbabilityInfo = new ProbabilityInfo(0);
                 for (String param : args) {
                     final String params[] = param.split("=", 2);
                     if (2 != params.length) throw new RuntimeException("Wrong format : " + line);
-                    if (BIGRAM_TAG.equals(params[0])) {
+                    if (CombinedFormatUtils.BIGRAM_TAG.equals(params[0])) {
                         secondWordOfBigram = params[1];
-                    } else if (FREQUENCY_TAG.equals(params[0])) {
-                        bigramFreq = Integer.parseInt(params[1]);
+                    } else if (CombinedFormatUtils.PROBABILITY_TAG.equals(params[0])) {
+                        bigramProbabilityInfo = new ProbabilityInfo(Integer.parseInt(params[1]),
+                                bigramProbabilityInfo.mTimestamp, bigramProbabilityInfo.mLevel,
+                                bigramProbabilityInfo.mCount);
+                    }  else if (CombinedFormatUtils.HISTORICAL_INFO_TAG.equals(params[0])) {
+                        final String[] historicalInfoParams =
+                                params[1].split(CombinedFormatUtils.HISTORICAL_INFO_SEPARATOR);
+                        if (historicalInfoParams.length != HISTORICAL_INFO_ELEMENT_COUNT) {
+                            throw new RuntimeException("Wrong format (historical info) : " + line);
+                        }
+                        bigramProbabilityInfo = new ProbabilityInfo(
+                                bigramProbabilityInfo.mProbability,
+                                Integer.parseInt(historicalInfoParams[0]),
+                                Integer.parseInt(historicalInfoParams[1]),
+                                Integer.parseInt(historicalInfoParams[2]));
                     }
                 }
                 if (null != secondWordOfBigram) {
-                    bigrams.add(new WeightedString(secondWordOfBigram, bigramFreq));
+                    bigrams.add(new WeightedString(secondWordOfBigram, bigramProbabilityInfo));
                 } else {
                     throw new RuntimeException("Wrong format : " + line);
                 }
             }
         }
         if (null != word) {
-            dict.add(word, freq, shortcuts.isEmpty() ? null : shortcuts, isNotAWord);
+            dict.add(word, probabilityInfo, shortcuts.isEmpty() ? null : shortcuts, isNotAWord);
             for (WeightedString s : bigrams) {
-                dict.setBigram(word, s.mWord, s.mFrequency);
+                dict.setBigram(word, s.mWord, s.mProbabilityInfo);
             }
         }
 
@@ -201,48 +201,19 @@
     /**
      * Writes a dictionary to a combined file.
      *
-     * @param destination a destination stream to write to.
+     * @param destination a destination writer.
      * @param dict the dictionary to write.
      */
-    public static void writeDictionaryCombined(Writer destination, FusionDictionary dict)
-            throws IOException {
-        final TreeSet<Word> set = new TreeSet<Word>();
-        for (Word word : dict) {
-            set.add(word); // This for ordering by frequency, then by asciibetic order
+    public static void writeDictionaryCombined(final BufferedWriter destination,
+            final FusionDictionary dict) throws IOException {
+        final TreeSet<WordProperty> wordPropertiesInDict = new TreeSet<>();
+        for (final WordProperty wordProperty : dict) {
+            // This for ordering by frequency, then by asciibetic order
+            wordPropertiesInDict.add(wordProperty);
         }
-        final HashMap<String, String> options = dict.mOptions.mAttributes;
-        destination.write(DICTIONARY_TAG + "=");
-        if (options.containsKey(DICTIONARY_TAG)) {
-            destination.write(options.get(DICTIONARY_TAG));
-            options.remove(DICTIONARY_TAG);
+        destination.write(CombinedFormatUtils.formatAttributeMap(dict.mOptions.mAttributes));
+        for (final WordProperty wordProperty : wordPropertiesInDict) {
+            destination.write(CombinedFormatUtils.formatWordProperty(wordProperty));
         }
-        if (dict.mOptions.mGermanUmlautProcessing) {
-            destination.write("," + OPTIONS_TAG + "=" + GERMAN_UMLAUT_PROCESSING_OPTION);
-        } else if (dict.mOptions.mFrenchLigatureProcessing) {
-            destination.write("," + OPTIONS_TAG + "=" + FRENCH_LIGATURE_PROCESSING_OPTION);
-        }
-        for (final String key : dict.mOptions.mAttributes.keySet()) {
-            final String value = dict.mOptions.mAttributes.get(key);
-            destination.write("," + key + "=" + value);
-        }
-        destination.write("\n");
-        for (Word word : set) {
-            destination.write(" " + WORD_TAG + "=" + word.mWord + ","
-                    + FREQUENCY_TAG + "=" + word.mFrequency
-                    + (word.mIsNotAWord ? "," + NOT_A_WORD_TAG + "=true\n" : "\n"));
-            if (null != word.mShortcutTargets) {
-                for (WeightedString target : word.mShortcutTargets) {
-                    destination.write("  " + SHORTCUT_TAG + "=" + target.mWord + ","
-                            + FREQUENCY_TAG + "=" + target.mFrequency + "\n");
-                }
-            }
-            if (null != word.mBigrams) {
-                for (WeightedString bigram : word.mBigrams) {
-                    destination.write("  " + BIGRAM_TAG + "=" + bigram.mWord + ","
-                            + FREQUENCY_TAG + "=" + bigram.mFrequency + "\n");
-                }
-            }
-        }
-        destination.close();
     }
 }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Compress.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Compress.java
index b7f48b5..728a159 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Compress.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Compress.java
@@ -16,11 +16,6 @@
 
 package com.android.inputmethod.latin.dicttool;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -32,8 +27,7 @@
         // This container class is not publicly instantiable.
     }
 
-    public static OutputStream getCompressedStream(final OutputStream out)
-        throws java.io.IOException {
+    public static OutputStream getCompressedStream(final OutputStream out) throws IOException {
         return new GZIPOutputStream(out);
     }
 
@@ -43,7 +37,6 @@
 
     static public class Compressor extends Dicttool.Command {
         public static final String COMMAND = "compress";
-        public static final String STDIN_OR_STDOUT = "-";
 
         public Compressor() {
         }
@@ -61,17 +54,18 @@
             }
             final String inFilename = mArgs.length >= 1 ? mArgs[0] : STDIN_OR_STDOUT;
             final String outFilename = mArgs.length >= 2 ? mArgs[1] : STDIN_OR_STDOUT;
-            final InputStream input = inFilename.equals(STDIN_OR_STDOUT) ? System.in
-                    : new BufferedInputStream(new FileInputStream(new File(inFilename)));
-            final OutputStream output = outFilename.equals(STDIN_OR_STDOUT) ? System.out
-                    : new BufferedOutputStream(new FileOutputStream(new File(outFilename)));
-            BinaryDictOffdeviceUtils.copy(input, new GZIPOutputStream(output));
+            try (
+                final InputStream input = getFileInputStreamOrStdIn(inFilename);
+                final OutputStream compressedOutput = getCompressedStream(
+                        getFileOutputStreamOrStdOut(outFilename))
+            ) {
+                BinaryDictOffdeviceUtils.copy(input, compressedOutput);
+            }
         }
     }
 
     static public class Uncompressor extends Dicttool.Command {
         public static final String COMMAND = "uncompress";
-        public static final String STDIN_OR_STDOUT = "-";
 
         public Uncompressor() {
         }
@@ -89,11 +83,13 @@
             }
             final String inFilename = mArgs.length >= 1 ? mArgs[0] : STDIN_OR_STDOUT;
             final String outFilename = mArgs.length >= 2 ? mArgs[1] : STDIN_OR_STDOUT;
-            final InputStream input = inFilename.equals(STDIN_OR_STDOUT) ? System.in
-                    : new BufferedInputStream(new FileInputStream(new File(inFilename)));
-            final OutputStream output = outFilename.equals(STDIN_OR_STDOUT) ? System.out
-                    : new BufferedOutputStream(new FileOutputStream(new File(outFilename)));
-            BinaryDictOffdeviceUtils.copy(new GZIPInputStream(input), output);
+            try (
+                final InputStream uncompressedInput = getUncompressedStream(
+                        getFileInputStreamOrStdIn(inFilename));
+                final OutputStream output = getFileOutputStreamOrStdOut(outFilename)
+            ) {
+                BinaryDictOffdeviceUtils.copy(uncompressedInput, output);
+            }
         }
     }
 }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java
index 5c7e8b4..3d0557b 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java
@@ -17,28 +17,33 @@
 package com.android.inputmethod.latin.dicttool;
 
 import com.android.inputmethod.latin.makedict.BinaryDictDecoderUtils;
+import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
 import com.android.inputmethod.latin.makedict.DictDecoder;
 import com.android.inputmethod.latin.makedict.DictEncoder;
 import com.android.inputmethod.latin.makedict.FormatSpec;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
 import com.android.inputmethod.latin.makedict.MakedictLog;
 import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.makedict.Ver3DictEncoder;
+import com.android.inputmethod.latin.makedict.Ver2DictEncoder;
 import com.android.inputmethod.latin.makedict.Ver4DictEncoder;
 
+import org.xml.sax.SAXException;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Arrays;
 import java.util.LinkedList;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.xml.sax.SAXException;
-
 /**
  * Main class/method for DictionaryMaker.
  */
@@ -46,7 +51,6 @@
 
     static class Arguments {
         private static final String OPTION_VERSION_2 = "-2";
-        private static final String OPTION_VERSION_3 = "-3";
         private static final String OPTION_VERSION_4 = "-4";
         private static final String OPTION_INPUT_SOURCE = "-s";
         private static final String OPTION_INPUT_BIGRAM_XML = "-b";
@@ -138,7 +142,7 @@
         }
 
         public Arguments(String[] argsArray) throws IOException {
-            final LinkedList<String> args = new LinkedList<String>(Arrays.asList(argsArray));
+            final LinkedList<String> args = new LinkedList<>(Arrays.asList(argsArray));
             if (args.isEmpty()) {
                 displayHelp();
             }
@@ -158,10 +162,8 @@
                 if (arg.charAt(0) == '-') {
                     if (OPTION_VERSION_2.equals(arg)) {
                         // Do nothing, this is the default
-                    } else if (OPTION_VERSION_3.equals(arg)) {
-                        outputBinaryFormatVersion = 3;
                     } else if (OPTION_VERSION_4.equals(arg)) {
-                        outputBinaryFormatVersion = 4;
+                        outputBinaryFormatVersion = FormatSpec.VERSION4;
                     } else if (OPTION_HELP.equals(arg)) {
                         displayHelp();
                     } else {
@@ -267,8 +269,8 @@
     private static FusionDictionary readBinaryFile(final String binaryFilename)
             throws FileNotFoundException, IOException, UnsupportedFormatException {
         final File file = new File(binaryFilename);
-        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file);
-        return dictDecoder.readDictionaryBinary(null, false /* deleteDictIfBroken */);
+        final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(file, 0, file.length());
+        return dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
     }
 
     /**
@@ -281,22 +283,21 @@
      */
     private static FusionDictionary readCombinedFile(final String combinedFilename)
         throws FileNotFoundException, IOException {
-        FileInputStream inStream = null;
-        try {
-            final File file = new File(combinedFilename);
-            inStream = new FileInputStream(file);
-            return CombinedInputOutput.readDictionaryCombined(inStream);
-        } finally {
-            if (null != inStream) {
-                try {
-                    inStream.close();
-                } catch (IOException e) {
-                    // do nothing
-                }
-            }
+        try (final BufferedReader reader = new BufferedReader(new InputStreamReader(
+                new FileInputStream(combinedFilename), "UTF-8"))
+        ) {
+            return CombinedInputOutput.readDictionaryCombined(reader);
         }
     }
 
+    private static BufferedInputStream getBufferedFileInputStream(final String filename)
+            throws FileNotFoundException {
+        if (filename == null) {
+            return null;
+        }
+        return new BufferedInputStream(new FileInputStream(filename));
+    }
+
     /**
      * Read a dictionary from a unigram XML file, and optionally a bigram XML file.
      *
@@ -312,12 +313,13 @@
     private static FusionDictionary readXmlFile(final String unigramXmlFilename,
             final String shortcutXmlFilename, final String bigramXmlFilename)
             throws FileNotFoundException, SAXException, IOException, ParserConfigurationException {
-        final FileInputStream unigrams = new FileInputStream(new File(unigramXmlFilename));
-        final FileInputStream shortcuts = null == shortcutXmlFilename ? null :
-                new FileInputStream(new File(shortcutXmlFilename));
-        final FileInputStream bigrams = null == bigramXmlFilename ? null :
-                new FileInputStream(new File(bigramXmlFilename));
-        return XmlDictInputOutput.readDictionaryXml(unigrams, shortcuts, bigrams);
+        try (
+            final BufferedInputStream unigrams = getBufferedFileInputStream(unigramXmlFilename);
+            final BufferedInputStream shortcuts = getBufferedFileInputStream(shortcutXmlFilename);
+            final BufferedInputStream bigrams = getBufferedFileInputStream(bigramXmlFilename);
+        ) {
+            return XmlDictInputOutput.readDictionaryXml(unigrams, shortcuts, bigrams);
+        }
     }
 
     /**
@@ -358,10 +360,10 @@
         final File outputFile = new File(outputFilename);
         final FormatSpec.FormatOptions formatOptions = new FormatSpec.FormatOptions(version);
         final DictEncoder dictEncoder;
-        if (version == 4) {
+        if (version == FormatSpec.VERSION4) {
             dictEncoder = new Ver4DictEncoder(outputFile);
         } else {
-            dictEncoder = new Ver3DictEncoder(outputFile);
+            dictEncoder = new Ver2DictEncoder(outputFile);
         }
         dictEncoder.writeDictionary(dict, formatOptions);
     }
@@ -376,8 +378,9 @@
      */
     private static void writeXmlDictionary(final String outputFilename,
             final FusionDictionary dict) throws FileNotFoundException, IOException {
-        XmlDictInputOutput.writeDictionaryXml(new BufferedWriter(new FileWriter(outputFilename)),
-                dict);
+        try (final BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilename))) {
+            XmlDictInputOutput.writeDictionaryXml(writer, dict);
+        }
     }
 
     /**
@@ -390,7 +393,8 @@
      */
     private static void writeCombinedDictionary(final String outputFilename,
             final FusionDictionary dict) throws FileNotFoundException, IOException {
-        CombinedInputOutput.writeDictionaryCombined(
-                new BufferedWriter(new FileWriter(outputFilename)), dict);
+        try (final BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilename))) {
+            CombinedInputOutput.writeDictionaryCombined(writer, dict);
+        }
     }
 }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Dicttool.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Dicttool.java
index cacee52..e49b350 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Dicttool.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Dicttool.java
@@ -16,24 +16,63 @@
 
 package com.android.inputmethod.latin.dicttool;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.Arrays;
 import java.util.HashMap;
 
 public class Dicttool {
 
     public static abstract class Command {
+        public static final String STDIN_OR_STDOUT = "-";
         protected String[] mArgs;
+
         public void setArgs(String[] args) throws IllegalArgumentException {
             mArgs = args;
         }
+
+        protected static InputStream getFileInputStreamOrStdIn(final String inFilename)
+                throws FileNotFoundException {
+            if (STDIN_OR_STDOUT.equals(inFilename)) {
+                return System.in;
+            }
+            return getFileInputStream(new File(inFilename));
+        }
+
+        protected static InputStream getFileInputStream(final File inFile)
+                throws FileNotFoundException {
+            return new BufferedInputStream(new FileInputStream(inFile));
+        }
+
+        protected static OutputStream getFileOutputStreamOrStdOut(final String outFilename)
+                throws FileNotFoundException {
+            if (STDIN_OR_STDOUT.equals(outFilename)) {
+                return System.out;
+            }
+            return getFileOutputStream(new File(outFilename));
+        }
+
+        protected static OutputStream getFileOutputStream(final File outFile)
+                throws FileNotFoundException {
+            return new BufferedOutputStream(new FileOutputStream(outFile));
+        }
+
         abstract public String getHelp();
         abstract public void run() throws Exception;
     }
-    static HashMap<String, Class<? extends Command>> sCommands =
-            new HashMap<String, Class<? extends Command>>();
+
+    static HashMap<String, Class<? extends Command>> sCommands = new HashMap<>();
+
     static {
         CommandList.populate();
     }
+
     public static void addCommand(final String commandName, final Class<? extends Command> cls) {
         sCommands.put(commandName, cls);
     }
@@ -61,7 +100,7 @@
         return sCommands.containsKey(commandName);
     }
 
-    private Command getCommand(final String[] arguments) {
+    private static Command getCommand(final String[] arguments) {
         final String commandName = arguments[0];
         if (!isCommand(commandName)) {
             throw new RuntimeException("Unknown command : " + commandName);
@@ -77,7 +116,7 @@
      * @param arguments the arguments passed to dicttool.
      * @return 0 for success, an error code otherwise (always 1 at the moment)
      */
-    private int execute(final String[] arguments) {
+    private static int execute(final String[] arguments) {
         final Command command = getCommand(arguments);
         try {
             command.run();
@@ -96,6 +135,6 @@
             return;
         }
         // Exit with the success/error code from #execute() as status.
-        System.exit(new Dicttool().execute(arguments));
+        System.exit(execute(arguments));
     }
 }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Diff.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Diff.java
index 66fd084..94d1ae8 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Diff.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Diff.java
@@ -18,8 +18,8 @@
 
 import com.android.inputmethod.latin.makedict.FusionDictionary;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.makedict.Word;
+import com.android.inputmethod.latin.makedict.WeightedString;
+import com.android.inputmethod.latin.makedict.WordProperty;
 
 import java.util.Arrays;
 import java.util.ArrayList;
@@ -85,20 +85,7 @@
 
     private static void diffHeaders(final FusionDictionary dict0, final FusionDictionary dict1) {
         boolean hasDifferences = false;
-        if (dict0.mOptions.mFrenchLigatureProcessing != dict1.mOptions.mFrenchLigatureProcessing) {
-            System.out.println("  French ligature processing : "
-                    + dict0.mOptions.mFrenchLigatureProcessing + " <=> "
-                    + dict1.mOptions.mFrenchLigatureProcessing);
-            hasDifferences = true;
-        }
-        else if (dict0.mOptions.mGermanUmlautProcessing != dict1.mOptions.mGermanUmlautProcessing) {
-            System.out.println("  German umlaut processing : "
-                    + dict0.mOptions.mGermanUmlautProcessing + " <=> "
-                    + dict1.mOptions.mGermanUmlautProcessing);
-            hasDifferences = true;
-        }
-        final HashMap<String, String> options1 =
-                new HashMap<String, String>(dict1.mOptions.mAttributes);
+        final HashMap<String, String> options1 = new HashMap<>(dict1.mOptions.mAttributes);
         for (final String optionKey : dict0.mOptions.mAttributes.keySet()) {
             if (!dict0.mOptions.mAttributes.get(optionKey).equals(
                     dict1.mOptions.mAttributes.get(optionKey))) {
@@ -120,42 +107,47 @@
 
     private static void diffWords(final FusionDictionary dict0, final FusionDictionary dict1) {
         boolean hasDifferences = false;
-        for (final Word word0 : dict0) {
-            final PtNode word1 = FusionDictionary.findWordInTree(dict1.mRootNodeArray,
-                    word0.mWord);
-            if (null == word1) {
+        for (final WordProperty word0Property : dict0) {
+            final PtNode word1PtNode = FusionDictionary.findWordInTree(dict1.mRootNodeArray,
+                    word0Property.mWord);
+            if (null == word1PtNode) {
                 // This word is not in dict1
-                System.out.println("Deleted: " + word0.mWord + " " + word0.mFrequency);
+                System.out.println("Deleted: " + word0Property.mWord + " "
+                        + word0Property.getProbability());
                 hasDifferences = true;
             } else {
                 // We found the word. Compare frequencies, shortcuts, bigrams
-                if (word0.mFrequency != word1.getFrequency()) {
-                    System.out.println("Freq changed: " + word0.mWord + " " + word0.mFrequency
-                            + " -> " + word1.getFrequency());
+                if (word0Property.getProbability() != word1PtNode.getProbability()) {
+                    System.out.println("Probability changed: " + word0Property.mWord + " "
+                            + word0Property.getProbability() + " -> "
+                            + word1PtNode.getProbability());
                     hasDifferences = true;
                 }
-                if (word0.mIsNotAWord != word1.getIsNotAWord()) {
-                    System.out.println("Not a word: " + word0.mWord + " " + word0.mIsNotAWord
-                            + " -> " + word1.getIsNotAWord());
+                if (word0Property.mIsNotAWord != word1PtNode.getIsNotAWord()) {
+                    System.out.println("Not a word: " + word0Property.mWord + " "
+                            + word0Property.mIsNotAWord + " -> " + word1PtNode.getIsNotAWord());
                     hasDifferences = true;
                 }
-                if (word0.mIsBlacklistEntry != word1.getIsBlacklistEntry()) {
-                    System.out.println("Blacklist: " + word0.mWord + " " + word0.mIsBlacklistEntry
-                            + " -> " + word1.getIsBlacklistEntry());
+                if (word0Property.mIsBlacklistEntry != word1PtNode.getIsBlacklistEntry()) {
+                    System.out.println("Blacklist: " + word0Property.mWord + " "
+                            + word0Property.mIsBlacklistEntry + " -> "
+                            + word1PtNode.getIsBlacklistEntry());
                     hasDifferences = true;
                 }
-                hasDifferences |= hasAttributesDifferencesAndPrintThemIfAny(word0.mWord,
-                        "Bigram", word0.mBigrams, word1.getBigrams());
-                hasDifferences |= hasAttributesDifferencesAndPrintThemIfAny(word0.mWord,
-                        "Shortcut", word0.mShortcutTargets, word1.getShortcutTargets());
+                hasDifferences |= hasAttributesDifferencesAndPrintThemIfAny(word0Property.mWord,
+                        "Bigram", word0Property.mBigrams, word1PtNode.getBigrams());
+                hasDifferences |= hasAttributesDifferencesAndPrintThemIfAny(word0Property.mWord,
+                        "Shortcut", word0Property.mShortcutTargets,
+                        word1PtNode.getShortcutTargets());
             }
         }
-        for (final Word word1 : dict1) {
-            final PtNode word0 = FusionDictionary.findWordInTree(dict0.mRootNodeArray,
-                    word1.mWord);
-            if (null == word0) {
+        for (final WordProperty word1Property : dict1) {
+            final PtNode word0PtNode = FusionDictionary.findWordInTree(dict0.mRootNodeArray,
+                    word1Property.mWord);
+            if (null == word0PtNode) {
                 // This word is not in dict0
-                System.out.println("Added: " + word1.mWord + " " + word1.mFrequency);
+                System.out.println("Added: " + word1Property.mWord + " "
+                        + word1Property.getProbability());
                 hasDifferences = true;
             }
         }
@@ -171,7 +163,7 @@
             if (null == list0) return false;
             for (final WeightedString attribute0 : list0) {
                 System.out.println(type + " removed: " + word + " " + attribute0.mWord + " "
-                        + attribute0.mFrequency);
+                        + attribute0.getProbability());
             }
             return true;
         }
@@ -187,8 +179,8 @@
                     for (final WeightedString attribute1 : list1) {
                         if (attribute0.mWord.equals(attribute1.mWord)) {
                             System.out.println(type + " freq changed: " + word + " "
-                                    + attribute0.mWord + " " + attribute0.mFrequency + " -> "
-                                    + attribute1.mFrequency);
+                                    + attribute0.mWord + " " + attribute0.getProbability() + " -> "
+                                    + attribute1.getProbability());
                             list1.remove(attribute1);
                             foundString = true;
                             break;
@@ -197,7 +189,7 @@
                     if (!foundString) {
                         // We come here if we haven't found any matching string.
                         System.out.println(type + " removed: " + word + " " + attribute0.mWord + " "
-                                + attribute0.mFrequency);
+                                + attribute0.getProbability());
                     }
                 } else {
                     list1.remove(attribute0);
@@ -209,7 +201,7 @@
         for (final WeightedString attribute1 : list1) {
             hasDifferences = true;
             System.out.println(type + " added: " + word + " " + attribute1.mWord + " "
-                    + attribute1.mFrequency);
+                    + attribute1.getProbability());
         }
         return hasDifferences;
     }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java
index 350f427..9b2567f 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java
@@ -19,8 +19,8 @@
 import com.android.inputmethod.latin.makedict.FormatSpec;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.makedict.Word;
+import com.android.inputmethod.latin.makedict.WeightedString;
+import com.android.inputmethod.latin.makedict.WordProperty;
 
 import java.util.Arrays;
 import java.util.ArrayList;
@@ -43,15 +43,16 @@
         int bigramCount = 0;
         int shortcutCount = 0;
         int whitelistCount = 0;
-        for (final Word w : dict) {
+        for (final WordProperty wordProperty : dict) {
             ++wordCount;
-            if (null != w.mBigrams) {
-                bigramCount += w.mBigrams.size();
+            if (null != wordProperty.mBigrams) {
+                bigramCount += wordProperty.mBigrams.size();
             }
-            if (null != w.mShortcutTargets) {
-                shortcutCount += w.mShortcutTargets.size();
-                for (WeightedString shortcutTarget : w.mShortcutTargets) {
-                    if (FormatSpec.SHORTCUT_WHITELIST_FREQUENCY == shortcutTarget.mFrequency) {
+            if (null != wordProperty.mShortcutTargets) {
+                shortcutCount += wordProperty.mShortcutTargets.size();
+                for (WeightedString shortcutTarget : wordProperty.mShortcutTargets) {
+                    if (FormatSpec.SHORTCUT_WHITELIST_FREQUENCY
+                            == shortcutTarget.getProbability()) {
                         ++whitelistCount;
                     }
                 }
@@ -71,7 +72,7 @@
             return;
         }
         System.out.println("Word: " + word);
-        System.out.println("  Freq: " + ptNode.getFrequency());
+        System.out.println("  Freq: " + ptNode.getProbability());
         if (ptNode.getIsNotAWord()) {
             System.out.println("  Is not a word");
         }
@@ -84,8 +85,9 @@
         } else {
             for (final WeightedString shortcutTarget : shortcutTargets) {
                 System.out.println("  Shortcut target: " + shortcutTarget.mWord + " ("
-                        + (FormatSpec.SHORTCUT_WHITELIST_FREQUENCY == shortcutTarget.mFrequency
-                                ? "whitelist" : shortcutTarget.mFrequency) + ")");
+                        + (FormatSpec.SHORTCUT_WHITELIST_FREQUENCY
+                                == shortcutTarget.getProbability() ?
+                                        "whitelist" : shortcutTarget.getProbability()) + ")");
             }
         }
         final ArrayList<WeightedString> bigrams = ptNode.getBigrams();
@@ -93,7 +95,8 @@
             System.out.println("  No bigrams");
         } else {
             for (final WeightedString bigram : bigrams) {
-                System.out.println("  Bigram: " + bigram.mWord + " (" + bigram.mFrequency + ")");
+                System.out.println(
+                        "  Bigram: " + bigram.mWord + " (" + bigram.getProbability() + ")");
             }
         }
     }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Package.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Package.java
index dff3387..1f67982 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Package.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Package.java
@@ -21,8 +21,9 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 
 public class Package {
     private Package() {
@@ -86,9 +87,13 @@
             }
             System.out.println("Packaging : " + decodedSpec.describeChain());
             System.out.println("Uncompressed size : " + decodedSpec.mFile.length());
-            final FileOutputStream dstStream = new FileOutputStream(new File(mArgs[1]));
-            BinaryDictOffdeviceUtils.copy(new BufferedInputStream(
-                    new FileInputStream(decodedSpec.mFile)), new BufferedOutputStream(dstStream));
+            try (
+                final InputStream input = getFileInputStream(decodedSpec.mFile);
+                final OutputStream output = new BufferedOutputStream(
+                        getFileOutputStreamOrStdOut(mArgs[1]))
+            ) {
+                BinaryDictOffdeviceUtils.copy(input, output);
+            }
         }
     }
 }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java
index 9174238..b6383d7 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Test.java
@@ -18,31 +18,43 @@
 
 import com.android.inputmethod.latin.makedict.BinaryDictDecoderEncoderTests;
 import com.android.inputmethod.latin.makedict.BinaryDictEncoderFlattenTreeTests;
-import com.android.inputmethod.latin.makedict.BinaryDictIOUtilsTests;
 import com.android.inputmethod.latin.makedict.FusionDictionaryTest;
+import com.android.inputmethod.latin.utils.FileUtils;
 
+import java.io.File;
+import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.nio.file.Files;
 import java.util.ArrayList;
 
 /**
  * Dicttool command implementing self-tests.
  */
 public class Test extends Dicttool.Command {
+    private static final String getTmpDir() {
+        try {
+            return Files.createTempDirectory("dicttool").toString();
+        } catch (IOException e) {
+            throw new RuntimeException("Can't get temporary directory", e);
+        }
+    }
+    private static final String TEST_TMP_DIR_BASE = getTmpDir();
+    public static final File TEST_TMP_DIR = new File(TEST_TMP_DIR_BASE);
     public static final String COMMAND = "test";
+    private static final int DEFAULT_MAX_UNIGRAMS = 1500;
     private long mSeed = System.currentTimeMillis();
-    private int mMaxUnigrams = BinaryDictIOUtilsTests.DEFAULT_MAX_UNIGRAMS;
+    private int mMaxUnigrams = DEFAULT_MAX_UNIGRAMS;
 
     private static final Class<?>[] sClassesToTest = {
         BinaryDictOffdeviceUtilsTests.class,
         FusionDictionaryTest.class,
         BinaryDictDecoderEncoderTests.class,
         BinaryDictEncoderFlattenTreeTests.class,
-        BinaryDictIOUtilsTests.class
     };
-    private ArrayList<Method> mAllTestMethods = new ArrayList<Method>();
-    private ArrayList<String> mUsedTestMethods = new ArrayList<String>();
+    private ArrayList<Method> mAllTestMethods = new ArrayList<>();
+    private ArrayList<String> mUsedTestMethods = new ArrayList<>();
 
     public Test() {
         for (final Class<?> c : sClassesToTest) {
@@ -57,8 +69,12 @@
 
     @Override
     public String getHelp() {
-        final StringBuilder s = new StringBuilder("test [-s seed] [-m maxUnigrams] [testName...]\n"
-                + "If seed is not specified, the current time is used.\nTest list is:\n");
+        final StringBuilder s = new StringBuilder(
+                "test [-s seed] [-m maxUnigrams] [-n] [testName...]\n"
+                + "If seed is not specified, the current time is used.\n"
+                + "If -n option is provided, do not delete temporary files in "
+                + TEST_TMP_DIR_BASE + "/*.\n"
+                + "Test list is:\n");
         for (final Method m : mAllTestMethods) {
             s.append("  ");
             s.append(m.getName());
@@ -71,17 +87,26 @@
     public void run() throws IllegalAccessException, InstantiationException,
             InvocationTargetException {
         int i = 0;
+        boolean deleteTmpDir = true;
         while (i < mArgs.length) {
             final String arg = mArgs[i++];
             if ("-s".equals(arg)) {
                 mSeed = Long.parseLong(mArgs[i++]);
             } else if ("-m".equals(arg)) {
                 mMaxUnigrams = Integer.parseInt(mArgs[i++]);
+            } else if ("-n".equals(arg)) {
+                deleteTmpDir = false;
             } else {
                 mUsedTestMethods.add(arg);
             }
         }
-        runChosenTests();
+        try {
+            runChosenTests();
+        } finally {
+            if (deleteTmpDir) {
+                FileUtils.deleteRecursively(TEST_TMP_DIR);
+            }
+        }
     }
 
     private void runChosenTests() throws IllegalAccessException, InstantiationException,
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/XmlDictInputOutput.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/XmlDictInputOutput.java
index 4e99bf9..bdec447 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/XmlDictInputOutput.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/XmlDictInputOutput.java
@@ -16,19 +16,23 @@
 
 package com.android.inputmethod.latin.dicttool;
 
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
-import com.android.inputmethod.latin.makedict.Word;
+import com.android.inputmethod.latin.makedict.ProbabilityInfo;
+import com.android.inputmethod.latin.makedict.WeightedString;
+import com.android.inputmethod.latin.makedict.WordProperty;
 
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import java.io.BufferedInputStream;
 import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
+import java.io.BufferedWriter;
+import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.Writer;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.TreeSet;
@@ -37,10 +41,6 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
 /**
  * Reads and writes XML files for a FusionDictionary.
  *
@@ -52,14 +52,10 @@
     private static final String WORD_TAG = "w";
     private static final String BIGRAM_TAG = "bigram";
     private static final String SHORTCUT_TAG = "shortcut";
-    private static final String FREQUENCY_ATTR = "f";
+    private static final String PROBABILITY_ATTR = "f";
     private static final String WORD_ATTR = "word";
     private static final String NOT_A_WORD_ATTR = "not_a_word";
 
-    private static final String OPTIONS_KEY = "options";
-    private static final String GERMAN_UMLAUT_PROCESSING_OPTION = "german_umlaut_processing";
-    private static final String FRENCH_LIGATURE_PROCESSING_OPTION = "french_ligature_processing";
-
     /**
      * SAX handler for a unigram XML file.
      */
@@ -68,6 +64,7 @@
         private static final int START = 1;
         private static final int WORD = 2;
         private static final int UNKNOWN = 3;
+        private static final int SHORTCUT_ONLY_WORD_PROBABILITY = 1;
 
         FusionDictionary mDictionary;
         int mState; // the state of the parser
@@ -92,7 +89,8 @@
             final FusionDictionary dict = mDictionary;
             for (final String shortcutOnly : mShortcutsMap.keySet()) {
                 if (dict.hasWord(shortcutOnly)) continue;
-                dict.add(shortcutOnly, 1, mShortcutsMap.get(shortcutOnly), true /* isNotAWord */);
+                dict.add(shortcutOnly, new ProbabilityInfo(SHORTCUT_ONLY_WORD_PROBABILITY),
+                        mShortcutsMap.get(shortcutOnly), true /* isNotAWord */);
             }
             mDictionary = null;
             mShortcutsMap.clear();
@@ -109,23 +107,18 @@
                 mWord = "";
                 for (int attrIndex = 0; attrIndex < attrs.getLength(); ++attrIndex) {
                     final String attrName = attrs.getLocalName(attrIndex);
-                    if (FREQUENCY_ATTR.equals(attrName)) {
+                    if (PROBABILITY_ATTR.equals(attrName)) {
                         mFreq = Integer.parseInt(attrs.getValue(attrIndex));
                     }
                 }
             } else if (ROOT_TAG.equals(localName)) {
-                final HashMap<String, String> attributes = new HashMap<String, String>();
+                final HashMap<String, String> attributes = new HashMap<>();
                 for (int attrIndex = 0; attrIndex < attrs.getLength(); ++attrIndex) {
                     final String attrName = attrs.getLocalName(attrIndex);
                     attributes.put(attrName, attrs.getValue(attrIndex));
                 }
-                final String optionsString = attributes.get(OPTIONS_KEY);
-                final boolean processUmlauts =
-                        GERMAN_UMLAUT_PROCESSING_OPTION.equals(optionsString);
-                final boolean processLigatures =
-                        FRENCH_LIGATURE_PROCESSING_OPTION.equals(optionsString);
                 mDictionary = new FusionDictionary(new PtNodeArray(),
-                        new DictionaryOptions(attributes, processUmlauts, processLigatures));
+                        new DictionaryOptions(attributes));
             } else {
                 mState = UNKNOWN;
             }
@@ -144,7 +137,8 @@
         @Override
         public void endElement(String uri, String localName, String qName) {
             if (WORD == mState) {
-                mDictionary.add(mWord, mFreq, mShortcutsMap.get(mWord), false /* isNotAWord */);
+                mDictionary.add(mWord, new ProbabilityInfo(mFreq), mShortcutsMap.get(mWord),
+                        false /* isNotAWord */);
                 mState = START;
             }
         }
@@ -174,7 +168,7 @@
             DST_ATTRIBUTE = dstAttribute;
             DST_FREQ = dstFreq;
             mSrc = null;
-            mAssocMap = new HashMap<String, ArrayList<WeightedString>>();
+            mAssocMap = new HashMap<>();
         }
 
         @Override
@@ -186,7 +180,7 @@
                 int freq = getValueFromFreqString(attrs.getValue(uri, DST_FREQ));
                 WeightedString bigram = new WeightedString(dst, freq / XML_TO_MEMORY_RATIO);
                 ArrayList<WeightedString> bigramList = mAssocMap.get(mSrc);
-                if (null == bigramList) bigramList = new ArrayList<WeightedString>();
+                if (null == bigramList) bigramList = new ArrayList<>();
                 bigramList.add(bigram);
                 mAssocMap.put(mSrc, bigramList);
             }
@@ -246,14 +240,13 @@
         protected int getValueFromFreqString(final String freqString) {
             if (WHITELIST_MARKER.equals(freqString)) {
                 return WHITELIST_FREQ_VALUE;
-            } else {
-                final int intValue = super.getValueFromFreqString(freqString);
-                if (intValue < MIN_FREQ || intValue > MAX_FREQ) {
-                    throw new RuntimeException("Shortcut freq out of range. Accepted range is "
-                            + MIN_FREQ + ".." + MAX_FREQ);
-                }
-                return intValue;
             }
+            final int intValue = super.getValueFromFreqString(freqString);
+            if (intValue < MIN_FREQ || intValue > MAX_FREQ) {
+                throw new RuntimeException("Shortcut freq out of range. Accepted range is "
+                        + MIN_FREQ + ".." + MAX_FREQ);
+            }
+            return intValue;
         }
 
         // As per getAssocMap(), this never returns null.
@@ -271,23 +264,12 @@
      * @return true if the file is in the unigram XML format, false otherwise
      */
     public static boolean isXmlUnigramDictionary(final String filename) {
-        BufferedReader reader = null;
-        try {
-            reader = new BufferedReader(new FileReader(new File(filename)));
+        try (final BufferedReader reader = new BufferedReader(
+                new InputStreamReader(new FileInputStream(filename), "UTF-8"))) {
             final String firstLine = reader.readLine();
             return firstLine.matches("^\\s*<wordlist .*>\\s*$");
-        } catch (FileNotFoundException e) {
+        } catch (final IOException e) {
             return false;
-        } catch (IOException e) {
-            return false;
-        } finally {
-            if (reader != null) {
-                try {
-                    reader.close();
-                } catch (IOException e) {
-                    // do nothing
-                }
-            }
         }
     }
 
@@ -302,8 +284,8 @@
      * @param bigrams the file to read the bigrams from, or null.
      * @return the in-memory representation of the dictionary.
      */
-    public static FusionDictionary readDictionaryXml(final InputStream unigrams,
-            final InputStream shortcuts, final InputStream bigrams)
+    public static FusionDictionary readDictionaryXml(final BufferedInputStream unigrams,
+            final BufferedInputStream shortcuts, final BufferedInputStream bigrams)
             throws SAXException, IOException, ParserConfigurationException {
         final SAXParserFactory factory = SAXParserFactory.newInstance();
         factory.setNamespaceAware(true);
@@ -325,7 +307,7 @@
             final ArrayList<WeightedString> bigramList = bigramMap.get(firstWord);
             for (final WeightedString bigram : bigramList) {
                 if (!dict.hasWord(bigram.mWord)) continue;
-                dict.setBigram(firstWord, bigram.mWord, bigram.mFrequency);
+                dict.setBigram(firstWord, bigram.mWord, bigram.mProbabilityInfo);
             }
         }
         return dict;
@@ -352,44 +334,40 @@
      * @param destination a destination stream to write to.
      * @param dict the dictionary to write.
      */
-    public static void writeDictionaryXml(Writer destination, FusionDictionary dict)
-            throws IOException {
-        final TreeSet<Word> set = new TreeSet<Word>();
-        for (Word word : dict) {
-            set.add(word);
+    public static void writeDictionaryXml(final BufferedWriter destination,
+            final FusionDictionary dict) throws IOException {
+        final TreeSet<WordProperty> wordPropertiesInDict = new TreeSet<>();
+        for (WordProperty wordProperty : dict) {
+            wordPropertiesInDict.add(wordProperty);
         }
         // TODO: use an XMLSerializer if this gets big
         destination.write("<wordlist format=\"2\"");
-        final HashMap<String, String> options = dict.mOptions.mAttributes;
-        if (dict.mOptions.mGermanUmlautProcessing) {
-            destination.write(" " + OPTIONS_KEY + "=\"" + GERMAN_UMLAUT_PROCESSING_OPTION + "\"");
-        } else if (dict.mOptions.mFrenchLigatureProcessing) {
-            destination.write(" " + OPTIONS_KEY + "=\"" + FRENCH_LIGATURE_PROCESSING_OPTION + "\"");
-        }
         for (final String key : dict.mOptions.mAttributes.keySet()) {
             final String value = dict.mOptions.mAttributes.get(key);
             destination.write(" " + key + "=\"" + value + "\"");
         }
         destination.write(">\n");
         destination.write("<!-- Warning: there is no code to read this format yet. -->\n");
-        for (Word word : set) {
-            destination.write("  <" + WORD_TAG + " " + WORD_ATTR + "=\"" + word.mWord + "\" "
-                    + FREQUENCY_ATTR + "=\"" + word.mFrequency
-                    + (word.mIsNotAWord ? "\" " + NOT_A_WORD_ATTR + "=\"true" : "") + "\">");
-            if (null != word.mShortcutTargets) {
+        for (WordProperty wordProperty : wordPropertiesInDict) {
+            destination.write("  <" + WORD_TAG + " " + WORD_ATTR + "=\"" + wordProperty.mWord
+                    + "\" " + PROBABILITY_ATTR + "=\"" + wordProperty.getProbability()
+                    + (wordProperty.mIsNotAWord ? "\" " + NOT_A_WORD_ATTR + "=\"true" : "")
+                    + "\">");
+            if (null != wordProperty.mShortcutTargets) {
                 destination.write("\n");
-                for (WeightedString target : word.mShortcutTargets) {
-                    destination.write("    <" + SHORTCUT_TAG + " " + FREQUENCY_ATTR + "=\""
-                            + target.mFrequency + "\">" + target.mWord + "</" + SHORTCUT_TAG
+                for (WeightedString target : wordProperty.mShortcutTargets) {
+                    destination.write("    <" + SHORTCUT_TAG + " " + PROBABILITY_ATTR + "=\""
+                            + target.getProbability() + "\">" + target.mWord + "</" + SHORTCUT_TAG
                             + ">\n");
                 }
                 destination.write("  ");
             }
-            if (null != word.mBigrams) {
+            if (null != wordProperty.mBigrams) {
                 destination.write("\n");
-                for (WeightedString bigram : word.mBigrams) {
-                    destination.write("    <" + BIGRAM_TAG + " " + FREQUENCY_ATTR + "=\""
-                            + bigram.mFrequency + "\">" + bigram.mWord + "</" + BIGRAM_TAG + ">\n");
+                for (WeightedString bigram : wordProperty.mBigrams) {
+                    destination.write("    <" + BIGRAM_TAG + " " + PROBABILITY_ATTR + "=\""
+                            + bigram.getProbability() + "\">" + bigram.mWord
+                            + "</" + BIGRAM_TAG + ">\n");
                 }
                 destination.write("  ");
             }
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/tools/dicttool/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
new file mode 100644
index 0000000..a4ad6b5
--- /dev/null
+++ b/tools/dicttool/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.latin.personalization;
+
+public class PersonalizationHelper {
+    public static void currentTimeChangedForTesting(final int currentTimestamp) {
+    }
+}
diff --git a/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java b/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java
index 1baeb7a..0236a44 100644
--- a/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java
+++ b/tools/dicttool/tests/com/android/inputmethod/latin/dicttool/BinaryDictOffdeviceUtilsTests.java
@@ -16,20 +16,22 @@
 
 package com.android.inputmethod.latin.dicttool;
 
+import com.android.inputmethod.latin.makedict.BinaryDictIOUtils;
 import com.android.inputmethod.latin.makedict.DictDecoder;
 import com.android.inputmethod.latin.makedict.DictEncoder;
-import com.android.inputmethod.latin.makedict.FormatSpec;
+import com.android.inputmethod.latin.makedict.DictionaryHeader;
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FormatSpec.FormatOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
+import com.android.inputmethod.latin.makedict.ProbabilityInfo;
 import com.android.inputmethod.latin.makedict.UnsupportedFormatException;
-import com.android.inputmethod.latin.makedict.Ver3DictEncoder;
+import com.android.inputmethod.latin.makedict.Ver2DictEncoder;
 
 import junit.framework.TestCase;
 
-import java.io.File;
 import java.io.BufferedOutputStream;
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -42,25 +44,31 @@
     private static final int TEST_FREQ = 37; // Some arbitrary value unlikely to happen by chance
 
     public void testGetRawDictWorks() throws IOException, UnsupportedFormatException {
+        final String VERSION = "1";
+        final String LOCALE = "test";
+        final String ID = "main:test";
+
         // Create a thrice-compressed dictionary file.
-        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new DictionaryOptions(new HashMap<String, String>(),
-                        false /* germanUmlautProcessing */, false /* frenchLigatureProcessing */));
-        dict.add("foo", TEST_FREQ, null, false /* isNotAWord */);
-        dict.add("fta", 1, null, false /* isNotAWord */);
-        dict.add("ftb", 1, null, false /* isNotAWord */);
-        dict.add("bar", 1, null, false /* isNotAWord */);
-        dict.add("fool", 1, null, false /* isNotAWord */);
+        final DictionaryOptions testOptions = new DictionaryOptions(new HashMap<String, String>());
+        testOptions.mAttributes.put(DictionaryHeader.DICTIONARY_VERSION_KEY, VERSION);
+        testOptions.mAttributes.put(DictionaryHeader.DICTIONARY_LOCALE_KEY, LOCALE);
+        testOptions.mAttributes.put(DictionaryHeader.DICTIONARY_ID_KEY, ID);
+        final FusionDictionary dict = new FusionDictionary(new PtNodeArray(), testOptions);
+        dict.add("foo", new ProbabilityInfo(TEST_FREQ), null, false /* isNotAWord */);
+        dict.add("fta", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("ftb", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("bar", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("fool", new ProbabilityInfo(1), null, false /* isNotAWord */);
 
         final File dst = File.createTempFile("testGetRawDict", ".tmp");
         dst.deleteOnExit();
-
-        final OutputStream out = Compress.getCompressedStream(
+        try (final OutputStream out = Compress.getCompressedStream(
                 Compress.getCompressedStream(
                         Compress.getCompressedStream(
-                                new BufferedOutputStream(new FileOutputStream(dst)))));
-        final DictEncoder dictEncoder = new Ver3DictEncoder(out);
-        dictEncoder.writeDictionary(dict, new FormatOptions(2, false));
+                                new BufferedOutputStream(new FileOutputStream(dst)))))) {
+            final DictEncoder dictEncoder = new Ver2DictEncoder(out);
+            dictEncoder.writeDictionary(dict, new FormatOptions(2, false));
+        }
 
         // Test for an actually compressed dictionary and its contents
         final BinaryDictOffdeviceUtils.DecoderChainSpec decodeSpec =
@@ -69,12 +77,18 @@
             assertEquals("Wrong decode spec", BinaryDictOffdeviceUtils.COMPRESSION, step);
         }
         assertEquals("Wrong decode spec", 3, decodeSpec.mDecoderSpec.size());
-        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(decodeSpec.mFile);
-        final FusionDictionary resultDict = dictDecoder.readDictionaryBinary(
-                null /* dict : an optional dictionary to add words to, or null */,
-                false /* deleteDictIfBroken */);
+        final DictDecoder dictDecoder = BinaryDictIOUtils.getDictDecoder(decodeSpec.mFile, 0,
+                decodeSpec.mFile.length());
+        final FusionDictionary resultDict =
+                dictDecoder.readDictionaryBinary(false /* deleteDictIfBroken */);
+        assertEquals("Wrong version attribute", VERSION, resultDict.mOptions.mAttributes.get(
+                DictionaryHeader.DICTIONARY_VERSION_KEY));
+        assertEquals("Wrong locale attribute", LOCALE, resultDict.mOptions.mAttributes.get(
+                DictionaryHeader.DICTIONARY_LOCALE_KEY));
+        assertEquals("Wrong id attribute", ID, resultDict.mOptions.mAttributes.get(
+                DictionaryHeader.DICTIONARY_ID_KEY));
         assertEquals("Dictionary can't be read back correctly",
-                FusionDictionary.findWordInTree(resultDict.mRootNodeArray, "foo").getFrequency(),
+                FusionDictionary.findWordInTree(resultDict.mRootNodeArray, "foo").getProbability(),
                 TEST_FREQ);
     }
 
@@ -82,11 +96,11 @@
         // Randomly create some 4k file containing garbage
         final File dst = File.createTempFile("testGetRawDict", ".tmp");
         dst.deleteOnExit();
-        final OutputStream out = new BufferedOutputStream(new FileOutputStream(dst));
-        for (int i = 0; i < 1024; ++i) {
-            out.write(0x12345678);
+        try (final OutputStream out = new BufferedOutputStream(new FileOutputStream(dst))) {
+            for (int i = 0; i < 1024; ++i) {
+                out.write(0x12345678);
+            }
         }
-        out.close();
 
         // Test that a random data file actually fails
         assertNull("Wrongly identified data file",
@@ -94,12 +108,12 @@
 
         final File gzDst = File.createTempFile("testGetRawDict", ".tmp");
         gzDst.deleteOnExit();
-        final OutputStream gzOut =
-                Compress.getCompressedStream(new BufferedOutputStream(new FileOutputStream(gzDst)));
-        for (int i = 0; i < 1024; ++i) {
-            gzOut.write(0x12345678);
+        try (final OutputStream gzOut = Compress.getCompressedStream(
+                new BufferedOutputStream(new FileOutputStream(gzDst)))) {
+            for (int i = 0; i < 1024; ++i) {
+                gzOut.write(0x12345678);
+            }
         }
-        gzOut.close();
 
         // Test that a compressed random data file actually fails
         assertNull("Wrongly identified data file",
diff --git a/tools/dicttool/tests/com/android/inputmethod/latin/makedict/BinaryDictEncoderFlattenTreeTests.java b/tools/dicttool/tests/com/android/inputmethod/latin/makedict/BinaryDictEncoderFlattenTreeTests.java
index 5505823..aa228e7 100644
--- a/tools/dicttool/tests/com/android/inputmethod/latin/makedict/BinaryDictEncoderFlattenTreeTests.java
+++ b/tools/dicttool/tests/com/android/inputmethod/latin/makedict/BinaryDictEncoderFlattenTreeTests.java
@@ -16,7 +16,7 @@
 
 package com.android.inputmethod.latin.makedict;
 
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
 
 import junit.framework.TestCase;
@@ -32,13 +32,12 @@
     // that it does not contain any duplicates.
     public void testFlattenNodes() {
         final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new DictionaryOptions(new HashMap<String, String>(),
-                        false /* germanUmlautProcessing */, false /* frenchLigatureProcessing */));
-        dict.add("foo", 1, null, false /* isNotAWord */);
-        dict.add("fta", 1, null, false /* isNotAWord */);
-        dict.add("ftb", 1, null, false /* isNotAWord */);
-        dict.add("bar", 1, null, false /* isNotAWord */);
-        dict.add("fool", 1, null, false /* isNotAWord */);
+                new DictionaryOptions(new HashMap<String, String>()));
+        dict.add("foo", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("fta", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("ftb", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("bar", new ProbabilityInfo(1), null, false /* isNotAWord */);
+        dict.add("fool", new ProbabilityInfo(1), null, false /* isNotAWord */);
         final ArrayList<PtNodeArray> result =
                 BinaryDictEncoderUtils.flattenTree(dict.mRootNodeArray);
         assertEquals(4, result.size());
diff --git a/tools/dicttool/tests/com/android/inputmethod/latin/makedict/FusionDictionaryTest.java b/tools/dicttool/tests/com/android/inputmethod/latin/makedict/FusionDictionaryTest.java
index 659650a..71f8ac8 100644
--- a/tools/dicttool/tests/com/android/inputmethod/latin/makedict/FusionDictionaryTest.java
+++ b/tools/dicttool/tests/com/android/inputmethod/latin/makedict/FusionDictionaryTest.java
@@ -16,11 +16,11 @@
 
 package com.android.inputmethod.latin.makedict;
 
+import com.android.inputmethod.latin.makedict.FormatSpec.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode;
-import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions;
 import com.android.inputmethod.latin.makedict.FusionDictionary.PtNodeArray;
-import com.android.inputmethod.latin.makedict.Word;
+import com.android.inputmethod.latin.makedict.WordProperty;
 
 import junit.framework.TestCase;
 
@@ -32,7 +32,7 @@
  * Unit tests for FusionDictionary.
  */
 public class FusionDictionaryTest extends TestCase {
-    private static final ArrayList<String> sWords = new ArrayList<String>();
+    private static final ArrayList<String> sWords = new ArrayList<>();
     private static final int MAX_UNIGRAMS = 1000;
 
     private void prepare(final long seed) {
@@ -87,8 +87,8 @@
     }
 
     private void dumpDict(final FusionDictionary dict) {
-        for (Word w : dict) {
-            System.out.println("Word " + dumpWord(w.mWord));
+        for (WordProperty wordProperty : dict) {
+            System.out.println("Word " + dumpWord(wordProperty.mWord));
         }
     }
 
@@ -96,13 +96,12 @@
     // that it does not contain any duplicates.
     public void testFusion() {
         final FusionDictionary dict = new FusionDictionary(new PtNodeArray(),
-                new DictionaryOptions(new HashMap<String, String>(),
-                        false /* germanUmlautProcessing */, false /* frenchLigatureProcessing */));
+                new DictionaryOptions(new HashMap<String, String>()));
         final long time = System.currentTimeMillis();
         prepare(time);
         for (int i = 0; i < sWords.size(); ++i) {
             System.out.println("Adding in pos " + i + " : " + dumpWord(sWords.get(i)));
-            dict.add(sWords.get(i), 180, null, false);
+            dict.add(sWords.get(i), new ProbabilityInfo(180), null, false);
             dumpDict(dict);
             checkDictionary(dict, sWords, i);
         }
diff --git a/tools/dicttool/tests/etc/test-dicttool.sh b/tools/dicttool/tests/etc/test-dicttool.sh
index 5eb44fc..f96db68 100755
--- a/tools/dicttool/tests/etc/test-dicttool.sh
+++ b/tools/dicttool/tests/etc/test-dicttool.sh
@@ -18,7 +18,7 @@
 echo "    source $0" 1>&2
 echo "  or" 1>&2
 echo "    . $0" 1>&2
-exit 1
+if [[ ${BASH_SOURCE[0]} != $0 ]]; then return; else exit 1; fi
 fi
 
 find out -name "dicttool_aosp*" -exec rm -rf {} \; > /dev/null 2>&1
diff --git a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl b/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
deleted file mode 100644
index 4cd9c23..0000000
--- a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * 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.annotations.UsedForTesting;
-import com.android.inputmethod.latin.utils.CollectionUtils;
-
-import java.util.HashMap;
-
-/**
- * !!!!! DO NOT EDIT THIS FILE !!!!!
- *
- * This file is generated by tools/make-keyboard-text. The base template file is
- *   tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
- *
- * This file must be updated when any text resources in keyboard layout files have been changed.
- * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
- * and should be defined in
- *   tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml
- *
- * To update this file, please run the following commands.
- *   $ cd $ANDROID_BUILD_TOP
- *   $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
- *   $ make-keyboard-text -java packages/inputmethods/LatinIME/java/src
- *
- * The updated source file will be generated to the following path (this file).
- *   packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/
- *   KeyboardTextsSet.java
- */
-public final class KeyboardTextsSet {
-    // Language to texts map.
-    private static final HashMap<String, String[]> sLocaleToTextsMap = CollectionUtils.newHashMap();
-    private static final HashMap<String, Integer> sNameToIdsMap = CollectionUtils.newHashMap();
-
-    private String[] mTexts;
-    // Resource name to text map.
-    private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap();
-
-    public void setLanguage(final String language) {
-        mTexts = sLocaleToTextsMap.get(language);
-        if (mTexts == null) {
-            mTexts = LANGUAGE_DEFAULT;
-        }
-    }
-
-    public void loadStringResources(final Context context) {
-        final int referenceId = context.getApplicationInfo().labelRes;
-        loadStringResourcesInternal(context, RESOURCE_NAMES, referenceId);
-    }
-
-    @UsedForTesting
-    void loadStringResourcesInternal(final Context context, final String[] resourceNames,
-            final 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);
-            mResourceNameToTextsMap.put(resName, res.getString(resId));
-        }
-    }
-
-    public String getText(final String name) {
-        String text = mResourceNameToTextsMap.get(name);
-        if (text != null) {
-            return text;
-        }
-        final Integer id = sNameToIdsMap.get(name);
-        if (id == null) throw new RuntimeException("Unknown label: " + name);
-        text = (id < mTexts.length) ? mTexts[id] : null;
-        return (text == null) ? LANGUAGE_DEFAULT[id] : text;
-    }
-
-    private static final String[] RESOURCE_NAMES = {
-        // These texts' name should be aligned with the @string/<name> in values/strings.xml.
-        // Labels for action.
-        "label_go_key",
-        // "label_search_key",
-        "label_send_key",
-        "label_next_key",
-        "label_done_key",
-        "label_previous_key",
-        // Other labels.
-        "label_pause_key",
-        "label_wait_key",
-    };
-
-    private static final String[] NAMES = {
-        /* @NAMES@ */
-    };
-
-    private static final String EMPTY = "";
-
-    /* Default texts */
-    private static final String[] LANGUAGE_DEFAULT = {
-        /* @DEFAULT_TEXTS@ */
-    };
-
-    /* @TEXTS@ */
-    private static final Object[] LANGUAGES_AND_TEXTS = {
-        /* @LANGUAGES_AND_TEXTS@ */
-    };
-
-    static {
-        int id = 0;
-        for (final String name : NAMES) {
-            sNameToIdsMap.put(name, id++);
-        }
-
-        for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) {
-            final String language = (String)LANGUAGES_AND_TEXTS[i];
-            final String[] texts = (String[])LANGUAGES_AND_TEXTS[i + 1];
-            sLocaleToTextsMap.put(language, texts);
-        }
-    }
-}
diff --git a/tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl b/tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
new file mode 100644
index 0000000..6a7469c
--- /dev/null
+++ b/tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.internal;
+
+import java.util.HashMap;
+import java.util.Locale;
+
+/**
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ *
+ * This file is generated by tools/make-keyboard-text. The base template file is
+ *   tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/
+ *   KeyboardTextsTable.tmpl
+ *
+ * This file must be updated when any text resources in keyboard layout files have been changed.
+ * These text resources are referred as "!text/<resource_name>" in keyboard XML definitions,
+ * and should be defined in
+ *   tools/make-keyboard-text/res/values-<locale>/donottranslate-more-keys.xml
+ *
+ * To update this file, please run the following commands.
+ *   $ cd $ANDROID_BUILD_TOP
+ *   $ mmm packages/inputmethods/LatinIME/tools/make-keyboard-text
+ *   $ make-keyboard-text -java packages/inputmethods/LatinIME/java
+ *
+ * The updated source file will be generated to the following path (this file).
+ *   packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/internal/
+ *   KeyboardTextsTable.java
+ */
+public final class KeyboardTextsTable {
+    // Name to index map.
+    private static final HashMap<String, Integer> sNameToIndexesMap = new HashMap<>();
+    // Locale to texts table map.
+    private static final HashMap<String, String[]> sLocaleToTextsTableMap = new HashMap<>();
+    // TODO: Remove this variable after debugging.
+    // Texts table to locale maps.
+    private static final HashMap<String[], String> sTextsTableToLocaleMap = new HashMap<>();
+
+    public static String getText(final String name, final String[] textsTable) {
+        final Integer indexObj = sNameToIndexesMap.get(name);
+        if (indexObj == null) {
+            throw new RuntimeException("Unknown text name=" + name + " locale="
+                    + sTextsTableToLocaleMap.get(textsTable));
+        }
+        final int index = indexObj;
+        final String text = (index < textsTable.length) ? textsTable[index] : null;
+        if (text != null) {
+            return text;
+        }
+        // Sanity check.
+        if (index >= 0 && index < TEXTS_DEFAULT.length) {
+            return TEXTS_DEFAULT[index];
+        }
+        // Throw exception for debugging purpose.
+        throw new RuntimeException("Illegal index=" + index + " for name=" + name
+                + " locale=" + sTextsTableToLocaleMap.get(textsTable));
+    }
+
+    public static String[] getTextsTable(final Locale locale) {
+        final String localeKey = locale.toString();
+        if (sLocaleToTextsTableMap.containsKey(localeKey)) {
+            return sLocaleToTextsTableMap.get(localeKey);
+        }
+        final String languageKey = locale.getLanguage();
+        if (sLocaleToTextsTableMap.containsKey(languageKey)) {
+            return sLocaleToTextsTableMap.get(languageKey);
+        }
+        return TEXTS_DEFAULT;
+    }
+
+    private static final String[] NAMES = {
+    //  /* index:histogram */ "name",
+        /* @NAMES@ */
+    };
+
+    private static final String EMPTY = "";
+
+    /* Default texts */
+    private static final String[] TEXTS_DEFAULT = {
+        /* @DEFAULT_TEXTS@ */
+    };
+
+    /* @TEXTS@ */
+    private static final Object[] LOCALES_AND_TEXTS = {
+    // "locale", TEXT_ARRAY,  /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
+        /* @LOCALES_AND_TEXTS@ */
+    };
+
+    static {
+        for (int index = 0; index < NAMES.length; index++) {
+            sNameToIndexesMap.put(NAMES[index], index);
+        }
+
+        for (int i = 0; i < LOCALES_AND_TEXTS.length; i += 2) {
+            final String locale = (String)LOCALES_AND_TEXTS[i];
+            final String[] textsTable = (String[])LOCALES_AND_TEXTS[i + 1];
+            sLocaleToTextsTableMap.put(locale, textsTable);
+            sTextsTableToLocaleMap.put(textsTable, locale);
+        }
+    }
+}
diff --git a/tools/make-keyboard-text/res/values-af/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-af/donottranslate-more-keys.xml
index ee96f44..45acb7e 100644
--- a/tools/make-keyboard-text/res/values-af/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-af/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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;,&#x00E2;,&#x00E4;,&#x00E0;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <string name="morekeys_a">&#x00E1;,&#x00E2;,&#x00E4;,&#x00E0;,&#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
@@ -35,7 +35,7 @@
          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>
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
     <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
          U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
@@ -43,7 +43,7 @@
          U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
          U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
          U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_i">&#x00ED;,&#x00EC;,&#x00EF;,&#x00EE;,&#x012F;,&#x012B;,&#x0133;</string>
+    <string name="morekeys_i">&#x00ED;,&#x00EC;,&#x00EF;,&#x00EE;,&#x012F;,&#x012B;,&#x0133;</string>
     <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
@@ -52,18 +52,17 @@
          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;,&#x00F4;,&#x00F6;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <string name="morekeys_o">&#x00F3;,&#x00F4;,&#x00F6;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
     <!-- 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+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
          U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
-    <string name="more_keys_for_u">&#x00FA;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
+    <string name="morekeys_u">&#x00FA;,&#x00FB;,&#x00FC;,&#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>
-    <string name="more_keys_for_y">&#x00FD;,&#x0177;,&#x00FF;,&#x0133;</string>
+    <string name="morekeys_n">&#x00F1;,&#x0144;</string>
     <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
          U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_y">&#x00FD;,&#x0133;</string>
+    <string name="morekeys_y">&#x00FD;,&#x0133;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
index 8b86b1b..ab78f45 100644
--- a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
@@ -19,91 +19,99 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Label for "switch to alphabetic" key.
-         U+0623: "ا" ARABIC LETTER ALEF
+         U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
          U+200C: ZERO WIDTH NON-JOINER
          U+0628: "ب" ARABIC LETTER BEH
-         U+062C: "پ" ARABIC LETTER PEH -->
-    <string name="label_to_alpha_key">&#x0623;&#x200C;&#x0628;&#x200C;&#x062C;</string>
+         U+062C: "ج" ARABIC LETTER JEEM -->
+    <string name="keylabel_to_alpha">&#x0623;&#x200C;&#x0628;&#x200C;&#x062C;</string>
     <!-- U+0661: "١" ARABIC-INDIC DIGIT ONE -->
-    <string name="keylabel_for_symbols_1">&#x0661;</string>
+    <string name="keyspec_symbols_1">&#x0661;</string>
     <!-- U+0662: "٢" ARABIC-INDIC DIGIT TWO -->
-    <string name="keylabel_for_symbols_2">&#x0662;</string>
+    <string name="keyspec_symbols_2">&#x0662;</string>
     <!-- U+0663: "٣" ARABIC-INDIC DIGIT THREE -->
-    <string name="keylabel_for_symbols_3">&#x0663;</string>
+    <string name="keyspec_symbols_3">&#x0663;</string>
     <!-- U+0664: "٤" ARABIC-INDIC DIGIT FOUR -->
-    <string name="keylabel_for_symbols_4">&#x0664;</string>
+    <string name="keyspec_symbols_4">&#x0664;</string>
     <!-- U+0665: "٥" ARABIC-INDIC DIGIT FIVE -->
-    <string name="keylabel_for_symbols_5">&#x0665;</string>
+    <string name="keyspec_symbols_5">&#x0665;</string>
     <!-- U+0666: "٦" ARABIC-INDIC DIGIT SIX -->
-    <string name="keylabel_for_symbols_6">&#x0666;</string>
+    <string name="keyspec_symbols_6">&#x0666;</string>
     <!-- U+0667: "٧" ARABIC-INDIC DIGIT SEVEN -->
-    <string name="keylabel_for_symbols_7">&#x0667;</string>
+    <string name="keyspec_symbols_7">&#x0667;</string>
     <!-- U+0668: "٨" ARABIC-INDIC DIGIT EIGHT -->
-    <string name="keylabel_for_symbols_8">&#x0668;</string>
+    <string name="keyspec_symbols_8">&#x0668;</string>
     <!-- U+0669: "٩" ARABIC-INDIC DIGIT NINE -->
-    <string name="keylabel_for_symbols_9">&#x0669;</string>
+    <string name="keyspec_symbols_9">&#x0669;</string>
     <!-- U+0660: "٠" ARABIC-INDIC DIGIT ZERO -->
-    <string name="keylabel_for_symbols_0">&#x0660;</string>
+    <string name="keyspec_symbols_0">&#x0660;</string>
     <!-- Label for "switch to symbols" key.
          U+061F: "؟" ARABIC QUESTION MARK -->
-    <string name="label_to_symbol_key">&#x0663;&#x0662;&#x0661;&#x061F;</string>
-    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-         part because it'll be appended by the code. -->
-    <string name="label_to_symbol_with_microphone_key">&#x0663;&#x0662;&#x0661;</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="keylabel_to_symbol">&#x0663;&#x0662;&#x0661;&#x061F;</string>
+    <string name="additional_morekeys_symbols_1">1</string>
+    <string name="additional_morekeys_symbols_2">2</string>
+    <string name="additional_morekeys_symbols_3">3</string>
+    <string name="additional_morekeys_symbols_4">4</string>
+    <string name="additional_morekeys_symbols_5">5</string>
+    <string name="additional_morekeys_symbols_6">6</string>
+    <string name="additional_morekeys_symbols_7">7</string>
+    <string name="additional_morekeys_symbols_8">8</string>
+    <string name="additional_morekeys_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>
+    <string name="additional_morekeys_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>
+    <string name="keyspec_comma">&#x060C;</string>
+    <!-- U+0651: "ّ" ARABIC SHADDA -->
+    <string name="keyhintlabel_period">&#x0651;</string>
+    <string name="morekeys_period">!text/morekeys_arabic_diacritics</string>
+    <string name="keyhintlabel_tablet_period">&#x0651;</string>
+    <string name="morekeys_tablet_period">!text/morekeys_arabic_diacritics</string>
+    <string name="keyspec_symbols_question">&#x061F;</string>
+    <string name="keyspec_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>
+    <string name="keyspec_symbols_percent">&#x066A;</string>
+    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="morekeys_question">?,&#x00BF;</string>
+    <string name="morekeys_symbols_semicolon">;</string>
     <!-- U+2030: "‰" PER MILLE SIGN -->
-    <string name="more_keys_for_symbols_percent">\\%,&#x2030;</string>
-    <!-- U+060C: "،" ARABIC COMMA
-         U+061B: "؛" ARABIC SEMICOLON
-         U+061F: "؟" ARABIC QUESTION MARK -->
-    <string name="keylabel_for_apostrophe">&#x060C;</string>
-    <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
+    <string name="morekeys_symbols_percent">\\%,&#x2030;</string>
     <!-- U+061F: "؟" ARABIC QUESTION MARK
          U+060C: "،" ARABIC COMMA
          U+061B: "؛" ARABIC SEMICOLON -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,\@,&amp;,\\%,+,&#x061B;,/,(|),)|("</string>
-    <string name="more_keys_for_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
+    <string name="keyspec_tablet_comma">"&#x060C;"</string>
+    <string name="keyhintlabel_tablet_comma">"&#x061F;"</string>
+    <string name="morekeys_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,\",\'"</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
-    <string name="more_keys_for_bullet">&#x266A;</string>
+    <string name="morekeys_bullet">&#x266A;</string>
     <!-- U+2605: "★" BLACK STAR
          U+066D: "٭" ARABIC FIVE POINTED STAR -->
-    <string name="more_keys_for_star">&#x2605;,&#x066D;</string>
+    <string name="morekeys_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 -->
-    <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
-    <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
+    <string name="morekeys_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,!text/keyspecs_left_parenthesis_more_keys</string>
+    <string name="morekeys_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,!text/keyspecs_right_parenthesis_more_keys</string>
     <!-- U+2264: "≤" LESS-THAN OR EQUAL TO
          U+2265: "≥" GREATER-THAN EQUAL TO
          U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
          U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
          U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
          U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
-    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
-    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
-    <string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
-    <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
+    <string name="keyspec_left_parenthesis">(|)</string>
+    <string name="keyspec_right_parenthesis">)|(</string>
+    <string name="keyspec_left_square_bracket">[|]</string>
+    <string name="keyspec_right_square_bracket">]|[</string>
+    <string name="keyspec_left_curly_bracket">{|}</string>
+    <string name="keyspec_right_curly_bracket">}|{</string>
+    <string name="keyspec_less_than">&lt;|&gt;</string>
+    <string name="keyspec_greater_than">&gt;|&lt;</string>
+    <string name="keyspec_less_than_equal">&#x2264;|&#x2265;</string>
+    <string name="keyspec_greater_than_equal">&#x2265;|&#x2264;</string>
+    <string name="keyspec_left_double_angle_quote">&#x00AB;|&#x00BB;</string>
+    <string name="keyspec_right_double_angle_quote">&#x00BB;|&#x00AB;</string>
+    <string name="keyspec_left_single_angle_quote">&#x2039;|&#x203A;</string>
+    <string name="keyspec_right_single_angle_quote">&#x203A;|&#x2039;</string>
     <!-- U+0655: "ٕ" ARABIC HAMZA BELOW
          U+0654: "ٔ" ARABIC HAMZA ABOVE
          U+0652: "ْ" ARABIC SUKUN
@@ -120,6 +128,5 @@
          U+0640: "ـ" ARABIC TATWEEL -->
     <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
     <!-- Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. -->
-    <string name="more_keys_for_arabic_diacritics">"!fixedColumnOrder!7,&#x20;&#x0655;|&#x0655;,&#x20;&#x0654;|&#x0654;,&#x20;&#x0652;|&#x0652;,&#x20;&#x064D;|&#x064D;,&#x20;&#x064C;|&#x064C;,&#x20;&#x064B;|&#x064B;,&#x20;&#x0651;|&#x0651;,&#x20;&#x0656;|&#x0656;,&#x20;&#x0670;|&#x0670;,&#x20;&#x0653;|&#x0653;,&#x20;&#x0650;|&#x0650;,&#x20;&#x064F;|&#x064F;,&#x20;&#x064E;|&#x064E;,&#x0640;&#x0640;&#x0640;|&#x0640;"</string>
-    <string name="keyhintlabel_for_arabic_diacritics">&#x0651;</string>
+    <string name="morekeys_arabic_diacritics">"!fixedColumnOrder!7,&#x20;&#x0655;|&#x0655;,&#x20;&#x0654;|&#x0654;,&#x20;&#x0652;|&#x0652;,&#x20;&#x064D;|&#x064D;,&#x20;&#x064C;|&#x064C;,&#x20;&#x064B;|&#x064B;,&#x20;&#x0651;|&#x0651;,&#x20;&#x0656;|&#x0656;,&#x20;&#x0670;|&#x0670;,&#x20;&#x0653;|&#x0653;,&#x20;&#x0650;|&#x0650;,&#x20;&#x064F;|&#x064F;,&#x20;&#x064E;|&#x064E;,&#x0640;&#x0640;&#x0640;|&#x0640;"</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml
new file mode 100644
index 0000000..54aa570
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-az-rAZ/donottranslate-more-keys.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+    <string name="morekeys_a">&#x00E2;</string>
+    <!-- U+0259: "ə" LATIN SMALL LETTER SCHWA -->
+    <string name="morekeys_e">&#x0259;</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="morekeys_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="morekeys_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="morekeys_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="morekeys_s">&#x015F;,&#x00DF;,&#x015B;,&#x0161;</string>
+    <!-- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="morekeys_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="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-az/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-az/donottranslate-more-keys.xml
deleted file mode 100644
index db1784c..0000000
--- a/tools/make-keyboard-text/res/values-az/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<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+0259: "ə" LATIN SMALL LETTER SCHWA -->
-    <string name="more_keys_for_e">&#x0259;</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/make-keyboard-text/res/values-be-rBY/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-be-rBY/donottranslate-more-keys.xml
new file mode 100644
index 0000000..52ada29
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-be-rBY/donottranslate-more-keys.xml
@@ -0,0 +1,40 @@
+<?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="keyspec_east_slavic_row1_9">&#x045E;</string>
+    <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
+    <string name="keyspec_east_slavic_row2_2">&#x044B;</string>
+    <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
+    <string name="keyspec_east_slavic_row2_11">&#x044D;</string>
+    <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
+    <string name="keyspec_east_slavic_row3_5">&#x0456;</string>
+    <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
+    <string name="morekeys_cyrillic_ie">&#x0451;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="morekeys_cyrillic_soft_sign">&#x044A;</string>
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
+    <string name="single_quotes">!text/single_9qm_lqm</string>
+    <string name="double_quotes">!text/double_9qm_lqm</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-be/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-be/donottranslate-more-keys.xml
deleted file mode 100644
index 4723503..0000000
--- a/tools/make-keyboard-text/res/values-be/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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+0451: "ё" CYRILLIC SMALL LETTER IO -->
-    <string name="keylabel_for_east_slavic_row1_12">&#x0451;</string>
-    <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
-    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
-    <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
-    <string name="keylabel_for_east_slavic_row2_11">&#x044D;</string>
-    <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
-    <string name="keylabel_for_east_slavic_row3_5">&#x0456;</string>
-    <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
-    <string name="more_keys_for_cyrillic_ie">&#x0451;</string>
-    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
-    <!-- Label for "switch to alphabetic" key.
-         U+0410: "А" CYRILLIC CAPITAL LETTER A
-         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
-    <string name="single_quotes">!text/single_9qm_lqm</string>
-    <string name="double_quotes">!text/double_9qm_lqm</string>
-</resources>
diff --git a/tools/make-keyboard-text/res/values-bg/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-bg/donottranslate-more-keys.xml
index 5262133..8a98b12 100644
--- a/tools/make-keyboard-text/res/values-bg/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-bg/donottranslate-more-keys.xml
@@ -22,7 +22,7 @@
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
     <!-- single_quotes of Bulgarian is default single_quotes_right_left. -->
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-bn-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-bn-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..4955cd4
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-bn-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0995: "क" BENGALI LETTER KA
+         U+0996: "ख" BENGALI LETTER KHA
+         U+0997: "ग" BENGALI LETTER GA -->
+    <string name="keylabel_to_alpha">&#x0995;&#x0996;&#x0997;</string>
+    <!-- U+09F3: "৳" BENGALI RUPEE SIGN -->
+    <string name="keyspec_currency">&#x09F3;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
index 6639373..125f08f 100644
--- a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
@@ -28,7 +28,7 @@
          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>
+    <string name="morekeys_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
@@ -36,14 +36,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -53,26 +53,26 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
     <!-- U+00B7: "·" MIDDLE DOT
          U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
-    <string name="more_keys_for_l">l&#x00B7;l,&#x0142;</string>
+    <string name="morekeys_l">l&#x00B7;l,&#x0142;</string>
     <!-- U+00B7: "·" MIDDLE DOT -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,;,/,(,),#,&#x00B7;,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
-    <string name="more_keys_for_period">\?,&#x00B7;</string>
+    <string name="morekeys_punctuation">"!autoColumnOrder!9,\\,,?,!,&#x00B7;,#,),(,/,;,',@,:,-,\",+,\\%,&amp;"</string>
+    <string name="morekeys_tablet_punctuation">"!autoColumnOrder!8,\\,,',&#x00B7;,#,),(,/,;,@,:,-,\",+,\\%,&amp;"</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
-    <string name="keylabel_for_spanish_row2_10">&#x00E7;</string>
+    <string name="keyspec_spanish_row2_10">&#x00E7;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-cs/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-cs/donottranslate-more-keys.xml
index 5ce1d3b..1a27783 100644
--- a/tools/make-keyboard-text/res/values-cs/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-cs/donottranslate-more-keys.xml
@@ -26,7 +26,7 @@
          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>
+    <string name="morekeys_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
@@ -35,14 +35,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -51,39 +51,39 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
-    <string name="more_keys_for_d">&#x010F;</string>
+    <string name="morekeys_d">&#x010F;</string>
     <!-- U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
-    <string name="more_keys_for_r">&#x0159;</string>
+    <string name="morekeys_r">&#x0159;</string>
     <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
-    <string name="more_keys_for_t">&#x0165;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_z">&#x017E;,&#x017A;,&#x017C;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml
index cbaf9f4..c22e262 100644
--- a/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml
@@ -24,50 +24,50 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
-    <string name="more_keys_for_d">&#x00F0;</string>
+    <string name="morekeys_d">&#x00F0;</string>
     <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
-    <string name="more_keys_for_l">&#x0142;</string>
+    <string name="morekeys_l">&#x0142;</string>
     <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
-    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <string name="keyspec_nordic_row1_11">&#x00E5;</string>
     <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
-    <string name="keylabel_for_nordic_row2_10">&#x00E6;</string>
+    <string name="keyspec_nordic_row2_10">&#x00E6;</string>
     <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
-    <string name="keylabel_for_nordic_row2_11">&#x00F8;</string>
+    <string name="keyspec_nordic_row2_11">&#x00F8;</string>
     <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
-    <string name="more_keys_for_nordic_row2_10">&#x00E4;</string>
+    <string name="morekeys_nordic_row2_10">&#x00E4;</string>
     <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
-    <string name="more_keys_for_nordic_row2_11">&#x00F6;</string>
+    <string name="morekeys_nordic_row2_11">&#x00F6;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml
index 9dc8717..0c6d3ad 100644
--- a/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml
@@ -26,13 +26,13 @@
          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>
+    <string name="morekeys_a">&#x00E4;,%,&#x00E2;,&#x00E0;,&#x00E1;,&#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+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE -->
-    <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0117;</string>
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#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
@@ -41,20 +41,32 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_n">&#x00F1;,&#x0144;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="keyspec_swiss_row1_11">&#x00FC;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE -->
+    <string name="morekeys_swiss_row1_11">&#x00E8;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keyspec_swiss_row2_10">&#x00F6;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="morekeys_swiss_row2_10">&#x00E9;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keyspec_swiss_row2_11">&#x00E4;</string>
+    <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE -->
+    <string name="morekeys_swiss_row2_11">&#x00E0;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-el/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-el/donottranslate-more-keys.xml
index 964dba0..77950c3 100644
--- a/tools/make-keyboard-text/res/values-el/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-el/donottranslate-more-keys.xml
@@ -22,5 +22,5 @@
          U+0391: "Α" GREEK CAPITAL LETTER ALPHA
          U+0392: "Β" GREEK CAPITAL LETTER BETA
          U+0393: "Γ" GREEK CAPITAL LETTER GAMMA -->
-    <string name="label_to_alpha_key">&#x0391;&#x0392;&#x0393;</string>
+    <string name="keylabel_to_alpha">&#x0391;&#x0392;&#x0393;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml
index 969a504..c22edba 100644
--- a/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-en/donottranslate-more-keys.xml
@@ -26,38 +26,38 @@
          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
+    <string name="morekeys_a">&#x00E0;,&#x00E1;,&#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+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
-    <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;</string>
-    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#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+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
+    <string name="morekeys_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x012B;,&#x00EC;</string>
+    <!-- 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+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
+    <string name="morekeys_o">&#x00F3;,&#x00F4;,&#x00F6;,&#x00F2;,&#x0153;,&#x00F8;,&#x014D;,&#x00F5;</string>
+    <!-- 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+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>
+    <string name="morekeys_u">&#x00FA;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
     <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
-    <string name="more_keys_for_s">&#x00DF;</string>
+    <string name="morekeys_s">&#x00DF;</string>
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
-    <string name="more_keys_for_n">&#x00F1;</string>
+    <string name="morekeys_n">&#x00F1;</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
-    <string name="more_keys_for_c">&#x00E7;</string>
+    <string name="morekeys_c">&#x00E7;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-eo/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-eo/donottranslate-more-keys.xml
index e929869..7ef3101 100644
--- a/tools/make-keyboard-text/res/values-eo/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-eo/donottranslate-more-keys.xml
@@ -29,7 +29,7 @@
          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">&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x0103;,&#x0105;,&#x00AA;</string>
+    <string name="morekeys_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x0103;,&#x0105;,&#x00AA;</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
@@ -38,7 +38,7 @@
          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>
+    <string name="morekeys_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
@@ -48,7 +48,7 @@
          U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
          U+0131: "ı" LATIN SMALL LETTER DOTLESS I
          U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x0129;,&#x00EC;,&#x012F;,&#x012B;,&#x0131;,&#x0133;</string>
+    <string name="morekeys_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x0129;,&#x00EC;,&#x012F;,&#x012B;,&#x0131;,&#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
@@ -59,7 +59,7 @@
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
          U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
          U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
-    <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;,&#x0151;,&#x00BA;</string>
+    <string name="morekeys_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;,&#x0151;,&#x00BA;</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
@@ -70,77 +70,77 @@
          U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
          U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
          U+00B5: "µ" MICRO SIGN -->
-    <string name="more_keys_for_u">&#x00FA;,&#x016F;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;,&#x0169;,&#x0171;,&#x0173;,&#x00B5;</string>
+    <string name="morekeys_u">&#x00FA;,&#x016F;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;,&#x0169;,&#x0171;,&#x0173;,&#x00B5;</string>
     <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
          U+0161: "š" LATIN SMALL LETTER S WITH CARON
          U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
          U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
          U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
-    <string name="more_keys_for_s">&#x00DF;,&#x0161;,&#x015B;,&#x0219;,&#x015F;</string>
+    <string name="morekeys_s">&#x00DF;,&#x0161;,&#x015B;,&#x0219;,&#x015F;</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: "ŉ" 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>
+    <string name="morekeys_n">&#x00F1;,&#x0144;,&#x0146;,&#x0148;,&#x0149;,&#x014B;</string>
     <!-- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
          U+010D: "č" LATIN SMALL LETTER C WITH CARON
          U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
          U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE -->
-    <string name="more_keys_for_c">&#x0107;,&#x010D;,&#x00E7;,&#x010B;</string>
+    <string name="morekeys_c">&#x0107;,&#x010D;,&#x00E7;,&#x010B;</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+00FE: "þ" LATIN SMALL LETTER THORN -->
-    <string name="more_keys_for_y">y,&#x00FD;,&#x0177;,&#x00FF;,&#x00FE;</string>
+    <string name="morekeys_y">y,&#x00FD;,&#x0177;,&#x00FF;,&#x00FE;</string>
     <!-- U+00F0: "ð" LATIN SMALL LETTER ETH
          U+010F: "ď" LATIN SMALL LETTER D WITH CARON
          U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
-    <string name="more_keys_for_d">&#x00F0;,&#x010F;,&#x0111;</string>
+    <string name="morekeys_d">&#x00F0;,&#x010F;,&#x0111;</string>
     <!-- U+0159: "ř" LATIN SMALL LETTER R WITH CARON
          U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
          U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA  -->
-    <string name="more_keys_for_r">&#x0159;,&#x0155;,&#x0157;</string>
+    <string name="morekeys_r">&#x0159;,&#x0155;,&#x0157;</string>
     <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON
          U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
          U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
          U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE -->
-    <string name="more_keys_for_t">&#x0165;,&#x021B;,&#x0163;,&#x0167;</string>
+    <string name="morekeys_t">&#x0165;,&#x021B;,&#x0163;,&#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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_l">&#x013A;,&#x013C;,&#x013E;,&#x0140;,&#x0142;</string>
     <!-- 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">&#x011F;,&#x0121;,&#x0123;</string>
+    <string name="morekeys_g">&#x011F;,&#x0121;,&#x0123;</string>
     <!-- U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX -->
-    <string name="more_keys_for_v">w,&#x0175;</string>
+    <string name="morekeys_v">w,&#x0175;</string>
     <!-- U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX
          U+0127: "ħ" LATIN SMALL LETTER H WITH STROKE -->
-    <string name="more_keys_for_h">&#x0125;,&#x0127;</string>
+    <string name="morekeys_h">&#x0125;,&#x0127;</string>
     <!-- U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX -->
-    <string name="more_keys_for_w">w,&#x0175;</string>
-    <string name="more_keys_for_q">q</string>
-    <string name="more_keys_for_x">x</string>
+    <string name="morekeys_w">w,&#x0175;</string>
+    <string name="morekeys_q">q</string>
+    <string name="morekeys_x">x</string>
     <!-- U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX -->
-    <string name="keylabel_for_q">&#x015D;</string>
+    <string name="keyspec_q">&#x015D;</string>
     <!-- U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX -->
-    <string name="keylabel_for_w">&#x011D;</string>
+    <string name="keyspec_w">&#x011D;</string>
     <!-- U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE -->
-    <string name="keylabel_for_y">&#x016D;</string>
+    <string name="keyspec_y">&#x016D;</string>
     <!-- U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX -->
-    <string name="keylabel_for_x">&#x0109;</string>
+    <string name="keyspec_x">&#x0109;</string>
     <!-- U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX -->
-    <string name="keylabel_for_spanish_row2_10">&#x0135;</string>
+    <string name="keyspec_spanish_row2_10">&#x0135;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
index 8e6b4ee..22e5370 100644
--- a/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
@@ -28,7 +28,7 @@
          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>
+    <string name="morekeys_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
@@ -36,14 +36,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -53,30 +53,21 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
-    <string name="keylabel_for_spanish_row2_10">&#x00F1;</string>
+    <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
     <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
          U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!4,;,!,\\,,\?,:,&#x00A1;,\@,&#x00BF;"</string>
-    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_tablet_comma">"!,&#x00A1;"</string>
-    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_period">"\?,&#x00BF;"</string>
-    <string name="keylabel_for_apostrophe">\"</string>
-    <string name="keyhintlabel_for_apostrophe">\'</string>
-    <string name="more_keys_for_apostrophe">\'</string>
+    <string name="morekeys_punctuation">"!autoColumnOrder!9,\\,,?,!,#,),(,/,;,&#x00A1;,',@,:,-,\",+,\\%,&amp;,&#x00BF;"</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
new file mode 100644
index 0000000..9a8fa3c
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
@@ -0,0 +1,116 @@
+<?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="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_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 -->
+    <string name="morekeys_n">&#x0146;,&#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="morekeys_c">&#x010D;,&#x00E7;,&#x0107;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="morekeys_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="morekeys_r">&#x0157;,&#x0159;,&#x0155;</string>
+    <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+         U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
+    <string name="morekeys_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="morekeys_z">&#x017E;,&#x017C;,&#x017A;</string>
+    <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
+    <string name="morekeys_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="morekeys_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
+    <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+         U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="morekeys_g">&#x0123;,&#x011F;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="keyspec_nordic_row1_11">&#x00FC;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keyspec_nordic_row2_10">&#x00F6;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keyspec_nordic_row2_11">&#x00E4;</string>
+    <!-- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
+    <string name="morekeys_nordic_row2_10">&#x00F5;</string>
+    <string name="single_quotes">!text/single_9qm_lqm</string>
+    <string name="double_quotes">!text/double_9qm_lqm</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-et/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-et/donottranslate-more-keys.xml
deleted file mode 100644
index d037044..0000000
--- a/tools/make-keyboard-text/res/values-et/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?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>
-    <string name="single_quotes">!text/single_9qm_lqm</string>
-    <string name="double_quotes">!text/double_9qm_lqm</string>
-</resources>
diff --git a/tools/make-keyboard-text/res/values-eu-rES/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-eu-rES/donottranslate-more-keys.xml
new file mode 100644
index 0000000..95f632a
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-eu-rES/donottranslate-more-keys.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
index ab4fbda..58f4555 100644
--- a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
@@ -23,96 +23,101 @@
          U+200C: ZERO WIDTH NON-JOINER
          U+0628: "ب" ARABIC LETTER BEH
          U+067E: "پ" ARABIC LETTER PEH -->
-    <string name="label_to_alpha_key">&#x0627;&#x200C;&#x0628;&#x200C;&#x067E;</string>
+    <string name="keylabel_to_alpha">&#x0627;&#x200C;&#x0628;&#x200C;&#x067E;</string>
     <!-- U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE -->
-    <string name="keylabel_for_symbols_1">&#x06F1;</string>
+    <string name="keyspec_symbols_1">&#x06F1;</string>
     <!-- U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO -->
-    <string name="keylabel_for_symbols_2">&#x06F2;</string>
+    <string name="keyspec_symbols_2">&#x06F2;</string>
     <!-- U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE -->
-    <string name="keylabel_for_symbols_3">&#x06F3;</string>
+    <string name="keyspec_symbols_3">&#x06F3;</string>
     <!-- U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR -->
-    <string name="keylabel_for_symbols_4">&#x06F4;</string>
+    <string name="keyspec_symbols_4">&#x06F4;</string>
     <!-- U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE -->
-    <string name="keylabel_for_symbols_5">&#x06F5;</string>
+    <string name="keyspec_symbols_5">&#x06F5;</string>
     <!-- U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX -->
-    <string name="keylabel_for_symbols_6">&#x06F6;</string>
+    <string name="keyspec_symbols_6">&#x06F6;</string>
     <!-- U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN -->
-    <string name="keylabel_for_symbols_7">&#x06F7;</string>
+    <string name="keyspec_symbols_7">&#x06F7;</string>
     <!-- U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT -->
-    <string name="keylabel_for_symbols_8">&#x06F8;</string>
+    <string name="keyspec_symbols_8">&#x06F8;</string>
     <!-- U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE -->
-    <string name="keylabel_for_symbols_9">&#x06F9;</string>
+    <string name="keyspec_symbols_9">&#x06F9;</string>
     <!-- U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO -->
-    <string name="keylabel_for_symbols_0">&#x06F0;</string>
+    <string name="keyspec_symbols_0">&#x06F0;</string>
     <!-- Label for "switch to symbols" key.
          U+061F: "؟" ARABIC QUESTION MARK -->
-    <string name="label_to_symbol_key">&#x06F3;&#x06F2;&#x06F1;&#x061F;</string>
-    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-         part because it'll be appended by the code. -->
-    <string name="label_to_symbol_with_microphone_key">&#x06F3;&#x06F2;&#x06F1;</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="keylabel_to_symbol">&#x06F3;&#x06F2;&#x06F1;&#x061F;</string>
+    <string name="additional_morekeys_symbols_1">1</string>
+    <string name="additional_morekeys_symbols_2">2</string>
+    <string name="additional_morekeys_symbols_3">3</string>
+    <string name="additional_morekeys_symbols_4">4</string>
+    <string name="additional_morekeys_symbols_5">5</string>
+    <string name="additional_morekeys_symbols_6">6</string>
+    <string name="additional_morekeys_symbols_7">7</string>
+    <string name="additional_morekeys_symbols_8">8</string>
+    <string name="additional_morekeys_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>
+    <string name="additional_morekeys_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>
+    <string name="keyspec_comma">&#x060C;</string>
+    <!-- U+064B: "ً" ARABIC FATHATAN -->
+    <string name="keyhintlabel_period">&#x064B;</string>
+    <string name="morekeys_period">!text/morekeys_arabic_diacritics</string>
+    <string name="keyhintlabel_tablet_period">&#x064B;</string>
+    <string name="morekeys_tablet_period">!text/morekeys_arabic_diacritics</string>
+    <string name="keyspec_symbols_question">&#x061F;</string>
+    <string name="keyspec_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>
+    <string name="keyspec_symbols_percent">&#x066A;</string>
+    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="morekeys_question">?,&#x00BF;</string>
+    <string name="morekeys_symbols_semicolon">;</string>
     <!-- U+2030: "‰" PER MILLE SIGN -->
-    <string name="more_keys_for_symbols_percent">\\%,&#x2030;</string>
+    <string name="morekeys_symbols_percent">\\%,&#x2030;</string>
     <!-- U+060C: "،" ARABIC COMMA
          U+061B: "؛" ARABIC SEMICOLON
          U+061F: "؟" ARABIC QUESTION MARK
          U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
          U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
-    <string name="keylabel_for_tablet_comma">"&#x060C;"</string>
-    <string name="keyhintlabel_for_tablet_comma">"!"</string>
-    <string name="more_keys_for_tablet_comma">"!,\\,"</string>
-    <string name="keyhintlabel_for_period">"&#x061F;"</string>
-    <string name="more_keys_for_period">"&#x061F;,\?"</string>
-    <string name="keylabel_for_apostrophe">&#x060C;</string>
-    <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
-    <string name="more_keys_for_apostrophe">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;"</string>
+    <string name="keyspec_tablet_comma">"&#x060C;"</string>
+    <string name="keyhintlabel_tablet_comma">"&#x061F;"</string>
+    <string name="morekeys_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote"</string>
     <!-- U+FDFC: "﷼" RIAL SIGN -->
-    <string name="keylabel_for_currency">&#xFDFC;</string>
-    <!-- U+061F: "؟" ARABIC QUESTION MARK
-         U+060C: "،" ARABIC COMMA
-         U+061B: "؛" ARABIC SEMICOLON -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,\@,&amp;,\\%,+,&#x061B;,/,(|),)|("</string>
+    <string name="keyspec_currency">&#xFDFC;</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
-    <string name="more_keys_for_bullet">&#x266A;</string>
+    <string name="morekeys_bullet">&#x266A;</string>
     <!-- U+2605: "★" BLACK STAR
          U+066D: "٭" ARABIC FIVE POINTED STAR -->
-    <string name="more_keys_for_star">&#x2605;,&#x066D;</string>
+    <string name="morekeys_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 -->
-    <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
-    <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
+    <string name="morekeys_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,!text/keyspecs_left_parenthesis_more_keys</string>
+    <string name="morekeys_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,!text/keyspecs_right_parenthesis_more_keys</string>
     <!-- U+2264: "≤" LESS-THAN OR EQUAL TO
          U+2265: "≥" GREATER-THAN EQUAL TO
          U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
          U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
          U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
          U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
-    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&lt;|&gt;</string>
-    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&gt;|&lt;</string>
-    <string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
-    <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
+    <string name="morekeys_less_than">!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_less_than</string>
+    <string name="morekeys_greater_than">!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_greater_than</string>
+    <string name="keyspec_left_parenthesis">(|)</string>
+    <string name="keyspec_right_parenthesis">)|(</string>
+    <string name="keyspec_left_square_bracket">[|]</string>
+    <string name="keyspec_right_square_bracket">]|[</string>
+    <string name="keyspec_left_curly_bracket">{|}</string>
+    <string name="keyspec_right_curly_bracket">}|{</string>
+    <string name="keyspec_less_than">&lt;|&gt;</string>
+    <string name="keyspec_greater_than">&gt;|&lt;</string>
+    <string name="keyspec_less_than_equal">&#x2264;|&#x2265;</string>
+    <string name="keyspec_greater_than_equal">&#x2265;|&#x2264;</string>
+    <string name="keyspec_left_double_angle_quote">&#x00AB;|&#x00BB;</string>
+    <string name="keyspec_right_double_angle_quote">&#x00BB;|&#x00AB;</string>
+    <string name="keyspec_left_single_angle_quote">&#x2039;|&#x203A;</string>
+    <string name="keyspec_right_single_angle_quote">&#x203A;|&#x2039;</string>
     <!-- U+0655: "ٕ" ARABIC HAMZA BELOW
          U+0652: "ْ" ARABIC SUKUN
          U+0651: "ّ" ARABIC SHADDA
@@ -129,6 +134,5 @@
          U+0640: "ـ" ARABIC TATWEEL -->
     <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
     <!-- Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. -->
-    <string name="more_keys_for_arabic_diacritics">"!fixedColumnOrder!7,&#x20;&#x0655;|&#x0655;,&#x20;&#x0652;|&#x0652;,&#x20;&#x0651;|&#x0651;,&#x20;&#x064C;|&#x064C;,&#x20;&#x064D;|&#x064D;,&#x20;&#x064B;|&#x064B;,&#x20;&#x0654;|&#x0654;,&#x20;&#x0656;|&#x0656;,&#x20;&#x0670;|&#x0670;,&#x20;&#x0653;|&#x0653;,&#x20;&#x064F;|&#x064F;,&#x20;&#x0650;|&#x0650;,&#x20;&#x064E;|&#x064E;,&#x0640;&#x0640;&#x0640;|&#x0640;"</string>
-    <string name="keyhintlabel_for_arabic_diacritics">&#x064B;</string>
+    <string name="morekeys_arabic_diacritics">"!fixedColumnOrder!7,&#x20;&#x0655;|&#x0655;,&#x20;&#x0652;|&#x0652;,&#x20;&#x0651;|&#x0651;,&#x20;&#x064C;|&#x064C;,&#x20;&#x064D;|&#x064D;,&#x20;&#x064B;|&#x064B;,&#x20;&#x0654;|&#x0654;,&#x20;&#x0656;|&#x0656;,&#x20;&#x0670;|&#x0670;,&#x20;&#x0653;|&#x0653;,&#x20;&#x064F;|&#x064F;,&#x20;&#x0650;|&#x0650;,&#x20;&#x064E;|&#x064E;,&#x0640;&#x0640;&#x0640;|&#x0640;"</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml
index 25b7858..82b8472 100644
--- a/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml
@@ -24,7 +24,7 @@
          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>
+    <string name="morekeys_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
@@ -32,25 +32,25 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_z">&#x017E;,&#x017A;,&#x017C;</string>
     <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
-    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <string name="keyspec_nordic_row1_11">&#x00E5;</string>
     <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
-    <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
+    <string name="keyspec_nordic_row2_10">&#x00F6;</string>
     <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
-    <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
+    <string name="keyspec_nordic_row2_11">&#x00E4;</string>
     <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
-    <string name="more_keys_for_nordic_row2_10">&#x00F8;</string>
+    <string name="morekeys_nordic_row2_10">&#x00F8;</string>
     <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
-    <string name="more_keys_for_nordic_row2_11">&#x00E6;</string>
+    <string name="morekeys_nordic_row2_11">&#x00E6;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml
index 7b11a18..dded5d2 100644
--- a/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -35,14 +35,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -52,17 +52,29 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x00E7;,%,&#x0107;,&#x010D;</string>
     <!-- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
-    <string name="more_keys_for_y">%,&#x00FF;</string>
+    <string name="morekeys_y">%,&#x00FF;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE -->
+    <string name="keyspec_swiss_row1_11">&#x00E8;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="morekeys_swiss_row1_11">&#x00FC;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="keyspec_swiss_row2_10">&#x00E9;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="morekeys_swiss_row2_10">&#x00F6;</string>
+    <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE -->
+    <string name="keyspec_swiss_row2_11">&#x00E0;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="morekeys_swiss_row2_11">&#x00E4;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-gl-rES/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-gl-rES/donottranslate-more-keys.xml
new file mode 100644
index 0000000..95f632a
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-gl-rES/donottranslate-more-keys.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_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="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml
index b0d010f..55723cd 100644
--- a/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml
@@ -22,42 +22,39 @@
          U+0915: "क" DEVANAGARI LETTER KA
          U+0916: "ख" DEVANAGARI LETTER KHA
          U+0917: "ग" DEVANAGARI LETTER GA -->
-    <string name="label_to_alpha_key">&#x0915;&#x0916;&#x0917;</string>
+    <string name="keylabel_to_alpha">&#x0915;&#x0916;&#x0917;</string>
     <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
-    <string name="keylabel_for_symbols_1">&#x0967;</string>
+    <string name="keyspec_symbols_1">&#x0967;</string>
     <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
-    <string name="keylabel_for_symbols_2">&#x0968;</string>
+    <string name="keyspec_symbols_2">&#x0968;</string>
     <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
-    <string name="keylabel_for_symbols_3">&#x0969;</string>
+    <string name="keyspec_symbols_3">&#x0969;</string>
     <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
-    <string name="keylabel_for_symbols_4">&#x096A;</string>
+    <string name="keyspec_symbols_4">&#x096A;</string>
     <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
-    <string name="keylabel_for_symbols_5">&#x096B;</string>
+    <string name="keyspec_symbols_5">&#x096B;</string>
     <!-- U+096C: "६" DEVANAGARI DIGIT SIX -->
-    <string name="keylabel_for_symbols_6">&#x096C;</string>
+    <string name="keyspec_symbols_6">&#x096C;</string>
     <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
-    <string name="keylabel_for_symbols_7">&#x096D;</string>
+    <string name="keyspec_symbols_7">&#x096D;</string>
     <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
-    <string name="keylabel_for_symbols_8">&#x096E;</string>
+    <string name="keyspec_symbols_8">&#x096E;</string>
     <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
-    <string name="keylabel_for_symbols_9">&#x096F;</string>
+    <string name="keyspec_symbols_9">&#x096F;</string>
     <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
-    <string name="keylabel_for_symbols_0">&#x0966;</string>
+    <string name="keyspec_symbols_0">&#x0966;</string>
     <!-- Label for "switch to symbols" key. -->
-    <string name="label_to_symbol_key">\?&#x0967;&#x0968;&#x0969;</string>
-    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-         part because it'll be appended by the code. -->
-    <string name="label_to_symbol_with_microphone_key">&#x0967;&#x0968;&#x0969;</string>
-    <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>
+    <string name="keylabel_to_symbol">?&#x0967;&#x0968;&#x0969;</string>
+    <string name="additional_morekeys_symbols_1">1</string>
+    <string name="additional_morekeys_symbols_2">2</string>
+    <string name="additional_morekeys_symbols_3">3</string>
+    <string name="additional_morekeys_symbols_4">4</string>
+    <string name="additional_morekeys_symbols_5">5</string>
+    <string name="additional_morekeys_symbols_6">6</string>
+    <string name="additional_morekeys_symbols_7">7</string>
+    <string name="additional_morekeys_symbols_8">8</string>
+    <string name="additional_morekeys_symbols_9">9</string>
+    <string name="additional_morekeys_symbols_0">0</string>
     <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
-    <string name="keylabel_for_currency">&#x20B9;</string>
+    <string name="keyspec_currency">&#x20B9;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-hr/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hr/donottranslate-more-keys.xml
index 022bd2a..73e51db 100644
--- a/tools/make-keyboard-text/res/values-hr/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hr/donottranslate-more-keys.xml
@@ -21,20 +21,20 @@
     <!-- 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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x010D;,&#x0107;,&#x00E7;</string>
     <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
-    <string name="more_keys_for_d">&#x0111;</string>
+    <string name="morekeys_d">&#x0111;</string>
     <string name="single_quotes">!text/single_9qm_rqm</string>
     <string name="double_quotes">!text/double_9qm_rqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml
index ce2f5d0..a394a97 100644
--- a/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hu/donottranslate-more-keys.xml
@@ -26,7 +26,7 @@
          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>
+    <string name="morekeys_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
@@ -34,14 +34,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -51,14 +51,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_u">&#x00FA;,&#x00FC;,&#x0171;,&#x00FB;,&#x00F9;,&#x016B;</string>
     <string name="single_quotes">!text/single_9qm_rqm</string>
     <string name="double_quotes">!text/double_9qm_rqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
new file mode 100644
index 0000000..08d88e5
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
+         U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
+         U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM -->
+    <string name="keylabel_to_alpha">&#x0531;&#x0532;&#x0533;</string>
+    <!-- U+055E: "՞" ARMENIAN QUESTION MARK
+         U+055C: "՜" ARMENIAN EXCLAMATION MARK
+         U+055A: "՚" ARMENIAN APOSTROPHE
+         U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING
+         U+055D: "՝" ARMENIAN COMMA
+         U+055B: "՛" ARMENIAN EMPHASIS MARK
+         U+058A: "֊" ARMENIAN HYPHEN
+         U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+         U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+         U+055F: "՟" ARMENIAN ABBREVIATION MARK -->
+    <string name="morekeys_punctuation">"!autoColumnOrder!8,\\,,&#x055E;,&#x055C;,.,&#x055A;,&#x0559;,?,!,&#x055D;,&#x055B;,&#x058A;,&#x00BB;,&#x00AB;,&#x055F;,;,:"</string>
+    <!-- U+055E: "՞" ARMENIAN QUESTION MARK
+         U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="morekeys_question">&#x055E;,&#x00BF;</string>
+    <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK
+         U+00A1: "¡" INVERTED EXCLAMATION MARK -->
+    <string name="morekeys_exclamation">&#x055C;,&#x00A1;</string>
+    <!-- U+058F: "֏" ARMENIAN DRAM SIGN -->
+    <!-- TODO: Enable this when we have glyph for the following letter
+         <string name="keyspec_currency">&#x058F;</string>
+    -->
+    <!-- U+055D: "՝" ARMENIAN COMMA -->
+    <string name="keyspec_comma">&#x055D;</string>
+    <string name="keyspec_tablet_comma">&#x055D;</string>
+    <!-- U+0589: "։" ARMENIAN FULL STOP -->
+    <string name="keyspec_period">&#x0589;</string>
+    <string name="keyspec_tablet_period">&#x0589;</string>
+    <string name="morekeys_tablet_period">!text/morekeys_punctuation</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-hy/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hy/donottranslate-more-keys.xml
deleted file mode 100644
index 2f34128..0000000
--- a/tools/make-keyboard-text/res/values-hy/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+058A: "֊" ARMENIAN HYPHEN -->
-    <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK -->
-    <!-- U+055D: "՝" ARMENIAN COMMA -->
-    <!-- U+055E: "՞" ARMENIAN QUESTION MARK -->
-    <!-- U+0559: "ՙ" ARMENIAN MODIFIER LETTER LEFT HALF RING -->
-    <!-- U+055A: "՚" ARMENIAN APOSTROPHE -->
-    <!-- U+055B: "՛" ARMENIAN EMPHASIS MARK -->
-    <!-- U+055F: "՟" ARMENIAN ABBREVIATION MARK -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,!,?,\\,,.,&#x058A;,&#x055C;,&#x055D;,&#x055E;,:,;,\@,&#x0559;,&#x055A;,&#x055B;,&#x055F;"</string>
-    <!-- U+055E: "՞" ARMENIAN QUESTION MARK -->
-    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_symbols_question">&#x055E;,&#x00BF;</string>
-    <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK -->
-    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_symbols_exclamation">&#x055C;,&#x00A1;</string>
-    <!-- U+058F: "֏" ARMENIAN DRAM SIGN -->
-    <!-- TODO: Enable this when we have glyph for the following letter
-         <string name="keylabel_for_currency">&#x058F;</string>
-    -->
-</resources>
diff --git a/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml
index 4b4d986..ea7f86f 100644
--- a/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml
@@ -26,7 +26,7 @@
          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>
+    <string name="morekeys_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
@@ -34,14 +34,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -50,26 +50,20 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
-    <string name="more_keys_for_d">&#x00F0;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_t">&#x00FE;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-it/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-it/donottranslate-more-keys.xml
index 17dd031..e809f48 100644
--- a/tools/make-keyboard-text/res/values-it/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-it/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -35,14 +35,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -52,11 +52,23 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_u">&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x016B;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="keyspec_swiss_row1_11">&#x00FC;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE -->
+    <string name="morekeys_swiss_row1_11">&#x00E8;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keyspec_swiss_row2_10">&#x00F6;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="morekeys_swiss_row2_10">&#x00E9;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keyspec_swiss_row2_11">&#x00E4;</string>
+    <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE -->
+    <string name="morekeys_swiss_row2_11">&#x00E0;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
index 994e35a..0decb8f 100644
--- a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
@@ -22,40 +22,36 @@
          U+05D0: "א" HEBREW LETTER ALEF
          U+05D1: "ב" HEBREW LETTER BET
          U+05D2: "ג" HEBREW LETTER GIMEL -->
-    <string name="label_to_alpha_key">&#x05D0;&#x05D1;&#x05D2;</string>
+    <string name="keylabel_to_alpha">&#x05D0;&#x05D1;&#x05D2;</string>
     <!-- U+2605: "★" BLACK STAR -->
-    <string name="more_keys_for_star">&#x2605;</string>
+    <string name="morekeys_star">&#x2605;</string>
     <!-- U+00B1: "±" PLUS-MINUS SIGN
          U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
-    <string name="more_keys_for_plus">&#x00B1;,&#xFB29;</string>
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
+    <string name="morekeys_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 -->
-    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
-    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
-    <!-- The following characters don't need BIDI mirroring.
-         U+2018: "‘" LEFT SINGLE QUOTATION MARK
-         U+2019: "’" RIGHT SINGLE QUOTATION MARK
-         U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
-         U+201C: "“" LEFT DOUBLE QUOTATION MARK
-         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
-         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK -->
-    <string name="single_quotes">&#x2018;,&#x2019;,&#x201A;</string>
-    <string name="double_quotes">&#x201C;,&#x201D;,&#x201E;</string>
-    <string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
-    <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
+    <string name="keyspec_left_parenthesis">(|)</string>
+    <string name="keyspec_right_parenthesis">)|(</string>
+    <string name="keyspec_left_square_bracket">[|]</string>
+    <string name="keyspec_right_square_bracket">]|[</string>
+    <string name="keyspec_left_curly_bracket">{|}</string>
+    <string name="keyspec_right_curly_bracket">}|{</string>
+    <string name="keyspec_less_than">&lt;|&gt;</string>
+    <string name="keyspec_greater_than">&gt;|&lt;</string>
+    <string name="keyspec_less_than_equal">&#x2264;|&#x2265;</string>
+    <string name="keyspec_greater_than_equal">&#x2265;|&#x2264;</string>
+    <string name="keyspec_left_double_angle_quote">&#x00AB;|&#x00BB;</string>
+    <string name="keyspec_right_double_angle_quote">&#x00BB;|&#x00AB;</string>
+    <string name="keyspec_left_single_angle_quote">&#x2039;|&#x203A;</string>
+    <string name="keyspec_right_single_angle_quote">&#x203A;|&#x2039;</string>
+    <string name="single_quotes">!text/single_rqm_9qm</string>
+    <string name="double_quotes">!text/double_rqm_9qm</string>
     <!-- U+20AA: "₪" NEW SHEQEL SIGN -->
-    <string name="keylabel_for_currency">&#x20AA;</string>
-    <string name="keyhintlabel_for_tablet_comma">!</string>
-    <string name="more_keys_for_tablet_comma">!</string>
-    <string name="keyhintlabel_for_period">\?</string>
-    <string name="more_keys_for_period">\?</string>
+    <string name="keyspec_currency">&#x20AA;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ka-rGE/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ka-rGE/donottranslate-more-keys.xml
new file mode 100644
index 0000000..f458c02
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-ka-rGE/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?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">
+    <!-- Label for "switch to alphabetic" key.
+         U+10D0: "ა" GEORGIAN LETTER AN
+         U+10D1: "ბ" GEORGIAN LETTER BAN
+         U+10D2: "გ" GEORGIAN LETTER GAN -->
+    <string name="keylabel_to_alpha">&#x10D0;&#x10D1;&#x10D2;</string>
+    <string name="single_quotes">!text/single_9qm_lqm</string>
+    <string name="double_quotes">!text/double_9qm_lqm</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-ka/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ka/donottranslate-more-keys.xml
deleted file mode 100644
index 8c2add4..0000000
--- a/tools/make-keyboard-text/res/values-ka/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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">
-    <!-- Label for "switch to alphabetic" key.
-         U+10D0: "ა" GEORGIAN LETTER AN
-         U+10D1: "ბ" GEORGIAN LETTER BAN
-         U+10D2: "გ" GEORGIAN LETTER GAN -->
-    <string name="label_to_alpha_key">&#x10D0;&#x10D1;&#x10D2;</string>
-    <string name="single_quotes">!text/single_9qm_lqm</string>
-    <string name="double_quotes">!text/double_9qm_lqm</string>
-</resources>
diff --git a/tools/make-keyboard-text/res/values-kk/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-kk/donottranslate-more-keys.xml
index 0e953ff..5e18128 100644
--- a/tools/make-keyboard-text/res/values-kk/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-kk/donottranslate-more-keys.xml
@@ -19,39 +19,37 @@
 -->
 <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+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="keylabel_for_east_slavic_row1_12">&#x044A;</string>
+    <string name="keyspec_east_slavic_row1_9">&#x0449;</string>
     <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
-    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
+    <string name="keyspec_east_slavic_row2_2">&#x044B;</string>
     <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
-    <string name="keylabel_for_east_slavic_row2_11">&#x044D;</string>
+    <string name="keyspec_east_slavic_row2_11">&#x044D;</string>
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
-    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <string name="keyspec_east_slavic_row3_5">&#x0438;</string>
     <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U
          U+04B1: "ұ" CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE -->
-    <string name="more_keys_for_cyrillic_u">&#x04AF;,&#x04B1;</string>
+    <string name="morekeys_cyrillic_u">&#x04AF;,&#x04B1;</string>
     <!-- U+049B: "қ" CYRILLIC SMALL LETTER KA WITH DESCENDER -->
-    <string name="more_keys_for_cyrillic_ka">&#x049B;</string>
+    <string name="morekeys_cyrillic_ka">&#x049B;</string>
     <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
-    <string name="more_keys_for_cyrillic_ie">&#x0451;</string>
+    <string name="morekeys_cyrillic_ie">&#x0451;</string>
     <!-- U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER -->
-    <string name="more_keys_for_cyrillic_en">&#x04A3;</string>
+    <string name="morekeys_cyrillic_en">&#x04A3;</string>
     <!-- U+0493: "ғ" CYRILLIC SMALL LETTER GHE WITH STROKE -->
-    <string name="more_keys_for_cyrillic_ghe">&#x0493;</string>
+    <string name="morekeys_cyrillic_ghe">&#x0493;</string>
     <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
-    <string name="more_keys_for_east_slavic_row2_1">&#x0456;</string>
+    <string name="morekeys_east_slavic_row2_2">&#x0456;</string>
     <!-- U+04D9: "ә" CYRILLIC SMALL LETTER SCHWA -->
-    <string name="more_keys_for_cyrillic_a">&#x04D9;</string>
+    <string name="morekeys_cyrillic_a">&#x04D9;</string>
     <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O -->
-    <string name="more_keys_for_cyrillic_o">&#x04E9;</string>
+    <string name="morekeys_cyrillic_o">&#x04E9;</string>
     <!-- U+04BB: "һ" CYRILLIC SMALL LETTER SHHA -->
-    <string name="more_keys_for_east_slavic_row2_11">&#x04BB;</string>
+    <string name="morekeys_east_slavic_row2_11">&#x04BB;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <string name="morekeys_cyrillic_soft_sign">&#x044A;</string>
     <!-- Label for "switch to alphabetic" key.
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-km-rKH/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-km-rKH/donottranslate-more-keys.xml
new file mode 100644
index 0000000..edd3753
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-km-rKH/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+1780: "ក" KHMER LETTER KA
+         U+1781: "ខ" KHMER LETTER KHA
+         U+1782: "គ" KHMER LETTER KO -->
+    <string name="keylabel_to_alpha">&#x1780;&#x1781;&#x1782;</string>
+    <!-- U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL -->
+    <string name="morekeys_currency_dollar">&#x17DB;,&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-km/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-km/donottranslate-more-keys.xml
deleted file mode 100644
index c33831c..0000000
--- a/tools/make-keyboard-text/res/values-km/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Label for "switch to alphabetic" key.
-         U+1780: "ក" KHMER LETTER KA
-         U+1781: "ខ" KHMER LETTER KHA
-         U+1782: "គ" KHMER LETTER KO -->
-    <string name="label_to_alpha_key">&#x1780;&#x1781;&#x1782;</string>
-    <!-- U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL -->
-    <string name="more_keys_for_currency_dollar">&#x17DB;,&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
-
-</resources>
diff --git a/tools/make-keyboard-text/res/values-kn-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-kn-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..54b2674
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-kn-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0C85: "ಅ" KANNADA LETTER A
+         U+0C86: "ಆ" KANNADA LETTER AA
+         U+0C87: "ಇ" KANNADA LETTER I -->
+    <string name="keylabel_to_alpha">&#x0C85;&#x0C86;&#x0C87;</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-ky/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ky/donottranslate-more-keys.xml
index 8d8c5fb..3d885bf 100644
--- a/tools/make-keyboard-text/res/values-ky/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ky/donottranslate-more-keys.xml
@@ -19,28 +19,26 @@
 -->
 <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+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="keylabel_for_east_slavic_row1_12">&#x044A;</string>
+    <string name="keyspec_east_slavic_row1_9">&#x0449;</string>
     <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
-    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
+    <string name="keyspec_east_slavic_row2_2">&#x044B;</string>
     <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
-    <string name="keylabel_for_east_slavic_row2_11">&#x044D;</string>
+    <string name="keyspec_east_slavic_row2_11">&#x044D;</string>
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
-    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <string name="keyspec_east_slavic_row3_5">&#x0438;</string>
     <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U -->
-    <string name="more_keys_for_cyrillic_u">&#x04AF;</string>
+    <string name="morekeys_cyrillic_u">&#x04AF;</string>
     <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
-    <string name="more_keys_for_cyrillic_ie">&#x0451;</string>
+    <string name="morekeys_cyrillic_ie">&#x0451;</string>
     <!-- U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER -->
-    <string name="more_keys_for_cyrillic_en">&#x04A3;</string>
+    <string name="morekeys_cyrillic_en">&#x04A3;</string>
     <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O -->
-    <string name="more_keys_for_cyrillic_o">&#x04E9;</string>
+    <string name="morekeys_cyrillic_o">&#x04E9;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <string name="morekeys_cyrillic_soft_sign">&#x044A;</string>
     <!-- Label for "switch to alphabetic" key.
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-lo-rLA/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lo-rLA/donottranslate-more-keys.xml
new file mode 100644
index 0000000..1059930
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-lo-rLA/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0E81: "ກ" LAO LETTER KO
+         U+0E82: "ຂ" LAO LETTER KHO SUNG
+         U+0E84: "ຄ" LAO LETTER KHO TAM -->
+    <string name="keylabel_to_alpha">&#x0E81;&#x0E82;&#x0E84;</string>
+    <!-- U+20AD: "₭" KIP SIGN -->
+    <string name="keyspec_currency">&#x20AD;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-lo/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lo/donottranslate-more-keys.xml
deleted file mode 100644
index 1d8ffa8..0000000
--- a/tools/make-keyboard-text/res/values-lo/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Label for "switch to alphabetic" key.
-         U+0E81: "ກ" LAO LETTER KO
-         U+0E82: "ຂ" LAO LETTER KHO SUNG
-         U+0E84: "ຄ" LAO LETTER KHO TAM -->
-    <string name="label_to_alpha_key">&#x0E81;&#x0E82;&#x0E84;</string>
-    <!-- U+20AD: "₭" KIP SIGN -->
-    <string name="keylabel_for_currency">&#x20AD;</string>
-</resources>
diff --git a/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml
index 7e2b8a0..8b6a1b2 100644
--- a/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -36,7 +36,7 @@
          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>
+    <string name="morekeys_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
@@ -44,7 +44,7 @@
          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>
+    <string name="morekeys_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
@@ -53,7 +53,7 @@
          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>
+    <string name="morekeys_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
@@ -63,47 +63,46 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_n">&#x0146;,&#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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
-    <string name="more_keys_for_d">&#x010F;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_z">&#x017E;,&#x017C;,&#x017A;</string>
     <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
-    <string name="more_keys_for_k">&#x0137;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_g">&#x0123;,&#x011F;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml
index c64e37b..83f83fc 100644
--- a/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -36,7 +36,7 @@
          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>
+    <string name="morekeys_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
@@ -44,7 +44,7 @@
          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>
+    <string name="morekeys_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
@@ -53,7 +53,7 @@
          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>
+    <string name="morekeys_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
@@ -62,47 +62,46 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_n">&#x0146;,&#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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
-    <string name="more_keys_for_d">&#x010F;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_z">&#x017E;,&#x017C;,&#x017A;</string>
     <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
-    <string name="more_keys_for_k">&#x0137;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_g">&#x0123;,&#x011F;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-mk/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-mk/donottranslate-more-keys.xml
index 2db75c8..1ab1354 100644
--- a/tools/make-keyboard-text/res/values-mk/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-mk/donottranslate-more-keys.xml
@@ -19,22 +19,22 @@
 -->
 <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>
+    <string name="keyspec_south_slavic_row1_6">&#x0455;</string>
     <!-- U+045C: "ќ" CYRILLIC SMALL LETTER KJE -->
-    <string name="keylabel_for_south_slavic_row2_11">&#x045C;</string>
+    <string name="keyspec_south_slavic_row2_11">&#x045C;</string>
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
-    <string name="keylabel_for_south_slavic_row3_1">&#x0437;</string>
+    <string name="keyspec_south_slavic_row3_1">&#x0437;</string>
     <!-- U+0453: "ѓ" CYRILLIC SMALL LETTER GJE -->
-    <string name="keylabel_for_south_slavic_row3_8">&#x0453;</string>
+    <string name="keyspec_south_slavic_row3_8">&#x0453;</string>
     <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE -->
-    <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
+    <string name="morekeys_cyrillic_ie">&#x0450;</string>
     <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
-    <string name="more_keys_for_cyrillic_i">&#x045D;</string>
+    <string name="morekeys_cyrillic_i">&#x045D;</string>
     <!-- Label for "switch to alphabetic" key.
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ml-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ml-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..7a2aeed
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-ml-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0D05: "അ" MALAYALAM LETTER A -->
+    <string name="keylabel_to_alpha">&#x0D05;</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-mn-rMN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-mn-rMN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..3fafb39
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-mn-rMN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?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">
+    <!-- Label for "switch to alphabetic" key.
+         U+0410: "А" CYRILLIC CAPITAL LETTER A
+         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
+         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
+    <!-- U+20AE: "₮" TUGRIK SIGN -->
+    <string name="keyspec_currency">&#x20AE;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-mn/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-mn/donottranslate-more-keys.xml
deleted file mode 100644
index a7f3666..0000000
--- a/tools/make-keyboard-text/res/values-mn/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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">
-    <!-- Label for "switch to alphabetic" key.
-         U+0410: "А" CYRILLIC CAPITAL LETTER A
-         U+0411: "Б" CYRILLIC CAPITAL LETTER BE
-         U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
-    <!-- U+20AE: "₮" TUGRIK SIGN -->
-    <string name="keylabel_for_currency">&#x20AE;</string>
-</resources>
diff --git a/tools/make-keyboard-text/res/values-mr-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-mr-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..19db16d
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-mr-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA
+         U+0917: "ग" DEVANAGARI LETTER GA -->
+    <string name="keylabel_to_alpha">&#x0915;&#x0916;&#x0917;</string>
+    <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
+    <string name="keyspec_symbols_1">&#x0967;</string>
+    <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <string name="keyspec_symbols_2">&#x0968;</string>
+    <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <string name="keyspec_symbols_3">&#x0969;</string>
+    <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <string name="keyspec_symbols_4">&#x096A;</string>
+    <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <string name="keyspec_symbols_5">&#x096B;</string>
+    <!-- U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <string name="keyspec_symbols_6">&#x096C;</string>
+    <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <string name="keyspec_symbols_7">&#x096D;</string>
+    <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <string name="keyspec_symbols_8">&#x096E;</string>
+    <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <string name="keyspec_symbols_9">&#x096F;</string>
+    <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
+    <string name="keyspec_symbols_0">&#x0966;</string>
+    <!-- Label for "switch to symbols" key. -->
+    <string name="keylabel_to_symbol">?&#x0967;&#x0968;&#x0969;</string>
+    <string name="additional_morekeys_symbols_1">1</string>
+    <string name="additional_morekeys_symbols_2">2</string>
+    <string name="additional_morekeys_symbols_3">3</string>
+    <string name="additional_morekeys_symbols_4">4</string>
+    <string name="additional_morekeys_symbols_5">5</string>
+    <string name="additional_morekeys_symbols_6">6</string>
+    <string name="additional_morekeys_symbols_7">7</string>
+    <string name="additional_morekeys_symbols_8">8</string>
+    <string name="additional_morekeys_symbols_9">9</string>
+    <string name="additional_morekeys_symbols_0">0</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml
new file mode 100644
index 0000000..f408f58
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-my-rMM/donottranslate-more-keys.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+1000: "က" MYANMAR LETTER KA
+         U+1001: "ခ" MYANMAR LETTER KHA
+         U+1002: "ဂ" MYANMAR LETTER GA -->
+    <string name="keylabel_to_alpha">&#x1000;&#x1001;&#x1002;</string>
+    <!-- U+104A: "၊" MYANMAR SIGN LITTLE SECTION
+         U+104B: "။" MYANMAR SIGN SECTION -->
+    <string name="keyspec_tablet_comma">&#x104A;</string>
+    <string name="morekeys_tablet_comma">"\\,"</string>
+    <string name="keyspec_tablet_period">&#x104B;</string>
+    <string name="keyspec_period">&#x104B;</string>
+    <string name="keyhintlabel_period">&#x104A;</string>
+    <string name="morekeys_punctuation">"!autoColumnOrder!9,&#x104A;,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&amp;"</string>
+    <string name="morekeys_tablet_punctuation">"!autoColumnOrder!8,.,',#,),(,/,;,@,...,:,-,\",+,\\%,&amp;"</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml
index 2cecb5e..c5307a9 100644
--- a/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml
@@ -24,7 +24,7 @@
          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>
+    <string name="morekeys_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
@@ -32,7 +32,7 @@
          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>
+    <string name="morekeys_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
@@ -40,23 +40,23 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="keyspec_nordic_row1_11">&#x00E5;</string>
     <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
-    <string name="keylabel_for_nordic_row2_10">&#x00F8;</string>
+    <string name="keyspec_nordic_row2_10">&#x00F8;</string>
     <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
-    <string name="keylabel_for_nordic_row2_11">&#x00E6;</string>
+    <string name="keyspec_nordic_row2_11">&#x00E6;</string>
     <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
-    <string name="more_keys_for_nordic_row2_10">&#x00F6;</string>
+    <string name="morekeys_nordic_row2_10">&#x00F6;</string>
     <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
-    <string name="more_keys_for_nordic_row2_11">&#x00E4;</string>
+    <string name="morekeys_nordic_row2_11">&#x00E4;</string>
     <string name="single_quotes">!text/single_9qm_rqm</string>
     <string name="double_quotes">!text/double_9qm_rqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
new file mode 100644
index 0000000..97c50d1
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0915: "क" DEVANAGARI LETTER KA
+         U+0916: "ख" DEVANAGARI LETTER KHA
+         U+0917: "ग" DEVANAGARI LETTER GA -->
+    <string name="keylabel_to_alpha">&#x0915;&#x0916;&#x0917;</string>
+    <!-- U+0967: "१" DEVANAGARI DIGIT ONE -->
+    <string name="keyspec_symbols_1">&#x0967;</string>
+    <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <string name="keyspec_symbols_2">&#x0968;</string>
+    <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <string name="keyspec_symbols_3">&#x0969;</string>
+    <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <string name="keyspec_symbols_4">&#x096A;</string>
+    <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <string name="keyspec_symbols_5">&#x096B;</string>
+    <!-- U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <string name="keyspec_symbols_6">&#x096C;</string>
+    <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <string name="keyspec_symbols_7">&#x096D;</string>
+    <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <string name="keyspec_symbols_8">&#x096E;</string>
+    <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <string name="keyspec_symbols_9">&#x096F;</string>
+    <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
+    <string name="keyspec_symbols_0">&#x0966;</string>
+    <!-- Label for "switch to symbols" key. -->
+    <string name="keylabel_to_symbol">?&#x0967;&#x0968;&#x0969;</string>
+    <string name="additional_morekeys_symbols_1">1</string>
+    <string name="additional_morekeys_symbols_2">2</string>
+    <string name="additional_morekeys_symbols_3">3</string>
+    <string name="additional_morekeys_symbols_4">4</string>
+    <string name="additional_morekeys_symbols_5">5</string>
+    <string name="additional_morekeys_symbols_6">6</string>
+    <string name="additional_morekeys_symbols_7">7</string>
+    <string name="additional_morekeys_symbols_8">8</string>
+    <string name="additional_morekeys_symbols_9">9</string>
+    <string name="additional_morekeys_symbols_0">0</string>
+    <!-- U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN -->
+    <string name="keyspec_currency">&#x0930;&#x0941;&#x002E;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-ne/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ne/donottranslate-more-keys.xml
deleted file mode 100644
index 9205e53..0000000
--- a/tools/make-keyboard-text/res/values-ne/donottranslate-more-keys.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Label for "switch to alphabetic" key.
-         U+0915: "क" DEVANAGARI LETTER KA
-         U+0916: "ख" DEVANAGARI LETTER KHA
-         U+0917: "ग" DEVANAGARI LETTER GA -->
-    <string name="label_to_alpha_key">&#x0915;&#x0916;&#x0917;</string>
-    <!-- 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>
-    <!-- Label for "switch to symbols" key. -->
-    <string name="label_to_symbol_key">\?&#x0967;&#x0968;&#x0969;</string>
-    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-         part because it'll be appended by the code. -->
-    <string name="label_to_symbol_with_microphone_key">&#x0967;&#x0968;&#x0969;</string>
-    <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>
-    <!-- U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN -->
-    <string name="keylabel_for_currency">&#x0930;&#x0941;&#x002E;</string>
-</resources>
diff --git a/tools/make-keyboard-text/res/values-nl/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-nl/donottranslate-more-keys.xml
index e5d8295..f9a26c5 100644
--- a/tools/make-keyboard-text/res/values-nl/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-nl/donottranslate-more-keys.xml
@@ -26,7 +26,7 @@
          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>
+    <string name="morekeys_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
@@ -34,7 +34,7 @@
          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>
+    <string name="morekeys_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
@@ -42,7 +42,7 @@
          U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
          U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
          U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EC;,&#x00EE;,&#x012F;,&#x012B;,&#x0133;</string>
+    <string name="morekeys_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
@@ -51,18 +51,18 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_n">&#x00F1;,&#x0144;</string>
     <!-- U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_y">&#x0133;</string>
+    <string name="morekeys_y">&#x0133;</string>
     <string name="single_quotes">!text/single_9qm_rqm</string>
     <string name="double_quotes">!text/double_9qm_rqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-pl/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-pl/donottranslate-more-keys.xml
index b5cf6a0..8a87db4 100644
--- a/tools/make-keyboard-text/res/values-pl/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-pl/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -35,7 +35,7 @@
          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>
+    <string name="morekeys_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
@@ -44,24 +44,24 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_z">&#x017C;,&#x017A;,&#x017E;</string>
     <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
-    <string name="more_keys_for_l">&#x0142;</string>
+    <string name="morekeys_l">&#x0142;</string>
     <string name="single_quotes">!text/single_9qm_rqm</string>
     <string name="double_quotes">!text/double_9qm_rqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-pt/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-pt/donottranslate-more-keys.xml
index 0c9065f..f3f667e 100644
--- a/tools/make-keyboard-text/res/values-pt/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-pt/donottranslate-more-keys.xml
@@ -26,7 +26,7 @@
          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>
+    <string name="morekeys_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
@@ -34,14 +34,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -51,15 +51,15 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x00E7;,&#x010D;,&#x0107;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-rm/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-rm/donottranslate-more-keys.xml
index aa0d7f8..2df401e 100644
--- a/tools/make-keyboard-text/res/values-rm/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-rm/donottranslate-more-keys.xml
@@ -25,5 +25,5 @@
          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>
+    <string name="morekeys_o">&#x00F2;,&#x00F3;,&#x00F6;,&#x00F4;,&#x00F5;,&#x0153;,&#x00F8;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ro/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ro/donottranslate-more-keys.xml
index f399eb2..6286c7b 100644
--- a/tools/make-keyboard-text/res/values-ro/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ro/donottranslate-more-keys.xml
@@ -27,21 +27,21 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_s">&#x0219;,&#x00DF;,&#x015B;,&#x0161;</string>
     <!-- U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW -->
-    <string name="more_keys_for_t">&#x021B;</string>
+    <string name="morekeys_t">&#x021B;</string>
     <string name="single_quotes">!text/single_9qm_rqm</string>
     <string name="double_quotes">!text/double_9qm_rqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ru/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ru/donottranslate-more-keys.xml
index f62c90f..2093ba8 100644
--- a/tools/make-keyboard-text/res/values-ru/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ru/donottranslate-more-keys.xml
@@ -19,24 +19,22 @@
 -->
 <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+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="keylabel_for_east_slavic_row1_12">&#x044A;</string>
+    <string name="keyspec_east_slavic_row1_9">&#x0449;</string>
     <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
-    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
+    <string name="keyspec_east_slavic_row2_2">&#x044B;</string>
     <!-- U+044D: "э" CYRILLIC SMALL LETTER E -->
-    <string name="keylabel_for_east_slavic_row2_11">&#x044D;</string>
+    <string name="keyspec_east_slavic_row2_11">&#x044D;</string>
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
-    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <string name="keyspec_east_slavic_row3_5">&#x0438;</string>
     <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
-    <string name="more_keys_for_cyrillic_ie">&#x0451;</string>
+    <string name="morekeys_cyrillic_ie">&#x0451;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <string name="morekeys_cyrillic_soft_sign">&#x044A;</string>
     <!-- Label for "switch to alphabetic" key.
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-si-rLK/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-si-rLK/donottranslate-more-keys.xml
new file mode 100644
index 0000000..89c9195
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-si-rLK/donottranslate-more-keys.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0D85: "අ" SINHALA LETTER AYANNA
+         U+0D86: "ආ" SINHALA LETTER AAYANNA -->
+    <string name="keylabel_to_alpha">&#x0D85;,&#x0D86;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml
index 2ed538e..a05b703 100644
--- a/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -36,7 +36,7 @@
          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>
+    <string name="morekeys_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
@@ -44,7 +44,7 @@
          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>
+    <string name="morekeys_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
@@ -53,7 +53,7 @@
          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>
+    <string name="morekeys_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
@@ -62,48 +62,47 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_n">&#x0148;,&#x0146;,&#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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
-    <string name="more_keys_for_d">&#x010F;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_z">&#x017E;,&#x017C;,&#x017A;</string>
     <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
-    <string name="more_keys_for_k">&#x0137;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_g">&#x0123;,&#x011F;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-sl/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sl/donottranslate-more-keys.xml
index 1e5d1d7..d529589 100644
--- a/tools/make-keyboard-text/res/values-sl/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sl/donottranslate-more-keys.xml
@@ -19,14 +19,14 @@
 -->
 <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>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x010D;,&#x0107;</string>
     <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
-    <string name="more_keys_for_d">&#x0111;</string>
+    <string name="morekeys_d">&#x0111;</string>
     <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
-    <string name="more_keys_for_z">&#x017E;</string>
+    <string name="morekeys_z">&#x017E;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-sr/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sr/donottranslate-more-keys.xml
index c00d2a6..870a713 100644
--- a/tools/make-keyboard-text/res/values-sr/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sr/donottranslate-more-keys.xml
@@ -23,37 +23,37 @@
          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>
+    <string name="morekeys_s">&#x0161;,&#x00DF;,&#x015B;</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>
+    <string name="morekeys_c">&#x010D;,&#x00E7;,&#x0107;</string>
          U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-    <string name="more_keys_for_d">&#x010F;</string>
+    <string name="morekeys_d">&#x010F;</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>
+    <string name="morekeys_z">&#x017E;,&#x017A;,&#x017C;</string>
          END: More keys definitions for Serbian (Latin) -->
     <!-- BEGIN: More keys definitions for Serbian (Cyrillic) -->
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
-    <string name="keylabel_for_south_slavic_row1_6">&#x0437;</string>
+    <string name="keyspec_south_slavic_row1_6">&#x0437;</string>
     <!-- U+045B: "ћ" CYRILLIC SMALL LETTER TSHE -->
-    <string name="keylabel_for_south_slavic_row2_11">&#x045B;</string>
+    <string name="keyspec_south_slavic_row2_11">&#x045B;</string>
     <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE -->
-    <string name="keylabel_for_south_slavic_row3_1">&#x0455;</string>
+    <string name="keyspec_south_slavic_row3_1">&#x0455;</string>
     <!-- U+0452: "ђ" CYRILLIC SMALL LETTER DJE -->
-    <string name="keylabel_for_south_slavic_row3_8">&#x0452;</string>
+    <string name="keyspec_south_slavic_row3_8">&#x0452;</string>
     <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE -->
-    <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
+    <string name="morekeys_cyrillic_ie">&#x0450;</string>
     <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
-    <string name="more_keys_for_cyrillic_i">&#x045D;</string>
+    <string name="morekeys_cyrillic_i">&#x045D;</string>
     <!-- END: More keys definitions for Serbian (Cyrillic) -->
     <!-- Label for "switch to alphabetic" key.
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
diff --git a/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
index 2472364..ead5140 100644
--- a/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
@@ -23,72 +23,71 @@
          U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
          U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
          U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE -->
-    <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x0105;,&#x00E3;</string>
+    <string name="morekeys_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x0105;,&#x00E3;</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>
+    <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
     <!-- U+00F0: "ð" LATIN SMALL LETTER ETH
          U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
-    <string name="more_keys_for_d">&#x00F0;,&#x010F;</string>
+    <string name="morekeys_d">&#x00F0;,&#x010F;</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 -->
-    <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;</string>
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;</string>
     <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
          U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
          U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS -->
-    <string name="more_keys_for_i">&#x00ED;,&#x00EC;,&#x00EE;,&#x00EF;</string>
+    <string name="morekeys_i">&#x00ED;,&#x00EC;,&#x00EE;,&#x00EF;</string>
     <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
-    <string name="more_keys_for_l">&#x0142;</string>
+    <string name="morekeys_l">&#x0142;</string>
     <!-- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
          U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
          U+0148: "ň" LATIN SMALL LETTER N WITH CARON -->
-    <string name="more_keys_for_n">&#x0144;,&#x00F1;,&#x0148;</string>
+    <string name="morekeys_n">&#x0144;,&#x00F1;,&#x0148;</string>
     <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
          U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
-    <string name="more_keys_for_o">&#x00F3;,&#x00F2;,&#x00F4;,&#x00F5;,&#x014D;</string>
+    <string name="morekeys_o">&#x00F3;,&#x00F2;,&#x00F4;,&#x00F5;,&#x014D;</string>
     <!-- U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
-    <string name="more_keys_for_r">&#x0159;</string>
+    <string name="morekeys_r">&#x0159;</string>
     <!-- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
          U+0161: "š" LATIN SMALL LETTER S WITH CARON
          U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
          U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
-    <string name="more_keys_for_s">&#x015B;,&#x0161;,&#x015F;,&#x00DF;</string>
+    <string name="morekeys_s">&#x015B;,&#x0161;,&#x015F;,&#x00DF;</string>
     <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON
          U+00FE: "þ" LATIN SMALL LETTER THORN -->
-    <string name="more_keys_for_t">&#x0165;,&#x00FE;</string>
+    <string name="morekeys_t">&#x0165;,&#x00FE;</string>
     <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
          U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
          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">&#x00FC;,&#x00FA;,&#x00F9;,&#x00FB;,&#x016B;</string>
+    <string name="morekeys_u">&#x00FC;,&#x00FA;,&#x00F9;,&#x00FB;,&#x016B;</string>
     <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
-    <string name="more_keys_for_y">&#x00FD;,&#x00FF;,&#x00FC;</string>
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="morekeys_y">&#x00FD;,&#x00FF;</string>
     <!-- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
          U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
          U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
-    <string name="more_keys_for_z">&#x017A;,&#x017E;,&#x017C;</string>
+    <string name="morekeys_z">&#x017A;,&#x017E;,&#x017C;</string>
     <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
-    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <string name="keyspec_nordic_row1_11">&#x00E5;</string>
     <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
-    <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
+    <string name="keyspec_nordic_row2_11">&#x00E4;</string>
     <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
-    <string name="more_keys_for_nordic_row2_11">&#x00E6;</string>
+    <string name="morekeys_nordic_row2_11">&#x00E6;</string>
     <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
-    <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
+    <string name="keyspec_nordic_row2_10">&#x00F6;</string>
     <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
          U+0153: "œ" LATIN SMALL LIGATURE OE -->
-    <string name="more_keys_for_nordic_row2_10">&#x00F8;,&#x0153;</string>
+    <string name="morekeys_nordic_row2_10">&#x00F8;,&#x0153;</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
     <string name="double_angle_quotes">!text/double_raqm_laqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-sw/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sw/donottranslate-more-keys.xml
index 968a80c..e06ae21 100644
--- a/tools/make-keyboard-text/res/values-sw/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sw/donottranslate-more-keys.xml
@@ -18,7 +18,7 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- This is the same as English except more_keys_for_g. -->
+    <!-- This is the same as English except morekeys_g. -->
     <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
          U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
          U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
@@ -27,19 +27,19 @@
          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>
+    <string name="morekeys_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;,&#x0113;</string>
+    <string name="morekeys_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;</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>
+    <string name="morekeys_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
@@ -48,18 +48,18 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_u">&#x00FB;,&#x00FC;,&#x00F9;,&#x00FA;,&#x016B;</string>
     <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
-    <string name="more_keys_for_s">&#x00DF;</string>
+    <string name="morekeys_s">&#x00DF;</string>
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
-    <string name="more_keys_for_n">&#x00F1;</string>
+    <string name="morekeys_n">&#x00F1;</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
-    <string name="more_keys_for_c">&#x00E7;</string>
-    <string name="more_keys_for_g">g\'</string>
+    <string name="morekeys_c">&#x00E7;</string>
+    <string name="morekeys_g">g\'</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ta-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ta-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..547c8e1
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-ta-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0BA4: "த" TAMIL LETTER TA
+         U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I
+         U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA -->
+    <string name="keylabel_to_alpha">&#x0BA4;&#x0BAE;&#x0BBF;&#x0BB4;&#x0BCD;</string>
+    <!-- U+0BF9: "௹" TAMIL RUPEE SIGN -->
+    <string name="keyspec_currency">&#x0BF9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-te-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-te-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..6518dea
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-te-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0C05: "అ" TELUGU LETTER A
+         U+0C06: "ఆ" TELUGU LETTER AA
+         U+0C07: "ఇ" TELUGU LETTER I -->
+    <string name="keylabel_to_alpha">&#x0C05;&#x0C06;&#x0C07;</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-th/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-th/donottranslate-more-keys.xml
index 070c915..3329cf2 100644
--- a/tools/make-keyboard-text/res/values-th/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-th/donottranslate-more-keys.xml
@@ -22,7 +22,7 @@
          U+0E01: "ก" THAI CHARACTER KO KAI
          U+0E02: "ข" THAI CHARACTER KHO KHAI
          U+0E04: "ค" THAI CHARACTER KHO KHWAI -->
-    <string name="label_to_alpha_key">&#x0E01;&#x0E02;&#x0E04;</string>
+    <string name="keylabel_to_alpha">&#x0E01;&#x0E02;&#x0E04;</string>
     <!-- U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT -->
-    <string name="keylabel_for_currency">&#x0E3F;</string>
+    <string name="keyspec_currency">&#x0E3F;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-tl/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-tl/donottranslate-more-keys.xml
index 383d55c..cf25b6f 100644
--- a/tools/make-keyboard-text/res/values-tl/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-tl/donottranslate-more-keys.xml
@@ -28,7 +28,7 @@
          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>
+    <string name="morekeys_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
@@ -36,14 +36,14 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -53,18 +53,18 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml
index 1161811..db1108f 100644
--- a/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-tr/donottranslate-more-keys.xml
@@ -19,7 +19,7 @@
 -->
 <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>
+    <string name="morekeys_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
@@ -27,7 +27,7 @@
          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>
+    <string name="morekeys_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
@@ -36,22 +36,22 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_s">&#x015F;,&#x00DF;,&#x015B;,&#x0161;</string>
     <!-- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
-    <string name="more_keys_for_g">&#x011F;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_c">&#x00E7;,&#x0107;,&#x010D;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-uk/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-uk/donottranslate-more-keys.xml
index 6ee34e3..1f72d06 100644
--- a/tools/make-keyboard-text/res/values-uk/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-uk/donottranslate-more-keys.xml
@@ -19,28 +19,26 @@
 -->
 <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+0457: "ї" CYRILLIC SMALL LETTER YI -->
-    <string name="keylabel_for_east_slavic_row1_12">&#x0457;</string>
+    <string name="keyspec_east_slavic_row1_9">&#x0449;</string>
     <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
-    <string name="keylabel_for_east_slavic_row2_1">&#x0456;</string>
+    <string name="keyspec_east_slavic_row2_2">&#x0456;</string>
     <!-- U+0454: "є" CYRILLIC SMALL LETTER UKRAINIAN IE -->
-    <string name="keylabel_for_east_slavic_row2_11">&#x0454;</string>
+    <string name="keyspec_east_slavic_row2_11">&#x0454;</string>
     <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
-    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <string name="keyspec_east_slavic_row3_5">&#x0438;</string>
     <!-- U+0491: "ґ" CYRILLIC SMALL LETTER GHE WITH UPTURN -->
-    <string name="more_keys_for_cyrillic_ghe">&#x0491;</string>
+    <string name="morekeys_cyrillic_ghe">&#x0491;</string>
     <!-- U+0457: "ї" CYRILLIC SMALL LETTER YI -->
-    <string name="more_keys_for_east_slavic_row2_1">&#x0457;</string>
+    <string name="morekeys_east_slavic_row2_2">&#x0457;</string>
     <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
-    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+    <string name="morekeys_cyrillic_soft_sign">&#x044A;</string>
     <!-- U+20B4: "₴" HRYVNIA SIGN -->
-    <string name="keylabel_for_currency">&#x20B4;</string>
+    <string name="keyspec_currency">&#x20B4;</string>
     <!-- Label for "switch to alphabetic" key.
          U+0410: "А" CYRILLIC CAPITAL LETTER A
          U+0411: "Б" CYRILLIC CAPITAL LETTER BE
          U+0412: "В" CYRILLIC CAPITAL LETTER VE -->
-    <string name="label_to_alpha_key">&#x0410;&#x0411;&#x0412;</string>
+    <string name="keylabel_to_alpha">&#x0410;&#x0411;&#x0412;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-vi/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-vi/donottranslate-more-keys.xml
index f01f068..aa57170 100644
--- a/tools/make-keyboard-text/res/values-vi/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-vi/donottranslate-more-keys.xml
@@ -35,7 +35,7 @@
          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>
+    <string name="morekeys_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
@@ -47,13 +47,13 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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
@@ -71,7 +71,7 @@
          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>
+    <string name="morekeys_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
@@ -83,15 +83,15 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_y">&#x1EF3;,&#x00FD;,&#x1EF7;,&#x1EF9;,&#x1EF5;</string>
     <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
-    <string name="more_keys_for_d">&#x0111;</string>
+    <string name="morekeys_d">&#x0111;</string>
     <!-- U+20AB: "₫" DONG SIGN -->
-    <string name="keylabel_for_currency">&#x20AB;</string>
+    <string name="keyspec_currency">&#x20AB;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml
index 1917915..2c5df0c 100644
--- a/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-zu/donottranslate-more-keys.xml
@@ -27,38 +27,38 @@
          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
+    <string name="morekeys_a">&#x00E0;,&#x00E1;,&#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+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
-    <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;</string>
-    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+    <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#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+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
+    <string name="morekeys_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x012B;,&#x00EC;</string>
+    <!-- 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+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
+    <string name="morekeys_o">&#x00F3;,&#x00F4;,&#x00F6;,&#x00F2;,&#x0153;,&#x00F8;,&#x014D;,&#x00F5;</string>
+    <!-- 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+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>
+    <string name="morekeys_u">&#x00FA;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
     <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
-    <string name="more_keys_for_s">&#x00DF;</string>
+    <string name="morekeys_s">&#x00DF;</string>
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
-    <string name="more_keys_for_n">&#x00F1;</string>
+    <string name="morekeys_n">&#x00F1;</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
-    <string name="more_keys_for_c">&#x00E7;</string>
+    <string name="morekeys_c">&#x00E7;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml
index eb984a4..f20c7f6 100644
--- a/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml
@@ -29,7 +29,7 @@
          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>
+    <string name="morekeys_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#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
@@ -39,7 +39,7 @@
          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>
+    <string name="morekeys_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
@@ -50,7 +50,7 @@
          U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
          U+0131: "ı" LATIN SMALL LETTER DOTLESS I
          U+0133: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0129;,&#x012B;,&#x012D;,&#x012F;,&#x0131;,&#x0133;</string>
+    <string name="morekeys_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
@@ -62,7 +62,7 @@
          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>
+    <string name="morekeys_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
@@ -73,67 +73,67 @@
          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>
+    <string name="morekeys_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>
+    <string name="morekeys_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: "ŉ" 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>
+    <string name="morekeys_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>
+    <string name="morekeys_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: "ĳ" LATIN SMALL LIGATURE IJ -->
-    <string name="more_keys_for_y">&#x00FD;,&#x0177;,&#x00FF;,&#x0133;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_g">&#x011D;,&#x011F;,&#x0121;,&#x0123;</string>
     <!-- U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX -->
-    <string name="more_keys_for_h">&#x0125;</string>
+    <string name="morekeys_h">&#x0125;</string>
     <!-- U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX -->
-    <string name="more_keys_for_j">&#x0135;</string>
+    <string name="morekeys_j">&#x0135;</string>
     <!-- U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX -->
-    <string name="more_keys_for_w">&#x0175;</string>
+    <string name="morekeys_w">&#x0175;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
index 3c59b4b..4b9ca16 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -18,53 +18,64 @@
 */
 -->
 <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_row1_12"></string>
-    <string name="keylabel_for_east_slavic_row2_1"></string>
-    <string name="keylabel_for_east_slavic_row2_11"></string>
-    <string name="keylabel_for_east_slavic_row3_5"></string>
-    <string name="more_keys_for_cyrillic_u"></string>
-    <string name="more_keys_for_cyrillic_ka"></string>
-    <string name="more_keys_for_cyrillic_en"></string>
-    <string name="more_keys_for_cyrillic_ghe"></string>
-    <string name="more_keys_for_east_slavic_row2_1"></string>
-    <string name="more_keys_for_cyrillic_a"></string>
-    <string name="more_keys_for_cyrillic_o"></string>
-    <string name="more_keys_for_cyrillic_soft_sign"></string>
-    <string name="more_keys_for_east_slavic_row2_11"></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="morekeys_a"></string>
+    <string name="morekeys_e"></string>
+    <string name="morekeys_i"></string>
+    <string name="morekeys_o"></string>
+    <string name="morekeys_u"></string>
+    <string name="morekeys_s"></string>
+    <string name="morekeys_n"></string>
+    <string name="morekeys_c"></string>
+    <string name="morekeys_y"></string>
+    <string name="morekeys_d"></string>
+    <string name="morekeys_r"></string>
+    <string name="morekeys_t"></string>
+    <string name="morekeys_z"></string>
+    <string name="morekeys_k"></string>
+    <string name="morekeys_l"></string>
+    <string name="morekeys_g"></string>
+    <string name="morekeys_v"></string>
+    <string name="morekeys_h"></string>
+    <string name="morekeys_j"></string>
+    <string name="morekeys_w"></string>
+    <string name="morekeys_q"></string>
+    <string name="morekeys_x"></string>
+    <string name="keyspec_q">q</string>
+    <string name="keyspec_w">w</string>
+    <string name="keyspec_y">y</string>
+    <string name="keyspec_x">x</string>
+    <string name="keyspec_nordic_row1_11"></string>
+    <string name="keyspec_nordic_row2_10"></string>
+    <string name="keyspec_nordic_row2_11"></string>
+    <string name="morekeys_nordic_row2_10"></string>
+    <string name="morekeys_nordic_row2_11"></string>
+    <string name="keyspec_east_slavic_row1_9"></string>
+    <string name="keyspec_east_slavic_row2_2"></string>
+    <string name="keyspec_east_slavic_row2_11"></string>
+    <string name="keyspec_east_slavic_row3_5"></string>
+    <string name="morekeys_east_slavic_row2_2"></string>
+    <string name="morekeys_east_slavic_row2_11"></string>
+    <string name="morekeys_cyrillic_u"></string>
+    <string name="morekeys_cyrillic_ka"></string>
+    <string name="morekeys_cyrillic_en"></string>
+    <string name="morekeys_cyrillic_ghe"></string>
+    <string name="morekeys_cyrillic_a"></string>
+    <string name="morekeys_cyrillic_o"></string>
+    <string name="morekeys_cyrillic_i"></string>
+    <string name="morekeys_cyrillic_ie"></string>
+    <string name="morekeys_cyrillic_soft_sign"></string>
+    <string name="keyspec_south_slavic_row1_6"></string>
+    <string name="keyspec_south_slavic_row2_11"></string>
+    <string name="keyspec_south_slavic_row3_1"></string>
+    <string name="keyspec_south_slavic_row3_8"></string>
+    <string name="keyspec_swiss_row1_11"></string>
+    <string name="keyspec_swiss_row2_10"></string>
+    <string name="keyspec_swiss_row2_11"></string>
+    <string name="morekeys_swiss_row1_11"></string>
+    <string name="morekeys_swiss_row2_10"></string>
+    <string name="morekeys_swiss_row2_11"></string>
     <!-- Label for "switch to alphabetic" key. -->
-    <string name="label_to_alpha_key">ABC</string>
+    <string name="keylabel_to_alpha">ABC</string>
     <string name="single_quotes">!text/single_lqm_rqm</string>
     <string name="double_quotes">!text/double_lqm_rqm</string>
     <string name="single_angle_quotes">!text/single_laqm_raqm</string>
@@ -74,144 +85,146 @@
          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="keylabel_for_currency">$</string>
-    <string name="more_keys_for_currency">$,&#x00A2;,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(,),#,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
+    <string name="morekeys_currency_dollar">&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
+    <string name="keyspec_currency">$</string>
+    <string name="morekeys_currency">$,&#x00A2;,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
+    <string name="morekeys_punctuation">"!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&amp;"</string>
+    <string name="morekeys_tablet_punctuation">"!autoColumnOrder!7,\\,,',#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,@,:,-,\",+,\\%,&amp;"</string>
+    <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+    <string name="keyspec_spanish_row2_10">&#x00F1;</string>
     <!-- U+2020: "†" DAGGER
          U+2021: "‡" DOUBLE DAGGER
          U+2605: "★" BLACK STAR -->
-    <string name="more_keys_for_star">&#x2020;,&#x2021;,&#x2605;</string>
+    <string name="morekeys_star">&#x2020;,&#x2021;,&#x2605;</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>
+    <string name="morekeys_bullet">&#x266A;,&#x2665;,&#x2660;,&#x2666;,&#x2663;</string>
     <!-- U+00B1: "±" PLUS-MINUS SIGN -->
-    <string name="more_keys_for_plus">&#x00B1;</string>
-    <!-- The all letters need to be mirrored are found at
-         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
-    <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;,{,[</string>
-    <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;,},]</string>
-    <!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-         U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-         U+2264: "≤" LESS-THAN OR EQUAL TO
-         U+2265: "≥" GREATER-THAN EQUAL TO
-         U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-         U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
-    <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;</string>
-    <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;</string>
-    <string name="more_keys_for_arabic_diacritics"></string>
-    <string name="keyhintlabel_for_arabic_diacritics"></string>
-    <string name="keylabel_for_symbols_1">1</string>
-    <string name="keylabel_for_symbols_2">2</string>
-    <string name="keylabel_for_symbols_3">3</string>
-    <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="morekeys_plus">&#x00B1;</string>
+    <string name="morekeys_left_parenthesis">!fixedColumnOrder!3,!text/keyspecs_left_parenthesis_more_keys</string>
+    <string name="morekeys_right_parenthesis">!fixedColumnOrder!3,!text/keyspecs_right_parenthesis_more_keys</string>
+    <string name="morekeys_less_than">!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote</string>
+    <string name="morekeys_greater_than">!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote</string>
+    <string name="morekeys_arabic_diacritics"></string>
+    <string name="keyspec_symbols_1">1</string>
+    <string name="keyspec_symbols_2">2</string>
+    <string name="keyspec_symbols_3">3</string>
+    <string name="keyspec_symbols_4">4</string>
+    <string name="keyspec_symbols_5">5</string>
+    <string name="keyspec_symbols_6">6</string>
+    <string name="keyspec_symbols_7">7</string>
+    <string name="keyspec_symbols_8">8</string>
+    <string name="keyspec_symbols_9">9</string>
+    <string name="keyspec_symbols_0">0</string>
     <!-- Label for "switch to symbols" key. -->
-    <string name="label_to_symbol_key">\?123</string>
-    <!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
-         part because it'll be appended by the code. -->
-    <string name="label_to_symbol_with_microphone_key">123</string>
-    <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>
+    <string name="keylabel_to_symbol">?123</string>
+    <string name="additional_morekeys_symbols_1"></string>
+    <string name="additional_morekeys_symbols_2"></string>
+    <string name="additional_morekeys_symbols_3"></string>
+    <string name="additional_morekeys_symbols_4"></string>
+    <string name="additional_morekeys_symbols_5"></string>
+    <string name="additional_morekeys_symbols_6"></string>
+    <string name="additional_morekeys_symbols_7"></string>
+    <string name="additional_morekeys_symbols_8"></string>
+    <string name="additional_morekeys_symbols_9"></string>
+    <string name="additional_morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_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>
+    <string name="morekeys_symbols_3">&#x00B3;,&#x00BE;,&#x215C;</string>
     <!-- U+2074: "⁴" SUPERSCRIPT FOUR -->
-    <string name="more_keys_for_symbols_4">&#x2074;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_symbols_5">&#x215D;</string>
+    <string name="morekeys_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>
+    <string name="morekeys_symbols_7">&#x215E;</string>
+    <string name="morekeys_symbols_8"></string>
+    <string name="morekeys_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="keylabel_for_comma">,</string>
-    <string name="more_keys_for_comma"></string>
-    <string name="keylabel_for_symbols_question">\?</string>
-    <string name="keylabel_for_symbols_semicolon">;</string>
-    <string name="keylabel_for_symbols_percent">%</string>
+    <string name="morekeys_symbols_0">&#x207F;,&#x2205;</string>
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
+         U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+         U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+         U+2264: "≤" LESS-THAN OR EQUAL TO
+         U+2265: "≥" GREATER-THAN EQUAL TO
+         U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+         U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+    <string name="keyspec_left_parenthesis">(</string>
+    <string name="keyspec_right_parenthesis">)</string>
+    <string name="keyspec_left_square_bracket">[</string>
+    <string name="keyspec_right_square_bracket">]</string>
+    <string name="keyspec_left_curly_bracket">{</string>
+    <string name="keyspec_right_curly_bracket">}</string>
+    <string name="keyspec_less_than">&lt;</string>
+    <string name="keyspec_greater_than">&gt;</string>
+    <string name="keyspec_less_than_equal">&#x2264;</string>
+    <string name="keyspec_greater_than_equal">&#x2265;</string>
+    <string name="keyspec_left_double_angle_quote">&#x00AB;</string>
+    <string name="keyspec_right_double_angle_quote">&#x00BB;</string>
+    <string name="keyspec_left_single_angle_quote">&#x2039;</string>
+    <string name="keyspec_right_single_angle_quote">&#x203A;</string>
+    <!-- Comma key -->
+    <string name="keyspec_comma">,</string>
+    <string name="keyspec_tablet_comma">,</string>
+    <string name="keyhintlabel_tablet_comma"></string>
+    <string name="morekeys_tablet_comma"></string>
+    <!-- Period key -->
+    <string name="keyspec_period">.</string>
+    <string name="keyhintlabel_period"></string>
+    <string name="morekeys_period">!text/morekeys_punctuation</string>
+    <string name="keyspec_tablet_period">.</string>
+    <string name="keyhintlabel_tablet_period"></string>
+    <string name="morekeys_tablet_period">!text/morekeys_tablet_punctuation</string>
+    <string name="keyspec_symbols_question">?</string>
+    <string name="keyspec_symbols_semicolon">;</string>
+    <string name="keyspec_symbols_percent">%</string>
     <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_symbols_exclamation">&#x00A1;</string>
+    <string name="morekeys_exclamation">&#x00A1;</string>
     <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_symbols_question">&#x00BF;</string>
-    <string name="more_keys_for_symbols_semicolon"></string>
+    <string name="morekeys_question">&#x00BF;</string>
+    <string name="morekeys_symbols_semicolon"></string>
     <!-- U+2030: "‰" PER MILLE SIGN -->
-    <string name="more_keys_for_symbols_percent">&#x2030;</string>
-    <string name="keylabel_for_tablet_comma">,</string>
-    <string name="keyhintlabel_for_tablet_comma"></string>
-    <string name="more_keys_for_tablet_comma"></string>
-    <string name="keyhintlabel_for_period"></string>
-    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
-    <string name="more_keys_for_period">&#x2026;</string>
-    <string name="keylabel_for_apostrophe">\'</string>
-    <string name="keyhintlabel_for_apostrophe">\"</string>
-    <string name="more_keys_for_apostrophe">\"</string>
-    <string name="more_keys_for_q"></string>
-    <string name="more_keys_for_x"></string>
-    <string name="keylabel_for_q">q</string>
-    <string name="keylabel_for_w">w</string>
-    <string name="keylabel_for_y">y</string>
-    <string name="keylabel_for_x">x</string>
-    <string name="keylabel_for_spanish_row2_10"></string>
-    <string name="more_keys_for_am_pm">!fixedColumnOrder!2,!hasLabels!,\@string/label_time_am,\@string/label_time_pm</string>
-    <string name="settings_as_more_key">!icon/settings_key|!code/key_settings</string>
-    <string name="shortcut_as_more_key">!icon/shortcut_key|!code/key_shortcut</string>
-    <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>
-    <!-- Label for "switch to more symbol" modifier key.  Must be short to fit on key! -->
-    <string name="label_to_more_symbol_key">= \\ &lt;</string>
+    <string name="morekeys_symbols_percent">&#x2030;</string>
+    <string name="morekeys_am_pm">!fixedColumnOrder!2,!hasLabels!,!text/keylabel_time_am,!text/keylabel_time_pm</string>
+    <string name="keyspec_settings">!icon/settings_key|!code/key_settings</string>
+    <string name="keyspec_shortcut">!icon/shortcut_key|!code/key_shortcut</string>
+    <string name="keyspec_action_next">!hasLabels!,!text/label_next_key|!code/key_action_next</string>
+    <string name="keyspec_action_previous">!hasLabels!,!text/label_previous_key|!code/key_action_previous</string>
+    <!-- Label for "switch to more symbol" modifier key ("= \ <"). Must be short to fit on key! -->
+    <string name="keylabel_to_more_symbol">= \\\\ &lt;</string>
     <!-- Label for "switch to more symbol" modifier key on tablets.  Must be short to fit on key! -->
-    <string name="label_to_more_symbol_for_tablet_key">~ [ &lt;</string>
-    <!-- Label for "Tab" key.  Must be short to fit on key! -->
-    <string name="label_tab_key">Tab</string>
+    <string name="keylabel_tablet_to_more_symbol">~ [ &lt;</string>
     <!-- Label for "switch to phone numeric" key.  Must be short to fit on key! -->
-    <string name="label_to_phone_numeric_key">123</string>
+    <string name="keylabel_to_phone_numeric">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>
+    <string name="keylabel_to_phone_symbols">&#xFF0A;&#xFF03;</string>
     <!-- Key label for "ante meridiem" -->
-    <string name="label_time_am">"AM"</string>
+    <string name="keylabel_time_am">"AM"</string>
     <!-- Key label for "post meridiem" -->
-    <string name="label_time_pm">"PM"</string>
-    <string name="keylabel_for_popular_domain">".com"</string>
+    <string name="keylabel_time_pm">"PM"</string>
+    <string name="keyspec_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="more_keys_for_smiley">"!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ "</string>
-    <!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-         U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-         U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-         U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-         The following characters don't need BIDI mirroring.
+    <string name="morekeys_popular_domain">"!hasLabels!,.net,.org,.gov,.edu"</string>
+    <string name="keyspecs_left_parenthesis_more_keys">!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket</string>
+    <string name="keyspecs_right_parenthesis_more_keys">!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket</string>
+    <!-- The following characters don't need BIDI mirroring.
          U+2018: "‘" LEFT SINGLE QUOTATION MARK
          U+2019: "’" RIGHT SINGLE QUOTATION MARK
          U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
@@ -221,30 +234,29 @@
     <!-- Abbreviations are:
          laqm: LEFT-POINTING ANGLE QUOTATION MARK
          raqm: RIGHT-POINTING ANGLE QUOTATION MARK
-         rtl: Right-To-Left script order
          lqm: LEFT QUOTATION MARK
          rqm: RIGHT QUOTATION MARK
          9qm: LOW-9 QUOTATION MARK -->
     <!--  The following each quotation mark pair consist of
             <opening quotation mark>, <closing quotation mark>
           and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. -->
-    <string name="single_laqm_raqm">&#x2039;,&#x203A;</string>
-    <string name="single_laqm_raqm_rtl">&#x2039;|&#x203A;,&#x203A;|&#x2039;</string>
-    <string name="single_raqm_laqm">&#x203A;,&#x2039;</string>
-    <string name="double_laqm_raqm">&#x00AB;,&#x00BB;</string>
-    <string name="double_laqm_raqm_rtl">&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
-    <string name="double_raqm_laqm">&#x00BB;,&#x00AB;</string>
+    <string name="single_laqm_raqm">!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote</string>
+    <string name="single_raqm_laqm">!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote</string>
+    <string name="double_laqm_raqm">!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote</string>
+    <string name="double_raqm_laqm">!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote</string>
     <!-- The following each quotation mark triplet consists of
            <another quotation mark>, <opening quotation mark>, <closing quotation mark>
          and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. -->
     <string name="single_lqm_rqm">&#x201A;,&#x2018;,&#x2019;</string>
     <string name="single_9qm_lqm">&#x2019;,&#x201A;,&#x2018;</string>
     <string name="single_9qm_rqm">&#x2018;,&#x201A;,&#x2019;</string>
+    <string name="single_rqm_9qm">&#x2018;,&#x2019;,&#x201A;</string>
     <string name="double_lqm_rqm">&#x201E;,&#x201C;,&#x201D;</string>
     <string name="double_9qm_lqm">&#x201D;,&#x201E;,&#x201C;</string>
     <string name="double_9qm_rqm">&#x201C;,&#x201E;,&#x201D;</string>
-    <string name="more_keys_for_single_quote">!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes</string>
-    <string name="more_keys_for_double_quote">!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes</string>
-    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes</string>
-    <string name="emoji_key_as_more_key">!icon/emoji_key|!code/key_emoji</string>
+    <string name="double_rqm_9qm">&#x201C;,&#x201D;,&#x201E;</string>
+    <string name="morekeys_single_quote">!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes</string>
+    <string name="morekeys_double_quote">!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes</string>
+    <string name="morekeys_tablet_double_quote">!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes</string>
+    <string name="keyspec_emoji_key">!icon/emoji_key|!code/key_emoji</string>
 </resources>
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java
index 331003e..48bf801 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java
@@ -22,17 +22,26 @@
     private final PrintStream mOut;
     private final int mMaxWidth;
     private final String mIndent;
+    // String resource names array; indexed by {@link #CurrentIndex} and
+    // {@link #mStartIndexOfBuffer}.
+    private final String[] mResourceNames;
 
     private int mCurrentIndex = 0;
-    private String mFixedElement;
+    private String mLastElement;
     private final StringBuilder mBuffer = new StringBuilder();
     private int mBufferedLen;
-    private int mBufferedIndex = Integer.MIN_VALUE;
+    private int mStartIndexOfBuffer = Integer.MIN_VALUE;
 
-    public ArrayInitializerFormatter(PrintStream out, int width, String indent) {
+    public ArrayInitializerFormatter(final PrintStream out, final int width, final String indent,
+            final String[] resourceNames) {
         mOut = out;
         mMaxWidth = width - indent.length();
         mIndent = indent;
+        mResourceNames = resourceNames;
+    }
+
+    public int getCurrentIndex() {
+        return mCurrentIndex;
     }
 
     public void flush() {
@@ -40,42 +49,48 @@
             return;
         }
         final int lastIndex = mCurrentIndex - 1;
-        if (mBufferedIndex == lastIndex) {
-            mOut.format("%s/* %d */ %s\n", mIndent, mBufferedIndex, mBuffer);
-        } else if (mBufferedIndex == lastIndex - 1) {
-            final String[] elements = mBuffer.toString().split(" ");
-            mOut.format("%s/* %d */ %s\n"
-                    + "%s/* %d */ %s\n",
-                    mIndent, mBufferedIndex, elements[0],
-                    mIndent, lastIndex, elements[1]);
+        if (mStartIndexOfBuffer == lastIndex) {
+            mOut.format("%s/* %s */ %s\n",
+                    mIndent, mResourceNames[mStartIndexOfBuffer], mBuffer);
+        } else if (mStartIndexOfBuffer == lastIndex - 1) {
+            final String startElement = mBuffer.toString()
+                    .substring(0, mBuffer.length() - mLastElement.length())
+                    .trim();
+            mOut.format("%s/* %s */ %s\n"
+                    + "%s/* %s */ %s\n",
+                    mIndent, mResourceNames[mStartIndexOfBuffer], startElement,
+                    mIndent, mResourceNames[lastIndex], mLastElement);
         } else {
-            mOut.format("%s/* %d~ */\n"
+            mOut.format("%s/* %s ~ */\n"
                     + "%s%s\n"
-                    + "%s/* ~%d */\n", mIndent, mBufferedIndex,
+                    + "%s/* ~ %s */\n",
+                    mIndent, mResourceNames[mStartIndexOfBuffer],
                     mIndent, mBuffer,
-                    mIndent, lastIndex);
+                    mIndent, mResourceNames[lastIndex]);
         }
         mBuffer.setLength(0);
         mBufferedLen = 0;
     }
 
-    public void outCommentLines(String lines) {
+    public void outCommentLines(final String lines) {
         flush();
         mOut.print(lines);
-        mFixedElement = null;
+        mLastElement = null;
     }
 
-    public void outElement(String element) {
-        if (!element.equals(mFixedElement)) {
+    public void outElement(final String element) {
+        if (!element.equals(mLastElement)) {
             flush();
-            mBufferedIndex = mCurrentIndex;
+            mStartIndexOfBuffer = mCurrentIndex;
         }
         final int nextLen = mBufferedLen + " ".length() + element.length();
         if (mBufferedLen != 0 && nextLen < mMaxWidth) {
+            // Element can fit in the current line.
             mBuffer.append(' ');
             mBuffer.append(element);
             mBufferedLen = nextLen;
         } else {
+            // Element should be on the next line.
             if (mBufferedLen != 0) {
                 mBuffer.append('\n');
                 mBuffer.append(mIndent);
@@ -84,6 +99,6 @@
             mBufferedLen = element.length();
         }
         mCurrentIndex++;
-        mFixedElement = element;
+        mLastElement = element;
     }
 }
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/JarUtils.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/JarUtils.java
index a74096e..abb3339 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/JarUtils.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/JarUtils.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.keyboard.tools;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
@@ -23,6 +24,7 @@
 import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.Locale;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
@@ -58,8 +60,8 @@
         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>();
+    public static ArrayList<String> getEntryNameListing(final JarFile jar, final JarFilter filter) {
+        final ArrayList<String> result = new ArrayList<>();
         final Enumeration<JarEntry> entries = jar.entries();
         while (entries.hasMoreElements()) {
             final JarEntry entry = entries.nextElement();
@@ -74,12 +76,42 @@
         return result;
     }
 
-    public static ArrayList<String> getNameListing(final JarFile jar, final String filterName) {
-        return getNameListing(jar, new JarFilter() {
+    public static ArrayList<String> getEntryNameListing(final JarFile jar,
+            final String filterName) {
+        return getEntryNameListing(jar, new JarFilter() {
             @Override
             public boolean accept(final String dirName, final String name) {
                 return name.equals(filterName);
             }
         });
     }
+
+    // The locale is taken from string resource jar entry name (values-<locale>/)
+    // or {@link LocaleUtils#DEFAULT_LOCALE} for the default string resource
+    // directory (values/).
+    public static Locale getLocaleFromEntryName(final String jarEntryName) {
+        final String dirName = jarEntryName.substring(0, jarEntryName.lastIndexOf('/'));
+        final int pos = dirName.lastIndexOf('/');
+        final String parentName = (pos >= 0) ? dirName.substring(pos + 1) : dirName;
+        final int localePos = parentName.indexOf('-');
+        if (localePos < 0) {
+            // Default resource name.
+            return LocaleUtils.DEFAULT_LOCALE;
+        }
+        final String localeStr = parentName.substring(localePos + 1);
+        final int regionPos = localeStr.indexOf("-r");
+        if (regionPos < 0) {
+            return LocaleUtils.constructLocaleFromString(localeStr);
+        }
+        return LocaleUtils.constructLocaleFromString(localeStr.replace("-r", "_"));
+    }
+
+    public static void close(final Closeable stream) {
+        try {
+            if (stream != null) {
+                stream.close();
+            }
+        } catch (IOException e) {
+        }
+    }
 }
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java
new file mode 100644
index 0000000..c1a7ec5
--- /dev/null
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.tools;
+
+import java.util.HashMap;
+import java.util.Locale;
+
+/**
+ * A class to help with handling Locales in string form.
+ *
+ * This is a subset of com/android/inputmethod/latin/utils/LocaleUtils.java in order to use
+ * for the make-keyboard-text tool.
+ */
+public final class LocaleUtils {
+    public static final Locale DEFAULT_LOCALE = Locale.ROOT;
+    private static final String DEFAULT_LOCALE_CODE = "DEFAULT";
+    public static final String NO_LANGUAGE_LOCALE_CODE = "zz";
+    public static final String NO_LANGUAGE_LOCALE_DISPLAY_NAME = "Alphabet";
+
+    private LocaleUtils() {
+        // Intentional empty constructor for utility class.
+    }
+
+    private static final HashMap<String, Locale> sLocaleCache = new HashMap<>();
+
+    private static final int INDEX_LANGUAGE = 0;
+    private static final int INDEX_SCRIPT = 1;
+    private static final int INDEX_REGION = 2;
+    private static final int ELEMENT_LIMIT = INDEX_REGION + 1;
+
+    /**
+     * Creates a locale from a string specification.
+     *
+     * Locale string is: language(_script)?(_region)?
+     * where: language := [a-zA-Z]{2,3}
+     *        script := [a-zA-Z]{4}
+     *        region := [a-zA-Z]{2,3}|[0-9]{3}
+     */
+    public static Locale constructLocaleFromString(final String localeStr) {
+        if (localeStr == null) {
+            return null;
+        }
+        synchronized (sLocaleCache) {
+            if (sLocaleCache.containsKey(localeStr)) {
+                return sLocaleCache.get(localeStr);
+            }
+            boolean hasRegion = false;
+            final Locale.Builder builder = new Locale.Builder();
+            final String[] localeElements = localeStr.split("_", ELEMENT_LIMIT);
+            if (localeElements.length > INDEX_LANGUAGE) {
+                final String text = localeElements[INDEX_LANGUAGE];
+                if (isValidLanguage(text)) {
+                    builder.setLanguage(text);
+                } else {
+                    throw new RuntimeException("Unknown locale format: " + localeStr);
+                }
+            }
+            if (localeElements.length > INDEX_SCRIPT) {
+                final String text = localeElements[INDEX_SCRIPT];
+                if (isValidScript(text)) {
+                    builder.setScript(text);
+                } else if (isValidRegion(text)) {
+                    builder.setRegion(text);
+                    hasRegion = true;
+                } else {
+                    throw new RuntimeException("Unknown locale format: " + localeStr);
+                }
+            }
+            if (localeElements.length > INDEX_REGION) {
+                final String text = localeElements[INDEX_REGION];
+                if (!hasRegion && isValidRegion(text)) {
+                    builder.setRegion(text);
+                } else {
+                    throw new RuntimeException("Unknown locale format: " + localeStr);
+                }
+            }
+            final Locale locale = builder.build();
+            sLocaleCache.put(localeStr, locale);
+            return locale;
+        }
+    }
+
+    private static final int MIN_LENGTH_OF_LANGUAGE = 2;
+    private static final int MAX_LENGTH_OF_LANGUAGE = 2;
+    private static final int LENGTH_OF_SCRIPT = 4;
+    private static final int MIN_LENGTH_OF_REGION = 2;
+    private static final int MAX_LENGTH_OF_REGION = 2;
+    private static final int LENGTH_OF_AREA_CODE = 3;
+
+    private static boolean isValidLanguage(final String text) {
+        return isAlphabetSequence(text, MIN_LENGTH_OF_LANGUAGE, MAX_LENGTH_OF_LANGUAGE);
+    }
+
+    private static boolean isValidScript(final String text) {
+        return isAlphabetSequence(text, LENGTH_OF_SCRIPT, LENGTH_OF_SCRIPT);
+    }
+
+    private static boolean isValidRegion(final String text) {
+        return isAlphabetSequence(text, MIN_LENGTH_OF_REGION, MAX_LENGTH_OF_REGION)
+                || isDigitSequence(text, LENGTH_OF_AREA_CODE, LENGTH_OF_AREA_CODE);
+    }
+
+    private static boolean isAlphabetSequence(final String text, final int lower, final int upper) {
+        final int length = text.length();
+        if (length < lower || length > upper) {
+            return false;
+        }
+        for (int index = 0; index < length; index++) {
+            if (!isAsciiAlphabet(text.charAt(index))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static boolean isDigitSequence(final String text, final int lower, final int upper) {
+        final int length = text.length();
+        if (length < lower || length > upper) {
+            return false;
+        }
+        for (int index = 0; index < length; ++index) {
+            if (!isAsciiDigit(text.charAt(index))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static boolean isAsciiAlphabet(char c) {
+        return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
+    }
+
+    private static boolean isAsciiDigit(char c) {
+        return c >= '0' && c <= '9';
+    }
+
+    public static String getLocaleCode(final Locale locale) {
+        if (locale == DEFAULT_LOCALE) {
+            return DEFAULT_LOCALE_CODE;
+        }
+        return locale.toString();
+    }
+
+    public static String getLocaleDisplayName(final Locale locale) {
+        if (locale == DEFAULT_LOCALE) {
+            return DEFAULT_LOCALE_CODE;
+        }
+        if (locale.getLanguage().equals(NO_LANGUAGE_LOCALE_CODE)) {
+            return NO_LANGUAGE_LOCALE_DISPLAY_NAME;
+        }
+        return locale.getDisplayName(Locale.ENGLISH);
+    }
+}
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java
index 36a03f8..6c15ce6 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MakeKeyboardText.java
@@ -36,7 +36,7 @@
         }
 
         public Options(final String[] argsArray) {
-            final LinkedList<String> args = new LinkedList<String>(Arrays.asList(argsArray));
+            final LinkedList<String> args = new LinkedList<>(Arrays.asList(argsArray));
             String arg = null;
             String java = null;
             try {
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
index 2643e01..563acc5 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
@@ -16,78 +16,100 @@
 
 package com.android.inputmethod.keyboard.tools;
 
-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.Comparator;
 import java.util.HashMap;
 import java.util.Locale;
+import java.util.TreeMap;
 import java.util.jar.JarFile;
 
 public class MoreKeysResources {
     private static final String TEXT_RESOURCE_NAME = "donottranslate-more-keys.xml";
 
-    private static final String JAVA_TEMPLATE = "KeyboardTextsSet.tmpl";
+    private static final String JAVA_TEMPLATE = "KeyboardTextsTable.tmpl";
     private static final String MARK_NAMES = "@NAMES@";
     private static final String MARK_DEFAULT_TEXTS = "@DEFAULT_TEXTS@";
     private static final String MARK_TEXTS = "@TEXTS@";
-    private static final String MARK_LANGUAGES_AND_TEXTS = "@LANGUAGES_AND_TEXTS@";
-    private static final String DEFAUT_LANGUAGE_NAME = "DEFAULT";
-    private static final String ARRAY_NAME_FOR_LANGUAGE = "LANGUAGE_%s";
+    private static final String TEXTS_ARRAY_NAME_PREFIX = "TEXTS_";
+    private static final String MARK_LOCALES_AND_TEXTS = "@LOCALES_AND_TEXTS@";
     private static final String EMPTY_STRING_VAR = "EMPTY";
 
-    private static final String NO_LANGUAGE_CODE = "zz";
-    private static final String NO_LANGUAGE_DISPLAY_NAME = "Alphabet";
-
     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>();
+    // String resources maps sorted by its language. The language is determined from the jar entry
+    // name by calling {@link JarUtils#getLocaleFromEntryName(String)}.
+    private final TreeMap<String, StringResourceMap> mResourcesMap = new TreeMap<>();
+    // Default string resources map.
+    private final StringResourceMap mDefaultResourceMap;
+    // Histogram of string resource names. This is used to sort {@link #mSortedResourceNames}.
+    private final HashMap<String, Integer> mNameHistogram = new HashMap<>();
+    // Sorted string resource names array; Descending order of histogram count.
+    // The string resource name is specified as an attribute "name" in string resource files.
+    // The string resource can be accessed by specifying name "!text/<name>"
+    // via {@link KeyboardTextsSet#getText(String)}.
+    private final String[] mSortedResourceNames;
 
     public MoreKeysResources(final JarFile jar) {
         mJar = jar;
-        final ArrayList<String> resources = JarUtils.getNameListing(jar, TEXT_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);
+        final ArrayList<String> resourceEntryNames = JarUtils.getEntryNameListing(
+                jar, TEXT_RESOURCE_NAME);
+        for (final String entryName : resourceEntryNames) {
+            final StringResourceMap resMap = new StringResourceMap(entryName);
+            mResourcesMap.put(LocaleUtils.getLocaleCode(resMap.mLocale), resMap);
+        }
+        mDefaultResourceMap = mResourcesMap.get(
+                LocaleUtils.getLocaleCode(LocaleUtils.DEFAULT_LOCALE));
+
+        // Initialize name histogram and names list.
+        final HashMap<String, Integer> nameHistogram = mNameHistogram;
+        final ArrayList<String> resourceNamesList = new ArrayList<>();
+        for (final StringResource res : mDefaultResourceMap.getResources()) {
+            nameHistogram.put(res.mName, 0); // Initialize histogram value.
+            resourceNamesList.add(res.mName);
+        }
+        // Make name histogram.
+        for (final String locale : mResourcesMap.keySet()) {
+            final StringResourceMap resMap = mResourcesMap.get(locale);
+            if (resMap == mDefaultResourceMap) continue;
+            for (final StringResource res : resMap.getResources()) {
+                if (!mDefaultResourceMap.contains(res.mName)) {
+                    throw new RuntimeException(res.mName + " in " + locale
+                            + " doesn't have default resource");
+                }
+                final int histogramValue = nameHistogram.get(res.mName);
+                nameHistogram.put(res.mName, histogramValue + 1);
             }
         }
-    }
-
-    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", "_");
+        // Sort names list.
+        Collections.sort(resourceNamesList, new Comparator<String>() {
+            @Override
+            public int compare(final String leftName, final String rightName) {
+                final int leftCount = nameHistogram.get(leftName);
+                final int rightCount = nameHistogram.get(rightName);
+                // Descending order of histogram count.
+                if (leftCount > rightCount) return -1;
+                if (leftCount < rightCount) return 1;
+                // TODO: Add further criteria to order the same histogram value names to be able to
+                // minimize footprints of string resources arrays.
+                return 0;
+            }
+        });
+        mSortedResourceNames = resourceNamesList.toArray(new String[resourceNamesList.size()]);
     }
 
     public void writeToJava(final String outDir) {
-        final ArrayList<String> list = JarUtils.getNameListing(mJar, JAVA_TEMPLATE);
-        if (list.isEmpty())
+        final ArrayList<String> list = JarUtils.getEntryNameListing(mJar, JAVA_TEMPLATE);
+        if (list.isEmpty()) {
             throw new RuntimeException("Can't find java template " + JAVA_TEMPLATE);
-        if (list.size() > 1)
+        }
+        if (list.size() > 1) {
             throw new RuntimeException("Found multiple java template " + JAVA_TEMPLATE);
+        }
         final String template = list.get(0);
         final String javaPackage = template.substring(0, template.lastIndexOf('/'));
         PrintStream ps = null;
@@ -107,8 +129,8 @@
         } catch (IOException e) {
             throw new RuntimeException(e);
         } finally {
-            close(lnr);
-            close(ps);
+            JarUtils.close(lnr);
+            JarUtils.close(ps);
         }
     }
 
@@ -122,8 +144,8 @@
                 dumpDefaultTexts(out);
             } else if (line.contains(MARK_TEXTS)) {
                 dumpTexts(out);
-            } else if (line.contains(MARK_LANGUAGES_AND_TEXTS)) {
-                dumpLanguageMap(out);
+            } else if (line.contains(MARK_LOCALES_AND_TEXTS)) {
+                dumpLocalesMap(out);
             } else {
                 out.println(line);
             }
@@ -131,70 +153,62 @@
     }
 
     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++;
+        final int namesCount = mSortedResourceNames.length;
+        for (int index = 0; index < namesCount; index++) {
+            final String name = mSortedResourceNames[index];
+            final int histogramValue = mNameHistogram.get(name);
+            out.format("        /* %3d:%2d */ \"%s\",\n", index, histogramValue, name);
         }
     }
 
     private void dumpDefaultTexts(final PrintStream out) {
-        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
-        dumpTextsInternal(out, defaultResMap, defaultResMap);
+        final int outputArraySize = dumpTextsInternal(out, mDefaultResourceMap);
+        mDefaultResourceMap.setOutputArraySize(outputArraySize);
+    }
+
+    private static String getArrayNameForLocale(final Locale locale) {
+        return TEXTS_ARRAY_NAME_PREFIX + LocaleUtils.getLocaleCode(locale);
     }
 
     private void dumpTexts(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);
-            for (final StringResource res : resMap.getResources()) {
-                if (!defaultResMap.contains(res.mName)) {
-                    throw new RuntimeException(res.mName + " in " + language
-                            + " doesn't have default resource");
-                }
-            }
-            dumpTextsInternal(out, resMap, defaultResMap);
+        for (final StringResourceMap resMap : mResourcesMap.values()) {
+            final Locale locale = resMap.mLocale;
+            if (resMap == mDefaultResourceMap) continue;
+            out.format("    /* Locale %s: %s */\n",
+                    locale, LocaleUtils.getLocaleDisplayName(locale));
+            out.format("    private static final String[] " + getArrayNameForLocale(locale)
+                    + " = {\n");
+            final int outputArraySize = dumpTextsInternal(out, resMap);
+            resMap.setOutputArraySize(outputArraySize);
             out.format("    };\n\n");
         }
     }
 
-    private void dumpLanguageMap(final PrintStream out) {
-        final ArrayList<String> allLanguages = new ArrayList<String>();
-        allLanguages.addAll(mResourcesMap.keySet());
-        Collections.sort(allLanguages);
-        for (final String language : allLanguages) {
-            out.format("        \"%s\", " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n",
-                    language, language, getLanguageDisplayName(language));
+    private void dumpLocalesMap(final PrintStream out) {
+        for (final StringResourceMap resMap : mResourcesMap.values()) {
+            final Locale locale = resMap.mLocale;
+            final String localeStr = LocaleUtils.getLocaleCode(locale);
+            final String localeToDump = (locale == LocaleUtils.DEFAULT_LOCALE)
+                    ? String.format("\"%s\"", localeStr)
+                    : String.format("\"%s\"%s", localeStr, "       ".substring(localeStr.length()));
+            out.format("        %s, %-12s /* %3d/%3d %s */\n",
+                    localeToDump, getArrayNameForLocale(locale) + ",",
+                    resMap.getResources().size(), resMap.getOutputArraySize(),
+                    LocaleUtils.getLocaleDisplayName(locale));
         }
     }
 
-    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 dumpTextsInternal(final PrintStream out, final StringResourceMap resMap,
-            final StringResourceMap defaultResMap) {
+    private int dumpTextsInternal(final PrintStream out, final StringResourceMap resMap) {
         final ArrayInitializerFormatter formatter =
-                new ArrayInitializerFormatter(out, 100, "        ");
+                new ArrayInitializerFormatter(out, 100, "        ", mSortedResourceNames);
+        int outputArraySize = 0;
         boolean successiveNull = false;
-        for (final StringResource defaultRes : defaultResMap.getResources()) {
-            if (resMap.contains(defaultRes.mName)) {
-                final StringResource res = resMap.get(defaultRes.mName);
+        final int namesCount = mSortedResourceNames.length;
+        for (int index = 0; index < namesCount; index++) {
+            final String name = mSortedResourceNames[index];
+            final StringResource res = resMap.get(name);
+            if (res != null) {
+                // TODO: Check whether the resource value is equal to the default.
                 if (res.mComment != null) {
                     formatter.outCommentLines(addPrefix("        // ", res. mComment));
                 }
@@ -205,6 +219,7 @@
                     formatter.outElement(String.format("\"%s\",", escaped));
                 }
                 successiveNull = false;
+                outputArraySize = formatter.getCurrentIndex();
             } else {
                 formatter.outElement("null,");
                 successiveNull = true;
@@ -213,6 +228,7 @@
         if (!successiveNull) {
             formatter.flush();
         }
+        return outputArraySize;
     }
 
     private static String addPrefix(final String prefix, final String lines) {
@@ -234,31 +250,6 @@
                 sb.append(String.format("\\u%04X", (int)c));
             }
         }
-        return replaceIncompatibleEscape(sb.toString());
-    }
-
-    private static String replaceIncompatibleEscape(final String text) {
-        String t = text;
-        t = replaceAll(t, "\\?", "?");
-        t = replaceAll(t, "\\@", "@");
-        t = replaceAll(t, "@string/", "!text/");
-        return t;
-    }
-
-    private static String replaceAll(final String text, final String target, final String replace) {
-        String t = text;
-        while (t.indexOf(target) >= 0) {
-            t = t.replace(target, replace);
-        }
-        return t;
-    }
-
-    private static void close(Closeable stream) {
-        try {
-            if (stream != null) {
-                stream.close();
-            }
-        } catch (IOException e) {
-        }
+        return sb.toString();
     }
 }
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java
index cc7ff6a..cf44f2c 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java
@@ -27,6 +27,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import javax.xml.parsers.ParserConfigurationException;
@@ -34,31 +35,45 @@
 import javax.xml.parsers.SAXParserFactory;
 
 public class StringResourceMap {
+    // Locale of this string resource map.
+    public final Locale mLocale;
     // String resource list.
     private final List<StringResource> mResources;
     // Name to string resource map.
     private final Map<String, StringResource> mResourcesMap;
 
-    public StringResourceMap(final InputStream is) {
+    // The length of String[] that is created from this {@link StringResourceMap}. The length is
+    // calculated in {@link MoreKeysResources#dumpTexts(OutputStream)} and recorded by
+    // {@link #setOutputArraySize(int)}. The recorded length is used as a part of comment by
+    // {@link MoreKeysResources#dumpLocaleMap(OutputStream)} via {@link #getOutputArraySize()}.
+    private int mOutputArraySize;
+
+    public StringResourceMap(final String jarEntryName) {
+        mLocale = JarUtils.getLocaleFromEntryName(jarEntryName);
         final StringResourceHandler handler = new StringResourceHandler();
         final SAXParserFactory factory = SAXParserFactory.newInstance();
         factory.setNamespaceAware(true);
+        final InputStream stream = JarUtils.openResource(jarEntryName);
         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);
+            parser.parse(stream, handler);
         } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e.getMessage(), e);
         } catch (SAXParseException e) {
             throw new RuntimeException(e.getMessage() + " at line " + e.getLineNumber()
-                    + ", column " + e.getColumnNumber());
+                    + ", column " + e.getColumnNumber(), e);
         } catch (SAXException e) {
-            throw new RuntimeException(e.getMessage());
+            throw new RuntimeException(e.getMessage(), e);
         } catch (IOException e) {
+            throw new RuntimeException(e.getMessage(), e);
+        } finally {
+            JarUtils.close(stream);
         }
 
         mResources = Collections.unmodifiableList(handler.mResources);
-        final HashMap<String,StringResource> map = new HashMap<String,StringResource>();
+        final HashMap<String, StringResource> map = new HashMap<>();
         for (final StringResource res : mResources) {
             map.put(res.mName, res);
         }
@@ -77,12 +92,20 @@
         return mResourcesMap.get(name);
     }
 
+    public void setOutputArraySize(final int arraySize) {
+        mOutputArraySize = arraySize;
+    }
+
+    public int getOutputArraySize() {
+        return mOutputArraySize;
+    }
+
     static class StringResourceHandler extends DefaultHandler2 {
         private static final String TAG_RESOURCES = "resources";
         private static final String TAG_STRING = "string";
         private static final String ATTR_NAME = "name";
 
-        final ArrayList<StringResource> mResources = new ArrayList<StringResource>();
+        final ArrayList<StringResource> mResources = new ArrayList<>();
 
         private String mName;
         private final StringBuilder mValue = new StringBuilder();
